diff --git a/Cargo.toml b/Cargo.toml index 3340933..4ac75b7 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -1,4 +1,5 @@ [workspace] +resolver = "2" members = [ "crates/librqbit", "crates/rqbit", diff --git a/crates/bencode/Cargo.toml b/crates/bencode/Cargo.toml index dc3bd3f..00366a4 100644 --- a/crates/bencode/Cargo.toml +++ b/crates/bencode/Cargo.toml @@ -1,7 +1,7 @@ [package] name = "librqbit-bencode" version = "2.2.1" -edition = "2018" +edition = "2021" description = "Bencode serialization and deserialization using Serde" license = "Apache-2.0" documentation = "https://docs.rs/librqbit-bencode" diff --git a/crates/buffers/Cargo.toml b/crates/buffers/Cargo.toml index 3f68b16..1a77fde 100644 --- a/crates/buffers/Cargo.toml +++ b/crates/buffers/Cargo.toml @@ -1,7 +1,7 @@ [package] name = "librqbit-buffers" version = "2.2.1" -edition = "2018" +edition = "2021" description = "Utils to work with &[u8] and Vec in librqbit source code." license = "Apache-2.0" documentation = "https://docs.rs/librqbit-buffers" diff --git a/crates/clone_to_owned/Cargo.toml b/crates/clone_to_owned/Cargo.toml index 3c89002..7af8c4b 100644 --- a/crates/clone_to_owned/Cargo.toml +++ b/crates/clone_to_owned/Cargo.toml @@ -1,7 +1,7 @@ [package] name = "librqbit-clone-to-owned" version = "2.2.1" -edition = "2018" +edition = "2021" description = "Util traits to represent something that can be made owned and change type at the same time." license = "Apache-2.0" documentation = "https://docs.rs/librqbit-clone-to-owned" diff --git a/crates/dht/Cargo.toml b/crates/dht/Cargo.toml index 3504526..fa69e28 100644 --- a/crates/dht/Cargo.toml +++ b/crates/dht/Cargo.toml @@ -1,7 +1,7 @@ [package] name = "librqbit-dht" version = "3.1.0" -edition = "2018" +edition = "2021" description = "DHT implementation, used in rqbit torrent client." license = "Apache-2.0" documentation = "https://docs.rs/librqbit-dht" diff --git a/crates/librqbit/Cargo.toml b/crates/librqbit/Cargo.toml index 6f92138..01beab9 100644 --- a/crates/librqbit/Cargo.toml +++ b/crates/librqbit/Cargo.toml @@ -2,7 +2,7 @@ name = "librqbit" version = "3.3.0" authors = ["Igor Katson "] -edition = "2018" +edition = "2021" description = "The main library used by rqbit torrent client. The binary is just a small wrapper on top of it." license = "Apache-2.0" documentation = "https://docs.rs/librqbit" diff --git a/crates/librqbit/webui/dist/app.js b/crates/librqbit/webui/dist/app.js index bf90c29..bb1abab 100644 --- a/crates/librqbit/webui/dist/app.js +++ b/crates/librqbit/webui/dist/app.js @@ -1,4 +1,4 @@ -(function(){const t=document.createElement("link").relList;if(t&&t.supports&&t.supports("modulepreload"))return;for(const l of document.querySelectorAll('link[rel="modulepreload"]'))r(l);new MutationObserver(l=>{for(const o of l)if(o.type==="childList")for(const i of o.addedNodes)i.tagName==="LINK"&&i.rel==="modulepreload"&&r(i)}).observe(document,{childList:!0,subtree:!0});function n(l){const o={};return l.integrity&&(o.integrity=l.integrity),l.referrerPolicy&&(o.referrerPolicy=l.referrerPolicy),l.crossOrigin==="use-credentials"?o.credentials="include":l.crossOrigin==="anonymous"?o.credentials="omit":o.credentials="same-origin",o}function r(l){if(l.ep)return;l.ep=!0;const o=n(l);fetch(l.href,o)}})();function Ul(e){return e&&e.__esModule&&Object.prototype.hasOwnProperty.call(e,"default")?e.default:e}var ma={exports:{}},Hl={},ha={exports:{}},F={};/** +(function(){const t=document.createElement("link").relList;if(t&&t.supports&&t.supports("modulepreload"))return;for(const l of document.querySelectorAll('link[rel="modulepreload"]'))r(l);new MutationObserver(l=>{for(const o of l)if(o.type==="childList")for(const i of o.addedNodes)i.tagName==="LINK"&&i.rel==="modulepreload"&&r(i)}).observe(document,{childList:!0,subtree:!0});function n(l){const o={};return l.integrity&&(o.integrity=l.integrity),l.referrerPolicy&&(o.referrerPolicy=l.referrerPolicy),l.crossOrigin==="use-credentials"?o.credentials="include":l.crossOrigin==="anonymous"?o.credentials="omit":o.credentials="same-origin",o}function r(l){if(l.ep)return;l.ep=!0;const o=n(l);fetch(l.href,o)}})();function Vl(e){return e&&e.__esModule&&Object.prototype.hasOwnProperty.call(e,"default")?e.default:e}var va={exports:{}},Ql={},ya={exports:{}},F={};/** * @license React * react.production.min.js * @@ -6,7 +6,7 @@ * * 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"),zd=Symbol.for("react.portal"),$d=Symbol.for("react.fragment"),Dd=Symbol.for("react.strict_mode"),Id=Symbol.for("react.profiler"),Bd=Symbol.for("react.provider"),Ad=Symbol.for("react.context"),Ud=Symbol.for("react.forward_ref"),Hd=Symbol.for("react.suspense"),Wd=Symbol.for("react.memo"),Vd=Symbol.for("react.lazy"),Ku=Symbol.iterator;function Qd(e){return e===null||typeof e!="object"?null:(e=Ku&&e[Ku]||e["@@iterator"],typeof e=="function"?e:null)}var va={isMounted:function(){return!1},enqueueForceUpdate:function(){},enqueueReplaceState:function(){},enqueueSetState:function(){}},ya=Object.assign,ga={};function zn(e,t,n){this.props=e,this.context=t,this.refs=ga,this.updater=n||va}zn.prototype.isReactComponent={};zn.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")};zn.prototype.forceUpdate=function(e){this.updater.enqueueForceUpdate(this,e,"forceUpdate")};function wa(){}wa.prototype=zn.prototype;function Vi(e,t,n){this.props=e,this.context=t,this.refs=ga,this.updater=n||va}var Qi=Vi.prototype=new wa;Qi.constructor=Vi;ya(Qi,zn.prototype);Qi.isPureReactComponent=!0;var Gu=Array.isArray,Sa=Object.prototype.hasOwnProperty,Ki={current:null},ka={key:!0,ref:!0,__self:!0,__source:!0};function Ea(e,t,n){var r,l={},o=null,i=null;if(t!=null)for(r in t.ref!==void 0&&(i=t.ref),t.key!==void 0&&(o=""+t.key),t)Sa.call(t,r)&&!ka.hasOwnProperty(r)&&(l[r]=t[r]);var u=arguments.length-2;if(u===1)l.children=n;else if(1>>1,B=x[D];if(0>>1;Dl(qe,O))jel(dt,qe)?(x[D]=dt,x[je]=O,D=je):(x[D]=qe,x[Re]=O,D=Re);else if(jel(dt,O))x[D]=dt,x[je]=O,D=je;else break e}}return L}function l(x,L){var O=x.sortIndex-L.sortIndex;return O!==0?O:x.id-L.id}if(typeof performance=="object"&&typeof performance.now=="function"){var o=performance;e.unstable_now=function(){return o.now()}}else{var i=Date,u=i.now();e.unstable_now=function(){return i.now()-u}}var s=[],a=[],m=1,h=null,d=3,g=!1,S=!1,E=!1,j=typeof setTimeout=="function"?setTimeout:null,f=typeof clearTimeout=="function"?clearTimeout:null,c=typeof setImmediate<"u"?setImmediate:null;typeof navigator<"u"&&navigator.scheduling!==void 0&&navigator.scheduling.isInputPending!==void 0&&navigator.scheduling.isInputPending.bind(navigator.scheduling);function p(x){for(var L=n(a);L!==null;){if(L.callback===null)r(a);else if(L.startTime<=x)r(a),L.sortIndex=L.expirationTime,t(s,L);else break;L=n(a)}}function w(x){if(E=!1,p(x),!S)if(n(s)!==null)S=!0,Te(C);else{var L=n(a);L!==null&&Ke(w,L.startTime-x)}}function C(x,L){S=!1,E&&(E=!1,f(R),R=-1),g=!0;var O=d;try{for(p(L),h=n(s);h!==null&&(!(h.expirationTime>L)||x&&!ie());){var D=h.callback;if(typeof D=="function"){h.callback=null,d=h.priorityLevel;var B=D(h.expirationTime<=L);L=e.unstable_now(),typeof B=="function"?h.callback=B:h===n(s)&&r(s),p(L)}else r(s);h=n(s)}if(h!==null)var fe=!0;else{var Re=n(a);Re!==null&&Ke(w,Re.startTime-L),fe=!1}return fe}finally{h=null,d=O,g=!1}}var _=!1,N=null,R=-1,A=5,P=-1;function ie(){return!(e.unstable_now()-Px||125D?(x.sortIndex=O,t(a,x),n(s)===null&&x===n(a)&&(E?(f(R),R=-1):E=!0,Ke(w,O-D))):(x.sortIndex=B,t(s,x),S||g||(S=!0,Te(C))),x},e.unstable_shouldYield=ie,e.unstable_wrapCallback=function(x){var L=d;return function(){var O=d;d=L;try{return x.apply(this,arguments)}finally{d=O}}}})(Na);_a.exports=Na;var np=_a.exports;/** + */(function(e){function t(x,j){var O=x.length;x.push(j);e:for(;0>>1,A=x[D];if(0>>1;Dl(qe,O))jel(dt,qe)?(x[D]=dt,x[je]=O,D=je):(x[D]=qe,x[Re]=O,D=Re);else if(jel(dt,O))x[D]=dt,x[je]=O,D=je;else break e}}return j}function l(x,j){var O=x.sortIndex-j.sortIndex;return O!==0?O:x.id-j.id}if(typeof performance=="object"&&typeof performance.now=="function"){var o=performance;e.unstable_now=function(){return o.now()}}else{var i=Date,u=i.now();e.unstable_now=function(){return i.now()-u}}var s=[],a=[],d=1,h=null,p=3,g=!1,S=!1,E=!1,L=typeof setTimeout=="function"?setTimeout:null,f=typeof clearTimeout=="function"?clearTimeout:null,c=typeof setImmediate<"u"?setImmediate:null;typeof navigator<"u"&&navigator.scheduling!==void 0&&navigator.scheduling.isInputPending!==void 0&&navigator.scheduling.isInputPending.bind(navigator.scheduling);function m(x){for(var j=n(a);j!==null;){if(j.callback===null)r(a);else if(j.startTime<=x)r(a),j.sortIndex=j.expirationTime,t(s,j);else break;j=n(a)}}function w(x){if(E=!1,m(x),!S)if(n(s)!==null)S=!0,_e(C);else{var j=n(a);j!==null&&Ke(w,j.startTime-x)}}function C(x,j){S=!1,E&&(E=!1,f(R),R=-1),g=!0;var O=p;try{for(m(j),h=n(s);h!==null&&(!(h.expirationTime>j)||x&&!ie());){var D=h.callback;if(typeof D=="function"){h.callback=null,p=h.priorityLevel;var A=D(h.expirationTime<=j);j=e.unstable_now(),typeof A=="function"?h.callback=A:h===n(s)&&r(s),m(j)}else r(s);h=n(s)}if(h!==null)var fe=!0;else{var Re=n(a);Re!==null&&Ke(w,Re.startTime-j),fe=!1}return fe}finally{h=null,p=O,g=!1}}var N=!1,T=null,R=-1,U=5,P=-1;function ie(){return!(e.unstable_now()-Px||125D?(x.sortIndex=O,t(a,x),n(s)===null&&x===n(a)&&(E?(f(R),R=-1):E=!0,Ke(w,O-D))):(x.sortIndex=A,t(s,x),S||g||(S=!0,_e(C))),x},e.unstable_shouldYield=ie,e.unstable_wrapCallback=function(x){var j=p;return function(){var O=p;p=j;try{return x.apply(this,arguments)}finally{p=O}}}})(Ra);_a.exports=Ra;var lp=_a.exports;/** * @license React * react-dom.production.min.js * @@ -30,15 +30,15 @@ * * This source code is licensed under the MIT license found in the * LICENSE file in the root directory of this source tree. - */var Ta=v,Ce=np;function k(e){for(var t="https://reactjs.org/docs/error-decoder.html?invariant="+e,n=1;n"u"||typeof window.document>"u"||typeof window.document.createElement>"u"),Ho=Object.prototype.hasOwnProperty,rp=/^[: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]*$/,Xu={},Zu={};function lp(e){return Ho.call(Zu,e)?!0:Ho.call(Xu,e)?!1:rp.test(e)?Zu[e]=!0:(Xu[e]=!0,!1)}function op(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 ip(e,t,n,r){if(t===null||typeof t>"u"||op(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 he(e,t,n,r,l,o,i){this.acceptsBooleans=t===2||t===3||t===4,this.attributeName=r,this.attributeNamespace=l,this.mustUseProperty=n,this.propertyName=e,this.type=t,this.sanitizeURL=o,this.removeEmptyString=i}var oe={};"children dangerouslySetInnerHTML defaultValue defaultChecked innerHTML suppressContentEditableWarning suppressHydrationWarning style".split(" ").forEach(function(e){oe[e]=new he(e,0,!1,e,null,!1,!1)});[["acceptCharset","accept-charset"],["className","class"],["htmlFor","for"],["httpEquiv","http-equiv"]].forEach(function(e){var t=e[0];oe[t]=new he(t,1,!1,e[1],null,!1,!1)});["contentEditable","draggable","spellCheck","value"].forEach(function(e){oe[e]=new he(e,2,!1,e.toLowerCase(),null,!1,!1)});["autoReverse","externalResourcesRequired","focusable","preserveAlpha"].forEach(function(e){oe[e]=new he(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){oe[e]=new he(e,3,!1,e.toLowerCase(),null,!1,!1)});["checked","multiple","muted","selected"].forEach(function(e){oe[e]=new he(e,3,!0,e,null,!1,!1)});["capture","download"].forEach(function(e){oe[e]=new he(e,4,!1,e,null,!1,!1)});["cols","rows","size","span"].forEach(function(e){oe[e]=new he(e,6,!1,e,null,!1,!1)});["rowSpan","start"].forEach(function(e){oe[e]=new he(e,5,!1,e.toLowerCase(),null,!1,!1)});var Yi=/[\-:]([a-z])/g;function Xi(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(Yi,Xi);oe[t]=new he(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(Yi,Xi);oe[t]=new he(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(Yi,Xi);oe[t]=new he(t,1,!1,e,"http://www.w3.org/XML/1998/namespace",!1,!1)});["tabIndex","crossOrigin"].forEach(function(e){oe[e]=new he(e,1,!1,e.toLowerCase(),null,!1,!1)});oe.xlinkHref=new he("xlinkHref",1,!1,"xlink:href","http://www.w3.org/1999/xlink",!0,!1);["src","href","action","formAction"].forEach(function(e){oe[e]=new he(e,1,!1,e.toLowerCase(),null,!0,!0)});function Zi(e,t,n,r){var l=oe.hasOwnProperty(t)?oe[t]:null;(l!==null?l.type!==0:r||!(2"u"||typeof window.document>"u"||typeof window.document.createElement>"u"),Ko=Object.prototype.hasOwnProperty,op=/^[: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]*$/,Ju={},qu={};function ip(e){return Ko.call(qu,e)?!0:Ko.call(Ju,e)?!1:op.test(e)?qu[e]=!0:(Ju[e]=!0,!1)}function up(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 sp(e,t,n,r){if(t===null||typeof t>"u"||up(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 he(e,t,n,r,l,o,i){this.acceptsBooleans=t===2||t===3||t===4,this.attributeName=r,this.attributeNamespace=l,this.mustUseProperty=n,this.propertyName=e,this.type=t,this.sanitizeURL=o,this.removeEmptyString=i}var oe={};"children dangerouslySetInnerHTML defaultValue defaultChecked innerHTML suppressContentEditableWarning suppressHydrationWarning style".split(" ").forEach(function(e){oe[e]=new he(e,0,!1,e,null,!1,!1)});[["acceptCharset","accept-charset"],["className","class"],["htmlFor","for"],["httpEquiv","http-equiv"]].forEach(function(e){var t=e[0];oe[t]=new he(t,1,!1,e[1],null,!1,!1)});["contentEditable","draggable","spellCheck","value"].forEach(function(e){oe[e]=new he(e,2,!1,e.toLowerCase(),null,!1,!1)});["autoReverse","externalResourcesRequired","focusable","preserveAlpha"].forEach(function(e){oe[e]=new he(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){oe[e]=new he(e,3,!1,e.toLowerCase(),null,!1,!1)});["checked","multiple","muted","selected"].forEach(function(e){oe[e]=new he(e,3,!0,e,null,!1,!1)});["capture","download"].forEach(function(e){oe[e]=new he(e,4,!1,e,null,!1,!1)});["cols","rows","size","span"].forEach(function(e){oe[e]=new he(e,6,!1,e,null,!1,!1)});["rowSpan","start"].forEach(function(e){oe[e]=new he(e,5,!1,e.toLowerCase(),null,!1,!1)});var Zi=/[\-:]([a-z])/g;function Ji(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(Zi,Ji);oe[t]=new he(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(Zi,Ji);oe[t]=new he(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(Zi,Ji);oe[t]=new he(t,1,!1,e,"http://www.w3.org/XML/1998/namespace",!1,!1)});["tabIndex","crossOrigin"].forEach(function(e){oe[e]=new he(e,1,!1,e.toLowerCase(),null,!1,!1)});oe.xlinkHref=new he("xlinkHref",1,!1,"xlink:href","http://www.w3.org/1999/xlink",!0,!1);["src","href","action","formAction"].forEach(function(e){oe[e]=new he(e,1,!1,e.toLowerCase(),null,!0,!0)});function qi(e,t,n,r){var l=oe.hasOwnProperty(t)?oe[t]:null;(l!==null?l.type!==0:r||!(2u||l[i]!==o[u]){var s=` -`+l[i].replace(" at new "," at ");return e.displayName&&s.includes("")&&(s=s.replace("",e.displayName)),s}while(1<=i&&0<=u);break}}}finally{co=!1,Error.prepareStackTrace=n}return(e=e?e.displayName||e.name:"")?qn(e):""}function up(e){switch(e.tag){case 5:return qn(e.type);case 16:return qn("Lazy");case 13:return qn("Suspense");case 19:return qn("SuspenseList");case 0:case 2:case 15:return e=fo(e.type,!1),e;case 11:return e=fo(e.type.render,!1),e;case 1:return e=fo(e.type,!0),e;default:return""}}function Ko(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 cn:return"Fragment";case an:return"Portal";case Wo:return"Profiler";case Ji:return"StrictMode";case Vo:return"Suspense";case Qo:return"SuspenseList"}if(typeof e=="object")switch(e.$$typeof){case La:return(e.displayName||"Context")+".Consumer";case ja:return(e._context.displayName||"Context")+".Provider";case qi:var t=e.render;return e=e.displayName,e||(e=t.displayName||t.name||"",e=e!==""?"ForwardRef("+e+")":"ForwardRef"),e;case bi:return t=e.displayName||null,t!==null?t:Ko(e.type)||"Memo";case mt:t=e._payload,e=e._init;try{return Ko(e(t))}catch{}}return null}function sp(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 Ko(t);case 8:return t===Ji?"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 jt(e){switch(typeof e){case"boolean":case"number":case"string":case"undefined":return e;case"object":return e;default:return""}}function Pa(e){var t=e.type;return(e=e.nodeName)&&e.toLowerCase()==="input"&&(t==="checkbox"||t==="radio")}function ap(e){var t=Pa(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 l=n.get,o=n.set;return Object.defineProperty(e,t,{configurable:!0,get:function(){return l.call(this)},set:function(i){r=""+i,o.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 Br(e){e._valueTracker||(e._valueTracker=ap(e))}function Fa(e){if(!e)return!1;var t=e._valueTracker;if(!t)return!0;var n=t.getValue(),r="";return e&&(r=Pa(e)?e.checked?"true":"false":e.value),e=r,e!==n?(t.setValue(e),!0):!1}function ml(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 Go(e,t){var n=t.checked;return X({},t,{defaultChecked:void 0,defaultValue:void 0,value:void 0,checked:n??e._wrapperState.initialChecked})}function qu(e,t){var n=t.defaultValue==null?"":t.defaultValue,r=t.checked!=null?t.checked:t.defaultChecked;n=jt(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 Ma(e,t){t=t.checked,t!=null&&Zi(e,"checked",t,!1)}function Yo(e,t){Ma(e,t);var n=jt(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")?Xo(e,t.type,n):t.hasOwnProperty("defaultValue")&&Xo(e,t.type,jt(t.defaultValue)),t.checked==null&&t.defaultChecked!=null&&(e.defaultChecked=!!t.defaultChecked)}function bu(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 Xo(e,t,n){(t!=="number"||ml(e.ownerDocument)!==e)&&(n==null?e.defaultValue=""+e._wrapperState.initialValue:e.defaultValue!==""+n&&(e.defaultValue=""+n))}var bn=Array.isArray;function En(e,t,n,r){if(e=e.options,t){t={};for(var l=0;l"+t.valueOf().toString()+"",t=Ar.firstChild;e.firstChild;)e.removeChild(e.firstChild);for(;t.firstChild;)e.appendChild(t.firstChild)}});function pr(e,t){if(t){var n=e.firstChild;if(n&&n===e.lastChild&&n.nodeType===3){n.nodeValue=t;return}}e.textContent=t}var rr={animationIterationCount:!0,aspectRatio:!0,borderImageOutset:!0,borderImageSlice:!0,borderImageWidth:!0,boxFlex:!0,boxFlexGroup:!0,boxOrdinalGroup:!0,columnCount:!0,columns:!0,flex:!0,flexGrow:!0,flexPositive:!0,flexShrink:!0,flexNegative:!0,flexOrder:!0,gridArea:!0,gridRow:!0,gridRowEnd:!0,gridRowSpan:!0,gridRowStart:!0,gridColumn:!0,gridColumnEnd:!0,gridColumnSpan:!0,gridColumnStart:!0,fontWeight:!0,lineClamp:!0,lineHeight:!0,opacity:!0,order:!0,orphans:!0,tabSize:!0,widows:!0,zIndex:!0,zoom:!0,fillOpacity:!0,floodOpacity:!0,stopOpacity:!0,strokeDasharray:!0,strokeDashoffset:!0,strokeMiterlimit:!0,strokeOpacity:!0,strokeWidth:!0},cp=["Webkit","ms","Moz","O"];Object.keys(rr).forEach(function(e){cp.forEach(function(t){t=t+e.charAt(0).toUpperCase()+e.substring(1),rr[t]=rr[e]})});function Ia(e,t,n){return t==null||typeof t=="boolean"||t===""?"":n||typeof t!="number"||t===0||rr.hasOwnProperty(e)&&rr[e]?(""+t).trim():t+"px"}function Ba(e,t){e=e.style;for(var n in t)if(t.hasOwnProperty(n)){var r=n.indexOf("--")===0,l=Ia(n,t[n],r);n==="float"&&(n="cssFloat"),r?e.setProperty(n,l):e[n]=l}}var fp=X({menuitem:!0},{area:!0,base:!0,br:!0,col:!0,embed:!0,hr:!0,img:!0,input:!0,keygen:!0,link:!0,meta:!0,param:!0,source:!0,track:!0,wbr:!0});function qo(e,t){if(t){if(fp[e]&&(t.children!=null||t.dangerouslySetInnerHTML!=null))throw Error(k(137,e));if(t.dangerouslySetInnerHTML!=null){if(t.children!=null)throw Error(k(60));if(typeof t.dangerouslySetInnerHTML!="object"||!("__html"in t.dangerouslySetInnerHTML))throw Error(k(61))}if(t.style!=null&&typeof t.style!="object")throw Error(k(62))}}function bo(e,t){if(e.indexOf("-")===-1)return typeof t.is=="string";switch(e){case"annotation-xml":case"color-profile":case"font-face":case"font-face-src":case"font-face-uri":case"font-face-format":case"font-face-name":case"missing-glyph":return!1;default:return!0}}var ei=null;function eu(e){return e=e.target||e.srcElement||window,e.correspondingUseElement&&(e=e.correspondingUseElement),e.nodeType===3?e.parentNode:e}var ti=null,xn=null,Cn=null;function ns(e){if(e=Pr(e)){if(typeof ti!="function")throw Error(k(280));var t=e.stateNode;t&&(t=Gl(t),ti(e.stateNode,e.type,t))}}function Aa(e){xn?Cn?Cn.push(e):Cn=[e]:xn=e}function Ua(){if(xn){var e=xn,t=Cn;if(Cn=xn=null,ns(e),t)for(e=0;e>>=0,e===0?32:31-(Ep(e)/xp|0)|0}var Ur=64,Hr=4194304;function er(e){switch(e&-e){case 1:return 1;case 2:return 2;case 4:return 4;case 8:return 8;case 16:return 16;case 32:return 32;case 64:case 128:case 256:case 512:case 1024:case 2048:case 4096:case 8192:case 16384:case 32768:case 65536:case 131072:case 262144:case 524288:case 1048576:case 2097152:return e&4194240;case 4194304:case 8388608:case 16777216:case 33554432:case 67108864:return e&130023424;case 134217728:return 134217728;case 268435456:return 268435456;case 536870912:return 536870912;case 1073741824:return 1073741824;default:return e}}function gl(e,t){var n=e.pendingLanes;if(n===0)return 0;var r=0,l=e.suspendedLanes,o=e.pingedLanes,i=n&268435455;if(i!==0){var u=i&~l;u!==0?r=er(u):(o&=i,o!==0&&(r=er(o)))}else i=n&~l,i!==0?r=er(i):o!==0&&(r=er(o));if(r===0)return 0;if(t!==0&&t!==r&&!(t&l)&&(l=r&-r,o=t&-t,l>=o||l===16&&(o&4194240)!==0))return t;if(r&4&&(r|=n&16),t=e.entangledLanes,t!==0)for(e=e.entanglements,t&=r;0n;n++)t.push(e);return t}function Lr(e,t,n){e.pendingLanes|=t,t!==536870912&&(e.suspendedLanes=0,e.pingedLanes=0),e=e.eventTimes,t=31-Ue(t),e[t]=n}function Tp(e,t){var n=e.pendingLanes&~t;e.pendingLanes=t,e.suspendedLanes=0,e.pingedLanes=0,e.expiredLanes&=t,e.mutableReadLanes&=t,e.entangledLanes&=t,t=e.entanglements;var r=e.eventTimes;for(e=e.expirationTimes;0=or),fs=String.fromCharCode(32),ds=!1;function uc(e,t){switch(e){case"keyup":return tm.indexOf(t.keyCode)!==-1;case"keydown":return t.keyCode!==229;case"keypress":case"mousedown":case"focusout":return!0;default:return!1}}function sc(e){return e=e.detail,typeof e=="object"&&"data"in e?e.data:null}var fn=!1;function rm(e,t){switch(e){case"compositionend":return sc(t);case"keypress":return t.which!==32?null:(ds=!0,fs);case"textInput":return e=t.data,e===fs&&ds?null:e;default:return null}}function lm(e,t){if(fn)return e==="compositionend"||!su&&uc(e,t)?(e=oc(),ol=ou=wt=null,fn=!1,e):null;switch(e){case"paste":return null;case"keypress":if(!(t.ctrlKey||t.altKey||t.metaKey)||t.ctrlKey&&t.altKey){if(t.char&&1=t)return{node:n,offset:t-e};e=r}e:{for(;n;){if(n.nextSibling){n=n.nextSibling;break e}n=n.parentNode}n=void 0}n=vs(n)}}function dc(e,t){return e&&t?e===t?!0:e&&e.nodeType===3?!1:t&&t.nodeType===3?dc(e,t.parentNode):"contains"in e?e.contains(t):e.compareDocumentPosition?!!(e.compareDocumentPosition(t)&16):!1:!1}function pc(){for(var e=window,t=ml();t instanceof e.HTMLIFrameElement;){try{var n=typeof t.contentWindow.location.href=="string"}catch{n=!1}if(n)e=t.contentWindow;else break;t=ml(e.document)}return t}function au(e){var t=e&&e.nodeName&&e.nodeName.toLowerCase();return t&&(t==="input"&&(e.type==="text"||e.type==="search"||e.type==="tel"||e.type==="url"||e.type==="password")||t==="textarea"||e.contentEditable==="true")}function pm(e){var t=pc(),n=e.focusedElem,r=e.selectionRange;if(t!==n&&n&&n.ownerDocument&&dc(n.ownerDocument.documentElement,n)){if(r!==null&&au(n)){if(t=r.start,e=r.end,e===void 0&&(e=t),"selectionStart"in n)n.selectionStart=t,n.selectionEnd=Math.min(e,n.value.length);else if(e=(t=n.ownerDocument||document)&&t.defaultView||window,e.getSelection){e=e.getSelection();var l=n.textContent.length,o=Math.min(r.start,l);r=r.end===void 0?o:Math.min(r.end,l),!e.extend&&o>r&&(l=r,r=o,o=l),l=ys(n,o);var i=ys(n,r);l&&i&&(e.rangeCount!==1||e.anchorNode!==l.node||e.anchorOffset!==l.offset||e.focusNode!==i.node||e.focusOffset!==i.offset)&&(t=t.createRange(),t.setStart(l.node,l.offset),e.removeAllRanges(),o>r?(e.addRange(t),e.extend(i.node,i.offset)):(t.setEnd(i.node,i.offset),e.addRange(t)))}}for(t=[],e=n;e=e.parentNode;)e.nodeType===1&&t.push({element:e,left:e.scrollLeft,top:e.scrollTop});for(typeof n.focus=="function"&&n.focus(),n=0;n=document.documentMode,dn=null,ui=null,ur=null,si=!1;function gs(e,t,n){var r=n.window===n?n.document:n.nodeType===9?n:n.ownerDocument;si||dn==null||dn!==ml(r)||(r=dn,"selectionStart"in r&&au(r)?r={start:r.selectionStart,end:r.selectionEnd}:(r=(r.ownerDocument&&r.ownerDocument.defaultView||window).getSelection(),r={anchorNode:r.anchorNode,anchorOffset:r.anchorOffset,focusNode:r.focusNode,focusOffset:r.focusOffset}),ur&&wr(ur,r)||(ur=r,r=kl(ui,"onSelect"),0hn||(e.current=mi[hn],mi[hn]=null,hn--)}function U(e,t){hn++,mi[hn]=e.current,e.current=t}var Lt={},ce=Pt(Lt),ge=Pt(!1),Kt=Lt;function jn(e,t){var n=e.type.contextTypes;if(!n)return Lt;var r=e.stateNode;if(r&&r.__reactInternalMemoizedUnmaskedChildContext===t)return r.__reactInternalMemoizedMaskedChildContext;var l={},o;for(o in n)l[o]=t[o];return r&&(e=e.stateNode,e.__reactInternalMemoizedUnmaskedChildContext=t,e.__reactInternalMemoizedMaskedChildContext=l),l}function we(e){return e=e.childContextTypes,e!=null}function xl(){V(ge),V(ce)}function _s(e,t,n){if(ce.current!==Lt)throw Error(k(168));U(ce,t),U(ge,n)}function Ec(e,t,n){var r=e.stateNode;if(t=t.childContextTypes,typeof r.getChildContext!="function")return n;r=r.getChildContext();for(var l in r)if(!(l in t))throw Error(k(108,sp(e)||"Unknown",l));return X({},n,r)}function Cl(e){return e=(e=e.stateNode)&&e.__reactInternalMemoizedMergedChildContext||Lt,Kt=ce.current,U(ce,e),U(ge,ge.current),!0}function Ns(e,t,n){var r=e.stateNode;if(!r)throw Error(k(169));n?(e=Ec(e,t,Kt),r.__reactInternalMemoizedMergedChildContext=e,V(ge),V(ce),U(ce,e)):V(ge),U(ge,n)}var et=null,Yl=!1,No=!1;function xc(e){et===null?et=[e]:et.push(e)}function _m(e){Yl=!0,xc(e)}function Ft(){if(!No&&et!==null){No=!0;var e=0,t=I;try{var n=et;for(I=1;e>=i,l-=i,tt=1<<32-Ue(t)+l|n<R?(A=N,N=null):A=N.sibling;var P=d(f,N,p[R],w);if(P===null){N===null&&(N=A);break}e&&N&&P.alternate===null&&t(f,N),c=o(P,c,R),_===null?C=P:_.sibling=P,_=P,N=A}if(R===p.length)return n(f,N),Q&&zt(f,R),C;if(N===null){for(;RR?(A=N,N=null):A=N.sibling;var ie=d(f,N,P.value,w);if(ie===null){N===null&&(N=A);break}e&&N&&ie.alternate===null&&t(f,N),c=o(ie,c,R),_===null?C=ie:_.sibling=ie,_=ie,N=A}if(P.done)return n(f,N),Q&&zt(f,R),C;if(N===null){for(;!P.done;R++,P=p.next())P=h(f,P.value,w),P!==null&&(c=o(P,c,R),_===null?C=P:_.sibling=P,_=P);return Q&&zt(f,R),C}for(N=r(f,N);!P.done;R++,P=p.next())P=g(N,f,R,P.value,w),P!==null&&(e&&P.alternate!==null&&N.delete(P.key===null?R:P.key),c=o(P,c,R),_===null?C=P:_.sibling=P,_=P);return e&&N.forEach(function(Ve){return t(f,Ve)}),Q&&zt(f,R),C}function j(f,c,p,w){if(typeof p=="object"&&p!==null&&p.type===cn&&p.key===null&&(p=p.props.children),typeof p=="object"&&p!==null){switch(p.$$typeof){case Ir:e:{for(var C=p.key,_=c;_!==null;){if(_.key===C){if(C=p.type,C===cn){if(_.tag===7){n(f,_.sibling),c=l(_,p.props.children),c.return=f,f=c;break e}}else if(_.elementType===C||typeof C=="object"&&C!==null&&C.$$typeof===mt&&Fs(C)===_.type){n(f,_.sibling),c=l(_,p.props),c.ref=Yn(f,_,p),c.return=f,f=c;break e}n(f,_);break}else t(f,_);_=_.sibling}p.type===cn?(c=Vt(p.props.children,f.mode,w,p.key),c.return=f,f=c):(w=pl(p.type,p.key,p.props,null,f.mode,w),w.ref=Yn(f,c,p),w.return=f,f=w)}return i(f);case an:e:{for(_=p.key;c!==null;){if(c.key===_)if(c.tag===4&&c.stateNode.containerInfo===p.containerInfo&&c.stateNode.implementation===p.implementation){n(f,c.sibling),c=l(c,p.children||[]),c.return=f,f=c;break e}else{n(f,c);break}else t(f,c);c=c.sibling}c=Mo(p,f.mode,w),c.return=f,f=c}return i(f);case mt:return _=p._init,j(f,c,_(p._payload),w)}if(bn(p))return S(f,c,p,w);if(Wn(p))return E(f,c,p,w);Xr(f,p)}return typeof p=="string"&&p!==""||typeof p=="number"?(p=""+p,c!==null&&c.tag===6?(n(f,c.sibling),c=l(c,p),c.return=f,f=c):(n(f,c),c=Fo(p,f.mode,w),c.return=f,f=c),i(f)):n(f,c)}return j}var On=Oc(!0),Pc=Oc(!1),Fr={},Je=Pt(Fr),xr=Pt(Fr),Cr=Pt(Fr);function Ht(e){if(e===Fr)throw Error(k(174));return e}function gu(e,t){switch(U(Cr,t),U(xr,e),U(Je,Fr),e=t.nodeType,e){case 9:case 11:t=(t=t.documentElement)?t.namespaceURI:Jo(null,"");break;default:e=e===8?t.parentNode:t,t=e.namespaceURI||null,e=e.tagName,t=Jo(t,e)}V(Je),U(Je,t)}function Pn(){V(Je),V(xr),V(Cr)}function Fc(e){Ht(Cr.current);var t=Ht(Je.current),n=Jo(t,e.type);t!==n&&(U(xr,e),U(Je,n))}function wu(e){xr.current===e&&(V(Je),V(xr))}var G=Pt(0);function Ll(e){for(var t=e;t!==null;){if(t.tag===13){var n=t.memoizedState;if(n!==null&&(n=n.dehydrated,n===null||n.data==="$?"||n.data==="$!"))return t}else if(t.tag===19&&t.memoizedProps.revealOrder!==void 0){if(t.flags&128)return t}else if(t.child!==null){t.child.return=t,t=t.child;continue}if(t===e)break;for(;t.sibling===null;){if(t.return===null||t.return===e)return null;t=t.return}t.sibling.return=t.return,t=t.sibling}return null}var To=[];function Su(){for(var e=0;en?n:4,e(!0);var r=Ro.transition;Ro.transition={};try{e(!1),t()}finally{I=n,Ro.transition=r}}function Xc(){return $e().memoizedState}function jm(e,t,n){var r=Tt(e);if(n={lane:r,action:n,hasEagerState:!1,eagerState:null,next:null},Zc(e))Jc(t,n);else if(n=Tc(e,t,n,r),n!==null){var l=pe();He(n,e,r,l),qc(n,t,r)}}function Lm(e,t,n){var r=Tt(e),l={lane:r,action:n,hasEagerState:!1,eagerState:null,next:null};if(Zc(e))Jc(t,l);else{var o=e.alternate;if(e.lanes===0&&(o===null||o.lanes===0)&&(o=t.lastRenderedReducer,o!==null))try{var i=t.lastRenderedState,u=o(i,n);if(l.hasEagerState=!0,l.eagerState=u,We(u,i)){var s=t.interleaved;s===null?(l.next=l,vu(t)):(l.next=s.next,s.next=l),t.interleaved=l;return}}catch{}finally{}n=Tc(e,t,l,r),n!==null&&(l=pe(),He(n,e,r,l),qc(n,t,r))}}function Zc(e){var t=e.alternate;return e===Y||t!==null&&t===Y}function Jc(e,t){sr=Ol=!0;var n=e.pending;n===null?t.next=t:(t.next=n.next,n.next=t),e.pending=t}function qc(e,t,n){if(n&4194240){var r=t.lanes;r&=e.pendingLanes,n|=r,t.lanes=n,nu(e,n)}}var Pl={readContext:ze,useCallback:ue,useContext:ue,useEffect:ue,useImperativeHandle:ue,useInsertionEffect:ue,useLayoutEffect:ue,useMemo:ue,useReducer:ue,useRef:ue,useState:ue,useDebugValue:ue,useDeferredValue:ue,useTransition:ue,useMutableSource:ue,useSyncExternalStore:ue,useId:ue,unstable_isNewReconciler:!1},Om={readContext:ze,useCallback:function(e,t){return Ye().memoizedState=[e,t===void 0?null:t],e},useContext:ze,useEffect:zs,useImperativeHandle:function(e,t,n){return n=n!=null?n.concat([e]):null,al(4194308,4,Vc.bind(null,t,e),n)},useLayoutEffect:function(e,t){return al(4194308,4,e,t)},useInsertionEffect:function(e,t){return al(4,2,e,t)},useMemo:function(e,t){var n=Ye();return t=t===void 0?null:t,e=e(),n.memoizedState=[e,t],e},useReducer:function(e,t,n){var r=Ye();return t=n!==void 0?n(t):t,r.memoizedState=r.baseState=t,e={pending:null,interleaved:null,lanes:0,dispatch:null,lastRenderedReducer:e,lastRenderedState:t},r.queue=e,e=e.dispatch=jm.bind(null,Y,e),[r.memoizedState,e]},useRef:function(e){var t=Ye();return e={current:e},t.memoizedState=e},useState:Ms,useDebugValue:_u,useDeferredValue:function(e){return Ye().memoizedState=e},useTransition:function(){var e=Ms(!1),t=e[0];return e=Rm.bind(null,e[1]),Ye().memoizedState=e,[t,e]},useMutableSource:function(){},useSyncExternalStore:function(e,t,n){var r=Y,l=Ye();if(Q){if(n===void 0)throw Error(k(407));n=n()}else{if(n=t(),ne===null)throw Error(k(349));Yt&30||$c(r,t,n)}l.memoizedState=n;var o={value:n,getSnapshot:t};return l.queue=o,zs(Ic.bind(null,r,o,e),[e]),r.flags|=2048,Tr(9,Dc.bind(null,r,o,n,t),void 0,null),n},useId:function(){var e=Ye(),t=ne.identifierPrefix;if(Q){var n=nt,r=tt;n=(r&~(1<<32-Ue(r)-1)).toString(32)+n,t=":"+t+"R"+n,n=_r++,0")&&(s=s.replace("",e.displayName)),s}while(1<=i&&0<=u);break}}}finally{ho=!1,Error.prepareStackTrace=n}return(e=e?e.displayName||e.name:"")?qn(e):""}function ap(e){switch(e.tag){case 5:return qn(e.type);case 16:return qn("Lazy");case 13:return qn("Suspense");case 19:return qn("SuspenseList");case 0:case 2:case 15:return e=vo(e.type,!1),e;case 11:return e=vo(e.type.render,!1),e;case 1:return e=vo(e.type,!0),e;default:return""}}function Zo(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 cn:return"Fragment";case an:return"Portal";case Go:return"Profiler";case bi:return"StrictMode";case Yo:return"Suspense";case Xo:return"SuspenseList"}if(typeof e=="object")switch(e.$$typeof){case Pa:return(e.displayName||"Context")+".Consumer";case Oa:return(e._context.displayName||"Context")+".Provider";case eu:var t=e.render;return e=e.displayName,e||(e=t.displayName||t.name||"",e=e!==""?"ForwardRef("+e+")":"ForwardRef"),e;case tu:return t=e.displayName||null,t!==null?t:Zo(e.type)||"Memo";case mt:t=e._payload,e=e._init;try{return Zo(e(t))}catch{}}return null}function cp(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 Zo(t);case 8:return t===bi?"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 jt(e){switch(typeof e){case"boolean":case"number":case"string":case"undefined":return e;case"object":return e;default:return""}}function Ma(e){var t=e.type;return(e=e.nodeName)&&e.toLowerCase()==="input"&&(t==="checkbox"||t==="radio")}function fp(e){var t=Ma(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 l=n.get,o=n.set;return Object.defineProperty(e,t,{configurable:!0,get:function(){return l.call(this)},set:function(i){r=""+i,o.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 Ur(e){e._valueTracker||(e._valueTracker=fp(e))}function za(e){if(!e)return!1;var t=e._valueTracker;if(!t)return!0;var n=t.getValue(),r="";return e&&(r=Ma(e)?e.checked?"true":"false":e.value),e=r,e!==n?(t.setValue(e),!0):!1}function vl(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 Jo(e,t){var n=t.checked;return X({},t,{defaultChecked:void 0,defaultValue:void 0,value:void 0,checked:n??e._wrapperState.initialChecked})}function es(e,t){var n=t.defaultValue==null?"":t.defaultValue,r=t.checked!=null?t.checked:t.defaultChecked;n=jt(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 $a(e,t){t=t.checked,t!=null&&qi(e,"checked",t,!1)}function qo(e,t){$a(e,t);var n=jt(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")?bo(e,t.type,n):t.hasOwnProperty("defaultValue")&&bo(e,t.type,jt(t.defaultValue)),t.checked==null&&t.defaultChecked!=null&&(e.defaultChecked=!!t.defaultChecked)}function ts(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 bo(e,t,n){(t!=="number"||vl(e.ownerDocument)!==e)&&(n==null?e.defaultValue=""+e._wrapperState.initialValue:e.defaultValue!==""+n&&(e.defaultValue=""+n))}var bn=Array.isArray;function En(e,t,n,r){if(e=e.options,t){t={};for(var l=0;l"+t.valueOf().toString()+"",t=Br.firstChild;e.firstChild;)e.removeChild(e.firstChild);for(;t.firstChild;)e.appendChild(t.firstChild)}});function pr(e,t){if(t){var n=e.firstChild;if(n&&n===e.lastChild&&n.nodeType===3){n.nodeValue=t;return}}e.textContent=t}var rr={animationIterationCount:!0,aspectRatio:!0,borderImageOutset:!0,borderImageSlice:!0,borderImageWidth:!0,boxFlex:!0,boxFlexGroup:!0,boxOrdinalGroup:!0,columnCount:!0,columns:!0,flex:!0,flexGrow:!0,flexPositive:!0,flexShrink:!0,flexNegative:!0,flexOrder:!0,gridArea:!0,gridRow:!0,gridRowEnd:!0,gridRowSpan:!0,gridRowStart:!0,gridColumn:!0,gridColumnEnd:!0,gridColumnSpan:!0,gridColumnStart:!0,fontWeight:!0,lineClamp:!0,lineHeight:!0,opacity:!0,order:!0,orphans:!0,tabSize:!0,widows:!0,zIndex:!0,zoom:!0,fillOpacity:!0,floodOpacity:!0,stopOpacity:!0,strokeDasharray:!0,strokeDashoffset:!0,strokeMiterlimit:!0,strokeOpacity:!0,strokeWidth:!0},dp=["Webkit","ms","Moz","O"];Object.keys(rr).forEach(function(e){dp.forEach(function(t){t=t+e.charAt(0).toUpperCase()+e.substring(1),rr[t]=rr[e]})});function Ua(e,t,n){return t==null||typeof t=="boolean"||t===""?"":n||typeof t!="number"||t===0||rr.hasOwnProperty(e)&&rr[e]?(""+t).trim():t+"px"}function Ba(e,t){e=e.style;for(var n in t)if(t.hasOwnProperty(n)){var r=n.indexOf("--")===0,l=Ua(n,t[n],r);n==="float"&&(n="cssFloat"),r?e.setProperty(n,l):e[n]=l}}var pp=X({menuitem:!0},{area:!0,base:!0,br:!0,col:!0,embed:!0,hr:!0,img:!0,input:!0,keygen:!0,link:!0,meta:!0,param:!0,source:!0,track:!0,wbr:!0});function ni(e,t){if(t){if(pp[e]&&(t.children!=null||t.dangerouslySetInnerHTML!=null))throw Error(k(137,e));if(t.dangerouslySetInnerHTML!=null){if(t.children!=null)throw Error(k(60));if(typeof t.dangerouslySetInnerHTML!="object"||!("__html"in t.dangerouslySetInnerHTML))throw Error(k(61))}if(t.style!=null&&typeof t.style!="object")throw Error(k(62))}}function ri(e,t){if(e.indexOf("-")===-1)return typeof t.is=="string";switch(e){case"annotation-xml":case"color-profile":case"font-face":case"font-face-src":case"font-face-uri":case"font-face-format":case"font-face-name":case"missing-glyph":return!1;default:return!0}}var li=null;function nu(e){return e=e.target||e.srcElement||window,e.correspondingUseElement&&(e=e.correspondingUseElement),e.nodeType===3?e.parentNode:e}var oi=null,xn=null,Cn=null;function ls(e){if(e=Mr(e)){if(typeof oi!="function")throw Error(k(280));var t=e.stateNode;t&&(t=Zl(t),oi(e.stateNode,e.type,t))}}function Ha(e){xn?Cn?Cn.push(e):Cn=[e]:xn=e}function Wa(){if(xn){var e=xn,t=Cn;if(Cn=xn=null,ls(e),t)for(e=0;e>>=0,e===0?32:31-(Cp(e)/Np|0)|0}var Hr=64,Wr=4194304;function er(e){switch(e&-e){case 1:return 1;case 2:return 2;case 4:return 4;case 8:return 8;case 16:return 16;case 32:return 32;case 64:case 128:case 256:case 512:case 1024:case 2048:case 4096:case 8192:case 16384:case 32768:case 65536:case 131072:case 262144:case 524288:case 1048576:case 2097152:return e&4194240;case 4194304:case 8388608:case 16777216:case 33554432:case 67108864:return e&130023424;case 134217728:return 134217728;case 268435456:return 268435456;case 536870912:return 536870912;case 1073741824:return 1073741824;default:return e}}function Sl(e,t){var n=e.pendingLanes;if(n===0)return 0;var r=0,l=e.suspendedLanes,o=e.pingedLanes,i=n&268435455;if(i!==0){var u=i&~l;u!==0?r=er(u):(o&=i,o!==0&&(r=er(o)))}else i=n&~l,i!==0?r=er(i):o!==0&&(r=er(o));if(r===0)return 0;if(t!==0&&t!==r&&!(t&l)&&(l=r&-r,o=t&-t,l>=o||l===16&&(o&4194240)!==0))return t;if(r&4&&(r|=n&16),t=e.entangledLanes,t!==0)for(e=e.entanglements,t&=r;0n;n++)t.push(e);return t}function Pr(e,t,n){e.pendingLanes|=t,t!==536870912&&(e.suspendedLanes=0,e.pingedLanes=0),e=e.eventTimes,t=31-Be(t),e[t]=n}function jp(e,t){var n=e.pendingLanes&~t;e.pendingLanes=t,e.suspendedLanes=0,e.pingedLanes=0,e.expiredLanes&=t,e.mutableReadLanes&=t,e.entangledLanes&=t,t=e.entanglements;var r=e.eventTimes;for(e=e.expirationTimes;0=or),ps=String.fromCharCode(32),ms=!1;function ac(e,t){switch(e){case"keyup":return rm.indexOf(t.keyCode)!==-1;case"keydown":return t.keyCode!==229;case"keypress":case"mousedown":case"focusout":return!0;default:return!1}}function cc(e){return e=e.detail,typeof e=="object"&&"data"in e?e.data:null}var fn=!1;function om(e,t){switch(e){case"compositionend":return cc(t);case"keypress":return t.which!==32?null:(ms=!0,ps);case"textInput":return e=t.data,e===ps&&ms?null:e;default:return null}}function im(e,t){if(fn)return e==="compositionend"||!cu&&ac(e,t)?(e=uc(),ul=uu=wt=null,fn=!1,e):null;switch(e){case"paste":return null;case"keypress":if(!(t.ctrlKey||t.altKey||t.metaKey)||t.ctrlKey&&t.altKey){if(t.char&&1=t)return{node:n,offset:t-e};e=r}e:{for(;n;){if(n.nextSibling){n=n.nextSibling;break e}n=n.parentNode}n=void 0}n=gs(n)}}function mc(e,t){return e&&t?e===t?!0:e&&e.nodeType===3?!1:t&&t.nodeType===3?mc(e,t.parentNode):"contains"in e?e.contains(t):e.compareDocumentPosition?!!(e.compareDocumentPosition(t)&16):!1:!1}function hc(){for(var e=window,t=vl();t instanceof e.HTMLIFrameElement;){try{var n=typeof t.contentWindow.location.href=="string"}catch{n=!1}if(n)e=t.contentWindow;else break;t=vl(e.document)}return t}function fu(e){var t=e&&e.nodeName&&e.nodeName.toLowerCase();return t&&(t==="input"&&(e.type==="text"||e.type==="search"||e.type==="tel"||e.type==="url"||e.type==="password")||t==="textarea"||e.contentEditable==="true")}function hm(e){var t=hc(),n=e.focusedElem,r=e.selectionRange;if(t!==n&&n&&n.ownerDocument&&mc(n.ownerDocument.documentElement,n)){if(r!==null&&fu(n)){if(t=r.start,e=r.end,e===void 0&&(e=t),"selectionStart"in n)n.selectionStart=t,n.selectionEnd=Math.min(e,n.value.length);else if(e=(t=n.ownerDocument||document)&&t.defaultView||window,e.getSelection){e=e.getSelection();var l=n.textContent.length,o=Math.min(r.start,l);r=r.end===void 0?o:Math.min(r.end,l),!e.extend&&o>r&&(l=r,r=o,o=l),l=ws(n,o);var i=ws(n,r);l&&i&&(e.rangeCount!==1||e.anchorNode!==l.node||e.anchorOffset!==l.offset||e.focusNode!==i.node||e.focusOffset!==i.offset)&&(t=t.createRange(),t.setStart(l.node,l.offset),e.removeAllRanges(),o>r?(e.addRange(t),e.extend(i.node,i.offset)):(t.setEnd(i.node,i.offset),e.addRange(t)))}}for(t=[],e=n;e=e.parentNode;)e.nodeType===1&&t.push({element:e,left:e.scrollLeft,top:e.scrollTop});for(typeof n.focus=="function"&&n.focus(),n=0;n=document.documentMode,dn=null,fi=null,ur=null,di=!1;function Ss(e,t,n){var r=n.window===n?n.document:n.nodeType===9?n:n.ownerDocument;di||dn==null||dn!==vl(r)||(r=dn,"selectionStart"in r&&fu(r)?r={start:r.selectionStart,end:r.selectionEnd}:(r=(r.ownerDocument&&r.ownerDocument.defaultView||window).getSelection(),r={anchorNode:r.anchorNode,anchorOffset:r.anchorOffset,focusNode:r.focusNode,focusOffset:r.focusOffset}),ur&&wr(ur,r)||(ur=r,r=xl(fi,"onSelect"),0hn||(e.current=gi[hn],gi[hn]=null,hn--)}function B(e,t){hn++,gi[hn]=e.current,e.current=t}var Lt={},ce=Pt(Lt),ge=Pt(!1),Gt=Lt;function jn(e,t){var n=e.type.contextTypes;if(!n)return Lt;var r=e.stateNode;if(r&&r.__reactInternalMemoizedUnmaskedChildContext===t)return r.__reactInternalMemoizedMaskedChildContext;var l={},o;for(o in n)l[o]=t[o];return r&&(e=e.stateNode,e.__reactInternalMemoizedUnmaskedChildContext=t,e.__reactInternalMemoizedMaskedChildContext=l),l}function we(e){return e=e.childContextTypes,e!=null}function Nl(){V(ge),V(ce)}function _s(e,t,n){if(ce.current!==Lt)throw Error(k(168));B(ce,t),B(ge,n)}function Cc(e,t,n){var r=e.stateNode;if(t=t.childContextTypes,typeof r.getChildContext!="function")return n;r=r.getChildContext();for(var l in r)if(!(l in t))throw Error(k(108,cp(e)||"Unknown",l));return X({},n,r)}function Tl(e){return e=(e=e.stateNode)&&e.__reactInternalMemoizedMergedChildContext||Lt,Gt=ce.current,B(ce,e),B(ge,ge.current),!0}function Rs(e,t,n){var r=e.stateNode;if(!r)throw Error(k(169));n?(e=Cc(e,t,Gt),r.__reactInternalMemoizedMergedChildContext=e,V(ge),V(ce),B(ce,e)):V(ge),B(ge,n)}var et=null,Jl=!1,Lo=!1;function Nc(e){et===null?et=[e]:et.push(e)}function _m(e){Jl=!0,Nc(e)}function Ft(){if(!Lo&&et!==null){Lo=!0;var e=0,t=I;try{var n=et;for(I=1;e>=i,l-=i,tt=1<<32-Be(t)+l|n<R?(U=T,T=null):U=T.sibling;var P=p(f,T,m[R],w);if(P===null){T===null&&(T=U);break}e&&T&&P.alternate===null&&t(f,T),c=o(P,c,R),N===null?C=P:N.sibling=P,N=P,T=U}if(R===m.length)return n(f,T),Q&&$t(f,R),C;if(T===null){for(;RR?(U=T,T=null):U=T.sibling;var ie=p(f,T,P.value,w);if(ie===null){T===null&&(T=U);break}e&&T&&ie.alternate===null&&t(f,T),c=o(ie,c,R),N===null?C=ie:N.sibling=ie,N=ie,T=U}if(P.done)return n(f,T),Q&&$t(f,R),C;if(T===null){for(;!P.done;R++,P=m.next())P=h(f,P.value,w),P!==null&&(c=o(P,c,R),N===null?C=P:N.sibling=P,N=P);return Q&&$t(f,R),C}for(T=r(f,T);!P.done;R++,P=m.next())P=g(T,f,R,P.value,w),P!==null&&(e&&P.alternate!==null&&T.delete(P.key===null?R:P.key),c=o(P,c,R),N===null?C=P:N.sibling=P,N=P);return e&&T.forEach(function(Ve){return t(f,Ve)}),Q&&$t(f,R),C}function L(f,c,m,w){if(typeof m=="object"&&m!==null&&m.type===cn&&m.key===null&&(m=m.props.children),typeof m=="object"&&m!==null){switch(m.$$typeof){case Ar:e:{for(var C=m.key,N=c;N!==null;){if(N.key===C){if(C=m.type,C===cn){if(N.tag===7){n(f,N.sibling),c=l(N,m.props.children),c.return=f,f=c;break e}}else if(N.elementType===C||typeof C=="object"&&C!==null&&C.$$typeof===mt&&zs(C)===N.type){n(f,N.sibling),c=l(N,m.props),c.ref=Yn(f,N,m),c.return=f,f=c;break e}n(f,N);break}else t(f,N);N=N.sibling}m.type===cn?(c=Qt(m.props.children,f.mode,w,m.key),c.return=f,f=c):(w=hl(m.type,m.key,m.props,null,f.mode,w),w.ref=Yn(f,c,m),w.return=f,f=w)}return i(f);case an:e:{for(N=m.key;c!==null;){if(c.key===N)if(c.tag===4&&c.stateNode.containerInfo===m.containerInfo&&c.stateNode.implementation===m.implementation){n(f,c.sibling),c=l(c,m.children||[]),c.return=f,f=c;break e}else{n(f,c);break}else t(f,c);c=c.sibling}c=Io(m,f.mode,w),c.return=f,f=c}return i(f);case mt:return N=m._init,L(f,c,N(m._payload),w)}if(bn(m))return S(f,c,m,w);if(Wn(m))return E(f,c,m,w);Zr(f,m)}return typeof m=="string"&&m!==""||typeof m=="number"?(m=""+m,c!==null&&c.tag===6?(n(f,c.sibling),c=l(c,m),c.return=f,f=c):(n(f,c),c=Do(m,f.mode,w),c.return=f,f=c),i(f)):n(f,c)}return L}var On=Fc(!0),Mc=Fc(!1),zr={},Je=Pt(zr),xr=Pt(zr),Cr=Pt(zr);function Wt(e){if(e===zr)throw Error(k(174));return e}function Su(e,t){switch(B(Cr,t),B(xr,e),B(Je,zr),e=t.nodeType,e){case 9:case 11:t=(t=t.documentElement)?t.namespaceURI:ti(null,"");break;default:e=e===8?t.parentNode:t,t=e.namespaceURI||null,e=e.tagName,t=ti(t,e)}V(Je),B(Je,t)}function Pn(){V(Je),V(xr),V(Cr)}function zc(e){Wt(Cr.current);var t=Wt(Je.current),n=ti(t,e.type);t!==n&&(B(xr,e),B(Je,n))}function ku(e){xr.current===e&&(V(Je),V(xr))}var G=Pt(0);function Pl(e){for(var t=e;t!==null;){if(t.tag===13){var n=t.memoizedState;if(n!==null&&(n=n.dehydrated,n===null||n.data==="$?"||n.data==="$!"))return t}else if(t.tag===19&&t.memoizedProps.revealOrder!==void 0){if(t.flags&128)return t}else if(t.child!==null){t.child.return=t,t=t.child;continue}if(t===e)break;for(;t.sibling===null;){if(t.return===null||t.return===e)return null;t=t.return}t.sibling.return=t.return,t=t.sibling}return null}var Oo=[];function Eu(){for(var e=0;en?n:4,e(!0);var r=Po.transition;Po.transition={};try{e(!1),t()}finally{I=n,Po.transition=r}}function Jc(){return $e().memoizedState}function Om(e,t,n){var r=_t(e);if(n={lane:r,action:n,hasEagerState:!1,eagerState:null,next:null},qc(e))bc(t,n);else if(n=jc(e,t,n,r),n!==null){var l=pe();He(n,e,r,l),ef(n,t,r)}}function Pm(e,t,n){var r=_t(e),l={lane:r,action:n,hasEagerState:!1,eagerState:null,next:null};if(qc(e))bc(t,l);else{var o=e.alternate;if(e.lanes===0&&(o===null||o.lanes===0)&&(o=t.lastRenderedReducer,o!==null))try{var i=t.lastRenderedState,u=o(i,n);if(l.hasEagerState=!0,l.eagerState=u,We(u,i)){var s=t.interleaved;s===null?(l.next=l,gu(t)):(l.next=s.next,s.next=l),t.interleaved=l;return}}catch{}finally{}n=jc(e,t,l,r),n!==null&&(l=pe(),He(n,e,r,l),ef(n,t,r))}}function qc(e){var t=e.alternate;return e===Y||t!==null&&t===Y}function bc(e,t){sr=Fl=!0;var n=e.pending;n===null?t.next=t:(t.next=n.next,n.next=t),e.pending=t}function ef(e,t,n){if(n&4194240){var r=t.lanes;r&=e.pendingLanes,n|=r,t.lanes=n,lu(e,n)}}var Ml={readContext:ze,useCallback:ue,useContext:ue,useEffect:ue,useImperativeHandle:ue,useInsertionEffect:ue,useLayoutEffect:ue,useMemo:ue,useReducer:ue,useRef:ue,useState:ue,useDebugValue:ue,useDeferredValue:ue,useTransition:ue,useMutableSource:ue,useSyncExternalStore:ue,useId:ue,unstable_isNewReconciler:!1},Fm={readContext:ze,useCallback:function(e,t){return Ye().memoizedState=[e,t===void 0?null:t],e},useContext:ze,useEffect:Ds,useImperativeHandle:function(e,t,n){return n=n!=null?n.concat([e]):null,fl(4194308,4,Kc.bind(null,t,e),n)},useLayoutEffect:function(e,t){return fl(4194308,4,e,t)},useInsertionEffect:function(e,t){return fl(4,2,e,t)},useMemo:function(e,t){var n=Ye();return t=t===void 0?null:t,e=e(),n.memoizedState=[e,t],e},useReducer:function(e,t,n){var r=Ye();return t=n!==void 0?n(t):t,r.memoizedState=r.baseState=t,e={pending:null,interleaved:null,lanes:0,dispatch:null,lastRenderedReducer:e,lastRenderedState:t},r.queue=e,e=e.dispatch=Om.bind(null,Y,e),[r.memoizedState,e]},useRef:function(e){var t=Ye();return e={current:e},t.memoizedState=e},useState:$s,useDebugValue:_u,useDeferredValue:function(e){return Ye().memoizedState=e},useTransition:function(){var e=$s(!1),t=e[0];return e=Lm.bind(null,e[1]),Ye().memoizedState=e,[t,e]},useMutableSource:function(){},useSyncExternalStore:function(e,t,n){var r=Y,l=Ye();if(Q){if(n===void 0)throw Error(k(407));n=n()}else{if(n=t(),ne===null)throw Error(k(349));Xt&30||Ic(r,t,n)}l.memoizedState=n;var o={value:n,getSnapshot:t};return l.queue=o,Ds(Uc.bind(null,r,o,e),[e]),r.flags|=2048,_r(9,Ac.bind(null,r,o,n,t),void 0,null),n},useId:function(){var e=Ye(),t=ne.identifierPrefix;if(Q){var n=nt,r=tt;n=(r&~(1<<32-Be(r)-1)).toString(32)+n,t=":"+t+"R"+n,n=Nr++,0<\/script>",e=e.removeChild(e.firstChild)):typeof r.is=="string"?e=i.createElement(n,{is:r.is}):(e=i.createElement(n),n==="select"&&(i=e,r.multiple?i.multiple=!0:r.size&&(i.size=r.size))):e=i.createElementNS(e,n),e[Xe]=t,e[Er]=r,sf(e,t,!1,!1),t.stateNode=e;e:{switch(i=bo(n,r),n){case"dialog":W("cancel",e),W("close",e),l=r;break;case"iframe":case"object":case"embed":W("load",e),l=r;break;case"video":case"audio":for(l=0;lMn&&(t.flags|=128,r=!0,Xn(o,!1),t.lanes=4194304)}else{if(!r)if(e=Ll(i),e!==null){if(t.flags|=128,r=!0,n=e.updateQueue,n!==null&&(t.updateQueue=n,t.flags|=4),Xn(o,!0),o.tail===null&&o.tailMode==="hidden"&&!i.alternate&&!Q)return se(t),null}else 2*J()-o.renderingStartTime>Mn&&n!==1073741824&&(t.flags|=128,r=!0,Xn(o,!1),t.lanes=4194304);o.isBackwards?(i.sibling=t.child,t.child=i):(n=o.last,n!==null?n.sibling=i:t.child=i,o.last=i)}return o.tail!==null?(t=o.tail,o.rendering=t,o.tail=t.sibling,o.renderingStartTime=J(),t.sibling=null,n=G.current,U(G,r?n&1|2:n&1),t):(se(t),null);case 22:case 23:return Ou(),r=t.memoizedState!==null,e!==null&&e.memoizedState!==null!==r&&(t.flags|=8192),r&&t.mode&1?ke&1073741824&&(se(t),t.subtreeFlags&6&&(t.flags|=8192)):se(t),null;case 24:return null;case 25:return null}throw Error(k(156,t.tag))}function Bm(e,t){switch(fu(t),t.tag){case 1:return we(t.type)&&xl(),e=t.flags,e&65536?(t.flags=e&-65537|128,t):null;case 3:return Pn(),V(ge),V(ce),Su(),e=t.flags,e&65536&&!(e&128)?(t.flags=e&-65537|128,t):null;case 5:return wu(t),null;case 13:if(V(G),e=t.memoizedState,e!==null&&e.dehydrated!==null){if(t.alternate===null)throw Error(k(340));Ln()}return e=t.flags,e&65536?(t.flags=e&-65537|128,t):null;case 19:return V(G),null;case 4:return Pn(),null;case 10:return hu(t.type._context),null;case 22:case 23:return Ou(),null;case 24:return null;default:return null}}var Jr=!1,ae=!1,Am=typeof WeakSet=="function"?WeakSet:Set,T=null;function wn(e,t){var n=e.ref;if(n!==null)if(typeof n=="function")try{n(null)}catch(r){Z(e,t,r)}else n.current=null}function Ni(e,t,n){try{n()}catch(r){Z(e,t,r)}}var Vs=!1;function Um(e,t){if(ai=wl,e=pc(),au(e)){if("selectionStart"in e)var n={start:e.selectionStart,end:e.selectionEnd};else e:{n=(n=e.ownerDocument)&&n.defaultView||window;var r=n.getSelection&&n.getSelection();if(r&&r.rangeCount!==0){n=r.anchorNode;var l=r.anchorOffset,o=r.focusNode;r=r.focusOffset;try{n.nodeType,o.nodeType}catch{n=null;break e}var i=0,u=-1,s=-1,a=0,m=0,h=e,d=null;t:for(;;){for(var g;h!==n||l!==0&&h.nodeType!==3||(u=i+l),h!==o||r!==0&&h.nodeType!==3||(s=i+r),h.nodeType===3&&(i+=h.nodeValue.length),(g=h.firstChild)!==null;)d=h,h=g;for(;;){if(h===e)break t;if(d===n&&++a===l&&(u=i),d===o&&++m===r&&(s=i),(g=h.nextSibling)!==null)break;h=d,d=h.parentNode}h=g}n=u===-1||s===-1?null:{start:u,end:s}}else n=null}n=n||{start:0,end:0}}else n=null;for(ci={focusedElem:e,selectionRange:n},wl=!1,T=t;T!==null;)if(t=T,e=t.child,(t.subtreeFlags&1028)!==0&&e!==null)e.return=t,T=e;else for(;T!==null;){t=T;try{var S=t.alternate;if(t.flags&1024)switch(t.tag){case 0:case 11:case 15:break;case 1:if(S!==null){var E=S.memoizedProps,j=S.memoizedState,f=t.stateNode,c=f.getSnapshotBeforeUpdate(t.elementType===t.type?E:Ie(t.type,E),j);f.__reactInternalSnapshotBeforeUpdate=c}break;case 3:var p=t.stateNode.containerInfo;p.nodeType===1?p.textContent="":p.nodeType===9&&p.documentElement&&p.removeChild(p.documentElement);break;case 5:case 6:case 4:case 17:break;default:throw Error(k(163))}}catch(w){Z(t,t.return,w)}if(e=t.sibling,e!==null){e.return=t.return,T=e;break}T=t.return}return S=Vs,Vs=!1,S}function ar(e,t,n){var r=t.updateQueue;if(r=r!==null?r.lastEffect:null,r!==null){var l=r=r.next;do{if((l.tag&e)===e){var o=l.destroy;l.destroy=void 0,o!==void 0&&Ni(t,n,o)}l=l.next}while(l!==r)}}function Jl(e,t){if(t=t.updateQueue,t=t!==null?t.lastEffect:null,t!==null){var n=t=t.next;do{if((n.tag&e)===e){var r=n.create;n.destroy=r()}n=n.next}while(n!==t)}}function Ti(e){var t=e.ref;if(t!==null){var n=e.stateNode;switch(e.tag){case 5:e=n;break;default:e=n}typeof t=="function"?t(e):t.current=e}}function ff(e){var t=e.alternate;t!==null&&(e.alternate=null,ff(t)),e.child=null,e.deletions=null,e.sibling=null,e.tag===5&&(t=e.stateNode,t!==null&&(delete t[Xe],delete t[Er],delete t[pi],delete t[xm],delete t[Cm])),e.stateNode=null,e.return=null,e.dependencies=null,e.memoizedProps=null,e.memoizedState=null,e.pendingProps=null,e.stateNode=null,e.updateQueue=null}function df(e){return e.tag===5||e.tag===3||e.tag===4}function Qs(e){e:for(;;){for(;e.sibling===null;){if(e.return===null||df(e.return))return null;e=e.return}for(e.sibling.return=e.return,e=e.sibling;e.tag!==5&&e.tag!==6&&e.tag!==18;){if(e.flags&2||e.child===null||e.tag===4)continue e;e.child.return=e,e=e.child}if(!(e.flags&2))return e.stateNode}}function Ri(e,t,n){var r=e.tag;if(r===5||r===6)e=e.stateNode,t?n.nodeType===8?n.parentNode.insertBefore(e,t):n.insertBefore(e,t):(n.nodeType===8?(t=n.parentNode,t.insertBefore(e,n)):(t=n,t.appendChild(e)),n=n._reactRootContainer,n!=null||t.onclick!==null||(t.onclick=El));else if(r!==4&&(e=e.child,e!==null))for(Ri(e,t,n),e=e.sibling;e!==null;)Ri(e,t,n),e=e.sibling}function ji(e,t,n){var r=e.tag;if(r===5||r===6)e=e.stateNode,t?n.insertBefore(e,t):n.appendChild(e);else if(r!==4&&(e=e.child,e!==null))for(ji(e,t,n),e=e.sibling;e!==null;)ji(e,t,n),e=e.sibling}var re=null,Be=!1;function pt(e,t,n){for(n=n.child;n!==null;)pf(e,t,n),n=n.sibling}function pf(e,t,n){if(Ze&&typeof Ze.onCommitFiberUnmount=="function")try{Ze.onCommitFiberUnmount(Wl,n)}catch{}switch(n.tag){case 5:ae||wn(n,t);case 6:var r=re,l=Be;re=null,pt(e,t,n),re=r,Be=l,re!==null&&(Be?(e=re,n=n.stateNode,e.nodeType===8?e.parentNode.removeChild(n):e.removeChild(n)):re.removeChild(n.stateNode));break;case 18:re!==null&&(Be?(e=re,n=n.stateNode,e.nodeType===8?_o(e.parentNode,n):e.nodeType===1&&_o(e,n),yr(e)):_o(re,n.stateNode));break;case 4:r=re,l=Be,re=n.stateNode.containerInfo,Be=!0,pt(e,t,n),re=r,Be=l;break;case 0:case 11:case 14:case 15:if(!ae&&(r=n.updateQueue,r!==null&&(r=r.lastEffect,r!==null))){l=r=r.next;do{var o=l,i=o.destroy;o=o.tag,i!==void 0&&(o&2||o&4)&&Ni(n,t,i),l=l.next}while(l!==r)}pt(e,t,n);break;case 1:if(!ae&&(wn(n,t),r=n.stateNode,typeof r.componentWillUnmount=="function"))try{r.props=n.memoizedProps,r.state=n.memoizedState,r.componentWillUnmount()}catch(u){Z(n,t,u)}pt(e,t,n);break;case 21:pt(e,t,n);break;case 22:n.mode&1?(ae=(r=ae)||n.memoizedState!==null,pt(e,t,n),ae=r):pt(e,t,n);break;default:pt(e,t,n)}}function Ks(e){var t=e.updateQueue;if(t!==null){e.updateQueue=null;var n=e.stateNode;n===null&&(n=e.stateNode=new Am),t.forEach(function(r){var l=Zm.bind(null,e,r);n.has(r)||(n.add(r),r.then(l,l))})}}function De(e,t){var n=t.deletions;if(n!==null)for(var r=0;rl&&(l=i),r&=~o}if(r=l,r=J()-r,r=(120>r?120:480>r?480:1080>r?1080:1920>r?1920:3e3>r?3e3:4320>r?4320:1960*Wm(r/1960))-r,10e?16:e,St===null)var r=!1;else{if(e=St,St=null,zl=0,z&6)throw Error(k(331));var l=z;for(z|=4,T=e.current;T!==null;){var o=T,i=o.child;if(T.flags&16){var u=o.deletions;if(u!==null){for(var s=0;sJ()-ju?Wt(e,0):Ru|=n),Se(e,t)}function kf(e,t){t===0&&(e.mode&1?(t=Hr,Hr<<=1,!(Hr&130023424)&&(Hr=4194304)):t=1);var n=pe();e=ut(e,t),e!==null&&(Lr(e,t,n),Se(e,n))}function Xm(e){var t=e.memoizedState,n=0;t!==null&&(n=t.retryLane),kf(e,n)}function Zm(e,t){var n=0;switch(e.tag){case 13:var r=e.stateNode,l=e.memoizedState;l!==null&&(n=l.retryLane);break;case 19:r=e.stateNode;break;default:throw Error(k(314))}r!==null&&r.delete(t),kf(e,n)}var Ef;Ef=function(e,t,n){if(e!==null)if(e.memoizedProps!==t.pendingProps||ge.current)ye=!0;else{if(!(e.lanes&n)&&!(t.flags&128))return ye=!1,Dm(e,t,n);ye=!!(e.flags&131072)}else ye=!1,Q&&t.flags&1048576&&Cc(t,Nl,t.index);switch(t.lanes=0,t.tag){case 2:var r=t.type;cl(e,t),e=t.pendingProps;var l=jn(t,ce.current);Nn(t,n),l=Eu(null,t,r,e,l,n);var o=xu();return t.flags|=1,typeof l=="object"&&l!==null&&typeof l.render=="function"&&l.$$typeof===void 0?(t.tag=1,t.memoizedState=null,t.updateQueue=null,we(r)?(o=!0,Cl(t)):o=!1,t.memoizedState=l.state!==null&&l.state!==void 0?l.state:null,yu(t),l.updater=Xl,t.stateNode=l,l._reactInternals=t,wi(t,r,e,n),t=Ei(null,t,r,!0,o,n)):(t.tag=0,Q&&o&&cu(t),de(null,t,l,n),t=t.child),t;case 16:r=t.elementType;e:{switch(cl(e,t),e=t.pendingProps,l=r._init,r=l(r._payload),t.type=r,l=t.tag=qm(r),e=Ie(r,e),l){case 0:t=ki(null,t,r,e,n);break e;case 1:t=Us(null,t,r,e,n);break e;case 11:t=Bs(null,t,r,e,n);break e;case 14:t=As(null,t,r,Ie(r.type,e),n);break e}throw Error(k(306,r,""))}return t;case 0:return r=t.type,l=t.pendingProps,l=t.elementType===r?l:Ie(r,l),ki(e,t,r,l,n);case 1:return r=t.type,l=t.pendingProps,l=t.elementType===r?l:Ie(r,l),Us(e,t,r,l,n);case 3:e:{if(lf(t),e===null)throw Error(k(387));r=t.pendingProps,o=t.memoizedState,l=o.element,Rc(e,t),jl(t,r,null,n);var i=t.memoizedState;if(r=i.element,o.isDehydrated)if(o={element:r,isDehydrated:!1,cache:i.cache,pendingSuspenseBoundaries:i.pendingSuspenseBoundaries,transitions:i.transitions},t.updateQueue.baseState=o,t.memoizedState=o,t.flags&256){l=Fn(Error(k(423)),t),t=Hs(e,t,r,n,l);break e}else if(r!==l){l=Fn(Error(k(424)),t),t=Hs(e,t,r,n,l);break e}else for(Ee=Ct(t.stateNode.containerInfo.firstChild),xe=t,Q=!0,Ae=null,n=Pc(t,null,r,n),t.child=n;n;)n.flags=n.flags&-3|4096,n=n.sibling;else{if(Ln(),r===l){t=st(e,t,n);break e}de(e,t,r,n)}t=t.child}return t;case 5:return Fc(t),e===null&&vi(t),r=t.type,l=t.pendingProps,o=e!==null?e.memoizedProps:null,i=l.children,fi(r,l)?i=null:o!==null&&fi(r,o)&&(t.flags|=32),rf(e,t),de(e,t,i,n),t.child;case 6:return e===null&&vi(t),null;case 13:return of(e,t,n);case 4:return gu(t,t.stateNode.containerInfo),r=t.pendingProps,e===null?t.child=On(t,null,r,n):de(e,t,r,n),t.child;case 11:return r=t.type,l=t.pendingProps,l=t.elementType===r?l:Ie(r,l),Bs(e,t,r,l,n);case 7:return de(e,t,t.pendingProps,n),t.child;case 8:return de(e,t,t.pendingProps.children,n),t.child;case 12:return de(e,t,t.pendingProps.children,n),t.child;case 10:e:{if(r=t.type._context,l=t.pendingProps,o=t.memoizedProps,i=l.value,U(Tl,r._currentValue),r._currentValue=i,o!==null)if(We(o.value,i)){if(o.children===l.children&&!ge.current){t=st(e,t,n);break e}}else for(o=t.child,o!==null&&(o.return=t);o!==null;){var u=o.dependencies;if(u!==null){i=o.child;for(var s=u.firstContext;s!==null;){if(s.context===r){if(o.tag===1){s=rt(-1,n&-n),s.tag=2;var a=o.updateQueue;if(a!==null){a=a.shared;var m=a.pending;m===null?s.next=s:(s.next=m.next,m.next=s),a.pending=s}}o.lanes|=n,s=o.alternate,s!==null&&(s.lanes|=n),yi(o.return,n,t),u.lanes|=n;break}s=s.next}}else if(o.tag===10)i=o.type===t.type?null:o.child;else if(o.tag===18){if(i=o.return,i===null)throw Error(k(341));i.lanes|=n,u=i.alternate,u!==null&&(u.lanes|=n),yi(i,n,t),i=o.sibling}else i=o.child;if(i!==null)i.return=o;else for(i=o;i!==null;){if(i===t){i=null;break}if(o=i.sibling,o!==null){o.return=i.return,i=o;break}i=i.return}o=i}de(e,t,l.children,n),t=t.child}return t;case 9:return l=t.type,r=t.pendingProps.children,Nn(t,n),l=ze(l),r=r(l),t.flags|=1,de(e,t,r,n),t.child;case 14:return r=t.type,l=Ie(r,t.pendingProps),l=Ie(r.type,l),As(e,t,r,l,n);case 15:return tf(e,t,t.type,t.pendingProps,n);case 17:return r=t.type,l=t.pendingProps,l=t.elementType===r?l:Ie(r,l),cl(e,t),t.tag=1,we(r)?(e=!0,Cl(t)):e=!1,Nn(t,n),Lc(t,r,l),wi(t,r,l,n),Ei(null,t,r,!0,e,n);case 19:return uf(e,t,n);case 22:return nf(e,t,n)}throw Error(k(156,t.tag))};function xf(e,t){return Ya(e,t)}function Jm(e,t,n,r){this.tag=e,this.key=n,this.sibling=this.child=this.return=this.stateNode=this.type=this.elementType=null,this.index=0,this.ref=null,this.pendingProps=t,this.dependencies=this.memoizedState=this.updateQueue=this.memoizedProps=null,this.mode=r,this.subtreeFlags=this.flags=0,this.deletions=null,this.childLanes=this.lanes=0,this.alternate=null}function Fe(e,t,n,r){return new Jm(e,t,n,r)}function Fu(e){return e=e.prototype,!(!e||!e.isReactComponent)}function qm(e){if(typeof e=="function")return Fu(e)?1:0;if(e!=null){if(e=e.$$typeof,e===qi)return 11;if(e===bi)return 14}return 2}function Rt(e,t){var n=e.alternate;return n===null?(n=Fe(e.tag,t,e.key,e.mode),n.elementType=e.elementType,n.type=e.type,n.stateNode=e.stateNode,n.alternate=e,e.alternate=n):(n.pendingProps=t,n.type=e.type,n.flags=0,n.subtreeFlags=0,n.deletions=null),n.flags=e.flags&14680064,n.childLanes=e.childLanes,n.lanes=e.lanes,n.child=e.child,n.memoizedProps=e.memoizedProps,n.memoizedState=e.memoizedState,n.updateQueue=e.updateQueue,t=e.dependencies,n.dependencies=t===null?null:{lanes:t.lanes,firstContext:t.firstContext},n.sibling=e.sibling,n.index=e.index,n.ref=e.ref,n}function pl(e,t,n,r,l,o){var i=2;if(r=e,typeof e=="function")Fu(e)&&(i=1);else if(typeof e=="string")i=5;else e:switch(e){case cn:return Vt(n.children,l,o,t);case Ji:i=8,l|=8;break;case Wo:return e=Fe(12,n,t,l|2),e.elementType=Wo,e.lanes=o,e;case Vo:return e=Fe(13,n,t,l),e.elementType=Vo,e.lanes=o,e;case Qo:return e=Fe(19,n,t,l),e.elementType=Qo,e.lanes=o,e;case Oa:return bl(n,l,o,t);default:if(typeof e=="object"&&e!==null)switch(e.$$typeof){case ja:i=10;break e;case La:i=9;break e;case qi:i=11;break e;case bi:i=14;break e;case mt:i=16,r=null;break e}throw Error(k(130,e==null?e:typeof e,""))}return t=Fe(i,n,t,l),t.elementType=e,t.type=r,t.lanes=o,t}function Vt(e,t,n,r){return e=Fe(7,e,r,t),e.lanes=n,e}function bl(e,t,n,r){return e=Fe(22,e,r,t),e.elementType=Oa,e.lanes=n,e.stateNode={isHidden:!1},e}function Fo(e,t,n){return e=Fe(6,e,null,t),e.lanes=n,e}function Mo(e,t,n){return t=Fe(4,e.children!==null?e.children:[],e.key,t),t.lanes=n,t.stateNode={containerInfo:e.containerInfo,pendingChildren:null,implementation:e.implementation},t}function bm(e,t,n,r,l){this.tag=t,this.containerInfo=e,this.finishedWork=this.pingCache=this.current=this.pendingChildren=null,this.timeoutHandle=-1,this.callbackNode=this.pendingContext=this.context=null,this.callbackPriority=0,this.eventTimes=mo(0),this.expirationTimes=mo(-1),this.entangledLanes=this.finishedLanes=this.mutableReadLanes=this.expiredLanes=this.pingedLanes=this.suspendedLanes=this.pendingLanes=0,this.entanglements=mo(0),this.identifierPrefix=r,this.onRecoverableError=l,this.mutableSourceEagerHydrationData=null}function Mu(e,t,n,r,l,o,i,u,s){return e=new bm(e,t,n,u,s),t===1?(t=1,o===!0&&(t|=8)):t=0,o=Fe(3,null,null,t),e.current=o,o.stateNode=e,o.memoizedState={element:r,isDehydrated:n,cache:null,transitions:null,pendingSuspenseBoundaries:null},yu(o),e}function eh(e,t,n){var r=3"u"||typeof __REACT_DEVTOOLS_GLOBAL_HOOK__.checkDCE!="function"))try{__REACT_DEVTOOLS_GLOBAL_HOOK__.checkDCE(Tf)}catch(e){console.error(e)}}Tf(),Ca.exports=_e;var Rf=Ca.exports;const kn=Ul(Rf);var ea=Rf;Uo.createRoot=ea.createRoot,Uo.hydrateRoot=ea.hydrateRoot;var jf={exports:{}};/*! +`+o.stack}return{value:e,source:t,stack:l,digest:null}}function zo(e,t,n){return{value:e,source:null,stack:n??null,digest:t??null}}function Ci(e,t){try{console.error(t.value)}catch(n){setTimeout(function(){throw n})}}var $m=typeof WeakMap=="function"?WeakMap:Map;function tf(e,t,n){n=rt(-1,n),n.tag=3,n.payload={element:null};var r=t.value;return n.callback=function(){$l||($l=!0,Mi=r),Ci(e,t)},n}function nf(e,t,n){n=rt(-1,n),n.tag=3;var r=e.type.getDerivedStateFromError;if(typeof r=="function"){var l=t.value;n.payload=function(){return r(l)},n.callback=function(){Ci(e,t)}}var o=e.stateNode;return o!==null&&typeof o.componentDidCatch=="function"&&(n.callback=function(){Ci(e,t),typeof r!="function"&&(Tt===null?Tt=new Set([this]):Tt.add(this));var i=t.stack;this.componentDidCatch(t.value,{componentStack:i!==null?i:""})}),n}function Is(e,t,n){var r=e.pingCache;if(r===null){r=e.pingCache=new $m;var l=new Set;r.set(t,l)}else l=r.get(t),l===void 0&&(l=new Set,r.set(t,l));l.has(n)||(l.add(n),e=Zm.bind(null,e,t,n),t.then(e,e))}function As(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 Us(e,t,n,r,l){return e.mode&1?(e.flags|=65536,e.lanes=l,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=rt(-1,1),t.tag=2,Nt(n,t,1))),n.lanes|=1),e)}var Dm=ct.ReactCurrentOwner,ye=!1;function de(e,t,n,r){t.child=e===null?Mc(t,null,n,r):On(t,e.child,n,r)}function Bs(e,t,n,r,l){n=n.render;var o=t.ref;return Tn(t,l),r=Cu(e,t,n,r,o,l),n=Nu(),e!==null&&!ye?(t.updateQueue=e.updateQueue,t.flags&=-2053,e.lanes&=~l,st(e,t,l)):(Q&&n&&du(t),t.flags|=1,de(e,t,r,l),t.child)}function Hs(e,t,n,r,l){if(e===null){var o=n.type;return typeof o=="function"&&!zu(o)&&o.defaultProps===void 0&&n.compare===null&&n.defaultProps===void 0?(t.tag=15,t.type=o,rf(e,t,o,r,l)):(e=hl(n.type,null,r,t,t.mode,l),e.ref=t.ref,e.return=t,t.child=e)}if(o=e.child,!(e.lanes&l)){var i=o.memoizedProps;if(n=n.compare,n=n!==null?n:wr,n(i,r)&&e.ref===t.ref)return st(e,t,l)}return t.flags|=1,e=Rt(o,r),e.ref=t.ref,e.return=t,t.child=e}function rf(e,t,n,r,l){if(e!==null){var o=e.memoizedProps;if(wr(o,r)&&e.ref===t.ref)if(ye=!1,t.pendingProps=r=o,(e.lanes&l)!==0)e.flags&131072&&(ye=!0);else return t.lanes=e.lanes,st(e,t,l)}return Ni(e,t,n,r,l)}function lf(e,t,n){var r=t.pendingProps,l=r.children,o=e!==null?e.memoizedState:null;if(r.mode==="hidden")if(!(t.mode&1))t.memoizedState={baseLanes:0,cachePool:null,transitions:null},B(Sn,ke),ke|=n;else{if(!(n&1073741824))return e=o!==null?o.baseLanes|n:n,t.lanes=t.childLanes=1073741824,t.memoizedState={baseLanes:e,cachePool:null,transitions:null},t.updateQueue=null,B(Sn,ke),ke|=e,null;t.memoizedState={baseLanes:0,cachePool:null,transitions:null},r=o!==null?o.baseLanes:n,B(Sn,ke),ke|=r}else o!==null?(r=o.baseLanes|n,t.memoizedState=null):r=n,B(Sn,ke),ke|=r;return de(e,t,l,n),t.child}function of(e,t){var n=t.ref;(e===null&&n!==null||e!==null&&e.ref!==n)&&(t.flags|=512,t.flags|=2097152)}function Ni(e,t,n,r,l){var o=we(n)?Gt:ce.current;return o=jn(t,o),Tn(t,l),n=Cu(e,t,n,r,o,l),r=Nu(),e!==null&&!ye?(t.updateQueue=e.updateQueue,t.flags&=-2053,e.lanes&=~l,st(e,t,l)):(Q&&r&&du(t),t.flags|=1,de(e,t,n,l),t.child)}function Ws(e,t,n,r,l){if(we(n)){var o=!0;Tl(t)}else o=!1;if(Tn(t,l),t.stateNode===null)dl(e,t),Pc(t,n,r),xi(t,n,r,l),r=!0;else if(e===null){var i=t.stateNode,u=t.memoizedProps;i.props=u;var s=i.context,a=n.contextType;typeof a=="object"&&a!==null?a=ze(a):(a=we(n)?Gt:ce.current,a=jn(t,a));var d=n.getDerivedStateFromProps,h=typeof d=="function"||typeof i.getSnapshotBeforeUpdate=="function";h||typeof i.UNSAFE_componentWillReceiveProps!="function"&&typeof i.componentWillReceiveProps!="function"||(u!==r||s!==a)&&Ms(t,i,r,a),ht=!1;var p=t.memoizedState;i.state=p,Ol(t,r,i,l),s=t.memoizedState,u!==r||p!==s||ge.current||ht?(typeof d=="function"&&(Ei(t,n,d,r),s=t.memoizedState),(u=ht||Fs(t,n,u,r,p,s,a))?(h||typeof i.UNSAFE_componentWillMount!="function"&&typeof i.componentWillMount!="function"||(typeof i.componentWillMount=="function"&&i.componentWillMount(),typeof i.UNSAFE_componentWillMount=="function"&&i.UNSAFE_componentWillMount()),typeof i.componentDidMount=="function"&&(t.flags|=4194308)):(typeof i.componentDidMount=="function"&&(t.flags|=4194308),t.memoizedProps=r,t.memoizedState=s),i.props=r,i.state=s,i.context=a,r=u):(typeof i.componentDidMount=="function"&&(t.flags|=4194308),r=!1)}else{i=t.stateNode,Lc(e,t),u=t.memoizedProps,a=t.type===t.elementType?u:Ie(t.type,u),i.props=a,h=t.pendingProps,p=i.context,s=n.contextType,typeof s=="object"&&s!==null?s=ze(s):(s=we(n)?Gt:ce.current,s=jn(t,s));var g=n.getDerivedStateFromProps;(d=typeof g=="function"||typeof i.getSnapshotBeforeUpdate=="function")||typeof i.UNSAFE_componentWillReceiveProps!="function"&&typeof i.componentWillReceiveProps!="function"||(u!==h||p!==s)&&Ms(t,i,r,s),ht=!1,p=t.memoizedState,i.state=p,Ol(t,r,i,l);var S=t.memoizedState;u!==h||p!==S||ge.current||ht?(typeof g=="function"&&(Ei(t,n,g,r),S=t.memoizedState),(a=ht||Fs(t,n,a,r,p,S,s)||!1)?(d||typeof i.UNSAFE_componentWillUpdate!="function"&&typeof i.componentWillUpdate!="function"||(typeof i.componentWillUpdate=="function"&&i.componentWillUpdate(r,S,s),typeof i.UNSAFE_componentWillUpdate=="function"&&i.UNSAFE_componentWillUpdate(r,S,s)),typeof i.componentDidUpdate=="function"&&(t.flags|=4),typeof i.getSnapshotBeforeUpdate=="function"&&(t.flags|=1024)):(typeof i.componentDidUpdate!="function"||u===e.memoizedProps&&p===e.memoizedState||(t.flags|=4),typeof i.getSnapshotBeforeUpdate!="function"||u===e.memoizedProps&&p===e.memoizedState||(t.flags|=1024),t.memoizedProps=r,t.memoizedState=S),i.props=r,i.state=S,i.context=s,r=a):(typeof i.componentDidUpdate!="function"||u===e.memoizedProps&&p===e.memoizedState||(t.flags|=4),typeof i.getSnapshotBeforeUpdate!="function"||u===e.memoizedProps&&p===e.memoizedState||(t.flags|=1024),r=!1)}return Ti(e,t,n,r,o,l)}function Ti(e,t,n,r,l,o){of(e,t);var i=(t.flags&128)!==0;if(!r&&!i)return l&&Rs(t,n,!1),st(e,t,o);r=t.stateNode,Dm.current=t;var u=i&&typeof n.getDerivedStateFromError!="function"?null:r.render();return t.flags|=1,e!==null&&i?(t.child=On(t,e.child,null,o),t.child=On(t,null,u,o)):de(e,t,u,o),t.memoizedState=r.state,l&&Rs(t,n,!0),t.child}function uf(e){var t=e.stateNode;t.pendingContext?_s(e,t.pendingContext,t.pendingContext!==t.context):t.context&&_s(e,t.context,!1),Su(e,t.containerInfo)}function Vs(e,t,n,r,l){return Ln(),mu(l),t.flags|=256,de(e,t,n,r),t.child}var _i={dehydrated:null,treeContext:null,retryLane:0};function Ri(e){return{baseLanes:e,cachePool:null,transitions:null}}function sf(e,t,n){var r=t.pendingProps,l=G.current,o=!1,i=(t.flags&128)!==0,u;if((u=i)||(u=e!==null&&e.memoizedState===null?!1:(l&2)!==0),u?(o=!0,t.flags&=-129):(e===null||e.memoizedState!==null)&&(l|=1),B(G,l&1),e===null)return Si(t),e=t.memoizedState,e!==null&&(e=e.dehydrated,e!==null)?(t.mode&1?e.data==="$!"?t.lanes=8:t.lanes=1073741824:t.lanes=1,null):(i=r.children,e=r.fallback,o?(r=t.mode,o=t.child,i={mode:"hidden",children:i},!(r&1)&&o!==null?(o.childLanes=0,o.pendingProps=i):o=no(i,r,0,null),e=Qt(e,r,n,null),o.return=t,e.return=t,o.sibling=e,t.child=o,t.child.memoizedState=Ri(n),t.memoizedState=_i,e):Ru(t,i));if(l=e.memoizedState,l!==null&&(u=l.dehydrated,u!==null))return Im(e,t,i,r,u,l,n);if(o){o=r.fallback,i=t.mode,l=e.child,u=l.sibling;var s={mode:"hidden",children:r.children};return!(i&1)&&t.child!==l?(r=t.child,r.childLanes=0,r.pendingProps=s,t.deletions=null):(r=Rt(l,s),r.subtreeFlags=l.subtreeFlags&14680064),u!==null?o=Rt(u,o):(o=Qt(o,i,n,null),o.flags|=2),o.return=t,r.return=t,r.sibling=o,t.child=r,r=o,o=t.child,i=e.child.memoizedState,i=i===null?Ri(n):{baseLanes:i.baseLanes|n,cachePool:null,transitions:i.transitions},o.memoizedState=i,o.childLanes=e.childLanes&~n,t.memoizedState=_i,r}return o=e.child,e=o.sibling,r=Rt(o,{mode:"visible",children:r.children}),!(t.mode&1)&&(r.lanes=n),r.return=t,r.sibling=null,e!==null&&(n=t.deletions,n===null?(t.deletions=[e],t.flags|=16):n.push(e)),t.child=r,t.memoizedState=null,r}function Ru(e,t){return t=no({mode:"visible",children:t},e.mode,0,null),t.return=e,e.child=t}function Jr(e,t,n,r){return r!==null&&mu(r),On(t,e.child,null,n),e=Ru(t,t.pendingProps.children),e.flags|=2,t.memoizedState=null,e}function Im(e,t,n,r,l,o,i){if(n)return t.flags&256?(t.flags&=-257,r=zo(Error(k(422))),Jr(e,t,i,r)):t.memoizedState!==null?(t.child=e.child,t.flags|=128,null):(o=r.fallback,l=t.mode,r=no({mode:"visible",children:r.children},l,0,null),o=Qt(o,l,i,null),o.flags|=2,r.return=t,o.return=t,r.sibling=o,t.child=r,t.mode&1&&On(t,e.child,null,i),t.child.memoizedState=Ri(i),t.memoizedState=_i,o);if(!(t.mode&1))return Jr(e,t,i,null);if(l.data==="$!"){if(r=l.nextSibling&&l.nextSibling.dataset,r)var u=r.dgst;return r=u,o=Error(k(419)),r=zo(o,r,void 0),Jr(e,t,i,r)}if(u=(i&e.childLanes)!==0,ye||u){if(r=ne,r!==null){switch(i&-i){case 4:l=2;break;case 16:l=8;break;case 64:case 128:case 256:case 512:case 1024:case 2048:case 4096:case 8192:case 16384:case 32768:case 65536:case 131072:case 262144:case 524288:case 1048576:case 2097152:case 4194304:case 8388608:case 16777216:case 33554432:case 67108864:l=32;break;case 536870912:l=268435456;break;default:l=0}l=l&(r.suspendedLanes|i)?0:l,l!==0&&l!==o.retryLane&&(o.retryLane=l,ut(e,l),He(r,e,l,-1))}return Mu(),r=zo(Error(k(421))),Jr(e,t,i,r)}return l.data==="$?"?(t.flags|=128,t.child=e.child,t=Jm.bind(null,e),l._reactRetry=t,null):(e=o.treeContext,Ee=Ct(l.nextSibling),xe=t,Q=!0,Ue=null,e!==null&&(Le[Oe++]=tt,Le[Oe++]=nt,Le[Oe++]=Yt,tt=e.id,nt=e.overflow,Yt=t),t=Ru(t,r.children),t.flags|=4096,t)}function Qs(e,t,n){e.lanes|=t;var r=e.alternate;r!==null&&(r.lanes|=t),ki(e.return,t,n)}function $o(e,t,n,r,l){var o=e.memoizedState;o===null?e.memoizedState={isBackwards:t,rendering:null,renderingStartTime:0,last:r,tail:n,tailMode:l}:(o.isBackwards=t,o.rendering=null,o.renderingStartTime=0,o.last=r,o.tail=n,o.tailMode=l)}function af(e,t,n){var r=t.pendingProps,l=r.revealOrder,o=r.tail;if(de(e,t,r.children,n),r=G.current,r&2)r=r&1|2,t.flags|=128;else{if(e!==null&&e.flags&128)e:for(e=t.child;e!==null;){if(e.tag===13)e.memoizedState!==null&&Qs(e,n,t);else if(e.tag===19)Qs(e,n,t);else if(e.child!==null){e.child.return=e,e=e.child;continue}if(e===t)break e;for(;e.sibling===null;){if(e.return===null||e.return===t)break e;e=e.return}e.sibling.return=e.return,e=e.sibling}r&=1}if(B(G,r),!(t.mode&1))t.memoizedState=null;else switch(l){case"forwards":for(n=t.child,l=null;n!==null;)e=n.alternate,e!==null&&Pl(e)===null&&(l=n),n=n.sibling;n=l,n===null?(l=t.child,t.child=null):(l=n.sibling,n.sibling=null),$o(t,!1,l,n,o);break;case"backwards":for(n=null,l=t.child,t.child=null;l!==null;){if(e=l.alternate,e!==null&&Pl(e)===null){t.child=l;break}e=l.sibling,l.sibling=n,n=l,l=e}$o(t,!0,n,null,o);break;case"together":$o(t,!1,null,null,void 0);break;default:t.memoizedState=null}return t.child}function dl(e,t){!(t.mode&1)&&e!==null&&(e.alternate=null,t.alternate=null,t.flags|=2)}function st(e,t,n){if(e!==null&&(t.dependencies=e.dependencies),Zt|=t.lanes,!(n&t.childLanes))return null;if(e!==null&&t.child!==e.child)throw Error(k(153));if(t.child!==null){for(e=t.child,n=Rt(e,e.pendingProps),t.child=n,n.return=t;e.sibling!==null;)e=e.sibling,n=n.sibling=Rt(e,e.pendingProps),n.return=t;n.sibling=null}return t.child}function Am(e,t,n){switch(t.tag){case 3:uf(t),Ln();break;case 5:zc(t);break;case 1:we(t.type)&&Tl(t);break;case 4:Su(t,t.stateNode.containerInfo);break;case 10:var r=t.type._context,l=t.memoizedProps.value;B(jl,r._currentValue),r._currentValue=l;break;case 13:if(r=t.memoizedState,r!==null)return r.dehydrated!==null?(B(G,G.current&1),t.flags|=128,null):n&t.child.childLanes?sf(e,t,n):(B(G,G.current&1),e=st(e,t,n),e!==null?e.sibling:null);B(G,G.current&1);break;case 19:if(r=(n&t.childLanes)!==0,e.flags&128){if(r)return af(e,t,n);t.flags|=128}if(l=t.memoizedState,l!==null&&(l.rendering=null,l.tail=null,l.lastEffect=null),B(G,G.current),r)break;return null;case 22:case 23:return t.lanes=0,lf(e,t,n)}return st(e,t,n)}var cf,ji,ff,df;cf=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}};ji=function(){};ff=function(e,t,n,r){var l=e.memoizedProps;if(l!==r){e=t.stateNode,Wt(Je.current);var o=null;switch(n){case"input":l=Jo(e,l),r=Jo(e,r),o=[];break;case"select":l=X({},l,{value:void 0}),r=X({},r,{value:void 0}),o=[];break;case"textarea":l=ei(e,l),r=ei(e,r),o=[];break;default:typeof l.onClick!="function"&&typeof r.onClick=="function"&&(e.onclick=Cl)}ni(n,r);var i;n=null;for(a in l)if(!r.hasOwnProperty(a)&&l.hasOwnProperty(a)&&l[a]!=null)if(a==="style"){var u=l[a];for(i in u)u.hasOwnProperty(i)&&(n||(n={}),n[i]="")}else a!=="dangerouslySetInnerHTML"&&a!=="children"&&a!=="suppressContentEditableWarning"&&a!=="suppressHydrationWarning"&&a!=="autoFocus"&&(dr.hasOwnProperty(a)?o||(o=[]):(o=o||[]).push(a,null));for(a in r){var s=r[a];if(u=l!=null?l[a]:void 0,r.hasOwnProperty(a)&&s!==u&&(s!=null||u!=null))if(a==="style")if(u){for(i in u)!u.hasOwnProperty(i)||s&&s.hasOwnProperty(i)||(n||(n={}),n[i]="");for(i in s)s.hasOwnProperty(i)&&u[i]!==s[i]&&(n||(n={}),n[i]=s[i])}else n||(o||(o=[]),o.push(a,n)),n=s;else a==="dangerouslySetInnerHTML"?(s=s?s.__html:void 0,u=u?u.__html:void 0,s!=null&&u!==s&&(o=o||[]).push(a,s)):a==="children"?typeof s!="string"&&typeof s!="number"||(o=o||[]).push(a,""+s):a!=="suppressContentEditableWarning"&&a!=="suppressHydrationWarning"&&(dr.hasOwnProperty(a)?(s!=null&&a==="onScroll"&&W("scroll",e),o||u===s||(o=[])):(o=o||[]).push(a,s))}n&&(o=o||[]).push("style",n);var a=o;(t.updateQueue=a)&&(t.flags|=4)}};df=function(e,t,n,r){n!==r&&(t.flags|=4)};function Xn(e,t){if(!Q)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 se(e){var t=e.alternate!==null&&e.alternate.child===e.child,n=0,r=0;if(t)for(var l=e.child;l!==null;)n|=l.lanes|l.childLanes,r|=l.subtreeFlags&14680064,r|=l.flags&14680064,l.return=e,l=l.sibling;else for(l=e.child;l!==null;)n|=l.lanes|l.childLanes,r|=l.subtreeFlags,r|=l.flags,l.return=e,l=l.sibling;return e.subtreeFlags|=r,e.childLanes=n,t}function Um(e,t,n){var r=t.pendingProps;switch(pu(t),t.tag){case 2:case 16:case 15:case 0:case 11:case 7:case 8:case 12:case 9:case 14:return se(t),null;case 1:return we(t.type)&&Nl(),se(t),null;case 3:return r=t.stateNode,Pn(),V(ge),V(ce),Eu(),r.pendingContext&&(r.context=r.pendingContext,r.pendingContext=null),(e===null||e.child===null)&&(Xr(t)?t.flags|=4:e===null||e.memoizedState.isDehydrated&&!(t.flags&256)||(t.flags|=1024,Ue!==null&&(Di(Ue),Ue=null))),ji(e,t),se(t),null;case 5:ku(t);var l=Wt(Cr.current);if(n=t.type,e!==null&&t.stateNode!=null)ff(e,t,n,r,l),e.ref!==t.ref&&(t.flags|=512,t.flags|=2097152);else{if(!r){if(t.stateNode===null)throw Error(k(166));return se(t),null}if(e=Wt(Je.current),Xr(t)){r=t.stateNode,n=t.type;var o=t.memoizedProps;switch(r[Xe]=t,r[Er]=o,e=(t.mode&1)!==0,n){case"dialog":W("cancel",r),W("close",r);break;case"iframe":case"object":case"embed":W("load",r);break;case"video":case"audio":for(l=0;l<\/script>",e=e.removeChild(e.firstChild)):typeof r.is=="string"?e=i.createElement(n,{is:r.is}):(e=i.createElement(n),n==="select"&&(i=e,r.multiple?i.multiple=!0:r.size&&(i.size=r.size))):e=i.createElementNS(e,n),e[Xe]=t,e[Er]=r,cf(e,t,!1,!1),t.stateNode=e;e:{switch(i=ri(n,r),n){case"dialog":W("cancel",e),W("close",e),l=r;break;case"iframe":case"object":case"embed":W("load",e),l=r;break;case"video":case"audio":for(l=0;lMn&&(t.flags|=128,r=!0,Xn(o,!1),t.lanes=4194304)}else{if(!r)if(e=Pl(i),e!==null){if(t.flags|=128,r=!0,n=e.updateQueue,n!==null&&(t.updateQueue=n,t.flags|=4),Xn(o,!0),o.tail===null&&o.tailMode==="hidden"&&!i.alternate&&!Q)return se(t),null}else 2*J()-o.renderingStartTime>Mn&&n!==1073741824&&(t.flags|=128,r=!0,Xn(o,!1),t.lanes=4194304);o.isBackwards?(i.sibling=t.child,t.child=i):(n=o.last,n!==null?n.sibling=i:t.child=i,o.last=i)}return o.tail!==null?(t=o.tail,o.rendering=t,o.tail=t.sibling,o.renderingStartTime=J(),t.sibling=null,n=G.current,B(G,r?n&1|2:n&1),t):(se(t),null);case 22:case 23:return Fu(),r=t.memoizedState!==null,e!==null&&e.memoizedState!==null!==r&&(t.flags|=8192),r&&t.mode&1?ke&1073741824&&(se(t),t.subtreeFlags&6&&(t.flags|=8192)):se(t),null;case 24:return null;case 25:return null}throw Error(k(156,t.tag))}function Bm(e,t){switch(pu(t),t.tag){case 1:return we(t.type)&&Nl(),e=t.flags,e&65536?(t.flags=e&-65537|128,t):null;case 3:return Pn(),V(ge),V(ce),Eu(),e=t.flags,e&65536&&!(e&128)?(t.flags=e&-65537|128,t):null;case 5:return ku(t),null;case 13:if(V(G),e=t.memoizedState,e!==null&&e.dehydrated!==null){if(t.alternate===null)throw Error(k(340));Ln()}return e=t.flags,e&65536?(t.flags=e&-65537|128,t):null;case 19:return V(G),null;case 4:return Pn(),null;case 10:return yu(t.type._context),null;case 22:case 23:return Fu(),null;case 24:return null;default:return null}}var qr=!1,ae=!1,Hm=typeof WeakSet=="function"?WeakSet:Set,_=null;function wn(e,t){var n=e.ref;if(n!==null)if(typeof n=="function")try{n(null)}catch(r){Z(e,t,r)}else n.current=null}function Li(e,t,n){try{n()}catch(r){Z(e,t,r)}}var Ks=!1;function Wm(e,t){if(pi=kl,e=hc(),fu(e)){if("selectionStart"in e)var n={start:e.selectionStart,end:e.selectionEnd};else e:{n=(n=e.ownerDocument)&&n.defaultView||window;var r=n.getSelection&&n.getSelection();if(r&&r.rangeCount!==0){n=r.anchorNode;var l=r.anchorOffset,o=r.focusNode;r=r.focusOffset;try{n.nodeType,o.nodeType}catch{n=null;break e}var i=0,u=-1,s=-1,a=0,d=0,h=e,p=null;t:for(;;){for(var g;h!==n||l!==0&&h.nodeType!==3||(u=i+l),h!==o||r!==0&&h.nodeType!==3||(s=i+r),h.nodeType===3&&(i+=h.nodeValue.length),(g=h.firstChild)!==null;)p=h,h=g;for(;;){if(h===e)break t;if(p===n&&++a===l&&(u=i),p===o&&++d===r&&(s=i),(g=h.nextSibling)!==null)break;h=p,p=h.parentNode}h=g}n=u===-1||s===-1?null:{start:u,end:s}}else n=null}n=n||{start:0,end:0}}else n=null;for(mi={focusedElem:e,selectionRange:n},kl=!1,_=t;_!==null;)if(t=_,e=t.child,(t.subtreeFlags&1028)!==0&&e!==null)e.return=t,_=e;else for(;_!==null;){t=_;try{var S=t.alternate;if(t.flags&1024)switch(t.tag){case 0:case 11:case 15:break;case 1:if(S!==null){var E=S.memoizedProps,L=S.memoizedState,f=t.stateNode,c=f.getSnapshotBeforeUpdate(t.elementType===t.type?E:Ie(t.type,E),L);f.__reactInternalSnapshotBeforeUpdate=c}break;case 3:var m=t.stateNode.containerInfo;m.nodeType===1?m.textContent="":m.nodeType===9&&m.documentElement&&m.removeChild(m.documentElement);break;case 5:case 6:case 4:case 17:break;default:throw Error(k(163))}}catch(w){Z(t,t.return,w)}if(e=t.sibling,e!==null){e.return=t.return,_=e;break}_=t.return}return S=Ks,Ks=!1,S}function ar(e,t,n){var r=t.updateQueue;if(r=r!==null?r.lastEffect:null,r!==null){var l=r=r.next;do{if((l.tag&e)===e){var o=l.destroy;l.destroy=void 0,o!==void 0&&Li(t,n,o)}l=l.next}while(l!==r)}}function eo(e,t){if(t=t.updateQueue,t=t!==null?t.lastEffect:null,t!==null){var n=t=t.next;do{if((n.tag&e)===e){var r=n.create;n.destroy=r()}n=n.next}while(n!==t)}}function Oi(e){var t=e.ref;if(t!==null){var n=e.stateNode;switch(e.tag){case 5:e=n;break;default:e=n}typeof t=="function"?t(e):t.current=e}}function pf(e){var t=e.alternate;t!==null&&(e.alternate=null,pf(t)),e.child=null,e.deletions=null,e.sibling=null,e.tag===5&&(t=e.stateNode,t!==null&&(delete t[Xe],delete t[Er],delete t[yi],delete t[Nm],delete t[Tm])),e.stateNode=null,e.return=null,e.dependencies=null,e.memoizedProps=null,e.memoizedState=null,e.pendingProps=null,e.stateNode=null,e.updateQueue=null}function mf(e){return e.tag===5||e.tag===3||e.tag===4}function Gs(e){e:for(;;){for(;e.sibling===null;){if(e.return===null||mf(e.return))return null;e=e.return}for(e.sibling.return=e.return,e=e.sibling;e.tag!==5&&e.tag!==6&&e.tag!==18;){if(e.flags&2||e.child===null||e.tag===4)continue e;e.child.return=e,e=e.child}if(!(e.flags&2))return e.stateNode}}function Pi(e,t,n){var r=e.tag;if(r===5||r===6)e=e.stateNode,t?n.nodeType===8?n.parentNode.insertBefore(e,t):n.insertBefore(e,t):(n.nodeType===8?(t=n.parentNode,t.insertBefore(e,n)):(t=n,t.appendChild(e)),n=n._reactRootContainer,n!=null||t.onclick!==null||(t.onclick=Cl));else if(r!==4&&(e=e.child,e!==null))for(Pi(e,t,n),e=e.sibling;e!==null;)Pi(e,t,n),e=e.sibling}function Fi(e,t,n){var r=e.tag;if(r===5||r===6)e=e.stateNode,t?n.insertBefore(e,t):n.appendChild(e);else if(r!==4&&(e=e.child,e!==null))for(Fi(e,t,n),e=e.sibling;e!==null;)Fi(e,t,n),e=e.sibling}var re=null,Ae=!1;function pt(e,t,n){for(n=n.child;n!==null;)hf(e,t,n),n=n.sibling}function hf(e,t,n){if(Ze&&typeof Ze.onCommitFiberUnmount=="function")try{Ze.onCommitFiberUnmount(Kl,n)}catch{}switch(n.tag){case 5:ae||wn(n,t);case 6:var r=re,l=Ae;re=null,pt(e,t,n),re=r,Ae=l,re!==null&&(Ae?(e=re,n=n.stateNode,e.nodeType===8?e.parentNode.removeChild(n):e.removeChild(n)):re.removeChild(n.stateNode));break;case 18:re!==null&&(Ae?(e=re,n=n.stateNode,e.nodeType===8?jo(e.parentNode,n):e.nodeType===1&&jo(e,n),yr(e)):jo(re,n.stateNode));break;case 4:r=re,l=Ae,re=n.stateNode.containerInfo,Ae=!0,pt(e,t,n),re=r,Ae=l;break;case 0:case 11:case 14:case 15:if(!ae&&(r=n.updateQueue,r!==null&&(r=r.lastEffect,r!==null))){l=r=r.next;do{var o=l,i=o.destroy;o=o.tag,i!==void 0&&(o&2||o&4)&&Li(n,t,i),l=l.next}while(l!==r)}pt(e,t,n);break;case 1:if(!ae&&(wn(n,t),r=n.stateNode,typeof r.componentWillUnmount=="function"))try{r.props=n.memoizedProps,r.state=n.memoizedState,r.componentWillUnmount()}catch(u){Z(n,t,u)}pt(e,t,n);break;case 21:pt(e,t,n);break;case 22:n.mode&1?(ae=(r=ae)||n.memoizedState!==null,pt(e,t,n),ae=r):pt(e,t,n);break;default:pt(e,t,n)}}function Ys(e){var t=e.updateQueue;if(t!==null){e.updateQueue=null;var n=e.stateNode;n===null&&(n=e.stateNode=new Hm),t.forEach(function(r){var l=qm.bind(null,e,r);n.has(r)||(n.add(r),r.then(l,l))})}}function De(e,t){var n=t.deletions;if(n!==null)for(var r=0;rl&&(l=i),r&=~o}if(r=l,r=J()-r,r=(120>r?120:480>r?480:1080>r?1080:1920>r?1920:3e3>r?3e3:4320>r?4320:1960*Qm(r/1960))-r,10e?16:e,St===null)var r=!1;else{if(e=St,St=null,Dl=0,z&6)throw Error(k(331));var l=z;for(z|=4,_=e.current;_!==null;){var o=_,i=o.child;if(_.flags&16){var u=o.deletions;if(u!==null){for(var s=0;sJ()-Ou?Vt(e,0):Lu|=n),Se(e,t)}function xf(e,t){t===0&&(e.mode&1?(t=Wr,Wr<<=1,!(Wr&130023424)&&(Wr=4194304)):t=1);var n=pe();e=ut(e,t),e!==null&&(Pr(e,t,n),Se(e,n))}function Jm(e){var t=e.memoizedState,n=0;t!==null&&(n=t.retryLane),xf(e,n)}function qm(e,t){var n=0;switch(e.tag){case 13:var r=e.stateNode,l=e.memoizedState;l!==null&&(n=l.retryLane);break;case 19:r=e.stateNode;break;default:throw Error(k(314))}r!==null&&r.delete(t),xf(e,n)}var Cf;Cf=function(e,t,n){if(e!==null)if(e.memoizedProps!==t.pendingProps||ge.current)ye=!0;else{if(!(e.lanes&n)&&!(t.flags&128))return ye=!1,Am(e,t,n);ye=!!(e.flags&131072)}else ye=!1,Q&&t.flags&1048576&&Tc(t,Rl,t.index);switch(t.lanes=0,t.tag){case 2:var r=t.type;dl(e,t),e=t.pendingProps;var l=jn(t,ce.current);Tn(t,n),l=Cu(null,t,r,e,l,n);var o=Nu();return t.flags|=1,typeof l=="object"&&l!==null&&typeof l.render=="function"&&l.$$typeof===void 0?(t.tag=1,t.memoizedState=null,t.updateQueue=null,we(r)?(o=!0,Tl(t)):o=!1,t.memoizedState=l.state!==null&&l.state!==void 0?l.state:null,wu(t),l.updater=ql,t.stateNode=l,l._reactInternals=t,xi(t,r,e,n),t=Ti(null,t,r,!0,o,n)):(t.tag=0,Q&&o&&du(t),de(null,t,l,n),t=t.child),t;case 16:r=t.elementType;e:{switch(dl(e,t),e=t.pendingProps,l=r._init,r=l(r._payload),t.type=r,l=t.tag=eh(r),e=Ie(r,e),l){case 0:t=Ni(null,t,r,e,n);break e;case 1:t=Ws(null,t,r,e,n);break e;case 11:t=Bs(null,t,r,e,n);break e;case 14:t=Hs(null,t,r,Ie(r.type,e),n);break e}throw Error(k(306,r,""))}return t;case 0:return r=t.type,l=t.pendingProps,l=t.elementType===r?l:Ie(r,l),Ni(e,t,r,l,n);case 1:return r=t.type,l=t.pendingProps,l=t.elementType===r?l:Ie(r,l),Ws(e,t,r,l,n);case 3:e:{if(uf(t),e===null)throw Error(k(387));r=t.pendingProps,o=t.memoizedState,l=o.element,Lc(e,t),Ol(t,r,null,n);var i=t.memoizedState;if(r=i.element,o.isDehydrated)if(o={element:r,isDehydrated:!1,cache:i.cache,pendingSuspenseBoundaries:i.pendingSuspenseBoundaries,transitions:i.transitions},t.updateQueue.baseState=o,t.memoizedState=o,t.flags&256){l=Fn(Error(k(423)),t),t=Vs(e,t,r,n,l);break e}else if(r!==l){l=Fn(Error(k(424)),t),t=Vs(e,t,r,n,l);break e}else for(Ee=Ct(t.stateNode.containerInfo.firstChild),xe=t,Q=!0,Ue=null,n=Mc(t,null,r,n),t.child=n;n;)n.flags=n.flags&-3|4096,n=n.sibling;else{if(Ln(),r===l){t=st(e,t,n);break e}de(e,t,r,n)}t=t.child}return t;case 5:return zc(t),e===null&&Si(t),r=t.type,l=t.pendingProps,o=e!==null?e.memoizedProps:null,i=l.children,hi(r,l)?i=null:o!==null&&hi(r,o)&&(t.flags|=32),of(e,t),de(e,t,i,n),t.child;case 6:return e===null&&Si(t),null;case 13:return sf(e,t,n);case 4:return Su(t,t.stateNode.containerInfo),r=t.pendingProps,e===null?t.child=On(t,null,r,n):de(e,t,r,n),t.child;case 11:return r=t.type,l=t.pendingProps,l=t.elementType===r?l:Ie(r,l),Bs(e,t,r,l,n);case 7:return de(e,t,t.pendingProps,n),t.child;case 8:return de(e,t,t.pendingProps.children,n),t.child;case 12:return de(e,t,t.pendingProps.children,n),t.child;case 10:e:{if(r=t.type._context,l=t.pendingProps,o=t.memoizedProps,i=l.value,B(jl,r._currentValue),r._currentValue=i,o!==null)if(We(o.value,i)){if(o.children===l.children&&!ge.current){t=st(e,t,n);break e}}else for(o=t.child,o!==null&&(o.return=t);o!==null;){var u=o.dependencies;if(u!==null){i=o.child;for(var s=u.firstContext;s!==null;){if(s.context===r){if(o.tag===1){s=rt(-1,n&-n),s.tag=2;var a=o.updateQueue;if(a!==null){a=a.shared;var d=a.pending;d===null?s.next=s:(s.next=d.next,d.next=s),a.pending=s}}o.lanes|=n,s=o.alternate,s!==null&&(s.lanes|=n),ki(o.return,n,t),u.lanes|=n;break}s=s.next}}else if(o.tag===10)i=o.type===t.type?null:o.child;else if(o.tag===18){if(i=o.return,i===null)throw Error(k(341));i.lanes|=n,u=i.alternate,u!==null&&(u.lanes|=n),ki(i,n,t),i=o.sibling}else i=o.child;if(i!==null)i.return=o;else for(i=o;i!==null;){if(i===t){i=null;break}if(o=i.sibling,o!==null){o.return=i.return,i=o;break}i=i.return}o=i}de(e,t,l.children,n),t=t.child}return t;case 9:return l=t.type,r=t.pendingProps.children,Tn(t,n),l=ze(l),r=r(l),t.flags|=1,de(e,t,r,n),t.child;case 14:return r=t.type,l=Ie(r,t.pendingProps),l=Ie(r.type,l),Hs(e,t,r,l,n);case 15:return rf(e,t,t.type,t.pendingProps,n);case 17:return r=t.type,l=t.pendingProps,l=t.elementType===r?l:Ie(r,l),dl(e,t),t.tag=1,we(r)?(e=!0,Tl(t)):e=!1,Tn(t,n),Pc(t,r,l),xi(t,r,l,n),Ti(null,t,r,!0,e,n);case 19:return af(e,t,n);case 22:return lf(e,t,n)}throw Error(k(156,t.tag))};function Nf(e,t){return Za(e,t)}function bm(e,t,n,r){this.tag=e,this.key=n,this.sibling=this.child=this.return=this.stateNode=this.type=this.elementType=null,this.index=0,this.ref=null,this.pendingProps=t,this.dependencies=this.memoizedState=this.updateQueue=this.memoizedProps=null,this.mode=r,this.subtreeFlags=this.flags=0,this.deletions=null,this.childLanes=this.lanes=0,this.alternate=null}function Fe(e,t,n,r){return new bm(e,t,n,r)}function zu(e){return e=e.prototype,!(!e||!e.isReactComponent)}function eh(e){if(typeof e=="function")return zu(e)?1:0;if(e!=null){if(e=e.$$typeof,e===eu)return 11;if(e===tu)return 14}return 2}function Rt(e,t){var n=e.alternate;return n===null?(n=Fe(e.tag,t,e.key,e.mode),n.elementType=e.elementType,n.type=e.type,n.stateNode=e.stateNode,n.alternate=e,e.alternate=n):(n.pendingProps=t,n.type=e.type,n.flags=0,n.subtreeFlags=0,n.deletions=null),n.flags=e.flags&14680064,n.childLanes=e.childLanes,n.lanes=e.lanes,n.child=e.child,n.memoizedProps=e.memoizedProps,n.memoizedState=e.memoizedState,n.updateQueue=e.updateQueue,t=e.dependencies,n.dependencies=t===null?null:{lanes:t.lanes,firstContext:t.firstContext},n.sibling=e.sibling,n.index=e.index,n.ref=e.ref,n}function hl(e,t,n,r,l,o){var i=2;if(r=e,typeof e=="function")zu(e)&&(i=1);else if(typeof e=="string")i=5;else e:switch(e){case cn:return Qt(n.children,l,o,t);case bi:i=8,l|=8;break;case Go:return e=Fe(12,n,t,l|2),e.elementType=Go,e.lanes=o,e;case Yo:return e=Fe(13,n,t,l),e.elementType=Yo,e.lanes=o,e;case Xo:return e=Fe(19,n,t,l),e.elementType=Xo,e.lanes=o,e;case Fa:return no(n,l,o,t);default:if(typeof e=="object"&&e!==null)switch(e.$$typeof){case Oa:i=10;break e;case Pa:i=9;break e;case eu:i=11;break e;case tu:i=14;break e;case mt:i=16,r=null;break e}throw Error(k(130,e==null?e:typeof e,""))}return t=Fe(i,n,t,l),t.elementType=e,t.type=r,t.lanes=o,t}function Qt(e,t,n,r){return e=Fe(7,e,r,t),e.lanes=n,e}function no(e,t,n,r){return e=Fe(22,e,r,t),e.elementType=Fa,e.lanes=n,e.stateNode={isHidden:!1},e}function Do(e,t,n){return e=Fe(6,e,null,t),e.lanes=n,e}function Io(e,t,n){return t=Fe(4,e.children!==null?e.children:[],e.key,t),t.lanes=n,t.stateNode={containerInfo:e.containerInfo,pendingChildren:null,implementation:e.implementation},t}function th(e,t,n,r,l){this.tag=t,this.containerInfo=e,this.finishedWork=this.pingCache=this.current=this.pendingChildren=null,this.timeoutHandle=-1,this.callbackNode=this.pendingContext=this.context=null,this.callbackPriority=0,this.eventTimes=go(0),this.expirationTimes=go(-1),this.entangledLanes=this.finishedLanes=this.mutableReadLanes=this.expiredLanes=this.pingedLanes=this.suspendedLanes=this.pendingLanes=0,this.entanglements=go(0),this.identifierPrefix=r,this.onRecoverableError=l,this.mutableSourceEagerHydrationData=null}function $u(e,t,n,r,l,o,i,u,s){return e=new th(e,t,n,u,s),t===1?(t=1,o===!0&&(t|=8)):t=0,o=Fe(3,null,null,t),e.current=o,o.stateNode=e,o.memoizedState={element:r,isDehydrated:n,cache:null,transitions:null,pendingSuspenseBoundaries:null},wu(o),e}function nh(e,t,n){var r=3"u"||typeof __REACT_DEVTOOLS_GLOBAL_HOOK__.checkDCE!="function"))try{__REACT_DEVTOOLS_GLOBAL_HOOK__.checkDCE(jf)}catch(e){console.error(e)}}jf(),Ta.exports=Ne;var Lf=Ta.exports;const kn=Vl(Lf);var na=Lf;Qo.createRoot=na.createRoot,Qo.hydrateRoot=na.hydrateRoot;var Of={exports:{}};/*! Copyright (c) 2018 Jed Watson. Licensed under the MIT License (MIT), see http://jedwatson.github.io/classnames -*/(function(e){(function(){var t={}.hasOwnProperty;function n(){for(var r=[],l=0;l=0)&&(n[l]=e[l]);return n}function ta(e){return"default"+e.charAt(0).toUpperCase()+e.substr(1)}function ih(e){var t=uh(e,"string");return typeof t=="symbol"?t:String(t)}function uh(e,t){if(typeof e!="object"||e===null)return e;var n=e[Symbol.toPrimitive];if(n!==void 0){var r=n.call(e,t||"default");if(typeof r!="object")return r;throw new TypeError("@@toPrimitive must return a primitive value.")}return(t==="string"?String:Number)(e)}function sh(e,t,n){var r=v.useRef(e!==void 0),l=v.useState(t),o=l[0],i=l[1],u=e!==void 0,s=r.current;return r.current=u,!u&&s&&o!==t&&i(t),[u?e:o,v.useCallback(function(a){for(var m=arguments.length,h=new Array(m>1?m-1:0),d=1;d{o.target===e&&(l(),t(o))},n+r)}function Ph(e){e.offsetHeight}const la=e=>!e||typeof e=="function"?e:t=>{e.current=t};function Fh(e,t){const n=la(e),r=la(t);return l=>{n&&n(l),r&&r(l)}}function io(e,t){return v.useMemo(()=>Fh(e,t),[e,t])}function Mh(e){return e&&"setState"in e?kn.findDOMNode(e):e??null}const zh=Bt.forwardRef(({onEnter:e,onEntering:t,onEntered:n,onExit:r,onExiting:l,onExited:o,addEndListener:i,children:u,childRef:s,...a},m)=>{const h=v.useRef(null),d=io(h,s),g=_=>{d(Mh(_))},S=_=>N=>{_&&h.current&&_(h.current,N)},E=v.useCallback(S(e),[e]),j=v.useCallback(S(t),[t]),f=v.useCallback(S(n),[n]),c=v.useCallback(S(r),[r]),p=v.useCallback(S(l),[l]),w=v.useCallback(S(o),[o]),C=v.useCallback(S(i),[i]);return y.jsx(Th,{ref:m,...a,onEnter:E,onEntered:f,onEntering:j,onExit:c,onExited:w,onExiting:p,addEndListener:C,nodeRef:h,children:typeof u=="function"?(_,N)=>u(_,{...N,ref:g}):Bt.cloneElement(u,{ref:g})})}),$h=zh;function Dh(e){const t=v.useRef(e);return v.useEffect(()=>{t.current=e},[e]),t}function Pe(e){const t=Dh(e);return v.useCallback(function(...n){return t.current&&t.current(...n)},[t])}const Bf=e=>v.forwardRef((t,n)=>y.jsx("div",{...t,ref:n,className:M(t.className,e)})),Af=Bf("h4");Af.displayName="DivStyledAsH4";const Uf=v.forwardRef(({className:e,bsPrefix:t,as:n=Af,...r},l)=>(t=H(t,"alert-heading"),y.jsx(n,{ref:l,className:M(e,t),...r})));Uf.displayName="AlertHeading";const Ih=Uf;function Bh(){return v.useState(null)}function Ah(){const e=v.useRef(!0),t=v.useRef(()=>e.current);return v.useEffect(()=>(e.current=!0,()=>{e.current=!1}),[]),t.current}function Uh(e){const t=v.useRef(null);return v.useEffect(()=>{t.current=e}),t.current}const Hh=typeof global<"u"&&global.navigator&&global.navigator.product==="ReactNative",Wh=typeof document<"u",oa=Wh||Hh?v.useLayoutEffect:v.useEffect,Vh=["as","disabled"];function Qh(e,t){if(e==null)return{};var n={},r=Object.keys(e),l,o;for(o=0;o=0)&&(n[l]=e[l]);return n}function Kh(e){return!e||e.trim()==="#"}function Iu({tagName:e,disabled:t,href:n,target:r,rel:l,role:o,onClick:i,tabIndex:u=0,type:s}){e||(n!=null||r!=null||l!=null?e="a":e="button");const a={tagName:e};if(e==="button")return[{type:s||"button",disabled:t},a];const m=d=>{if((t||e==="a"&&Kh(n))&&d.preventDefault(),t){d.stopPropagation();return}i==null||i(d)},h=d=>{d.key===" "&&(d.preventDefault(),m(d))};return e==="a"&&(n||(n="#"),t&&(n=void 0)),[{role:o??"button",disabled:void 0,tabIndex:t?void 0:u,href:n,target:e==="a"?r:void 0,"aria-disabled":t||void 0,rel:e==="a"?l:void 0,onClick:m,onKeyDown:h},a]}const Gh=v.forwardRef((e,t)=>{let{as:n,disabled:r}=e,l=Qh(e,Vh);const[o,{tagName:i}]=Iu(Object.assign({tagName:n,disabled:r},l));return y.jsx(i,Object.assign({},l,o,{ref:t}))});Gh.displayName="Button";const Yh=["onKeyDown"];function Xh(e,t){if(e==null)return{};var n={},r=Object.keys(e),l,o;for(o=0;o=0)&&(n[l]=e[l]);return n}function Zh(e){return!e||e.trim()==="#"}const Hf=v.forwardRef((e,t)=>{let{onKeyDown:n}=e,r=Xh(e,Yh);const[l]=Iu(Object.assign({tagName:"a"},r)),o=Pe(i=>{l.onKeyDown(i),n==null||n(i)});return Zh(r.href)||r.role==="button"?y.jsx("a",Object.assign({ref:t},r,l,{onKeyDown:o})):y.jsx("a",Object.assign({ref:t},r,{onKeyDown:n}))});Hf.displayName="Anchor";const Jh=Hf,Wf=v.forwardRef(({className:e,bsPrefix:t,as:n=Jh,...r},l)=>(t=H(t,"alert-link"),y.jsx(n,{ref:l,className:M(e,t),...r})));Wf.displayName="AlertLink";const qh=Wf,bh={[vt]:"show",[It]:"show"},Vf=v.forwardRef(({className:e,children:t,transitionClasses:n={},onEnter:r,...l},o)=>{const i={in:!1,timeout:300,mountOnEnter:!1,unmountOnExit:!1,appear:!1,...l},u=v.useCallback((s,a)=>{Ph(s),r==null||r(s,a)},[r]);return y.jsx($h,{ref:o,addEndListener:Oh,...i,onEnter:u,childRef:t.ref,children:(s,a)=>v.cloneElement(t,{...a,className:M("fade",e,t.props.className,bh[s],n[s])})})});Vf.displayName="Fade";const Bl=Vf,ev={"aria-label":lt.string,onClick:lt.func,variant:lt.oneOf(["white"])},Bu=v.forwardRef(({className:e,variant:t,"aria-label":n="Close",...r},l)=>y.jsx("button",{ref:l,type:"button",className:M("btn-close",t&&`btn-close-${t}`,e),"aria-label":n,...r}));Bu.displayName="CloseButton";Bu.propTypes=ev;const Qf=Bu,Kf=v.forwardRef((e,t)=>{const{bsPrefix:n,show:r=!0,closeLabel:l="Close alert",closeVariant:o,className:i,children:u,variant:s="primary",onClose:a,dismissible:m,transition:h=Bl,...d}=ah(e,{show:"onClose"}),g=H(n,"alert"),S=Pe(f=>{a&&a(!1,f)}),E=h===!0?Bl:h,j=y.jsxs("div",{role:"alert",...E?void 0:d,ref:t,className:M(i,g,s&&`${g}-${s}`,m&&`${g}-dismissible`),children:[m&&y.jsx(Qf,{onClick:S,"aria-label":l,variant:o}),u]});return E?y.jsx(E,{unmountOnExit:!0,...d,ref:void 0,in:r,children:j}):r?j:null});Kf.displayName="Alert";const ia=Object.assign(Kf,{Link:qh,Heading:Ih}),Gf=v.forwardRef(({as:e,bsPrefix:t,variant:n="primary",size:r,active:l=!1,disabled:o=!1,className:i,...u},s)=>{const a=H(t,"btn"),[m,{tagName:h}]=Iu({tagName:e,disabled:o,...u}),d=h;return y.jsx(d,{...m,...u,ref:s,disabled:o,className:M(i,a,l&&"active",n&&`${a}-${n}`,r&&`${a}-${r}`,u.href&&o&&"disabled")})});Gf.displayName="Button";const Ai=Gf;function tv(e){const t=v.useRef(e);return t.current=e,t}function Yf(e){const t=tv(e);v.useEffect(()=>()=>t.current(),[])}function nv(e,t){let n=0;return v.Children.map(e,r=>v.isValidElement(r)?t(r,n++):r)}function rv(e,t){return v.Children.toArray(e).some(n=>v.isValidElement(n)&&n.type===t)}function lv({as:e,bsPrefix:t,className:n,...r}){t=H(t,"col");const l=Of(),o=Pf(),i=[],u=[];return l.forEach(s=>{const a=r[s];delete r[s];let m,h,d;typeof a=="object"&&a!=null?{span:m,offset:h,order:d}=a:m=a;const g=s!==o?`-${s}`:"";m&&i.push(m===!0?`${t}${g}`:`${t}${g}-${m}`),d!=null&&u.push(`order${g}-${d}`),h!=null&&u.push(`offset${g}-${h}`)}),[{...r,className:M(n,...i,...u)},{as:e,bsPrefix:t,spans:i}]}const Xf=v.forwardRef((e,t)=>{const[{className:n,...r},{as:l="div",bsPrefix:o,spans:i}]=lv(e);return y.jsx(l,{...r,ref:t,className:M(n,!i.length&&o)})});Xf.displayName="Col";const Zf=Xf,Jf=v.forwardRef(({bsPrefix:e,fluid:t=!1,as:n="div",className:r,...l},o)=>{const i=H(e,"container"),u=typeof t=="string"?`-${t}`:"-fluid";return y.jsx(n,{ref:o,...l,className:M(r,t?`${i}${u}`:i)})});Jf.displayName="Container";const ov=Jf;var iv=Function.prototype.bind.call(Function.prototype.call,[].slice);function on(e,t){return iv(e.querySelectorAll(t))}function ua(e,t){if(e.contains)return e.contains(t);if(e.compareDocumentPosition)return e===t||!!(e.compareDocumentPosition(t)&16)}const uv="data-rr-ui-";function sv(e){return`${uv}${e}`}const qf=v.createContext(In?window:void 0);qf.Provider;function Au(){return v.useContext(qf)}const av={type:lt.string,tooltip:lt.bool,as:lt.elementType},Uu=v.forwardRef(({as:e="div",className:t,type:n="valid",tooltip:r=!1,...l},o)=>y.jsx(e,{...l,ref:o,className:M(t,`${n}-${r?"tooltip":"feedback"}`)}));Uu.displayName="Feedback";Uu.propTypes=av;const bf=Uu,cv=v.createContext({}),at=cv,ed=v.forwardRef(({id:e,bsPrefix:t,className:n,type:r="checkbox",isValid:l=!1,isInvalid:o=!1,as:i="input",...u},s)=>{const{controlId:a}=v.useContext(at);return t=H(t,"form-check-input"),y.jsx(i,{...u,ref:s,type:r,id:e||a,className:M(n,t,l&&"is-valid",o&&"is-invalid")})});ed.displayName="FormCheckInput";const td=ed,nd=v.forwardRef(({bsPrefix:e,className:t,htmlFor:n,...r},l)=>{const{controlId:o}=v.useContext(at);return e=H(e,"form-check-label"),y.jsx("label",{...r,ref:l,htmlFor:n||o,className:M(t,e)})});nd.displayName="FormCheckLabel";const Ui=nd,rd=v.forwardRef(({id:e,bsPrefix:t,bsSwitchPrefix:n,inline:r=!1,reverse:l=!1,disabled:o=!1,isValid:i=!1,isInvalid:u=!1,feedbackTooltip:s=!1,feedback:a,feedbackType:m,className:h,style:d,title:g="",type:S="checkbox",label:E,children:j,as:f="input",...c},p)=>{t=H(t,"form-check"),n=H(n,"form-switch");const{controlId:w}=v.useContext(at),C=v.useMemo(()=>({controlId:e||w}),[w,e]),_=!j&&E!=null&&E!==!1||rv(j,Ui),N=y.jsx(td,{...c,type:S==="switch"?"checkbox":S,ref:p,isValid:i,isInvalid:u,disabled:o,as:f});return y.jsx(at.Provider,{value:C,children:y.jsx("div",{style:d,className:M(h,_&&t,r&&`${t}-inline`,l&&`${t}-reverse`,S==="switch"&&n),children:j||y.jsxs(y.Fragment,{children:[N,_&&y.jsx(Ui,{title:g,children:E}),a&&y.jsx(bf,{type:m,tooltip:s,children:a})]})})})});rd.displayName="FormCheck";const Al=Object.assign(rd,{Input:td,Label:Ui}),ld=v.forwardRef(({bsPrefix:e,type:t,size:n,htmlSize:r,id:l,className:o,isValid:i=!1,isInvalid:u=!1,plaintext:s,readOnly:a,as:m="input",...h},d)=>{const{controlId:g}=v.useContext(at);return e=H(e,"form-control"),y.jsx(m,{...h,type:t,size:r,ref:d,readOnly:a,id:l||g,className:M(o,s?`${e}-plaintext`:e,n&&`${e}-${n}`,t==="color"&&`${e}-color`,i&&"is-valid",u&&"is-invalid")})});ld.displayName="FormControl";const fv=Object.assign(ld,{Feedback:bf}),od=v.forwardRef(({className:e,bsPrefix:t,as:n="div",...r},l)=>(t=H(t,"form-floating"),y.jsx(n,{ref:l,className:M(e,t),...r})));od.displayName="FormFloating";const dv=od,id=v.forwardRef(({controlId:e,as:t="div",...n},r)=>{const l=v.useMemo(()=>({controlId:e}),[e]);return y.jsx(at.Provider,{value:l,children:y.jsx(t,{...n,ref:r})})});id.displayName="FormGroup";const ud=id,sd=v.forwardRef(({as:e="label",bsPrefix:t,column:n=!1,visuallyHidden:r=!1,className:l,htmlFor:o,...i},u)=>{const{controlId:s}=v.useContext(at);t=H(t,"form-label");let a="col-form-label";typeof n=="string"&&(a=`${a} ${a}-${n}`);const m=M(l,t,r&&"visually-hidden",n&&a);return o=o||s,n?y.jsx(Zf,{ref:u,as:"label",className:m,htmlFor:o,...i}):y.jsx(e,{ref:u,className:m,htmlFor:o,...i})});sd.displayName="FormLabel";const pv=sd,ad=v.forwardRef(({bsPrefix:e,className:t,id:n,...r},l)=>{const{controlId:o}=v.useContext(at);return e=H(e,"form-range"),y.jsx("input",{...r,type:"range",ref:l,className:M(t,e),id:n||o})});ad.displayName="FormRange";const mv=ad,cd=v.forwardRef(({bsPrefix:e,size:t,htmlSize:n,className:r,isValid:l=!1,isInvalid:o=!1,id:i,...u},s)=>{const{controlId:a}=v.useContext(at);return e=H(e,"form-select"),y.jsx("select",{...u,size:n,ref:s,className:M(r,e,t&&`${e}-${t}`,l&&"is-valid",o&&"is-invalid"),id:i||a})});cd.displayName="FormSelect";const hv=cd,fd=v.forwardRef(({bsPrefix:e,className:t,as:n="small",muted:r,...l},o)=>(e=H(e,"form-text"),y.jsx(n,{...l,ref:o,className:M(t,e,r&&"text-muted")})));fd.displayName="FormText";const vv=fd,dd=v.forwardRef((e,t)=>y.jsx(Al,{...e,ref:t,type:"switch"}));dd.displayName="Switch";const yv=Object.assign(dd,{Input:Al.Input,Label:Al.Label}),pd=v.forwardRef(({bsPrefix:e,className:t,children:n,controlId:r,label:l,...o},i)=>(e=H(e,"form-floating"),y.jsxs(ud,{ref:i,className:M(t,e),controlId:r,...o,children:[n,y.jsx("label",{htmlFor:r,children:l})]})));pd.displayName="FloatingLabel";const gv=pd,wv={_ref:lt.any,validated:lt.bool,as:lt.elementType},Hu=v.forwardRef(({className:e,validated:t,as:n="form",...r},l)=>y.jsx(n,{...r,ref:l,className:M(e,t&&"was-validated")}));Hu.displayName="Form";Hu.propTypes=wv;const $o=Object.assign(Hu,{Group:ud,Control:fv,Floating:dv,Check:Al,Switch:yv,Label:pv,Text:vv,Range:mv,Select:hv,FloatingLabel:gv});var tl;function sa(e){if((!tl&&tl!==0||e)&&In){var t=document.createElement("div");t.style.position="absolute",t.style.top="-9999px",t.style.width="50px",t.style.height="50px",t.style.overflow="scroll",document.body.appendChild(t),tl=t.offsetWidth-t.clientWidth,document.body.removeChild(t)}return tl}function Do(e){e===void 0&&(e=oo());try{var t=e.activeElement;return!t||!t.nodeName?null:t}catch{return e.body}}function Sv(e=document){const t=e.defaultView;return Math.abs(t.innerWidth-e.documentElement.clientWidth)}const aa=sv("modal-open");class kv{constructor({ownerDocument:t,handleContainerOverflow:n=!0,isRTL:r=!1}={}){this.handleContainerOverflow=n,this.isRTL=r,this.modals=[],this.ownerDocument=t}getScrollbarWidth(){return Sv(this.ownerDocument)}getElement(){return(this.ownerDocument||document).body}setModalAttributes(t){}removeModalAttributes(t){}setContainerStyle(t){const n={overflow:"hidden"},r=this.isRTL?"paddingLeft":"paddingRight",l=this.getElement();t.style={overflow:l.style.overflow,[r]:l.style[r]},t.scrollBarWidth&&(n[r]=`${parseInt(Qt(l,r)||"0",10)+t.scrollBarWidth}px`),l.setAttribute(aa,""),Qt(l,n)}reset(){[...this.modals].forEach(t=>this.remove(t))}removeContainerStyle(t){const n=this.getElement();n.removeAttribute(aa),Object.assign(n.style,t.style)}add(t){let n=this.modals.indexOf(t);return n!==-1||(n=this.modals.length,this.modals.push(t),this.setModalAttributes(t),n!==0)||(this.state={scrollBarWidth:this.getScrollbarWidth(),style:{}},this.handleContainerOverflow&&this.setContainerStyle(this.state)),n}remove(t){const n=this.modals.indexOf(t);n!==-1&&(this.modals.splice(n,1),!this.modals.length&&this.handleContainerOverflow&&this.removeContainerStyle(this.state),this.removeModalAttributes(t))}isTopModal(t){return!!this.modals.length&&this.modals[this.modals.length-1]===t}}const Wu=kv,Io=(e,t)=>In?e==null?(t||oo()).body:(typeof e=="function"&&(e=e()),e&&"current"in e&&(e=e.current),e&&("nodeType"in e||e.getBoundingClientRect)?e:null):null;function Ev(e,t){const n=Au(),[r,l]=v.useState(()=>Io(e,n==null?void 0:n.document));if(!r){const o=Io(e);o&&l(o)}return v.useEffect(()=>{t&&r&&t(r)},[t,r]),v.useEffect(()=>{const o=Io(e);o!==r&&l(o)},[e,r]),r}function xv({children:e,in:t,onExited:n,mountOnEnter:r,unmountOnExit:l}){const o=v.useRef(null),i=v.useRef(t),u=Pe(n);v.useEffect(()=>{t?i.current=!0:u(o.current)},[t,u]);const s=io(o,e.ref),a=v.cloneElement(e,{ref:s});return t?a:l||!i.current&&r?null:a}function Cv({in:e,onTransition:t}){const n=v.useRef(null),r=v.useRef(!0),l=Pe(t);return oa(()=>{if(!n.current)return;let o=!1;return l({in:e,element:n.current,initial:r.current,isStale:()=>o}),()=>{o=!0}},[e,l]),oa(()=>(r.current=!1,()=>{r.current=!0}),[]),n}function _v({children:e,in:t,onExited:n,onEntered:r,transition:l}){const[o,i]=v.useState(!t);t&&o&&i(!1);const u=Cv({in:!!t,onTransition:a=>{const m=()=>{a.isStale()||(a.in?r==null||r(a.element,a.initial):(i(!0),n==null||n(a.element)))};Promise.resolve(l(a)).then(m,h=>{throw a.in||i(!0),h})}}),s=io(u,e.ref);return o&&!t?null:v.cloneElement(e,{ref:s})}function ca(e,t,n){return e?y.jsx(e,Object.assign({},n)):t?y.jsx(_v,Object.assign({},n,{transition:t})):y.jsx(xv,Object.assign({},n))}function Nv(e){return e.code==="Escape"||e.keyCode===27}const Tv=["show","role","className","style","children","backdrop","keyboard","onBackdropClick","onEscapeKeyDown","transition","runTransition","backdropTransition","runBackdropTransition","autoFocus","enforceFocus","restoreFocus","restoreFocusOptions","renderDialog","renderBackdrop","manager","container","onShow","onHide","onExit","onExited","onExiting","onEnter","onEntering","onEntered"];function Rv(e,t){if(e==null)return{};var n={},r=Object.keys(e),l,o;for(o=0;o=0)&&(n[l]=e[l]);return n}let Bo;function jv(e){return Bo||(Bo=new Wu({ownerDocument:e==null?void 0:e.document})),Bo}function Lv(e){const t=Au(),n=e||jv(t),r=v.useRef({dialog:null,backdrop:null});return Object.assign(r.current,{add:()=>n.add(r.current),remove:()=>n.remove(r.current),isTopModal:()=>n.isTopModal(r.current),setDialogRef:v.useCallback(l=>{r.current.dialog=l},[]),setBackdropRef:v.useCallback(l=>{r.current.backdrop=l},[])})}const md=v.forwardRef((e,t)=>{let{show:n=!1,role:r="dialog",className:l,style:o,children:i,backdrop:u=!0,keyboard:s=!0,onBackdropClick:a,onEscapeKeyDown:m,transition:h,runTransition:d,backdropTransition:g,runBackdropTransition:S,autoFocus:E=!0,enforceFocus:j=!0,restoreFocus:f=!0,restoreFocusOptions:c,renderDialog:p,renderBackdrop:w=K=>y.jsx("div",Object.assign({},K)),manager:C,container:_,onShow:N,onHide:R=()=>{},onExit:A,onExited:P,onExiting:ie,onEnter:Ve,onEntering:Qe,onEntered:bt}=e,Bn=Rv(e,Tv);const Te=Au(),Ke=Ev(_),x=Lv(C),L=Ah(),O=Uh(n),[D,B]=v.useState(!n),fe=v.useRef(null);v.useImperativeHandle(t,()=>x,[x]),In&&!O&&n&&(fe.current=Do(Te==null?void 0:Te.document)),n&&D&&B(!1);const Re=Pe(()=>{if(x.add(),tn.current=Il(document,"keydown",uo),en.current=Il(document,"focus",()=>setTimeout(je),!0),N&&N(),E){var K,$r;const Hn=Do((K=($r=x.dialog)==null?void 0:$r.ownerDocument)!=null?K:Te==null?void 0:Te.document);x.dialog&&Hn&&!ua(x.dialog,Hn)&&(fe.current=Hn,x.dialog.focus())}}),qe=Pe(()=>{if(x.remove(),tn.current==null||tn.current(),en.current==null||en.current(),f){var K;(K=fe.current)==null||K.focus==null||K.focus(c),fe.current=null}});v.useEffect(()=>{!n||!Ke||Re()},[n,Ke,Re]),v.useEffect(()=>{D&&qe()},[D,qe]),Yf(()=>{qe()});const je=Pe(()=>{if(!j||!L()||!x.isTopModal())return;const K=Do(Te==null?void 0:Te.document);x.dialog&&K&&!ua(x.dialog,K)&&x.dialog.focus()}),dt=Pe(K=>{K.target===K.currentTarget&&(a==null||a(K),u===!0&&R())}),uo=Pe(K=>{s&&Nv(K)&&x.isTopModal()&&(m==null||m(K),K.defaultPrevented||R())}),en=v.useRef(),tn=v.useRef(),An=(...K)=>{B(!0),P==null||P(...K)};if(!Ke)return null;const zr=Object.assign({role:r,ref:x.setDialogRef,"aria-modal":r==="dialog"?!0:void 0},Bn,{style:o,className:l,tabIndex:-1});let Un=p?p(zr):y.jsx("div",Object.assign({},zr,{children:v.cloneElement(i,{role:"document"})}));Un=ca(h,d,{unmountOnExit:!0,mountOnEnter:!0,appear:!0,in:!!n,onExit:A,onExiting:ie,onExited:An,onEnter:Ve,onEntering:Qe,onEntered:bt,children:Un});let Mt=null;return u&&(Mt=w({ref:x.setBackdropRef,onClick:dt}),Mt=ca(g,S,{in:!!n,appear:!0,mountOnEnter:!0,unmountOnExit:!0,children:Mt})),y.jsx(y.Fragment,{children:kn.createPortal(y.jsxs(y.Fragment,{children:[Mt,Un]}),Ke)})});md.displayName="Modal";const Ov=Object.assign(md,{Manager:Wu});function Pv(e,t){return e.classList?!!t&&e.classList.contains(t):(" "+(e.className.baseVal||e.className)+" ").indexOf(" "+t+" ")!==-1}function Fv(e,t){e.classList?e.classList.add(t):Pv(e,t)||(typeof e.className=="string"?e.className=e.className+" "+t:e.setAttribute("class",(e.className&&e.className.baseVal||"")+" "+t))}function fa(e,t){return e.replace(new RegExp("(^|\\s)"+t+"(?:\\s|$)","g"),"$1").replace(/\s+/g," ").replace(/^\s*|\s*$/g,"")}function Mv(e,t){e.classList?e.classList.remove(t):typeof e.className=="string"?e.className=fa(e.className,t):e.setAttribute("class",fa(e.className&&e.className.baseVal||"",t))}const un={FIXED_CONTENT:".fixed-top, .fixed-bottom, .is-fixed, .sticky-top",STICKY_CONTENT:".sticky-top",NAVBAR_TOGGLER:".navbar-toggler"};class zv extends Wu{adjustAndStore(t,n,r){const l=n.style[t];n.dataset[t]=l,Qt(n,{[t]:`${parseFloat(Qt(n,t))+r}px`})}restore(t,n){const r=n.dataset[t];r!==void 0&&(delete n.dataset[t],Qt(n,{[t]:r}))}setContainerStyle(t){super.setContainerStyle(t);const n=this.getElement();if(Fv(n,"modal-open"),!t.scrollBarWidth)return;const r=this.isRTL?"paddingLeft":"paddingRight",l=this.isRTL?"marginLeft":"marginRight";on(n,un.FIXED_CONTENT).forEach(o=>this.adjustAndStore(r,o,t.scrollBarWidth)),on(n,un.STICKY_CONTENT).forEach(o=>this.adjustAndStore(l,o,-t.scrollBarWidth)),on(n,un.NAVBAR_TOGGLER).forEach(o=>this.adjustAndStore(l,o,t.scrollBarWidth))}removeContainerStyle(t){super.removeContainerStyle(t);const n=this.getElement();Mv(n,"modal-open");const r=this.isRTL?"paddingLeft":"paddingRight",l=this.isRTL?"marginLeft":"marginRight";on(n,un.FIXED_CONTENT).forEach(o=>this.restore(r,o)),on(n,un.STICKY_CONTENT).forEach(o=>this.restore(l,o)),on(n,un.NAVBAR_TOGGLER).forEach(o=>this.restore(l,o))}}let Ao;function $v(e){return Ao||(Ao=new zv(e)),Ao}const hd=v.forwardRef(({className:e,bsPrefix:t,as:n="div",...r},l)=>(t=H(t,"modal-body"),y.jsx(n,{ref:l,className:M(e,t),...r})));hd.displayName="ModalBody";const Dv=hd,Iv=v.createContext({onHide(){}}),vd=Iv,yd=v.forwardRef(({bsPrefix:e,className:t,contentClassName:n,centered:r,size:l,fullscreen:o,children:i,scrollable:u,...s},a)=>{e=H(e,"modal");const m=`${e}-dialog`,h=typeof o=="string"?`${e}-fullscreen-${o}`:`${e}-fullscreen`;return y.jsx("div",{...s,ref:a,className:M(m,t,l&&`${e}-${l}`,r&&`${m}-centered`,u&&`${m}-scrollable`,o&&h),children:y.jsx("div",{className:M(`${e}-content`,n),children:i})})});yd.displayName="ModalDialog";const gd=yd,wd=v.forwardRef(({className:e,bsPrefix:t,as:n="div",...r},l)=>(t=H(t,"modal-footer"),y.jsx(n,{ref:l,className:M(e,t),...r})));wd.displayName="ModalFooter";const Bv=wd,Av=v.forwardRef(({closeLabel:e="Close",closeVariant:t,closeButton:n=!1,onHide:r,children:l,...o},i)=>{const u=v.useContext(vd),s=Pe(()=>{u==null||u.onHide(),r==null||r()});return y.jsxs("div",{ref:i,...o,children:[l,n&&y.jsx(Qf,{"aria-label":e,variant:t,onClick:s})]})}),Uv=Av,Sd=v.forwardRef(({bsPrefix:e,className:t,closeLabel:n="Close",closeButton:r=!1,...l},o)=>(e=H(e,"modal-header"),y.jsx(Uv,{ref:o,...l,className:M(t,e),closeLabel:n,closeButton:r})));Sd.displayName="ModalHeader";const Hv=Sd,Wv=Bf("h4"),kd=v.forwardRef(({className:e,bsPrefix:t,as:n=Wv,...r},l)=>(t=H(t,"modal-title"),y.jsx(n,{ref:l,className:M(e,t),...r})));kd.displayName="ModalTitle";const Vv=kd;function Qv(e){return y.jsx(Bl,{...e,timeout:null})}function Kv(e){return y.jsx(Bl,{...e,timeout:null})}const Ed=v.forwardRef(({bsPrefix:e,className:t,style:n,dialogClassName:r,contentClassName:l,children:o,dialogAs:i=gd,"aria-labelledby":u,"aria-describedby":s,"aria-label":a,show:m=!1,animation:h=!0,backdrop:d=!0,keyboard:g=!0,onEscapeKeyDown:S,onShow:E,onHide:j,container:f,autoFocus:c=!0,enforceFocus:p=!0,restoreFocus:w=!0,restoreFocusOptions:C,onEntered:_,onExit:N,onExiting:R,onEnter:A,onEntering:P,onExited:ie,backdropClassName:Ve,manager:Qe,...bt},Bn)=>{const[Te,Ke]=v.useState({}),[x,L]=v.useState(!1),O=v.useRef(!1),D=v.useRef(!1),B=v.useRef(null),[fe,Re]=Bh(),qe=io(Bn,Re),je=Pe(j),dt=ph();e=H(e,"modal");const uo=v.useMemo(()=>({onHide:je}),[je]);function en(){return Qe||$v({isRTL:dt})}function tn($){if(!In)return;const nn=en().getScrollbarWidth()>0,Qu=$.scrollHeight>oo($).documentElement.clientHeight;Ke({paddingRight:nn&&!Qu?sa():void 0,paddingLeft:!nn&&Qu?sa():void 0})}const An=Pe(()=>{fe&&tn(fe.dialog)});Yf(()=>{Bi(window,"resize",An),B.current==null||B.current()});const zr=()=>{O.current=!0},Un=$=>{O.current&&fe&&$.target===fe.dialog&&(D.current=!0),O.current=!1},Mt=()=>{L(!0),B.current=If(fe.dialog,()=>{L(!1)})},K=$=>{$.target===$.currentTarget&&Mt()},$r=$=>{if(d==="static"){K($);return}if(D.current||$.target!==$.currentTarget){D.current=!1;return}j==null||j()},Hn=$=>{g?S==null||S($):($.preventDefault(),d==="static"&&Mt())},jd=($,nn)=>{$&&tn($),A==null||A($,nn)},Ld=$=>{B.current==null||B.current(),N==null||N($)},Od=($,nn)=>{P==null||P($,nn),Df(window,"resize",An)},Pd=$=>{$&&($.style.display=""),ie==null||ie($),Bi(window,"resize",An)},Fd=v.useCallback($=>y.jsx("div",{...$,className:M(`${e}-backdrop`,Ve,!h&&"show")}),[h,Ve,e]),Vu={...n,...Te};Vu.display="block";const Md=$=>y.jsx("div",{role:"dialog",...$,style:Vu,className:M(t,e,x&&`${e}-static`,!h&&"show"),onClick:d?$r:void 0,onMouseUp:Un,"aria-label":a,"aria-labelledby":u,"aria-describedby":s,children:y.jsx(i,{...bt,onMouseDown:zr,className:r,contentClassName:l,children:o})});return y.jsx(vd.Provider,{value:uo,children:y.jsx(Ov,{show:m,ref:qe,backdrop:d,container:f,keyboard:!0,autoFocus:c,enforceFocus:p,restoreFocus:w,restoreFocusOptions:C,onEscapeKeyDown:Hn,onShow:E,onHide:j,onEnter:jd,onEntering:Od,onEntered:_,onExit:Ld,onExiting:R,onExited:Pd,manager:en(),transition:h?Qv:void 0,backdropTransition:h?Kv:void 0,renderBackdrop:Fd,renderDialog:Md})})});Ed.displayName="Modal";const Jn=Object.assign(Ed,{Body:Dv,Header:Hv,Title:Vv,Footer:Bv,Dialog:gd,TRANSITION_DURATION:300,BACKDROP_TRANSITION_DURATION:150}),da=1e3;function Gv(e,t,n){const r=(e-t)/(n-t)*100;return Math.round(r*da)/da}function pa({min:e,now:t,max:n,label:r,visuallyHidden:l,striped:o,animated:i,className:u,style:s,variant:a,bsPrefix:m,...h},d){return y.jsx("div",{ref:d,...h,role:"progressbar",className:M(u,`${m}-bar`,{[`bg-${a}`]:a,[`${m}-bar-animated`]:i,[`${m}-bar-striped`]:i||o}),style:{width:`${Gv(t,e,n)}%`,...s},"aria-valuenow":t,"aria-valuemin":e,"aria-valuemax":n,children:l?y.jsx("span",{className:"visually-hidden",children:r}):r})}const xd=v.forwardRef(({isChild:e=!1,...t},n)=>{const r={min:0,max:100,animated:!1,visuallyHidden:!1,striped:!1,...t};if(r.bsPrefix=H(r.bsPrefix,"progress"),e)return pa(r,n);const{min:l,now:o,max:i,label:u,visuallyHidden:s,striped:a,animated:m,bsPrefix:h,variant:d,className:g,children:S,...E}=r;return y.jsx("div",{ref:n,...E,className:M(g,h),children:S?nv(S,j=>v.cloneElement(j,{isChild:!0})):pa({min:l,now:o,max:i,label:u,visuallyHidden:s,striped:a,animated:m,bsPrefix:h,variant:d},n)})});xd.displayName="ProgressBar";const Yv=xd,Cd=v.forwardRef(({bsPrefix:e,className:t,as:n="div",...r},l)=>{const o=H(e,"row"),i=Of(),u=Pf(),s=`${o}-cols`,a=[];return i.forEach(m=>{const h=r[m];delete r[m];let d;h!=null&&typeof h=="object"?{cols:d}=h:d=h;const g=m!==u?`-${m}`:"";d!=null&&a.push(`${s}${g}-${d}`)}),y.jsx(n,{ref:l,...r,className:M(t,o,...a)})});Cd.displayName="Row";const Xv=Cd,_d=v.forwardRef(({bsPrefix:e,variant:t,animation:n="border",size:r,as:l="div",className:o,...i},u)=>{e=H(e,"spinner");const s=`${e}-${n}`;return y.jsx(l,{ref:u,...i,className:M(o,s,r&&`${s}-${r}`,t&&`text-${t}`)})});_d.displayName="Spinner";const Hi=_d,Zv=window.origin==="null"||window.origin==="http://localhost:3031"?"http://localhost:3030":"",Mr=v.createContext(null),Jv=({id:e,detailsResponse:t,statsResponse:n})=>{const r=n.snapshot.total_bytes,l=n.snapshot.have_bytes,o=r==l,i=l/r*100;let u=[];return e%2==0&&u.push("bg-light"),y.jsxs(Xv,{className:u.join(" "),children:[y.jsx(sn,{size:4,label:"Name",children:y.jsx("div",{className:"text-truncate",children:ay(t)})}),y.jsx(sn,{label:"Size",children:`${Td(r)}`}),y.jsx(sn,{size:2,label:"Progress",children:y.jsx(Yv,{now:i,label:`${i.toFixed(2)}%`,animated:!o})}),y.jsx(sn,{size:2,label:"Down Speed",children:n.download_speed.human_readable}),y.jsx(sn,{label:"ETA",children:cy(n)}),y.jsx(sn,{size:2,label:"Peers",children:`${n.snapshot.peer_stats.live} / ${n.snapshot.peer_stats.seen}`})]})},sn=({size:e,label:t,children:n})=>y.jsxs(Zf,{md:e||1,className:"py-3",children:[y.jsx("div",{className:"fw-bold",children:t}),n]}),qv=({id:e,torrent:t})=>{const n={info_hash:"",files:[]},r={snapshot:{have_bytes:0,downloaded_and_checked_bytes:0,downloaded_and_checked_pieces:0,fetched_bytes:0,uploaded_bytes:0,initially_needed_bytes:0,remaining_bytes:0,total_bytes:0,total_piece_download_ms:0,peer_stats:{queued:0,connecting:0,live:0,seen:0,dead:0,not_needed:0}},average_piece_download_time:{secs:0,nanos:0},download_speed:{mbps:0,human_readable:""},all_time_download_speed:{mbps:0,human_readable:""},time_remaining:{human_readable:""}},[l,o]=v.useState(n),[i,u]=v.useState(r);let s=v.useContext(Mr);v.useEffect(()=>{if(l===n)return dy(async()=>{await s.requests.getTorrentDetails(t.id).then(o)},1e3)},[l]);const a=async()=>s.requests.getTorrentStats(t.id).then(g=>(u(g),uy(g)?5e3:500),g=>1e4);return v.useEffect(()=>Rd(a,0),[]),y.jsx(Jv,{id:e,detailsResponse:l,statsResponse:i})},bv=e=>e.torrents===null&&e.loading?y.jsx(Hi,{}):e.torrents===null?y.jsx(y.Fragment,{}):e.torrents.length===0?y.jsx("div",{className:"text-center",children:y.jsx("p",{children:"No existing torrents found. Add them through buttons below."})}):y.jsx(y.Fragment,{children:e.torrents.map(t=>y.jsx(qv,{id:t.id,torrent:t},t.id))}),ey=()=>{const[e,t]=v.useState(null),[n,r]=v.useState(null),[l,o]=v.useState(null),[i,u]=v.useState(!1),s=async(d,g,S)=>{console.log(d,g);const E=Zv+g,j={method:d,headers:{Accept:"application/json"},body:S};let f={method:d,path:g,text:""},c;try{c=await fetch(E,j)}catch{return f.text="network error",Promise.reject(f)}if(f.status=c.status,f.statusText=c.statusText,!c.ok){const w=await c.text();try{const C=JSON.parse(w);f.text=C.human_readable!==void 0?C.human_readable:JSON.stringify(C,null,2)}catch{f.text=w}return Promise.reject(f)}return await c.json()},a={getTorrentDetails:d=>s("GET",`/torrents/${d}`,null),getTorrentStats:d=>s("GET",`/torrents/${d}/stats`,null)},m=async()=>{u(!0);let d=await s("GET","/torrents",null).finally(()=>u(!1));return o(d.torrents),d};v.useEffect(()=>{let d=500;return Rd(async()=>{try{return await m(),r(null),d}catch(S){return r({text:"Error refreshing torrents",details:S}),console.error(S),5e3}},d)},[]);const h={setCloseableError:t,setOtherError:r,makeRequest:s,requests:a,refreshTorrents:m};return y.jsx(Mr.Provider,{value:h,children:y.jsxs("div",{className:"text-center",children:[y.jsx("h1",{className:"mt-3 mb-4",children:"rqbit web 0.0.1-alpha"}),y.jsx(iy,{closeableError:e,otherError:n,torrents:l,torrentsLoading:i})]})})},ty=e=>{let{details:t}=e;return t?y.jsxs(y.Fragment,{children:[t.status&&y.jsxs("strong",{children:[t.status," ",t.statusText,": "]}),t.text]}):null},Wi=e=>{let{error:t,remove:n}=e;return t==null?null:y.jsxs(ia,{variant:"danger",onClose:n,dismissible:!!n,children:[y.jsx(ia.Heading,{children:t.text}),y.jsx(ty,{details:t.details})]})},Nd=({buttonText:e,onClick:t,data:n,resetData:r,variant:l})=>{const[o,i]=v.useState(!1),[u,s]=v.useState(null),a=v.useContext(Mr),m=n!==null;v.useEffect(()=>{if(n===null)return;let d=setTimeout(async()=>{i(!0);try{const g=await a.makeRequest("POST","/torrents?list_only=true&overwrite=true",n);console.log(g),s(g.details.files)}catch(g){a.setCloseableError({text:"Error listing torrent",details:g}),h()}finally{i(!1)}},0);return()=>clearTimeout(d)},[n]);const h=()=>{r(),s(null),i(!1)};return y.jsxs(y.Fragment,{children:[y.jsx(Ai,{variant:l,onClick:t,className:"m-1",children:e}),y.jsx(ly,{show:m,onHide:h,fileList:u,data:n,fileListLoading:o})]})},ny=()=>{let[e,t]=v.useState(null);const n=()=>{const r=prompt("Enter magnet link or HTTP(s) URL");t(r===""?null:r)};return y.jsx(Nd,{variant:"primary",buttonText:"Add Torrent from Magnet Link",onClick:n,data:e,resetData:()=>t(null)})},ry=()=>{const e=v.useRef(),[t,n]=v.useState(null),r=async()=>{const i=e.current.files[0];n(i)},l=()=>{e.current.value="",n(null)},o=()=>{e.current.click()};return y.jsxs(y.Fragment,{children:[y.jsx("input",{type:"file",ref:e,accept:".torrent",onChange:r,className:"d-none"}),y.jsx(Nd,{variant:"secondary",buttonText:"Upload .torrent File",onClick:o,data:t,resetData:l})]})},ly=e=>{let{show:t,onHide:n,fileList:r,fileListLoading:l,data:o}=e;const[i,u]=v.useState([]),[s,a]=v.useState(!1),[m,h]=v.useState(null);v.useEffect(()=>{u((r||[]).map((j,f)=>f))},[r]),r=r||[];let d=v.useContext(Mr);const g=()=>{n(),u([]),h(null),a(!1)},S=j=>{i.includes(j)?u(i.filter(f=>f!==j)):u([...i,j])},E=async()=>{let f=`/torrents?overwrite=true${(()=>{let c=!0;return r.map((p,w)=>{c=c&&i.includes(w)}),c?"":"&only_files="+i.join(",")})()}`;a(!0),d.makeRequest("POST",f,o).then(()=>{n()},c=>{h({text:"Error starting torrent",details:c})}).finally(()=>a(!1))};return y.jsxs(Jn,{show:t,onHide:g,size:"lg",children:[y.jsx(Jn.Header,{closeButton:!0,children:y.jsx(Jn.Title,{children:"Select Files"})}),y.jsx(Jn.Body,{children:l?y.jsx(Hi,{}):y.jsxs(y.Fragment,{children:[y.jsx($o,{children:r.map((j,f)=>y.jsx($o.Group,{controlId:`check-${f}`,children:y.jsx($o.Check,{type:"checkbox",label:`${j.name} (${Td(j.length)})`,checked:i.includes(f),onChange:()=>S(f)})},f))}),y.jsx(Wi,{error:m})]})}),y.jsxs(Jn.Footer,{children:[s&&y.jsx(Hi,{}),y.jsx(Ai,{variant:"secondary",onClick:g,children:"Cancel"}),y.jsx(Ai,{variant:"primary",onClick:E,disabled:l||s||i.length==0,children:"OK"})]})]})},oy=()=>y.jsxs("div",{id:"buttons-container",className:"mt-3",children:[y.jsx(ny,{}),y.jsx(ry,{})]}),iy=e=>{let t=v.useContext(Mr);return y.jsxs(ov,{children:[y.jsx(Wi,{error:e.closeableError,remove:()=>t.setCloseableError(null)}),y.jsx(Wi,{error:e.otherError}),y.jsx(bv,{torrents:e.torrents,loading:e.torrentsLoading}),y.jsx(oy,{})]})};function uy(e){return e.snapshot.have_bytes==e.snapshot.total_bytes}async function sy(){const e=document.getElementById("app");Uo.createRoot(e).render(y.jsx(v.StrictMode,{children:y.jsx(ey,{})}))}function Td(e){if(e===0)return"0 Bytes";const t=1024,n=["Bytes","KB","MB","GB","TB","PB","EB","ZB","YB"],r=Math.floor(Math.log(e)/Math.log(t));return parseFloat((e/Math.pow(t,r)).toFixed(2))+" "+n[r]}function ay(e){return e.files.length==0?"Loading...":e.files.reduce((n,r)=>n.length>r.length?n:r).name}function cy(e){return e.time_remaining&&e.time_remaining.duration?fy(e.time_remaining.duration.secs):"N/A"}function fy(e){const t=Math.floor(e/3600),n=Math.floor(e%3600/60),r=e%60,l=(o,i)=>o>0?`${o}${i}`:"";return t>0?`${l(t,"h")} ${l(n,"m")}`.trim():n>0?`${l(n,"m")} ${l(r,"s")}`.trim():`${l(r,"s")}`.trim()}function Rd(e,t){let n,r=t;const l=async()=>{if(r=await e(),r==null)throw"asyncCallback returned null or undefined";o()};let o=()=>{n=setTimeout(l,r)};return o(),()=>{clearTimeout(n)}}function dy(e,t){let n;const r=async()=>{await e().then(()=>{},()=>{})&&l()};let l=i=>{n=setTimeout(r,i!==void 0?i:t)};return l(0),()=>{clearTimeout(n)}}async function py(){await sy()}document.addEventListener("DOMContentLoaded",py); +*/(function(e){(function(){var t={}.hasOwnProperty;function n(){for(var r=[],l=0;l=0)&&(n[l]=e[l]);return n}function ra(e){return"default"+e.charAt(0).toUpperCase()+e.substr(1)}function sh(e){var t=ah(e,"string");return typeof t=="symbol"?t:String(t)}function ah(e,t){if(typeof e!="object"||e===null)return e;var n=e[Symbol.toPrimitive];if(n!==void 0){var r=n.call(e,t||"default");if(typeof r!="object")return r;throw new TypeError("@@toPrimitive must return a primitive value.")}return(t==="string"?String:Number)(e)}function ch(e,t,n){var r=v.useRef(e!==void 0),l=v.useState(t),o=l[0],i=l[1],u=e!==void 0,s=r.current;return r.current=u,!u&&s&&o!==t&&i(t),[u?e:o,v.useCallback(function(a){for(var d=arguments.length,h=new Array(d>1?d-1:0),p=1;p{o.target===e&&(l(),t(o))},n+r)}function Mh(e){e.offsetHeight}const ia=e=>!e||typeof e=="function"?e:t=>{e.current=t};function zh(e,t){const n=ia(e),r=ia(t);return l=>{n&&n(l),r&&r(l)}}function ao(e,t){return v.useMemo(()=>zh(e,t),[e,t])}function $h(e){return e&&"setState"in e?kn.findDOMNode(e):e??null}const Dh=Ut.forwardRef(({onEnter:e,onEntering:t,onEntered:n,onExit:r,onExiting:l,onExited:o,addEndListener:i,children:u,childRef:s,...a},d)=>{const h=v.useRef(null),p=ao(h,s),g=N=>{p($h(N))},S=N=>T=>{N&&h.current&&N(h.current,T)},E=v.useCallback(S(e),[e]),L=v.useCallback(S(t),[t]),f=v.useCallback(S(n),[n]),c=v.useCallback(S(r),[r]),m=v.useCallback(S(l),[l]),w=v.useCallback(S(o),[o]),C=v.useCallback(S(i),[i]);return y.jsx(jh,{ref:d,...a,onEnter:E,onEntered:f,onEntering:L,onExit:c,onExited:w,onExiting:m,addEndListener:C,nodeRef:h,children:typeof u=="function"?(N,T)=>u(N,{...T,ref:g}):Ut.cloneElement(u,{ref:g})})}),Ih=Dh;function Ah(e){const t=v.useRef(e);return v.useEffect(()=>{t.current=e},[e]),t}function Pe(e){const t=Ah(e);return v.useCallback(function(...n){return t.current&&t.current(...n)},[t])}const Bf=e=>v.forwardRef((t,n)=>y.jsx("div",{...t,ref:n,className:M(t.className,e)})),Hf=Bf("h4");Hf.displayName="DivStyledAsH4";const Wf=v.forwardRef(({className:e,bsPrefix:t,as:n=Hf,...r},l)=>(t=H(t,"alert-heading"),y.jsx(n,{ref:l,className:M(e,t),...r})));Wf.displayName="AlertHeading";const Uh=Wf;function Bh(){return v.useState(null)}function Hh(){const e=v.useRef(!0),t=v.useRef(()=>e.current);return v.useEffect(()=>(e.current=!0,()=>{e.current=!1}),[]),t.current}function Wh(e){const t=v.useRef(null);return v.useEffect(()=>{t.current=e}),t.current}const Vh=typeof global<"u"&&global.navigator&&global.navigator.product==="ReactNative",Qh=typeof document<"u",ua=Qh||Vh?v.useLayoutEffect:v.useEffect,Kh=["as","disabled"];function Gh(e,t){if(e==null)return{};var n={},r=Object.keys(e),l,o;for(o=0;o=0)&&(n[l]=e[l]);return n}function Yh(e){return!e||e.trim()==="#"}function Uu({tagName:e,disabled:t,href:n,target:r,rel:l,role:o,onClick:i,tabIndex:u=0,type:s}){e||(n!=null||r!=null||l!=null?e="a":e="button");const a={tagName:e};if(e==="button")return[{type:s||"button",disabled:t},a];const d=p=>{if((t||e==="a"&&Yh(n))&&p.preventDefault(),t){p.stopPropagation();return}i==null||i(p)},h=p=>{p.key===" "&&(p.preventDefault(),d(p))};return e==="a"&&(n||(n="#"),t&&(n=void 0)),[{role:o??"button",disabled:void 0,tabIndex:t?void 0:u,href:n,target:e==="a"?r:void 0,"aria-disabled":t||void 0,rel:e==="a"?l:void 0,onClick:d,onKeyDown:h},a]}const Xh=v.forwardRef((e,t)=>{let{as:n,disabled:r}=e,l=Gh(e,Kh);const[o,{tagName:i}]=Uu(Object.assign({tagName:n,disabled:r},l));return y.jsx(i,Object.assign({},l,o,{ref:t}))});Xh.displayName="Button";const Zh=["onKeyDown"];function Jh(e,t){if(e==null)return{};var n={},r=Object.keys(e),l,o;for(o=0;o=0)&&(n[l]=e[l]);return n}function qh(e){return!e||e.trim()==="#"}const Vf=v.forwardRef((e,t)=>{let{onKeyDown:n}=e,r=Jh(e,Zh);const[l]=Uu(Object.assign({tagName:"a"},r)),o=Pe(i=>{l.onKeyDown(i),n==null||n(i)});return qh(r.href)||r.role==="button"?y.jsx("a",Object.assign({ref:t},r,l,{onKeyDown:o})):y.jsx("a",Object.assign({ref:t},r,{onKeyDown:n}))});Vf.displayName="Anchor";const bh=Vf,Qf=v.forwardRef(({className:e,bsPrefix:t,as:n=bh,...r},l)=>(t=H(t,"alert-link"),y.jsx(n,{ref:l,className:M(e,t),...r})));Qf.displayName="AlertLink";const ev=Qf,tv={[vt]:"show",[At]:"show"},Kf=v.forwardRef(({className:e,children:t,transitionClasses:n={},onEnter:r,...l},o)=>{const i={in:!1,timeout:300,mountOnEnter:!1,unmountOnExit:!1,appear:!1,...l},u=v.useCallback((s,a)=>{Mh(s),r==null||r(s,a)},[r]);return y.jsx(Ih,{ref:o,addEndListener:Fh,...i,onEnter:u,childRef:t.ref,children:(s,a)=>v.cloneElement(t,{...a,className:M("fade",e,t.props.className,tv[s],n[s])})})});Kf.displayName="Fade";const Bl=Kf,nv={"aria-label":lt.string,onClick:lt.func,variant:lt.oneOf(["white"])},Bu=v.forwardRef(({className:e,variant:t,"aria-label":n="Close",...r},l)=>y.jsx("button",{ref:l,type:"button",className:M("btn-close",t&&`btn-close-${t}`,e),"aria-label":n,...r}));Bu.displayName="CloseButton";Bu.propTypes=nv;const Gf=Bu,Yf=v.forwardRef((e,t)=>{const{bsPrefix:n,show:r=!0,closeLabel:l="Close alert",closeVariant:o,className:i,children:u,variant:s="primary",onClose:a,dismissible:d,transition:h=Bl,...p}=fh(e,{show:"onClose"}),g=H(n,"alert"),S=Pe(f=>{a&&a(!1,f)}),E=h===!0?Bl:h,L=y.jsxs("div",{role:"alert",...E?void 0:p,ref:t,className:M(i,g,s&&`${g}-${s}`,d&&`${g}-dismissible`),children:[d&&y.jsx(Gf,{onClick:S,"aria-label":l,variant:o}),u]});return E?y.jsx(E,{unmountOnExit:!0,...p,ref:void 0,in:r,children:L}):r?L:null});Yf.displayName="Alert";const sa=Object.assign(Yf,{Link:ev,Heading:Uh}),Xf=v.forwardRef(({as:e,bsPrefix:t,variant:n="primary",size:r,active:l=!1,disabled:o=!1,className:i,...u},s)=>{const a=H(t,"btn"),[d,{tagName:h}]=Uu({tagName:e,disabled:o,...u}),p=h;return y.jsx(p,{...d,...u,ref:s,disabled:o,className:M(i,a,l&&"active",n&&`${a}-${n}`,r&&`${a}-${r}`,u.href&&o&&"disabled")})});Xf.displayName="Button";const Vi=Xf;function rv(e){const t=v.useRef(e);return t.current=e,t}function Zf(e){const t=rv(e);v.useEffect(()=>()=>t.current(),[])}function lv(e,t){let n=0;return v.Children.map(e,r=>v.isValidElement(r)?t(r,n++):r)}function ov(e,t){return v.Children.toArray(e).some(n=>v.isValidElement(n)&&n.type===t)}function iv({as:e,bsPrefix:t,className:n,...r}){t=H(t,"col");const l=Ff(),o=Mf(),i=[],u=[];return l.forEach(s=>{const a=r[s];delete r[s];let d,h,p;typeof a=="object"&&a!=null?{span:d,offset:h,order:p}=a:d=a;const g=s!==o?`-${s}`:"";d&&i.push(d===!0?`${t}${g}`:`${t}${g}-${d}`),p!=null&&u.push(`order${g}-${p}`),h!=null&&u.push(`offset${g}-${h}`)}),[{...r,className:M(n,...i,...u)},{as:e,bsPrefix:t,spans:i}]}const Jf=v.forwardRef((e,t)=>{const[{className:n,...r},{as:l="div",bsPrefix:o,spans:i}]=iv(e);return y.jsx(l,{...r,ref:t,className:M(n,!i.length&&o)})});Jf.displayName="Col";const qf=Jf,bf=v.forwardRef(({bsPrefix:e,fluid:t=!1,as:n="div",className:r,...l},o)=>{const i=H(e,"container"),u=typeof t=="string"?`-${t}`:"-fluid";return y.jsx(n,{ref:o,...l,className:M(r,t?`${i}${u}`:i)})});bf.displayName="Container";const uv=bf;var sv=Function.prototype.bind.call(Function.prototype.call,[].slice);function un(e,t){return sv(e.querySelectorAll(t))}function aa(e,t){if(e.contains)return e.contains(t);if(e.compareDocumentPosition)return e===t||!!(e.compareDocumentPosition(t)&16)}const av="data-rr-ui-";function cv(e){return`${av}${e}`}const ed=v.createContext(In?window:void 0);ed.Provider;function Hu(){return v.useContext(ed)}const fv={type:lt.string,tooltip:lt.bool,as:lt.elementType},Wu=v.forwardRef(({as:e="div",className:t,type:n="valid",tooltip:r=!1,...l},o)=>y.jsx(e,{...l,ref:o,className:M(t,`${n}-${r?"tooltip":"feedback"}`)}));Wu.displayName="Feedback";Wu.propTypes=fv;const td=Wu,dv=v.createContext({}),at=dv,nd=v.forwardRef(({id:e,bsPrefix:t,className:n,type:r="checkbox",isValid:l=!1,isInvalid:o=!1,as:i="input",...u},s)=>{const{controlId:a}=v.useContext(at);return t=H(t,"form-check-input"),y.jsx(i,{...u,ref:s,type:r,id:e||a,className:M(n,t,l&&"is-valid",o&&"is-invalid")})});nd.displayName="FormCheckInput";const rd=nd,ld=v.forwardRef(({bsPrefix:e,className:t,htmlFor:n,...r},l)=>{const{controlId:o}=v.useContext(at);return e=H(e,"form-check-label"),y.jsx("label",{...r,ref:l,htmlFor:n||o,className:M(t,e)})});ld.displayName="FormCheckLabel";const Qi=ld,od=v.forwardRef(({id:e,bsPrefix:t,bsSwitchPrefix:n,inline:r=!1,reverse:l=!1,disabled:o=!1,isValid:i=!1,isInvalid:u=!1,feedbackTooltip:s=!1,feedback:a,feedbackType:d,className:h,style:p,title:g="",type:S="checkbox",label:E,children:L,as:f="input",...c},m)=>{t=H(t,"form-check"),n=H(n,"form-switch");const{controlId:w}=v.useContext(at),C=v.useMemo(()=>({controlId:e||w}),[w,e]),N=!L&&E!=null&&E!==!1||ov(L,Qi),T=y.jsx(rd,{...c,type:S==="switch"?"checkbox":S,ref:m,isValid:i,isInvalid:u,disabled:o,as:f});return y.jsx(at.Provider,{value:C,children:y.jsx("div",{style:p,className:M(h,N&&t,r&&`${t}-inline`,l&&`${t}-reverse`,S==="switch"&&n),children:L||y.jsxs(y.Fragment,{children:[T,N&&y.jsx(Qi,{title:g,children:E}),a&&y.jsx(td,{type:d,tooltip:s,children:a})]})})})});od.displayName="FormCheck";const Hl=Object.assign(od,{Input:rd,Label:Qi}),id=v.forwardRef(({bsPrefix:e,type:t,size:n,htmlSize:r,id:l,className:o,isValid:i=!1,isInvalid:u=!1,plaintext:s,readOnly:a,as:d="input",...h},p)=>{const{controlId:g}=v.useContext(at);return e=H(e,"form-control"),y.jsx(d,{...h,type:t,size:r,ref:p,readOnly:a,id:l||g,className:M(o,s?`${e}-plaintext`:e,n&&`${e}-${n}`,t==="color"&&`${e}-color`,i&&"is-valid",u&&"is-invalid")})});id.displayName="FormControl";const pv=Object.assign(id,{Feedback:td}),ud=v.forwardRef(({className:e,bsPrefix:t,as:n="div",...r},l)=>(t=H(t,"form-floating"),y.jsx(n,{ref:l,className:M(e,t),...r})));ud.displayName="FormFloating";const mv=ud,sd=v.forwardRef(({controlId:e,as:t="div",...n},r)=>{const l=v.useMemo(()=>({controlId:e}),[e]);return y.jsx(at.Provider,{value:l,children:y.jsx(t,{...n,ref:r})})});sd.displayName="FormGroup";const ad=sd,cd=v.forwardRef(({as:e="label",bsPrefix:t,column:n=!1,visuallyHidden:r=!1,className:l,htmlFor:o,...i},u)=>{const{controlId:s}=v.useContext(at);t=H(t,"form-label");let a="col-form-label";typeof n=="string"&&(a=`${a} ${a}-${n}`);const d=M(l,t,r&&"visually-hidden",n&&a);return o=o||s,n?y.jsx(qf,{ref:u,as:"label",className:d,htmlFor:o,...i}):y.jsx(e,{ref:u,className:d,htmlFor:o,...i})});cd.displayName="FormLabel";const hv=cd,fd=v.forwardRef(({bsPrefix:e,className:t,id:n,...r},l)=>{const{controlId:o}=v.useContext(at);return e=H(e,"form-range"),y.jsx("input",{...r,type:"range",ref:l,className:M(t,e),id:n||o})});fd.displayName="FormRange";const vv=fd,dd=v.forwardRef(({bsPrefix:e,size:t,htmlSize:n,className:r,isValid:l=!1,isInvalid:o=!1,id:i,...u},s)=>{const{controlId:a}=v.useContext(at);return e=H(e,"form-select"),y.jsx("select",{...u,size:n,ref:s,className:M(r,e,t&&`${e}-${t}`,l&&"is-valid",o&&"is-invalid"),id:i||a})});dd.displayName="FormSelect";const yv=dd,pd=v.forwardRef(({bsPrefix:e,className:t,as:n="small",muted:r,...l},o)=>(e=H(e,"form-text"),y.jsx(n,{...l,ref:o,className:M(t,e,r&&"text-muted")})));pd.displayName="FormText";const gv=pd,md=v.forwardRef((e,t)=>y.jsx(Hl,{...e,ref:t,type:"switch"}));md.displayName="Switch";const wv=Object.assign(md,{Input:Hl.Input,Label:Hl.Label}),hd=v.forwardRef(({bsPrefix:e,className:t,children:n,controlId:r,label:l,...o},i)=>(e=H(e,"form-floating"),y.jsxs(ad,{ref:i,className:M(t,e),controlId:r,...o,children:[n,y.jsx("label",{htmlFor:r,children:l})]})));hd.displayName="FloatingLabel";const Sv=hd,kv={_ref:lt.any,validated:lt.bool,as:lt.elementType},Vu=v.forwardRef(({className:e,validated:t,as:n="form",...r},l)=>y.jsx(n,{...r,ref:l,className:M(e,t&&"was-validated")}));Vu.displayName="Form";Vu.propTypes=kv;const Uo=Object.assign(Vu,{Group:ad,Control:pv,Floating:mv,Check:Hl,Switch:wv,Label:hv,Text:gv,Range:vv,Select:yv,FloatingLabel:Sv});var nl;function ca(e){if((!nl&&nl!==0||e)&&In){var t=document.createElement("div");t.style.position="absolute",t.style.top="-9999px",t.style.width="50px",t.style.height="50px",t.style.overflow="scroll",document.body.appendChild(t),nl=t.offsetWidth-t.clientWidth,document.body.removeChild(t)}return nl}function Bo(e){e===void 0&&(e=so());try{var t=e.activeElement;return!t||!t.nodeName?null:t}catch{return e.body}}function Ev(e=document){const t=e.defaultView;return Math.abs(t.innerWidth-e.documentElement.clientWidth)}const fa=cv("modal-open");class xv{constructor({ownerDocument:t,handleContainerOverflow:n=!0,isRTL:r=!1}={}){this.handleContainerOverflow=n,this.isRTL=r,this.modals=[],this.ownerDocument=t}getScrollbarWidth(){return Ev(this.ownerDocument)}getElement(){return(this.ownerDocument||document).body}setModalAttributes(t){}removeModalAttributes(t){}setContainerStyle(t){const n={overflow:"hidden"},r=this.isRTL?"paddingLeft":"paddingRight",l=this.getElement();t.style={overflow:l.style.overflow,[r]:l.style[r]},t.scrollBarWidth&&(n[r]=`${parseInt(Kt(l,r)||"0",10)+t.scrollBarWidth}px`),l.setAttribute(fa,""),Kt(l,n)}reset(){[...this.modals].forEach(t=>this.remove(t))}removeContainerStyle(t){const n=this.getElement();n.removeAttribute(fa),Object.assign(n.style,t.style)}add(t){let n=this.modals.indexOf(t);return n!==-1||(n=this.modals.length,this.modals.push(t),this.setModalAttributes(t),n!==0)||(this.state={scrollBarWidth:this.getScrollbarWidth(),style:{}},this.handleContainerOverflow&&this.setContainerStyle(this.state)),n}remove(t){const n=this.modals.indexOf(t);n!==-1&&(this.modals.splice(n,1),!this.modals.length&&this.handleContainerOverflow&&this.removeContainerStyle(this.state),this.removeModalAttributes(t))}isTopModal(t){return!!this.modals.length&&this.modals[this.modals.length-1]===t}}const Qu=xv,Ho=(e,t)=>In?e==null?(t||so()).body:(typeof e=="function"&&(e=e()),e&&"current"in e&&(e=e.current),e&&("nodeType"in e||e.getBoundingClientRect)?e:null):null;function Cv(e,t){const n=Hu(),[r,l]=v.useState(()=>Ho(e,n==null?void 0:n.document));if(!r){const o=Ho(e);o&&l(o)}return v.useEffect(()=>{t&&r&&t(r)},[t,r]),v.useEffect(()=>{const o=Ho(e);o!==r&&l(o)},[e,r]),r}function Nv({children:e,in:t,onExited:n,mountOnEnter:r,unmountOnExit:l}){const o=v.useRef(null),i=v.useRef(t),u=Pe(n);v.useEffect(()=>{t?i.current=!0:u(o.current)},[t,u]);const s=ao(o,e.ref),a=v.cloneElement(e,{ref:s});return t?a:l||!i.current&&r?null:a}function Tv({in:e,onTransition:t}){const n=v.useRef(null),r=v.useRef(!0),l=Pe(t);return ua(()=>{if(!n.current)return;let o=!1;return l({in:e,element:n.current,initial:r.current,isStale:()=>o}),()=>{o=!0}},[e,l]),ua(()=>(r.current=!1,()=>{r.current=!0}),[]),n}function _v({children:e,in:t,onExited:n,onEntered:r,transition:l}){const[o,i]=v.useState(!t);t&&o&&i(!1);const u=Tv({in:!!t,onTransition:a=>{const d=()=>{a.isStale()||(a.in?r==null||r(a.element,a.initial):(i(!0),n==null||n(a.element)))};Promise.resolve(l(a)).then(d,h=>{throw a.in||i(!0),h})}}),s=ao(u,e.ref);return o&&!t?null:v.cloneElement(e,{ref:s})}function da(e,t,n){return e?y.jsx(e,Object.assign({},n)):t?y.jsx(_v,Object.assign({},n,{transition:t})):y.jsx(Nv,Object.assign({},n))}function Rv(e){return e.code==="Escape"||e.keyCode===27}const jv=["show","role","className","style","children","backdrop","keyboard","onBackdropClick","onEscapeKeyDown","transition","runTransition","backdropTransition","runBackdropTransition","autoFocus","enforceFocus","restoreFocus","restoreFocusOptions","renderDialog","renderBackdrop","manager","container","onShow","onHide","onExit","onExited","onExiting","onEnter","onEntering","onEntered"];function Lv(e,t){if(e==null)return{};var n={},r=Object.keys(e),l,o;for(o=0;o=0)&&(n[l]=e[l]);return n}let Wo;function Ov(e){return Wo||(Wo=new Qu({ownerDocument:e==null?void 0:e.document})),Wo}function Pv(e){const t=Hu(),n=e||Ov(t),r=v.useRef({dialog:null,backdrop:null});return Object.assign(r.current,{add:()=>n.add(r.current),remove:()=>n.remove(r.current),isTopModal:()=>n.isTopModal(r.current),setDialogRef:v.useCallback(l=>{r.current.dialog=l},[]),setBackdropRef:v.useCallback(l=>{r.current.backdrop=l},[])})}const vd=v.forwardRef((e,t)=>{let{show:n=!1,role:r="dialog",className:l,style:o,children:i,backdrop:u=!0,keyboard:s=!0,onBackdropClick:a,onEscapeKeyDown:d,transition:h,runTransition:p,backdropTransition:g,runBackdropTransition:S,autoFocus:E=!0,enforceFocus:L=!0,restoreFocus:f=!0,restoreFocusOptions:c,renderDialog:m,renderBackdrop:w=K=>y.jsx("div",Object.assign({},K)),manager:C,container:N,onShow:T,onHide:R=()=>{},onExit:U,onExited:P,onExiting:ie,onEnter:Ve,onEntering:Qe,onEntered:en}=e,An=Lv(e,jv);const _e=Hu(),Ke=Cv(N),x=Pv(C),j=Hh(),O=Wh(n),[D,A]=v.useState(!n),fe=v.useRef(null);v.useImperativeHandle(t,()=>x,[x]),In&&!O&&n&&(fe.current=Bo(_e==null?void 0:_e.document)),n&&D&&A(!1);const Re=Pe(()=>{if(x.add(),nn.current=Ul(document,"keydown",fo),tn.current=Ul(document,"focus",()=>setTimeout(je),!0),T&&T(),E){var K,Dr;const Hn=Bo((K=(Dr=x.dialog)==null?void 0:Dr.ownerDocument)!=null?K:_e==null?void 0:_e.document);x.dialog&&Hn&&!aa(x.dialog,Hn)&&(fe.current=Hn,x.dialog.focus())}}),qe=Pe(()=>{if(x.remove(),nn.current==null||nn.current(),tn.current==null||tn.current(),f){var K;(K=fe.current)==null||K.focus==null||K.focus(c),fe.current=null}});v.useEffect(()=>{!n||!Ke||Re()},[n,Ke,Re]),v.useEffect(()=>{D&&qe()},[D,qe]),Zf(()=>{qe()});const je=Pe(()=>{if(!L||!j()||!x.isTopModal())return;const K=Bo(_e==null?void 0:_e.document);x.dialog&&K&&!aa(x.dialog,K)&&x.dialog.focus()}),dt=Pe(K=>{K.target===K.currentTarget&&(a==null||a(K),u===!0&&R())}),fo=Pe(K=>{s&&Rv(K)&&x.isTopModal()&&(d==null||d(K),K.defaultPrevented||R())}),tn=v.useRef(),nn=v.useRef(),Un=(...K)=>{A(!0),P==null||P(...K)};if(!Ke)return null;const $r=Object.assign({role:r,ref:x.setDialogRef,"aria-modal":r==="dialog"?!0:void 0},An,{style:o,className:l,tabIndex:-1});let Bn=m?m($r):y.jsx("div",Object.assign({},$r,{children:v.cloneElement(i,{role:"document"})}));Bn=da(h,p,{unmountOnExit:!0,mountOnEnter:!0,appear:!0,in:!!n,onExit:U,onExiting:ie,onExited:Un,onEnter:Ve,onEntering:Qe,onEntered:en,children:Bn});let Mt=null;return u&&(Mt=w({ref:x.setBackdropRef,onClick:dt}),Mt=da(g,S,{in:!!n,appear:!0,mountOnEnter:!0,unmountOnExit:!0,children:Mt})),y.jsx(y.Fragment,{children:kn.createPortal(y.jsxs(y.Fragment,{children:[Mt,Bn]}),Ke)})});vd.displayName="Modal";const Fv=Object.assign(vd,{Manager:Qu});function Mv(e,t){return e.classList?!!t&&e.classList.contains(t):(" "+(e.className.baseVal||e.className)+" ").indexOf(" "+t+" ")!==-1}function zv(e,t){e.classList?e.classList.add(t):Mv(e,t)||(typeof e.className=="string"?e.className=e.className+" "+t:e.setAttribute("class",(e.className&&e.className.baseVal||"")+" "+t))}function pa(e,t){return e.replace(new RegExp("(^|\\s)"+t+"(?:\\s|$)","g"),"$1").replace(/\s+/g," ").replace(/^\s*|\s*$/g,"")}function $v(e,t){e.classList?e.classList.remove(t):typeof e.className=="string"?e.className=pa(e.className,t):e.setAttribute("class",pa(e.className&&e.className.baseVal||"",t))}const sn={FIXED_CONTENT:".fixed-top, .fixed-bottom, .is-fixed, .sticky-top",STICKY_CONTENT:".sticky-top",NAVBAR_TOGGLER:".navbar-toggler"};class Dv extends Qu{adjustAndStore(t,n,r){const l=n.style[t];n.dataset[t]=l,Kt(n,{[t]:`${parseFloat(Kt(n,t))+r}px`})}restore(t,n){const r=n.dataset[t];r!==void 0&&(delete n.dataset[t],Kt(n,{[t]:r}))}setContainerStyle(t){super.setContainerStyle(t);const n=this.getElement();if(zv(n,"modal-open"),!t.scrollBarWidth)return;const r=this.isRTL?"paddingLeft":"paddingRight",l=this.isRTL?"marginLeft":"marginRight";un(n,sn.FIXED_CONTENT).forEach(o=>this.adjustAndStore(r,o,t.scrollBarWidth)),un(n,sn.STICKY_CONTENT).forEach(o=>this.adjustAndStore(l,o,-t.scrollBarWidth)),un(n,sn.NAVBAR_TOGGLER).forEach(o=>this.adjustAndStore(l,o,t.scrollBarWidth))}removeContainerStyle(t){super.removeContainerStyle(t);const n=this.getElement();$v(n,"modal-open");const r=this.isRTL?"paddingLeft":"paddingRight",l=this.isRTL?"marginLeft":"marginRight";un(n,sn.FIXED_CONTENT).forEach(o=>this.restore(r,o)),un(n,sn.STICKY_CONTENT).forEach(o=>this.restore(l,o)),un(n,sn.NAVBAR_TOGGLER).forEach(o=>this.restore(l,o))}}let Vo;function Iv(e){return Vo||(Vo=new Dv(e)),Vo}const yd=v.forwardRef(({className:e,bsPrefix:t,as:n="div",...r},l)=>(t=H(t,"modal-body"),y.jsx(n,{ref:l,className:M(e,t),...r})));yd.displayName="ModalBody";const Av=yd,Uv=v.createContext({onHide(){}}),gd=Uv,wd=v.forwardRef(({bsPrefix:e,className:t,contentClassName:n,centered:r,size:l,fullscreen:o,children:i,scrollable:u,...s},a)=>{e=H(e,"modal");const d=`${e}-dialog`,h=typeof o=="string"?`${e}-fullscreen-${o}`:`${e}-fullscreen`;return y.jsx("div",{...s,ref:a,className:M(d,t,l&&`${e}-${l}`,r&&`${d}-centered`,u&&`${d}-scrollable`,o&&h),children:y.jsx("div",{className:M(`${e}-content`,n),children:i})})});wd.displayName="ModalDialog";const Sd=wd,kd=v.forwardRef(({className:e,bsPrefix:t,as:n="div",...r},l)=>(t=H(t,"modal-footer"),y.jsx(n,{ref:l,className:M(e,t),...r})));kd.displayName="ModalFooter";const Bv=kd,Hv=v.forwardRef(({closeLabel:e="Close",closeVariant:t,closeButton:n=!1,onHide:r,children:l,...o},i)=>{const u=v.useContext(gd),s=Pe(()=>{u==null||u.onHide(),r==null||r()});return y.jsxs("div",{ref:i,...o,children:[l,n&&y.jsx(Gf,{"aria-label":e,variant:t,onClick:s})]})}),Wv=Hv,Ed=v.forwardRef(({bsPrefix:e,className:t,closeLabel:n="Close",closeButton:r=!1,...l},o)=>(e=H(e,"modal-header"),y.jsx(Wv,{ref:o,...l,className:M(t,e),closeLabel:n,closeButton:r})));Ed.displayName="ModalHeader";const Vv=Ed,Qv=Bf("h4"),xd=v.forwardRef(({className:e,bsPrefix:t,as:n=Qv,...r},l)=>(t=H(t,"modal-title"),y.jsx(n,{ref:l,className:M(e,t),...r})));xd.displayName="ModalTitle";const Kv=xd;function Gv(e){return y.jsx(Bl,{...e,timeout:null})}function Yv(e){return y.jsx(Bl,{...e,timeout:null})}const Cd=v.forwardRef(({bsPrefix:e,className:t,style:n,dialogClassName:r,contentClassName:l,children:o,dialogAs:i=Sd,"aria-labelledby":u,"aria-describedby":s,"aria-label":a,show:d=!1,animation:h=!0,backdrop:p=!0,keyboard:g=!0,onEscapeKeyDown:S,onShow:E,onHide:L,container:f,autoFocus:c=!0,enforceFocus:m=!0,restoreFocus:w=!0,restoreFocusOptions:C,onEntered:N,onExit:T,onExiting:R,onEnter:U,onEntering:P,onExited:ie,backdropClassName:Ve,manager:Qe,...en},An)=>{const[_e,Ke]=v.useState({}),[x,j]=v.useState(!1),O=v.useRef(!1),D=v.useRef(!1),A=v.useRef(null),[fe,Re]=Bh(),qe=ao(An,Re),je=Pe(L),dt=hh();e=H(e,"modal");const fo=v.useMemo(()=>({onHide:je}),[je]);function tn(){return Qe||Iv({isRTL:dt})}function nn($){if(!In)return;const rn=tn().getScrollbarWidth()>0,Gu=$.scrollHeight>so($).documentElement.clientHeight;Ke({paddingRight:rn&&!Gu?ca():void 0,paddingLeft:!rn&&Gu?ca():void 0})}const Un=Pe(()=>{fe&&nn(fe.dialog)});Zf(()=>{Wi(window,"resize",Un),A.current==null||A.current()});const $r=()=>{O.current=!0},Bn=$=>{O.current&&fe&&$.target===fe.dialog&&(D.current=!0),O.current=!1},Mt=()=>{j(!0),A.current=Uf(fe.dialog,()=>{j(!1)})},K=$=>{$.target===$.currentTarget&&Mt()},Dr=$=>{if(p==="static"){K($);return}if(D.current||$.target!==$.currentTarget){D.current=!1;return}L==null||L()},Hn=$=>{g?S==null||S($):($.preventDefault(),p==="static"&&Mt())},Od=($,rn)=>{$&&nn($),U==null||U($,rn)},Pd=$=>{A.current==null||A.current(),T==null||T($)},Fd=($,rn)=>{P==null||P($,rn),Af(window,"resize",Un)},Md=$=>{$&&($.style.display=""),ie==null||ie($),Wi(window,"resize",Un)},zd=v.useCallback($=>y.jsx("div",{...$,className:M(`${e}-backdrop`,Ve,!h&&"show")}),[h,Ve,e]),Ku={...n,..._e};Ku.display="block";const $d=$=>y.jsx("div",{role:"dialog",...$,style:Ku,className:M(t,e,x&&`${e}-static`,!h&&"show"),onClick:p?Dr:void 0,onMouseUp:Bn,"aria-label":a,"aria-labelledby":u,"aria-describedby":s,children:y.jsx(i,{...en,onMouseDown:$r,className:r,contentClassName:l,children:o})});return y.jsx(gd.Provider,{value:fo,children:y.jsx(Fv,{show:d,ref:qe,backdrop:p,container:f,keyboard:!0,autoFocus:c,enforceFocus:m,restoreFocus:w,restoreFocusOptions:C,onEscapeKeyDown:Hn,onShow:E,onHide:L,onEnter:Od,onEntering:Fd,onEntered:N,onExit:Pd,onExiting:R,onExited:Md,manager:tn(),transition:h?Gv:void 0,backdropTransition:h?Yv:void 0,renderBackdrop:zd,renderDialog:$d})})});Cd.displayName="Modal";const Jn=Object.assign(Cd,{Body:Av,Header:Vv,Title:Kv,Footer:Bv,Dialog:Sd,TRANSITION_DURATION:300,BACKDROP_TRANSITION_DURATION:150}),ma=1e3;function Xv(e,t,n){const r=(e-t)/(n-t)*100;return Math.round(r*ma)/ma}function ha({min:e,now:t,max:n,label:r,visuallyHidden:l,striped:o,animated:i,className:u,style:s,variant:a,bsPrefix:d,...h},p){return y.jsx("div",{ref:p,...h,role:"progressbar",className:M(u,`${d}-bar`,{[`bg-${a}`]:a,[`${d}-bar-animated`]:i,[`${d}-bar-striped`]:i||o}),style:{width:`${Xv(t,e,n)}%`,...s},"aria-valuenow":t,"aria-valuemin":e,"aria-valuemax":n,children:l?y.jsx("span",{className:"visually-hidden",children:r}):r})}const Nd=v.forwardRef(({isChild:e=!1,...t},n)=>{const r={min:0,max:100,animated:!1,visuallyHidden:!1,striped:!1,...t};if(r.bsPrefix=H(r.bsPrefix,"progress"),e)return ha(r,n);const{min:l,now:o,max:i,label:u,visuallyHidden:s,striped:a,animated:d,bsPrefix:h,variant:p,className:g,children:S,...E}=r;return y.jsx("div",{ref:n,...E,className:M(g,h),children:S?lv(S,L=>v.cloneElement(L,{isChild:!0})):ha({min:l,now:o,max:i,label:u,visuallyHidden:s,striped:a,animated:d,bsPrefix:h,variant:p},n)})});Nd.displayName="ProgressBar";const Zv=Nd,Td=v.forwardRef(({bsPrefix:e,className:t,as:n="div",...r},l)=>{const o=H(e,"row"),i=Ff(),u=Mf(),s=`${o}-cols`,a=[];return i.forEach(d=>{const h=r[d];delete r[d];let p;h!=null&&typeof h=="object"?{cols:p}=h:p=h;const g=d!==u?`-${d}`:"";p!=null&&a.push(`${s}${g}-${p}`)}),y.jsx(n,{ref:l,...r,className:M(t,o,...a)})});Td.displayName="Row";const Jv=Td,_d=v.forwardRef(({bsPrefix:e,variant:t,animation:n="border",size:r,as:l="div",className:o,...i},u)=>{e=H(e,"spinner");const s=`${e}-${n}`;return y.jsx(l,{ref:u,...i,className:M(o,s,r&&`${s}-${r}`,t&&`text-${t}`)})});_d.displayName="Spinner";const jr=_d,qv=window.origin==="null"||window.origin==="http://localhost:3031"?"http://localhost:3030":"",rl=async(e,t,n)=>{console.log(e,t);const r=qv+t,l={method:e,headers:{Accept:"application/json"},body:n};let o={method:e,path:t,text:""},i;try{i=await fetch(r,l)}catch{return o.text="network error",Promise.reject(o)}if(o.status=i.status,o.statusText=i.statusText,!i.ok){const s=await i.text();try{const a=JSON.parse(s);o.text=a.human_readable!==void 0?a.human_readable:JSON.stringify(a,null,2)}catch{o.text=s}return Promise.reject(o)}return await i.json()},Lr={listTorrents:()=>rl("GET","/torrents"),getTorrentDetails:e=>rl("GET",`/torrents/${e}`),getTorrentStats:e=>rl("GET",`/torrents/${e}/stats`),uploadTorrent:(e,t)=>{t=t||{};let n="/torrents?&overwrite=true";return t.listOnly&&(n+="&list_only=true"),t.selectedFiles!=null&&(n+=`&only_files=${t.selectedFiles.join(",")}`),rl("POST",n,e)}},co=v.createContext(null),bv=({id:e,detailsResponse:t,statsResponse:n})=>{var u,s;const r=((u=n==null?void 0:n.snapshot)==null?void 0:u.total_bytes)??1,l=((s=n==null?void 0:n.snapshot)==null?void 0:s.have_bytes)??0,o=r==l,i=l/r*100;return y.jsxs(Jv,{className:`${e%2==0?"bg-light":""}`,children:[y.jsx(zt,{size:4,label:"Name",children:t?y.jsx("div",{className:"text-truncate",children:cy(t)}):y.jsx(jr,{})}),n?y.jsxs(y.Fragment,{children:[y.jsx(zt,{label:"Size",children:`${jd(r)} `}),y.jsx(zt,{size:2,label:"Progress",children:y.jsx(Zv,{now:i,label:`${i.toFixed(2)}% `,animated:!o})}),y.jsx(zt,{size:2,label:"Down Speed",children:n.download_speed.human_readable}),y.jsx(zt,{label:"ETA",children:fy(n)}),y.jsx(zt,{size:2,label:"Peers",children:`${n.snapshot.peer_stats.live} / ${n.snapshot.peer_stats.seen}`})]}):y.jsx(zt,{label:"Loading stats",size:8,children:y.jsx(jr,{})})]})},zt=({size:e,label:t,children:n})=>y.jsxs(qf,{md:e||1,className:"py-3",children:[y.jsx("div",{className:"fw-bold",children:t}),n]}),ey=({id:e,torrent:t})=>{const[n,r]=v.useState(null),[l,o]=v.useState(null);return v.useEffect(()=>{if(n===null)return py(async()=>{await Lr.getTorrentDetails(t.id).then(r)},1e3)},[n]),v.useEffect(()=>Ld(async()=>Lr.getTorrentStats(t.id).then(a=>(o(a),ay(a)?5e3:500),a=>1e4),0),[]),y.jsx(bv,{id:e,detailsResponse:n,statsResponse:l})},ty=e=>{if(e.torrents===null&&e.loading)return y.jsx(jr,{});if(e.torrents!==null)return e.torrents.length===0?y.jsx("div",{className:"text-center",children:y.jsx("p",{children:"No existing torrents found. Add them through buttons below."})}):y.jsx(y.Fragment,{children:e.torrents.map(t=>y.jsx(ey,{id:t.id,torrent:t},t.id))})},ny=()=>{const[e,t]=v.useState(null),[n,r]=v.useState(null),[l,o]=v.useState(null),[i,u]=v.useState(!1),s=async()=>{u(!0);let d=await Lr.listTorrents().finally(()=>u(!1));o(d.torrents)};v.useEffect(()=>Ld(async()=>s().then(()=>(r(null),5e3),d=>(r({text:"Error refreshing torrents",details:d}),console.error(d),5e3)),0),[]);const a={setCloseableError:t,refreshTorrents:s};return y.jsx(co.Provider,{value:a,children:y.jsxs("div",{className:"text-center",children:[y.jsx("h1",{className:"mt-3 mb-4",children:"rqbit web 0.0.1-alpha"}),y.jsx(sy,{closeableError:e,otherError:n,torrents:l,torrentsLoading:i})]})})},ry=e=>{let{details:t}=e;return t?y.jsxs(y.Fragment,{children:[t.status&&y.jsxs("strong",{children:[t.status," ",t.statusText,": "]}),t.text]}):null},Wl=e=>{let{error:t,remove:n}=e;return t==null?null:y.jsxs(sa,{variant:"danger",onClose:n,dismissible:n!=null,children:[y.jsx(sa.Heading,{children:t.text}),y.jsx(ry,{details:t.details})]})},Rd=({buttonText:e,onClick:t,data:n,resetData:r,variant:l})=>{const[o,i]=v.useState(!1),[u,s]=v.useState([]),[a,d]=v.useState(null);v.useContext(co);const h=n!==null||a!==null;v.useEffect(()=>{if(n===null)return;let g=setTimeout(async()=>{i(!0);try{const S=await Lr.uploadTorrent(n,{listOnly:!0});s(S.details.files)}catch(S){d({text:"Error listing torrent",details:S})}finally{i(!1)}},0);return()=>clearTimeout(g)},[n]);const p=()=>{r(),d(null),s([]),i(!1)};return y.jsxs(y.Fragment,{children:[y.jsx(Vi,{variant:l,onClick:t,className:"m-1",children:e}),y.jsx(iy,{show:h,onHide:p,fileListError:a,fileList:u,data:n,fileListLoading:o})]})},ly=()=>{let[e,t]=v.useState(null);const n=()=>{const r=prompt("Enter magnet link or HTTP(s) URL");t(r===""?null:r)};return y.jsx(Rd,{variant:"primary",buttonText:"Add Torrent from Magnet Link",onClick:n,data:e,resetData:()=>t(null)})},oy=()=>{const e=v.useRef(),[t,n]=v.useState(null),r=async()=>{const i=e.current.files[0];n(i)},l=()=>{e.current.value="",n(null)},o=()=>{e.current.click()};return y.jsxs(y.Fragment,{children:[y.jsx("input",{type:"file",ref:e,accept:".torrent",onChange:r,className:"d-none"}),y.jsx(Rd,{variant:"secondary",buttonText:"Upload .torrent File",onClick:o,data:t,resetData:l})]})},iy=e=>{let{show:t,onHide:n,fileList:r,fileListError:l,fileListLoading:o,data:i}=e;const[u,s]=v.useState([]),[a,d]=v.useState(!1),[h,p]=v.useState(null),g=v.useContext(co);v.useEffect(()=>{s(r.map((f,c)=>c))},[r]);const S=()=>{n(),s([]),p(null),d(!1)},E=f=>{u.includes(f)?s(u.filter(c=>c!==f)):s([...u,f])},L=async()=>{d(!0),Lr.uploadTorrent(i,{selectedFiles:u}).then(()=>{n(),g.refreshTorrents()},f=>{p({text:"Error starting torrent",details:f})}).finally(()=>d(!1))};return y.jsxs(Jn,{show:t,onHide:S,size:"lg",children:[y.jsx(Jn.Header,{closeButton:!0,children:!!l||y.jsx(Jn.Title,{children:"Select Files"})}),y.jsxs(Jn.Body,{children:[o?y.jsx(jr,{}):l?y.jsx(Wl,{error:l}):y.jsx(Uo,{children:r.map((f,c)=>y.jsx(Uo.Group,{controlId:`check-${c}`,children:y.jsx(Uo.Check,{type:"checkbox",label:`${f.name} (${jd(f.length)})`,checked:u.includes(c),onChange:()=>E(c)})},c))}),y.jsx(Wl,{error:h})]}),y.jsxs(Jn.Footer,{children:[a&&y.jsx(jr,{}),y.jsx(Vi,{variant:"primary",onClick:L,disabled:o||a||u.length==0,children:"OK"}),y.jsx(Vi,{variant:"secondary",onClick:S,children:"Cancel"})]})]})},uy=()=>y.jsxs("div",{id:"buttons-container",className:"mt-3",children:[y.jsx(ly,{}),y.jsx(oy,{})]}),sy=e=>{let t=v.useContext(co);return y.jsxs(uv,{children:[y.jsx(Wl,{error:e.closeableError,remove:()=>t.setCloseableError(null)}),y.jsx(Wl,{error:e.otherError}),y.jsx(ty,{torrents:e.torrents,loading:e.torrentsLoading}),y.jsx(uy,{})]})};function ay(e){return e.snapshot.have_bytes==e.snapshot.total_bytes}function jd(e){if(e===0)return"0 Bytes";const t=1024,n=["Bytes","KB","MB","GB"],r=Math.floor(Math.log(e)/Math.log(t));return parseFloat((e/Math.pow(t,r)).toFixed(2))+" "+n[r]}function cy(e){return e.files.filter(n=>n.included).reduce((n,r)=>n.length>r.length?n:r).name}function fy(e){return e.time_remaining&&e.time_remaining.duration?dy(e.time_remaining.duration.secs):"N/A"}function dy(e){const t=Math.floor(e/3600),n=Math.floor(e%3600/60),r=e%60,l=(o,i)=>o>0?`${o}${i}`:"";return t>0?`${l(t,"h")} ${l(n,"m")}`.trim():n>0?`${l(n,"m")} ${l(r,"s")}`.trim():`${l(r,"s")}`.trim()}function Ld(e,t){let n,r=t;const l=async()=>{if(r=await e(),r==null)throw"asyncCallback returned null or undefined";o()};let o=()=>{n=setTimeout(l,r)};return o(),()=>{clearTimeout(n)}}function py(e,t){let n;const r=async()=>{await e().then(()=>!1,()=>!0)&&l()};let l=o=>{n=setTimeout(r,o!==void 0?o:t)};return l(0),()=>clearTimeout(n)}async function my(){const e=document.getElementById("app");Qo.createRoot(e).render(y.jsx(v.StrictMode,{children:y.jsx(ny,{})}))}document.addEventListener("DOMContentLoaded",my); diff --git a/crates/librqbit/webui/node_modules/.package-lock.json b/crates/librqbit/webui/node_modules/.package-lock.json index 1d72b7f..b0ea802 100644 --- a/crates/librqbit/webui/node_modules/.package-lock.json +++ b/crates/librqbit/webui/node_modules/.package-lock.json @@ -3,275 +3,6 @@ "lockfileVersion": 3, "requires": true, "packages": { - "node_modules/@ampproject/remapping": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/@ampproject/remapping/-/remapping-2.2.1.tgz", - "integrity": "sha512-lFMjJTrFL3j7L9yBxwYfCq2k6qqwHyzuUl/XBnif78PWTJYyL/dfowQHWE3sp6U6ZzqWiiIZnpTMO96zhkjwtg==", - "dependencies": { - "@jridgewell/gen-mapping": "^0.3.0", - "@jridgewell/trace-mapping": "^0.3.9" - }, - "engines": { - "node": ">=6.0.0" - } - }, - "node_modules/@babel/code-frame": { - "version": "7.23.4", - "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.23.4.tgz", - "integrity": "sha512-r1IONyb6Ia+jYR2vvIDhdWdlTGhqbBoFqLTQidzZ4kepUFH15ejXvFHxCVbtl7BOXIudsIubf4E81xeA3h3IXA==", - "dependencies": { - "@babel/highlight": "^7.23.4", - "chalk": "^2.4.2" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/compat-data": { - "version": "7.23.3", - "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.23.3.tgz", - "integrity": "sha512-BmR4bWbDIoFJmJ9z2cZ8Gmm2MXgEDgjdWgpKmKWUt54UGFJdlj31ECtbaDvCG/qVdG3AQ1SfpZEs01lUFbzLOQ==", - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/core": { - "version": "7.23.3", - "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.23.3.tgz", - "integrity": "sha512-Jg+msLuNuCJDyBvFv5+OKOUjWMZgd85bKjbICd3zWrKAo+bJ49HJufi7CQE0q0uR8NGyO6xkCACScNqyjHSZew==", - "dependencies": { - "@ampproject/remapping": "^2.2.0", - "@babel/code-frame": "^7.22.13", - "@babel/generator": "^7.23.3", - "@babel/helper-compilation-targets": "^7.22.15", - "@babel/helper-module-transforms": "^7.23.3", - "@babel/helpers": "^7.23.2", - "@babel/parser": "^7.23.3", - "@babel/template": "^7.22.15", - "@babel/traverse": "^7.23.3", - "@babel/types": "^7.23.3", - "convert-source-map": "^2.0.0", - "debug": "^4.1.0", - "gensync": "^1.0.0-beta.2", - "json5": "^2.2.3", - "semver": "^6.3.1" - }, - "engines": { - "node": ">=6.9.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/babel" - } - }, - "node_modules/@babel/generator": { - "version": "7.23.4", - "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.23.4.tgz", - "integrity": "sha512-esuS49Cga3HcThFNebGhlgsrVLkvhqvYDTzgjfFFlHJcIfLe5jFmRRfCQ1KuBfc4Jrtn3ndLgKWAKjBE+IraYQ==", - "dependencies": { - "@babel/types": "^7.23.4", - "@jridgewell/gen-mapping": "^0.3.2", - "@jridgewell/trace-mapping": "^0.3.17", - "jsesc": "^2.5.1" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/helper-compilation-targets": { - "version": "7.22.15", - "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.22.15.tgz", - "integrity": "sha512-y6EEzULok0Qvz8yyLkCvVX+02ic+By2UdOhylwUOvOn9dvYc9mKICJuuU1n1XBI02YWsNsnrY1kc6DVbjcXbtw==", - "dependencies": { - "@babel/compat-data": "^7.22.9", - "@babel/helper-validator-option": "^7.22.15", - "browserslist": "^4.21.9", - "lru-cache": "^5.1.1", - "semver": "^6.3.1" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/helper-environment-visitor": { - "version": "7.22.20", - "resolved": "https://registry.npmjs.org/@babel/helper-environment-visitor/-/helper-environment-visitor-7.22.20.tgz", - "integrity": "sha512-zfedSIzFhat/gFhWfHtgWvlec0nqB9YEIVrpuwjruLlXfUSnA8cJB0miHKwqDnQ7d32aKo2xt88/xZptwxbfhA==", - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/helper-function-name": { - "version": "7.23.0", - "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.23.0.tgz", - "integrity": "sha512-OErEqsrxjZTJciZ4Oo+eoZqeW9UIiOcuYKRJA4ZAgV9myA+pOXhhmpfNCKjEH/auVfEYVFJ6y1Tc4r0eIApqiw==", - "dependencies": { - "@babel/template": "^7.22.15", - "@babel/types": "^7.23.0" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/helper-hoist-variables": { - "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/helper-hoist-variables/-/helper-hoist-variables-7.22.5.tgz", - "integrity": "sha512-wGjk9QZVzvknA6yKIUURb8zY3grXCcOZt+/7Wcy8O2uctxhplmUPkOdlgoNhmdVee2c92JXbf1xpMtVNbfoxRw==", - "dependencies": { - "@babel/types": "^7.22.5" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/helper-module-imports": { - "version": "7.22.15", - "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.22.15.tgz", - "integrity": "sha512-0pYVBnDKZO2fnSPCrgM/6WMc7eS20Fbok+0r88fp+YtWVLZrp4CkafFGIp+W0VKw4a22sgebPT99y+FDNMdP4w==", - "dependencies": { - "@babel/types": "^7.22.15" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/helper-module-transforms": { - "version": "7.23.3", - "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.23.3.tgz", - "integrity": "sha512-7bBs4ED9OmswdfDzpz4MpWgSrV7FXlc3zIagvLFjS5H+Mk7Snr21vQ6QwrsoCGMfNC4e4LQPdoULEt4ykz0SRQ==", - "dependencies": { - "@babel/helper-environment-visitor": "^7.22.20", - "@babel/helper-module-imports": "^7.22.15", - "@babel/helper-simple-access": "^7.22.5", - "@babel/helper-split-export-declaration": "^7.22.6", - "@babel/helper-validator-identifier": "^7.22.20" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0" - } - }, - "node_modules/@babel/helper-plugin-utils": { - "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.22.5.tgz", - "integrity": "sha512-uLls06UVKgFG9QD4OeFYLEGteMIAa5kpTPcFL28yuCIIzsf6ZyKZMllKVOCZFhiZ5ptnwX4mtKdWCBE/uT4amg==", - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/helper-simple-access": { - "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/helper-simple-access/-/helper-simple-access-7.22.5.tgz", - "integrity": "sha512-n0H99E/K+Bika3++WNL17POvo4rKWZ7lZEp1Q+fStVbUi8nxPQEBOlTmCOxW/0JsS56SKKQ+ojAe2pHKJHN35w==", - "dependencies": { - "@babel/types": "^7.22.5" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/helper-split-export-declaration": { - "version": "7.22.6", - "resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.22.6.tgz", - "integrity": "sha512-AsUnxuLhRYsisFiaJwvp1QF+I3KjD5FOxut14q/GzovUe6orHLesW2C7d754kRm53h5gqrz6sFl6sxc4BVtE/g==", - "dependencies": { - "@babel/types": "^7.22.5" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/helper-string-parser": { - "version": "7.23.4", - "resolved": "https://registry.npmjs.org/@babel/helper-string-parser/-/helper-string-parser-7.23.4.tgz", - "integrity": "sha512-803gmbQdqwdf4olxrX4AJyFBV/RTr3rSmOj0rKwesmzlfhYNDEs+/iOcznzpNWlJlIlTJC2QfPFcHB6DlzdVLQ==", - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/helper-validator-identifier": { - "version": "7.22.20", - "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.22.20.tgz", - "integrity": "sha512-Y4OZ+ytlatR8AI+8KZfKuL5urKp7qey08ha31L8b3BwewJAoJamTzyvxPR/5D+KkdJCGPq/+8TukHBlY10FX9A==", - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/helper-validator-option": { - "version": "7.22.15", - "resolved": "https://registry.npmjs.org/@babel/helper-validator-option/-/helper-validator-option-7.22.15.tgz", - "integrity": "sha512-bMn7RmyFjY/mdECUbgn9eoSY4vqvacUnS9i9vGAGttgFWesO6B4CYWA7XlpbWgBt71iv/hfbPlynohStqnu5hA==", - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/helpers": { - "version": "7.23.4", - "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.23.4.tgz", - "integrity": "sha512-HfcMizYz10cr3h29VqyfGL6ZWIjTwWfvYBMsBVGwpcbhNGe3wQ1ZXZRPzZoAHhd9OqHadHqjQ89iVKINXnbzuw==", - "dependencies": { - "@babel/template": "^7.22.15", - "@babel/traverse": "^7.23.4", - "@babel/types": "^7.23.4" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/highlight": { - "version": "7.23.4", - "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.23.4.tgz", - "integrity": "sha512-acGdbYSfp2WheJoJm/EBBBLh/ID8KDc64ISZ9DYtBmC8/Q204PZJLHyzeB5qMzJ5trcOkybd78M4x2KWsUq++A==", - "dependencies": { - "@babel/helper-validator-identifier": "^7.22.20", - "chalk": "^2.4.2", - "js-tokens": "^4.0.0" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/parser": { - "version": "7.23.4", - "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.23.4.tgz", - "integrity": "sha512-vf3Xna6UEprW+7t6EtOmFpHNAuxw3xqPZghy+brsnusscJRW5BMUzzHZc5ICjULee81WeUV2jjakG09MDglJXQ==", - "bin": { - "parser": "bin/babel-parser.js" - }, - "engines": { - "node": ">=6.0.0" - } - }, - "node_modules/@babel/plugin-transform-react-jsx-self": { - "version": "7.23.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-jsx-self/-/plugin-transform-react-jsx-self-7.23.3.tgz", - "integrity": "sha512-qXRvbeKDSfwnlJnanVRp0SfuWE5DQhwQr5xtLBzp56Wabyo+4CMosF6Kfp+eOD/4FYpql64XVJ2W0pVLlJZxOQ==", - "dependencies": { - "@babel/helper-plugin-utils": "^7.22.5" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-transform-react-jsx-source": { - "version": "7.23.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-jsx-source/-/plugin-transform-react-jsx-source-7.23.3.tgz", - "integrity": "sha512-91RS0MDnAWDNvGC6Wio5XYkyWI39FMFO+JK9+4AlgaTH+yWwVTsw7/sn6LK0lH7c5F+TFkpv/3LfCJ1Ydwof/g==", - "dependencies": { - "@babel/helper-plugin-utils": "^7.22.5" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, "node_modules/@babel/runtime": { "version": "7.23.4", "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.23.4.tgz", @@ -283,52 +14,6 @@ "node": ">=6.9.0" } }, - "node_modules/@babel/template": { - "version": "7.22.15", - "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.22.15.tgz", - "integrity": "sha512-QPErUVm4uyJa60rkI73qneDacvdvzxshT3kksGqlGWYdOTIUOwJ7RDUL8sGqslY1uXWSL6xMFKEXDS3ox2uF0w==", - "dependencies": { - "@babel/code-frame": "^7.22.13", - "@babel/parser": "^7.22.15", - "@babel/types": "^7.22.15" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/traverse": { - "version": "7.23.4", - "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.23.4.tgz", - "integrity": "sha512-IYM8wSUwunWTB6tFC2dkKZhxbIjHoWemdK+3f8/wq8aKhbUscxD5MX72ubd90fxvFknaLPeGw5ycU84V1obHJg==", - "dependencies": { - "@babel/code-frame": "^7.23.4", - "@babel/generator": "^7.23.4", - "@babel/helper-environment-visitor": "^7.22.20", - "@babel/helper-function-name": "^7.23.0", - "@babel/helper-hoist-variables": "^7.22.5", - "@babel/helper-split-export-declaration": "^7.22.6", - "@babel/parser": "^7.23.4", - "@babel/types": "^7.23.4", - "debug": "^4.1.0", - "globals": "^11.1.0" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/types": { - "version": "7.23.4", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.23.4.tgz", - "integrity": "sha512-7uIFwVYpoplT5jp/kVv6EF93VaJ8H+Yn5IczYiaAi98ajzjfoZfslet/e0sLh+wVBjb2qqIut1b0S26VSafsSQ==", - "dependencies": { - "@babel/helper-string-parser": "^7.23.4", - "@babel/helper-validator-identifier": "^7.22.20", - "to-fast-properties": "^2.0.0" - }, - "engines": { - "node": ">=6.9.0" - } - }, "node_modules/@esbuild/darwin-arm64": { "version": "0.18.20", "resolved": "https://registry.npmjs.org/@esbuild/darwin-arm64/-/darwin-arm64-0.18.20.tgz", @@ -336,6 +21,7 @@ "cpu": [ "arm64" ], + "dev": true, "optional": true, "os": [ "darwin" @@ -344,49 +30,6 @@ "node": ">=12" } }, - "node_modules/@jridgewell/gen-mapping": { - "version": "0.3.3", - "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.3.tgz", - "integrity": "sha512-HLhSWOLRi875zjjMG/r+Nv0oCW8umGb0BgEhyX3dDX3egwZtB8PqLnjz3yedt8R5StBrzcg4aBpnh8UA9D1BoQ==", - "dependencies": { - "@jridgewell/set-array": "^1.0.1", - "@jridgewell/sourcemap-codec": "^1.4.10", - "@jridgewell/trace-mapping": "^0.3.9" - }, - "engines": { - "node": ">=6.0.0" - } - }, - "node_modules/@jridgewell/resolve-uri": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.1.1.tgz", - "integrity": "sha512-dSYZh7HhCDtCKm4QakX0xFpsRDqjjtZf/kjI/v3T3Nwt5r8/qz/M19F9ySyOqU94SXBmeG9ttTul+YnR4LOxFA==", - "engines": { - "node": ">=6.0.0" - } - }, - "node_modules/@jridgewell/set-array": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/@jridgewell/set-array/-/set-array-1.1.2.tgz", - "integrity": "sha512-xnkseuNADM0gt2bs+BvhO0p78Mk762YnZdsuzFV018NoG1Sj1SCQvpSqa7XUaTam5vAGasABV9qXASMKnFMwMw==", - "engines": { - "node": ">=6.0.0" - } - }, - "node_modules/@jridgewell/sourcemap-codec": { - "version": "1.4.15", - "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.15.tgz", - "integrity": "sha512-eF2rxCRulEKXHTRiDrDy6erMYWqNw4LPdQ8UQA4huuxaQsVeRPFl2oM8oDGxMFhJUWZf9McpLtJasDDZb/Bpeg==" - }, - "node_modules/@jridgewell/trace-mapping": { - "version": "0.3.20", - "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.20.tgz", - "integrity": "sha512-R8LcPeWZol2zR8mmH3JeKQ6QRCFb7XgUhV9ZlGhHLGyg4wpPiPZNQOOWhFZhxKw8u//yTbNGI42Bx/3paXEQ+Q==", - "dependencies": { - "@jridgewell/resolve-uri": "^3.1.0", - "@jridgewell/sourcemap-codec": "^1.4.14" - } - }, "node_modules/@popperjs/core": { "version": "2.11.8", "resolved": "https://registry.npmjs.org/@popperjs/core/-/core-2.11.8.tgz", @@ -457,43 +100,6 @@ "tslib": "^2.4.0" } }, - "node_modules/@types/babel__core": { - "version": "7.20.5", - "resolved": "https://registry.npmjs.org/@types/babel__core/-/babel__core-7.20.5.tgz", - "integrity": "sha512-qoQprZvz5wQFJwMDqeseRXWv3rqMvhgpbXFfVyWhbx9X47POIA6i/+dXefEmZKoAgOaTdaIgNSMqMIU61yRyzA==", - "dependencies": { - "@babel/parser": "^7.20.7", - "@babel/types": "^7.20.7", - "@types/babel__generator": "*", - "@types/babel__template": "*", - "@types/babel__traverse": "*" - } - }, - "node_modules/@types/babel__generator": { - "version": "7.6.7", - "resolved": "https://registry.npmjs.org/@types/babel__generator/-/babel__generator-7.6.7.tgz", - "integrity": "sha512-6Sfsq+EaaLrw4RmdFWE9Onp63TOUue71AWb4Gpa6JxzgTYtimbM086WnYTy2U67AofR++QKCo08ZP6pwx8YFHQ==", - "dependencies": { - "@babel/types": "^7.0.0" - } - }, - "node_modules/@types/babel__template": { - "version": "7.4.4", - "resolved": "https://registry.npmjs.org/@types/babel__template/-/babel__template-7.4.4.tgz", - "integrity": "sha512-h/NUaSyG5EyxBIp8YRxo4RMe2/qQgvyowRwVMzhYhBCONbW8PUsg4lkFMrhgZhUe5z3L3MiLDuvyJ/CaPa2A8A==", - "dependencies": { - "@babel/parser": "^7.1.0", - "@babel/types": "^7.0.0" - } - }, - "node_modules/@types/babel__traverse": { - "version": "7.20.4", - "resolved": "https://registry.npmjs.org/@types/babel__traverse/-/babel__traverse-7.20.4.tgz", - "integrity": "sha512-mSM/iKUk5fDDrEV/e83qY+Cr3I1+Q3qqTuEn++HAWYjEa1+NxZr6CNrcJGf2ZTnq4HoFGC3zaTPZTobCzCFukA==", - "dependencies": { - "@babel/types": "^7.20.7" - } - }, "node_modules/@types/prop-types": { "version": "15.7.11", "resolved": "https://registry.npmjs.org/@types/prop-types/-/prop-types-15.7.11.tgz", @@ -536,40 +142,13 @@ "resolved": "https://registry.npmjs.org/@types/warning/-/warning-3.0.3.tgz", "integrity": "sha512-D1XC7WK8K+zZEveUPY+cf4+kgauk8N4eHr/XIHXGlGYkHLud6hK9lYfZk1ry1TNh798cZUCgb6MqGEG8DkJt6Q==" }, - "node_modules/@vitejs/plugin-react": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/@vitejs/plugin-react/-/plugin-react-4.2.0.tgz", - "integrity": "sha512-+MHTH/e6H12kRp5HUkzOGqPMksezRMmW+TNzlh/QXfI8rRf6l2Z2yH/v12no1UvTwhZgEDMuQ7g7rrfMseU6FQ==", - "dependencies": { - "@babel/core": "^7.23.3", - "@babel/plugin-transform-react-jsx-self": "^7.23.3", - "@babel/plugin-transform-react-jsx-source": "^7.23.3", - "@types/babel__core": "^7.20.4", - "react-refresh": "^0.14.0" - }, - "engines": { - "node": "^14.18.0 || >=16.0.0" - }, - "peerDependencies": { - "vite": "^4.2.0 || ^5.0.0" - } - }, - "node_modules/ansi-styles": { - "version": "3.2.1", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", - "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", - "dependencies": { - "color-convert": "^1.9.0" - }, - "engines": { - "node": ">=4" - } - }, "node_modules/anymatch": { "version": "3.1.3", "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.1.3.tgz", "integrity": "sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw==", - "devOptional": true, + "dev": true, + "optional": true, + "peer": true, "dependencies": { "normalize-path": "^3.0.0", "picomatch": "^2.0.4" @@ -582,34 +161,20 @@ "version": "2.2.0", "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.2.0.tgz", "integrity": "sha512-jDctJ/IVQbZoJykoeHbhXpOlNBqGNcwXJKJog42E5HDPUwQTSdjCHdihjj0DlnheQ7blbT6dHOafNAiS8ooQKA==", - "devOptional": true, + "dev": true, + "optional": true, + "peer": true, "engines": { "node": ">=8" } }, - "node_modules/bootstrap": { - "version": "5.3.2", - "resolved": "https://registry.npmjs.org/bootstrap/-/bootstrap-5.3.2.tgz", - "integrity": "sha512-D32nmNWiQHo94BKHLmOrdjlL05q1c8oxbtBphQFb9Z5to6eGRDCm0QgeaZ4zFBHzfg2++rqa2JkqCcxDy0sH0g==", - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/twbs" - }, - { - "type": "opencollective", - "url": "https://opencollective.com/bootstrap" - } - ], - "peerDependencies": { - "@popperjs/core": "^2.11.8" - } - }, "node_modules/braces": { "version": "3.0.2", "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.2.tgz", "integrity": "sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==", - "devOptional": true, + "dev": true, + "optional": true, + "peer": true, "dependencies": { "fill-range": "^7.0.1" }, @@ -617,80 +182,19 @@ "node": ">=8" } }, - "node_modules/browserslist": { - "version": "4.22.1", - "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.22.1.tgz", - "integrity": "sha512-FEVc202+2iuClEhZhrWy6ZiAcRLvNMyYcxZ8raemul1DYVOVdFsbqckWLdsixQZCpJlwe77Z3UTalE7jsjnKfQ==", - "funding": [ - { - "type": "opencollective", - "url": "https://opencollective.com/browserslist" - }, - { - "type": "tidelift", - "url": "https://tidelift.com/funding/github/npm/browserslist" - }, - { - "type": "github", - "url": "https://github.com/sponsors/ai" - } - ], - "dependencies": { - "caniuse-lite": "^1.0.30001541", - "electron-to-chromium": "^1.4.535", - "node-releases": "^2.0.13", - "update-browserslist-db": "^1.0.13" - }, - "bin": { - "browserslist": "cli.js" - }, - "engines": { - "node": "^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7" - } - }, - "node_modules/caniuse-lite": { - "version": "1.0.30001564", - "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001564.tgz", - "integrity": "sha512-DqAOf+rhof+6GVx1y+xzbFPeOumfQnhYzVnZD6LAXijR77yPtm9mfOcqOnT3mpnJiZVT+kwLAFnRlZcIz+c6bg==", - "funding": [ - { - "type": "opencollective", - "url": "https://opencollective.com/browserslist" - }, - { - "type": "tidelift", - "url": "https://tidelift.com/funding/github/npm/caniuse-lite" - }, - { - "type": "github", - "url": "https://github.com/sponsors/ai" - } - ] - }, - "node_modules/chalk": { - "version": "2.4.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", - "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", - "dependencies": { - "ansi-styles": "^3.2.1", - "escape-string-regexp": "^1.0.5", - "supports-color": "^5.3.0" - }, - "engines": { - "node": ">=4" - } - }, "node_modules/chokidar": { "version": "3.5.3", "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.5.3.tgz", "integrity": "sha512-Dr3sfKRP6oTcjf2JmUmFJfeVMvXBdegxB0iVQ5eb2V10uFJUCAS8OByZdVAyVb8xXNz3GjjTgj9kLWsZTqE6kw==", - "devOptional": true, + "dev": true, "funding": [ { "type": "individual", "url": "https://paulmillr.com/funding/" } ], + "optional": true, + "peer": true, "dependencies": { "anymatch": "~3.1.2", "braces": "~3.0.2", @@ -712,45 +216,11 @@ "resolved": "https://registry.npmjs.org/classnames/-/classnames-2.3.2.tgz", "integrity": "sha512-CSbhY4cFEJRe6/GQzIk5qXZ4Jeg5pcsP7b5peFSDpffpe1cqjASH/n9UTjBwOp6XpMSTwQ8Za2K5V02ueA7Tmw==" }, - "node_modules/color-convert": { - "version": "1.9.3", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", - "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", - "dependencies": { - "color-name": "1.1.3" - } - }, - "node_modules/color-name": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", - "integrity": "sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==" - }, - "node_modules/convert-source-map": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-2.0.0.tgz", - "integrity": "sha512-Kvp459HrV2FEJ1CAsi1Ku+MY3kasH19TFykTz2xWmMeq6bk2NU3XXvfJ+Q61m0xktWwt+1HSYf3JZsTms3aRJg==" - }, "node_modules/csstype": { "version": "3.1.2", "resolved": "https://registry.npmjs.org/csstype/-/csstype-3.1.2.tgz", "integrity": "sha512-I7K1Uu0MBPzaFKg4nI5Q7Vs2t+3gWWW648spaF+Rg7pI9ds18Ugn+lvg4SHczUdKlHI5LWBXyqfS8+DufyBsgQ==" }, - "node_modules/debug": { - "version": "4.3.4", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", - "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", - "dependencies": { - "ms": "2.1.2" - }, - "engines": { - "node": ">=6.0" - }, - "peerDependenciesMeta": { - "supports-color": { - "optional": true - } - } - }, "node_modules/dequal": { "version": "2.0.3", "resolved": "https://registry.npmjs.org/dequal/-/dequal-2.0.3.tgz", @@ -768,15 +238,11 @@ "csstype": "^3.0.2" } }, - "node_modules/electron-to-chromium": { - "version": "1.4.590", - "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.590.tgz", - "integrity": "sha512-hohItzsQcG7/FBsviCYMtQwUSWvVF7NVqPOnJCErWsAshsP/CR2LAXdmq276RbESNdhxiAq5/vRo1g2pxGXVww==" - }, "node_modules/esbuild": { "version": "0.18.20", "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.18.20.tgz", "integrity": "sha512-ceqxoedUrcayh7Y7ZX6NdbbDzGROiyVBgC4PriJThBKSVPWnnFHZAkfI1lJT8QFkOwH4qOS2SJkS4wvpGl8BpA==", + "dev": true, "hasInstallScript": true, "bin": { "esbuild": "bin/esbuild" @@ -809,27 +275,13 @@ "@esbuild/win32-x64": "0.18.20" } }, - "node_modules/escalade": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.1.1.tgz", - "integrity": "sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw==", - "engines": { - "node": ">=6" - } - }, - "node_modules/escape-string-regexp": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", - "integrity": "sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==", - "engines": { - "node": ">=0.8.0" - } - }, "node_modules/fill-range": { "version": "7.0.1", "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz", "integrity": "sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==", - "devOptional": true, + "dev": true, + "optional": true, + "peer": true, "dependencies": { "to-regex-range": "^5.0.1" }, @@ -841,6 +293,7 @@ "version": "2.3.3", "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.3.tgz", "integrity": "sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==", + "dev": true, "hasInstallScript": true, "optional": true, "os": [ @@ -850,19 +303,13 @@ "node": "^8.16.0 || ^10.6.0 || >=11.0.0" } }, - "node_modules/gensync": { - "version": "1.0.0-beta.2", - "resolved": "https://registry.npmjs.org/gensync/-/gensync-1.0.0-beta.2.tgz", - "integrity": "sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg==", - "engines": { - "node": ">=6.9.0" - } - }, "node_modules/glob-parent": { "version": "5.1.2", "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz", "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==", - "devOptional": true, + "dev": true, + "optional": true, + "peer": true, "dependencies": { "is-glob": "^4.0.1" }, @@ -870,27 +317,13 @@ "node": ">= 6" } }, - "node_modules/globals": { - "version": "11.12.0", - "resolved": "https://registry.npmjs.org/globals/-/globals-11.12.0.tgz", - "integrity": "sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==", - "engines": { - "node": ">=4" - } - }, - "node_modules/has-flag": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", - "integrity": "sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==", - "engines": { - "node": ">=4" - } - }, "node_modules/immutable": { "version": "4.3.4", "resolved": "https://registry.npmjs.org/immutable/-/immutable-4.3.4.tgz", "integrity": "sha512-fsXeu4J4i6WNWSikpI88v/PcVflZz+6kMhUfIwc5SY+poQRPnaf5V7qds6SUyUN3cVxEzuCab7QIoLOQ+DQ1wA==", - "devOptional": true + "dev": true, + "optional": true, + "peer": true }, "node_modules/invariant": { "version": "2.2.4", @@ -904,7 +337,9 @@ "version": "2.1.0", "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-2.1.0.tgz", "integrity": "sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==", - "devOptional": true, + "dev": true, + "optional": true, + "peer": true, "dependencies": { "binary-extensions": "^2.0.0" }, @@ -916,7 +351,9 @@ "version": "2.1.1", "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", "integrity": "sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==", - "devOptional": true, + "dev": true, + "optional": true, + "peer": true, "engines": { "node": ">=0.10.0" } @@ -925,7 +362,9 @@ "version": "4.0.3", "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz", "integrity": "sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==", - "devOptional": true, + "dev": true, + "optional": true, + "peer": true, "dependencies": { "is-extglob": "^2.1.1" }, @@ -937,7 +376,9 @@ "version": "7.0.0", "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==", - "devOptional": true, + "dev": true, + "optional": true, + "peer": true, "engines": { "node": ">=0.12.0" } @@ -947,28 +388,6 @@ "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz", "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==" }, - "node_modules/jsesc": { - "version": "2.5.2", - "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-2.5.2.tgz", - "integrity": "sha512-OYu7XEzjkCQ3C5Ps3QIZsQfNpqoJyZZA99wd9aWd05NCtC5pWOkShK2mkL6HXQR6/Cy2lbNdPlZBpuQHXE63gA==", - "bin": { - "jsesc": "bin/jsesc" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/json5": { - "version": "2.2.3", - "resolved": "https://registry.npmjs.org/json5/-/json5-2.2.3.tgz", - "integrity": "sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg==", - "bin": { - "json5": "lib/cli.js" - }, - "engines": { - "node": ">=6" - } - }, "node_modules/loose-envify": { "version": "1.4.0", "resolved": "https://registry.npmjs.org/loose-envify/-/loose-envify-1.4.0.tgz", @@ -980,23 +399,11 @@ "loose-envify": "cli.js" } }, - "node_modules/lru-cache": { - "version": "5.1.1", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-5.1.1.tgz", - "integrity": "sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w==", - "dependencies": { - "yallist": "^3.0.2" - } - }, - "node_modules/ms": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", - "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==" - }, "node_modules/nanoid": { "version": "3.3.7", "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.7.tgz", "integrity": "sha512-eSRppjcPIatRIMC1U6UngP8XFcz8MQWGQdt1MTBQ7NaAmvXDfvNxbvWV3x2y6CdEUciCSsDHDQZbhYaB8QEo2g==", + "dev": true, "funding": [ { "type": "github", @@ -1010,16 +417,13 @@ "node": "^10 || ^12 || ^13.7 || ^14 || >=15.0.1" } }, - "node_modules/node-releases": { - "version": "2.0.13", - "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.13.tgz", - "integrity": "sha512-uYr7J37ae/ORWdZeQ1xxMJe3NtdmqMC/JZK+geofDrkLUApKRHPd18/TxtBOJ4A0/+uUIliorNrfYV6s1b02eQ==" - }, "node_modules/normalize-path": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz", "integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==", - "devOptional": true, + "dev": true, + "optional": true, + "peer": true, "engines": { "node": ">=0.10.0" } @@ -1035,13 +439,16 @@ "node_modules/picocolors": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.0.0.tgz", - "integrity": "sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ==" + "integrity": "sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ==", + "dev": true }, "node_modules/picomatch": { "version": "2.3.1", "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz", "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==", - "devOptional": true, + "dev": true, + "optional": true, + "peer": true, "engines": { "node": ">=8.6" }, @@ -1053,6 +460,7 @@ "version": "8.4.31", "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.4.31.tgz", "integrity": "sha512-PS08Iboia9mts/2ygV3eLpY5ghnUcfLV/EXTOW1E2qYxJKGGBUtNjN76FYHnMs36RmARn41bC0AZmn+rR0OVpQ==", + "dev": true, "funding": [ { "type": "opencollective", @@ -1160,14 +568,6 @@ "resolved": "https://registry.npmjs.org/react-lifecycles-compat/-/react-lifecycles-compat-3.0.4.tgz", "integrity": "sha512-fBASbA6LnOU9dOU2eW7aQ8xmYBSXUIWr+UmF9b1efZBazGNO+rcXT/icdKnYm2pTwcRylVUYwW7H1PHfLekVzA==" }, - "node_modules/react-refresh": { - "version": "0.14.0", - "resolved": "https://registry.npmjs.org/react-refresh/-/react-refresh-0.14.0.tgz", - "integrity": "sha512-wViHqhAd8OHeLS/IRMJjTSDHF3U9eWi62F/MledQGPdJGDhodXJ9PBLNGr6WWL7qlH12Mt3TyTpbS+hGXMjCzQ==", - "engines": { - "node": ">=0.10.0" - } - }, "node_modules/react-transition-group": { "version": "4.4.5", "resolved": "https://registry.npmjs.org/react-transition-group/-/react-transition-group-4.4.5.tgz", @@ -1187,7 +587,9 @@ "version": "3.6.0", "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-3.6.0.tgz", "integrity": "sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==", - "devOptional": true, + "dev": true, + "optional": true, + "peer": true, "dependencies": { "picomatch": "^2.2.1" }, @@ -1204,6 +606,7 @@ "version": "3.29.4", "resolved": "https://registry.npmjs.org/rollup/-/rollup-3.29.4.tgz", "integrity": "sha512-oWzmBZwvYrU0iJHtDmhsm662rC15FRXmcjCk1xD771dFDx5jJ02ufAQQTn0etB2emNk4J9EZg/yWKpsn9BWGRw==", + "dev": true, "bin": { "rollup": "dist/bin/rollup" }, @@ -1219,7 +622,9 @@ "version": "1.69.5", "resolved": "https://registry.npmjs.org/sass/-/sass-1.69.5.tgz", "integrity": "sha512-qg2+UCJibLr2LCVOt3OlPhr/dqVHWOa9XtZf2OjbLs/T4VPSJ00udtgJxH3neXZm+QqX8B+3cU7RaLqp1iVfcQ==", - "devOptional": true, + "dev": true, + "optional": true, + "peer": true, "dependencies": { "chokidar": ">=3.0.0 <4.0.0", "immutable": "^4.0.0", @@ -1240,46 +645,22 @@ "loose-envify": "^1.1.0" } }, - "node_modules/semver": { - "version": "6.3.1", - "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", - "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", - "bin": { - "semver": "bin/semver.js" - } - }, "node_modules/source-map-js": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/source-map-js/-/source-map-js-1.0.2.tgz", "integrity": "sha512-R0XvVJ9WusLiqTCEiGCmICCMplcCkIwwR11mOSD9CR5u+IXYdiseeEuXCVAjS54zqwkLcPNnmU4OeJ6tUrWhDw==", + "dev": true, "engines": { "node": ">=0.10.0" } }, - "node_modules/supports-color": { - "version": "5.5.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", - "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", - "dependencies": { - "has-flag": "^3.0.0" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/to-fast-properties": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/to-fast-properties/-/to-fast-properties-2.0.0.tgz", - "integrity": "sha512-/OaKK0xYrs3DmxRYqL/yDc+FxFUVYhDlXMhRmv3z915w2HF1tnN1omB354j8VUGO/hbRzyD6Y3sA7v7GS/ceog==", - "engines": { - "node": ">=4" - } - }, "node_modules/to-regex-range": { "version": "5.0.1", "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz", "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==", - "devOptional": true, + "dev": true, + "optional": true, + "peer": true, "dependencies": { "is-number": "^7.0.0" }, @@ -1319,39 +700,11 @@ "react": ">=15.0.0" } }, - "node_modules/update-browserslist-db": { - "version": "1.0.13", - "resolved": "https://registry.npmjs.org/update-browserslist-db/-/update-browserslist-db-1.0.13.tgz", - "integrity": "sha512-xebP81SNcPuNpPP3uzeW1NYXxI3rxyJzF3pD6sH4jE7o/IX+WtSpwnVU+qIsDPyk0d3hmFQ7mjqc6AtV604hbg==", - "funding": [ - { - "type": "opencollective", - "url": "https://opencollective.com/browserslist" - }, - { - "type": "tidelift", - "url": "https://tidelift.com/funding/github/npm/browserslist" - }, - { - "type": "github", - "url": "https://github.com/sponsors/ai" - } - ], - "dependencies": { - "escalade": "^3.1.1", - "picocolors": "^1.0.0" - }, - "bin": { - "update-browserslist-db": "cli.js" - }, - "peerDependencies": { - "browserslist": ">= 4.21.0" - } - }, "node_modules/vite": { "version": "4.5.0", "resolved": "https://registry.npmjs.org/vite/-/vite-4.5.0.tgz", "integrity": "sha512-ulr8rNLA6rkyFAlVWw2q5YJ91v098AFQ2R0PRFwPzREXOUJQPtFUG0t+/ZikhaOCDqFoDhN6/v8Sq0o4araFAw==", + "dev": true, "dependencies": { "esbuild": "^0.18.10", "postcss": "^8.4.27", @@ -1409,11 +762,6 @@ "dependencies": { "loose-envify": "^1.0.0" } - }, - "node_modules/yallist": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/yallist/-/yallist-3.1.1.tgz", - "integrity": "sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==" } } } diff --git a/crates/librqbit/webui/package-lock.json b/crates/librqbit/webui/package-lock.json index cadfbbe..c9f03b8 100644 --- a/crates/librqbit/webui/package-lock.json +++ b/crates/librqbit/webui/package-lock.json @@ -5,8 +5,6 @@ "packages": { "": { "dependencies": { - "@vitejs/plugin-react": "^4.2.0", - "bootstrap": "^5.3.2", "react": "^18.2.0", "react-bootstrap": "^2.9.1", "react-dom": "^18.2.0" @@ -14,280 +12,10 @@ "devDependencies": { "@types/react": "^18.2.38", "@types/react-dom": "^18.2.16", - "sass": "^1.69.5", "typescript": "^5.3.2", "vite": "^4.3.2" } }, - "node_modules/@ampproject/remapping": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/@ampproject/remapping/-/remapping-2.2.1.tgz", - "integrity": "sha512-lFMjJTrFL3j7L9yBxwYfCq2k6qqwHyzuUl/XBnif78PWTJYyL/dfowQHWE3sp6U6ZzqWiiIZnpTMO96zhkjwtg==", - "dependencies": { - "@jridgewell/gen-mapping": "^0.3.0", - "@jridgewell/trace-mapping": "^0.3.9" - }, - "engines": { - "node": ">=6.0.0" - } - }, - "node_modules/@babel/code-frame": { - "version": "7.23.4", - "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.23.4.tgz", - "integrity": "sha512-r1IONyb6Ia+jYR2vvIDhdWdlTGhqbBoFqLTQidzZ4kepUFH15ejXvFHxCVbtl7BOXIudsIubf4E81xeA3h3IXA==", - "dependencies": { - "@babel/highlight": "^7.23.4", - "chalk": "^2.4.2" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/compat-data": { - "version": "7.23.3", - "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.23.3.tgz", - "integrity": "sha512-BmR4bWbDIoFJmJ9z2cZ8Gmm2MXgEDgjdWgpKmKWUt54UGFJdlj31ECtbaDvCG/qVdG3AQ1SfpZEs01lUFbzLOQ==", - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/core": { - "version": "7.23.3", - "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.23.3.tgz", - "integrity": "sha512-Jg+msLuNuCJDyBvFv5+OKOUjWMZgd85bKjbICd3zWrKAo+bJ49HJufi7CQE0q0uR8NGyO6xkCACScNqyjHSZew==", - "dependencies": { - "@ampproject/remapping": "^2.2.0", - "@babel/code-frame": "^7.22.13", - "@babel/generator": "^7.23.3", - "@babel/helper-compilation-targets": "^7.22.15", - "@babel/helper-module-transforms": "^7.23.3", - "@babel/helpers": "^7.23.2", - "@babel/parser": "^7.23.3", - "@babel/template": "^7.22.15", - "@babel/traverse": "^7.23.3", - "@babel/types": "^7.23.3", - "convert-source-map": "^2.0.0", - "debug": "^4.1.0", - "gensync": "^1.0.0-beta.2", - "json5": "^2.2.3", - "semver": "^6.3.1" - }, - "engines": { - "node": ">=6.9.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/babel" - } - }, - "node_modules/@babel/generator": { - "version": "7.23.4", - "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.23.4.tgz", - "integrity": "sha512-esuS49Cga3HcThFNebGhlgsrVLkvhqvYDTzgjfFFlHJcIfLe5jFmRRfCQ1KuBfc4Jrtn3ndLgKWAKjBE+IraYQ==", - "dependencies": { - "@babel/types": "^7.23.4", - "@jridgewell/gen-mapping": "^0.3.2", - "@jridgewell/trace-mapping": "^0.3.17", - "jsesc": "^2.5.1" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/helper-compilation-targets": { - "version": "7.22.15", - "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.22.15.tgz", - "integrity": "sha512-y6EEzULok0Qvz8yyLkCvVX+02ic+By2UdOhylwUOvOn9dvYc9mKICJuuU1n1XBI02YWsNsnrY1kc6DVbjcXbtw==", - "dependencies": { - "@babel/compat-data": "^7.22.9", - "@babel/helper-validator-option": "^7.22.15", - "browserslist": "^4.21.9", - "lru-cache": "^5.1.1", - "semver": "^6.3.1" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/helper-environment-visitor": { - "version": "7.22.20", - "resolved": "https://registry.npmjs.org/@babel/helper-environment-visitor/-/helper-environment-visitor-7.22.20.tgz", - "integrity": "sha512-zfedSIzFhat/gFhWfHtgWvlec0nqB9YEIVrpuwjruLlXfUSnA8cJB0miHKwqDnQ7d32aKo2xt88/xZptwxbfhA==", - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/helper-function-name": { - "version": "7.23.0", - "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.23.0.tgz", - "integrity": "sha512-OErEqsrxjZTJciZ4Oo+eoZqeW9UIiOcuYKRJA4ZAgV9myA+pOXhhmpfNCKjEH/auVfEYVFJ6y1Tc4r0eIApqiw==", - "dependencies": { - "@babel/template": "^7.22.15", - "@babel/types": "^7.23.0" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/helper-hoist-variables": { - "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/helper-hoist-variables/-/helper-hoist-variables-7.22.5.tgz", - "integrity": "sha512-wGjk9QZVzvknA6yKIUURb8zY3grXCcOZt+/7Wcy8O2uctxhplmUPkOdlgoNhmdVee2c92JXbf1xpMtVNbfoxRw==", - "dependencies": { - "@babel/types": "^7.22.5" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/helper-module-imports": { - "version": "7.22.15", - "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.22.15.tgz", - "integrity": "sha512-0pYVBnDKZO2fnSPCrgM/6WMc7eS20Fbok+0r88fp+YtWVLZrp4CkafFGIp+W0VKw4a22sgebPT99y+FDNMdP4w==", - "dependencies": { - "@babel/types": "^7.22.15" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/helper-module-transforms": { - "version": "7.23.3", - "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.23.3.tgz", - "integrity": "sha512-7bBs4ED9OmswdfDzpz4MpWgSrV7FXlc3zIagvLFjS5H+Mk7Snr21vQ6QwrsoCGMfNC4e4LQPdoULEt4ykz0SRQ==", - "dependencies": { - "@babel/helper-environment-visitor": "^7.22.20", - "@babel/helper-module-imports": "^7.22.15", - "@babel/helper-simple-access": "^7.22.5", - "@babel/helper-split-export-declaration": "^7.22.6", - "@babel/helper-validator-identifier": "^7.22.20" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0" - } - }, - "node_modules/@babel/helper-plugin-utils": { - "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.22.5.tgz", - "integrity": "sha512-uLls06UVKgFG9QD4OeFYLEGteMIAa5kpTPcFL28yuCIIzsf6ZyKZMllKVOCZFhiZ5ptnwX4mtKdWCBE/uT4amg==", - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/helper-simple-access": { - "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/helper-simple-access/-/helper-simple-access-7.22.5.tgz", - "integrity": "sha512-n0H99E/K+Bika3++WNL17POvo4rKWZ7lZEp1Q+fStVbUi8nxPQEBOlTmCOxW/0JsS56SKKQ+ojAe2pHKJHN35w==", - "dependencies": { - "@babel/types": "^7.22.5" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/helper-split-export-declaration": { - "version": "7.22.6", - "resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.22.6.tgz", - "integrity": "sha512-AsUnxuLhRYsisFiaJwvp1QF+I3KjD5FOxut14q/GzovUe6orHLesW2C7d754kRm53h5gqrz6sFl6sxc4BVtE/g==", - "dependencies": { - "@babel/types": "^7.22.5" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/helper-string-parser": { - "version": "7.23.4", - "resolved": "https://registry.npmjs.org/@babel/helper-string-parser/-/helper-string-parser-7.23.4.tgz", - "integrity": "sha512-803gmbQdqwdf4olxrX4AJyFBV/RTr3rSmOj0rKwesmzlfhYNDEs+/iOcznzpNWlJlIlTJC2QfPFcHB6DlzdVLQ==", - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/helper-validator-identifier": { - "version": "7.22.20", - "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.22.20.tgz", - "integrity": "sha512-Y4OZ+ytlatR8AI+8KZfKuL5urKp7qey08ha31L8b3BwewJAoJamTzyvxPR/5D+KkdJCGPq/+8TukHBlY10FX9A==", - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/helper-validator-option": { - "version": "7.22.15", - "resolved": "https://registry.npmjs.org/@babel/helper-validator-option/-/helper-validator-option-7.22.15.tgz", - "integrity": "sha512-bMn7RmyFjY/mdECUbgn9eoSY4vqvacUnS9i9vGAGttgFWesO6B4CYWA7XlpbWgBt71iv/hfbPlynohStqnu5hA==", - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/helpers": { - "version": "7.23.4", - "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.23.4.tgz", - "integrity": "sha512-HfcMizYz10cr3h29VqyfGL6ZWIjTwWfvYBMsBVGwpcbhNGe3wQ1ZXZRPzZoAHhd9OqHadHqjQ89iVKINXnbzuw==", - "dependencies": { - "@babel/template": "^7.22.15", - "@babel/traverse": "^7.23.4", - "@babel/types": "^7.23.4" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/highlight": { - "version": "7.23.4", - "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.23.4.tgz", - "integrity": "sha512-acGdbYSfp2WheJoJm/EBBBLh/ID8KDc64ISZ9DYtBmC8/Q204PZJLHyzeB5qMzJ5trcOkybd78M4x2KWsUq++A==", - "dependencies": { - "@babel/helper-validator-identifier": "^7.22.20", - "chalk": "^2.4.2", - "js-tokens": "^4.0.0" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/parser": { - "version": "7.23.4", - "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.23.4.tgz", - "integrity": "sha512-vf3Xna6UEprW+7t6EtOmFpHNAuxw3xqPZghy+brsnusscJRW5BMUzzHZc5ICjULee81WeUV2jjakG09MDglJXQ==", - "bin": { - "parser": "bin/babel-parser.js" - }, - "engines": { - "node": ">=6.0.0" - } - }, - "node_modules/@babel/plugin-transform-react-jsx-self": { - "version": "7.23.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-jsx-self/-/plugin-transform-react-jsx-self-7.23.3.tgz", - "integrity": "sha512-qXRvbeKDSfwnlJnanVRp0SfuWE5DQhwQr5xtLBzp56Wabyo+4CMosF6Kfp+eOD/4FYpql64XVJ2W0pVLlJZxOQ==", - "dependencies": { - "@babel/helper-plugin-utils": "^7.22.5" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-transform-react-jsx-source": { - "version": "7.23.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-jsx-source/-/plugin-transform-react-jsx-source-7.23.3.tgz", - "integrity": "sha512-91RS0MDnAWDNvGC6Wio5XYkyWI39FMFO+JK9+4AlgaTH+yWwVTsw7/sn6LK0lH7c5F+TFkpv/3LfCJ1Ydwof/g==", - "dependencies": { - "@babel/helper-plugin-utils": "^7.22.5" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, "node_modules/@babel/runtime": { "version": "7.23.4", "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.23.4.tgz", @@ -299,52 +27,6 @@ "node": ">=6.9.0" } }, - "node_modules/@babel/template": { - "version": "7.22.15", - "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.22.15.tgz", - "integrity": "sha512-QPErUVm4uyJa60rkI73qneDacvdvzxshT3kksGqlGWYdOTIUOwJ7RDUL8sGqslY1uXWSL6xMFKEXDS3ox2uF0w==", - "dependencies": { - "@babel/code-frame": "^7.22.13", - "@babel/parser": "^7.22.15", - "@babel/types": "^7.22.15" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/traverse": { - "version": "7.23.4", - "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.23.4.tgz", - "integrity": "sha512-IYM8wSUwunWTB6tFC2dkKZhxbIjHoWemdK+3f8/wq8aKhbUscxD5MX72ubd90fxvFknaLPeGw5ycU84V1obHJg==", - "dependencies": { - "@babel/code-frame": "^7.23.4", - "@babel/generator": "^7.23.4", - "@babel/helper-environment-visitor": "^7.22.20", - "@babel/helper-function-name": "^7.23.0", - "@babel/helper-hoist-variables": "^7.22.5", - "@babel/helper-split-export-declaration": "^7.22.6", - "@babel/parser": "^7.23.4", - "@babel/types": "^7.23.4", - "debug": "^4.1.0", - "globals": "^11.1.0" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/types": { - "version": "7.23.4", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.23.4.tgz", - "integrity": "sha512-7uIFwVYpoplT5jp/kVv6EF93VaJ8H+Yn5IczYiaAi98ajzjfoZfslet/e0sLh+wVBjb2qqIut1b0S26VSafsSQ==", - "dependencies": { - "@babel/helper-string-parser": "^7.23.4", - "@babel/helper-validator-identifier": "^7.22.20", - "to-fast-properties": "^2.0.0" - }, - "engines": { - "node": ">=6.9.0" - } - }, "node_modules/@esbuild/android-arm": { "version": "0.18.20", "resolved": "https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.18.20.tgz", @@ -352,6 +34,7 @@ "cpu": [ "arm" ], + "dev": true, "optional": true, "os": [ "android" @@ -367,6 +50,7 @@ "cpu": [ "arm64" ], + "dev": true, "optional": true, "os": [ "android" @@ -382,6 +66,7 @@ "cpu": [ "x64" ], + "dev": true, "optional": true, "os": [ "android" @@ -397,6 +82,7 @@ "cpu": [ "arm64" ], + "dev": true, "optional": true, "os": [ "darwin" @@ -412,6 +98,7 @@ "cpu": [ "x64" ], + "dev": true, "optional": true, "os": [ "darwin" @@ -427,6 +114,7 @@ "cpu": [ "arm64" ], + "dev": true, "optional": true, "os": [ "freebsd" @@ -442,6 +130,7 @@ "cpu": [ "x64" ], + "dev": true, "optional": true, "os": [ "freebsd" @@ -457,6 +146,7 @@ "cpu": [ "arm" ], + "dev": true, "optional": true, "os": [ "linux" @@ -472,6 +162,7 @@ "cpu": [ "arm64" ], + "dev": true, "optional": true, "os": [ "linux" @@ -487,6 +178,7 @@ "cpu": [ "ia32" ], + "dev": true, "optional": true, "os": [ "linux" @@ -502,6 +194,7 @@ "cpu": [ "loong64" ], + "dev": true, "optional": true, "os": [ "linux" @@ -517,6 +210,7 @@ "cpu": [ "mips64el" ], + "dev": true, "optional": true, "os": [ "linux" @@ -532,6 +226,7 @@ "cpu": [ "ppc64" ], + "dev": true, "optional": true, "os": [ "linux" @@ -547,6 +242,7 @@ "cpu": [ "riscv64" ], + "dev": true, "optional": true, "os": [ "linux" @@ -562,6 +258,7 @@ "cpu": [ "s390x" ], + "dev": true, "optional": true, "os": [ "linux" @@ -577,6 +274,7 @@ "cpu": [ "x64" ], + "dev": true, "optional": true, "os": [ "linux" @@ -592,6 +290,7 @@ "cpu": [ "x64" ], + "dev": true, "optional": true, "os": [ "netbsd" @@ -607,6 +306,7 @@ "cpu": [ "x64" ], + "dev": true, "optional": true, "os": [ "openbsd" @@ -622,6 +322,7 @@ "cpu": [ "x64" ], + "dev": true, "optional": true, "os": [ "sunos" @@ -637,6 +338,7 @@ "cpu": [ "arm64" ], + "dev": true, "optional": true, "os": [ "win32" @@ -652,6 +354,7 @@ "cpu": [ "ia32" ], + "dev": true, "optional": true, "os": [ "win32" @@ -667,6 +370,7 @@ "cpu": [ "x64" ], + "dev": true, "optional": true, "os": [ "win32" @@ -675,49 +379,6 @@ "node": ">=12" } }, - "node_modules/@jridgewell/gen-mapping": { - "version": "0.3.3", - "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.3.tgz", - "integrity": "sha512-HLhSWOLRi875zjjMG/r+Nv0oCW8umGb0BgEhyX3dDX3egwZtB8PqLnjz3yedt8R5StBrzcg4aBpnh8UA9D1BoQ==", - "dependencies": { - "@jridgewell/set-array": "^1.0.1", - "@jridgewell/sourcemap-codec": "^1.4.10", - "@jridgewell/trace-mapping": "^0.3.9" - }, - "engines": { - "node": ">=6.0.0" - } - }, - "node_modules/@jridgewell/resolve-uri": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.1.1.tgz", - "integrity": "sha512-dSYZh7HhCDtCKm4QakX0xFpsRDqjjtZf/kjI/v3T3Nwt5r8/qz/M19F9ySyOqU94SXBmeG9ttTul+YnR4LOxFA==", - "engines": { - "node": ">=6.0.0" - } - }, - "node_modules/@jridgewell/set-array": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/@jridgewell/set-array/-/set-array-1.1.2.tgz", - "integrity": "sha512-xnkseuNADM0gt2bs+BvhO0p78Mk762YnZdsuzFV018NoG1Sj1SCQvpSqa7XUaTam5vAGasABV9qXASMKnFMwMw==", - "engines": { - "node": ">=6.0.0" - } - }, - "node_modules/@jridgewell/sourcemap-codec": { - "version": "1.4.15", - "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.15.tgz", - "integrity": "sha512-eF2rxCRulEKXHTRiDrDy6erMYWqNw4LPdQ8UQA4huuxaQsVeRPFl2oM8oDGxMFhJUWZf9McpLtJasDDZb/Bpeg==" - }, - "node_modules/@jridgewell/trace-mapping": { - "version": "0.3.20", - "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.20.tgz", - "integrity": "sha512-R8LcPeWZol2zR8mmH3JeKQ6QRCFb7XgUhV9ZlGhHLGyg4wpPiPZNQOOWhFZhxKw8u//yTbNGI42Bx/3paXEQ+Q==", - "dependencies": { - "@jridgewell/resolve-uri": "^3.1.0", - "@jridgewell/sourcemap-codec": "^1.4.14" - } - }, "node_modules/@popperjs/core": { "version": "2.11.8", "resolved": "https://registry.npmjs.org/@popperjs/core/-/core-2.11.8.tgz", @@ -788,43 +449,6 @@ "tslib": "^2.4.0" } }, - "node_modules/@types/babel__core": { - "version": "7.20.5", - "resolved": "https://registry.npmjs.org/@types/babel__core/-/babel__core-7.20.5.tgz", - "integrity": "sha512-qoQprZvz5wQFJwMDqeseRXWv3rqMvhgpbXFfVyWhbx9X47POIA6i/+dXefEmZKoAgOaTdaIgNSMqMIU61yRyzA==", - "dependencies": { - "@babel/parser": "^7.20.7", - "@babel/types": "^7.20.7", - "@types/babel__generator": "*", - "@types/babel__template": "*", - "@types/babel__traverse": "*" - } - }, - "node_modules/@types/babel__generator": { - "version": "7.6.7", - "resolved": "https://registry.npmjs.org/@types/babel__generator/-/babel__generator-7.6.7.tgz", - "integrity": "sha512-6Sfsq+EaaLrw4RmdFWE9Onp63TOUue71AWb4Gpa6JxzgTYtimbM086WnYTy2U67AofR++QKCo08ZP6pwx8YFHQ==", - "dependencies": { - "@babel/types": "^7.0.0" - } - }, - "node_modules/@types/babel__template": { - "version": "7.4.4", - "resolved": "https://registry.npmjs.org/@types/babel__template/-/babel__template-7.4.4.tgz", - "integrity": "sha512-h/NUaSyG5EyxBIp8YRxo4RMe2/qQgvyowRwVMzhYhBCONbW8PUsg4lkFMrhgZhUe5z3L3MiLDuvyJ/CaPa2A8A==", - "dependencies": { - "@babel/parser": "^7.1.0", - "@babel/types": "^7.0.0" - } - }, - "node_modules/@types/babel__traverse": { - "version": "7.20.4", - "resolved": "https://registry.npmjs.org/@types/babel__traverse/-/babel__traverse-7.20.4.tgz", - "integrity": "sha512-mSM/iKUk5fDDrEV/e83qY+Cr3I1+Q3qqTuEn++HAWYjEa1+NxZr6CNrcJGf2ZTnq4HoFGC3zaTPZTobCzCFukA==", - "dependencies": { - "@babel/types": "^7.20.7" - } - }, "node_modules/@types/prop-types": { "version": "15.7.11", "resolved": "https://registry.npmjs.org/@types/prop-types/-/prop-types-15.7.11.tgz", @@ -867,40 +491,13 @@ "resolved": "https://registry.npmjs.org/@types/warning/-/warning-3.0.3.tgz", "integrity": "sha512-D1XC7WK8K+zZEveUPY+cf4+kgauk8N4eHr/XIHXGlGYkHLud6hK9lYfZk1ry1TNh798cZUCgb6MqGEG8DkJt6Q==" }, - "node_modules/@vitejs/plugin-react": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/@vitejs/plugin-react/-/plugin-react-4.2.0.tgz", - "integrity": "sha512-+MHTH/e6H12kRp5HUkzOGqPMksezRMmW+TNzlh/QXfI8rRf6l2Z2yH/v12no1UvTwhZgEDMuQ7g7rrfMseU6FQ==", - "dependencies": { - "@babel/core": "^7.23.3", - "@babel/plugin-transform-react-jsx-self": "^7.23.3", - "@babel/plugin-transform-react-jsx-source": "^7.23.3", - "@types/babel__core": "^7.20.4", - "react-refresh": "^0.14.0" - }, - "engines": { - "node": "^14.18.0 || >=16.0.0" - }, - "peerDependencies": { - "vite": "^4.2.0 || ^5.0.0" - } - }, - "node_modules/ansi-styles": { - "version": "3.2.1", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", - "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", - "dependencies": { - "color-convert": "^1.9.0" - }, - "engines": { - "node": ">=4" - } - }, "node_modules/anymatch": { "version": "3.1.3", "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.1.3.tgz", "integrity": "sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw==", - "devOptional": true, + "dev": true, + "optional": true, + "peer": true, "dependencies": { "normalize-path": "^3.0.0", "picomatch": "^2.0.4" @@ -913,34 +510,20 @@ "version": "2.2.0", "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.2.0.tgz", "integrity": "sha512-jDctJ/IVQbZoJykoeHbhXpOlNBqGNcwXJKJog42E5HDPUwQTSdjCHdihjj0DlnheQ7blbT6dHOafNAiS8ooQKA==", - "devOptional": true, + "dev": true, + "optional": true, + "peer": true, "engines": { "node": ">=8" } }, - "node_modules/bootstrap": { - "version": "5.3.2", - "resolved": "https://registry.npmjs.org/bootstrap/-/bootstrap-5.3.2.tgz", - "integrity": "sha512-D32nmNWiQHo94BKHLmOrdjlL05q1c8oxbtBphQFb9Z5to6eGRDCm0QgeaZ4zFBHzfg2++rqa2JkqCcxDy0sH0g==", - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/twbs" - }, - { - "type": "opencollective", - "url": "https://opencollective.com/bootstrap" - } - ], - "peerDependencies": { - "@popperjs/core": "^2.11.8" - } - }, "node_modules/braces": { "version": "3.0.2", "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.2.tgz", "integrity": "sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==", - "devOptional": true, + "dev": true, + "optional": true, + "peer": true, "dependencies": { "fill-range": "^7.0.1" }, @@ -948,80 +531,19 @@ "node": ">=8" } }, - "node_modules/browserslist": { - "version": "4.22.1", - "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.22.1.tgz", - "integrity": "sha512-FEVc202+2iuClEhZhrWy6ZiAcRLvNMyYcxZ8raemul1DYVOVdFsbqckWLdsixQZCpJlwe77Z3UTalE7jsjnKfQ==", - "funding": [ - { - "type": "opencollective", - "url": "https://opencollective.com/browserslist" - }, - { - "type": "tidelift", - "url": "https://tidelift.com/funding/github/npm/browserslist" - }, - { - "type": "github", - "url": "https://github.com/sponsors/ai" - } - ], - "dependencies": { - "caniuse-lite": "^1.0.30001541", - "electron-to-chromium": "^1.4.535", - "node-releases": "^2.0.13", - "update-browserslist-db": "^1.0.13" - }, - "bin": { - "browserslist": "cli.js" - }, - "engines": { - "node": "^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7" - } - }, - "node_modules/caniuse-lite": { - "version": "1.0.30001564", - "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001564.tgz", - "integrity": "sha512-DqAOf+rhof+6GVx1y+xzbFPeOumfQnhYzVnZD6LAXijR77yPtm9mfOcqOnT3mpnJiZVT+kwLAFnRlZcIz+c6bg==", - "funding": [ - { - "type": "opencollective", - "url": "https://opencollective.com/browserslist" - }, - { - "type": "tidelift", - "url": "https://tidelift.com/funding/github/npm/caniuse-lite" - }, - { - "type": "github", - "url": "https://github.com/sponsors/ai" - } - ] - }, - "node_modules/chalk": { - "version": "2.4.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", - "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", - "dependencies": { - "ansi-styles": "^3.2.1", - "escape-string-regexp": "^1.0.5", - "supports-color": "^5.3.0" - }, - "engines": { - "node": ">=4" - } - }, "node_modules/chokidar": { "version": "3.5.3", "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.5.3.tgz", "integrity": "sha512-Dr3sfKRP6oTcjf2JmUmFJfeVMvXBdegxB0iVQ5eb2V10uFJUCAS8OByZdVAyVb8xXNz3GjjTgj9kLWsZTqE6kw==", - "devOptional": true, + "dev": true, "funding": [ { "type": "individual", "url": "https://paulmillr.com/funding/" } ], + "optional": true, + "peer": true, "dependencies": { "anymatch": "~3.1.2", "braces": "~3.0.2", @@ -1043,45 +565,11 @@ "resolved": "https://registry.npmjs.org/classnames/-/classnames-2.3.2.tgz", "integrity": "sha512-CSbhY4cFEJRe6/GQzIk5qXZ4Jeg5pcsP7b5peFSDpffpe1cqjASH/n9UTjBwOp6XpMSTwQ8Za2K5V02ueA7Tmw==" }, - "node_modules/color-convert": { - "version": "1.9.3", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", - "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", - "dependencies": { - "color-name": "1.1.3" - } - }, - "node_modules/color-name": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", - "integrity": "sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==" - }, - "node_modules/convert-source-map": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-2.0.0.tgz", - "integrity": "sha512-Kvp459HrV2FEJ1CAsi1Ku+MY3kasH19TFykTz2xWmMeq6bk2NU3XXvfJ+Q61m0xktWwt+1HSYf3JZsTms3aRJg==" - }, "node_modules/csstype": { "version": "3.1.2", "resolved": "https://registry.npmjs.org/csstype/-/csstype-3.1.2.tgz", "integrity": "sha512-I7K1Uu0MBPzaFKg4nI5Q7Vs2t+3gWWW648spaF+Rg7pI9ds18Ugn+lvg4SHczUdKlHI5LWBXyqfS8+DufyBsgQ==" }, - "node_modules/debug": { - "version": "4.3.4", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", - "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", - "dependencies": { - "ms": "2.1.2" - }, - "engines": { - "node": ">=6.0" - }, - "peerDependenciesMeta": { - "supports-color": { - "optional": true - } - } - }, "node_modules/dequal": { "version": "2.0.3", "resolved": "https://registry.npmjs.org/dequal/-/dequal-2.0.3.tgz", @@ -1099,15 +587,11 @@ "csstype": "^3.0.2" } }, - "node_modules/electron-to-chromium": { - "version": "1.4.590", - "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.590.tgz", - "integrity": "sha512-hohItzsQcG7/FBsviCYMtQwUSWvVF7NVqPOnJCErWsAshsP/CR2LAXdmq276RbESNdhxiAq5/vRo1g2pxGXVww==" - }, "node_modules/esbuild": { "version": "0.18.20", "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.18.20.tgz", "integrity": "sha512-ceqxoedUrcayh7Y7ZX6NdbbDzGROiyVBgC4PriJThBKSVPWnnFHZAkfI1lJT8QFkOwH4qOS2SJkS4wvpGl8BpA==", + "dev": true, "hasInstallScript": true, "bin": { "esbuild": "bin/esbuild" @@ -1140,27 +624,13 @@ "@esbuild/win32-x64": "0.18.20" } }, - "node_modules/escalade": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.1.1.tgz", - "integrity": "sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw==", - "engines": { - "node": ">=6" - } - }, - "node_modules/escape-string-regexp": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", - "integrity": "sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==", - "engines": { - "node": ">=0.8.0" - } - }, "node_modules/fill-range": { "version": "7.0.1", "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz", "integrity": "sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==", - "devOptional": true, + "dev": true, + "optional": true, + "peer": true, "dependencies": { "to-regex-range": "^5.0.1" }, @@ -1172,6 +642,7 @@ "version": "2.3.3", "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.3.tgz", "integrity": "sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==", + "dev": true, "hasInstallScript": true, "optional": true, "os": [ @@ -1181,19 +652,13 @@ "node": "^8.16.0 || ^10.6.0 || >=11.0.0" } }, - "node_modules/gensync": { - "version": "1.0.0-beta.2", - "resolved": "https://registry.npmjs.org/gensync/-/gensync-1.0.0-beta.2.tgz", - "integrity": "sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg==", - "engines": { - "node": ">=6.9.0" - } - }, "node_modules/glob-parent": { "version": "5.1.2", "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz", "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==", - "devOptional": true, + "dev": true, + "optional": true, + "peer": true, "dependencies": { "is-glob": "^4.0.1" }, @@ -1201,27 +666,13 @@ "node": ">= 6" } }, - "node_modules/globals": { - "version": "11.12.0", - "resolved": "https://registry.npmjs.org/globals/-/globals-11.12.0.tgz", - "integrity": "sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==", - "engines": { - "node": ">=4" - } - }, - "node_modules/has-flag": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", - "integrity": "sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==", - "engines": { - "node": ">=4" - } - }, "node_modules/immutable": { "version": "4.3.4", "resolved": "https://registry.npmjs.org/immutable/-/immutable-4.3.4.tgz", "integrity": "sha512-fsXeu4J4i6WNWSikpI88v/PcVflZz+6kMhUfIwc5SY+poQRPnaf5V7qds6SUyUN3cVxEzuCab7QIoLOQ+DQ1wA==", - "devOptional": true + "dev": true, + "optional": true, + "peer": true }, "node_modules/invariant": { "version": "2.2.4", @@ -1235,7 +686,9 @@ "version": "2.1.0", "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-2.1.0.tgz", "integrity": "sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==", - "devOptional": true, + "dev": true, + "optional": true, + "peer": true, "dependencies": { "binary-extensions": "^2.0.0" }, @@ -1247,7 +700,9 @@ "version": "2.1.1", "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", "integrity": "sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==", - "devOptional": true, + "dev": true, + "optional": true, + "peer": true, "engines": { "node": ">=0.10.0" } @@ -1256,7 +711,9 @@ "version": "4.0.3", "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz", "integrity": "sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==", - "devOptional": true, + "dev": true, + "optional": true, + "peer": true, "dependencies": { "is-extglob": "^2.1.1" }, @@ -1268,7 +725,9 @@ "version": "7.0.0", "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==", - "devOptional": true, + "dev": true, + "optional": true, + "peer": true, "engines": { "node": ">=0.12.0" } @@ -1278,28 +737,6 @@ "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz", "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==" }, - "node_modules/jsesc": { - "version": "2.5.2", - "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-2.5.2.tgz", - "integrity": "sha512-OYu7XEzjkCQ3C5Ps3QIZsQfNpqoJyZZA99wd9aWd05NCtC5pWOkShK2mkL6HXQR6/Cy2lbNdPlZBpuQHXE63gA==", - "bin": { - "jsesc": "bin/jsesc" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/json5": { - "version": "2.2.3", - "resolved": "https://registry.npmjs.org/json5/-/json5-2.2.3.tgz", - "integrity": "sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg==", - "bin": { - "json5": "lib/cli.js" - }, - "engines": { - "node": ">=6" - } - }, "node_modules/loose-envify": { "version": "1.4.0", "resolved": "https://registry.npmjs.org/loose-envify/-/loose-envify-1.4.0.tgz", @@ -1311,23 +748,11 @@ "loose-envify": "cli.js" } }, - "node_modules/lru-cache": { - "version": "5.1.1", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-5.1.1.tgz", - "integrity": "sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w==", - "dependencies": { - "yallist": "^3.0.2" - } - }, - "node_modules/ms": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", - "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==" - }, "node_modules/nanoid": { "version": "3.3.7", "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.7.tgz", "integrity": "sha512-eSRppjcPIatRIMC1U6UngP8XFcz8MQWGQdt1MTBQ7NaAmvXDfvNxbvWV3x2y6CdEUciCSsDHDQZbhYaB8QEo2g==", + "dev": true, "funding": [ { "type": "github", @@ -1341,16 +766,13 @@ "node": "^10 || ^12 || ^13.7 || ^14 || >=15.0.1" } }, - "node_modules/node-releases": { - "version": "2.0.13", - "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.13.tgz", - "integrity": "sha512-uYr7J37ae/ORWdZeQ1xxMJe3NtdmqMC/JZK+geofDrkLUApKRHPd18/TxtBOJ4A0/+uUIliorNrfYV6s1b02eQ==" - }, "node_modules/normalize-path": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz", "integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==", - "devOptional": true, + "dev": true, + "optional": true, + "peer": true, "engines": { "node": ">=0.10.0" } @@ -1366,13 +788,16 @@ "node_modules/picocolors": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.0.0.tgz", - "integrity": "sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ==" + "integrity": "sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ==", + "dev": true }, "node_modules/picomatch": { "version": "2.3.1", "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz", "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==", - "devOptional": true, + "dev": true, + "optional": true, + "peer": true, "engines": { "node": ">=8.6" }, @@ -1384,6 +809,7 @@ "version": "8.4.31", "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.4.31.tgz", "integrity": "sha512-PS08Iboia9mts/2ygV3eLpY5ghnUcfLV/EXTOW1E2qYxJKGGBUtNjN76FYHnMs36RmARn41bC0AZmn+rR0OVpQ==", + "dev": true, "funding": [ { "type": "opencollective", @@ -1491,14 +917,6 @@ "resolved": "https://registry.npmjs.org/react-lifecycles-compat/-/react-lifecycles-compat-3.0.4.tgz", "integrity": "sha512-fBASbA6LnOU9dOU2eW7aQ8xmYBSXUIWr+UmF9b1efZBazGNO+rcXT/icdKnYm2pTwcRylVUYwW7H1PHfLekVzA==" }, - "node_modules/react-refresh": { - "version": "0.14.0", - "resolved": "https://registry.npmjs.org/react-refresh/-/react-refresh-0.14.0.tgz", - "integrity": "sha512-wViHqhAd8OHeLS/IRMJjTSDHF3U9eWi62F/MledQGPdJGDhodXJ9PBLNGr6WWL7qlH12Mt3TyTpbS+hGXMjCzQ==", - "engines": { - "node": ">=0.10.0" - } - }, "node_modules/react-transition-group": { "version": "4.4.5", "resolved": "https://registry.npmjs.org/react-transition-group/-/react-transition-group-4.4.5.tgz", @@ -1518,7 +936,9 @@ "version": "3.6.0", "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-3.6.0.tgz", "integrity": "sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==", - "devOptional": true, + "dev": true, + "optional": true, + "peer": true, "dependencies": { "picomatch": "^2.2.1" }, @@ -1535,6 +955,7 @@ "version": "3.29.4", "resolved": "https://registry.npmjs.org/rollup/-/rollup-3.29.4.tgz", "integrity": "sha512-oWzmBZwvYrU0iJHtDmhsm662rC15FRXmcjCk1xD771dFDx5jJ02ufAQQTn0etB2emNk4J9EZg/yWKpsn9BWGRw==", + "dev": true, "bin": { "rollup": "dist/bin/rollup" }, @@ -1550,7 +971,9 @@ "version": "1.69.5", "resolved": "https://registry.npmjs.org/sass/-/sass-1.69.5.tgz", "integrity": "sha512-qg2+UCJibLr2LCVOt3OlPhr/dqVHWOa9XtZf2OjbLs/T4VPSJ00udtgJxH3neXZm+QqX8B+3cU7RaLqp1iVfcQ==", - "devOptional": true, + "dev": true, + "optional": true, + "peer": true, "dependencies": { "chokidar": ">=3.0.0 <4.0.0", "immutable": "^4.0.0", @@ -1571,46 +994,22 @@ "loose-envify": "^1.1.0" } }, - "node_modules/semver": { - "version": "6.3.1", - "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", - "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", - "bin": { - "semver": "bin/semver.js" - } - }, "node_modules/source-map-js": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/source-map-js/-/source-map-js-1.0.2.tgz", "integrity": "sha512-R0XvVJ9WusLiqTCEiGCmICCMplcCkIwwR11mOSD9CR5u+IXYdiseeEuXCVAjS54zqwkLcPNnmU4OeJ6tUrWhDw==", + "dev": true, "engines": { "node": ">=0.10.0" } }, - "node_modules/supports-color": { - "version": "5.5.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", - "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", - "dependencies": { - "has-flag": "^3.0.0" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/to-fast-properties": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/to-fast-properties/-/to-fast-properties-2.0.0.tgz", - "integrity": "sha512-/OaKK0xYrs3DmxRYqL/yDc+FxFUVYhDlXMhRmv3z915w2HF1tnN1omB354j8VUGO/hbRzyD6Y3sA7v7GS/ceog==", - "engines": { - "node": ">=4" - } - }, "node_modules/to-regex-range": { "version": "5.0.1", "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz", "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==", - "devOptional": true, + "dev": true, + "optional": true, + "peer": true, "dependencies": { "is-number": "^7.0.0" }, @@ -1650,39 +1049,11 @@ "react": ">=15.0.0" } }, - "node_modules/update-browserslist-db": { - "version": "1.0.13", - "resolved": "https://registry.npmjs.org/update-browserslist-db/-/update-browserslist-db-1.0.13.tgz", - "integrity": "sha512-xebP81SNcPuNpPP3uzeW1NYXxI3rxyJzF3pD6sH4jE7o/IX+WtSpwnVU+qIsDPyk0d3hmFQ7mjqc6AtV604hbg==", - "funding": [ - { - "type": "opencollective", - "url": "https://opencollective.com/browserslist" - }, - { - "type": "tidelift", - "url": "https://tidelift.com/funding/github/npm/browserslist" - }, - { - "type": "github", - "url": "https://github.com/sponsors/ai" - } - ], - "dependencies": { - "escalade": "^3.1.1", - "picocolors": "^1.0.0" - }, - "bin": { - "update-browserslist-db": "cli.js" - }, - "peerDependencies": { - "browserslist": ">= 4.21.0" - } - }, "node_modules/vite": { "version": "4.5.0", "resolved": "https://registry.npmjs.org/vite/-/vite-4.5.0.tgz", "integrity": "sha512-ulr8rNLA6rkyFAlVWw2q5YJ91v098AFQ2R0PRFwPzREXOUJQPtFUG0t+/ZikhaOCDqFoDhN6/v8Sq0o4araFAw==", + "dev": true, "dependencies": { "esbuild": "^0.18.10", "postcss": "^8.4.27", @@ -1740,11 +1111,6 @@ "dependencies": { "loose-envify": "^1.0.0" } - }, - "node_modules/yallist": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/yallist/-/yallist-3.1.1.tgz", - "integrity": "sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==" } } } diff --git a/crates/librqbit/webui/src/api.ts b/crates/librqbit/webui/src/api.ts new file mode 100644 index 0000000..915bc10 --- /dev/null +++ b/crates/librqbit/webui/src/api.ts @@ -0,0 +1,148 @@ +// Define API URL and base path +const apiUrl = (window.origin === 'null' || window.origin === 'http://localhost:3031') ? 'http://localhost:3030' : ''; + +// Interface for the Torrent API response +export interface TorrentId { + id: number; + info_hash: string; +} + +export interface TorrentFile { + name: string; + length: number; + included: boolean; +} + +// Interface for the Torrent Details API response +export interface TorrentDetails { + info_hash: string, + files: Array; +} + +export interface AddTorrentResponse { + id: number | null; + details: TorrentDetails; +} + +export interface ListTorrentsResponse { + torrents: Array; +} + +// Interface for the Torrent Stats API response +export interface TorrentStats { + snapshot: { + have_bytes: number; + downloaded_and_checked_bytes: number; + downloaded_and_checked_pieces: number; + fetched_bytes: number; + uploaded_bytes: number; + initially_needed_bytes: number; + remaining_bytes: number; + total_bytes: number; + total_piece_download_ms: number; + peer_stats: { + queued: number; + connecting: number; + live: number; + seen: number; + dead: number; + not_needed: number; + }; + }; + average_piece_download_time: { + secs: number; + nanos: number; + }; + download_speed: { + mbps: number; + human_readable: string; + }; + all_time_download_speed: { + mbps: number; + human_readable: string; + }; + time_remaining: { + human_readable: string; + duration?: { + secs: number, + } + } | null; +} + + +export interface ErrorDetails { + id?: number, + method?: string, + path?: string, + status?: number, + statusText?: string, + text: string, +}; + + +const makeRequest = async (method: string, path: string, data?: any): Promise => { + console.log(method, path); + const url = apiUrl + path; + const options: RequestInit = { + method, + headers: { + 'Accept': 'application/json', + }, + body: data, + }; + + let error: ErrorDetails = { + method: method, + path: path, + text: '' + }; + + let response: Response; + + try { + response = await fetch(url, options); + } catch (e) { + error.text = 'network error'; + return Promise.reject(error); + } + + error.status = response.status; + error.statusText = response.statusText; + + if (!response.ok) { + const errorBody = await response.text(); + try { + const json = JSON.parse(errorBody); + error.text = json.human_readable !== undefined ? json.human_readable : JSON.stringify(json, null, 2); + } catch (e) { + error.text = errorBody; + } + return Promise.reject(error); + } + const result = await response.json(); + return result; +} + +export const API = { + listTorrents: (): Promise => makeRequest('GET', '/torrents'), + getTorrentDetails: (index: number): Promise => { + return makeRequest('GET', `/torrents/${index}`); + }, + getTorrentStats: (index: number): Promise => { + return makeRequest('GET', `/torrents/${index}/stats`); + }, + + uploadTorrent: (data: string | File, opts?: { + listOnly?: boolean, selectedFiles?: Array + }): Promise => { + opts = opts || {}; + let url = '/torrents?&overwrite=true'; + if (opts.listOnly) { + url += '&list_only=true'; + } + if (opts.selectedFiles != null) { + url += `&only_files=${opts.selectedFiles.join(',')}`; + } + return makeRequest('POST', url, data) + } +} \ No newline at end of file diff --git a/crates/librqbit/webui/src/index.tsx b/crates/librqbit/webui/src/index.tsx index 1c81429..7baee31 100644 --- a/crates/librqbit/webui/src/index.tsx +++ b/crates/librqbit/webui/src/index.tsx @@ -1,21 +1,7 @@ -import { StrictMode, createContext, memo, useContext, useEffect, useRef, useState } from 'react'; +import { StrictMode, createContext, useContext, useEffect, useRef, useState } from 'react'; import ReactDOM from 'react-dom/client'; import { ProgressBar, Button, Container, Row, Col, Alert, Modal, Form, Spinner, Table } from 'react-bootstrap'; - -// import 'bootstrap/dist/css/bootstrap.min.css'; -// import './styles.scss'; - -// Define API URL and base path -const apiUrl = (window.origin === 'null' || window.origin === 'http://localhost:3031') ? 'http://localhost:3030' : ''; - -interface ErrorDetails { - id?: number, - method?: string, - path?: string, - status?: number, - statusText?: string, - text: string, -}; +import { AddTorrentResponse, TorrentDetails, TorrentFile, TorrentId, TorrentStats, ErrorDetails, API } from './api'; interface Error { text: string, @@ -24,110 +10,42 @@ interface Error { interface ContextType { setCloseableError: (error: Error) => void, - setOtherError: (error: Error) => void, - makeRequest: (method: string, path: string, data: any) => Promise, - requests: { - getTorrentDetails: any, - getTorrentStats: any, - }, refreshTorrents: () => void, } const AppContext = createContext(null); -// Interface for the Torrent API response -interface TorrentId { - id: number; - info_hash: string; -} - -interface TorrentFile { - name: string; - length: number; - included: boolean; -} - -// Interface for the Torrent Details API response -interface TorrentDetails { - info_hash: string, - files: Array; -} - -interface AddTorrentResponse { - id: number | null; - details: TorrentDetails; -} - -// Interface for the Torrent Stats API response -interface TorrentStats { - snapshot: { - have_bytes: number; - downloaded_and_checked_bytes: number; - downloaded_and_checked_pieces: number; - fetched_bytes: number; - uploaded_bytes: number; - initially_needed_bytes: number; - remaining_bytes: number; - total_bytes: number; - total_piece_download_ms: number; - peer_stats: { - queued: number; - connecting: number; - live: number; - seen: number; - dead: number; - not_needed: number; - }; - }; - average_piece_download_time: { - secs: number; - nanos: number; - }; - download_speed: { - mbps: number; - human_readable: string; - }; - all_time_download_speed: { - mbps: number; - human_readable: string; - }; - time_remaining: { - human_readable: string; - duration?: { - secs: number, - } - } | null; -} - const TorrentRow: React.FC<{ id: number, detailsResponse: TorrentDetails, statsResponse: TorrentStats }> = ({ id, detailsResponse, statsResponse }) => { - const totalBytes = statsResponse.snapshot.total_bytes; - const downloadedBytes = statsResponse.snapshot.have_bytes; + const totalBytes = statsResponse?.snapshot?.total_bytes ?? 1; + const downloadedBytes = statsResponse?.snapshot?.have_bytes ?? 0; const finished = totalBytes == downloadedBytes; const downloadPercentage = (downloadedBytes / totalBytes) * 100; - let classes = [ - ]; - if (id % 2 == 0) { - classes.push('bg-light'); - } - return ( - + -
- {getLargestFileName(detailsResponse)} -
+ {detailsResponse ? +
+ {getLargestFileName(detailsResponse)} +
+ : }
- {`${formatBytes(totalBytes)}`} - - - - {statsResponse.download_speed.human_readable} - {getCompletionETA(statsResponse)} - {`${statsResponse.snapshot.peer_stats.live} / ${statsResponse.snapshot.peer_stats.seen}`} -
+ {statsResponse ? + <> + {`${formatBytes(totalBytes)} `} + + + + {statsResponse.download_speed.human_readable} + {getCompletionETA(statsResponse)} + {`${statsResponse.snapshot.peer_stats.live} / ${statsResponse.snapshot.peer_stats.seen}`} + + : + } + +
); } @@ -143,79 +61,31 @@ const Column: React.FC<{ ); const Torrent = ({ id, torrent }) => { - const defaultDetails: TorrentDetails = { - info_hash: '', - files: [] - }; - const defaultStats: TorrentStats = { - snapshot: { - have_bytes: 0, - downloaded_and_checked_bytes: 0, - downloaded_and_checked_pieces: 0, - fetched_bytes: 0, - uploaded_bytes: 0, - initially_needed_bytes: 0, - remaining_bytes: 0, - total_bytes: 0, - total_piece_download_ms: 0, - peer_stats: { - queued: 0, - connecting: 0, - live: 0, - seen: 0, - dead: 0, - not_needed: 0 - } - }, - average_piece_download_time: { - secs: 0, - nanos: 0 - }, - download_speed: { - mbps: 0, - human_readable: '' - }, - all_time_download_speed: { - mbps: 0, - human_readable: '' - }, - time_remaining: { - human_readable: '' - } - }; + const [detailsResponse, updateDetailsResponse] = useState(null); + const [statsResponse, updateStatsResponse] = useState(null); - const [detailsResponse, updateDetailsResponse] = useState(defaultDetails); - const [statsResponse, updateStatsResponse] = useState(defaultStats); - - let ctx = useContext(AppContext); - - // Update details once + // Update details once. useEffect(() => { - if (detailsResponse === defaultDetails) { + if (detailsResponse === null) { return loopUntilSuccess(async () => { - await ctx.requests.getTorrentDetails(torrent.id).then(updateDetailsResponse); + await API.getTorrentDetails(torrent.id).then(updateDetailsResponse); }, 1000); } }, [detailsResponse]); - // Update stats forever. - const update = async () => { + // Update stats once then forever. + useEffect(() => customSetInterval((async () => { const errorInterval = 10000; const liveInterval = 500; const finishedInterval = 5000; - return ctx.requests.getTorrentStats(torrent.id).then((stats) => { + return API.getTorrentStats(torrent.id).then((stats) => { updateStatsResponse(stats); return torrentIsDone(stats) ? finishedInterval : liveInterval; }, (e) => { - return errorInterval - }) - }; - - useEffect(() => { - let clear = customSetInterval(update, 0); - return clear; - }, []); + return errorInterval; + }); + }), 0), []); return } @@ -226,23 +96,19 @@ const TorrentsList = (props: { torrents: Array, loading: boolean }) = } // The app either just started, or there was an error loading torrents. if (props.torrents === null) { - return <> + return; } if (props.torrents.length === 0) { - return ( -
-

No existing torrents found. Add them through buttons below.

-
- ) + return
+

No existing torrents found. Add them through buttons below.

+
; } - return ( - <> - {props.torrents.map((t: TorrentId) => - - )} - - ) + return <> + {props.torrents.map((t: TorrentId) => + + )} + ; }; const Root = () => { @@ -252,86 +118,26 @@ const Root = () => { const [torrents, setTorrents] = useState>(null); const [torrentsLoading, setTorrentsLoading] = useState(false); - const makeRequest = async (method: string, path: string, data: any): Promise => { - console.log(method, path); - const url = apiUrl + path; - const options: RequestInit = { - method, - headers: { - 'Accept': 'application/json', - }, - body: data, - }; - - let error: ErrorDetails = { - method: method, - path: path, - text: '' - }; - - let response: Response; - - try { - response = await fetch(url, options); - } catch (e) { - error.text = 'network error'; - return Promise.reject(error); - } - - error.status = response.status; - error.statusText = response.statusText; - - if (!response.ok) { - const errorBody = await response.text(); - try { - const json = JSON.parse(errorBody); - error.text = json.human_readable !== undefined ? json.human_readable : JSON.stringify(json, null, 2); - } catch (e) { - error.text = errorBody; - } - return Promise.reject(error); - } - const result = await response.json(); - return result; - } - - const requests = { - getTorrentDetails: (index: number): Promise => { - return makeRequest('GET', `/torrents/${index}`, null); - }, - getTorrentStats: (index: number): Promise => { - return makeRequest('GET', `/torrents/${index}/stats`, null); - } - }; - const refreshTorrents = async () => { setTorrentsLoading(true); - let torrents: { torrents: Array } = await makeRequest('GET', '/torrents', null).finally(() => setTorrentsLoading(false)); + let torrents = await API.listTorrents().finally(() => setTorrentsLoading(false)); setTorrents(torrents.torrents); - return torrents; }; useEffect(() => { - let interval = 500; - let clear = customSetInterval(async () => { - try { - await refreshTorrents(); + return customSetInterval(async () => + refreshTorrents().then(() => { setOtherError(null); - return interval; - } catch (e) { + return 5000; + }, (e) => { setOtherError({ text: 'Error refreshing torrents', details: e }); console.error(e); return 5000; - } - }, interval); - return clear; + }), 0); }, []); const context: ContextType = { setCloseableError, - setOtherError, - makeRequest, - requests, refreshTorrents, } @@ -353,11 +159,7 @@ const ErrorDetails = (props: { details: ErrorDetails }) => { return null; } return <> - { - details.status && ( - {details.status} {details.statusText}: - ) - } + {details.status && {details.status} {details.statusText}: } {details.text} @@ -370,7 +172,7 @@ const ErrorComponent = (props: { error: Error, remove?: () => void }) => { return null; } - return ( + return ( {error.text} @@ -379,9 +181,11 @@ const ErrorComponent = (props: { error: Error, remove?: () => void }) => { const UploadButton = ({ buttonText, onClick, data, resetData, variant }) => { const [loading, setLoading] = useState(false); - const [fileList, setFileList] = useState(null); + const [fileList, setFileList] = useState([]); + const [fileListError, setFileListError] = useState(null); const ctx = useContext(AppContext); - const showModal = data !== null; + + const showModal = data !== null || fileListError !== null; // Get the torrent file list if there's data. useEffect(() => { @@ -392,12 +196,10 @@ const UploadButton = ({ buttonText, onClick, data, resetData, variant }) => { let t = setTimeout(async () => { setLoading(true); try { - const response: AddTorrentResponse = await ctx.makeRequest('POST', `/torrents?list_only=true&overwrite=true`, data); - console.log(response); + const response = await API.uploadTorrent(data, { listOnly: true }); setFileList(response.details.files); } catch (e) { - ctx.setCloseableError({ text: 'Error listing torrent', details: e }); - clear(); + setFileListError({ text: 'Error listing torrent', details: e }); } finally { setLoading(false); } @@ -407,7 +209,8 @@ const UploadButton = ({ buttonText, onClick, data, resetData, variant }) => { const clear = () => { resetData(); - setFileList(null); + setFileListError(null); + setFileList([]); setLoading(false); } @@ -420,6 +223,7 @@ const UploadButton = ({ buttonText, onClick, data, resetData, variant }) => { { ); }; -const FileSelectionModal = (props: { show: boolean, onHide, fileList: Array | null, fileListLoading: boolean, data }) => { - let { show, onHide, fileList, fileListLoading, data } = props; +const FileSelectionModal = (props: { + show: boolean, + onHide: () => void, + fileList: Array, + fileListError: Error, + fileListLoading: boolean, + data: string | File +}) => { + let { show, onHide, fileList, fileListError, fileListLoading, data } = props; const [selectedFiles, setSelectedFiles] = useState([]); const [uploading, setUploading] = useState(false); const [uploadError, setUploadError] = useState(null); + const ctx = useContext(AppContext); useEffect(() => { - setSelectedFiles((fileList || []).map((_, id) => id)); + setSelectedFiles(fileList.map((_, id) => id)); }, [fileList]); - fileList = fileList || []; - - let ctx = useContext(AppContext); - const clear = () => { onHide(); setSelectedFiles([]); @@ -489,47 +297,39 @@ const FileSelectionModal = (props: { show: boolean, onHide, fileList: Array { - if (selectedFiles.includes(fileIndex)) { - setSelectedFiles(selectedFiles.filter((index) => index !== fileIndex)); + const handleToggleFile = (toggledId: number) => { + if (selectedFiles.includes(toggledId)) { + setSelectedFiles(selectedFiles.filter((i) => i !== toggledId)); } else { - setSelectedFiles([...selectedFiles, fileIndex]); + setSelectedFiles([...selectedFiles, toggledId]); } }; const handleUpload = async () => { - const getSelectedFilesQueryParam = () => { - let allPresent = true; - fileList.map((_, id) => { - allPresent = allPresent && selectedFiles.includes(id); - }); - return allPresent ? '' : '&only_files=' + selectedFiles.join(','); - }; - - let url = `/torrents?overwrite=true${getSelectedFilesQueryParam()}`; - setUploading(true); - ctx.makeRequest('POST', url, data).then(() => { onHide() }, (e) => { - setUploadError({ text: 'Error starting torrent', details: e }); - }).finally(() => setUploading(false)); + API.uploadTorrent(data, { selectedFiles }).then( + () => { + onHide(); + ctx.refreshTorrents(); + }, + (e) => { + setUploadError({ text: 'Error starting torrent', details: e }); + } + ).finally(() => setUploading(false)); }; return ( - Select Files + {!!fileListError || Select Files} - {fileListLoading ? ( - - ) : ( - <> + {fileListLoading ? + : fileListError ? :
- {fileList.map((file, index) => ( ))} -
- - - - )} + } +
{uploading && } - +
); @@ -580,35 +377,26 @@ function torrentIsDone(stats: TorrentStats): boolean { return stats.snapshot.have_bytes == stats.snapshot.total_bytes; } -// Render function to display all torrents -async function displayTorrents() { - // Get the torrents container - const torrentsContainer = document.getElementById('app'); - ReactDOM.createRoot(torrentsContainer).render(); -} - -// Function to format bytes to GB -function formatBytes(bytes) { +function formatBytes(bytes: number): string { if (bytes === 0) return '0 Bytes'; const k = 1024; - const sizes = ['Bytes', 'KB', 'MB', 'GB', 'TB', 'PB', 'EB', 'ZB', 'YB']; + const sizes = ['Bytes', 'KB', 'MB', 'GB']; const i = Math.floor(Math.log(bytes) / Math.log(k)); return parseFloat((bytes / Math.pow(k, i)).toFixed(2)) + ' ' + sizes[i]; } -// Function to get the name of the largest file in a torrent function getLargestFileName(torrentDetails: TorrentDetails): string { - if (torrentDetails.files.length == 0) { - return 'Loading...'; - } - const largestFile = torrentDetails.files.reduce((prev: any, current: any) => (prev.length > current.length) ? prev : current); + const largestFile = torrentDetails.files.filter( + (f) => f.included + ).reduce( + (prev: any, current: any) => (prev.length > current.length) ? prev : current + ); return largestFile.name; } -// Function to get the completion ETA of a torrent function getCompletionETA(stats: TorrentStats): string { if (stats.time_remaining && stats.time_remaining.duration) { return formatSecondsToTime(stats.time_remaining.duration.secs); @@ -617,12 +405,12 @@ function getCompletionETA(stats: TorrentStats): string { } } -function formatSecondsToTime(seconds: number) { +function formatSecondsToTime(seconds: number): string { const hours = Math.floor(seconds / 3600); const minutes = Math.floor((seconds % 3600) / 60); const remainingSeconds = seconds % 60; - const formatUnit = (value, unit) => (value > 0 ? `${value}${unit}` : ''); + const formatUnit = (value: number, unit: string) => (value > 0 ? `${value}${unit}` : ''); if (hours > 0) { return `${formatUnit(hours, 'h')} ${formatUnit(minutes, 'm')}`.trim(); @@ -633,9 +421,12 @@ function formatSecondsToTime(seconds: number) { } } -function customSetInterval(asyncCallback: any, interval: number) { +// Run a function with initial interval, then run it forever with the interval that the +// callback returns. +// Returns a callback to clear it. +function customSetInterval(asyncCallback: () => Promise, initialInterval: number): () => void { let timeoutId: number; - let currentInterval: number = interval; + let currentInterval: number = initialInterval; const executeCallback = async () => { currentInterval = await asyncCallback(); @@ -651,39 +442,34 @@ function customSetInterval(asyncCallback: any, interval: number) { scheduleNext(); - let clearCustomInterval = () => { + return () => { clearTimeout(timeoutId); - } - - return clearCustomInterval; + }; } -function loopUntilSuccess(callback, interval: number) { +function loopUntilSuccess(callback: () => Promise, interval: number): () => void { let timeoutId: number; const executeCallback = async () => { - let retry = await callback().then(() => { false }, () => { true }); + let retry = await callback().then(() => false, () => true); if (retry) { scheduleNext(); } } - let scheduleNext = (i?: number) => { - timeoutId = setTimeout(executeCallback, i !== undefined ? i : interval); + let scheduleNext = (overrideInterval?: number) => { + timeoutId = setTimeout(executeCallback, overrideInterval !== undefined ? overrideInterval : interval); } scheduleNext(0); - let clearCustomInterval = () => { - clearTimeout(timeoutId); - } - - return clearCustomInterval; + return () => clearTimeout(timeoutId); } // List all torrents on page load and set up auto-refresh async function init(): Promise { - await displayTorrents(); + const torrentsContainer = document.getElementById('app'); + ReactDOM.createRoot(torrentsContainer).render(); } // Call init function on page load diff --git a/crates/librqbit_core/Cargo.toml b/crates/librqbit_core/Cargo.toml index 0c10aba..73ac147 100644 --- a/crates/librqbit_core/Cargo.toml +++ b/crates/librqbit_core/Cargo.toml @@ -1,7 +1,7 @@ [package] name = "librqbit-core" version = "3.0.0" -edition = "2018" +edition = "2021" description = "Important utilities used throughout librqbit useful for working with torrents." license = "Apache-2.0" documentation = "https://docs.rs/librqbit-core" diff --git a/crates/peer_binary_protocol/Cargo.toml b/crates/peer_binary_protocol/Cargo.toml index 32f3244..aa0df2e 100644 --- a/crates/peer_binary_protocol/Cargo.toml +++ b/crates/peer_binary_protocol/Cargo.toml @@ -1,7 +1,7 @@ [package] name = "librqbit-peer-protocol" version = "3.0.0" -edition = "2018" +edition = "2021" description = "Protocol for working with torrent peers. Used in rqbit torrent client." license = "Apache-2.0" documentation = "https://docs.rs/librqbit-peer-protocol" diff --git a/crates/rqbit/Cargo.toml b/crates/rqbit/Cargo.toml index d568fe2..18efde5 100644 --- a/crates/rqbit/Cargo.toml +++ b/crates/rqbit/Cargo.toml @@ -2,7 +2,7 @@ name = "rqbit" version = "3.3.0" authors = ["Igor Katson "] -edition = "2018" +edition = "2021" description = "A bittorrent command line client and server." license = "Apache-2.0" documentation = "https://github.com/ikatson/rqbit"