pruebas e2e

This commit is contained in:
Nurfog committed 2025-12-23 11:36:48 -03:00
1 parent f695ed7213
commit c2d73b97db
30 files changed
+252 -19

No files matched your search

+11
View File
@@ -0,0 +1,11 @@
FROM mcr.microsoft.com/playwright:v1.40.0-jammy
WORKDIR /e2e
COPY package*.json ./
RUN npm install
COPY . .
# Default command, can be overridden
CMD ["npx", "playwright", "test"]
+14
View File
@@ -0,0 +1,14 @@
{
"name": "openccb-e2e",
"version": "1.0.0",
"scripts": {
"test": "playwright test",
"test:ui": "playwright test --ui",
"test:debug": "playwright test --debug"
},
"devDependencies": {
"@playwright/test": "1.40.0",
"@types/node": "^20.10.0",
"typescript": "^5.3.0"
}
}
Binary file not shown.

After

Width:  |  Height:  |  Size: 171 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 172 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 171 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 45 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 43 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 171 KiB

+62
View File
@@ -0,0 +1,62 @@
<!DOCTYPE html>
<html>
<head>
<meta charset='UTF-8'>
<meta name='color-scheme' content='dark light'>
<meta name='viewport' content='width=device-width, initial-scale=1.0'>
<title>Playwright Test Report</title>
<script type="module">var J0=Object.defineProperty;var _0=(e,t,n)=>t in e?J0(e,t,{enumerable:!0,configurable:!0,writable:!0,value:n}):e[t]=n;var Rt=(e,t,n)=>(_0(e,typeof t!="symbol"?t+"":t,n),n);(function(){const t=document.createElement("link").relList;if(t&&t.supports&&t.supports("modulepreload"))return;for(const o of document.querySelectorAll('link[rel="modulepreload"]'))r(o);new MutationObserver(o=>{for(const s of o)if(s.type==="childList")for(const i of s.addedNodes)i.tagName==="LINK"&&i.rel==="modulepreload"&&r(i)}).observe(document,{childList:!0,subtree:!0});function n(o){const s={};return o.integrity&&(s.integrity=o.integrity),o.referrerPolicy&&(s.referrerPolicy=o.referrerPolicy),o.crossOrigin==="use-credentials"?s.credentials="include":o.crossOrigin==="anonymous"?s.credentials="omit":s.credentials="same-origin",s}function r(o){if(o.ep)return;o.ep=!0;const s=n(o);fetch(o.href,s)}})();var Xn=typeof globalThis<"u"?globalThis:typeof window<"u"?window:typeof global<"u"?global:typeof self<"u"?self:{};function $0(e){return e&&e.__esModule&&Object.prototype.hasOwnProperty.call(e,"default")?e.default:e}var tf={exports:{}},xs={},nf={exports:{}},Q={};/**
* @license React
* react.production.min.js
*
* Copyright (c) Facebook, Inc. and its affiliates.
*
* This source code is licensed under the MIT license found in the
* LICENSE file in the root directory of this source tree.
*/var Jr=Symbol.for("react.element"),eh=Symbol.for("react.portal"),th=Symbol.for("react.fragment"),nh=Symbol.for("react.strict_mode"),rh=Symbol.for("react.profiler"),oh=Symbol.for("react.provider"),sh=Symbol.for("react.context"),ih=Symbol.for("react.forward_ref"),lh=Symbol.for("react.suspense"),ch=Symbol.for("react.memo"),ah=Symbol.for("react.lazy"),Vc=Symbol.iterator;function uh(e){return e===null||typeof e!="object"?null:(e=Vc&&e[Vc]||e["@@iterator"],typeof e=="function"?e:null)}var rf={isMounted:function(){return!1},enqueueForceUpdate:function(){},enqueueReplaceState:function(){},enqueueSetState:function(){}},of=Object.assign,sf={};function tr(e,t,n){this.props=e,this.context=t,this.refs=sf,this.updater=n||rf}tr.prototype.isReactComponent={};tr.prototype.setState=function(e,t){if(typeof e!="object"&&typeof e!="function"&&e!=null)throw Error("setState(...): takes an object of state variables to update or a function which returns an object of state variables.");this.updater.enqueueSetState(this,e,t,"setState")};tr.prototype.forceUpdate=function(e){this.updater.enqueueForceUpdate(this,e,"forceUpdate")};function lf(){}lf.prototype=tr.prototype;function Il(e,t,n){this.props=e,this.context=t,this.refs=sf,this.updater=n||rf}var bl=Il.prototype=new lf;bl.constructor=Il;of(bl,tr.prototype);bl.isPureReactComponent=!0;var Wc=Array.isArray,cf=Object.prototype.hasOwnProperty,Nl={current:null},af={key:!0,ref:!0,__self:!0,__source:!0};function uf(e,t,n){var r,o={},s=null,i=null;if(t!=null)for(r in t.ref!==void 0&&(i=t.ref),t.key!==void 0&&(s=""+t.key),t)cf.call(t,r)&&!af.hasOwnProperty(r)&&(o[r]=t[r]);var l=arguments.length-2;if(l===1)o.children=n;else if(1<l){for(var c=Array(l),a=0;a<l;a++)c[a]=arguments[a+2];o.children=c}if(e&&e.defaultProps)for(r in l=e.defaultProps,l)o[r]===void 0&&(o[r]=l[r]);return{$$typeof:Jr,type:e,key:s,ref:i,props:o,_owner:Nl.current}}function fh(e,t){return{$$typeof:Jr,type:e.type,key:t,ref:e.ref,props:e.props,_owner:e._owner}}function Ol(e){return typeof e=="object"&&e!==null&&e.$$typeof===Jr}function dh(e){var t={"=":"=0",":":"=2"};return"$"+e.replace(/[=:]/g,function(n){return t[n]})}var Gc=/\/+/g;function Vs(e,t){return typeof e=="object"&&e!==null&&e.key!=null?dh(""+e.key):t.toString(36)}function bo(e,t,n,r,o){var s=typeof e;(s==="undefined"||s==="boolean")&&(e=null);var i=!1;if(e===null)i=!0;else switch(s){case"string":case"number":i=!0;break;case"object":switch(e.$$typeof){case Jr:case eh:i=!0}}if(i)return i=e,o=o(i),e=r===""?"."+Vs(i,0):r,Wc(o)?(n="",e!=null&&(n=e.replace(Gc,"$&/")+"/"),bo(o,t,n,"",function(a){return a})):o!=null&&(Ol(o)&&(o=fh(o,n+(!o.key||i&&i.key===o.key?"":(""+o.key).replace(Gc,"$&/")+"/")+e)),t.push(o)),1;if(i=0,r=r===""?".":r+":",Wc(e))for(var l=0;l<e.length;l++){s=e[l];var c=r+Vs(s,l);i+=bo(s,t,n,c,o)}else if(c=uh(e),typeof c=="function")for(e=c.call(e),l=0;!(s=e.next()).done;)s=s.value,c=r+Vs(s,l++),i+=bo(s,t,n,c,o);else if(s==="object")throw t=String(e),Error("Objects are not valid as a React child (found: "+(t==="[object Object]"?"object with keys {"+Object.keys(e).join(", ")+"}":t)+"). If you meant to render a collection of children, use an array instead.");return i}function oo(e,t,n){if(e==null)return e;var r=[],o=0;return bo(e,r,"","",function(s){return t.call(n,s,o++)}),r}function ph(e){if(e._status===-1){var t=e._result;t=t(),t.then(function(n){(e._status===0||e._status===-1)&&(e._status=1,e._result=n)},function(n){(e._status===0||e._status===-1)&&(e._status=2,e._result=n)}),e._status===-1&&(e._status=0,e._result=t)}if(e._status===1)return e._result.default;throw e._result}var ke={current:null},No={transition:null},hh={ReactCurrentDispatcher:ke,ReactCurrentBatchConfig:No,ReactCurrentOwner:Nl};Q.Children={map:oo,forEach:function(e,t,n){oo(e,function(){t.apply(this,arguments)},n)},count:function(e){var t=0;return oo(e,function(){t++}),t},toArray:function(e){return oo(e,function(t){return t})||[]},only:function(e){if(!Ol(e))throw Error("React.Children.only expected to receive a single React element child.");return e}};Q.Component=tr;Q.Fragment=th;Q.Profiler=rh;Q.PureComponent=Il;Q.StrictMode=nh;Q.Suspense=lh;Q.__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED=hh;Q.cloneElement=function(e,t,n){if(e==null)throw Error("React.cloneElement(...): The argument must be a React element, but you passed "+e+".");var r=of({},e.props),o=e.key,s=e.ref,i=e._owner;if(t!=null){if(t.ref!==void 0&&(s=t.ref,i=Nl.current),t.key!==void 0&&(o=""+t.key),e.type&&e.type.defaultProps)var l=e.type.defaultProps;for(c in t)cf.call(t,c)&&!af.hasOwnProperty(c)&&(r[c]=t[c]===void 0&&l!==void 0?l[c]:t[c])}var c=arguments.length-2;if(c===1)r.children=n;else if(1<c){l=Array(c);for(var a=0;a<c;a++)l[a]=arguments[a+2];r.children=l}return{$$typeof:Jr,type:e.type,key:o,ref:s,props:r,_owner:i}};Q.createContext=function(e){return e={$$typeof:sh,_currentValue:e,_currentValue2:e,_threadCount:0,Provider:null,Consumer:null,_defaultValue:null,_globalName:null},e.Provider={$$typeof:oh,_context:e},e.Line truncated
* @license React
* react-jsx-runtime.production.min.js
*
* Copyright (c) Facebook, Inc. and its affiliates.
*
* This source code is licensed under the MIT license found in the
* LICENSE file in the root directory of this source tree.
*/var gh=j,mh=Symbol.for("react.element"),vh=Symbol.for("react.fragment"),wh=Object.prototype.hasOwnProperty,yh=gh.__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED.ReactCurrentOwner,Ah={key:!0,ref:!0,__self:!0,__source:!0};function ff(e,t,n){var r,o={},s=null,i=null;n!==void 0&&(s=""+n),t.key!==void 0&&(s=""+t.key),t.ref!==void 0&&(i=t.ref);for(r in t)wh.call(t,r)&&!Ah.hasOwnProperty(r)&&(o[r]=t[r]);if(e&&e.defaultProps)for(r in t=e.defaultProps,t)o[r]===void 0&&(o[r]=t[r]);return{$$typeof:mh,type:e,key:s,ref:i,props:o,_owner:yh.current}}xs.Fragment=vh;xs.jsx=ff;xs.jsxs=ff;tf.exports=xs;var Pl=tf.exports;const yn=Pl.Fragment,A=Pl.jsx,L=Pl.jsxs,Eh=15,V=0,yt=1,xh=2,De=-2,J=-3,Yc=-4,At=-5,Pe=[0,1,3,7,15,31,63,127,255,511,1023,2047,4095,8191,16383,32767,65535],df=1440,Sh=0,kh=4,Ch=9,Dh=5,Rh=[96,7,256,0,8,80,0,8,16,84,8,115,82,7,31,0,8,112,0,8,48,0,9,192,80,7,10,0,8,96,0,8,32,0,9,160,0,8,0,0,8,128,0,8,64,0,9,224,80,7,6,0,8,88,0,8,24,0,9,144,83,7,59,0,8,120,0,8,56,0,9,208,81,7,17,0,8,104,0,8,40,0,9,176,0,8,8,0,8,136,0,8,72,0,9,240,80,7,4,0,8,84,0,8,20,85,8,227,83,7,43,0,8,116,0,8,52,0,9,200,81,7,13,0,8,100,0,8,36,0,9,168,0,8,4,0,8,132,0,8,68,0,9,232,80,7,8,0,8,92,0,8,28,0,9,152,84,7,83,0,8,124,0,8,60,0,9,216,82,7,23,0,8,108,0,8,44,0,9,184,0,8,12,0,8,140,0,8,76,0,9,248,80,7,3,0,8,82,0,8,18,85,8,163,83,7,35,0,8,114,0,8,50,0,9,196,81,7,11,0,8,98,0,8,34,0,9,164,0,8,2,0,8,130,0,8,66,0,9,228,80,7,7,0,8,90,0,8,26,0,9,148,84,7,67,0,8,122,0,8,58,0,9,212,82,7,19,0,8,106,0,8,42,0,9,180,0,8,10,0,8,138,0,8,74,0,9,244,80,7,5,0,8,86,0,8,22,192,8,0,83,7,51,0,8,118,0,8,54,0,9,204,81,7,15,0,8,102,0,8,38,0,9,172,0,8,6,0,8,134,0,8,70,0,9,236,80,7,9,0,8,94,0,8,30,0,9,156,84,7,99,0,8,126,0,8,62,0,9,220,82,7,27,0,8,110,0,8,46,0,9,188,0,8,14,0,8,142,0,8,78,0,9,252,96,7,256,0,8,81,0,8,17,85,8,131,82,7,31,0,8,113,0,8,49,0,9,194,80,7,10,0,8,97,0,8,33,0,9,162,0,8,1,0,8,129,0,8,65,0,9,226,80,7,6,0,8,89,0,8,25,0,9,146,83,7,59,0,8,121,0,8,57,0,9,210,81,7,17,0,8,105,0,8,41,0,9,178,0,8,9,0,8,137,0,8,73,0,9,242,80,7,4,0,8,85,0,8,21,80,8,258,83,7,43,0,8,117,0,8,53,0,9,202,81,7,13,0,8,101,0,8,37,0,9,170,0,8,5,0,8,133,0,8,69,0,9,234,80,7,8,0,8,93,0,8,29,0,9,154,84,7,83,0,8,125,0,8,61,0,9,218,82,7,23,0,8,109,0,8,45,0,9,186,0,8,13,0,8,141,0,8,77,0,9,250,80,7,3,0,8,83,0,8,19,85,8,195,83,7,35,0,8,115,0,8,51,0,9,198,81,7,11,0,8,99,0,8,35,0,9,166,0,8,3,0,8,131,0,8,67,0,9,230,80,7,7,0,8,91,0,8,27,0,9,150,84,7,67,0,8,123,0,8,59,0,9,214,82,7,19,0,8,107,0,8,43,0,9,182,0,8,11,0,8,139,0,8,75,0,9,246,80,7,5,0,8,87,0,8,23,192,8,0,83,7,51,0,8,119,0,8,55,0,9,206,81,7,15,0,8,103,0,8,39,0,9,174,0,8,7,0,8,135,0,8,71,0,9,238,80,7,9,0,8,95,0,8,31,0,9,158,84,7,99,0,8,127,0,8,63,0,9,222,82,7,27,0,8,111,0,8,47,0,9,190,0,8,15,0,8,143,0,8,79,0,9,254,96,7,256,0,8,80,0,8,16,84,8,115,82,7,31,0,8,112,0,8,48,0,9,193,80,7,10,0,8,96,0,8,32,0,9,161,0,8,0,0,8,128,0,8,64,0,9,225,80,7,6,0,8,88,0,8,24,0,9,145,83,7,59,0,8,120,0,8,56,0,9,209,81,7,17,0,8,104,0,8,40,0,9,177,0,8,8,0,8,136,0,8,72,0,9,241,80,7,4,0,8,84,0,8,20,85,8,227,83,7,43,0,8,116,0,8,52,0,9,201,81,7,13,0,8,100,0,8,36,0,9,169,0,8,4,0,8,132,0,8,68,0,9,233,80,7,8,0,8,92,0,8,28,0,9,153,84,7,83,0,8,124,0,8,60,0,9,217,82,7,23,0,8,108,0,8,44,0,9,185,0,8,12,0,8,140,0,8,76,0,9,249,80,7,3,0,8,82,0,8,18,85,8,163,83,7,35,0,8,114,0,8,50,0,9,197,81,7,11,0,8,98,0,8,34,0,9,165,0,8,2,0,8,130,0,8,66,0,9,229,80,7,7,0,8,90,0,8,26,0,9,149,84,7,67,0,8,122,0,8,58,0,9,213,82,7,19,0,8,106,0,8,42,0,9,181,0,8,10,0,8,138,0,8,74,0,9,245,80,7,5,0,8,86,0,8,22,192,8,0,83,7,51,0,8,118,0,8,54,0,9,205,81,7,15,0,8,102,0,8,38,0,9,173,0,8,6,0,8,134,0,8,70,0,9,237,80,7,9,0,8,94,0,8,30,0,9,157,84,7,99,0,8,126,0,8,62,0,9,221,82,7,27,0,8,110,0,8,46,0,9,189,0,8,14,0,8,142,0,8,78,0,9,253,96,7,256,0,8,81,0,8,17,85,8,131,82,7,31,0,8,113,0,8,49,0,9,195,80,7,10,0,8,97,0,8,33,0,9,163,0,8,1,0,8,129,0,8,65,0,9,227,80,7,6,0,8,89,0,8,25,0,9,147,83,7,59,0,8,121,0,8,57,0,9,211,81,7,17,0,8,105,0,8,41,0,9,179,0,8,9,0,8,137,0,8,73,0,9,243,80,7,4,0,8,85,0,8,21,80,8,258,83,7,43,0,8,117,0,8,53,0,9,203,81,7,13,0,8,101,0,8,37,0,9,171,0,8,5,0,8,133,0,8,69,0,9,235,80,7,8,0,8,93,0,8,29,0,9,155,84,7,83,0,8,125,0,8,61,0,9,219,82,7,23,0,8,109,0,8,45,0,9,187,0,8,13,0,8,141,0,8,77,0,9,251,80,7,3,0,8,83,0,8,19,85,8,195,83,7,35,0,8,115,0,8,51,0,9,199,81,7,11,0,8,99,0,8,35,0,9,167,0,8,3,0,8,131,0,8,67,0,9,231,80,7,7,0,8,91,0,8,27,0,9,151,84,7,67,0,8,123,0,8,59,0,9,215,82,7,19,0,8,107,0,8,43,0,9,183,0,8,11,0,8,139,0,8,75,0,9,247,80,7,5,0,8,87,0,8,23,192,8,0,83,7,51,0,8,119,0,8,55,0,9,207,81,7,15,0,8,103,0,8,39,0,9,175,0,8,7,0,8,135,0,8,71,0,9,239,80,7,9,0,8,95,0,8,31,0,9,159,84,7,99,0,8,127,0,8,63,0,9,223,82,7,27,0,8,111,0,8,47,0,9,191,0,8,15,0,8,143,0,8,79,0,9,255],Th=[80,5,1,87,5,257,83,5,17,91,5,4097,81,5,5,89,5,1025,85,5,65,93,5,16385,80,5,3,88,5,513,84,5,33,92,5,8193,82,5,9,90,5,2049,86,5,129,192,5,24577,80,5,2,87,5,385,83,5,25,91,5,6145,81,5,7,89,5,1537,85,5,97,93,5,24577,80,5,4,88,5,769,84,5,49,92,5,12289,82,5,13,90,5,3073,86,5,193,192,5,24577],Ih=[3,4,5,6,7,8,9,10,11,13,15,17,19,23,27Line truncated
* @license React
* scheduler.production.min.js
*
* Copyright (c) Facebook, Inc. and its affiliates.
*
* This source code is licensed under the MIT license found in the
* LICENSE file in the root directory of this source tree.
*/(function(e){function t(I,H){var N=I.length;I.push(H);e:for(;0<N;){var z=N-1>>>1,F=I[z];if(0<o(F,H))I[z]=H,I[N]=F,N=z;else break e}}function n(I){return I.length===0?null:I[0]}function r(I){if(I.length===0)return null;var H=I[0],N=I.pop();if(N!==H){I[0]=N;e:for(var z=0,F=I.length,G=F>>>1;z<G;){var st=2*(z+1)-1,xn=I[st],it=st+1,Sn=I[it];if(0>o(xn,N))it<F&&0>o(Sn,xn)?(I[z]=Sn,I[it]=N,z=it):(I[z]=xn,I[st]=N,z=st);else if(it<F&&0>o(Sn,N))I[z]=Sn,I[it]=N,z=it;else break e}}return H}function o(I,H){var N=I.sortIndex-H.sortIndex;return N!==0?N:I.id-H.id}if(typeof performance=="object"&&typeof performance.now=="function"){var s=performance;e.unstable_now=function(){return s.now()}}else{var i=Date,l=i.now();e.unstable_now=function(){return i.now()-l}}var c=[],a=[],p=1,m=null,h=3,x=!1,E=!1,v=!1,g=typeof setTimeout=="function"?setTimeout:null,u=typeof clearTimeout=="function"?clearTimeout:null,f=typeof setImmediate<"u"?setImmediate:null;typeof navigator<"u"&&navigator.scheduling!==void 0&&navigator.scheduling.isInputPending!==void 0&&navigator.scheduling.isInputPending.bind(navigator.scheduling);function d(I){for(var H=n(a);H!==null;){if(H.callback===null)r(a);else if(H.startTime<=I)r(a),H.sortIndex=H.expirationTime,t(c,H);else break;H=n(a)}}function y(I){if(v=!1,d(I),!E)if(n(c)!==null)E=!0,B(k);else{var H=n(a);H!==null&&Y(y,H.startTime-I)}}function k(I,H){E=!1,v&&(v=!1,u(C),C=-1),x=!0;var N=h;try{for(d(H),m=n(c);m!==null&&(!(m.expirationTime>H)||I&&!T());){var z=m.callback;if(typeof z=="function"){m.callback=null,h=m.priorityLevel;var F=z(m.expirationTime<=H);H=e.unstable_now(),typeof F=="function"?m.callback=F:m===n(c)&&r(c),d(H)}else r(c);m=n(c)}if(m!==null)var G=!0;else{var st=n(a);st!==null&&Y(y,st.startTime-H),G=!1}return G}finally{m=null,h=N,x=!1}}var w=!1,S=null,C=-1,R=5,D=-1;function T(){return!(e.unstable_now()-D<R)}function M(){if(S!==null){var I=e.unstable_now();D=I;var H=!0;try{H=S(!0,I)}finally{H?O():(w=!1,S=null)}}else w=!1}var O;if(typeof f=="function")O=function(){f(M)};else if(typeof MessageChannel<"u"){var q=new MessageChannel,U=q.port2;q.port1.onmessage=M,O=function(){U.postMessage(null)}}else O=function(){g(M,0)};function B(I){S=I,w||(w=!0,O())}function Y(I,H){C=g(function(){I(e.unstable_now())},H)}e.unstable_IdlePriority=5,e.unstable_ImmediatePriority=1,e.unstable_LowPriority=4,e.unstable_NormalPriority=3,e.unstable_Profiling=null,e.unstable_UserBlockingPriority=2,e.unstable_cancelCallback=function(I){I.callback=null},e.unstable_continueExecution=function(){E||x||(E=!0,B(k))},e.unstable_forceFrameRate=function(I){0>I||125<I?console.error("forceFrameRate takes a positive int between 0 and 125, forcing frame rates higher than 125 fps is not supported"):R=0<I?Math.floor(1e3/I):5},e.unstable_getCurrentPriorityLevel=function(){return h},e.unstable_getFirstCallbackNode=function(){return n(c)},e.unstable_next=function(I){switch(h){case 1:case 2:case 3:var H=3;break;default:H=h}var N=h;h=H;try{return I()}finally{h=N}},e.unstable_pauseExecution=function(){},e.unstable_requestPaint=function(){},e.unstable_runWithPriority=function(I,H){switch(I){case 1:case 2:case 3:case 4:case 5:break;default:I=3}var N=h;h=I;try{return H()}finally{h=N}},e.unstable_scheduleCallback=function(I,H,N){var z=e.unstable_now();switch(typeof N=="object"&&N!==null?(N=N.delay,N=typeof N=="number"&&0<N?z+N:z):N=z,I){case 1:var F=-1;break;case 2:F=250;break;case 5:F=1073741823;break;case 4:F=1e4;break;default:F=5e3}return F=N+F,I={id:p++,callback:H,priorityLevel:I,startTime:N,expirationTime:F,sortIndex:-1},N>z?(I.sortIndex=N,t(a,I),n(c)===null&&I===n(a)&&(v?(u(C),C=-1):v=!0,Y(y,N-z))):(I.sortIndex=F,t(c,I),E||x||(E=!0,B(k))),I},e.unstable_shouldYield=T,e.unstable_wrapCallback=function(I){var H=h;return function(){var N=h;h=H;try{return I.apply(this,arguments)}finally{h=N}}}})(vd);md.exports=vd;var Bm=md.exports;/**
* @license React
* react-dom.production.min.js
*
* Copyright (c) Facebook, Inc. and its affiliates.
*
* This source code is licensed under the MIT license found in the
* LICENSE file in the root directory of this source tree.
*/var wd=j,He=Bm;function b(e){for(var t="https://reactjs.org/docs/error-decoder.html?invariant="+e,n=1;n<arguments.length;n++)t+="&args[]="+encodeURIComponent(arguments[n]);return"Minified React error #"+e+"; visit "+t+" for the full message or use the non-minified dev environment for full errors and additional helpful warnings."}var yd=new Set,Or={};function An(e,t){Kn(e,t),Kn(e+"Capture",t)}function Kn(e,t){for(Or[e]=t,e=0;e<t.length;e++)yd.add(t[e])}var St=!(typeof window>"u"||typeof window.document>"u"||typeof window.document.createElement>"u"),Bi=Object.prototype.hasOwnProperty,Hm=/^[:A-Z_a-z\u00C0-\u00D6\u00D8-\u00F6\u00F8-\u02FF\u0370-\u037D\u037F-\u1FFF\u200C-\u200D\u2070-\u218F\u2C00-\u2FEF\u3001-\uD7FF\uF900-\uFDCF\uFDF0-\uFFFD][:A-Z_a-z\u00C0-\u00D6\u00D8-\u00F6\u00F8-\u02FF\u0370-\u037D\u037F-\u1FFF\u200C-\u200D\u2070-\u218F\u2C00-\u2FEF\u3001-\uD7FF\uF900-\uFDCF\uFDF0-\uFFFD\-.0-9\u00B7\u0300-\u036F\u203F-\u2040]*$/,Ba={},Ha={};function Fm(e){return Bi.call(Ha,e)?!0:Bi.call(Ba,e)?!1:Hm.test(e)?Ha[e]=!0:(Ba[e]=!0,!1)}function Um(e,t,n,r){if(n!==null&&n.type===0)return!1;switch(typeof t){case"function":case"symbol":return!0;case"boolean":return r?!1:n!==null?!n.acceptsBooleans:(e=e.toLowerCase().slice(0,5),e!=="data-"&&e!=="aria-");default:return!1}}function qm(e,t,n,r){if(t===null||typeof t>"u"||Um(e,t,n,r))return!0;if(r)return!1;if(n!==null)switch(n.type){case 3:return!t;case 4:return t===!1;case 5:return isNaN(t);case 6:return isNaN(t)||1>t}return!1}function Ce(e,t,n,r,o,s,i){this.acceptsBooleans=t===2||t===3||t===4,this.attributeName=r,this.attributeNamespace=o,this.mustUseProperty=n,this.propertyName=e,this.type=t,this.sanitizeURL=s,this.removeEmptyString=i}var me={};"children dangerouslySetInnerHTML defaultValue defaultChecked innerHTML suppressContentEditableWarning suppressHydrationWarning style".split(" ").forEach(function(e){me[e]=new Ce(e,0,!1,e,null,!1,!1)});[["acceptCharset","accept-charset"],["className","class"],["htmlFor","for"],["httpEquiv","http-equiv"]].forEach(function(e){var t=e[0];me[t]=new Ce(t,1,!1,e[1],null,!1,!1)});["contentEditable","draggable","spellCheck","value"].forEach(function(e){me[e]=new Ce(e,2,!1,e.toLowerCase(),null,!1,!1)});["autoReverse","externalResourcesRequired","focusable","preserveAlpha"].forEach(function(e){me[e]=new Ce(e,2,!1,e,null,!1,!1)});"allowFullScreen async autoFocus autoPlay controls default defer disabled disablePictureInPicture disableRemotePlayback formNoValidate hidden loop noModule noValidate open playsInline readOnly required reversed scoped seamless itemScope".split(" ").forEach(function(e){me[e]=new Ce(e,3,!1,e.toLowerCase(),null,!1,!1)});["checked","multiple","muted","selected"].forEach(function(e){me[e]=new Ce(e,3,!0,e,null,!1,!1)});["capture","download"].forEach(function(e){me[e]=new Ce(e,4,!1,e,null,!1,!1)});["cols","rows","size","span"].forEach(function(e){me[e]=new Ce(e,6,!1,e,null,!1,!1)});["rowSpan","start"].forEach(function(e){me[e]=new Ce(e,5,!1,e.toLowerCase(),null,!1,!1)});var Gl=/[\-:]([a-z])/g;function Yl(e){return e[1].toUpperCase()}"accent-height alignment-baseline arabic-form baseline-shift cap-height clip-path clip-rule color-interpolation color-interpolation-filters color-profile color-rendering dominant-baseline enable-background fill-opacity fill-rule flood-color flood-opacity font-family font-size font-size-adjust font-stretch font-style font-variant font-weight glyph-name glyph-orientation-horizontal glyph-orientation-vertical horiz-adv-x horiz-origin-x image-rendering letter-spacing lighting-color marker-end marker-mid marker-start overline-position overline-thickness paint-order panose-1 pointer-events rendering-intent shape-rendering stop-color stop-opacity strikethrough-position strikethrough-thickness stroke-dasharray stroke-dashoffset stroke-linecap stroke-linejoin stroke-miterlimit stroke-opacity stroke-width text-anchor text-decoration text-rendering underline-position underline-thickness unicode-bidi unicode-range units-per-em v-alphabetic v-hanging v-ideographic v-mathematical vector-effect vert-adv-y vert-origin-x vert-origin-y word-spacing writing-mode xmlns:xlink x-height".split(" ").forEach(function(e){var t=e.replace(Gl,Yl);me[t]=new Ce(t,1,!1,e,null,!1,!1)});"xlink:actuate xlink:arcrole xlink:role xlink:show xlink:title xlink:type".split(" ").forEach(function(e){var t=e.replace(Gl,Yl);me[t]=new Ce(t,1,!1,e,"http://www.w3.org/1999/xlink",!1,!1)});["xml:base","xml:lang","xml:space"].forEach(function(e){var t=e.replace(Gl,Yl);me[t]=new Ce(t,1,!1,e,"http://www.w3.org/XML/1998/namespace",!1,!1)});["tabIndex","crossOrigin"].forEach(function(e){me[e]=new Ce(e,1,!1,e.toLowerCase(),null,!1,!1)});me.xlinkHref=new Ce("xlinkHref",1,!1,"xlink:href","http://www.w3.org/1999/xlink",!0,!1);["src","href","action","formAction"].forEach(function(e){me[e]=new Ce(e,1,!1,e.toLowerCase(),null,!0,!0)});function zl(e,t,n,r){var o=me.hasOwnProperty(t)?me[t]:null;(o!==null?o.type!==0:r||!(2<t.length)||t[0]!=="o"&&t[0]!=="Line truncated
`+$s+e}var ei=!1;function ti(e,t){if(!e||ei)return"";ei=!0;var n=Error.prepareStackTrace;Error.prepareStackTrace=void 0;try{if(t)if(t=function(){throw Error()},Object.defineProperty(t.prototype,"props",{set:function(){throw Error()}}),typeof Reflect=="object"&&Reflect.construct){try{Reflect.construct(t,[])}catch(a){var r=a}Reflect.construct(e,[],t)}else{try{t.call()}catch(a){r=a}e.call(t.prototype)}else{try{throw Error()}catch(a){r=a}e()}}catch(a){if(a&&r&&typeof a.stack=="string"){for(var o=a.stack.split(`
`),s=r.stack.split(`
`),i=o.length-1,l=s.length-1;1<=i&&0<=l&&o[i]!==s[l];)l--;for(;1<=i&&0<=l;i--,l--)if(o[i]!==s[l]){if(i!==1||l!==1)do if(i--,l--,0>l||o[i]!==s[l]){var c=`
`+o[i].replace(" at new "," at ");return e.displayName&&c.includes("<anonymous>")&&(c=c.replace("<anonymous>",e.displayName)),c}while(1<=i&&0<=l);break}}}finally{ei=!1,Error.prepareStackTrace=n}return(e=e?e.displayName||e.name:"")?gr(e):""}function Qm(e){switch(e.tag){case 5:return gr(e.type);case 16:return gr("Lazy");case 13:return gr("Suspense");case 19:return gr("SuspenseList");case 0:case 2:case 15:return e=ti(e.type,!1),e;case 11:return e=ti(e.type.render,!1),e;case 1:return e=ti(e.type,!0),e;default:return""}}function qi(e){if(e==null)return null;if(typeof e=="function")return e.displayName||e.name||null;if(typeof e=="string")return e;switch(e){case In:return"Fragment";case Tn:return"Portal";case Hi:return"Profiler";case Xl:return"StrictMode";case Fi:return"Suspense";case Ui:return"SuspenseList"}if(typeof e=="object")switch(e.$$typeof){case Ed:return(e.displayName||"Context")+".Consumer";case Ad:return(e._context.displayName||"Context")+".Provider";case Kl:var t=e.render;return e=e.displayName,e||(e=t.displayName||t.name||"",e=e!==""?"ForwardRef("+e+")":"ForwardRef"),e;case Zl:return t=e.displayName||null,t!==null?t:qi(e.type)||"Memo";case Bt:t=e._payload,e=e._init;try{return qi(e(t))}catch{}}return null}function jm(e){var t=e.type;switch(e.tag){case 24:return"Cache";case 9:return(t.displayName||"Context")+".Consumer";case 10:return(t._context.displayName||"Context")+".Provider";case 18:return"DehydratedFragment";case 11:return e=t.render,e=e.displayName||e.name||"",t.displayName||(e!==""?"ForwardRef("+e+")":"ForwardRef");case 7:return"Fragment";case 5:return t;case 4:return"Portal";case 3:return"Root";case 6:return"Text";case 16:return qi(t);case 8:return t===Xl?"StrictMode":"Mode";case 22:return"Offscreen";case 12:return"Profiler";case 21:return"Scope";case 13:return"Suspense";case 19:return"SuspenseList";case 25:return"TracingMarker";case 1:case 0:case 17:case 2:case 14:case 15:if(typeof t=="function")return t.displayName||t.name||null;if(typeof t=="string")return t}return null}function Kt(e){switch(typeof e){case"boolean":case"number":case"string":case"undefined":return e;case"object":return e;default:return""}}function Sd(e){var t=e.type;return(e=e.nodeName)&&e.toLowerCase()==="input"&&(t==="checkbox"||t==="radio")}function Vm(e){var t=Sd(e)?"checked":"value",n=Object.getOwnPropertyDescriptor(e.constructor.prototype,t),r=""+e[t];if(!e.hasOwnProperty(t)&&typeof n<"u"&&typeof n.get=="function"&&typeof n.set=="function"){var o=n.get,s=n.set;return Object.defineProperty(e,t,{configurable:!0,get:function(){return o.call(this)},set:function(i){r=""+i,s.call(this,i)}}),Object.defineProperty(e,t,{enumerable:n.enumerable}),{getValue:function(){return r},setValue:function(i){r=""+i},stopTracking:function(){e._valueTracker=null,delete e[t]}}}}function fo(e){e._valueTracker||(e._valueTracker=Vm(e))}function kd(e){if(!e)return!1;var t=e._valueTracker;if(!t)return!0;var n=t.getValue(),r="";return e&&(r=Sd(e)?e.checked?"true":"false":e.value),e=r,e!==n?(t.setValue(e),!0):!1}function Zo(e){if(e=e||(typeof document<"u"?document:void 0),typeof e>"u")return null;try{return e.activeElement||e.body}catch{return e.body}}function Qi(e,t){var n=t.checked;return ne({},t,{defaultChecked:void 0,defaultValue:void 0,value:void 0,checked:n??e._wrapperState.initialChecked})}function Ua(e,t){var n=t.defaultValue==null?"":t.defaultValue,r=t.checked!=null?t.checked:t.defaultChecked;n=Kt(t.value!=null?t.value:n),e._wrapperState={initialChecked:r,initialValue:n,controlled:t.type==="checkbox"||t.type==="radio"?t.checked!=null:t.value!=null}}function Cd(e,t){t=t.checked,t!=null&&zl(e,"checked",t,!1)}function ji(e,t){Cd(e,t);var n=Kt(t.value),r=t.type;if(n!=null)r==="number"?(n===0&&e.value===""||e.value!=n)&&(e.value=""+n):e.value!==""+n&&(e.value=""+n);else if(r==="submit"||r==="reset"){e.removeAttribute("value");return}t.hasOwnProperty("value")?Vi(e,t.type,n):t.hasOwnProperty("defaultValue")&&Vi(e,t.type,Kt(t.defaultValue)),t.checked==null&&t.defaultChecked!=null&&(e.defaultChecked=!!t.defaultChecked)}function qa(e,t,n){if(t.hasOwnProperty("value")||t.hasOwnProperty("defaultValue")){var r=t.type;if(!(r!=="submit"&&r!=="reset"||t.value!==void 0&&t.value!==null))return;t=""+e._wrapperState.initialValue,n||t===e.value||(e.value=t),e.defaultValue=t}n=e.name,n!==""&&(e.name=""),e.defaultChecked=!!e._wrapperState.initialChecked,n!==""&&(e.name=n)}function Vi(e,t,n){(t!=="number"||Zo(e.ownerDocument)!==e)&&(n==null?e.defaultValue=""+e._wrapperState.initialValue:e.defaultValue!==""+n&&(e.defaultValue=""+n))}var mr=Array.isArray;function jn(e,t,n,r){if(e=e.options,t){t={};for(var o=0;o<n.length;o++)t["$"+n[o]]=!0;for(n=0;n<e.length;n++)o=t.hasOwnProperty("$"+e[n].value),e[n].selected!==o&&(e[n].selected=o),o&&r&&(e[n].defaultSelected=!0)}else{for(n=""+Kt(n),t=null,o=0;o<e.length;o++){if(e[o].value===n){e[o].selected=!0,r&&(e[o].defaultSelected=!0);return}t!==null||e[o].disabled||(t=e[o])}t!==null&&(t.selected=!0)}}function Wi(e,t){if(t.danLine truncated
`).replace($1,"")}function Ao(e,t,n){if(t=au(t),au(e)!==t&&n)throw Error(b(425))}function os(){}var rl=null,ol=null;function sl(e,t){return e==="textarea"||e==="noscript"||typeof t.children=="string"||typeof t.children=="number"||typeof t.dangerouslySetInnerHTML=="object"&&t.dangerouslySetInnerHTML!==null&&t.dangerouslySetInnerHTML.__html!=null}var il=typeof setTimeout=="function"?setTimeout:void 0,ev=typeof clearTimeout=="function"?clearTimeout:void 0,uu=typeof Promise=="function"?Promise:void 0,tv=typeof queueMicrotask=="function"?queueMicrotask:typeof uu<"u"?function(e){return uu.resolve(null).then(e).catch(nv)}:il;function nv(e){setTimeout(function(){throw e})}function hi(e,t){var n=t,r=0;do{var o=n.nextSibling;if(e.removeChild(n),o&&o.nodeType===8)if(n=o.data,n==="/$"){if(r===0){e.removeChild(o),Hr(t);return}r--}else n!=="$"&&n!=="$?"&&n!=="$!"||r++;n=o}while(n);Hr(t)}function mt(e){for(;e!=null;e=e.nextSibling){var t=e.nodeType;if(t===1||t===3)break;if(t===8){if(t=e.data,t==="$"||t==="$!"||t==="$?")break;if(t==="/$")return null}}return e}function fu(e){e=e.previousSibling;for(var t=0;e;){if(e.nodeType===8){var n=e.data;if(n==="$"||n==="$!"||n==="$?"){if(t===0)return e;t--}else n==="/$"&&t++}e=e.previousSibling}return null}var rr=Math.random().toString(36).slice(2),at="__reactFiber$"+rr,jr="__reactProps$"+rr,kt="__reactContainer$"+rr,ll="__reactEvents$"+rr,rv="__reactListeners$"+rr,ov="__reactHandles$"+rr;function ln(e){var t=e[at];if(t)return t;for(var n=e.parentNode;n;){if(t=n[kt]||n[at]){if(n=t.alternate,t.child!==null||n!==null&&n.child!==null)for(e=fu(e);e!==null;){if(n=e[at])return n;e=fu(e)}return t}e=n,n=e.parentNode}return null}function no(e){return e=e[at]||e[kt],!e||e.tag!==5&&e.tag!==6&&e.tag!==13&&e.tag!==3?null:e}function Pn(e){if(e.tag===5||e.tag===6)return e.stateNode;throw Error(b(33))}function Is(e){return e[jr]||null}var cl=[],Ln=-1;function en(e){return{current:e}}function _(e){0>Ln||(e.current=cl[Ln],cl[Ln]=null,Ln--)}function K(e,t){Ln++,cl[Ln]=e.current,e.current=t}var Zt={},Ae=en(Zt),be=en(!1),hn=Zt;function Zn(e,t){var n=e.type.contextTypes;if(!n)return Zt;var r=e.stateNode;if(r&&r.__reactInternalMemoizedUnmaskedChildContext===t)return r.__reactInternalMemoizedMaskedChildContext;var o={},s;for(s in n)o[s]=t[s];return r&&(e=e.stateNode,e.__reactInternalMemoizedUnmaskedChildContext=t,e.__reactInternalMemoizedMaskedChildContext=o),o}function Ne(e){return e=e.childContextTypes,e!=null}function ss(){_(be),_(Ae)}function du(e,t,n){if(Ae.current!==Zt)throw Error(b(168));K(Ae,t),K(be,n)}function pp(e,t,n){var r=e.stateNode;if(t=t.childContextTypes,typeof r.getChildContext!="function")return n;r=r.getChildContext();for(var o in r)if(!(o in t))throw Error(b(108,jm(e)||"Unknown",o));return ne({},n,r)}function is(e){return e=(e=e.stateNode)&&e.__reactInternalMemoizedMergedChildContext||Zt,hn=Ae.current,K(Ae,e),K(be,be.current),!0}function pu(e,t,n){var r=e.stateNode;if(!r)throw Error(b(169));n?(e=pp(e,t,hn),r.__reactInternalMemoizedMergedChildContext=e,_(be),_(Ae),K(Ae,e)):_(be),K(be,n)}var gt=null,bs=!1,gi=!1;function hp(e){gt===null?gt=[e]:gt.push(e)}function sv(e){bs=!0,hp(e)}function tn(){if(!gi&&gt!==null){gi=!0;var e=0,t=X;try{var n=gt;for(X=1;e<n.length;e++){var r=n[e];do r=r(!0);while(r!==null)}gt=null,bs=!1}catch(o){throw gt!==null&&(gt=gt.slice(e+1)),Ud(_l,tn),o}finally{X=t,gi=!1}}return null}var iv=Dt.ReactCurrentBatchConfig;function Je(e,t){if(e&&e.defaultProps){t=ne({},t),e=e.defaultProps;for(var n in e)t[n]===void 0&&(t[n]=e[n]);return t}return t}var ls=en(null),cs=null,Mn=null,lc=null;function cc(){lc=Mn=cs=null}function ac(e){var t=ls.current;_(ls),e._currentValue=t}function al(e,t,n){for(;e!==null;){var r=e.alternate;if((e.childLanes&t)!==t?(e.childLanes|=t,r!==null&&(r.childLanes|=t)):r!==null&&(r.childLanes&t)!==t&&(r.childLanes|=t),e===n)break;e=e.return}}function Yn(e,t){cs=e,lc=Mn=null,e=e.dependencies,e!==null&&e.firstContext!==null&&(e.lanes&t&&(Ie=!0),e.firstContext=null)}function Xe(e){var t=e._currentValue;if(lc!==e)if(e={context:e,memoizedValue:t,next:null},Mn===null){if(cs===null)throw Error(b(308));Mn=e,cs.dependencies={lanes:0,firstContext:e}}else Mn=Mn.next=e;return t}var nt=null,Ht=!1;function uc(e){e.updateQueue={baseState:e.memoizedState,firstBaseUpdate:null,lastBaseUpdate:null,shared:{pending:null,interleaved:null,lanes:0},effects:null}}function gp(e,t){e=e.updateQueue,t.updateQueue===e&&(t.updateQueue={baseState:e.baseState,firstBaseUpdate:e.firstBaseUpdate,lastBaseUpdate:e.lastBaseUpdate,shared:e.shared,effects:e.effects})}function Et(e,t){return{eventTime:e,lane:t,tag:0,payload:null,callback:null,next:null}}function Yt(e,t){var n=e.updateQueue;n!==null&&(n=n.shared,o0(e)?(e=n.interleaved,e===null?(t.next=t,nt===null?nt=[n]:nt.push(n)):(t.next=e.next,e.next=t),n.interleaved=t):(e=n.pending,e===null?t.next=t:(t.next=e.next,e.next=t),n.pending=t))}function Ho(e,t,n){if(t=t.updateQueue,t!==null&&(t=t.shared,(n&4194240)!==0)){var r=t.lanes;r&=e.pendingLanLine truncated
Error generating stack: `+s.message+`
`+s.stack}return{value:e,source:t,stack:o}}function hl(e,t){try{console.error(t.value)}catch(n){setTimeout(function(){throw n})}}var hv=typeof WeakMap=="function"?WeakMap:Map;function jp(e,t,n){n=Et(-1,n),n.tag=3,n.payload={element:null};var r=t.value;return n.callback=function(){ms||(ms=!0,Sl=r),hl(e,t)},n}function Vp(e,t,n){n=Et(-1,n),n.tag=3;var r=e.type.getDerivedStateFromError;if(typeof r=="function"){var o=t.value;n.payload=function(){return r(o)},n.callback=function(){hl(e,t)}}var s=e.stateNode;return s!==null&&typeof s.componentDidCatch=="function"&&(n.callback=function(){hl(e,t),typeof r!="function"&&(zt===null?zt=new Set([this]):zt.add(this));var i=t.stack;this.componentDidCatch(t.value,{componentStack:i!==null?i:""})}),n}function Su(e,t,n){var r=e.pingCache;if(r===null){r=e.pingCache=new hv;var o=new Set;r.set(t,o)}else o=r.get(t),o===void 0&&(o=new Set,r.set(t,o));o.has(n)||(o.add(n),e=Rv.bind(null,e,t,n),t.then(e,e))}function ku(e){do{var t;if((t=e.tag===13)&&(t=e.memoizedState,t=t!==null?t.dehydrated!==null:!0),t)return e;e=e.return}while(e!==null);return null}function Cu(e,t,n,r,o){return e.mode&1?(e.flags|=65536,e.lanes=o,e):(e===t?e.flags|=65536:(e.flags|=128,n.flags|=131072,n.flags&=-52805,n.tag===1&&(n.alternate===null?n.tag=17:(t=Et(-1,1),t.tag=2,Yt(n,t))),n.lanes|=1),e)}var Wp,gl,Gp,Yp;Wp=function(e,t){for(var n=t.child;n!==null;){if(n.tag===5||n.tag===6)e.appendChild(n.stateNode);else if(n.tag!==4&&n.child!==null){n.child.return=n,n=n.child;continue}if(n===t)break;for(;n.sibling===null;){if(n.return===null||n.return===t)return;n=n.return}n.sibling.return=n.return,n=n.sibling}};gl=function(){};Gp=function(e,t,n,r){var o=e.memoizedProps;if(o!==r){e=t.stateNode,cn(pt.current);var s=null;switch(n){case"input":o=Qi(e,o),r=Qi(e,r),s=[];break;case"select":o=ne({},o,{value:void 0}),r=ne({},r,{value:void 0}),s=[];break;case"textarea":o=Wi(e,o),r=Wi(e,r),s=[];break;default:typeof o.onClick!="function"&&typeof r.onClick=="function"&&(e.onclick=os)}Yi(n,r);var i;n=null;for(a in o)if(!r.hasOwnProperty(a)&&o.hasOwnProperty(a)&&o[a]!=null)if(a==="style"){var l=o[a];for(i in l)l.hasOwnProperty(i)&&(n||(n={}),n[i]="")}else a!=="dangerouslySetInnerHTML"&&a!=="children"&&a!=="suppressContentEditableWarning"&&a!=="suppressHydrationWarning"&&a!=="autoFocus"&&(Or.hasOwnProperty(a)?s||(s=[]):(s=s||[]).push(a,null));for(a in r){var c=r[a];if(l=o!=null?o[a]:void 0,r.hasOwnProperty(a)&&c!==l&&(c!=null||l!=null))if(a==="style")if(l){for(i in l)!l.hasOwnProperty(i)||c&&c.hasOwnProperty(i)||(n||(n={}),n[i]="");for(i in c)c.hasOwnProperty(i)&&l[i]!==c[i]&&(n||(n={}),n[i]=c[i])}else n||(s||(s=[]),s.push(a,n)),n=c;else a==="dangerouslySetInnerHTML"?(c=c?c.__html:void 0,l=l?l.__html:void 0,c!=null&&l!==c&&(s=s||[]).push(a,c)):a==="children"?typeof c!="string"&&typeof c!="number"||(s=s||[]).push(a,""+c):a!=="suppressContentEditableWarning"&&a!=="suppressHydrationWarning"&&(Or.hasOwnProperty(a)?(c!=null&&a==="onScroll"&&Z("scroll",e),s||l===c||(s=[])):(s=s||[]).push(a,c))}n&&(s=s||[]).push("style",n);var a=s;(t.updateQueue=a)&&(t.flags|=4)}};Yp=function(e,t,n,r){n!==r&&(t.flags|=4)};function pr(e,t){if(!$)switch(e.tailMode){case"hidden":t=e.tail;for(var n=null;t!==null;)t.alternate!==null&&(n=t),t=t.sibling;n===null?e.tail=null:n.sibling=null;break;case"collapsed":n=e.tail;for(var r=null;n!==null;)n.alternate!==null&&(r=n),n=n.sibling;r===null?t||e.tail===null?e.tail=null:e.tail.sibling=null:r.sibling=null}}function we(e){var t=e.alternate!==null&&e.alternate.child===e.child,n=0,r=0;if(t)for(var o=e.child;o!==null;)n|=o.lanes|o.childLanes,r|=o.subtreeFlags&14680064,r|=o.flags&14680064,o.return=e,o=o.sibling;else for(o=e.child;o!==null;)n|=o.lanes|o.childLanes,r|=o.subtreeFlags,r|=o.flags,o.return=e,o=o.sibling;return e.subtreeFlags|=r,e.childLanes=n,t}function gv(e,t,n){var r=t.pendingProps;switch(dc(t),t.tag){case 2:case 16:case 15:case 0:case 11:case 7:case 8:case 12:case 9:case 14:return we(t),null;case 1:return Ne(t.type)&&ss(),we(t),null;case 3:return r=t.stateNode,$n(),_(be),_(Ae),mc(),r.pendingContext&&(r.context=r.pendingContext,r.pendingContext=null),(e===null||e.child===null)&&(fr(t)?t.flags|=4:e===null||e.memoizedState.isDehydrated&&!(t.flags&256)||(t.flags|=1024,et!==null&&(Dl(et),et=null))),gl(e,t),we(t),null;case 5:gc(t);var o=cn(Wr.current);if(n=t.type,e!==null&&t.stateNode!=null)Gp(e,t,n,r,o),e.ref!==t.ref&&(t.flags|=512,t.flags|=2097152);else{if(!r){if(t.stateNode===null)throw Error(b(166));return we(t),null}if(e=cn(pt.current),fr(t)){r=t.stateNode,n=t.type;var s=t.memoizedProps;switch(r[at]=t,r[jr]=s,e=(t.mode&1)!==0,n){case"dialog":Z("cancel",r),Z("close",r);break;case"iframe":case"object":case"embed":Z("load",r);break;case"video":case"audio":for(o=0;o<wr.length;o++)Z(wr[o],r);break;case"source":Z("error",r);break;case"img":case"image":case"link":Z("error",r),Z("load",r);break;case"details":Z("toggle",r);break;case"input":Ua(r,s),Z("invalid",r);break;case"select":r._wrapperState={wasMultiple:!!s.multLine truncated
`,ON="∄",PN="∄",LN="𝔑",MN="𝔫",BN="≧̸",HN="≱",FN="≱",UN="≧̸",qN="⩾̸",QN="⩾̸",jN="⋙̸",VN="≵",WN="≫⃒",GN="≯",YN="≯",zN="≫̸",XN="↮",KN="⇎",ZN="⫲",JN="∋",_N="⋼",$N="⋺",eO="∋",tO="Њ",nO="њ",rO="↚",oO="⇍",sO="‥",iO="≦̸",lO="≰",cO="↚",aO="⇍",uO="↮",fO="⇎",dO="≰",pO="≦̸",hO="⩽̸",gO="⩽̸",mO="≮",vO="⋘̸",wO="≴",yO="≪⃒",AO="≮",EO="⋪",xO="⋬",SO="≪̸",kO="∤",CO="⁠",DO=" ",RO="𝕟",TO="ℕ",IO="⫬",bO="¬",NO="≢",OO="≭",PO="∦",LO="∉",MO="≠",BO="≂̸",HO="∄",FO="≯",UO="≱",qO="≧̸",QO="≫̸",jO="≹",VO="⩾̸",WO="≵",GO="≎̸",YO="≏̸",zO="∉",XO="⋵̸",KO="⋹̸",ZO="∉",JO="⋷",_O="⋶",$O="⧏̸",eP="⋪",tP="⋬",nP="≮",rP="≰",oP="≸",sP="≪̸",iP="⩽̸",lP="≴",cP="⪢̸",aP="⪡̸",uP="∌",fP="∌",dP="⋾",pP="⋽",hP="⊀",gP="⪯̸",mP="⋠",vP="∌",wP="⧐̸",yP="⋫",AP="⋭",EP="⊏̸",xP="⋢",SP="⊐̸",kP="⋣",CP="⊂⃒",DP="⊈",RP="⊁",TP="⪰̸",IP="⋡",bP="≿̸",NP="⊃⃒",OP="⊉",PP="≁",LP="≄",MP="≇",BP="≉",HP="∤",FP="∦",UP="∦",qP="⫽⃥",QP="∂̸",jP="⨔",VP="⊀",WP="⋠",GP="⊀",YP="⪯̸",zP="⪯̸",XP="⤳̸",KP="↛",ZP="⇏",JP="↝̸",_P="↛",$P="⇏",eL="⋫",tL="⋭",nL="⊁",rL="⋡",oL="⪰̸",sL="𝒩",iL="𝓃",lL="∤",cL="∦",aL="≁",uL="≄",fL="≄",dL="∤",pL="∦",hL="⋢",gL="⋣",mL="⊄",vL="⫅̸",wL="⊈",yL="⊂⃒",AL="⊈",EL="⫅̸",xL="⊁",SL="⪰̸",kL="⊅",CL="⫆̸",DL="⊉",RL="⊃⃒",TL="⊉",IL="⫆̸",bL="≹",NL="Ñ",OL="ñ",PL="≸",LL="⋪",ML="⋬",BL="⋫",HL="⋭",FL="Ν",UL="ν",qL="#",QL="№",jL=" ",VL="≍⃒",WL="⊬",GL="⊭",YL="⊮",zL="⊯",XL="≥⃒",KL=">⃒",ZL="⤄",JL="⧞",_L="⤂",$L="≤⃒",e9="<⃒",t9="⊴⃒",n9="⤃",r9="⊵⃒",o9="∼⃒",s9="⤣",i9="↖",l9="⇖",c9="↖",a9="⤧",u9="Ó",f9="ó",d9="⊛",p9="Ô",h9="ô",g9="⊚",m9="О",v9="о",w9="⊝",y9="Ő",A9="ő",E9="⨸",x9="⊙",S9="⦼",k9="Œ",C9="œ",D9="⦿",R9="𝔒",T9="𝔬",I9="˛",b9="Ò",N9="ò",O9="⧁",P9="⦵",L9="Ω",M9="∮",B9="↺",H9="⦾",F9="⦻",U9="‾",q9="⧀",Q9="Ō",j9="ō",V9="Ω",W9="ω",G9="Ο",Y9="ο",z9="⦶",X9="⊖",K9="𝕆",Z9="𝕠",J9="⦷",_9="“",$9="‘",eM="⦹",tM="⊕",nM="↻",rM="⩔",oM="∨",sM="⩝",iM="ℴ",lM="ℴ",cM="ª",aM="º",uM="⊶",fM="⩖",dM="⩗",pM="⩛",hM="Ⓢ",gM="𝒪",mM="ℴ",vM="Ø",wM="ø",yM="⊘",AM="Õ",EM="õ",xM="⨶",SM="⨷",kM="⊗",CM="Ö",DM="ö",RM="⌽",TM="‾",IM="⏞",bM="⎴",NM="⏜",OM="¶",PM="∥",LM="∥",MM="⫳",BM="⫽",HM="∂",FM="∂",UM="П",qM="п",QM="%",jM=".",VM="‰",WM="⊥",GM="‱",YM="𝔓",zM="𝔭",XM="Φ",KM="φ",ZM="ϕ",JM="ℳ",_M="☎",$M="Π",eB="π",tB="⋔",nB="ϖ",rB="ℏ",oB="ℎ",sB="ℏ",iB="⨣",lB="⊞",cB="⨢",aB="+",uB="∔",fB="⨥",dB="⩲",pB="±",hB="±",gB="⨦",mB="⨧",vB="±",wB="ℌ",yB="⨕",AB="𝕡",EB="ℙ",xB="£",SB="⪷",kB="⪻",CB="≺",DB="≼",RB="⪷",TB="≺",IB="≼",bB="≺",NB="⪯",OB="≼",PB="≾",LB="⪯",MB="⪹",BB="⪵",HB="⋨",FB="⪯",UB="⪳",qB="≾",QB="′",jB="″",VB="ℙ",WB="⪹",GB="⪵",YB="⋨",zB="∏",XB="∏",KB="⌮",ZB="⌒",JB="⌓",_B="∝",$B="∝",eH="∷",tH="∝",nH="≾",rH="⊰",oH="𝒫",sH="𝓅",iH="Ψ",lH="ψ",cH=" ",aH="𝔔",uH="𝔮",fH="⨌",dH="𝕢",pH="ℚ",hH="⁗",gH="𝒬",mH="𝓆",vH="ℍ",wH="⨖",yH="?",AH="≟",EH='"',xH='"',SH="⇛",kH="∽̱",CH="Ŕ",DH="ŕ",RH="√",TH="⦳",IH="⟩",bH="⟫",NH="⦒",OH="⦥",PH="⟩",LH="»",MH="⥵",BH="⇥",HH="⤠",FH="⤳",UH="→",qH="↠",QH="⇒",jH="⤞",VH="↪",WH="↬",GH="⥅",YH="⥴",zH="⤖",XH="↣",KH="↝",ZH="⤚",JH="⤜",_H="∶",$H="ℚ",eF="⤍",tF="⤏",nF="⤐",rF="❳",oF="}",sF="]",iF="⦌",lF="⦎",cF="⦐",aF="Ř",uF="ř",fF="Ŗ",dF="ŗ",pF="⌉",hF="}",gF="Р",mF="р",vF="⤷",wF="⥩",yF="”",AF="”",EF="↳",xF="ℜ",SF="ℛ",kF="ℜ",CF="ℝ",DF="ℜ",RF="▭",TF="®",IF="®",bF="∋",NF="⇋",OF="⥯",PF="⥽",LF="⌋",MF="𝔯",BF="ℜ",HF="⥤",FF="⇁",UF="⇀",qF="⥬",QF="Ρ",jF="ρ",VF="ϱ",WF="⟩",GF="⇥",YF="→",zF="→",XF="⇒",KF="⇄",ZF="↣",JF="⌉",_F="⟧",$F="⥝",eU="⥕",tU="⇂",nU="⌋",rU="⇁",oU="⇀",sU="⇄",iU="⇌",lU="⇉",cU="↝",aU="↦",uU="⊢",fU="⥛",dU="⋌",pU="⧐",hU="⊳",gU="⊵",mU="⥏",vU="⥜",wU="⥔",yU="↾",AU="⥓",EU="⇀",xU="˚",SU="≓",kU="⇄",CU="⇌",DU="‏",RU="⎱",TU="⎱",IU="⫮",bU="⟭",NU="⇾",OU="⟧",PU="⦆",LU="𝕣",MU="ℝ",BU="⨮",HU="⨵",FU="⥰",UU=")",qU="⦔",QU="⨒",jU="⇉",VU="⇛",WU="›",GU="𝓇",YU="ℛ",zU="↱",XU="↱",KU="]",ZU="’",JU="’",_U="⋌",$U="⋊",eq="▹",tq="⊵",nq="▸",rq="⧎",oq="⧴",sq="⥨",iq="℞",lq="Ś",cq="ś",aq="‚",uq="⪸",fq="Š",dq="š",pq="⪼",hq="≻",gq="≽",mq="⪰",vq="⪴",wq="Ş",yq="ş",Aq="Ŝ",Eq="ŝ",xq="⪺",Sq="⪶",kq="⋩",Cq="⨓",Dq="≿",Rq="С",Tq="с",Iq="⊡",bq="⋅",Nq="⩦",Oq="⤥",Pq="↘",Lq="⇘",Mq="↘",Bq="§",Hq=";",Fq="⤩",Uq="∖",qq="∖",Qq="✶",Line truncated
In order to be iterable, non-array objects must have a [Symbol.iterator]() method.`)}var s=!0,i=!1,l;return{s:function(){n=n.call(e)},n:function(){var a=n.next();return s=a.done,a},e:function(a){i=!0,l=a},f:function(){try{!s&&n.return!=null&&n.return()}finally{if(i)throw l}}}}function QJ(e,t){if(e){if(typeof e=="string")return Zu(e,t);var n=Object.prototype.toString.call(e).slice(8,-1);if(n==="Object"&&e.constructor&&(n=e.constructor.name),n==="Map"||n==="Set")return Array.from(e);if(n==="Arguments"||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n))return Zu(e,t)}}function Zu(e,t){(t==null||t>e.length)&&(t=e.length);for(var n=0,r=new Array(t);n<t;n++)r[n]=e[n];return r}var jJ=P0,Ju={fg:"#FFF",bg:"#000",newline:!1,escapeXML:!1,stream:!1,colors:VJ()};function VJ(){var e={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 Io(0,5).forEach(function(t){Io(0,5).forEach(function(n){Io(0,5).forEach(function(r){return WJ(t,n,r,e)})})}),Io(0,23).forEach(function(t){var n=t+232,r=z0(t*10+8);e[n]="#"+r+r+r}),e}function WJ(e,t,n,r){var o=16+e*36+t*6+n,s=e>0?e*40+55:0,i=t>0?t*40+55:0,l=n>0?n*40+55:0;r[o]=GJ([s,i,l])}function z0(e){for(var t=e.toString(16);t.length<2;)t="0"+t;return t}function GJ(e){var t=[],n=Y0(e),r;try{for(n.s();!(r=n.n()).done;){var o=r.value;t.push(z0(o))}}catch(s){n.e(s)}finally{n.f()}return"#"+t.join("")}function _u(e,t,n,r){var o;return t==="text"?o=KJ(n,r):t==="display"?o=zJ(e,n,r):t==="xterm256Foreground"?o=Wo(e,r.colors[n]):t==="xterm256Background"?o=Go(e,r.colors[n]):t==="rgb"&&(o=YJ(e,n)),o}function YJ(e,t){t=t.substring(2).slice(0,-1);var n=+t.substr(0,2),r=t.substring(5).split(";"),o=r.map(function(s){return("0"+Number(s).toString(16)).substr(-2)}).join("");return Vo(e,(n===38?"color:#":"background-color:#")+o)}function zJ(e,t,n){t=parseInt(t,10);var r={"-1":function(){return"<br/>"},0:function(){return e.length&&X0(e)},1:function(){return qt(e,"b")},3:function(){return qt(e,"i")},4:function(){return qt(e,"u")},8:function(){return Vo(e,"display:none")},9:function(){return qt(e,"strike")},22:function(){return Vo(e,"font-weight:normal;text-decoration:none;font-style:normal")},23:function(){return ef(e,"i")},24:function(){return ef(e,"u")},39:function(){return Wo(e,n.fg)},49:function(){return Go(e,n.bg)},53:function(){return Vo(e,"text-decoration:overline")}},o;return r[t]?o=r[t]():4<t&&t<7?o=qt(e,"blink"):29<t&&t<38?o=Wo(e,n.colors[t-30]):39<t&&t<48?o=Go(e,n.colors[t-40]):89<t&&t<98?o=Wo(e,n.colors[8+(t-90)]):99<t&&t<108&&(o=Go(e,n.colors[8+(t-100)])),o}function X0(e){var t=e.slice(0);return e.length=0,t.reverse().map(function(n){return"</"+n+">"}).join("")}function Io(e,t){for(var n=[],r=e;r<=t;r++)n.push(r);return n}function XJ(e){return function(t){return(e===null||t.category!==e)&&e!=="all"}}function $u(e){e=parseInt(e,10);var t=null;return e===0?t="all":e===1?t="bold":2<e&&e<5?t="underline":4<e&&e<7?t="blink":e===8?t="hide":e===9?t="strike":29<e&&e<38||e===39||89<e&&e<98?t="foreground-color":(39<e&&e<48||e===49||99<e&&e<108)&&(t="background-color"),t}function KJ(e,t){return t.escapeXML?jJ.encodeXML(e):e}function qt(e,t,n){return n||(n=""),e.push(t),"<".concat(t).concat(n?' style="'.concat(n,'"'):"",">")}function Vo(e,t){return qt(e,"span",t)}function Wo(e,t){return qt(e,"span","color:"+t)}function Go(e,t){return qt(e,"span","background-color:"+t)}function ef(e,t){var n;if(e.slice(-1)[0]===t&&(n=e.pop()),n)return"</"+t+">"}function ZJ(e,t,n){var r=!1,o=3;function s(){return""}function i(k,w){return n("xterm256Foreground",w),""}function l(k,w){return n("xterm256Background",w),""}function c(k){return t.newline?n("display",-1):n("text",k),""}function a(k,w){r=!0,w.trim().length===0&&(w="0"),w=w.trimRight(";").split(";");var S=Y0(w),C;try{for(S.s();!(C=S.n()).done;){var R=C.value;n("display",R)}}catch(D){S.e(D)}finally{S.f()}return""}function p(k){return n("text",k),""}function m(k){return n("rgb",k),""}var h=[{pattern:/^\x08+/,sub:s},{pattern:/^\x1b\[[012]?K/,sub:s},{pattern:/^\x1b\[\(B/,sub:s},{pattern:/^\x1b\[[34]8;2;\d+;\d+;\d+m/,sub:m},{pattern:/^\x1b\[38;5;(\d+)m/,sub:i},{pattern:/^\x1b\[48;5;(\d+)m/,sub:l},{pattern:/^\n/,sub:c},{pattern:/^\r+\n/,sub:c},{pattern:/^\r/,sub:c},{pattern:/^\x1b\[((?:\d{1,3};?)+|)m/,sub:a},{pattern:/^\x1b\[\d?J/,sub:s},{pattern:/^\x1b\[\d{0,3};\d{0,3}f/,sub:s},{pattern:/^\x1b\[?[\d;]{0,3}/,sub:s},{pattern:/^(([^\x1b\x08\r\n])+)/,sub:p}];function x(k,w){w>o&&r||(r=!1,e=e.replace(k.pattern,k.sub))}var E=[],v=e,g=v.length;e:for(;g>0;){for(var u=0,f=0,d=h.length;f<d;u=++f){var y=h[u];if(x(y,u),e.length!==g){g=e.length;continue e}}if(e.length===g)break;E.push(0),g=e.length}return E}function JJ(e,t,n){return t!=="text"&&(e=e.filter(XJ($u(n))),e.push({token:t,data:n,category:$u(n)})),e}var _J=function(){function e(t){UJ(this,e),t=t||{},t.colors&&(t.colors=Object.assign({},Ju.colors,t.colors)),this.options=Object.assign({},Ju,t),this.stack=[],this.stickyStackLine truncated
</script>
<style type='text/css'>:root{--color-canvas-default-transparent: rgba(255,255,255,0);--color-marketing-icon-primary: #218bff;--color-marketing-icon-secondary: #54aeff;--color-diff-blob-addition-num-text: #24292f;--color-diff-blob-addition-fg: #24292f;--color-diff-blob-addition-num-bg: #CCFFD8;--color-diff-blob-addition-line-bg: #E6FFEC;--color-diff-blob-addition-word-bg: #ABF2BC;--color-diff-blob-deletion-num-text: #24292f;--color-diff-blob-deletion-fg: #24292f;--color-diff-blob-deletion-num-bg: #FFD7D5;--color-diff-blob-deletion-line-bg: #FFEBE9;--color-diff-blob-deletion-word-bg: rgba(255,129,130,.4);--color-diff-blob-hunk-num-bg: rgba(84,174,255,.4);--color-diff-blob-expander-icon: #57606a;--color-diff-blob-selected-line-highlight-mix-blend-mode: multiply;--color-diffstat-deletion-border: rgba(27,31,36,.15);--color-diffstat-addition-border: rgba(27,31,36,.15);--color-diffstat-addition-bg: #2da44e;--color-search-keyword-hl: #fff8c5;--color-prettylights-syntax-comment: #6e7781;--color-prettylights-syntax-constant: #0550ae;--color-prettylights-syntax-entity: #8250df;--color-prettylights-syntax-storage-modifier-import: #24292f;--color-prettylights-syntax-entity-tag: #116329;--color-prettylights-syntax-keyword: #cf222e;--color-prettylights-syntax-string: #0a3069;--color-prettylights-syntax-variable: #953800;--color-prettylights-syntax-brackethighlighter-unmatched: #82071e;--color-prettylights-syntax-invalid-illegal-text: #f6f8fa;--color-prettylights-syntax-invalid-illegal-bg: #82071e;--color-prettylights-syntax-carriage-return-text: #f6f8fa;--color-prettylights-syntax-carriage-return-bg: #cf222e;--color-prettylights-syntax-string-regexp: #116329;--color-prettylights-syntax-markup-list: #3b2300;--color-prettylights-syntax-markup-heading: #0550ae;--color-prettylights-syntax-markup-italic: #24292f;--color-prettylights-syntax-markup-bold: #24292f;--color-prettylights-syntax-markup-deleted-text: #82071e;--color-prettylights-syntax-markup-deleted-bg: #FFEBE9;--color-prettylights-syntax-markup-inserted-text: #116329;--color-prettylights-syntax-markup-inserted-bg: #dafbe1;--color-prettylights-syntax-markup-changed-text: #953800;--color-prettylights-syntax-markup-changed-bg: #ffd8b5;--color-prettylights-syntax-markup-ignored-text: #eaeef2;--color-prettylights-syntax-markup-ignored-bg: #0550ae;--color-prettylights-syntax-meta-diff-range: #8250df;--color-prettylights-syntax-brackethighlighter-angle: #57606a;--color-prettylights-syntax-sublimelinter-gutter-mark: #8c959f;--color-prettylights-syntax-constant-other-reference-link: #0a3069;--color-codemirror-text: #24292f;--color-codemirror-bg: #ffffff;--color-codemirror-gutters-bg: #ffffff;--color-codemirror-guttermarker-text: #ffffff;--color-codemirror-guttermarker-subtle-text: #6e7781;--color-codemirror-linenumber-text: #57606a;--color-codemirror-cursor: #24292f;--color-codemirror-selection-bg: rgba(84,174,255,.4);--color-codemirror-activeline-bg: rgba(234,238,242,.5);--color-codemirror-matchingbracket-text: #24292f;--color-codemirror-lines-bg: #ffffff;--color-codemirror-syntax-comment: #24292f;--color-codemirror-syntax-constant: #0550ae;--color-codemirror-syntax-entity: #8250df;--color-codemirror-syntax-keyword: #cf222e;--color-codemirror-syntax-storage: #cf222e;--color-codemirror-syntax-string: #0a3069;--color-codemirror-syntax-support: #0550ae;--color-codemirror-syntax-variable: #953800;--color-checks-bg: #24292f;--color-checks-run-border-width: 0px;--color-checks-container-border-width: 0px;--color-checks-text-primary: #f6f8fa;--color-checks-text-secondary: #8c959f;--color-checks-text-link: #54aeff;--color-checks-btn-icon: #afb8c1;--color-checks-btn-hover-icon: #f6f8fa;--color-checks-btn-hover-bg: rgba(255,255,255,.125);--color-checks-input-text: #eaeef2;--color-checks-input-placeholder-text: #8c959f;--color-checks-input-focus-text: #8c959f;--color-checks-input-bg: #32383f;--color-checks-input-shadow: none;--color-checks-donut-error: #fa4549;--color-checks-donut-pending: #bf8700;--color-checks-donut-success: #2da44e;--color-checks-donut-neutral: #afb8c1;--color-checks-dropdown-text: #afb8c1;--color-checks-dropdown-bg: #32383f;--color-checks-dropdown-border: #424a53;--color-checks-dropdown-shadow: rgba(27,31,36,.3);--color-checks-dropdown-hover-text: #f6f8fa;--color-checks-dropdown-hover-bg: #424a53;--color-checks-dropdown-btn-hover-text: #f6f8fa;--color-checks-dropdown-btn-hover-bg: #32383f;--color-checks-scrollbar-thumb-bg: #57606a;--color-checks-header-label-text: #d0d7de;--color-checks-header-label-open-text: #f6f8fa;--color-checks-header-border: #32383f;--color-checks-header-icon: #8c959f;--color-checks-line-text: #d0d7de;--color-checks-line-num-text: rgba(140,149,159,.75);--color-checks-line-timestamp-text: #8c959f;--color-checks-line-hover-bg: #32383f;--color-checks-line-selected-bg: rgba(33,139,255,.15);--color-checks-line-selected-num-text: #54aeff;--color-checks-line-dt-fm-text: #24292f;--color-checks-line-dt-fm-bg: #9a6700;--color-checks-gate-bg: rgba(1Line truncated
</style>
</head>
<body>
<div id='root'></div>
</body>
</html>
<script>
window.playwrightReportBase64 = "data:application/zip;base64,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 truncated
+44
View File
@@ -0,0 +1,44 @@
import { defineConfig, devices } from '@playwright/test';
// Use environment variables for base URLs, with fallbacks for local dev vs docker
const STUDIO_URL = process.env.STUDIO_URL || 'http://studio:3000';
const EXPERIENCE_URL = process.env.EXPERIENCE_URL || 'http://experience:3003';
export default defineConfig({
testDir: './tests',
fullyParallel: true,
forbidOnly: !!process.env.CI,
retries: process.env.CI ? 2 : 0,
workers: process.env.CI ? 1 : undefined,
reporter: 'html',
use: {
trace: 'on-first-retry',
screenshot: 'only-on-failure',
video: 'retain-on-failure',
},
projects: [
{
name: 'setup',
testMatch: /global\.setup\.ts/,
},
{
name: 'studio',
use: {
...devices['Desktop Chrome'],
baseURL: STUDIO_URL,
},
testMatch: /.*instructor.*\.spec\.ts/,
dependencies: ['setup'],
},
{
name: 'experience',
use: {
...devices['Desktop Chrome'],
baseURL: EXPERIENCE_URL,
},
testMatch: /.*student.*\.spec\.ts/,
dependencies: ['setup'],
},
],
});
+8
View File
@@ -0,0 +1,8 @@
import { test as setup } from '@playwright/test';
setup('check services are up', async ({ request }) => {
// We could ping health endpoints here
// const studio = await request.get('http://studio:3000');
// expect(studio.ok()).toBeTruthy();
console.log('Setup complete - proceeding to tests');
});
+49
View File
@@ -0,0 +1,49 @@
import { test, expect } from '@playwright/test';
test.describe('Instructor Flow', () => {
test('should login, create course, add content, and publish', async ({ page }) => {
const email = `instructor_${Date.now()}@test.com`;
// 0. Register (since DB might be empty)
await page.goto('/auth/register');
await page.fill('[placeholder="Instructor Name"]', 'E2E Instructor');
await page.fill('[placeholder="instructor@openccb.com"]', email); // or input[type="email"]
await page.fill('[placeholder="••••••••"]', 'password123'); // or input[type="password"]
await page.click('button[type="submit"]');
// Wait for navigation - Register automatically logs in and redirects to /
// Increase timeout for cold starts in CI/Docker
await expect(page).toHaveURL('/', { timeout: 15000 });
// Verify dashboard loaded
await expect(page.locator('h2')).toContainText('My Courses', { timeout: 10000 });
// 2. Create Course
// Usamos manejador de dialogo para el prompt
const courseName = 'Playwright E2E Course ' + Date.now();
page.on('dialog', dialog => dialog.accept(courseName));
await page.click('button:has-text("New Course")');
// Esperar a que aparezca el nuevo curso y hacer clic
await page.waitForTimeout(1000); // Wait for API
await page.click('text=Playwright E2E Course');
// 3. Add Module
await page.click('button:has-text("Add Module")');
await page.fill('[placeholder="Module Title"]', 'Module 1: Basics');
await page.click('button:has-text("Create Module")');
// 4. Add Lesson
await page.click('button:has-text("Add Lesson")');
await page.fill('[placeholder="Lesson Title"]', 'Intro Lesson');
// Select video type (assuming it's default or select dropdown)
await page.click('button:has-text("Create Lesson")');
// 5. Publish
await page.click('button:has-text("Publish Course")');
// Confirm publish
// Assuming there is a confirmation or toast
// await expect(page.locator('text=Published successfully')).toBeVisible();
});
});
+33
View File
@@ -0,0 +1,33 @@
import { test, expect } from '@playwright/test';
test.describe('Student Flow', () => {
test('should login and view catalog', async ({ page }) => {
// 1. Register/Login
// For simplicity, we assume registration or reuse existing
await page.goto('/auth/login');
// Register link?
// await page.click('text=Sign up');
// ... fill registration ...
// OR just login if we seed the DB.
// For E2E on fresh DB, we might need to register first.
// Let's try to register a new user every time to be safe
// Let's try to register a new user every time to be safe
const email = `student_${Date.now()}@test.com`;
await page.goto('/auth/register');
await page.fill('[placeholder="John Doe"]', 'Test Student');
await page.fill('[placeholder="name@company.com"]', email);
await page.fill('[placeholder="••••••••"]', 'password123');
await page.click('button[type="submit"]');
// Should redirect to dashboard/catalog
await expect(page).toHaveURL('/', { timeout: 15000 });
await expect(page.locator('h1')).toContainText('Available Courses', { timeout: 10000 });
// Check if the course from instructor flow is visible (might need refresh)
await page.reload();
// await expect(page.locator('text=Playwright E2E Course')).toBeVisible();
});
});