diff --git a/apps/comments/src/actions/inlineUnreadCommentsAction.ts b/apps/comments/src/actions/inlineUnreadCommentsAction.ts index 1ffdbeafc2ab7..4f77a66244c2c 100644 --- a/apps/comments/src/actions/inlineUnreadCommentsAction.ts +++ b/apps/comments/src/actions/inlineUnreadCommentsAction.ts @@ -9,6 +9,7 @@ import CommentProcessingSvg from '@mdi/svg/svg/comment-processing.svg?raw' import { getSidebar } from '@nextcloud/files' import { n, t } from '@nextcloud/l10n' import logger from '../logger.js' +import { isUsingActivityIntegration } from '../utils/activity.js' export const action: IFileAction = { id: 'comments-unread', @@ -38,7 +39,13 @@ export const action: IFileAction = { try { const sidebar = getSidebar() - sidebar.open(nodes[0], 'comments') + const sidebarTabId = isUsingActivityIntegration() ? 'activity' : 'comments' + if (sidebar.isOpen && sidebar.node?.source === nodes[0].source) { + logger.debug('Sidebar already open for this node, just activating comments tab') + sidebar.setActiveTab(sidebarTabId) + return null + } + sidebar.open(nodes[0], sidebarTabId) return null } catch (error) { logger.error('Error while opening sidebar', { error }) diff --git a/apps/comments/src/files-sidebar.ts b/apps/comments/src/files-sidebar.ts index 47ff8dfc1cba9..1a39291c48d42 100644 --- a/apps/comments/src/files-sidebar.ts +++ b/apps/comments/src/files-sidebar.ts @@ -1,4 +1,4 @@ -/** +/*! * SPDX-FileCopyrightText: 2020 Nextcloud GmbH and Nextcloud contributors * SPDX-License-Identifier: AGPL-3.0-or-later */ @@ -6,18 +6,18 @@ import MessageReplyText from '@mdi/svg/svg/message-reply-text.svg?raw' import { getCSPNonce } from '@nextcloud/auth' import { registerSidebarTab } from '@nextcloud/files' -import { loadState } from '@nextcloud/initial-state' import { t } from '@nextcloud/l10n' import wrap from '@vue/web-component-wrapper' import { createPinia, PiniaVuePlugin } from 'pinia' import Vue from 'vue' import { registerCommentsPlugins } from './comments-activity-tab.ts' +import { isUsingActivityIntegration } from './utils/activity.ts' __webpack_nonce__ = getCSPNonce() const tagName = 'comments_files-sidebar-tab' -if (loadState('comments', 'activityEnabled', false) && OCA?.Activity?.registerSidebarAction !== undefined) { +if (isUsingActivityIntegration()) { // Do not mount own tab but mount into activity window.addEventListener('DOMContentLoaded', function() { registerCommentsPlugins() diff --git a/apps/comments/src/utils/activity.ts b/apps/comments/src/utils/activity.ts new file mode 100644 index 0000000000000..3a3063be20aab --- /dev/null +++ b/apps/comments/src/utils/activity.ts @@ -0,0 +1,13 @@ +/*! + * SPDX-FileCopyrightText: 2026 Nextcloud GmbH and Nextcloud contributors + * SPDX-License-Identifier: AGPL-3.0-or-later + */ + +import { loadState } from '@nextcloud/initial-state' + +/** + * Check if the comments app is using the Activity app integration for the sidebar. + */ +export function isUsingActivityIntegration() { + return loadState('comments', 'activityEnabled', false) && window.OCA?.Activity?.registerSidebarAction !== undefined +} diff --git a/apps/files/src/utils/actionUtils.ts b/apps/files/src/utils/actionUtils.ts index 5a752d6258752..e72cdbc3ba112 100644 --- a/apps/files/src/utils/actionUtils.ts +++ b/apps/files/src/utils/actionUtils.ts @@ -48,7 +48,7 @@ export async function executeAction(action: IFileAction) { let displayName = action.id try { - displayName = action.displayName(context) + displayName = action.displayName(context) || displayName } catch (error) { logger.error('Error while getting action display name', { action, error }) } diff --git a/dist/comments-comments-tab.js b/dist/comments-comments-tab.js index 323251187300b..4744c03a811ae 100644 --- a/dist/comments-comments-tab.js +++ b/dist/comments-comments-tab.js @@ -1,2 +1,2 @@ -(()=>{var t,e,r,n={96689(t,e,r){"use strict";r.d(e,{A:()=>n});const n=(0,r(35947).YK)().setApp("comments").detectUser().build()},35550(t,e,r){"use strict";r.d(e,{A:()=>u});var n=r(21777),o=r(82415),i=r(17003);const s=(0,o.UU)((0,i.e)());function a(t){s.setHeaders({"X-Requested-With":"XMLHttpRequest",requesttoken:t??""})}(0,n.zo)(a),a((0,n.do)());const u=s},17003(t,e,r){"use strict";r.d(e,{e:()=>o});var n=r(63814);function o(){return(0,n.dC)("dav/comments")}},83769(t,e,r){"use strict";var n=r(21777),o=r(35810),i=r(81222),s=r(53334),a=r(26422),u=r(10810),l=r(85471),c=r(51651),f=r(96689),h=r(35906);let p,d;l.Ay.use(u.R2),r.nc=(0,n.aV)();const g="comments_files-sidebar-tab";(0,i.C)("comments","activityEnabled",!1)&&void 0!==OCA?.Activity?.registerSidebarAction?window.addEventListener("DOMContentLoaded",function(){window.OCA.Activity.registerSidebarAction({mount:async(t,{node:e,reload:n})=>{const o=(0,u.Ey)();if(!p){const{default:t}=await Promise.all([r.e(4208),r.e(3556),r.e(4906)]).then(r.bind(r,44906));p=l.Ay.extend(t)}d=new p({el:t,pinia:o,propsData:{reloadCallback:n,resourceId:e.fileid}}),f.A.info("Comments plugin mounted in Activity sidebar action",{node:e})},unmount:()=>{d&&d.$destroy()}}),window.OCA.Activity.registerSidebarEntries(async({node:t,limit:e,offset:n})=>{const{data:o}=await(0,h.v)({resourceType:"files",resourceId:t.fileid},{limit:e,offset:n??0});f.A.debug("Loaded comments",{node:t,comments:o});const{default:i}=await Promise.all([r.e(4208),r.e(3556),r.e(7039)]).then(r.bind(r,57039)),s=l.Ay.extend(i);return o.map(e=>({_CommentsViewInstance:void 0,timestamp:(0,c.A)(e.props?.creationDateTime).toDate().getTime(),mount(r,{reload:n}){this._CommentsViewInstance=new s({el:r,propsData:{comment:e,resourceId:t.fileid,reloadCallback:n}})},unmount(){this._CommentsViewInstance?.$destroy()}}))}),window.OCA.Activity.registerSidebarFilter(t=>"comments"!==t.type),f.A.info("Comments plugin registered for Activity sidebar action")}):(0,o.rS)({id:"comments",displayName:(0,s.t)("comments","Comments"),iconSvgInline:'',order:50,tagName:g,async onInit(){const{default:t}=await Promise.all([r.e(4208),r.e(3556),r.e(8124)]).then(r.bind(r,38124));l.Ay.use(u.R2),l.Ay.mixin({pinia:(0,u.Ey)()});const e=(0,a.A)(l.Ay,t);Object.defineProperty(e.prototype,"attachShadow",{value(){return this}}),Object.defineProperty(e.prototype,"shadowRoot",{get(){return this}}),window.customElements.define(g,e)}})},35906(t,e,r){"use strict";r.d(e,{e:()=>a,v:()=>u});var n=r(82415),o=r(5e3),i=r(90176),s=r(35550);const a=20;async function u({resourceType:t,resourceId:e},r){const u=["",t,e].join("/"),l=r.datetime?`${r.datetime.toISOString()}`:"",c=await s.A.customRequest(u,{method:"REPORT",data:`\n\t\t\t\n\t\t\t\t${r.limit??a}\n\t\t\t\t${r.offset||0}\n\t\t\t\t${l}\n\t\t\t`,...r}),f=await c.text(),h=function(t,e=!1){const{multistatus:{response:r}}=t;return r.map(t=>{const r=t.propstat.prop;return(0,i.ch)(r,r.id.toString(),e)})}(await(0,n.h4)(f),!0);return(0,o.hq)(c,h,!0)}},8505(t){"use strict";function e(t,e,o){t instanceof RegExp&&(t=r(t,o)),e instanceof RegExp&&(e=r(e,o));var i=n(t,e,o);return i&&{start:i[0],end:i[1],pre:o.slice(0,i[0]),body:o.slice(i[0]+t.length,i[1]),post:o.slice(i[1]+e.length)}}function r(t,e){var r=e.match(t);return r?r[0]:null}function n(t,e,r){var n,o,i,s,a,u=r.indexOf(t),l=r.indexOf(e,u+1),c=u;if(u>=0&&l>0){if(t===e)return[u,l];for(n=[],i=r.length;c>=0&&!a;)c==u?(n.push(c),u=r.indexOf(t,c+1)):1==n.length?a=[n.pop(),l]:((o=n.pop())=0?u:l;n.length&&(a=[i,s])}return a}t.exports=e,e.range=n},85914(t,e,r){var n;t=r.nmd(t),function(){var o=(t&&t.exports,"object"==typeof globalThis&&globalThis);o.global!==o&&o.window;var i=function(t){this.message=t};(i.prototype=new Error).name="InvalidCharacterError";var s=function(t){throw new i(t)},a="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/",u=/[\t\n\f\r ]/g,l={encode:function(t){t=String(t),/[^\0-\xFF]/.test(t)&&s("The string to be encoded contains characters outside of the Latin1 range.");for(var e,r,n,o,i=t.length%3,u="",l=-1,c=t.length-i;++l>18&63)+a.charAt(o>>12&63)+a.charAt(o>>6&63)+a.charAt(63&o);return 2==i?(e=t.charCodeAt(l)<<8,r=t.charCodeAt(++l),u+=a.charAt((o=e+r)>>10)+a.charAt(o>>4&63)+a.charAt(o<<2&63)+"="):1==i&&(o=t.charCodeAt(l),u+=a.charAt(o>>2)+a.charAt(o<<4&63)+"=="),u},decode:function(t){var e=(t=String(t).replace(u,"")).length;e%4==0&&(e=(t=t.replace(/==?$/,"")).length),(e%4==1||/[^+a-zA-Z0-9/]/.test(t))&&s("Invalid character: the string to be decoded is not correctly encoded.");for(var r,n,o=0,i="",l=-1;++l>(-2*o&6)));return i},version:"1.0.0"};void 0===(n=function(){return l}.call(e,r,e,t))||(t.exports=n)}()},68928(t,e,r){var n=r(8505);t.exports=function(t){return t?("{}"===t.substr(0,2)&&(t="\\{\\}"+t.substr(2)),y(function(t){return t.split("\\\\").join(o).split("\\{").join(i).split("\\}").join(s).split("\\,").join(a).split("\\.").join(u)}(t),!0).map(c)):[]};var o="\0SLASH"+Math.random()+"\0",i="\0OPEN"+Math.random()+"\0",s="\0CLOSE"+Math.random()+"\0",a="\0COMMA"+Math.random()+"\0",u="\0PERIOD"+Math.random()+"\0";function l(t){return parseInt(t,10)==t?parseInt(t,10):t.charCodeAt(0)}function c(t){return t.split(o).join("\\").split(i).join("{").split(s).join("}").split(a).join(",").split(u).join(".")}function f(t){if(!t)return[""];var e=[],r=n("{","}",t);if(!r)return t.split(",");var o=r.pre,i=r.body,s=r.post,a=o.split(",");a[a.length-1]+="{"+i+"}";var u=f(s);return s.length&&(a[a.length-1]+=u.shift(),a.push.apply(a,u)),e.push.apply(e,a),e}function h(t){return"{"+t+"}"}function p(t){return/^-?0\d/.test(t)}function d(t,e){return t<=e}function g(t,e){return t>=e}function y(t,e){var r=[],o=n("{","}",t);if(!o)return[t];var i=o.pre,a=o.post.length?y(o.post,!1):[""];if(/\$$/.test(o.pre))for(var u=0;u=0;if(!E&&!x)return o.post.match(/,(?!,).*\}/)?y(t=o.pre+"{"+o.body+s+o.post):[t];if(E)m=o.body.split(/\.\./);else if(1===(m=f(o.body)).length&&1===(m=y(m[0],!1).map(h)).length)return a.map(function(t){return o.pre+m[0]+t});if(E){var S=l(m[0]),O=l(m[1]),_=Math.max(m[0].length,m[1].length),A=3==m.length?Math.abs(l(m[2])):1,T=d;O0){var k=new Array(P+1).join("0");R=N<0?"-"+k+R.slice(1):k+R}}b.push(R)}}else{b=[];for(var C=0;Ce},11083(t,e,r){var n=r(11568),o=r(88835),i=t.exports;for(var s in n)n.hasOwnProperty(s)&&(i[s]=n[s]);function a(t){if("string"==typeof t&&(t=o.parse(t)),t.protocol||(t.protocol="https:"),"https:"!==t.protocol)throw new Error('Protocol "'+t.protocol+'" not supported. Expected "https:"');return t}i.request=function(t,e){return t=a(t),n.request.call(this,t,e)},i.get=function(t,e){return t=a(t),n.get.call(this,t,e)}},47244(t,e,r){"use strict";var n=r(49092)(),o=r(36556)("Object.prototype.toString"),i=function(t){return!(n&&t&&"object"==typeof t&&Symbol.toStringTag in t)&&"[object Arguments]"===o(t)},s=function(t){return!!i(t)||null!==t&&"object"==typeof t&&"length"in t&&"number"==typeof t.length&&t.length>=0&&"[object Array]"!==o(t)&&"callee"in t&&"[object Function]"===o(t.callee)},a=function(){return i(arguments)}();i.isLegacyArguments=s,t.exports=a?i:s},48184(t,e,r){"use strict";var n=r(36556),o=r(99721)(/^\s*(?:function)?\*/),i=r(49092)(),s=r(93628),a=n("Object.prototype.toString"),u=n("Function.prototype.toString"),l=r(4233);t.exports=function(t){if("function"!=typeof t)return!1;if(o(u(t)))return!0;if(!i)return"[object GeneratorFunction]"===a(t);if(!s)return!1;var e=l();return e&&s(t)===e.prototype}},14035(t,e,r){"use strict";var n,o=r(36556),i=r(49092)(),s=r(9957),a=r(75795);if(i){var u=o("RegExp.prototype.exec"),l={},c=function(){throw l},f={toString:c,valueOf:c};"symbol"==typeof Symbol.toPrimitive&&(f[Symbol.toPrimitive]=c),n=function(t){if(!t||"object"!=typeof t)return!1;var e=a(t,"lastIndex");if(!e||!s(e,"value"))return!1;try{u(t,f)}catch(t){return t===l}}}else{var h=o("Object.prototype.toString");n=function(t){return!(!t||"object"!=typeof t&&"function"!=typeof t)&&"[object RegExp]"===h(t)}}t.exports=n},26602(t){"use strict";function e(t){return e="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t},e(t)}function r(t){var e="function"==typeof Map?new Map:void 0;return r=function(t){if(null===t||(r=t,-1===Function.toString.call(r).indexOf("[native code]")))return t;var r;if("function"!=typeof t)throw new TypeError("Super expression must either be null or a function");if(void 0!==e){if(e.has(t))return e.get(t);e.set(t,s)}function s(){return n(t,arguments,i(this).constructor)}return s.prototype=Object.create(t.prototype,{constructor:{value:s,enumerable:!1,writable:!0,configurable:!0}}),o(s,t)},r(t)}function n(t,e,r){return n=function(){if("undefined"==typeof Reflect||!Reflect.construct)return!1;if(Reflect.construct.sham)return!1;if("function"==typeof Proxy)return!0;try{return Date.prototype.toString.call(Reflect.construct(Date,[],function(){})),!0}catch(t){return!1}}()?Reflect.construct:function(t,e,r){var n=[null];n.push.apply(n,e);var i=new(Function.bind.apply(t,n));return r&&o(i,r.prototype),i},n.apply(null,arguments)}function o(t,e){return o=Object.setPrototypeOf||function(t,e){return t.__proto__=e,t},o(t,e)}function i(t){return i=Object.setPrototypeOf?Object.getPrototypeOf:function(t){return t.__proto__||Object.getPrototypeOf(t)},i(t)}var s=function(t){function r(t){var n;return function(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}(this,r),(n=function(t,r){return!r||"object"!==e(r)&&"function"!=typeof r?function(t){if(void 0===t)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return t}(t):r}(this,i(r).call(this,t))).name="ObjectPrototypeMutationError",n}return function(t,e){if("function"!=typeof e&&null!==e)throw new TypeError("Super expression must either be null or a function");t.prototype=Object.create(e&&e.prototype,{constructor:{value:t,writable:!0,configurable:!0}}),e&&o(t,e)}(r,t),r}(r(Error));function a(t,r){for(var n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:function(){},o=r.split("."),i=o.length,s=function(e){var r=o[e];if(!t)return{v:void 0};if("+"===r){if(Array.isArray(t))return{v:t.map(function(r,i){var s=o.slice(e+1);return s.length>0?a(r,s.join("."),n):n(t,i,o,e)})};var i=o.slice(0,e).join(".");throw new Error("Object at wildcard (".concat(i,") is not an array"))}t=n(t,r,o,e)},u=0;u2&&void 0!==arguments[2]?arguments[2]:{};if("object"!=e(t)||null===t)return!1;if(void 0===r)return!1;if("number"==typeof r)return r in t;try{var o=!1;return a(t,r,function(t,e,r,i){if(!u(r,i))return t&&t[e];o=n.own?t.hasOwnProperty(e):e in t}),o}catch(t){return!1}},hasOwn:function(t,e,r){return this.has(t,e,r||{own:!0})},isIn:function(t,r,n){var o=arguments.length>3&&void 0!==arguments[3]?arguments[3]:{};if("object"!=e(t)||null===t)return!1;if(void 0===r)return!1;try{var i=!1,s=!1;return a(t,r,function(t,r,o,a){return i=i||t===n||!!t&&t[r]===n,s=u(o,a)&&"object"===e(t)&&r in t,t&&t[r]}),o.validPath?i&&s:i}catch(t){return!1}},ObjectPrototypeMutationError:s}},58859(t,e,r){var n="function"==typeof Map&&Map.prototype,o=Object.getOwnPropertyDescriptor&&n?Object.getOwnPropertyDescriptor(Map.prototype,"size"):null,i=n&&o&&"function"==typeof o.get?o.get:null,s=n&&Map.prototype.forEach,a="function"==typeof Set&&Set.prototype,u=Object.getOwnPropertyDescriptor&&a?Object.getOwnPropertyDescriptor(Set.prototype,"size"):null,l=a&&u&&"function"==typeof u.get?u.get:null,c=a&&Set.prototype.forEach,f="function"==typeof WeakMap&&WeakMap.prototype?WeakMap.prototype.has:null,h="function"==typeof WeakSet&&WeakSet.prototype?WeakSet.prototype.has:null,p="function"==typeof WeakRef&&WeakRef.prototype?WeakRef.prototype.deref:null,d=Boolean.prototype.valueOf,g=Object.prototype.toString,y=Function.prototype.toString,m=String.prototype.match,b=String.prototype.slice,v=String.prototype.replace,w=String.prototype.toUpperCase,E=String.prototype.toLowerCase,x=RegExp.prototype.test,S=Array.prototype.concat,O=Array.prototype.join,_=Array.prototype.slice,A=Math.floor,T="function"==typeof BigInt?BigInt.prototype.valueOf:null,j=Object.getOwnPropertySymbols,N="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?Symbol.prototype.toString:null,R="function"==typeof Symbol&&"object"==typeof Symbol.iterator,P="function"==typeof Symbol&&Symbol.toStringTag&&(Symbol.toStringTag,1)?Symbol.toStringTag:null,k=Object.prototype.propertyIsEnumerable,C=("function"==typeof Reflect?Reflect.getPrototypeOf:Object.getPrototypeOf)||([].__proto__===Array.prototype?function(t){return t.__proto__}:null);function I(t,e){if(t===1/0||t===-1/0||t!=t||t&&t>-1e3&&t<1e3||x.call(/e/,e))return e;var r=/[0-9](?=(?:[0-9]{3})+(?![0-9]))/g;if("number"==typeof t){var n=t<0?-A(-t):A(t);if(n!==t){var o=String(n),i=b.call(e,o.length+1);return v.call(o,r,"$&_")+"."+v.call(v.call(i,/([0-9]{3})/g,"$&_"),/_$/,"")}}return v.call(e,r,"$&_")}var M=r(42634),L=M.custom,D=V(L)?L:null,$={__proto__:null,double:'"',single:"'"},U={__proto__:null,double:/(["\\])/g,single:/(['\\])/g};function q(t,e,r){var n=r.quoteStyle||e,o=$[n];return o+t+o}function F(t){return v.call(String(t),/"/g,""")}function H(t){return!P||!("object"==typeof t&&(P in t||void 0!==t[P]))}function W(t){return"[object Array]"===K(t)&&H(t)}function B(t){return"[object RegExp]"===K(t)&&H(t)}function V(t){if(R)return t&&"object"==typeof t&&t instanceof Symbol;if("symbol"==typeof t)return!0;if(!t||"object"!=typeof t||!N)return!1;try{return N.call(t),!0}catch(t){}return!1}t.exports=function t(e,r,n,o){var a=r||{};if(z(a,"quoteStyle")&&!z($,a.quoteStyle))throw new TypeError('option "quoteStyle" must be "single" or "double"');if(z(a,"maxStringLength")&&("number"==typeof a.maxStringLength?a.maxStringLength<0&&a.maxStringLength!==1/0:null!==a.maxStringLength))throw new TypeError('option "maxStringLength", if provided, must be a positive integer, Infinity, or `null`');var u=!z(a,"customInspect")||a.customInspect;if("boolean"!=typeof u&&"symbol"!==u)throw new TypeError("option \"customInspect\", if provided, must be `true`, `false`, or `'symbol'`");if(z(a,"indent")&&null!==a.indent&&"\t"!==a.indent&&!(parseInt(a.indent,10)===a.indent&&a.indent>0))throw new TypeError('option "indent" must be "\\t", an integer > 0, or `null`');if(z(a,"numericSeparator")&&"boolean"!=typeof a.numericSeparator)throw new TypeError('option "numericSeparator", if provided, must be `true` or `false`');var g=a.numericSeparator;if(void 0===e)return"undefined";if(null===e)return"null";if("boolean"==typeof e)return e?"true":"false";if("string"==typeof e)return Y(e,a);if("number"==typeof e){if(0===e)return 1/0/e>0?"0":"-0";var w=String(e);return g?I(e,w):w}if("bigint"==typeof e){var x=String(e)+"n";return g?I(e,x):x}var A=void 0===a.depth?5:a.depth;if(void 0===n&&(n=0),n>=A&&A>0&&"object"==typeof e)return W(e)?"[Array]":"[Object]";var j,L=function(t,e){var r;if("\t"===t.indent)r="\t";else{if(!("number"==typeof t.indent&&t.indent>0))return null;r=O.call(Array(t.indent+1)," ")}return{base:r,prev:O.call(Array(e+1),r)}}(a,n);if(void 0===o)o=[];else if(X(o,e)>=0)return"[Circular]";function U(e,r,i){if(r&&(o=_.call(o)).push(r),i){var s={depth:a.depth};return z(a,"quoteStyle")&&(s.quoteStyle=a.quoteStyle),t(e,s,n+1,o)}return t(e,a,n+1,o)}if("function"==typeof e&&!B(e)){var G=function(t){if(t.name)return t.name;var e=m.call(y.call(t),/^function\s*([\w$]+)/);return e?e[1]:null}(e),Z=rt(e,U);return"[Function"+(G?": "+G:" (anonymous)")+"]"+(Z.length>0?" { "+O.call(Z,", ")+" }":"")}if(V(e)){var nt=R?v.call(String(e),/^(Symbol\(.*\))_[^)]*$/,"$1"):N.call(e);return"object"!=typeof e||R?nt:Q(nt)}if((j=e)&&"object"==typeof j&&("undefined"!=typeof HTMLElement&&j instanceof HTMLElement||"string"==typeof j.nodeName&&"function"==typeof j.getAttribute)){for(var ot="<"+E.call(String(e.nodeName)),it=e.attributes||[],st=0;st"}if(W(e)){if(0===e.length)return"[]";var at=rt(e,U);return L&&!function(t){for(var e=0;e=0)return!1;return!0}(at)?"["+et(at,L)+"]":"[ "+O.call(at,", ")+" ]"}if(function(t){return"[object Error]"===K(t)&&H(t)}(e)){var ut=rt(e,U);return"cause"in Error.prototype||!("cause"in e)||k.call(e,"cause")?0===ut.length?"["+String(e)+"]":"{ ["+String(e)+"] "+O.call(ut,", ")+" }":"{ ["+String(e)+"] "+O.call(S.call("[cause]: "+U(e.cause),ut),", ")+" }"}if("object"==typeof e&&u){if(D&&"function"==typeof e[D]&&M)return M(e,{depth:A-n});if("symbol"!==u&&"function"==typeof e.inspect)return e.inspect()}if(function(t){if(!i||!t||"object"!=typeof t)return!1;try{i.call(t);try{l.call(t)}catch(t){return!0}return t instanceof Map}catch(t){}return!1}(e)){var lt=[];return s&&s.call(e,function(t,r){lt.push(U(r,e,!0)+" => "+U(t,e))}),tt("Map",i.call(e),lt,L)}if(function(t){if(!l||!t||"object"!=typeof t)return!1;try{l.call(t);try{i.call(t)}catch(t){return!0}return t instanceof Set}catch(t){}return!1}(e)){var ct=[];return c&&c.call(e,function(t){ct.push(U(t,e))}),tt("Set",l.call(e),ct,L)}if(function(t){if(!f||!t||"object"!=typeof t)return!1;try{f.call(t,f);try{h.call(t,h)}catch(t){return!0}return t instanceof WeakMap}catch(t){}return!1}(e))return J("WeakMap");if(function(t){if(!h||!t||"object"!=typeof t)return!1;try{h.call(t,h);try{f.call(t,f)}catch(t){return!0}return t instanceof WeakSet}catch(t){}return!1}(e))return J("WeakSet");if(function(t){if(!p||!t||"object"!=typeof t)return!1;try{return p.call(t),!0}catch(t){}return!1}(e))return J("WeakRef");if(function(t){return"[object Number]"===K(t)&&H(t)}(e))return Q(U(Number(e)));if(function(t){if(!t||"object"!=typeof t||!T)return!1;try{return T.call(t),!0}catch(t){}return!1}(e))return Q(U(T.call(e)));if(function(t){return"[object Boolean]"===K(t)&&H(t)}(e))return Q(d.call(e));if(function(t){return"[object String]"===K(t)&&H(t)}(e))return Q(U(String(e)));if("undefined"!=typeof window&&e===window)return"{ [object Window] }";if("undefined"!=typeof globalThis&&e===globalThis||"undefined"!=typeof globalThis&&e===globalThis)return"{ [object globalThis] }";if(!function(t){return"[object Date]"===K(t)&&H(t)}(e)&&!B(e)){var ft=rt(e,U),ht=C?C(e)===Object.prototype:e instanceof Object||e.constructor===Object,pt=e instanceof Object?"":"null prototype",dt=!ht&&P&&Object(e)===e&&P in e?b.call(K(e),8,-1):pt?"Object":"",gt=(ht||"function"!=typeof e.constructor?"":e.constructor.name?e.constructor.name+" ":"")+(dt||pt?"["+O.call(S.call([],dt||[],pt||[]),": ")+"] ":"");return 0===ft.length?gt+"{}":L?gt+"{"+et(ft,L)+"}":gt+"{ "+O.call(ft,", ")+" }"}return String(e)};var G=Object.prototype.hasOwnProperty||function(t){return t in this};function z(t,e){return G.call(t,e)}function K(t){return g.call(t)}function X(t,e){if(t.indexOf)return t.indexOf(e);for(var r=0,n=t.length;re.maxStringLength){var r=t.length-e.maxStringLength,n="... "+r+" more character"+(r>1?"s":"");return Y(b.call(t,0,e.maxStringLength),e)+n}var o=U[e.quoteStyle||"single"];return o.lastIndex=0,q(v.call(v.call(t,o,"\\$1"),/[\x00-\x1f]/g,Z),"single",e)}function Z(t){var e=t.charCodeAt(0),r={8:"b",9:"t",10:"n",12:"f",13:"r"}[e];return r?"\\"+r:"\\x"+(e<16?"0":"")+w.call(e.toString(16))}function Q(t){return"Object("+t+")"}function J(t){return t+" { ? }"}function tt(t,e,r,n){return t+" ("+e+") {"+(n?et(r,n):O.call(r,", "))+"}"}function et(t,e){if(0===t.length)return"";var r="\n"+e.prev+e.base;return r+O.call(t,","+r)+"\n"+e.prev}function rt(t,e){var r=W(t),n=[];if(r){n.length=t.length;for(var o=0;o=-1&&!e;r--){var o=r>=0?arguments[r]:n.cwd();if(!i(o))throw new TypeError("Arguments to path.resolve must be strings");o&&(t=o+"/"+t,e="/"===o.charAt(0))}return(e?"/":"")+(t=s(t.split("/"),!e).join("/"))||"."},u.normalize=function(t){var e=u.isAbsolute(t),r="/"===t.substr(-1);return(t=s(t.split("/"),!e).join("/"))||e||(t="."),t&&r&&(t+="/"),(e?"/":"")+t},u.isAbsolute=function(t){return"/"===t.charAt(0)},u.join=function(){for(var t="",e=0;e=0&&""===t[r];r--);return e>r?[]:t.slice(e,r+1)}t=u.resolve(t).substr(1),e=u.resolve(e).substr(1);for(var n=r(t.split("/")),o=r(e.split("/")),i=Math.min(n.length,o.length),s=i,a=0;a= 0x80 (not a basic code point)","invalid-input":"Invalid input"},h=Math.floor,p=String.fromCharCode;function d(t){throw new RangeError(f[t])}function g(t,e){for(var r=t.length,n=[];r--;)n[r]=e(t[r]);return n}function y(t,e){var r=t.split("@"),n="";return r.length>1&&(n=r[0]+"@",t=r[1]),n+g((t=t.replace(c,".")).split("."),e).join(".")}function m(t){for(var e,r,n=[],o=0,i=t.length;o=55296&&e<=56319&&o65535&&(e+=p((t-=65536)>>>10&1023|55296),t=56320|1023&t),e+p(t)}).join("")}function v(t){return t-48<10?t-22:t-65<26?t-65:t-97<26?t-97:a}function w(t,e){return t+22+75*(t<26)-((0!=e)<<5)}function E(t,e,r){var n=0;for(t=r?h(t/700):t>>1,t+=h(t/e);t>455;n+=a)t=h(t/35);return h(n+36*t/(t+38))}function x(t){var e,r,n,o,i,u,l,c,f,p,g=[],y=t.length,m=0,w=128,x=72;for((r=t.lastIndexOf("-"))<0&&(r=0),n=0;n=128&&d("not-basic"),g.push(t.charCodeAt(n));for(o=r>0?r+1:0;o=y&&d("invalid-input"),((c=v(t.charCodeAt(o++)))>=a||c>h((s-m)/u))&&d("overflow"),m+=c*u,!(c<(f=l<=x?1:l>=x+26?26:l-x));l+=a)u>h(s/(p=a-f))&&d("overflow"),u*=p;x=E(m-i,e=g.length+1,0==i),h(m/e)>s-w&&d("overflow"),w+=h(m/e),m%=e,g.splice(m++,0,w)}return b(g)}function S(t){var e,r,n,o,i,u,l,c,f,g,y,b,v,x,S,O=[];for(b=(t=m(t)).length,e=128,r=0,i=72,u=0;u=e&&yh((s-r)/(v=n+1))&&d("overflow"),r+=(l-e)*v,e=l,u=0;us&&d("overflow"),y==e){for(c=r,f=a;!(c<(g=f<=i?1:f>=i+26?26:f-i));f+=a)S=c-g,x=a-g,O.push(p(w(g+S%x,0))),c=h(S/x);O.push(p(w(c,0))),i=E(r,v,n==o),r=0,++n}++r,++e}return O.join("")}i={version:"1.4.1",ucs2:{decode:m,encode:b},decode:x,encode:S,toASCII:function(t){return y(t,function(t){return l.test(t)?"xn--"+S(t):t})},toUnicode:function(t){return y(t,function(t){return u.test(t)?x(t.slice(4).toLowerCase()):t})}},void 0===(n=function(){return i}.call(e,r,e,t))||(t.exports=n)}()},74765(t){"use strict";var e=String.prototype.replace,r=/%20/g,n="RFC3986";t.exports={default:n,formatters:{RFC1738:function(t){return e.call(t,r,"+")},RFC3986:function(t){return String(t)}},RFC1738:"RFC1738",RFC3986:n}},55373(t,e,r){"use strict";var n=r(98636),o=r(62642),i=r(74765);t.exports={formats:i,parse:o,stringify:n}},62642(t,e,r){"use strict";var n=r(37720),o=Object.prototype.hasOwnProperty,i=Array.isArray,s={allowDots:!1,allowEmptyArrays:!1,allowPrototypes:!1,allowSparse:!1,arrayLimit:20,charset:"utf-8",charsetSentinel:!1,comma:!1,decodeDotInKeys:!1,decoder:n.decode,delimiter:"&",depth:5,duplicates:"combine",ignoreQueryPrefix:!1,interpretNumericEntities:!1,parameterLimit:1e3,parseArrays:!0,plainObjects:!1,strictDepth:!1,strictNullHandling:!1,throwOnLimitExceeded:!1},a=function(t){return t.replace(/&#(\d+);/g,function(t,e){return String.fromCharCode(parseInt(e,10))})},u=function(t,e,r){if(t&&"string"==typeof t&&e.comma&&t.indexOf(",")>-1)return t.split(",");if(e.throwOnLimitExceeded&&r>=e.arrayLimit)throw new RangeError("Array limit exceeded. Only "+e.arrayLimit+" element"+(1===e.arrayLimit?"":"s")+" allowed in an array.");return t},l=function(t,e,r,i){if(t){var s=function(t,e){var r=e.allowDots?t.replace(/\.([^.[]+)/g,"[$1]"):t;if(e.depth<=0){if(!e.plainObjects&&o.call(Object.prototype,r)&&!e.allowPrototypes)return;return[r]}var n=/(\[[^[\]]*])/g,i=/(\[[^[\]]*])/.exec(r),s=i?r.slice(0,i.index):r,a=[];if(s){if(!e.plainObjects&&o.call(Object.prototype,s)&&!e.allowPrototypes)return;a.push(s)}for(var u=0;null!==(i=n.exec(r))&&u0&&"[]"===t[t.length-1]){var s=t.slice(0,-1).join("");i=Array.isArray(e)&&e[s]?e[s].length:0}for(var a=o?e:u(e,r,i),l=t.length-1;l>=0;--l){var c,f=t[l];if("[]"===f&&r.parseArrays)c=n.isOverflow(a)?a:r.allowEmptyArrays&&(""===a||r.strictNullHandling&&null===a)?[]:n.combine([],a,r.arrayLimit,r.plainObjects);else{c=r.plainObjects?{__proto__:null}:{};var h="["===f.charAt(0)&&"]"===f.charAt(f.length-1)?f.slice(1,-1):f,p=r.decodeDotInKeys?h.replace(/%2E/g,"."):h,d=parseInt(p,10);r.parseArrays||""!==p?!isNaN(d)&&f!==p&&String(d)===p&&d>=0&&r.parseArrays&&d<=r.arrayLimit?(c=[])[d]=a:"__proto__"!==p&&(c[p]=a):c={0:a}}a=c}return a}(s,e,r,i)}};t.exports=function(t,e){var r=function(t){if(!t)return s;if(void 0!==t.allowEmptyArrays&&"boolean"!=typeof t.allowEmptyArrays)throw new TypeError("`allowEmptyArrays` option can only be `true` or `false`, when provided");if(void 0!==t.decodeDotInKeys&&"boolean"!=typeof t.decodeDotInKeys)throw new TypeError("`decodeDotInKeys` option can only be `true` or `false`, when provided");if(null!==t.decoder&&void 0!==t.decoder&&"function"!=typeof t.decoder)throw new TypeError("Decoder has to be a function.");if(void 0!==t.charset&&"utf-8"!==t.charset&&"iso-8859-1"!==t.charset)throw new TypeError("The charset option must be either utf-8, iso-8859-1, or undefined");if(void 0!==t.throwOnLimitExceeded&&"boolean"!=typeof t.throwOnLimitExceeded)throw new TypeError("`throwOnLimitExceeded` option must be a boolean");var e=void 0===t.charset?s.charset:t.charset,r=void 0===t.duplicates?s.duplicates:t.duplicates;if("combine"!==r&&"first"!==r&&"last"!==r)throw new TypeError("The duplicates option must be either combine, first, or last");return{allowDots:void 0===t.allowDots?!0===t.decodeDotInKeys||s.allowDots:!!t.allowDots,allowEmptyArrays:"boolean"==typeof t.allowEmptyArrays?!!t.allowEmptyArrays:s.allowEmptyArrays,allowPrototypes:"boolean"==typeof t.allowPrototypes?t.allowPrototypes:s.allowPrototypes,allowSparse:"boolean"==typeof t.allowSparse?t.allowSparse:s.allowSparse,arrayLimit:"number"==typeof t.arrayLimit?t.arrayLimit:s.arrayLimit,charset:e,charsetSentinel:"boolean"==typeof t.charsetSentinel?t.charsetSentinel:s.charsetSentinel,comma:"boolean"==typeof t.comma?t.comma:s.comma,decodeDotInKeys:"boolean"==typeof t.decodeDotInKeys?t.decodeDotInKeys:s.decodeDotInKeys,decoder:"function"==typeof t.decoder?t.decoder:s.decoder,delimiter:"string"==typeof t.delimiter||n.isRegExp(t.delimiter)?t.delimiter:s.delimiter,depth:"number"==typeof t.depth||!1===t.depth?+t.depth:s.depth,duplicates:r,ignoreQueryPrefix:!0===t.ignoreQueryPrefix,interpretNumericEntities:"boolean"==typeof t.interpretNumericEntities?t.interpretNumericEntities:s.interpretNumericEntities,parameterLimit:"number"==typeof t.parameterLimit?t.parameterLimit:s.parameterLimit,parseArrays:!1!==t.parseArrays,plainObjects:"boolean"==typeof t.plainObjects?t.plainObjects:s.plainObjects,strictDepth:"boolean"==typeof t.strictDepth?!!t.strictDepth:s.strictDepth,strictNullHandling:"boolean"==typeof t.strictNullHandling?t.strictNullHandling:s.strictNullHandling,throwOnLimitExceeded:"boolean"==typeof t.throwOnLimitExceeded&&t.throwOnLimitExceeded}}(e);if(""===t||null==t)return r.plainObjects?{__proto__:null}:{};for(var c="string"==typeof t?function(t,e){var r={__proto__:null},l=e.ignoreQueryPrefix?t.replace(/^\?/,""):t;l=l.replace(/%5B/gi,"[").replace(/%5D/gi,"]");var c=e.parameterLimit===1/0?void 0:e.parameterLimit,f=l.split(e.delimiter,e.throwOnLimitExceeded?c+1:c);if(e.throwOnLimitExceeded&&f.length>c)throw new RangeError("Parameter limit exceeded. Only "+c+" parameter"+(1===c?"":"s")+" allowed.");var h,p=-1,d=e.charset;if(e.charsetSentinel)for(h=0;h-1&&(y=i(y)?[y]:y),null!==g){var w=o.call(r,g);w&&"combine"===e.duplicates?r[g]=n.combine(r[g],y,e.arrayLimit,e.plainObjects):w&&"last"!==e.duplicates||(r[g]=y)}}return r}(t,r):t,f=r.plainObjects?{__proto__:null}:{},h=Object.keys(c),p=0;p0?A.join(",")||null:void 0}];else if(u(y))P=y;else{var C=Object.keys(A);P=m?C.sort(m):C}var I=h?String(r).replace(/\./g,"%2E"):String(r),M=s&&u(A)&&1===A.length?I+"[]":I;if(a&&u(A)&&0===A.length)return M+"[]";for(var L=0;L0?E+w:""}},37720(t,e,r){"use strict";var n=r(74765),o=r(920),i=Object.prototype.hasOwnProperty,s=Array.isArray,a=o(),u=function(t,e){return a.set(t,e),t},l=function(t){return a.has(t)},c=function(t){return a.get(t)},f=function(t,e){a.set(t,e)},h=function(){for(var t=[],e=0;e<256;++e)t.push("%"+((e<16?"0":"")+e.toString(16)).toUpperCase());return t}(),p=function(t,e){for(var r=e&&e.plainObjects?{__proto__:null}:{},n=0;nr?u(p(i,{plainObjects:n}),i.length-1):i},compact:function(t){for(var e=[{obj:{o:t},prop:"o"}],r=[],n=0;n1;){var e=t.pop(),r=e.obj[e.prop];if(s(r)){for(var n=[],o=0;o=d?s.slice(u,u+d):s,c=[],f=0;f=48&&p<=57||p>=65&&p<=90||p>=97&&p<=122||i===n.RFC1738&&(40===p||41===p)?c[c.length]=l.charAt(f):p<128?c[c.length]=h[p]:p<2048?c[c.length]=h[192|p>>6]+h[128|63&p]:p<55296||p>=57344?c[c.length]=h[224|p>>12]+h[128|p>>6&63]+h[128|63&p]:(f+=1,p=65536+((1023&p)<<10|1023&l.charCodeAt(f)),c[c.length]=h[240|p>>18]+h[128|p>>12&63]+h[128|p>>6&63]+h[128|63&p])}a+=c.join("")}return a},isBuffer:function(t){return!(!t||"object"!=typeof t||!(t.constructor&&t.constructor.isBuffer&&t.constructor.isBuffer(t)))},isOverflow:l,isRegExp:function(t){return"[object RegExp]"===Object.prototype.toString.call(t)},maybeMap:function(t,e){if(s(t)){for(var r=[],n=0;ne._pos){var i=n.substr(e._pos);if("x-user-defined"===e._charset){for(var s=o.alloc(i.length),a=0;ae._pos&&(e.push(o.from(new Uint8Array(l.result.slice(e._pos)))),e._pos=l.result.byteLength)},l.onload=function(){t(!0),e.push(null)},l.readAsArrayBuffer(n)}e._xhr.readyState===u.DONE&&"ms-stream"!==e._mode&&(t(!0),e.push(null))}},73157(t){"use strict";var e={};function r(t,r,n){n||(n=Error);var o=function(t){var e,n;function o(e,n,o){return t.call(this,function(t,e,n){return"string"==typeof r?r:r(t,e,n)}(e,n,o))||this}return n=t,(e=o).prototype=Object.create(n.prototype),e.prototype.constructor=e,e.__proto__=n,o}(n);o.prototype.name=n.name,o.prototype.code=t,e[t]=o}function n(t,e){if(Array.isArray(t)){var r=t.length;return t=t.map(function(t){return String(t)}),r>2?"one of ".concat(e," ").concat(t.slice(0,r-1).join(", "),", or ")+t[r-1]:2===r?"one of ".concat(e," ").concat(t[0]," or ").concat(t[1]):"of ".concat(e," ").concat(t[0])}return"of ".concat(e," ").concat(String(t))}r("ERR_INVALID_OPT_VALUE",function(t,e){return'The value "'+e+'" is invalid for option "'+t+'"'},TypeError),r("ERR_INVALID_ARG_TYPE",function(t,e,r){var o,i,s,a,u;if("string"==typeof e&&(i="not ",e.substr(0,4)===i)?(o="must not be",e=e.replace(/^not /,"")):o="must be",function(t,e,r){return(void 0===r||r>t.length)&&(r=t.length),t.substring(r-9,r)===e}(t," argument"))s="The ".concat(t," ").concat(o," ").concat(n(e,"type"));else{var l=("number"!=typeof u&&(u=0),u+1>(a=t).length||-1===a.indexOf(".",u)?"argument":"property");s='The "'.concat(t,'" ').concat(l," ").concat(o," ").concat(n(e,"type"))}return s+". Received type ".concat(typeof r)},TypeError),r("ERR_STREAM_PUSH_AFTER_EOF","stream.push() after EOF"),r("ERR_METHOD_NOT_IMPLEMENTED",function(t){return"The "+t+" method is not implemented"}),r("ERR_STREAM_PREMATURE_CLOSE","Premature close"),r("ERR_STREAM_DESTROYED",function(t){return"Cannot call "+t+" after a stream was destroyed"}),r("ERR_MULTIPLE_CALLBACK","Callback called multiple times"),r("ERR_STREAM_CANNOT_PIPE","Cannot pipe, not readable"),r("ERR_STREAM_WRITE_AFTER_END","write after end"),r("ERR_STREAM_NULL_VALUES","May not write null values to stream",TypeError),r("ERR_UNKNOWN_ENCODING",function(t){return"Unknown encoding: "+t},TypeError),r("ERR_STREAM_UNSHIFT_AFTER_END_EVENT","stream.unshift() after end event"),t.exports.F=e},63527(t,e,r){"use strict";var n=r(65606),o=Object.keys||function(t){var e=[];for(var r in t)e.push(r);return e};t.exports=c;var i=r(52341),s=r(9573);r(56698)(c,i);for(var a=o(s.prototype),u=0;u0)if("string"==typeof e||a.objectMode||Object.getPrototypeOf(e)===u.prototype||(e=function(t){return u.from(t)}(e)),n)a.endEmitted?x(t,new E):T(t,a,e,!0);else if(a.ended)x(t,new v);else{if(a.destroyed)return!1;a.reading=!1,a.decoder&&!r?(e=a.decoder.write(e),a.objectMode||0!==e.length?T(t,a,e,!1):k(t,a)):T(t,a,e,!1)}else n||(a.reading=!1,k(t,a));return!a.ended&&(a.lengthe.highWaterMark&&(e.highWaterMark=function(t){return t>=j?t=j:(t--,t|=t>>>1,t|=t>>>2,t|=t>>>4,t|=t>>>8,t|=t>>>16,t++),t}(t)),t<=e.length?t:e.ended?e.length:(e.needReadable=!0,0))}function R(t){var e=t._readableState;i("emitReadable",e.needReadable,e.emittedReadable),e.needReadable=!1,e.emittedReadable||(i("emitReadable",e.flowing),e.emittedReadable=!0,o.nextTick(P,t))}function P(t){var e=t._readableState;i("emitReadable_",e.destroyed,e.length,e.ended),e.destroyed||!e.length&&!e.ended||(t.emit("readable"),e.emittedReadable=!1),e.needReadable=!e.flowing&&!e.ended&&e.length<=e.highWaterMark,D(t)}function k(t,e){e.readingMore||(e.readingMore=!0,o.nextTick(C,t,e))}function C(t,e){for(;!e.reading&&!e.ended&&(e.length0,e.resumeScheduled&&!e.paused?e.flowing=!0:t.listenerCount("data")>0&&t.resume()}function M(t){i("readable nexttick read 0"),t.read(0)}function L(t,e){i("resume",e.reading),e.reading||t.read(0),e.resumeScheduled=!1,t.emit("resume"),D(t),e.flowing&&!e.reading&&t.read(0)}function D(t){var e=t._readableState;for(i("flow",e.flowing);e.flowing&&null!==t.read(););}function $(t,e){return 0===e.length?null:(e.objectMode?r=e.buffer.shift():!t||t>=e.length?(r=e.decoder?e.buffer.join(""):1===e.buffer.length?e.buffer.first():e.buffer.concat(e.length),e.buffer.clear()):r=e.buffer.consume(t,e.decoder),r);var r}function U(t){var e=t._readableState;i("endReadable",e.endEmitted),e.endEmitted||(e.ended=!0,o.nextTick(q,e,t))}function q(t,e){if(i("endReadableNT",t.endEmitted,t.length),!t.endEmitted&&0===t.length&&(t.endEmitted=!0,e.readable=!1,e.emit("end"),t.autoDestroy)){var r=e._writableState;(!r||r.autoDestroy&&r.finished)&&e.destroy()}}function F(t,e){for(var r=0,n=t.length;r=e.highWaterMark:e.length>0)||e.ended))return i("read: emitReadable",e.length,e.ended),0===e.length&&e.ended?U(this):R(this),null;if(0===(t=N(t,e))&&e.ended)return 0===e.length&&U(this),null;var n,o=e.needReadable;return i("need readable",o),(0===e.length||e.length-t0?$(t,e):null)?(e.needReadable=e.length<=e.highWaterMark,t=0):(e.length-=t,e.awaitDrain=0),0===e.length&&(e.ended||(e.needReadable=!0),r!==t&&e.ended&&U(this)),null!==n&&this.emit("data",n),n},_.prototype._read=function(t){x(this,new w("_read()"))},_.prototype.pipe=function(t,e){var r=this,n=this._readableState;switch(n.pipesCount){case 0:n.pipes=t;break;case 1:n.pipes=[n.pipes,t];break;default:n.pipes.push(t)}n.pipesCount+=1,i("pipe count=%d opts=%j",n.pipesCount,e);var a=e&&!1===e.end||t===o.stdout||t===o.stderr?g:u;function u(){i("onend"),t.end()}n.endEmitted?o.nextTick(a):r.once("end",a),t.on("unpipe",function e(o,s){i("onunpipe"),o===r&&s&&!1===s.hasUnpiped&&(s.hasUnpiped=!0,i("cleanup"),t.removeListener("close",p),t.removeListener("finish",d),t.removeListener("drain",l),t.removeListener("error",h),t.removeListener("unpipe",e),r.removeListener("end",u),r.removeListener("end",g),r.removeListener("data",f),c=!0,!n.awaitDrain||t._writableState&&!t._writableState.needDrain||l())});var l=function(t){return function(){var e=t._readableState;i("pipeOnDrain",e.awaitDrain),e.awaitDrain&&e.awaitDrain--,0===e.awaitDrain&&s(t,"data")&&(e.flowing=!0,D(t))}}(r);t.on("drain",l);var c=!1;function f(e){i("ondata");var o=t.write(e);i("dest.write",o),!1===o&&((1===n.pipesCount&&n.pipes===t||n.pipesCount>1&&-1!==F(n.pipes,t))&&!c&&(i("false write response, pause",n.awaitDrain),n.awaitDrain++),r.pause())}function h(e){i("onerror",e),g(),t.removeListener("error",h),0===s(t,"error")&&x(t,e)}function p(){t.removeListener("finish",d),g()}function d(){i("onfinish"),t.removeListener("close",p),g()}function g(){i("unpipe"),r.unpipe(t)}return r.on("data",f),function(t,e,r){if("function"==typeof t.prependListener)return t.prependListener(e,r);t._events&&t._events[e]?Array.isArray(t._events[e])?t._events[e].unshift(r):t._events[e]=[r,t._events[e]]:t.on(e,r)}(t,"error",h),t.once("close",p),t.once("finish",d),t.emit("pipe",r),n.flowing||(i("pipe resume"),r.resume()),t},_.prototype.unpipe=function(t){var e=this._readableState,r={hasUnpiped:!1};if(0===e.pipesCount)return this;if(1===e.pipesCount)return t&&t!==e.pipes||(t||(t=e.pipes),e.pipes=null,e.pipesCount=0,e.flowing=!1,t&&t.emit("unpipe",this,r)),this;if(!t){var n=e.pipes,o=e.pipesCount;e.pipes=null,e.pipesCount=0,e.flowing=!1;for(var i=0;i0,!1!==n.flowing&&this.resume()):"readable"===t&&(n.endEmitted||n.readableListening||(n.readableListening=n.needReadable=!0,n.flowing=!1,n.emittedReadable=!1,i("on readable",n.length,n.reading),n.length?R(this):n.reading||o.nextTick(M,this))),r},_.prototype.addListener=_.prototype.on,_.prototype.removeListener=function(t,e){var r=a.prototype.removeListener.call(this,t,e);return"readable"===t&&o.nextTick(I,this),r},_.prototype.removeAllListeners=function(t){var e=a.prototype.removeAllListeners.apply(this,arguments);return"readable"!==t&&void 0!==t||o.nextTick(I,this),e},_.prototype.resume=function(){var t=this._readableState;return t.flowing||(i("resume"),t.flowing=!t.readableListening,function(t,e){e.resumeScheduled||(e.resumeScheduled=!0,o.nextTick(L,t,e))}(this,t)),t.paused=!1,this},_.prototype.pause=function(){return i("call pause flowing=%j",this._readableState.flowing),!1!==this._readableState.flowing&&(i("pause"),this._readableState.flowing=!1,this.emit("pause")),this._readableState.paused=!0,this},_.prototype.wrap=function(t){var e=this,r=this._readableState,n=!1;for(var o in t.on("end",function(){if(i("wrapped end"),r.decoder&&!r.ended){var t=r.decoder.end();t&&t.length&&e.push(t)}e.push(null)}),t.on("data",function(o){i("wrapped data"),r.decoder&&(o=r.decoder.write(o)),r.objectMode&&null==o||(r.objectMode||o&&o.length)&&(e.push(o)||(n=!0,t.pause()))}),t)void 0===this[o]&&"function"==typeof t[o]&&(this[o]=function(e){return function(){return t[e].apply(t,arguments)}}(o));for(var s=0;s-1))throw new E(t);return this._writableState.defaultEncoding=t,this},Object.defineProperty(_.prototype,"writableBuffer",{enumerable:!1,get:function(){return this._writableState&&this._writableState.getBuffer()}}),Object.defineProperty(_.prototype,"writableHighWaterMark",{enumerable:!1,get:function(){return this._writableState.highWaterMark}}),_.prototype._write=function(t,e,r){r(new g("_write()"))},_.prototype._writev=null,_.prototype.end=function(t,e,r){var n=this._writableState;return"function"==typeof t?(r=t,t=null,e=null):"function"==typeof e&&(r=e,e=null),null!=t&&this.write(t,e),n.corked&&(n.corked=1,this.uncork()),n.ending||function(t,e,r){e.ending=!0,P(t,e),r&&(e.finished?o.nextTick(r):t.once("finish",r)),e.ended=!0,t.writable=!1}(this,n,r),this},Object.defineProperty(_.prototype,"writableLength",{enumerable:!1,get:function(){return this._writableState.length}}),Object.defineProperty(_.prototype,"destroyed",{enumerable:!1,get:function(){return void 0!==this._writableState&&this._writableState.destroyed},set:function(t){this._writableState&&(this._writableState.destroyed=t)}}),_.prototype.destroy=f.destroy,_.prototype._undestroy=f.undestroy,_.prototype._destroy=function(t,e){e(t)}},17356(t,e,r){"use strict";var n,o=r(65606);function i(t,e,r){return(e=function(t){var e=function(t){if("object"!=typeof t||null===t)return t;var e=t[Symbol.toPrimitive];if(void 0!==e){var r=e.call(t,"string");if("object"!=typeof r)return r;throw new TypeError("@@toPrimitive must return a primitive value.")}return String(t)}(t);return"symbol"==typeof e?e:String(e)}(e))in t?Object.defineProperty(t,e,{value:r,enumerable:!0,configurable:!0,writable:!0}):t[e]=r,t}var s=r(19959),a=Symbol("lastResolve"),u=Symbol("lastReject"),l=Symbol("error"),c=Symbol("ended"),f=Symbol("lastPromise"),h=Symbol("handlePromise"),p=Symbol("stream");function d(t,e){return{value:t,done:e}}function g(t){var e=t[a];if(null!==e){var r=t[p].read();null!==r&&(t[f]=null,t[a]=null,t[u]=null,e(d(r,!1)))}}function y(t){o.nextTick(g,t)}var m=Object.getPrototypeOf(function(){}),b=Object.setPrototypeOf((i(n={get stream(){return this[p]},next:function(){var t=this,e=this[l];if(null!==e)return Promise.reject(e);if(this[c])return Promise.resolve(d(void 0,!0));if(this[p].destroyed)return new Promise(function(e,r){o.nextTick(function(){t[l]?r(t[l]):e(d(void 0,!0))})});var r,n=this[f];if(n)r=new Promise(function(t,e){return function(r,n){t.then(function(){e[c]?r(d(void 0,!0)):e[h](r,n)},n)}}(n,this));else{var i=this[p].read();if(null!==i)return Promise.resolve(d(i,!1));r=new Promise(this[h])}return this[f]=r,r}},Symbol.asyncIterator,function(){return this}),i(n,"return",function(){var t=this;return new Promise(function(e,r){t[p].destroy(null,function(t){t?r(t):e(d(void 0,!0))})})}),n),m);t.exports=function(t){var e,r=Object.create(b,(i(e={},p,{value:t,writable:!0}),i(e,a,{value:null,writable:!0}),i(e,u,{value:null,writable:!0}),i(e,l,{value:null,writable:!0}),i(e,c,{value:t._readableState.endEmitted,writable:!0}),i(e,h,{value:function(t,e){var n=r[p].read();n?(r[f]=null,r[a]=null,r[u]=null,t(d(n,!1))):(r[a]=t,r[u]=e)},writable:!0}),e));return r[f]=null,s(t,function(t){if(t&&"ERR_STREAM_PREMATURE_CLOSE"!==t.code){var e=r[u];return null!==e&&(r[f]=null,r[a]=null,r[u]=null,e(t)),void(r[l]=t)}var n=r[a];null!==n&&(r[f]=null,r[a]=null,r[u]=null,n(d(void 0,!0))),r[c]=!0}),t.on("readable",y.bind(null,r)),r}},10272(t,e,r){"use strict";function n(t,e){var r=Object.keys(t);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(t);e&&(n=n.filter(function(e){return Object.getOwnPropertyDescriptor(t,e).enumerable})),r.push.apply(r,n)}return r}function o(t){for(var e=1;e0?this.tail.next=e:this.head=e,this.tail=e,++this.length}},{key:"unshift",value:function(t){var e={data:t,next:this.head};0===this.length&&(this.tail=e),this.head=e,++this.length}},{key:"shift",value:function(){if(0!==this.length){var t=this.head.data;return 1===this.length?this.head=this.tail=null:this.head=this.head.next,--this.length,t}}},{key:"clear",value:function(){this.head=this.tail=null,this.length=0}},{key:"join",value:function(t){if(0===this.length)return"";for(var e=this.head,r=""+e.data;e=e.next;)r+=t+e.data;return r}},{key:"concat",value:function(t){if(0===this.length)return u.alloc(0);for(var e=u.allocUnsafe(t>>>0),r=this.head,n=0;r;)f(r.data,e,n),n+=r.data.length,r=r.next;return e}},{key:"consume",value:function(t,e){var r;return to.length?o.length:t;if(i===o.length?n+=o:n+=o.slice(0,t),0===(t-=i)){i===o.length?(++r,e.next?this.head=e.next:this.head=this.tail=null):(this.head=e,e.data=o.slice(i));break}++r}return this.length-=r,n}},{key:"_getBuffer",value:function(t){var e=u.allocUnsafe(t),r=this.head,n=1;for(r.data.copy(e),t-=r.data.length;r=r.next;){var o=r.data,i=t>o.length?o.length:t;if(o.copy(e,e.length-t,0,i),0===(t-=i)){i===o.length?(++n,r.next?this.head=r.next:this.head=this.tail=null):(this.head=r,r.data=o.slice(i));break}++n}return this.length-=n,e}},{key:c,value:function(t,e){return l(this,o(o({},e),{},{depth:0,customInspect:!1}))}}])&&s(e.prototype,r),Object.defineProperty(e,"prototype",{writable:!1}),t}()},16057(t,e,r){"use strict";var n=r(65606);function o(t,e){s(t,e),i(t)}function i(t){t._writableState&&!t._writableState.emitClose||t._readableState&&!t._readableState.emitClose||t.emit("close")}function s(t,e){t.emit("error",e)}t.exports={destroy:function(t,e){var r=this,a=this._readableState&&this._readableState.destroyed,u=this._writableState&&this._writableState.destroyed;return a||u?(e?e(t):t&&(this._writableState?this._writableState.errorEmitted||(this._writableState.errorEmitted=!0,n.nextTick(s,this,t)):n.nextTick(s,this,t)),this):(this._readableState&&(this._readableState.destroyed=!0),this._writableState&&(this._writableState.destroyed=!0),this._destroy(t||null,function(t){!e&&t?r._writableState?r._writableState.errorEmitted?n.nextTick(i,r):(r._writableState.errorEmitted=!0,n.nextTick(o,r,t)):n.nextTick(o,r,t):e?(n.nextTick(i,r),e(t)):n.nextTick(i,r)}),this)},undestroy:function(){this._readableState&&(this._readableState.destroyed=!1,this._readableState.reading=!1,this._readableState.ended=!1,this._readableState.endEmitted=!1),this._writableState&&(this._writableState.destroyed=!1,this._writableState.ended=!1,this._writableState.ending=!1,this._writableState.finalCalled=!1,this._writableState.prefinished=!1,this._writableState.finished=!1,this._writableState.errorEmitted=!1)},errorOrDestroy:function(t,e){var r=t._readableState,n=t._writableState;r&&r.autoDestroy||n&&n.autoDestroy?t.destroy(e):t.emit("error",e)}}},19959(t,e,r){"use strict";var n=r(73157).F.ERR_STREAM_PREMATURE_CLOSE;function o(){}t.exports=function t(e,r,i){if("function"==typeof r)return t(e,null,r);r||(r={}),i=function(t){var e=!1;return function(){if(!e){e=!0;for(var r=arguments.length,n=new Array(r),o=0;o0,function(t){c||(c=t),t&&h.forEach(u),i||(h.forEach(u),f(c))})});return e.reduce(l)}},11922(t,e,r){"use strict";var n=r(73157).F.ERR_INVALID_OPT_VALUE;t.exports={getHighWaterMark:function(t,e,r,o){var i=function(t,e,r){return null!=t.highWaterMark?t.highWaterMark:e?t[r]:null}(e,o,r);if(null!=i){if(!isFinite(i)||Math.floor(i)!==i||i<0)throw new n(o?r:"highWaterMark",i);return Math.floor(i)}return t.objectMode?16:16384}}},81914(t,e,r){t.exports=r(37007).EventEmitter},63242(t,e,r){(e=t.exports=r(52341)).Stream=e,e.Readable=e,e.Writable=r(9573),e.Duplex=r(63527),e.Transform=r(95689),e.PassThrough=r(82571),e.finished=r(19959),e.pipeline=r(37413)},61160(t,e,r){"use strict";var n=r(92063),o=r(73992),i=/^[\x00-\x20\u00a0\u1680\u2000-\u200a\u2028\u2029\u202f\u205f\u3000\ufeff]+/,s=/[\n\r\t]/g,a=/^[A-Za-z][A-Za-z0-9+-.]*:\/\//,u=/:\d+$/,l=/^([a-z][a-z0-9.+-]*:)?(\/\/)?([\\/]+)?([\S\s]*)/i,c=/^[a-zA-Z]:/;function f(t){return(t||"").toString().replace(i,"")}var h=[["#","hash"],["?","query"],function(t,e){return g(e.protocol)?t.replace(/\\/g,"/"):t},["/","pathname"],["@","auth",1],[NaN,"host",void 0,1,1],[/:(\d*)$/,"port",void 0,1],[NaN,"hostname",void 0,1,1]],p={hash:1,query:1};function d(t){var e,r=("undefined"!=typeof window?window:"undefined"!=typeof globalThis?globalThis:"undefined"!=typeof self?self:{}).location||{},n={},o=typeof(t=t||r);if("blob:"===t.protocol)n=new m(unescape(t.pathname),{});else if("string"===o)for(e in n=new m(t,{}),p)delete n[e];else if("object"===o){for(e in t)e in p||(n[e]=t[e]);void 0===n.slashes&&(n.slashes=a.test(t.href))}return n}function g(t){return"file:"===t||"ftp:"===t||"http:"===t||"https:"===t||"ws:"===t||"wss:"===t}function y(t,e){t=(t=f(t)).replace(s,""),e=e||{};var r,n=l.exec(t),o=n[1]?n[1].toLowerCase():"",i=!!n[2],a=!!n[3],u=0;return i?a?(r=n[2]+n[3]+n[4],u=n[2].length+n[3].length):(r=n[2]+n[4],u=n[2].length):a?(r=n[3]+n[4],u=n[3].length):r=n[4],"file:"===o?u>=2&&(r=r.slice(2)):g(o)?r=n[4]:o?i&&(r=r.slice(2)):u>=2&&g(e.protocol)&&(r=n[4]),{protocol:o,slashes:i||g(o),slashesCount:u,rest:r}}function m(t,e,r){if(t=(t=f(t)).replace(s,""),!(this instanceof m))return new m(t,e,r);var i,a,u,l,p,b,v=h.slice(),w=typeof e,E=this,x=0;for("object"!==w&&"string"!==w&&(r=e,e=null),r&&"function"!=typeof r&&(r=o.parse),i=!(a=y(t||"",e=d(e))).protocol&&!a.slashes,E.slashes=a.slashes||i&&e.slashes,E.protocol=a.protocol||e.protocol||"",t=a.rest,("file:"===a.protocol&&(2!==a.slashesCount||c.test(t))||!a.slashes&&(a.protocol||a.slashesCount<2||!g(E.protocol)))&&(v[3]=[/(.*)/,"pathname"]);x",'"',"`"," ","\r","\n","\t"]),l=["'"].concat(u),c=["%","/","?",";","#"].concat(l),f=["/","?","#"],h=/^[+a-z0-9A-Z_-]{0,63}$/,p=/^([+a-z0-9A-Z_-]{0,63})(.*)$/,d={javascript:!0,"javascript:":!0},g={javascript:!0,"javascript:":!0},y={http:!0,https:!0,ftp:!0,gopher:!0,file:!0,"http:":!0,"https:":!0,"ftp:":!0,"gopher:":!0,"file:":!0},m=r(55373);function b(t,e,r){if(t&&"object"==typeof t&&t instanceof o)return t;var n=new o;return n.parse(t,e,r),n}o.prototype.parse=function(t,e,r){if("string"!=typeof t)throw new TypeError("Parameter 'url' must be a string, not "+typeof t);var o=t.indexOf("?"),s=-1!==o&&o127?k+="x":k+=P[C];if(!k.match(h)){var M=N.slice(0,A),L=N.slice(A+1),D=P.match(p);D&&(M.push(D[1]),L.unshift(D[2])),L.length&&(b="/"+L.join(".")+b),this.hostname=M.join(".");break}}}this.hostname.length>255?this.hostname="":this.hostname=this.hostname.toLowerCase(),j||(this.hostname=n.toASCII(this.hostname));var $=this.port?":"+this.port:"",U=this.hostname||"";this.host=U+$,this.href+=this.host,j&&(this.hostname=this.hostname.substr(1,this.hostname.length-2),"/"!==b[0]&&(b="/"+b))}if(!d[E])for(A=0,R=l.length;A0)&&r.host.split("@"))&&(r.auth=j.shift(),r.hostname=j.shift(),r.host=r.hostname)),r.search=t.search,r.query=t.query,null===r.pathname&&null===r.search||(r.path=(r.pathname?r.pathname:"")+(r.search?r.search:"")),r.href=r.format(),r;if(!x.length)return r.pathname=null,r.search?r.path="/"+r.search:r.path=null,r.href=r.format(),r;for(var O=x.slice(-1)[0],_=(r.host||t.host||x.length>1)&&("."===O||".."===O)||""===O,A=0,T=x.length;T>=0;T--)"."===(O=x[T])?x.splice(T,1):".."===O?(x.splice(T,1),A++):A&&(x.splice(T,1),A--);if(!w&&!E)for(;A--;A)x.unshift("..");!w||""===x[0]||x[0]&&"/"===x[0].charAt(0)||x.unshift(""),_&&"/"!==x.join("/").substr(-1)&&x.push("");var j,N=""===x[0]||x[0]&&"/"===x[0].charAt(0);return S&&(r.hostname=N?"":x.length?x.shift():"",r.host=r.hostname,(j=!!(r.host&&r.host.indexOf("@")>0)&&r.host.split("@"))&&(r.auth=j.shift(),r.hostname=j.shift(),r.host=r.hostname)),(w=w||r.host&&x.length)&&!N&&x.unshift(""),x.length>0?r.pathname=x.join("/"):(r.pathname=null,r.path=null),null===r.pathname&&null===r.search||(r.path=(r.pathname?r.pathname:"")+(r.search?r.search:"")),r.auth=t.auth||r.auth,r.slashes=r.slashes||t.slashes,r.href=r.format(),r},o.prototype.parseHost=function(){var t=this.host,e=s.exec(t);e&&(":"!==(e=e[0])&&(this.port=e.substr(1)),t=t.substr(0,t.length-e.length)),t&&(this.hostname=t)},e.parse=b,e.resolve=function(t,e){return b(t,!1,!0).resolve(e)},e.resolveObject=function(t,e){return t?b(t,!1,!0).resolveObject(e):e},e.format=function(t){return"string"==typeof t&&(t=b(t)),t instanceof o?t.format():o.prototype.format.call(t)},e.Url=o},81135(t){t.exports=function(t){return t&&"object"==typeof t&&"function"==typeof t.copy&&"function"==typeof t.fill&&"function"==typeof t.readUInt8}},49032(t,e,r){"use strict";var n=r(47244),o=r(48184),i=r(25767),s=r(35680);function a(t){return t.call.bind(t)}var u="undefined"!=typeof BigInt,l="undefined"!=typeof Symbol,c=a(Object.prototype.toString),f=a(Number.prototype.valueOf),h=a(String.prototype.valueOf),p=a(Boolean.prototype.valueOf);if(u)var d=a(BigInt.prototype.valueOf);if(l)var g=a(Symbol.prototype.valueOf);function y(t,e){if("object"!=typeof t)return!1;try{return e(t),!0}catch(t){return!1}}function m(t){return"[object Map]"===c(t)}function b(t){return"[object Set]"===c(t)}function v(t){return"[object WeakMap]"===c(t)}function w(t){return"[object WeakSet]"===c(t)}function E(t){return"[object ArrayBuffer]"===c(t)}function x(t){return"undefined"!=typeof ArrayBuffer&&(E.working?E(t):t instanceof ArrayBuffer)}function S(t){return"[object DataView]"===c(t)}function O(t){return"undefined"!=typeof DataView&&(S.working?S(t):t instanceof DataView)}e.isArgumentsObject=n,e.isGeneratorFunction=o,e.isTypedArray=s,e.isPromise=function(t){return"undefined"!=typeof Promise&&t instanceof Promise||null!==t&&"object"==typeof t&&"function"==typeof t.then&&"function"==typeof t.catch},e.isArrayBufferView=function(t){return"undefined"!=typeof ArrayBuffer&&ArrayBuffer.isView?ArrayBuffer.isView(t):s(t)||O(t)},e.isUint8Array=function(t){return"Uint8Array"===i(t)},e.isUint8ClampedArray=function(t){return"Uint8ClampedArray"===i(t)},e.isUint16Array=function(t){return"Uint16Array"===i(t)},e.isUint32Array=function(t){return"Uint32Array"===i(t)},e.isInt8Array=function(t){return"Int8Array"===i(t)},e.isInt16Array=function(t){return"Int16Array"===i(t)},e.isInt32Array=function(t){return"Int32Array"===i(t)},e.isFloat32Array=function(t){return"Float32Array"===i(t)},e.isFloat64Array=function(t){return"Float64Array"===i(t)},e.isBigInt64Array=function(t){return"BigInt64Array"===i(t)},e.isBigUint64Array=function(t){return"BigUint64Array"===i(t)},m.working="undefined"!=typeof Map&&m(new Map),e.isMap=function(t){return"undefined"!=typeof Map&&(m.working?m(t):t instanceof Map)},b.working="undefined"!=typeof Set&&b(new Set),e.isSet=function(t){return"undefined"!=typeof Set&&(b.working?b(t):t instanceof Set)},v.working="undefined"!=typeof WeakMap&&v(new WeakMap),e.isWeakMap=function(t){return"undefined"!=typeof WeakMap&&(v.working?v(t):t instanceof WeakMap)},w.working="undefined"!=typeof WeakSet&&w(new WeakSet),e.isWeakSet=function(t){return w(t)},E.working="undefined"!=typeof ArrayBuffer&&E(new ArrayBuffer),e.isArrayBuffer=x,S.working="undefined"!=typeof ArrayBuffer&&"undefined"!=typeof DataView&&S(new DataView(new ArrayBuffer(1),0,1)),e.isDataView=O;var _="undefined"!=typeof SharedArrayBuffer?SharedArrayBuffer:void 0;function A(t){return"[object SharedArrayBuffer]"===c(t)}function T(t){return void 0!==_&&(void 0===A.working&&(A.working=A(new _)),A.working?A(t):t instanceof _)}function j(t){return y(t,f)}function N(t){return y(t,h)}function R(t){return y(t,p)}function P(t){return u&&y(t,d)}function k(t){return l&&y(t,g)}e.isSharedArrayBuffer=T,e.isAsyncFunction=function(t){return"[object AsyncFunction]"===c(t)},e.isMapIterator=function(t){return"[object Map Iterator]"===c(t)},e.isSetIterator=function(t){return"[object Set Iterator]"===c(t)},e.isGeneratorObject=function(t){return"[object Generator]"===c(t)},e.isWebAssemblyCompiledModule=function(t){return"[object WebAssembly.Module]"===c(t)},e.isNumberObject=j,e.isStringObject=N,e.isBooleanObject=R,e.isBigIntObject=P,e.isSymbolObject=k,e.isBoxedPrimitive=function(t){return j(t)||N(t)||R(t)||P(t)||k(t)},e.isAnyArrayBuffer=function(t){return"undefined"!=typeof Uint8Array&&(x(t)||T(t))},["isProxy","isExternal","isModuleNamespaceObject"].forEach(function(t){Object.defineProperty(e,t,{enumerable:!1,value:function(){throw new Error(t+" is not supported in userland")}})})},40537(t,e,r){var n=r(65606),o=Object.getOwnPropertyDescriptors||function(t){for(var e=Object.keys(t),r={},n=0;n=o)return t;switch(t){case"%s":return String(n[r++]);case"%d":return Number(n[r++]);case"%j":try{return JSON.stringify(n[r++])}catch(t){return"[Circular]"}default:return t}}),a=n[r];r=3&&(n.depth=arguments[2]),arguments.length>=4&&(n.colors=arguments[3]),y(r)?n.showHidden=r:r&&e._extend(n,r),w(n.showHidden)&&(n.showHidden=!1),w(n.depth)&&(n.depth=2),w(n.colors)&&(n.colors=!1),w(n.customInspect)&&(n.customInspect=!0),n.colors&&(n.stylize=c),h(n,t,n.depth)}function c(t,e){var r=l.styles[e];return r?"["+l.colors[r][0]+"m"+t+"["+l.colors[r][1]+"m":t}function f(t,e){return t}function h(t,r,n){if(t.customInspect&&r&&_(r.inspect)&&r.inspect!==e.inspect&&(!r.constructor||r.constructor.prototype!==r)){var o=r.inspect(n,t);return v(o)||(o=h(t,o,n)),o}var i=function(t,e){if(w(e))return t.stylize("undefined","undefined");if(v(e)){var r="'"+JSON.stringify(e).replace(/^"|"$/g,"").replace(/'/g,"\\'").replace(/\\"/g,'"')+"'";return t.stylize(r,"string")}return b(e)?t.stylize(""+e,"number"):y(e)?t.stylize(""+e,"boolean"):m(e)?t.stylize("null","null"):void 0}(t,r);if(i)return i;var s=Object.keys(r),a=function(t){var e={};return t.forEach(function(t,r){e[t]=!0}),e}(s);if(t.showHidden&&(s=Object.getOwnPropertyNames(r)),O(r)&&(s.indexOf("message")>=0||s.indexOf("description")>=0))return p(r);if(0===s.length){if(_(r)){var u=r.name?": "+r.name:"";return t.stylize("[Function"+u+"]","special")}if(E(r))return t.stylize(RegExp.prototype.toString.call(r),"regexp");if(S(r))return t.stylize(Date.prototype.toString.call(r),"date");if(O(r))return p(r)}var l,c="",f=!1,x=["{","}"];return g(r)&&(f=!0,x=["[","]"]),_(r)&&(c=" [Function"+(r.name?": "+r.name:"")+"]"),E(r)&&(c=" "+RegExp.prototype.toString.call(r)),S(r)&&(c=" "+Date.prototype.toUTCString.call(r)),O(r)&&(c=" "+p(r)),0!==s.length||f&&0!=r.length?n<0?E(r)?t.stylize(RegExp.prototype.toString.call(r),"regexp"):t.stylize("[Object]","special"):(t.seen.push(r),l=f?function(t,e,r,n,o){for(var i=[],s=0,a=e.length;s60?r[0]+(""===e?"":e+"\n ")+" "+t.join(",\n ")+" "+r[1]:r[0]+e+" "+t.join(", ")+" "+r[1]}(l,c,x)):x[0]+c+x[1]}function p(t){return"["+Error.prototype.toString.call(t)+"]"}function d(t,e,r,n,o,i){var s,a,u;if((u=Object.getOwnPropertyDescriptor(e,o)||{value:e[o]}).get?a=u.set?t.stylize("[Getter/Setter]","special"):t.stylize("[Getter]","special"):u.set&&(a=t.stylize("[Setter]","special")),N(n,o)||(s="["+o+"]"),a||(t.seen.indexOf(u.value)<0?(a=m(r)?h(t,u.value,null):h(t,u.value,r-1)).indexOf("\n")>-1&&(a=i?a.split("\n").map(function(t){return" "+t}).join("\n").slice(2):"\n"+a.split("\n").map(function(t){return" "+t}).join("\n")):a=t.stylize("[Circular]","special")),w(s)){if(i&&o.match(/^\d+$/))return a;(s=JSON.stringify(""+o)).match(/^"([a-zA-Z_][a-zA-Z_0-9]*)"$/)?(s=s.slice(1,-1),s=t.stylize(s,"name")):(s=s.replace(/'/g,"\\'").replace(/\\"/g,'"').replace(/(^"|"$)/g,"'"),s=t.stylize(s,"string"))}return s+": "+a}function g(t){return Array.isArray(t)}function y(t){return"boolean"==typeof t}function m(t){return null===t}function b(t){return"number"==typeof t}function v(t){return"string"==typeof t}function w(t){return void 0===t}function E(t){return x(t)&&"[object RegExp]"===A(t)}function x(t){return"object"==typeof t&&null!==t}function S(t){return x(t)&&"[object Date]"===A(t)}function O(t){return x(t)&&("[object Error]"===A(t)||t instanceof Error)}function _(t){return"function"==typeof t}function A(t){return Object.prototype.toString.call(t)}function T(t){return t<10?"0"+t.toString(10):t.toString(10)}e.debuglog=function(t){if(t=t.toUpperCase(),!s[t])if(a.test(t)){var r=n.pid;s[t]=function(){var n=e.format.apply(e,arguments);console.error("%s %d: %s",t,r,n)}}else s[t]=function(){};return s[t]},e.inspect=l,l.colors={bold:[1,22],italic:[3,23],underline:[4,24],inverse:[7,27],white:[37,39],grey:[90,39],black:[30,39],blue:[34,39],cyan:[36,39],green:[32,39],magenta:[35,39],red:[31,39],yellow:[33,39]},l.styles={special:"cyan",number:"yellow",boolean:"yellow",undefined:"grey",null:"bold",string:"green",date:"magenta",regexp:"red"},e.types=r(49032),e.isArray=g,e.isBoolean=y,e.isNull=m,e.isNullOrUndefined=function(t){return null==t},e.isNumber=b,e.isString=v,e.isSymbol=function(t){return"symbol"==typeof t},e.isUndefined=w,e.isRegExp=E,e.types.isRegExp=E,e.isObject=x,e.isDate=S,e.types.isDate=S,e.isError=O,e.types.isNativeError=O,e.isFunction=_,e.isPrimitive=function(t){return null===t||"boolean"==typeof t||"number"==typeof t||"string"==typeof t||"symbol"==typeof t||void 0===t},e.isBuffer=r(81135);var j=["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"];function N(t,e){return Object.prototype.hasOwnProperty.call(t,e)}e.log=function(){var t,r;console.log("%s - %s",(r=[T((t=new Date).getHours()),T(t.getMinutes()),T(t.getSeconds())].join(":"),[t.getDate(),j[t.getMonth()],r].join(" ")),e.format.apply(e,arguments))},e.inherits=r(56698),e._extend=function(t,e){if(!e||!x(e))return t;for(var r=Object.keys(e),n=r.length;n--;)t[r[n]]=e[r[n]];return t};var R="undefined"!=typeof Symbol?Symbol("util.promisify.custom"):void 0;function P(t,e){if(!t){var r=new Error("Promise was rejected with a falsy value");r.reason=t,t=r}return e(t)}e.promisify=function(t){if("function"!=typeof t)throw new TypeError('The "original" argument must be of type Function');if(R&&t[R]){var e;if("function"!=typeof(e=t[R]))throw new TypeError('The "util.promisify.custom" argument must be of type Function');return Object.defineProperty(e,R,{value:e,enumerable:!1,writable:!1,configurable:!0}),e}function e(){for(var e,r,n=new Promise(function(t,n){e=t,r=n}),o=[],i=0;io});const n="undefined"!=typeof WorkerGlobalScope&&self instanceof WorkerGlobalScope?self:"undefined"!=typeof window?window:globalThis,o=n.fetch.bind(n);n.Headers,n.Request,n.Response},72984(t,e,r){"use strict";function n(t){return"function"==typeof t?t:Array.isArray(t)?e=>{for(const r of t){if("string"==typeof r&&e===r)return!0;if(r instanceof RegExp&&r.test(e))return!0}}:()=>!1}r.d(e,{A:()=>n})},69031(t,e,r){"use strict";r.d(e,{Eo:()=>s,Xe:()=>i,yQ:()=>a});const n=":A-Za-z_\\u00C0-\\u00D6\\u00D8-\\u00F6\\u00F8-\\u02FF\\u0370-\\u037D\\u037F-\\u1FFF\\u200C-\\u200D\\u2070-\\u218F\\u2C00-\\u2FEF\\u3001-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFFD",o=new RegExp("^["+n+"]["+n+"\\-.\\d\\u00B7\\u0300-\\u036F\\u203F-\\u2040]*$");function i(t,e){const r=[];let n=e.exec(t);for(;n;){const o=[];o.startIndex=e.lastIndex-n[0].length;const i=n.length;for(let t=0;ti});var n=r(69031);const o={allowBooleanAttributes:!1,unpairedTags:[]};function i(t,e){e=Object.assign({},o,e);const r=[];let n=!1,i=!1;"\ufeff"===t[0]&&(t=t.substr(1));for(let o=0;o"!==t[o]&&" "!==t[o]&&"\t"!==t[o]&&"\n"!==t[o]&&"\r"!==t[o];o++)m+=t[o];if(m=m.trim(),"/"===m[m.length-1]&&(m=m.substring(0,m.length-1),o--),!g(m)){let e;return e=0===m.trim().length?"Invalid space after '<'.":"Tag '"+m+"' is an invalid name.",p("InvalidTag",e,y(t,o))}const b=l(t,o);if(!1===b)return p("InvalidAttr","Attributes for '"+m+"' have open quote.",y(t,o));let v=b.value;if(o=b.index,"/"===v[v.length-1]){const r=o-v.length;v=v.substring(0,v.length-1);const i=f(v,e);if(!0!==i)return p(i.err.code,i.err.msg,y(t,r+i.err.line));n=!0}else if(d){if(!b.tagClosed)return p("InvalidTag","Closing tag '"+m+"' doesn't have proper closing.",y(t,o));if(v.trim().length>0)return p("InvalidTag","Closing tag '"+m+"' can't have attributes or invalid starting.",y(t,c));if(0===r.length)return p("InvalidTag","Closing tag '"+m+"' has not been opened.",y(t,c));{const e=r.pop();if(m!==e.tagName){let r=y(t,e.tagStartPos);return p("InvalidTag","Expected closing tag '"+e.tagName+"' (opened in line "+r.line+", col "+r.col+") instead of closing tag '"+m+"'.",y(t,c))}0==r.length&&(i=!0)}}else{const s=f(v,e);if(!0!==s)return p(s.err.code,s.err.msg,y(t,o-v.length+s.err.line));if(!0===i)return p("InvalidXml","Multiple possible root nodes found.",y(t,o));-1!==e.unpairedTags.indexOf(m)||r.push({tagName:m,tagStartPos:c}),n=!0}for(o++;o0)||p("InvalidXml","Invalid '"+JSON.stringify(r.map(t=>t.tagName),null,4).replace(/\r?\n/g,"")+"' found.",{line:1,col:1}):p("InvalidXml","Start tag expected.",1)}function s(t){return" "===t||"\t"===t||"\n"===t||"\r"===t}function a(t,e){const r=e;for(;e5&&"xml"===n)return p("InvalidXml","XML declaration allowed only at the start of the document.",y(t,e));if("?"==t[e]&&">"==t[e+1]){e++;break}continue}return e}function u(t,e){if(t.length>e+5&&"-"===t[e+1]&&"-"===t[e+2]){for(e+=3;e"===t[e+2]){e+=2;break}}else if(t.length>e+8&&"D"===t[e+1]&&"O"===t[e+2]&&"C"===t[e+3]&&"T"===t[e+4]&&"Y"===t[e+5]&&"P"===t[e+6]&&"E"===t[e+7]){let r=1;for(e+=8;e"===t[e]&&(r--,0===r))break}else if(t.length>e+9&&"["===t[e+1]&&"C"===t[e+2]&&"D"===t[e+3]&&"A"===t[e+4]&&"T"===t[e+5]&&"A"===t[e+6]&&"["===t[e+7])for(e+=8;e"===t[e+2]){e+=2;break}return e}function l(t,e){let r="",n="",o=!1;for(;e"===t[e]&&""===n){o=!0;break}r+=t[e]}return""===n&&{value:r,index:e,tagClosed:o}}const c=new RegExp("(\\s*)([^\\s=]+)(\\s*=)?(\\s*(['\"])(([\\s\\S])*?)\\5)?","g");function f(t,e){const r=(0,n.Xe)(t,c),o={};for(let t=0;ts});var n=r(85697),o=r(72984);const i={attributeNamePrefix:"@_",attributesGroupName:!1,textNodeName:"#text",ignoreAttributes:!0,cdataPropName:!1,format:!1,indentBy:" ",suppressEmptyNode:!1,suppressUnpairedNode:!0,suppressBooleanAttributes:!0,tagValueProcessor:function(t,e){return e},attributeValueProcessor:function(t,e){return e},preserveOrder:!1,commentPropName:!1,unpairedTags:[],entities:[{regex:new RegExp("&","g"),val:"&"},{regex:new RegExp(">","g"),val:">"},{regex:new RegExp("<","g"),val:"<"},{regex:new RegExp("'","g"),val:"'"},{regex:new RegExp('"',"g"),val:"""}],processEntities:!0,stopNodes:[],oneListGroup:!1};function s(t){this.options=Object.assign({},i,t),!0===this.options.ignoreAttributes||this.options.attributesGroupName?this.isAttribute=function(){return!1}:(this.ignoreAttributesFn=(0,o.A)(this.options.ignoreAttributes),this.attrPrefixLen=this.options.attributeNamePrefix.length,this.isAttribute=l),this.processTextOrObjNode=a,this.options.format?(this.indentate=u,this.tagEndChar=">\n",this.newLine="\n"):(this.indentate=function(){return""},this.tagEndChar=">",this.newLine="")}function a(t,e,r,n){const o=this.j2x(t,r+1,n.concat(e));return void 0!==t[this.options.textNodeName]&&1===Object.keys(t).length?this.buildTextValNode(t[this.options.textNodeName],e,o.attrStr,r):this.buildObjectNode(o.val,e,o.attrStr,r)}function u(t){return this.options.indentBy.repeat(t)}function l(t){return!(!t.startsWith(this.options.attributeNamePrefix)||t===this.options.textNodeName)&&t.substr(this.attrPrefixLen)}s.prototype.build=function(t){return this.options.preserveOrder?(0,n.A)(t,this.options):(Array.isArray(t)&&this.options.arrayNodeName&&this.options.arrayNodeName.length>1&&(t={[this.options.arrayNodeName]:t}),this.j2x(t,0,[]).val)},s.prototype.j2x=function(t,e,r){let n="",o="";const i=r.join(".");for(let s in t)if(Object.prototype.hasOwnProperty.call(t,s))if(void 0===t[s])this.isAttribute(s)&&(o+="");else if(null===t[s])this.isAttribute(s)||s===this.options.cdataPropName?o+="":"?"===s[0]?o+=this.indentate(e)+"<"+s+"?"+this.tagEndChar:o+=this.indentate(e)+"<"+s+"/"+this.tagEndChar;else if(t[s]instanceof Date)o+=this.buildTextValNode(t[s],s,"",e);else if("object"!=typeof t[s]){const r=this.isAttribute(s);if(r&&!this.ignoreAttributesFn(r,i))n+=this.buildAttrPairStr(r,""+t[s]);else if(!r)if(s===this.options.textNodeName){let e=this.options.tagValueProcessor(s,""+t[s]);o+=this.replaceEntitiesValue(e)}else o+=this.buildTextValNode(t[s],s,"",e)}else if(Array.isArray(t[s])){const n=t[s].length;let i="",a="";for(let u=0;u"+t+o}},s.prototype.closeTag=function(t){let e="";return-1!==this.options.unpairedTags.indexOf(t)?this.options.suppressUnpairedNode||(e="/"):e=this.options.suppressEmptyNode?"/":`>`+this.newLine;if(!1!==this.options.commentPropName&&e===this.options.commentPropName)return this.indentate(n)+`\x3c!--${t}--\x3e`+this.newLine;if("?"===e[0])return this.indentate(n)+"<"+e+r+"?"+this.tagEndChar;{let o=this.options.tagValueProcessor(e,t);return o=this.replaceEntitiesValue(o),""===o?this.indentate(n)+"<"+e+r+this.closeTag(e)+this.tagEndChar:this.indentate(n)+"<"+e+r+">"+o+"0&&this.options.processEntities)for(let e=0;e0&&(r="\n"),o(t,e,"",r)}function o(t,e,r,n){let l="",c=!1;for(let f=0;f`,c=!1;continue}if(p===e.commentPropName){l+=n+`\x3c!--${h[p][0][e.textNodeName]}--\x3e`,c=!0;continue}if("?"===p[0]){const t=s(h[":@"],e),r="?xml"===p?"":n;let o=h[p][0][e.textNodeName];o=0!==o.length?" "+o:"",l+=r+`<${p}${o}${t}?>`,c=!0;continue}let g=n;""!==g&&(g+=e.indentBy);const y=n+`<${p}${s(h[":@"],e)}`,m=o(h[p],e,d,g);-1!==e.unpairedTags.indexOf(p)?e.suppressUnpairedNode?l+=y+">":l+=y+"/>":m&&0!==m.length||!e.suppressEmptyNode?m&&m.endsWith(">")?l+=y+`>${m}${n}`:(l+=y+">",m&&""!==n&&(m.includes("/>")||m.includes("`):l+=y+"/>",c=!0}return l}function i(t){const e=Object.keys(t);for(let r=0;r0&&e.processEntities)for(let r=0;rn})},25003(t,e,r){"use strict";r.d(e,{A:()=>o});var n=r(69031);class o{constructor(t){this.suppressValidationErr=!t}readDocType(t,e){const r={};if("O"!==t[e+3]||"C"!==t[e+4]||"T"!==t[e+5]||"Y"!==t[e+6]||"P"!==t[e+7]||"E"!==t[e+8])throw new Error("Invalid Tag instead of DOCTYPE");{e+=9;let n=1,o=!1,i=!1,a="";for(;e"===t[e]){if(i?"-"===t[e-1]&&"-"===t[e-2]&&(i=!1,n--):n--,0===n)break}else"["===t[e]?o=!0:a+=t[e];else{if(o&&s(t,"!ENTITY",e)){let n,o;e+=7,[n,o,e]=this.readEntityExp(t,e+1,this.suppressValidationErr),-1===o.indexOf("&")&&(r[n]={regx:RegExp(`&${n};`,"g"),val:o})}else if(o&&s(t,"!ELEMENT",e)){e+=8;const{index:r}=this.readElementExp(t,e+1);e=r}else if(o&&s(t,"!ATTLIST",e))e+=8;else if(o&&s(t,"!NOTATION",e)){e+=9;const{index:r}=this.readNotationExp(t,e+1,this.suppressValidationErr);e=r}else{if(!s(t,"!--",e))throw new Error("Invalid DOCTYPE");i=!0}n++,a=""}if(0!==n)throw new Error("Unclosed DOCTYPE")}return{entities:r,i:e}}readEntityExp(t,e){e=i(t,e);let r="";for(;e{for(;eo});const n={preserveOrder:!1,attributeNamePrefix:"@_",attributesGroupName:!1,textNodeName:"#text",ignoreAttributes:!0,removeNSPrefix:!1,allowBooleanAttributes:!1,parseTagValue:!0,parseAttributeValue:!1,trimValues:!0,cdataPropName:!1,numberParseOptions:{hex:!0,leadingZeros:!0,eNotation:!0},tagValueProcessor:function(t,e){return e},attributeValueProcessor:function(t,e){return e},stopNodes:[],alwaysCreateTextNode:!1,isArray:()=>!1,commentPropName:!1,unpairedTags:[],processEntities:!0,htmlEntities:!1,ignoreDeclaration:!1,ignorePiTags:!1,transformTagName:!1,transformAttributeName:!1,updateTag:function(t,e,r){return t},captureMetaData:!1},o=function(t){return Object.assign({},n,t)}},79781(t,e,r){"use strict";r.d(e,{A:()=>u});var n=r(69031),o=r(13127),i=r(25003),s=r(60524),a=r(72984);class u{constructor(t){if(this.options=t,this.currentNode=null,this.tagsNodeStack=[],this.docTypeEntities={},this.lastEntities={apos:{regex:/&(apos|#39|#x27);/g,val:"'"},gt:{regex:/&(gt|#62|#x3E);/g,val:">"},lt:{regex:/&(lt|#60|#x3C);/g,val:"<"},quot:{regex:/&(quot|#34|#x22);/g,val:'"'}},this.ampEntity={regex:/&(amp|#38|#x26);/g,val:"&"},this.htmlEntities={space:{regex:/&(nbsp|#160);/g,val:" "},cent:{regex:/&(cent|#162);/g,val:"¢"},pound:{regex:/&(pound|#163);/g,val:"£"},yen:{regex:/&(yen|#165);/g,val:"¥"},euro:{regex:/&(euro|#8364);/g,val:"€"},copyright:{regex:/&(copy|#169);/g,val:"©"},reg:{regex:/&(reg|#174);/g,val:"®"},inr:{regex:/&(inr|#8377);/g,val:"₹"},num_dec:{regex:/&#([0-9]{1,7});/g,val:(t,e)=>S(e,10,"&#")},num_hex:{regex:/&#x([0-9a-fA-F]{1,6});/g,val:(t,e)=>S(e,16,"&#x")}},this.addExternalEntities=l,this.parseXml=d,this.parseTextData=c,this.resolveNameSpace=f,this.buildAttributesMap=p,this.isItStopNode=b,this.replaceEntitiesValue=y,this.readStopNodeData=E,this.saveTextToParentTag=m,this.addChild=g,this.ignoreAttributesFn=(0,a.A)(this.options.ignoreAttributes),this.options.stopNodes&&this.options.stopNodes.length>0){this.stopNodesExact=new Set,this.stopNodesWildcard=new Set;for(let t=0;t0)){s||(t=this.replaceEntitiesValue(t));const n=this.options.tagValueProcessor(e,t,r,o,i);return null==n?t:typeof n!=typeof t||n!==t?n:this.options.trimValues||t.trim()===t?x(t,this.options.parseTagValue,this.options.numberParseOptions):t}}function f(t){if(this.options.removeNSPrefix){const e=t.split(":"),r="/"===t.charAt(0)?"/":"";if("xmlns"===e[0])return"";2===e.length&&(t=r+e[1])}return t}const h=new RegExp("([^\\s=]+)\\s*(=\\s*(['\"])([\\s\\S]*?)\\3)?","gm");function p(t,e){if(!0!==this.options.ignoreAttributes&&"string"==typeof t){const r=(0,n.Xe)(t,h),o=r.length,i={};for(let t=0;t",i,"Closing Tag is not closed.");let o=t.substring(i+2,e).trim();if(this.options.removeNSPrefix){const t=o.indexOf(":");-1!==t&&(o=o.substr(t+1))}this.options.transformTagName&&(o=this.options.transformTagName(o)),r&&(n=this.saveTextToParentTag(n,r,s));const a=s.substring(s.lastIndexOf(".")+1);if(o&&-1!==this.options.unpairedTags.indexOf(o))throw new Error(`Unpaired tag can not be used as closing tag: `);let u=0;a&&-1!==this.options.unpairedTags.indexOf(a)?(u=s.lastIndexOf(".",s.lastIndexOf(".")-1),this.tagsNodeStack.pop()):u=s.lastIndexOf("."),s=s.substring(0,u),r=this.tagsNodeStack.pop(),n="",i=e}else if("?"===t[i+1]){let e=w(t,i,!1,"?>");if(!e)throw new Error("Pi Tag is not closed.");if(n=this.saveTextToParentTag(n,r,s),this.options.ignoreDeclaration&&"?xml"===e.tagName||this.options.ignorePiTags);else{const t=new o.A(e.tagName);t.add(this.options.textNodeName,""),e.tagName!==e.tagExp&&e.attrExpPresent&&(t[":@"]=this.buildAttributesMap(e.tagExp,s)),this.addChild(r,t,s,i)}i=e.closeIndex+1}else if("!--"===t.substr(i+1,3)){const e=v(t,"--\x3e",i+4,"Comment is not closed.");if(this.options.commentPropName){const o=t.substring(i+4,e-2);n=this.saveTextToParentTag(n,r,s),r.add(this.options.commentPropName,[{[this.options.textNodeName]:o}])}i=e}else if("!D"===t.substr(i+1,2)){const e=a.readDocType(t,i);this.docTypeEntities=e.entities,i=e.i}else if("!["===t.substr(i+1,2)){const e=v(t,"]]>",i,"CDATA is not closed.")-2,o=t.substring(i+9,e);n=this.saveTextToParentTag(n,r,s);let a=this.parseTextData(o,r.tagname,s,!0,!1,!0,!0);null==a&&(a=""),this.options.cdataPropName?r.add(this.options.cdataPropName,[{[this.options.textNodeName]:o}]):r.add(this.options.textNodeName,a),i=e+2}else{let a=w(t,i,this.options.removeNSPrefix),u=a.tagName;const l=a.rawTagName;let c=a.tagExp,f=a.attrExpPresent,h=a.closeIndex;if(this.options.transformTagName){const t=this.options.transformTagName(u);c===u&&(c=t),u=t}r&&n&&"!xml"!==r.tagname&&(n=this.saveTextToParentTag(n,r,s,!1));const p=r;p&&-1!==this.options.unpairedTags.indexOf(p.tagname)&&(r=this.tagsNodeStack.pop(),s=s.substring(0,s.lastIndexOf("."))),u!==e.tagname&&(s+=s?"."+u:u);const d=i;if(this.isItStopNode(this.stopNodesExact,this.stopNodesWildcard,s,u)){let e="";if(c.length>0&&c.lastIndexOf("/")===c.length-1)"/"===u[u.length-1]?(u=u.substr(0,u.length-1),s=s.substr(0,s.length-1),c=u):c=c.substr(0,c.length-1),i=a.closeIndex;else if(-1!==this.options.unpairedTags.indexOf(u))i=a.closeIndex;else{const r=this.readStopNodeData(t,l,h+1);if(!r)throw new Error(`Unexpected end of ${l}`);i=r.i,e=r.tagContent}const n=new o.A(u);u!==c&&f&&(n[":@"]=this.buildAttributesMap(c,s)),e&&(e=this.parseTextData(e,u,s,!0,f,!0,!0)),s=s.substr(0,s.lastIndexOf(".")),n.add(this.options.textNodeName,e),this.addChild(r,n,s,d)}else{if(c.length>0&&c.lastIndexOf("/")===c.length-1){if("/"===u[u.length-1]?(u=u.substr(0,u.length-1),s=s.substr(0,s.length-1),c=u):c=c.substr(0,c.length-1),this.options.transformTagName){const t=this.options.transformTagName(u);c===u&&(c=t),u=t}const t=new o.A(u);u!==c&&f&&(t[":@"]=this.buildAttributesMap(c,s)),this.addChild(r,t,s,d),s=s.substr(0,s.lastIndexOf("."))}else{const t=new o.A(u);this.tagsNodeStack.push(r),u!==c&&f&&(t[":@"]=this.buildAttributesMap(c,s)),this.addChild(r,t,s,d),r=t}n="",i=h}}else n+=t[i];return e.child};function g(t,e,r,n){this.options.captureMetaData||(n=void 0);const o=this.options.updateTag(e.tagname,r,e[":@"]);!1===o||("string"==typeof o?(e.tagname=o,t.addChild(e,n)):t.addChild(e,n))}const y=function(t){if(this.options.processEntities){for(let e in this.docTypeEntities){const r=this.docTypeEntities[e];t=t.replace(r.regx,r.val)}for(let e in this.lastEntities){const r=this.lastEntities[e];t=t.replace(r.regex,r.val)}if(this.options.htmlEntities)for(let e in this.htmlEntities){const r=this.htmlEntities[e];t=t.replace(r.regex,r.val)}t=t.replace(this.ampEntity.regex,this.ampEntity.val)}return t};function m(t,e,r,n){return t&&(void 0===n&&(n=0===e.child.length),void 0!==(t=this.parseTextData(t,e.tagname,r,!1,!!e[":@"]&&0!==Object.keys(e[":@"]).length,n))&&""!==t&&e.add(this.options.textNodeName,t),t=""),t}function b(t,e,r,n){return!(!e||!e.has(n))||!(!t||!t.has(r))}function v(t,e,r,n){const o=t.indexOf(e,r);if(-1===o)throw new Error(n);return o+e.length-1}function w(t,e,r,n=">"){const o=function(t,e,r=">"){let n,o="";for(let i=e;i",r,`${e} is not closed`);if(t.substring(r+2,i).trim()===e&&(o--,0===o))return{tagContent:t.substring(n,r),i};r=i}else if("?"===t[r+1])r=v(t,"?>",r+1,"StopNode is not closed.");else if("!--"===t.substr(r+1,3))r=v(t,"--\x3e",r+3,"StopNode is not closed.");else if("!["===t.substr(r+1,2))r=v(t,"]]>",r,"StopNode is not closed.")-2;else{const n=w(t,r,">");n&&((n&&n.tagName)===e&&"/"!==n.tagExp[n.tagExp.length-1]&&o++,r=n.closeIndex)}}function x(t,e,r){if(e&&"string"==typeof t){const e=t.trim();return"true"===e||"false"!==e&&(0,s.A)(t,r)}return(0,n.yQ)(t)?t:""}function S(t,e,r){const n=Number.parseInt(t,e);return n>=0&&n<=1114111?String.fromCodePoint(n):r+t+";"}},1912(t,e,r){"use strict";r.d(e,{A:()=>u});var n=r(60341),o=r(79781),i=r(35382),s=r(86301),a=r(13127);class u{constructor(t){this.externalEntities={},this.options=(0,n.D)(t)}parse(t,e){if("string"!=typeof t&&t.toString)t=t.toString();else if("string"!=typeof t)throw new Error("XML data is accepted in String or Bytes[] form.");if(e){!0===e&&(e={});const r=(0,s.t)(t,e);if(!0!==r)throw Error(`${r.err.msg}:${r.err.line}:${r.err.col}`)}const r=new o.A(this.options);r.addExternalEntities(this.externalEntities);const n=r.parseXml(t);return this.options.preserveOrder||void 0===n?n:(0,i.A)(n,this.options)}addEntity(t,e){if(-1!==e.indexOf("&"))throw new Error("Entity value can't have '&'");if(-1!==t.indexOf("&")||-1!==t.indexOf(";"))throw new Error("An entity must be set without '&' and ';'. Eg. use '#xD' for ' '");if("&"===e)throw new Error("An entity with value '&' is not permitted");this.externalEntities[t]=e}static getMetaDataSymbol(){return a.A.getMetaDataSymbol()}}},35382(t,e,r){"use strict";r.d(e,{A:()=>o});const n=r(13127).A.getMetaDataSymbol();function o(t,e){return i(t,e)}function i(t,e,r){let o;const l={};for(let c=0;c0&&(l[e.textNodeName]=o):void 0!==o&&(l[e.textNodeName]=o),l}function s(t){const e=Object.keys(t);for(let t=0;to}),n="function"!=typeof Symbol?"@@xmlMetadata":Symbol("XML Node Metadata");class o{constructor(t){this.tagname=t,this.child=[],this[":@"]={}}add(t,e){"__proto__"===t&&(t="#__proto__"),this.child.push({[t]:e})}addChild(t,e){"__proto__"===t.tagname&&(t.tagname="#__proto__"),t[":@"]&&Object.keys(t[":@"]).length>0?this.child.push({[t.tagname]:t.child,":@":t[":@"]}):this.child.push({[t.tagname]:t.child}),void 0!==e&&(this.child[this.child.length-1][n]={startIndex:e})}static getMetaDataSymbol(){return n}}},21657(t,e,r){"use strict";function n(...t){if(0===t.length)throw new Error("Failed creating sequence: No functions provided");return function(...e){let r=e;const n=this;for(;t.length>0;)r=[t.shift().apply(n,r)];return r[0]}}r.d(e,{K:()=>n})},19621(t,e,r){"use strict";r.d(e,{T:()=>a});var n=r(21657);const o="@@HOTPATCHER",i=()=>{};function s(t){return{original:t,methods:[t],final:!1}}class a{constructor(){this._configuration={registry:{},getEmptyAction:"null"},this.__type__=o}get configuration(){return this._configuration}get getEmptyAction(){return this.configuration.getEmptyAction}set getEmptyAction(t){this.configuration.getEmptyAction=t}control(t,e=!1){if(!t||t.__type__!==o)throw new Error("Failed taking control of target HotPatcher instance: Invalid type or object");return Object.keys(t.configuration.registry).forEach(r=>{this.configuration.registry.hasOwnProperty(r)?e&&(this.configuration.registry[r]=Object.assign({},t.configuration.registry[r])):this.configuration.registry[r]=Object.assign({},t.configuration.registry[r])}),t._configuration=this.configuration,this}execute(t,...e){return(this.get(t)||i)(...e)}get(t){const e=this.configuration.registry[t];if(!e)switch(this.getEmptyAction){case"null":return null;case"throw":throw new Error(`Failed handling method request: No method provided for override: ${t}`);default:throw new Error(`Failed handling request which resulted in an empty method: Invalid empty-action specified: ${this.getEmptyAction}`)}return(0,n.K)(...e.methods)}isPatched(t){return!!this.configuration.registry[t]}patch(t,e,r={}){const{chain:n=!1}=r;if(this.configuration.registry[t]&&this.configuration.registry[t].final)throw new Error(`Failed patching '${t}': Method marked as being final`);if("function"!=typeof e)throw new Error(`Failed patching '${t}': Provided method is not a function`);if(n)this.configuration.registry[t]?this.configuration.registry[t].methods.push(e):this.configuration.registry[t]=s(e);else if(this.isPatched(t)){const{original:r}=this.configuration.registry[t];this.configuration.registry[t]=Object.assign(s(e),{original:r})}else this.configuration.registry[t]=s(e);return this}patchInline(t,e,...r){return this.isPatched(t)||this.patch(t,e),this.execute(t,...r)}plugin(t,...e){return e.forEach(e=>{this.patch(t,e,{chain:!0})}),this}restore(t){if(!this.isPatched(t))throw new Error(`Failed restoring method: No method present for key: ${t}`);if("function"!=typeof this.configuration.registry[t].original)throw new Error(`Failed restoring method: Original method not found or of invalid type for key: ${t}`);return this.configuration.registry[t].methods=[this.configuration.registry[t].original],this}setFinal(t){if(!this.configuration.registry.hasOwnProperty(t))throw new Error(`Failed marking '${t}' as final: No method found for key`);return this.configuration.registry[t].final=!0,this}}},93028(t,e,r){"use strict";function n(t){if(!o(t))throw new Error("Parameter was not an error")}function o(t){return!!t&&"object"==typeof t&&"[object Error]"===(e=t,Object.prototype.toString.call(e))||t instanceof Error;var e}r.d(e,{b:()=>o,t:()=>n})},11163(t,e,r){"use strict";r.d(e,{z:()=>n});function n(){return"Layerr"}},42294(t,e,r){"use strict";r.d(e,{GU:()=>n.G});var n=r(17601)},17601(t,e,r){"use strict";r.d(e,{G:()=>s});var n=r(93028),o=r(11163),i=r(78049);class s extends Error{constructor(t,e){const r=[...arguments],{options:n,shortMessage:s}=(0,i.W)(r);let a=s;if(n.cause&&(a=`${a}: ${n.cause.message}`),super(a),this.message=a,n.name&&"string"==typeof n.name?this.name=n.name:this.name=(0,o.z)(),n.cause&&Object.defineProperty(this,"_cause",{value:n.cause}),Object.defineProperty(this,"_info",{value:{}}),n.info&&"object"==typeof n.info&&Object.assign(this._info,n.info),Error.captureStackTrace){const t=n.constructorOpt||this.constructor;Error.captureStackTrace(this,t)}}static cause(t){return(0,n.t)(t),t._cause&&(0,n.b)(t._cause)?t._cause:null}static fullStack(t){(0,n.t)(t);const e=s.cause(t);return e?`${t.stack}\ncaused by: ${s.fullStack(e)}`:t.stack??""}static info(t){(0,n.t)(t);const e={},r=s.cause(t);return r&&Object.assign(e,s.info(r)),t._info&&Object.assign(e,t._info),e}toString(){let t=this.name||this.constructor.name||this.constructor.prototype.name;return this.message&&(t=`${t}: ${this.message}`),t}}},78049(t,e,r){"use strict";r.d(e,{W:()=>o});var n=r(93028);function o(t){let e,r="";if(0===t.length)e={};else if((0,n.b)(t[0]))e={cause:t[0]},r=t.slice(1).join(" ")||"";else if(t[0]&&"object"==typeof t[0])e=Object.assign({},t[0]),r=t.slice(1).join(" ")||"";else{if("string"!=typeof t[0])throw new Error("Invalid arguments passed to Layerr");e={},r=r=t.join(" ")||""}return{options:e,shortMessage:r}}},60524(t,e,r){"use strict";r.d(e,{A:()=>s});const n=/^[-+]?0x[a-fA-F0-9]+$/,o=/^([\-\+])?(0*)([0-9]*(\.[0-9]*)?)$/,i={hex:!0,leadingZeros:!0,decimalPoint:".",eNotation:!0};function s(t,e={}){if(e=Object.assign({},i,e),!t||"string"!=typeof t)return t;let r=t.trim();if(void 0!==e.skipLike&&e.skipLike.test(r))return t;if("0"===t)return 0;if(e.hex&&n.test(r))return function(t){if(parseInt)return parseInt(t,16);if(Number.parseInt)return Number.parseInt(t,16);if(window&&window.parseInt)return window.parseInt(t,16);throw new Error("parseInt, Number.parseInt, window.parseInt are not supported")}(r);if(r.includes("e")||r.includes("E"))return function(t,e,r){if(!r.eNotation)return t;const n=e.match(a);if(n){let o=n[1]||"";const i=-1===n[3].indexOf("e")?"E":"e",s=n[2],a=o?t[s.length+1]===i:t[s.length]===i;return s.length>1&&a?t:1!==s.length||!n[3].startsWith(`.${i}`)&&n[3][0]!==i?r.leadingZeros&&!a?(e=(n[1]||"")+n[3],Number(e)):t:Number(e)}return t}(t,r,e);{const n=o.exec(r);if(n){const o=n[1]||"",i=n[2];let a=(s=n[3])&&-1!==s.indexOf(".")?("."===(s=s.replace(/0+$/,""))?s="0":"."===s[0]?s="0"+s:"."===s[s.length-1]&&(s=s.substring(0,s.length-1)),s):s;const u=o?"."===t[i.length+1]:"."===t[i.length];if(!e.leadingZeros&&(i.length>1||1===i.length&&!u))return t;{const n=Number(r),s=String(n);if(0===n)return n;if(-1!==s.search(/[eE]/))return e.eNotation?n:t;if(-1!==r.indexOf("."))return"0"===s||s===a||s===`${o}${a}`?n:t;let u=i?a:r;return i?u===s||o+u===s?n:t:u===s||u===o+s?n:t}}return t}var s}const a=/^([-+])?(0*)(\d*(\.\d*)?[eE][-\+]?\d+)$/},406(t,e,r){"use strict";function n(){return function(t){var e=[];if(0===t.length)return"";if("string"!=typeof t[0])throw new TypeError("Url must be a string. Received "+t[0]);if(t[0].match(/^[^/:]+:\/*$/)&&t.length>1){var r=t.shift();t[0]=r+t[0]}t[0].match(/^file:\/\/\//)?t[0]=t[0].replace(/^([^/:]+):\/*/,"$1:///"):t[0]=t[0].replace(/^([^/:]+):\/*/,"$1://");for(var n=0;n0&&(o=o.replace(/^[\/]+/,"")),o=n0?"?":"")+s.join("&")}("object"==typeof arguments[0]?arguments[0]:[].slice.call(arguments))}r.d(e,{A:()=>n})},19396(t,e,r){"use strict";r.d(e,{V:()=>o});var n=r(57221);function o(t,e){return`Basic ${(0,n.nk)(`${t}:${e}`)}`}},90036(t,e,r){"use strict";r.d(e,{C8:()=>i,Wb:()=>a,XX:()=>s,oD:()=>u});var n=r(83503),o=r(35658);function i(t,e,r){return{username:t,password:e,ha1:r,nc:0,algorithm:"md5",hasDigestAuth:!1}}function s(t,e){const r=t.url.replace("//",""),i=-1==r.indexOf("/")?"/":r.slice(r.indexOf("/")),s=t.method?t.method.toUpperCase():"GET",a=!!/(^|,)\s*auth\s*($|,)/.test(e.qop)&&"auth",u=`00000000${e.nc}`.slice(-8),l=(0,o.M)(e.algorithm,e.username,e.realm,e.password,e.nonce,e.cnonce,e.ha1),c=n(`${s}:${i}`),f=n(a?`${l}:${e.nonce}:${u}:${e.cnonce}:${a}:${c}`:`${l}:${e.nonce}:${c}`),h={username:e.username,realm:e.realm,nonce:e.nonce,uri:i,qop:a,response:f,nc:u,cnonce:e.cnonce,algorithm:e.algorithm,opaque:e.opaque},p=[];for(const t in h)h[t]&&("qop"===t||"nc"===t||"algorithm"===t?p.push(`${t}=${h[t]}`):p.push(`${t}="${h[t]}"`));return`Digest ${p.join(", ")}`}function a(t,e){if(!u(t))return!1;const r=/([a-z0-9_-]+)=(?:"([^"]+)"|([a-z0-9_-]+))/gi;for(;;){const n=t.headers&&t.headers.get("www-authenticate")||"",o=r.exec(n);if(!o)break;e[o[1]]=o[2]||o[3]}return e.nc+=1,e.cnonce=function(){let t="";for(let e=0;e<32;++e)t=`${t}${"abcdef0123456789"[Math.floor(16*Math.random())]}`;return t}(),!0}function u(t){return"digest"===(t.headers&&t.headers.get("www-authenticate")||"").split(/\s/)[0].toLowerCase()}},36942(t,e,r){"use strict";r.d(e,{e:()=>u});var n=r(42294),o=r(90036),i=r(19396),s=r(89793),a=r(38374);function u(t,e,r,u,l){switch(t.authType){case a.hT.Auto:e&&r&&(t.headers.Authorization=(0,i.V)(e,r));break;case a.hT.Digest:t.digest=(0,o.C8)(e,r,l);break;case a.hT.None:break;case a.hT.Password:t.headers.Authorization=(0,i.V)(e,r);break;case a.hT.Token:t.headers.Authorization=(0,s.O)(u);break;default:throw new n.GU({info:{code:a.O4.InvalidAuthType}},`Invalid auth type: ${t.authType}`)}}},89793(t,e,r){"use strict";function n(t){return`${t.token_type} ${t.access_token}`}r.d(e,{O:()=>n})},47397(t,e,r){"use strict";r.d(e,{m:()=>i});const n="function"==typeof ArrayBuffer,{toString:o}=Object.prototype;function i(t){return n&&(t instanceof ArrayBuffer||"[object ArrayBuffer]"===o.call(t))}},53850(t,e,r){"use strict";function n(t){return null!=t&&null!=t.constructor&&"function"==typeof t.constructor.isBuffer&&t.constructor.isBuffer(t)}r.d(e,{P:()=>n})},22921(t,e,r){"use strict";function n(){return"string"==typeof TARGET&&"react-native"===TARGET}function o(){return"string"==typeof TARGET&&"web"===TARGET}r.d(e,{H:()=>o,l:()=>n})},84819(t,e,r){"use strict";r.d(e,{G:()=>i});var n=r(19621);let o=null;function i(){return o||(o=new n.T),o}},84997(t,e,r){"use strict";r.d(e,{U:()=>O});var n=r(85394),o=r(36942),i=r(50335),s=r(28161),a=r(68476),u=r(76374),l=r(77101),c=r(75892),f=r(74419),h=r(17658),p=r(39615),d=r(86772),g=r(84830),y=r(80156),m=r(77087),b=r(30047),v=r(81838),w=r(10524),E=r(90176),x=r(38374);const S="https://github.com/perry-mitchell/webdav-client/blob/master/LOCK_CONTACT.md";function O(t,e={}){const{authType:r=null,remoteBasePath:O,contactHref:_=S,ha1:A,headers:T={},httpAgent:j,httpsAgent:N,password:R,token:P,username:k,withCredentials:C}=e;let I=r;I||(I=k||R?x.hT.Password:x.hT.None);const M={authType:I,remoteBasePath:O,contactHref:_,ha1:A,headers:Object.assign({},T),httpAgent:j,httpsAgent:N,password:R,parsing:{attributeNamePrefix:e.attributeNamePrefix??"@",attributeParsers:[],tagParsers:[E.jp]},remotePath:(0,n.wB)(t),remoteURL:t,token:P,username:k,withCredentials:C};return(0,o.e)(M,k,R,P,A),{copyFile:(t,e,r)=>(0,i.m)(M,t,e,r),createDirectory:(t,e)=>(0,s.c)(M,t,e),createReadStream:(t,e)=>(0,a.V)(M,t,e),createWriteStream:(t,e,r)=>(0,a.o)(M,t,e,r),customRequest:(t,e)=>(0,u.J)(M,t,e),deleteFile:(t,e)=>(0,l.W)(M,t,e),exists:(t,e)=>(0,c.t)(M,t,e),getDirectoryContents:(t,e)=>(0,f.A)(M,t,e),getFileContents:(t,e)=>(0,h.F)(M,t,e),getFileDownloadLink:t=>(0,h.b)(M,t),getFileUploadLink:t=>(0,b.w)(M,t),getHeaders:()=>Object.assign({},M.headers),getQuota:t=>(0,d.T)(M,t),lock:(t,e)=>(0,p.s)(M,t,e),moveFile:(t,e,r)=>(0,m.m)(M,t,e,r),putFileContents:(t,e,r)=>(0,b.g)(M,t,e,r),partialUpdateFileContents:(t,e,r,n,o)=>(0,v.V)(M,t,e,r,n,o),getDAVCompliance:t=>(0,w.p)(M,t),search:(t,e)=>(0,y.T)(M,t,e),setHeaders:t=>{M.headers=Object.assign({},t)},stat:(t,e)=>(0,g.z)(M,t,e),unlock:(t,e,r)=>(0,p.T)(M,t,e,r),registerAttributeParser:t=>{M.parsing.attributeParsers.push(t)},registerTagParser:t=>{M.parsing.tagParsers.push(t)}}}},82415(t,e,r){"use strict";r.d(e,{UU:()=>n.U,h4:()=>o.h4});var n=r(84997),o=(r(38374),r(90176));r(71922),r(5e3)},50335(t,e,r){"use strict";r.d(e,{m:()=>a});var n=r(85394),o=r(36236),i=r(89062),s=r(5e3);async function a(t,e,r,a={}){const u=(0,i.H)({url:(0,n.oq)(t.remoteURL,(0,o.O0)(e)),method:"COPY",headers:{Destination:(0,n.oq)(t.remoteURL,(0,o.O0)(r)),Overwrite:!1===a.overwrite?"F":"T",Depth:a.shallow?"0":"infinity"}},t,a),l=await(0,i.E)(u,t);(0,s.HT)(t,l)}},28161(t,e,r){"use strict";r.d(e,{c:()=>u});var n=r(85394),o=r(36236),i=r(89062),s=r(5e3),a=r(84830);async function u(t,e,r={}){if(!0===r.recursive)return async function(t,e,r={}){const n=(0,o.xi)((0,o.qb)(e));n.sort((t,e)=>t.length>e.length?1:e.length>t.length?-1:0);let i=!1;for(const o of n)if(i)await u(t,o,{...r,recursive:!1});else try{if("directory"!==(await(0,a.z)(t,o)).type)throw new Error(`Path includes a file: ${e}`)}catch(e){if(404!==e.status)throw e;i=!0,await u(t,o,{...r,recursive:!1})}}(t,e,r);const l=(0,i.H)({url:(0,n.oq)(t.remoteURL,(f=(0,o.O0)(e),f.endsWith("/")?f:f+"/")),method:"MKCOL"},t,r),c=await(0,i.E)(l,t);var f;(0,s.HT)(t,c)}},68476(t,e,r){"use strict";r.d(e,{V:()=>l,o:()=>c});var n=r(88310),o=r(85394),i=r(36236),s=r(89062),a=r(5e3);const u=()=>{};function l(t,e,r={}){const u=new(0,n.PassThrough);return async function(t,e,r={}){const n={};if("object"==typeof r.range&&"number"==typeof r.range.start){let t=`bytes=${r.range.start}-`;"number"==typeof r.range.end&&(t=`${t}${r.range.end}`),n.Range=t}const u=(0,s.H)({url:(0,o.oq)(t.remoteURL,(0,i.O0)(e)),method:"GET",headers:n},t,r),l=await(0,s.E)(u,t);if((0,a.HT)(t,l),n.Range&&206!==l.status){const t=new Error(`Invalid response code for partial request: ${l.status}`);throw t.status=l.status,t}return r.callback&&setTimeout(()=>{r.callback(l)},0),l.body}(t,e,r).then(t=>{t.pipe(u)}).catch(t=>{u.emit("error",t)}),u}function c(t,e,r={},l=u){const c=new(0,n.PassThrough),f={};!1===r.overwrite&&(f["If-None-Match"]="*");const h=(0,s.H)({url:(0,o.oq)(t.remoteURL,(0,i.O0)(e)),method:"PUT",headers:f,data:c,maxRedirects:0},t,r);return(0,s.E)(h,t).then(e=>(0,a.HT)(t,e)).then(t=>{setTimeout(()=>{l(t)},0)}).catch(t=>{c.emit("error",t)}),c}},76374(t,e,r){"use strict";r.d(e,{J:()=>a});var n=r(85394),o=r(36236),i=r(89062),s=r(5e3);async function a(t,e,r){r.url||(r.url=(0,n.oq)(t.remoteURL,(0,o.O0)(e)));const a=(0,i.H)(r,t,{}),u=await(0,i.E)(a,t);return(0,s.HT)(t,u),u}},77101(t,e,r){"use strict";r.d(e,{W:()=>a});var n=r(85394),o=r(36236),i=r(89062),s=r(5e3);async function a(t,e,r={}){const a=(0,i.H)({url:(0,n.oq)(t.remoteURL,(0,o.O0)(e)),method:"DELETE"},t,r),u=await(0,i.E)(a,t);(0,s.HT)(t,u)}},74419(t,e,r){"use strict";r.d(e,{A:()=>l});var n=r(12692),o=r(85394),i=r(36236),s=r(90176),a=r(89062),u=r(5e3);async function l(t,e,r={}){const l=(0,a.H)({url:(0,o.oq)(t.remoteURL,(0,i.O0)(e),"/"),method:"PROPFIND",headers:{Accept:"text/plain,application/xml",Depth:r.deep?"infinity":"1"}},t,r),c=await(0,a.E)(l,t);(0,u.HT)(t,c);const f=await c.text();if(!f)throw new Error("Failed parsing directory contents: Empty response");const h=await(0,s.h4)(f,t.parsing),p=(0,i.dU)(e);let d=function(t,e,r,a=!1,u=!1){const l=n.join(e,"/"),{multistatus:{response:c}}=t,f=c.map(t=>{const e=(0,o.S8)(t.href),{propstat:{prop:r}}=t,u="/"===l?decodeURIComponent((0,i.qb)(e)):(0,i.qb)(n.relative(decodeURIComponent(l),decodeURIComponent(e)));return(0,s.ch)(r,u,a)});return u?f:f.filter(t=>t.basename&&("file"===t.type||t.filename!==r.replace(/\/$/,"")))}(h,(0,i.dU)(t.remoteBasePath||t.remotePath),p,r.details,r.includeSelf);return r.glob&&(d=(0,u.eh)(d,r.glob)),(0,u.hq)(c,d,r.details)}},75892(t,e,r){"use strict";r.d(e,{t:()=>o});var n=r(84830);async function o(t,e,r={}){try{return await(0,n.z)(t,e,r),!0}catch(t){if(404===t.status)return!1;throw t}}},10524(t,e,r){"use strict";r.d(e,{p:()=>a});var n=r(85394),o=r(36236),i=r(89062),s=r(5e3);async function a(t,e,r={}){const a=(0,i.H)({url:(0,n.oq)(t.remoteURL,(0,o.O0)(e)),method:"OPTIONS"},t,r),u=await(0,i.E)(a,t);try{(0,s.HT)(t,u)}catch(t){throw t}return{compliance:(u.headers.get("DAV")??"").split(",").map(t=>t.trim()),server:u.headers.get("Server")??""}}},17658(t,e,r){"use strict";r.d(e,{F:()=>p,b:()=>d});var n=r(42294),o=r(85394),i=r(36236),s=r(57221),a=r(22921),u=r(89062),l=r(5e3),c=r(38374),f=r(62045).hp;const h=t=>t;async function p(t,e,r={}){const{format:s="binary"}=r;if("binary"!==s&&"text"!==s)throw new n.GU({info:{code:c.O4.InvalidOutputFormat}},`Invalid output format: ${s}`);return"text"===s?async function(t,e,r={}){const n=(0,u.H)({url:(0,o.oq)(t.remoteURL,(0,i.O0)(e)),method:"GET",headers:{Accept:"text/plain"},transformResponse:[h]},t,r),s=await(0,u.E)(n,t);(0,l.HT)(t,s);const a=await s.text();return(0,l.hq)(s,a,r.details)}(t,e,r):async function(t,e,r={}){const n=(0,u.H)({url:(0,o.oq)(t.remoteURL,(0,i.O0)(e)),method:"GET"},t,r),s=await(0,u.E)(n,t);let c;return(0,l.HT)(t,s),c=(0,a.H)()||(0,a.l)()?await s.arrayBuffer():f.from(await s.arrayBuffer()),(0,l.hq)(s,c,r.details)}(t,e,r)}function d(t,e){let r=(0,o.oq)(t.remoteURL,(0,i.O0)(e));const a=/^https:/i.test(r)?"https":"http";switch(t.authType){case c.hT.None:break;case c.hT.Password:{const e=t.headers.Authorization.replace(/^Basic /i,"").trim(),n=(0,s.Ey)(e);r=r.replace(/^https?:\/\//,`${a}://${n}@`);break}default:throw new n.GU({info:{code:c.O4.LinkUnsupportedAuthType}},`Unsupported auth type for file link: ${t.authType}`)}return r}},86772(t,e,r){"use strict";r.d(e,{T:()=>u});var n=r(89062),o=r(5e3),i=r(90176),s=r(85394),a=r(7815);async function u(t,e={}){const r=e.path||"/",u=(0,n.H)({url:(0,s.oq)(t.remoteURL,r),method:"PROPFIND",headers:{Accept:"text/plain,application/xml",Depth:"0"}},t,e),l=await(0,n.E)(u,t);(0,o.HT)(t,l);const c=await l.text(),f=await(0,i.h4)(c,t.parsing),h=(0,a.K)(f);return(0,o.hq)(l,h,e.details)}},39615(t,e,r){"use strict";r.d(e,{T:()=>f,s:()=>c});var n=r(26602),o=r(85394),i=r(36236),s=r(27562),a=r(89062),u=r(5e3);const l="Infinite, Second-4100000000";async function c(t,e,r={}){const{refreshToken:c,timeout:f=l}=r,h={Accept:"text/plain,application/xml",Timeout:f};c&&(h.If=c);const p=(0,a.H)({url:(0,o.oq)(t.remoteURL,(0,i.O0)(e)),method:"LOCK",headers:h,data:(0,s.A)(t.contactHref)},t,r),d=await(0,a.E)(p,t);(0,u.HT)(t,d);const g=await d.text(),y=(0,s.o)(g),m=n.get(y,"prop.lockdiscovery.activelock.locktoken.href"),b=n.get(y,"prop.lockdiscovery.activelock.timeout");if(!m)throw(0,u.YQ)(d,"No lock token received: ");return{token:m,serverTimeout:b}}async function f(t,e,r,n={}){const s=(0,a.H)({url:(0,o.oq)(t.remoteURL,(0,i.O0)(e)),method:"UNLOCK",headers:{"Lock-Token":r}},t,n),l=await(0,a.E)(s,t);if((0,u.HT)(t,l),204!==l.status&&200!==l.status)throw(0,u.YQ)(l)}},77087(t,e,r){"use strict";r.d(e,{m:()=>a});var n=r(85394),o=r(36236),i=r(89062),s=r(5e3);async function a(t,e,r,a={}){const u=(0,i.H)({url:(0,n.oq)(t.remoteURL,(0,o.O0)(e)),method:"MOVE",headers:{Destination:(0,n.oq)(t.remoteURL,(0,o.O0)(r)),Overwrite:!1===a.overwrite?"F":"T"}},t,a),l=await(0,i.E)(u,t);(0,s.HT)(t,l)}},81838(t,e,r){"use strict";r.d(e,{V:()=>c});var n=r(42294),o=r(85394),i=r(36236),s=r(89062),a=r(5e3),u=r(10524),l=r(38374);async function c(t,e,r,c,f,h={}){const p=await(0,u.p)(t,e,h);if(p.compliance.includes("sabredav-partialupdate"))return await async function(t,e,r,u,c,f={}){if(r>u||r<0)throw new n.GU({info:{code:l.O4.InvalidUpdateRange}},`Invalid update range ${r} for partial update`);const h={"Content-Type":"application/x-sabredav-partialupdate","Content-Length":""+(u-r+1),"X-Update-Range":`bytes=${r}-${u}`},p=(0,s.H)({url:(0,o.oq)(t.remoteURL,(0,i.O0)(e)),method:"PATCH",headers:h,data:c},t,f),d=await(0,s.E)(p,t);(0,a.HT)(t,d)}(t,e,r,c,f,h);if(p.server.includes("Apache")&&p.compliance.includes(""))return await async function(t,e,r,u,c,f={}){if(r>u||r<0)throw new n.GU({info:{code:l.O4.InvalidUpdateRange}},`Invalid update range ${r} for partial update`);const h={"Content-Type":"application/octet-stream","Content-Length":""+(u-r+1),"Content-Range":`bytes ${r}-${u}/*`},p=(0,s.H)({url:(0,o.oq)(t.remoteURL,(0,i.O0)(e)),method:"PUT",headers:h,data:c},t,f),d=await(0,s.E)(p,t);(0,a.HT)(t,d)}(t,e,r,c,f,h);throw new n.GU({info:{code:l.O4.NotSupported}},"Not supported")}},30047(t,e,r){"use strict";r.d(e,{g:()=>p,w:()=>d});var n=r(42294),o=r(88310),i=r(57221),s=r(85394),a=r(36236),u=r(71922),l=r(22921),c=r(89062),f=r(5e3),h=r(38374);async function p(t,e,r,n={}){const{contentLength:i=!0,overwrite:h=!0}=n,p={"Content-Type":"application/octet-stream"};!(0,l.H)()&&!(0,l.l)()&&void 0!==o&&void 0!==o?.Readable&&r instanceof o.Readable||!1===i||(p["Content-Length"]="number"==typeof i?`${i}`:`${(0,u.J)(r)}`),h||(p["If-None-Match"]="*");const d=(0,c.H)({url:(0,s.oq)(t.remoteURL,(0,a.O0)(e)),method:"PUT",headers:p,data:r},t,n),g=await(0,c.E)(d,t);try{(0,f.HT)(t,g)}catch(t){const e=t;if(412!==e.status||h)throw e;return!1}return!0}function d(t,e){let r=`${(0,s.oq)(t.remoteURL,(0,a.O0)(e))}?Content-Type=application/octet-stream`;const o=/^https:/i.test(r)?"https":"http";switch(t.authType){case h.hT.None:break;case h.hT.Password:{const e=t.headers.Authorization.replace(/^Basic /i,"").trim(),n=(0,i.Ey)(e);r=r.replace(/^https?:\/\//,`${o}://${n}@`);break}default:throw new n.GU({info:{code:h.O4.LinkUnsupportedAuthType}},`Unsupported auth type for file link: ${t.authType}`)}return r}},80156(t,e,r){"use strict";r.d(e,{T:()=>u});var n=r(90176),o=r(85394),i=r(36236),s=r(89062),a=r(5e3);async function u(t,e,r={}){const{details:u=!1}=r,l=(0,s.H)({url:(0,o.oq)(t.remoteURL,(0,i.O0)(e)),method:"SEARCH",headers:{Accept:"text/plain,application/xml","Content-Type":t.headers["Content-Type"]||"application/xml; charset=utf-8"}},t,r),c=await(0,s.E)(l,t);(0,a.HT)(t,c);const f=await c.text(),h=await(0,n.h4)(f,t.parsing),p=(0,n.KA)(h,e,u);return(0,a.hq)(c,p,u)}},84830(t,e,r){"use strict";r.d(e,{z:()=>u});var n=r(90176),o=r(85394),i=r(36236),s=r(89062),a=r(5e3);async function u(t,e,r={}){const{details:u=!1}=r,l=(0,s.H)({url:(0,o.oq)(t.remoteURL,(0,i.O0)(e)),method:"PROPFIND",headers:{Accept:"text/plain,application/xml",Depth:"0"}},t,r),c=await(0,s.E)(l,t);(0,a.HT)(t,c);const f=await c.text(),h=await(0,n.h4)(f,t.parsing),p=(0,n.ky)(h,e,u);return(0,a.hq)(c,p,u)}},89062(t,e,r){"use strict";r.d(e,{E:()=>g,H:()=>d});var n=r(11568),o=r(11083),i=r(97192),s=r(84819),a=r(22921),u=r(90036),l=r(79275),c=r(79605),f=r(39299),h=r(38374),p=r(36942);function d(t,e,r){const n=(0,l.q)(t);return n.headers=(0,c.l)(e.headers,n.headers||{},r.headers||{}),void 0!==r.data&&(n.data=r.data),r.signal&&(n.signal=r.signal),e.httpAgent&&(n.httpAgent=e.httpAgent),e.httpsAgent&&(n.httpsAgent=e.httpsAgent),e.digest&&(n._digest=e.digest),"boolean"==typeof e.withCredentials&&(n.withCredentials=e.withCredentials),n}async function g(t,e){return e.authType===h.hT.Auto?async function(t,e){const r=await m(t);return r.ok?(e.authType=h.hT.Password,r):401==r.status&&(0,u.oD)(r)?(e.authType=h.hT.Digest,(0,p.e)(e,e.username,e.password,void 0,void 0),t._digest=e.digest,y(t)):r}(t,e):t._digest?y(t):m(t)}async function y(t){const e=t._digest;delete t._digest,e.hasDigestAuth&&(t=(0,l.h)(t,{headers:{Authorization:(0,u.XX)(t,e)}}));const r=await m(t);if(401==r.status){if(e.hasDigestAuth=(0,u.Wb)(r,e),e.hasDigestAuth){t=(0,l.h)(t,{headers:{Authorization:(0,u.XX)(t,e)}});const r=await m(t);return 401==r.status?e.hasDigestAuth=!1:e.nc++,r}}else e.nc++;return r}function m(t){const e=(0,s.G)();return e.patchInline("request",t=>e.patchInline("fetch",i.hd,t.url,function(t){let e={};const r={method:t.method};if(t.headers&&(e=(0,c.l)(e,t.headers)),void 0!==t.data){const[n,o]=(0,f.P)(t.data);r.body=n,e=(0,c.l)(e,o)}return t.signal&&(r.signal=t.signal),t.withCredentials&&(r.credentials="include"),(0,a.H)()||(0,a.l)()||(t.httpAgent||t.httpsAgent)&&(r.agent=e=>"http:"===e.protocol?t.httpAgent||new n.Agent:t.httpsAgent||new o.Agent),r.headers=e,r}(t)),t)}},5e3(t,e,r){"use strict";r.d(e,{HT:()=>s,YQ:()=>i,eh:()=>a,hq:()=>u});var n=r(44916),o=r(79605);function i(t,e=""){const r=new Error(`${e}Invalid response: ${t.status} ${t.statusText}`);return r.status=t.status,r.response=t,r}function s(t,e){const{status:r}=e;if(401===r&&t.digest)return e;if(r>=400)throw i(e);return e}function a(t,e){return t.filter(t=>(0,n.xF)(t.filename,e,{matchBase:!0}))}function u(t,e,r=!1){return r?{data:e,headers:t.headers?(0,o.N)(t.headers):{},status:t.status,statusText:t.statusText}:e}},39299(t,e,r){"use strict";r.d(e,{P:()=>a});var n=r(88310),o=r(47397),i=r(53850),s=r(22921);function a(t){if(!(0,s.H)()&&!(0,s.l)()&&t instanceof n.Readable)return[t,{}];if("string"==typeof t)return[t,{}];if((0,i.P)(t))return[t,{}];if((0,o.m)(t))return[t,{}];if(t&&"object"==typeof t)return[JSON.stringify(t),{"content-type":"application/json"}];throw new Error("Unable to convert request body: Unexpected body type: "+typeof t)}},35658(t,e,r){"use strict";r.d(e,{M:()=>o});var n=r(83503);function o(t,e,r,o,i,s,a){const u=a||n(`${e}:${r}:${o}`);return t&&"md5-sess"===t.toLowerCase()?n(`${u}:${i}:${s}`):u}},90176(t,e,r){"use strict";r.d(e,{KA:()=>p,ch:()=>f,h4:()=>c,i5:()=>d,jp:()=>u,ky:()=>h});var n,o=r(12692),i=r(1912),s=r(26602),a=r(36236);function u(t,e){if(!t.endsWith("propstat.prop.displayname"))return e}function l(t,e,r=n.Original){const o=s.get(t,e);return"array"===r&&!1===Array.isArray(o)?[o]:"object"===r&&Array.isArray(o)?o[0]:o}function c(t,e){return e=e??{attributeNamePrefix:"@",attributeParsers:[],tagParsers:[u]},new Promise(r=>{r(function(t){const{multistatus:e}=t;if(""===e)return{multistatus:{response:[]}};if(!e)throw new Error("Invalid response: No root multistatus found");const r={multistatus:Array.isArray(e)?e[0]:e};return s.set(r,"multistatus.response",l(r,"multistatus.response",n.Array)),s.set(r,"multistatus.response",s.get(r,"multistatus.response").map(t=>function(t){const e=Object.assign({},t);return e.status?s.set(e,"status",l(e,"status",n.Object)):(s.set(e,"propstat",l(e,"propstat",n.Object)),s.set(e,"propstat.prop",l(e,"propstat.prop",n.Object))),e}(t))),r}(function({attributeNamePrefix:t,attributeParsers:e,tagParsers:r}){return new i.A({allowBooleanAttributes:!0,attributeNamePrefix:t,textNodeName:"text",ignoreAttributes:!1,removeNSPrefix:!0,numberParseOptions:{hex:!0,leadingZeros:!1},attributeValueProcessor(t,r,n){for(const t of e)try{const e=t(n,r);if(e!==r)return e}catch(t){}return r},tagValueProcessor(t,e,n){for(const t of r)try{const r=t(n,e);if(r!==e)return r}catch(t){}return e}})}(e).parse(t)))})}function f(t,e,r=!1){const{getlastmodified:n=null,getcontentlength:i="0",resourcetype:s=null,getcontenttype:a=null,getetag:u=null}=t,l=s&&"object"==typeof s&&void 0!==s.collection?"directory":"file",c={filename:e,basename:o.basename(e),lastmod:n,size:parseInt(i,10),type:l,etag:"string"==typeof u?u.replace(/"/g,""):null};return"file"===l&&(c.mime=a&&"string"==typeof a?a.split(";")[0]:""),r&&(void 0!==t.displayname&&(t.displayname=String(t.displayname)),c.props=t),c}function h(t,e,r=!1){let n=null;try{t.multistatus.response[0].propstat&&(n=t.multistatus.response[0])}catch(t){}if(!n)throw new Error("Failed getting item stat: bad response");const{propstat:{prop:o,status:i}}=n,[s,u,l]=i.split(" ",3),c=parseInt(u,10);if(c>=400){const t=new Error(`Invalid response: ${c} ${l}`);throw t.status=c,t}return f(o,(0,a.qb)(e),r)}function p(t,e,r){const n={truncated:!1,results:[]};return n.truncated=t.multistatus.response.some(t=>"507"===(t.status||t.propstat?.status).split(" ",3)?.[1]&&t.href.replace(/\/$/,"").endsWith((0,a.O0)(e).replace(/\/$/,""))),t.multistatus.response.forEach(t=>{if(void 0===t.propstat)return;const e=t.href.split("/").map(decodeURIComponent).join("/");n.results.push(f(t.propstat.prop,e,r))}),n}function d(t){switch(String(t)){case"-3":return"unlimited";case"-2":case"-1":return"unknown";default:return parseInt(String(t),10)}}!function(t){t.Array="array",t.Object="object",t.Original="original"}(n||(n={}))},57221(t,e,r){"use strict";r.d(e,{Ey:()=>o,nk:()=>i});var n=r(85914);function o(t){return n.decode(t)}function i(t){return n.encode(t)}r(15723)},79605(t,e,r){"use strict";function n(t){const e={};for(const r of t.keys())e[r]=t.get(r);return e}function o(...t){if(0===t.length)return{};const e={};return t.reduce((t,r)=>(Object.keys(r).forEach(n=>{const o=n.toLowerCase();e.hasOwnProperty(o)?t[e[o]]=r[n]:(e[o]=n,t[n]=r[n])}),t),{})}r.d(e,{N:()=>n,l:()=>o})},79275(t,e,r){"use strict";function n(t){return function(t){if("object"!=typeof t||null===t||"[object Object]"!=Object.prototype.toString.call(t))return!1;if(null===Object.getPrototypeOf(t))return!0;let e=t;for(;null!==Object.getPrototypeOf(e);)e=Object.getPrototypeOf(e);return Object.getPrototypeOf(t)===e}(t)?Object.assign({},t):Object.setPrototypeOf(Object.assign({},t),Object.getPrototypeOf(t))}function o(...t){let e=null,r=[...t];for(;r.length>0;){const t=r.shift();e=e?i(e,t):n(t)}return e}function i(t,e){const r=n(t);return Object.keys(e).forEach(t=>{r.hasOwnProperty(t)?Array.isArray(e[t])?r[t]=Array.isArray(r[t])?[...r[t],...e[t]]:[...e[t]]:"object"==typeof e[t]&&e[t]?r[t]="object"==typeof r[t]&&r[t]?i(r[t],e[t]):n(e[t]):r[t]=e[t]:r[t]=e[t]}),r}r.d(e,{h:()=>o,q:()=>n})},36236(t,e,r){"use strict";r.d(e,{O0:()=>a,dU:()=>l,qb:()=>c,xi:()=>u});var n=r(42294),o=r(12692);const i="__PATH_SEPARATOR_POSIX__",s="__PATH_SEPARATOR_WINDOWS__";function a(t){try{const e=t.replace(/\//g,i).replace(/\\\\/g,s);return encodeURIComponent(e).split(s).join("\\\\").split(i).join("/")}catch(t){throw new n.GU(t,"Failed encoding path")}}function u(t){if(!t||"/"===t)return[];let e=t;const r=[];do{r.push(e),e=o.dirname(e)}while(e&&"/"!==e);return r}function l(t){return t.startsWith("/")?t:"/"+t}function c(t){let e=t;return"/"!==e[0]&&(e="/"+e),/^.+\/$/.test(e)&&(e=e.substr(0,e.length-1)),e}},7815(t,e,r){"use strict";r.d(e,{K:()=>o});var n=r(90176);function o(t){try{const[e]=t.multistatus.response,{propstat:{prop:{"quota-used-bytes":r,"quota-available-bytes":o}}}=e;return void 0!==r&&void 0!==o?{used:parseInt(String(r),10),available:(0,n.i5)(o)}:null}catch(t){}return null}},71922(t,e,r){"use strict";r.d(e,{J:()=>u});var n=r(42294),o=r(67691),i=r(47397),s=r(53850),a=r(38374);function u(t){if((0,i.m)(t))return t.byteLength;if((0,s.P)(t))return t.length;if("string"==typeof t)return(0,o.d)(t);throw new n.GU({info:{code:a.O4.DataTypeNoLength}},"Cannot calculate data length: Invalid type")}},85394(t,e,r){"use strict";r.d(e,{S8:()=>l,oq:()=>u,wB:()=>a});var n=r(61160),o=r(42294),i=r(406),s=r(36236);function a(t){let e=new n(t).pathname;return e.length<=0&&(e="/"),(0,s.qb)(e)}function u(...t){return(0,i.A)(t.reduce((t,e,r)=>((0===r||"/"!==e||"/"===e&&"/"!==t[t.length-1])&&t.push(e),t),[]))}function l(t){try{return t.replace(/^https?:\/\/[^\/]+/,"")}catch(t){throw new o.GU(t,"Failed normalising HREF")}}},27562(t,e,r){"use strict";r.d(e,{A:()=>i,o:()=>a});var n=r(1912),o=r(99111);function i(t){return new o.A({attributeNamePrefix:"@_",format:!0,ignoreAttributes:!1,suppressEmptyNode:!0}).build(s({lockinfo:{"@_xmlns:d":"DAV:",lockscope:{exclusive:{}},locktype:{write:{}},owner:{href:t}}},"d"))}function s(t,e){const r={...t};for(const t in r)r.hasOwnProperty(t)&&(r[t]&&"object"==typeof r[t]&&-1===t.indexOf(":")?(r[`${e}:${t}`]=s(r[t],e),delete r[t]):!1===/^@_/.test(t)&&(r[`${e}:${t}`]=r[t],delete r[t]));return r}function a(t){return new n.A({removeNSPrefix:!0,parseAttributeValue:!0,parseTagValue:!0}).parse(t)}},38374(t,e,r){"use strict";var n,o;r.d(e,{O4:()=>o,hT:()=>n}),r(97192),function(t){t.Auto="auto",t.Digest="digest",t.None="none",t.Password="password",t.Token="token"}(n||(n={})),function(t){t.DataTypeNoLength="data-type-no-length",t.InvalidAuthType="invalid-auth-type",t.InvalidOutputFormat="invalid-output-format",t.LinkUnsupportedAuthType="link-unsupported-auth",t.InvalidUpdateRange="invalid-update-range",t.NotSupported="not-supported"}(o||(o={}))},27341(t,e,r){"use strict";new Map([[0,65533],[128,8364],[130,8218],[131,402],[132,8222],[133,8230],[134,8224],[135,8225],[136,710],[137,8240],[138,352],[139,8249],[140,338],[142,381],[145,8216],[146,8217],[147,8220],[148,8221],[149,8226],[150,8211],[151,8212],[152,732],[153,8482],[154,353],[155,8250],[156,339],[158,382],[159,376]]),String.fromCodePoint},26549(t,e,r){"use strict";var n,o,i,s;r(75780),r(92148),r(27341),function(t){t[t.NUM=35]="NUM",t[t.SEMI=59]="SEMI",t[t.EQUALS=61]="EQUALS",t[t.ZERO=48]="ZERO",t[t.NINE=57]="NINE",t[t.LOWER_A=97]="LOWER_A",t[t.LOWER_F=102]="LOWER_F",t[t.LOWER_X=120]="LOWER_X",t[t.LOWER_Z=122]="LOWER_Z",t[t.UPPER_A=65]="UPPER_A",t[t.UPPER_F=70]="UPPER_F",t[t.UPPER_Z=90]="UPPER_Z"}(n||(n={})),function(t){t[t.VALUE_LENGTH=49152]="VALUE_LENGTH",t[t.BRANCH_LENGTH=16256]="BRANCH_LENGTH",t[t.JUMP_TABLE=127]="JUMP_TABLE"}(o||(o={})),function(t){t[t.EntityStart=0]="EntityStart",t[t.NumericStart=1]="NumericStart",t[t.NumericDecimal=2]="NumericDecimal",t[t.NumericHex=3]="NumericHex",t[t.NamedEntity=4]="NamedEntity"}(i||(i={})),function(t){t[t.Legacy=0]="Legacy",t[t.Strict=1]="Strict",t[t.Attribute=2]="Attribute"}(s||(s={}))},13197(t,e,r){"use strict";r(91573),r(40144)},40144(t,e,r){"use strict";new Map([[34,"""],[38,"&"],[39,"'"],[60,"<"],[62,">"]]),String.prototype.codePointAt,new Map([[34,"""],[38,"&"],[160," "]]),new Map([[38,"&"],[60,"<"],[62,">"],[160," "]])},75780(t,e,r){},92148(t,e,r){},91573(t,e,r){},15723(t,e,r){"use strict";var n,o;r(26549),r(13197),r(40144),function(t){t[t.XML=0]="XML",t[t.HTML=1]="HTML"}(n||(n={})),function(t){t[t.UTF8=0]="UTF8",t[t.ASCII=1]="ASCII",t[t.Extensive=2]="Extensive",t[t.Attribute=3]="Attribute",t[t.Text=4]="Text"}(o||(o={}))},84300(t,e,r){"use strict";r.d(e,{f:()=>n});const n=t=>{if("string"!=typeof t)throw new TypeError("invalid pattern");if(t.length>65536)throw new TypeError("pattern is too long")}},17908(t,e,r){"use strict";r.d(e,{d:()=>g});var n=r(73733),o=r(24754);const i=new Set(["!","?","+","*","@"]),s=t=>i.has(t),a="(?!\\.)",u=new Set(["[","."]),l=new Set(["..","."]),c=new Set("().*{}+?[]^$\\!"),f=t=>t.replace(/[-[\]{}()*+?.,\\^$|#\s]/g,"\\$&"),h="[^/]",p=h+"*?",d=h+"+?";class g{type;#t;#e;#r=!1;#n=[];#o;#i;#s;#a=!1;#u;#l;#c=!1;constructor(t,e,r={}){this.type=t,t&&(this.#e=!0),this.#o=e,this.#t=this.#o?this.#o.#t:this,this.#u=this.#t===this?r:this.#t.#u,this.#s=this.#t===this?[]:this.#t.#s,"!"!==t||this.#t.#a||this.#s.push(this),this.#i=this.#o?this.#o.#n.length:0}get hasMagic(){if(void 0!==this.#e)return this.#e;for(const t of this.#n)if("string"!=typeof t&&(t.type||t.hasMagic))return this.#e=!0;return this.#e}toString(){return void 0!==this.#l?this.#l:this.type?this.#l=this.type+"("+this.#n.map(t=>String(t)).join("|")+")":this.#l=this.#n.map(t=>String(t)).join("")}#f(){if(this!==this.#t)throw new Error("should only call on root");if(this.#a)return this;let t;for(this.toString(),this.#a=!0;t=this.#s.pop();){if("!"!==t.type)continue;let e=t,r=e.#o;for(;r;){for(let n=e.#i+1;!r.type&&n"string"==typeof t?t:t.toJSON()):[this.type,...this.#n.map(t=>t.toJSON())];return this.isStart()&&!this.type&&t.unshift([]),this.isEnd()&&(this===this.#t||this.#t.#a&&"!"===this.#o?.type)&&t.push({}),t}isStart(){if(this.#t===this)return!0;if(!this.#o?.isStart())return!1;if(0===this.#i)return!0;const t=this.#o;for(let e=0;e{const[n,o,i,s]="string"==typeof e?g.#p(e,this.#e,r):e.toRegExpSource(t);return this.#e=this.#e||i,this.#r=this.#r||s,n}).join("");let i="";if(this.isStart()&&"string"==typeof this.#n[0]&&(1!==this.#n.length||!l.has(this.#n[0]))){const r=u,o=e&&r.has(n.charAt(0))||n.startsWith("\\.")&&r.has(n.charAt(2))||n.startsWith("\\.\\.")&&r.has(n.charAt(4)),s=!e&&!t&&r.has(n.charAt(0));i=o?"(?!(?:^|/)\\.\\.?(?:$|/))":s?a:""}let s="";return this.isEnd()&&this.#t.#a&&"!"===this.#o?.type&&(s="(?:$|\\/)"),[i+n+s,(0,o.x)(n),this.#e=!!this.#e,this.#r]}const r="*"===this.type||"+"===this.type,n="!"===this.type?"(?:(?!(?:":"(?:";let i=this.#d(e);if(this.isStart()&&this.isEnd()&&!i&&"!"!==this.type){const t=this.toString();return this.#n=[t],this.type=null,this.#e=void 0,[t,(0,o.x)(this.toString()),!1,!1]}let s=!r||t||e?"":this.#d(!0);s===i&&(s=""),s&&(i=`(?:${i})(?:${s})*?`);let c="";return c="!"===this.type&&this.#c?(this.isStart()&&!e?a:"")+d:n+i+("!"===this.type?"))"+(!this.isStart()||e||t?"":a)+p+")":"@"===this.type?")":"?"===this.type?")?":"+"===this.type&&s?")":"*"===this.type&&s?")?":`)${this.type}`),[c,(0,o.x)(i),this.#e=!!this.#e,this.#r]}#d(t){return this.#n.map(e=>{if("string"==typeof e)throw new Error("string type in extglob ast??");const[r,n,o,i]=e.toRegExpSource(t);return this.#r=this.#r||i,r}).filter(t=>!(this.isStart()&&this.isEnd()&&!t)).join("|")}static#p(t,e,r=!1){let i=!1,s="",a=!1;for(let o=0;os});const n={"[:alnum:]":["\\p{L}\\p{Nl}\\p{Nd}",!0],"[:alpha:]":["\\p{L}\\p{Nl}",!0],"[:ascii:]":["\\x00-\\x7f",!1],"[:blank:]":["\\p{Zs}\\t",!0],"[:cntrl:]":["\\p{Cc}",!0],"[:digit:]":["\\p{Nd}",!0],"[:graph:]":["\\p{Z}\\p{C}",!0,!0],"[:lower:]":["\\p{Ll}",!0],"[:print:]":["\\p{C}",!0],"[:punct:]":["\\p{P}",!0],"[:space:]":["\\p{Z}\\t\\r\\n\\v\\f",!0],"[:upper:]":["\\p{Lu}",!0],"[:word:]":["\\p{L}\\p{Nl}\\p{Nd}\\p{Pc}",!0],"[:xdigit:]":["A-Fa-f0-9",!1]},o=t=>t.replace(/[[\]\\-]/g,"\\$&"),i=t=>t.join(""),s=(t,e)=>{const r=e;if("["!==t.charAt(r))throw new Error("not in a brace expression");const s=[],a=[];let u=r+1,l=!1,c=!1,f=!1,h=!1,p=r,d="";t:for(;ud?s.push(o(d)+"-"+o(e)):e===d&&s.push(o(e)),d="",u++):t.startsWith("-]",u+1)?(s.push(o(e+"-")),u+=2):t.startsWith("-",u+1)?(d=e,u+=2):(s.push(o(e)),u++)}else f=!0,u++}else h=!0,u++}if(pn});const n=(t,{windowsPathsNoEscape:e=!1}={})=>e?t.replace(/[?*()[\]]/g,"[$&]"):t.replace(/[?*()[\]\\]/g,"\\$&")},44916(t,e,r){"use strict";r.d(e,{xF:()=>l});var n=r(68928),o=r(84300),i=r(17908),s=r(25093),a=r(24754),u=r(65606);const l=(t,e,r={})=>((0,o.f)(e),!(!r.nocomment&&"#"===e.charAt(0))&&new L(e,r).match(t)),c=/^\*+([^+@!?\*\[\(]*)$/,f=t=>e=>!e.startsWith(".")&&e.endsWith(t),h=t=>e=>e.endsWith(t),p=t=>(t=t.toLowerCase(),e=>!e.startsWith(".")&&e.toLowerCase().endsWith(t)),d=t=>(t=t.toLowerCase(),e=>e.toLowerCase().endsWith(t)),g=/^\*+\.\*+$/,y=t=>!t.startsWith(".")&&t.includes("."),m=t=>"."!==t&&".."!==t&&t.includes("."),b=/^\.\*+$/,v=t=>"."!==t&&".."!==t&&t.startsWith("."),w=/^\*+$/,E=t=>0!==t.length&&!t.startsWith("."),x=t=>0!==t.length&&"."!==t&&".."!==t,S=/^\?+([^+@!?\*\[\(]*)?$/,O=([t,e=""])=>{const r=j([t]);return e?(e=e.toLowerCase(),t=>r(t)&&t.toLowerCase().endsWith(e)):r},_=([t,e=""])=>{const r=N([t]);return e?(e=e.toLowerCase(),t=>r(t)&&t.toLowerCase().endsWith(e)):r},A=([t,e=""])=>{const r=N([t]);return e?t=>r(t)&&t.endsWith(e):r},T=([t,e=""])=>{const r=j([t]);return e?t=>r(t)&&t.endsWith(e):r},j=([t])=>{const e=t.length;return t=>t.length===e&&!t.startsWith(".")},N=([t])=>{const e=t.length;return t=>t.length===e&&"."!==t&&".."!==t},R="object"==typeof u&&u?"object"==typeof u.env&&u.env&&u.env.__MINIMATCH_TESTING_PLATFORM__||u.platform:"posix",P="win32"===R?"\\":"/";l.sep=P;const k=Symbol("globstar **");l.GLOBSTAR=k,l.filter=(t,e={})=>r=>l(r,t,e);const C=(t,e={})=>Object.assign({},t,e);l.defaults=t=>{if(!t||"object"!=typeof t||!Object.keys(t).length)return l;const e=l;return Object.assign((r,n,o={})=>e(r,n,C(t,o)),{Minimatch:class extends e.Minimatch{constructor(e,r={}){super(e,C(t,r))}static defaults(r){return e.defaults(C(t,r)).Minimatch}},AST:class extends e.AST{constructor(e,r,n={}){super(e,r,C(t,n))}static fromGlob(r,n={}){return e.AST.fromGlob(r,C(t,n))}},unescape:(r,n={})=>e.unescape(r,C(t,n)),escape:(r,n={})=>e.escape(r,C(t,n)),filter:(r,n={})=>e.filter(r,C(t,n)),defaults:r=>e.defaults(C(t,r)),makeRe:(r,n={})=>e.makeRe(r,C(t,n)),braceExpand:(r,n={})=>e.braceExpand(r,C(t,n)),match:(r,n,o={})=>e.match(r,n,C(t,o)),sep:e.sep,GLOBSTAR:k})};const I=(t,e={})=>((0,o.f)(t),e.nobrace||!/\{(?:(?!\{).)*\}/.test(t)?[t]:n(t));l.braceExpand=I,l.makeRe=(t,e={})=>new L(t,e).makeRe(),l.match=(t,e,r={})=>{const n=new L(e,r);return t=t.filter(t=>n.match(t)),n.options.nonull&&!t.length&&t.push(e),t};const M=/[?*]|[+@!]\(.*?\)|\[|\]/;class L{options;set;pattern;windowsPathsNoEscape;nonegate;negate;comment;empty;preserveMultipleSlashes;partial;globSet;globParts;nocase;isWindows;platform;windowsNoMagicRoot;regexp;constructor(t,e={}){(0,o.f)(t),e=e||{},this.options=e,this.pattern=t,this.platform=e.platform||R,this.isWindows="win32"===this.platform,this.windowsPathsNoEscape=!!e.windowsPathsNoEscape||!1===e.allowWindowsEscape,this.windowsPathsNoEscape&&(this.pattern=this.pattern.replace(/\\/g,"/")),this.preserveMultipleSlashes=!!e.preserveMultipleSlashes,this.regexp=null,this.negate=!1,this.nonegate=!!e.nonegate,this.comment=!1,this.empty=!1,this.partial=!!e.partial,this.nocase=!!this.options.nocase,this.windowsNoMagicRoot=void 0!==e.windowsNoMagicRoot?e.windowsNoMagicRoot:!(!this.isWindows||!this.nocase),this.globSet=[],this.globParts=[],this.set=[],this.make()}hasMagic(){if(this.options.magicalBraces&&this.set.length>1)return!0;for(const t of this.set)for(const e of t)if("string"!=typeof e)return!0;return!1}debug(...t){}make(){const t=this.pattern,e=this.options;if(!e.nocomment&&"#"===t.charAt(0))return void(this.comment=!0);if(!t)return void(this.empty=!0);this.parseNegate(),this.globSet=[...new Set(this.braceExpand())],e.debug&&(this.debug=(...t)=>console.error(...t)),this.debug(this.pattern,this.globSet);const r=this.globSet.map(t=>this.slashSplit(t));this.globParts=this.preprocess(r),this.debug(this.pattern,this.globParts);let n=this.globParts.map((t,e,r)=>{if(this.isWindows&&this.windowsNoMagicRoot){const e=!(""!==t[0]||""!==t[1]||"?"!==t[2]&&M.test(t[2])||M.test(t[3])),r=/^[a-z]:/i.test(t[0]);if(e)return[...t.slice(0,4),...t.slice(4).map(t=>this.parse(t))];if(r)return[t[0],...t.slice(1).map(t=>this.parse(t))]}return t.map(t=>this.parse(t))});if(this.debug(this.pattern,n),this.set=n.filter(t=>-1===t.indexOf(!1)),this.isWindows)for(let t=0;t=2?(t=this.firstPhasePreProcess(t),t=this.secondPhasePreProcess(t)):t=e>=1?this.levelOneOptimize(t):this.adjascentGlobstarOptimize(t),t}adjascentGlobstarOptimize(t){return t.map(t=>{let e=-1;for(;-1!==(e=t.indexOf("**",e+1));){let r=e;for(;"**"===t[r+1];)r++;r!==e&&t.splice(e,r-e)}return t})}levelOneOptimize(t){return t.map(t=>0===(t=t.reduce((t,e)=>{const r=t[t.length-1];return"**"===e&&"**"===r?t:".."===e&&r&&".."!==r&&"."!==r&&"**"!==r?(t.pop(),t):(t.push(e),t)},[])).length?[""]:t)}levelTwoFileOptimize(t){Array.isArray(t)||(t=this.slashSplit(t));let e=!1;do{if(e=!1,!this.preserveMultipleSlashes){for(let r=1;rn&&r.splice(n+1,o-n);let i=r[n+1];const s=r[n+2],a=r[n+3];if(".."!==i)continue;if(!s||"."===s||".."===s||!a||"."===a||".."===a)continue;e=!0,r.splice(n,1);const u=r.slice(0);u[n]="**",t.push(u),n--}if(!this.preserveMultipleSlashes){for(let t=1;tt.length)}partsMatch(t,e,r=!1){let n=0,o=0,i=[],s="";for(;ni?e=e.slice(s):i>s&&(t=t.slice(i)))}}const{optimizationLevel:o=1}=this.options;o>=2&&(t=this.levelTwoFileOptimize(t)),this.debug("matchOne",this,{file:t,pattern:e}),this.debug("matchOne",t.length,e.length);for(var i=0,s=0,a=t.length,u=e.length;i>> no match, partial?",t,f,e,h),f!==a))}let o;if("string"==typeof l?(o=c===l,this.debug("string match",l,c,o)):(o=l.test(c),this.debug("pattern match",l,c,o)),!o)return!1}if(i===a&&s===u)return!0;if(i===a)return r;if(s===u)return i===a-1&&""===t[i];throw new Error("wtf?")}braceExpand(){return I(this.pattern,this.options)}parse(t){(0,o.f)(t);const e=this.options;if("**"===t)return k;if(""===t)return"";let r,n=null;(r=t.match(w))?n=e.dot?x:E:(r=t.match(c))?n=(e.nocase?e.dot?d:p:e.dot?h:f)(r[1]):(r=t.match(S))?n=(e.nocase?e.dot?_:O:e.dot?A:T)(r):(r=t.match(g))?n=e.dot?m:y:(r=t.match(b))&&(n=v);const s=i.d.fromGlob(t,this.options).toMMPattern();return n&&"object"==typeof s&&Reflect.defineProperty(s,"test",{value:n}),s}makeRe(){if(this.regexp||!1===this.regexp)return this.regexp;const t=this.set;if(!t.length)return this.regexp=!1,this.regexp;const e=this.options,r=e.noglobstar?"[^/]*?":e.dot?"(?:(?!(?:\\/|^)(?:\\.{1,2})($|\\/)).)*?":"(?:(?!(?:\\/|^)\\.).)*?",n=new Set(e.nocase?["i"]:[]);let o=t.map(t=>{const e=t.map(t=>{if(t instanceof RegExp)for(const e of t.flags.split(""))n.add(e);return"string"==typeof t?t.replace(/[-[\]{}()*+?.,\\^$|#\s]/g,"\\$&"):t===k?k:t._src});return e.forEach((t,n)=>{const o=e[n+1],i=e[n-1];t===k&&i!==k&&(void 0===i?void 0!==o&&o!==k?e[n+1]="(?:\\/|"+r+"\\/)?"+o:e[n]=r:void 0===o?e[n-1]=i+"(?:\\/|"+r+")?":o!==k&&(e[n-1]=i+"(?:\\/|\\/"+r+"\\/)"+o,e[n+1]=k))}),e.filter(t=>t!==k).join("/")}).join("|");const[i,s]=t.length>1?["(?:",")"]:["",""];o="^"+i+o+s+"$",this.negate&&(o="^(?!"+o+").+$");try{this.regexp=new RegExp(o,[...n].join(""))}catch(t){this.regexp=!1}return this.regexp}slashSplit(t){return this.preserveMultipleSlashes?t.split("/"):this.isWindows&&/^\/\/[^\/]+/.test(t)?["",...t.split(/\/+/)]:t.split(/\/+/)}match(t,e=this.partial){if(this.debug("match",t,this.pattern),this.comment)return!1;if(this.empty)return""===t;if("/"===t&&e)return!0;const r=this.options;this.isWindows&&(t=t.split("\\").join("/"));const n=this.slashSplit(t);this.debug(this.pattern,"split",n);const o=this.set;this.debug(this.pattern,"set",o);let i=n[n.length-1];if(!i)for(let t=n.length-2;!i&&t>=0;t--)i=n[t];for(let t=0;tn});const n=(t,{windowsPathsNoEscape:e=!1}={})=>e?t.replace(/\[([^\/\\])\]/g,"$1"):t.replace(/((?!\\).|^)\[([^\/\\])\]/g,"$1$2").replace(/\\([^\/])/g,"$1")}},o={};function i(t){var e=o[t];if(void 0!==e)return e.exports;var r=o[t]={id:t,loaded:!1,exports:{}};return n[t].call(r.exports,r,r.exports,i),r.loaded=!0,r.exports}i.m=n,t=[],i.O=(e,r,n,o)=>{if(!r){var s=1/0;for(c=0;c=o)&&Object.keys(i.O).every(t=>i.O[t](r[u]))?r.splice(u--,1):(a=!1,o0&&t[c-1][2]>o;c--)t[c]=t[c-1];t[c]=[r,n,o]},i.n=t=>{var e=t&&t.__esModule?()=>t.default:()=>t;return i.d(e,{a:e}),e},i.d=(t,e)=>{for(var r in e)i.o(e,r)&&!i.o(t,r)&&Object.defineProperty(t,r,{enumerable:!0,get:e[r]})},i.f={},i.e=t=>Promise.all(Object.keys(i.f).reduce((e,r)=>(i.f[r](t,e),e),[])),i.u=t=>t+"-"+t+".js?v="+{1140:"dd55e1cf2dab9870eea9",2221:"2dad9baace69cfd4a3be",3556:"57d00a12b4953e229068",4508:"04b1afd183e5ecdd9cae",4906:"75718b28aced26adc4af",5448:"71cfe268d6f1213c4735",5528:"1445efe9cbaf4e4cbcb8",5862:"580b9c2e231a9169a12f",6015:"8ac07126adf0759a3464",7039:"be7eefcb933f99fc5b1f",7859:"5bcb1bbacda3204063dd",7910:"de857920f8beb5205bbc",8124:"75a422293ae2add34a10",8815:"0f63c2eb085d7b08be1b"}[t],i.o=(t,e)=>Object.prototype.hasOwnProperty.call(t,e),e={},r="nextcloud-ui-legacy:",i.l=(t,n,o,s)=>{if(e[t])e[t].push(n);else{var a,u;if(void 0!==o)for(var l=document.getElementsByTagName("script"),c=0;c{a.onerror=a.onload=null,clearTimeout(p);var o=e[t];if(delete e[t],a.parentNode&&a.parentNode.removeChild(a),o&&o.forEach(t=>t(n)),r)return r(n)},p=setTimeout(h.bind(null,void 0,{type:"timeout",target:a}),12e4);a.onerror=h.bind(null,a.onerror),a.onload=h.bind(null,a.onload),u&&document.head.appendChild(a)}},i.r=t=>{"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(t,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(t,"__esModule",{value:!0})},i.nmd=t=>(t.paths=[],t.children||(t.children=[]),t),i.j=2122,(()=>{var t;globalThis.importScripts&&(t=globalThis.location+"");var e=globalThis.document;if(!t&&e&&(e.currentScript&&"SCRIPT"===e.currentScript.tagName.toUpperCase()&&(t=e.currentScript.src),!t)){var r=e.getElementsByTagName("script");if(r.length)for(var n=r.length-1;n>-1&&(!t||!/^http(s?):/.test(t));)t=r[n--].src}if(!t)throw new Error("Automatic publicPath is not supported in this browser");t=t.replace(/^blob:/,"").replace(/#.*$/,"").replace(/\?.*$/,"").replace(/\/[^\/]+$/,"/"),i.p=t})(),(()=>{i.b="undefined"!=typeof document&&document.baseURI||self.location.href;var t={2122:0};i.f.j=(e,r)=>{var n=i.o(t,e)?t[e]:void 0;if(0!==n)if(n)r.push(n[2]);else{var o=new Promise((r,o)=>n=t[e]=[r,o]);r.push(n[2]=o);var s=i.p+i.u(e),a=new Error;i.l(s,r=>{if(i.o(t,e)&&(0!==(n=t[e])&&(t[e]=void 0),n)){var o=r&&("load"===r.type?"missing":r.type),s=r&&r.target&&r.target.src;a.message="Loading chunk "+e+" failed.\n("+o+": "+s+")",a.name="ChunkLoadError",a.type=o,a.request=s,n[1](a)}},"chunk-"+e,e)}},i.O.j=e=>0===t[e];var e=(e,r)=>{var n,o,[s,a,u]=r,l=0;if(s.some(e=>0!==t[e])){for(n in a)i.o(a,n)&&(i.m[n]=a[n]);if(u)var c=u(i)}for(e&&e(r);li(83769));s=i.O(s)})(); -//# sourceMappingURL=comments-comments-tab.js.map?v=6fd740bd965740f5230b \ No newline at end of file +(()=>{var t,e,r,n={96689(t,e,r){"use strict";r.d(e,{A:()=>n});const n=(0,r(35947).YK)().setApp("comments").detectUser().build()},35550(t,e,r){"use strict";r.d(e,{A:()=>u});var n=r(21777),o=r(82415),i=r(17003);const s=(0,o.UU)((0,i.e)());function a(t){s.setHeaders({"X-Requested-With":"XMLHttpRequest",requesttoken:t??""})}(0,n.zo)(a),a((0,n.do)());const u=s},17003(t,e,r){"use strict";r.d(e,{e:()=>o});var n=r(63814);function o(){return(0,n.dC)("dav/comments")}},80609(t,e,r){"use strict";var n=r(21777),o=r(35810),i=r(53334),s=r(26422),a=r(10810),u=r(85471),l=r(51651),c=r(96689),f=r(35906);let h,p;u.Ay.use(a.R2);var d=r(81222);r.nc=(0,n.aV)();const g="comments_files-sidebar-tab";(0,d.C)("comments","activityEnabled",!1)&&void 0!==window.OCA?.Activity?.registerSidebarAction?window.addEventListener("DOMContentLoaded",function(){window.OCA.Activity.registerSidebarAction({mount:async(t,{node:e,reload:n})=>{const o=(0,a.Ey)();if(!h){const{default:t}=await Promise.all([r.e(4208),r.e(3556),r.e(4906)]).then(r.bind(r,44906));h=u.Ay.extend(t)}p=new h({el:t,pinia:o,propsData:{reloadCallback:n,resourceId:e.fileid}}),c.A.info("Comments plugin mounted in Activity sidebar action",{node:e})},unmount:()=>{p&&p.$destroy()}}),window.OCA.Activity.registerSidebarEntries(async({node:t,limit:e,offset:n})=>{const{data:o}=await(0,f.v)({resourceType:"files",resourceId:t.fileid},{limit:e,offset:n??0});c.A.debug("Loaded comments",{node:t,comments:o});const{default:i}=await Promise.all([r.e(4208),r.e(3556),r.e(7039)]).then(r.bind(r,57039)),s=u.Ay.extend(i);return o.map(e=>({_CommentsViewInstance:void 0,timestamp:(0,l.A)(e.props?.creationDateTime).toDate().getTime(),mount(r,{reload:n}){this._CommentsViewInstance=new s({el:r,propsData:{comment:e,resourceId:t.fileid,reloadCallback:n}})},unmount(){this._CommentsViewInstance?.$destroy()}}))}),window.OCA.Activity.registerSidebarFilter(t=>"comments"!==t.type),c.A.info("Comments plugin registered for Activity sidebar action")}):(0,o.rS)({id:"comments",displayName:(0,i.t)("comments","Comments"),iconSvgInline:'',order:50,tagName:g,async onInit(){const{default:t}=await Promise.all([r.e(4208),r.e(3556),r.e(8124)]).then(r.bind(r,38124));u.Ay.use(a.R2),u.Ay.mixin({pinia:(0,a.Ey)()});const e=(0,s.A)(u.Ay,t);Object.defineProperty(e.prototype,"attachShadow",{value(){return this}}),Object.defineProperty(e.prototype,"shadowRoot",{get(){return this}}),window.customElements.define(g,e)}})},35906(t,e,r){"use strict";r.d(e,{e:()=>a,v:()=>u});var n=r(82415),o=r(5e3),i=r(90176),s=r(35550);const a=20;async function u({resourceType:t,resourceId:e},r){const u=["",t,e].join("/"),l=r.datetime?`${r.datetime.toISOString()}`:"",c=await s.A.customRequest(u,{method:"REPORT",data:`\n\t\t\t\n\t\t\t\t${r.limit??a}\n\t\t\t\t${r.offset||0}\n\t\t\t\t${l}\n\t\t\t`,...r}),f=await c.text(),h=function(t,e=!1){const{multistatus:{response:r}}=t;return r.map(t=>{const r=t.propstat.prop;return(0,i.ch)(r,r.id.toString(),e)})}(await(0,n.h4)(f),!0);return(0,o.hq)(c,h,!0)}},8505(t){"use strict";function e(t,e,o){t instanceof RegExp&&(t=r(t,o)),e instanceof RegExp&&(e=r(e,o));var i=n(t,e,o);return i&&{start:i[0],end:i[1],pre:o.slice(0,i[0]),body:o.slice(i[0]+t.length,i[1]),post:o.slice(i[1]+e.length)}}function r(t,e){var r=e.match(t);return r?r[0]:null}function n(t,e,r){var n,o,i,s,a,u=r.indexOf(t),l=r.indexOf(e,u+1),c=u;if(u>=0&&l>0){if(t===e)return[u,l];for(n=[],i=r.length;c>=0&&!a;)c==u?(n.push(c),u=r.indexOf(t,c+1)):1==n.length?a=[n.pop(),l]:((o=n.pop())=0?u:l;n.length&&(a=[i,s])}return a}t.exports=e,e.range=n},85914(t,e,r){var n;t=r.nmd(t),function(){var o=(t&&t.exports,"object"==typeof globalThis&&globalThis);o.global!==o&&o.window;var i=function(t){this.message=t};(i.prototype=new Error).name="InvalidCharacterError";var s=function(t){throw new i(t)},a="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/",u=/[\t\n\f\r ]/g,l={encode:function(t){t=String(t),/[^\0-\xFF]/.test(t)&&s("The string to be encoded contains characters outside of the Latin1 range.");for(var e,r,n,o,i=t.length%3,u="",l=-1,c=t.length-i;++l>18&63)+a.charAt(o>>12&63)+a.charAt(o>>6&63)+a.charAt(63&o);return 2==i?(e=t.charCodeAt(l)<<8,r=t.charCodeAt(++l),u+=a.charAt((o=e+r)>>10)+a.charAt(o>>4&63)+a.charAt(o<<2&63)+"="):1==i&&(o=t.charCodeAt(l),u+=a.charAt(o>>2)+a.charAt(o<<4&63)+"=="),u},decode:function(t){var e=(t=String(t).replace(u,"")).length;e%4==0&&(e=(t=t.replace(/==?$/,"")).length),(e%4==1||/[^+a-zA-Z0-9/]/.test(t))&&s("Invalid character: the string to be decoded is not correctly encoded.");for(var r,n,o=0,i="",l=-1;++l>(-2*o&6)));return i},version:"1.0.0"};void 0===(n=function(){return l}.call(e,r,e,t))||(t.exports=n)}()},68928(t,e,r){var n=r(8505);t.exports=function(t){return t?("{}"===t.substr(0,2)&&(t="\\{\\}"+t.substr(2)),y(function(t){return t.split("\\\\").join(o).split("\\{").join(i).split("\\}").join(s).split("\\,").join(a).split("\\.").join(u)}(t),!0).map(c)):[]};var o="\0SLASH"+Math.random()+"\0",i="\0OPEN"+Math.random()+"\0",s="\0CLOSE"+Math.random()+"\0",a="\0COMMA"+Math.random()+"\0",u="\0PERIOD"+Math.random()+"\0";function l(t){return parseInt(t,10)==t?parseInt(t,10):t.charCodeAt(0)}function c(t){return t.split(o).join("\\").split(i).join("{").split(s).join("}").split(a).join(",").split(u).join(".")}function f(t){if(!t)return[""];var e=[],r=n("{","}",t);if(!r)return t.split(",");var o=r.pre,i=r.body,s=r.post,a=o.split(",");a[a.length-1]+="{"+i+"}";var u=f(s);return s.length&&(a[a.length-1]+=u.shift(),a.push.apply(a,u)),e.push.apply(e,a),e}function h(t){return"{"+t+"}"}function p(t){return/^-?0\d/.test(t)}function d(t,e){return t<=e}function g(t,e){return t>=e}function y(t,e){var r=[],o=n("{","}",t);if(!o)return[t];var i=o.pre,a=o.post.length?y(o.post,!1):[""];if(/\$$/.test(o.pre))for(var u=0;u=0;if(!E&&!x)return o.post.match(/,(?!,).*\}/)?y(t=o.pre+"{"+o.body+s+o.post):[t];if(E)m=o.body.split(/\.\./);else if(1===(m=f(o.body)).length&&1===(m=y(m[0],!1).map(h)).length)return a.map(function(t){return o.pre+m[0]+t});if(E){var S=l(m[0]),O=l(m[1]),_=Math.max(m[0].length,m[1].length),A=3==m.length?Math.abs(l(m[2])):1,T=d;O0){var k=new Array(P+1).join("0");R=N<0?"-"+k+R.slice(1):k+R}}b.push(R)}}else{b=[];for(var C=0;Ce},11083(t,e,r){var n=r(11568),o=r(88835),i=t.exports;for(var s in n)n.hasOwnProperty(s)&&(i[s]=n[s]);function a(t){if("string"==typeof t&&(t=o.parse(t)),t.protocol||(t.protocol="https:"),"https:"!==t.protocol)throw new Error('Protocol "'+t.protocol+'" not supported. Expected "https:"');return t}i.request=function(t,e){return t=a(t),n.request.call(this,t,e)},i.get=function(t,e){return t=a(t),n.get.call(this,t,e)}},47244(t,e,r){"use strict";var n=r(49092)(),o=r(36556)("Object.prototype.toString"),i=function(t){return!(n&&t&&"object"==typeof t&&Symbol.toStringTag in t)&&"[object Arguments]"===o(t)},s=function(t){return!!i(t)||null!==t&&"object"==typeof t&&"length"in t&&"number"==typeof t.length&&t.length>=0&&"[object Array]"!==o(t)&&"callee"in t&&"[object Function]"===o(t.callee)},a=function(){return i(arguments)}();i.isLegacyArguments=s,t.exports=a?i:s},48184(t,e,r){"use strict";var n=r(36556),o=r(99721)(/^\s*(?:function)?\*/),i=r(49092)(),s=r(93628),a=n("Object.prototype.toString"),u=n("Function.prototype.toString"),l=r(4233);t.exports=function(t){if("function"!=typeof t)return!1;if(o(u(t)))return!0;if(!i)return"[object GeneratorFunction]"===a(t);if(!s)return!1;var e=l();return e&&s(t)===e.prototype}},14035(t,e,r){"use strict";var n,o=r(36556),i=r(49092)(),s=r(9957),a=r(75795);if(i){var u=o("RegExp.prototype.exec"),l={},c=function(){throw l},f={toString:c,valueOf:c};"symbol"==typeof Symbol.toPrimitive&&(f[Symbol.toPrimitive]=c),n=function(t){if(!t||"object"!=typeof t)return!1;var e=a(t,"lastIndex");if(!e||!s(e,"value"))return!1;try{u(t,f)}catch(t){return t===l}}}else{var h=o("Object.prototype.toString");n=function(t){return!(!t||"object"!=typeof t&&"function"!=typeof t)&&"[object RegExp]"===h(t)}}t.exports=n},26602(t){"use strict";function e(t){return e="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t},e(t)}function r(t){var e="function"==typeof Map?new Map:void 0;return r=function(t){if(null===t||(r=t,-1===Function.toString.call(r).indexOf("[native code]")))return t;var r;if("function"!=typeof t)throw new TypeError("Super expression must either be null or a function");if(void 0!==e){if(e.has(t))return e.get(t);e.set(t,s)}function s(){return n(t,arguments,i(this).constructor)}return s.prototype=Object.create(t.prototype,{constructor:{value:s,enumerable:!1,writable:!0,configurable:!0}}),o(s,t)},r(t)}function n(t,e,r){return n=function(){if("undefined"==typeof Reflect||!Reflect.construct)return!1;if(Reflect.construct.sham)return!1;if("function"==typeof Proxy)return!0;try{return Date.prototype.toString.call(Reflect.construct(Date,[],function(){})),!0}catch(t){return!1}}()?Reflect.construct:function(t,e,r){var n=[null];n.push.apply(n,e);var i=new(Function.bind.apply(t,n));return r&&o(i,r.prototype),i},n.apply(null,arguments)}function o(t,e){return o=Object.setPrototypeOf||function(t,e){return t.__proto__=e,t},o(t,e)}function i(t){return i=Object.setPrototypeOf?Object.getPrototypeOf:function(t){return t.__proto__||Object.getPrototypeOf(t)},i(t)}var s=function(t){function r(t){var n;return function(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}(this,r),(n=function(t,r){return!r||"object"!==e(r)&&"function"!=typeof r?function(t){if(void 0===t)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return t}(t):r}(this,i(r).call(this,t))).name="ObjectPrototypeMutationError",n}return function(t,e){if("function"!=typeof e&&null!==e)throw new TypeError("Super expression must either be null or a function");t.prototype=Object.create(e&&e.prototype,{constructor:{value:t,writable:!0,configurable:!0}}),e&&o(t,e)}(r,t),r}(r(Error));function a(t,r){for(var n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:function(){},o=r.split("."),i=o.length,s=function(e){var r=o[e];if(!t)return{v:void 0};if("+"===r){if(Array.isArray(t))return{v:t.map(function(r,i){var s=o.slice(e+1);return s.length>0?a(r,s.join("."),n):n(t,i,o,e)})};var i=o.slice(0,e).join(".");throw new Error("Object at wildcard (".concat(i,") is not an array"))}t=n(t,r,o,e)},u=0;u2&&void 0!==arguments[2]?arguments[2]:{};if("object"!=e(t)||null===t)return!1;if(void 0===r)return!1;if("number"==typeof r)return r in t;try{var o=!1;return a(t,r,function(t,e,r,i){if(!u(r,i))return t&&t[e];o=n.own?t.hasOwnProperty(e):e in t}),o}catch(t){return!1}},hasOwn:function(t,e,r){return this.has(t,e,r||{own:!0})},isIn:function(t,r,n){var o=arguments.length>3&&void 0!==arguments[3]?arguments[3]:{};if("object"!=e(t)||null===t)return!1;if(void 0===r)return!1;try{var i=!1,s=!1;return a(t,r,function(t,r,o,a){return i=i||t===n||!!t&&t[r]===n,s=u(o,a)&&"object"===e(t)&&r in t,t&&t[r]}),o.validPath?i&&s:i}catch(t){return!1}},ObjectPrototypeMutationError:s}},58859(t,e,r){var n="function"==typeof Map&&Map.prototype,o=Object.getOwnPropertyDescriptor&&n?Object.getOwnPropertyDescriptor(Map.prototype,"size"):null,i=n&&o&&"function"==typeof o.get?o.get:null,s=n&&Map.prototype.forEach,a="function"==typeof Set&&Set.prototype,u=Object.getOwnPropertyDescriptor&&a?Object.getOwnPropertyDescriptor(Set.prototype,"size"):null,l=a&&u&&"function"==typeof u.get?u.get:null,c=a&&Set.prototype.forEach,f="function"==typeof WeakMap&&WeakMap.prototype?WeakMap.prototype.has:null,h="function"==typeof WeakSet&&WeakSet.prototype?WeakSet.prototype.has:null,p="function"==typeof WeakRef&&WeakRef.prototype?WeakRef.prototype.deref:null,d=Boolean.prototype.valueOf,g=Object.prototype.toString,y=Function.prototype.toString,m=String.prototype.match,b=String.prototype.slice,v=String.prototype.replace,w=String.prototype.toUpperCase,E=String.prototype.toLowerCase,x=RegExp.prototype.test,S=Array.prototype.concat,O=Array.prototype.join,_=Array.prototype.slice,A=Math.floor,T="function"==typeof BigInt?BigInt.prototype.valueOf:null,j=Object.getOwnPropertySymbols,N="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?Symbol.prototype.toString:null,R="function"==typeof Symbol&&"object"==typeof Symbol.iterator,P="function"==typeof Symbol&&Symbol.toStringTag&&(Symbol.toStringTag,1)?Symbol.toStringTag:null,k=Object.prototype.propertyIsEnumerable,C=("function"==typeof Reflect?Reflect.getPrototypeOf:Object.getPrototypeOf)||([].__proto__===Array.prototype?function(t){return t.__proto__}:null);function I(t,e){if(t===1/0||t===-1/0||t!=t||t&&t>-1e3&&t<1e3||x.call(/e/,e))return e;var r=/[0-9](?=(?:[0-9]{3})+(?![0-9]))/g;if("number"==typeof t){var n=t<0?-A(-t):A(t);if(n!==t){var o=String(n),i=b.call(e,o.length+1);return v.call(o,r,"$&_")+"."+v.call(v.call(i,/([0-9]{3})/g,"$&_"),/_$/,"")}}return v.call(e,r,"$&_")}var M=r(42634),L=M.custom,D=V(L)?L:null,$={__proto__:null,double:'"',single:"'"},U={__proto__:null,double:/(["\\])/g,single:/(['\\])/g};function q(t,e,r){var n=r.quoteStyle||e,o=$[n];return o+t+o}function F(t){return v.call(String(t),/"/g,""")}function H(t){return!P||!("object"==typeof t&&(P in t||void 0!==t[P]))}function W(t){return"[object Array]"===K(t)&&H(t)}function B(t){return"[object RegExp]"===K(t)&&H(t)}function V(t){if(R)return t&&"object"==typeof t&&t instanceof Symbol;if("symbol"==typeof t)return!0;if(!t||"object"!=typeof t||!N)return!1;try{return N.call(t),!0}catch(t){}return!1}t.exports=function t(e,r,n,o){var a=r||{};if(z(a,"quoteStyle")&&!z($,a.quoteStyle))throw new TypeError('option "quoteStyle" must be "single" or "double"');if(z(a,"maxStringLength")&&("number"==typeof a.maxStringLength?a.maxStringLength<0&&a.maxStringLength!==1/0:null!==a.maxStringLength))throw new TypeError('option "maxStringLength", if provided, must be a positive integer, Infinity, or `null`');var u=!z(a,"customInspect")||a.customInspect;if("boolean"!=typeof u&&"symbol"!==u)throw new TypeError("option \"customInspect\", if provided, must be `true`, `false`, or `'symbol'`");if(z(a,"indent")&&null!==a.indent&&"\t"!==a.indent&&!(parseInt(a.indent,10)===a.indent&&a.indent>0))throw new TypeError('option "indent" must be "\\t", an integer > 0, or `null`');if(z(a,"numericSeparator")&&"boolean"!=typeof a.numericSeparator)throw new TypeError('option "numericSeparator", if provided, must be `true` or `false`');var g=a.numericSeparator;if(void 0===e)return"undefined";if(null===e)return"null";if("boolean"==typeof e)return e?"true":"false";if("string"==typeof e)return Y(e,a);if("number"==typeof e){if(0===e)return 1/0/e>0?"0":"-0";var w=String(e);return g?I(e,w):w}if("bigint"==typeof e){var x=String(e)+"n";return g?I(e,x):x}var A=void 0===a.depth?5:a.depth;if(void 0===n&&(n=0),n>=A&&A>0&&"object"==typeof e)return W(e)?"[Array]":"[Object]";var j,L=function(t,e){var r;if("\t"===t.indent)r="\t";else{if(!("number"==typeof t.indent&&t.indent>0))return null;r=O.call(Array(t.indent+1)," ")}return{base:r,prev:O.call(Array(e+1),r)}}(a,n);if(void 0===o)o=[];else if(X(o,e)>=0)return"[Circular]";function U(e,r,i){if(r&&(o=_.call(o)).push(r),i){var s={depth:a.depth};return z(a,"quoteStyle")&&(s.quoteStyle=a.quoteStyle),t(e,s,n+1,o)}return t(e,a,n+1,o)}if("function"==typeof e&&!B(e)){var G=function(t){if(t.name)return t.name;var e=m.call(y.call(t),/^function\s*([\w$]+)/);return e?e[1]:null}(e),Z=rt(e,U);return"[Function"+(G?": "+G:" (anonymous)")+"]"+(Z.length>0?" { "+O.call(Z,", ")+" }":"")}if(V(e)){var nt=R?v.call(String(e),/^(Symbol\(.*\))_[^)]*$/,"$1"):N.call(e);return"object"!=typeof e||R?nt:Q(nt)}if((j=e)&&"object"==typeof j&&("undefined"!=typeof HTMLElement&&j instanceof HTMLElement||"string"==typeof j.nodeName&&"function"==typeof j.getAttribute)){for(var ot="<"+E.call(String(e.nodeName)),it=e.attributes||[],st=0;st"}if(W(e)){if(0===e.length)return"[]";var at=rt(e,U);return L&&!function(t){for(var e=0;e=0)return!1;return!0}(at)?"["+et(at,L)+"]":"[ "+O.call(at,", ")+" ]"}if(function(t){return"[object Error]"===K(t)&&H(t)}(e)){var ut=rt(e,U);return"cause"in Error.prototype||!("cause"in e)||k.call(e,"cause")?0===ut.length?"["+String(e)+"]":"{ ["+String(e)+"] "+O.call(ut,", ")+" }":"{ ["+String(e)+"] "+O.call(S.call("[cause]: "+U(e.cause),ut),", ")+" }"}if("object"==typeof e&&u){if(D&&"function"==typeof e[D]&&M)return M(e,{depth:A-n});if("symbol"!==u&&"function"==typeof e.inspect)return e.inspect()}if(function(t){if(!i||!t||"object"!=typeof t)return!1;try{i.call(t);try{l.call(t)}catch(t){return!0}return t instanceof Map}catch(t){}return!1}(e)){var lt=[];return s&&s.call(e,function(t,r){lt.push(U(r,e,!0)+" => "+U(t,e))}),tt("Map",i.call(e),lt,L)}if(function(t){if(!l||!t||"object"!=typeof t)return!1;try{l.call(t);try{i.call(t)}catch(t){return!0}return t instanceof Set}catch(t){}return!1}(e)){var ct=[];return c&&c.call(e,function(t){ct.push(U(t,e))}),tt("Set",l.call(e),ct,L)}if(function(t){if(!f||!t||"object"!=typeof t)return!1;try{f.call(t,f);try{h.call(t,h)}catch(t){return!0}return t instanceof WeakMap}catch(t){}return!1}(e))return J("WeakMap");if(function(t){if(!h||!t||"object"!=typeof t)return!1;try{h.call(t,h);try{f.call(t,f)}catch(t){return!0}return t instanceof WeakSet}catch(t){}return!1}(e))return J("WeakSet");if(function(t){if(!p||!t||"object"!=typeof t)return!1;try{return p.call(t),!0}catch(t){}return!1}(e))return J("WeakRef");if(function(t){return"[object Number]"===K(t)&&H(t)}(e))return Q(U(Number(e)));if(function(t){if(!t||"object"!=typeof t||!T)return!1;try{return T.call(t),!0}catch(t){}return!1}(e))return Q(U(T.call(e)));if(function(t){return"[object Boolean]"===K(t)&&H(t)}(e))return Q(d.call(e));if(function(t){return"[object String]"===K(t)&&H(t)}(e))return Q(U(String(e)));if("undefined"!=typeof window&&e===window)return"{ [object Window] }";if("undefined"!=typeof globalThis&&e===globalThis||"undefined"!=typeof globalThis&&e===globalThis)return"{ [object globalThis] }";if(!function(t){return"[object Date]"===K(t)&&H(t)}(e)&&!B(e)){var ft=rt(e,U),ht=C?C(e)===Object.prototype:e instanceof Object||e.constructor===Object,pt=e instanceof Object?"":"null prototype",dt=!ht&&P&&Object(e)===e&&P in e?b.call(K(e),8,-1):pt?"Object":"",gt=(ht||"function"!=typeof e.constructor?"":e.constructor.name?e.constructor.name+" ":"")+(dt||pt?"["+O.call(S.call([],dt||[],pt||[]),": ")+"] ":"");return 0===ft.length?gt+"{}":L?gt+"{"+et(ft,L)+"}":gt+"{ "+O.call(ft,", ")+" }"}return String(e)};var G=Object.prototype.hasOwnProperty||function(t){return t in this};function z(t,e){return G.call(t,e)}function K(t){return g.call(t)}function X(t,e){if(t.indexOf)return t.indexOf(e);for(var r=0,n=t.length;re.maxStringLength){var r=t.length-e.maxStringLength,n="... "+r+" more character"+(r>1?"s":"");return Y(b.call(t,0,e.maxStringLength),e)+n}var o=U[e.quoteStyle||"single"];return o.lastIndex=0,q(v.call(v.call(t,o,"\\$1"),/[\x00-\x1f]/g,Z),"single",e)}function Z(t){var e=t.charCodeAt(0),r={8:"b",9:"t",10:"n",12:"f",13:"r"}[e];return r?"\\"+r:"\\x"+(e<16?"0":"")+w.call(e.toString(16))}function Q(t){return"Object("+t+")"}function J(t){return t+" { ? }"}function tt(t,e,r,n){return t+" ("+e+") {"+(n?et(r,n):O.call(r,", "))+"}"}function et(t,e){if(0===t.length)return"";var r="\n"+e.prev+e.base;return r+O.call(t,","+r)+"\n"+e.prev}function rt(t,e){var r=W(t),n=[];if(r){n.length=t.length;for(var o=0;o=-1&&!e;r--){var o=r>=0?arguments[r]:n.cwd();if(!i(o))throw new TypeError("Arguments to path.resolve must be strings");o&&(t=o+"/"+t,e="/"===o.charAt(0))}return(e?"/":"")+(t=s(t.split("/"),!e).join("/"))||"."},u.normalize=function(t){var e=u.isAbsolute(t),r="/"===t.substr(-1);return(t=s(t.split("/"),!e).join("/"))||e||(t="."),t&&r&&(t+="/"),(e?"/":"")+t},u.isAbsolute=function(t){return"/"===t.charAt(0)},u.join=function(){for(var t="",e=0;e=0&&""===t[r];r--);return e>r?[]:t.slice(e,r+1)}t=u.resolve(t).substr(1),e=u.resolve(e).substr(1);for(var n=r(t.split("/")),o=r(e.split("/")),i=Math.min(n.length,o.length),s=i,a=0;a= 0x80 (not a basic code point)","invalid-input":"Invalid input"},h=Math.floor,p=String.fromCharCode;function d(t){throw new RangeError(f[t])}function g(t,e){for(var r=t.length,n=[];r--;)n[r]=e(t[r]);return n}function y(t,e){var r=t.split("@"),n="";return r.length>1&&(n=r[0]+"@",t=r[1]),n+g((t=t.replace(c,".")).split("."),e).join(".")}function m(t){for(var e,r,n=[],o=0,i=t.length;o=55296&&e<=56319&&o65535&&(e+=p((t-=65536)>>>10&1023|55296),t=56320|1023&t),e+p(t)}).join("")}function v(t){return t-48<10?t-22:t-65<26?t-65:t-97<26?t-97:a}function w(t,e){return t+22+75*(t<26)-((0!=e)<<5)}function E(t,e,r){var n=0;for(t=r?h(t/700):t>>1,t+=h(t/e);t>455;n+=a)t=h(t/35);return h(n+36*t/(t+38))}function x(t){var e,r,n,o,i,u,l,c,f,p,g=[],y=t.length,m=0,w=128,x=72;for((r=t.lastIndexOf("-"))<0&&(r=0),n=0;n=128&&d("not-basic"),g.push(t.charCodeAt(n));for(o=r>0?r+1:0;o=y&&d("invalid-input"),((c=v(t.charCodeAt(o++)))>=a||c>h((s-m)/u))&&d("overflow"),m+=c*u,!(c<(f=l<=x?1:l>=x+26?26:l-x));l+=a)u>h(s/(p=a-f))&&d("overflow"),u*=p;x=E(m-i,e=g.length+1,0==i),h(m/e)>s-w&&d("overflow"),w+=h(m/e),m%=e,g.splice(m++,0,w)}return b(g)}function S(t){var e,r,n,o,i,u,l,c,f,g,y,b,v,x,S,O=[];for(b=(t=m(t)).length,e=128,r=0,i=72,u=0;u=e&&yh((s-r)/(v=n+1))&&d("overflow"),r+=(l-e)*v,e=l,u=0;us&&d("overflow"),y==e){for(c=r,f=a;!(c<(g=f<=i?1:f>=i+26?26:f-i));f+=a)S=c-g,x=a-g,O.push(p(w(g+S%x,0))),c=h(S/x);O.push(p(w(c,0))),i=E(r,v,n==o),r=0,++n}++r,++e}return O.join("")}i={version:"1.4.1",ucs2:{decode:m,encode:b},decode:x,encode:S,toASCII:function(t){return y(t,function(t){return l.test(t)?"xn--"+S(t):t})},toUnicode:function(t){return y(t,function(t){return u.test(t)?x(t.slice(4).toLowerCase()):t})}},void 0===(n=function(){return i}.call(e,r,e,t))||(t.exports=n)}()},74765(t){"use strict";var e=String.prototype.replace,r=/%20/g,n="RFC3986";t.exports={default:n,formatters:{RFC1738:function(t){return e.call(t,r,"+")},RFC3986:function(t){return String(t)}},RFC1738:"RFC1738",RFC3986:n}},55373(t,e,r){"use strict";var n=r(98636),o=r(62642),i=r(74765);t.exports={formats:i,parse:o,stringify:n}},62642(t,e,r){"use strict";var n=r(37720),o=Object.prototype.hasOwnProperty,i=Array.isArray,s={allowDots:!1,allowEmptyArrays:!1,allowPrototypes:!1,allowSparse:!1,arrayLimit:20,charset:"utf-8",charsetSentinel:!1,comma:!1,decodeDotInKeys:!1,decoder:n.decode,delimiter:"&",depth:5,duplicates:"combine",ignoreQueryPrefix:!1,interpretNumericEntities:!1,parameterLimit:1e3,parseArrays:!0,plainObjects:!1,strictDepth:!1,strictNullHandling:!1,throwOnLimitExceeded:!1},a=function(t){return t.replace(/&#(\d+);/g,function(t,e){return String.fromCharCode(parseInt(e,10))})},u=function(t,e,r){if(t&&"string"==typeof t&&e.comma&&t.indexOf(",")>-1)return t.split(",");if(e.throwOnLimitExceeded&&r>=e.arrayLimit)throw new RangeError("Array limit exceeded. Only "+e.arrayLimit+" element"+(1===e.arrayLimit?"":"s")+" allowed in an array.");return t},l=function(t,e,r,i){if(t){var s=function(t,e){var r=e.allowDots?t.replace(/\.([^.[]+)/g,"[$1]"):t;if(e.depth<=0){if(!e.plainObjects&&o.call(Object.prototype,r)&&!e.allowPrototypes)return;return[r]}var n=/(\[[^[\]]*])/g,i=/(\[[^[\]]*])/.exec(r),s=i?r.slice(0,i.index):r,a=[];if(s){if(!e.plainObjects&&o.call(Object.prototype,s)&&!e.allowPrototypes)return;a.push(s)}for(var u=0;null!==(i=n.exec(r))&&u0&&"[]"===t[t.length-1]){var s=t.slice(0,-1).join("");i=Array.isArray(e)&&e[s]?e[s].length:0}for(var a=o?e:u(e,r,i),l=t.length-1;l>=0;--l){var c,f=t[l];if("[]"===f&&r.parseArrays)c=n.isOverflow(a)?a:r.allowEmptyArrays&&(""===a||r.strictNullHandling&&null===a)?[]:n.combine([],a,r.arrayLimit,r.plainObjects);else{c=r.plainObjects?{__proto__:null}:{};var h="["===f.charAt(0)&&"]"===f.charAt(f.length-1)?f.slice(1,-1):f,p=r.decodeDotInKeys?h.replace(/%2E/g,"."):h,d=parseInt(p,10);r.parseArrays||""!==p?!isNaN(d)&&f!==p&&String(d)===p&&d>=0&&r.parseArrays&&d<=r.arrayLimit?(c=[])[d]=a:"__proto__"!==p&&(c[p]=a):c={0:a}}a=c}return a}(s,e,r,i)}};t.exports=function(t,e){var r=function(t){if(!t)return s;if(void 0!==t.allowEmptyArrays&&"boolean"!=typeof t.allowEmptyArrays)throw new TypeError("`allowEmptyArrays` option can only be `true` or `false`, when provided");if(void 0!==t.decodeDotInKeys&&"boolean"!=typeof t.decodeDotInKeys)throw new TypeError("`decodeDotInKeys` option can only be `true` or `false`, when provided");if(null!==t.decoder&&void 0!==t.decoder&&"function"!=typeof t.decoder)throw new TypeError("Decoder has to be a function.");if(void 0!==t.charset&&"utf-8"!==t.charset&&"iso-8859-1"!==t.charset)throw new TypeError("The charset option must be either utf-8, iso-8859-1, or undefined");if(void 0!==t.throwOnLimitExceeded&&"boolean"!=typeof t.throwOnLimitExceeded)throw new TypeError("`throwOnLimitExceeded` option must be a boolean");var e=void 0===t.charset?s.charset:t.charset,r=void 0===t.duplicates?s.duplicates:t.duplicates;if("combine"!==r&&"first"!==r&&"last"!==r)throw new TypeError("The duplicates option must be either combine, first, or last");return{allowDots:void 0===t.allowDots?!0===t.decodeDotInKeys||s.allowDots:!!t.allowDots,allowEmptyArrays:"boolean"==typeof t.allowEmptyArrays?!!t.allowEmptyArrays:s.allowEmptyArrays,allowPrototypes:"boolean"==typeof t.allowPrototypes?t.allowPrototypes:s.allowPrototypes,allowSparse:"boolean"==typeof t.allowSparse?t.allowSparse:s.allowSparse,arrayLimit:"number"==typeof t.arrayLimit?t.arrayLimit:s.arrayLimit,charset:e,charsetSentinel:"boolean"==typeof t.charsetSentinel?t.charsetSentinel:s.charsetSentinel,comma:"boolean"==typeof t.comma?t.comma:s.comma,decodeDotInKeys:"boolean"==typeof t.decodeDotInKeys?t.decodeDotInKeys:s.decodeDotInKeys,decoder:"function"==typeof t.decoder?t.decoder:s.decoder,delimiter:"string"==typeof t.delimiter||n.isRegExp(t.delimiter)?t.delimiter:s.delimiter,depth:"number"==typeof t.depth||!1===t.depth?+t.depth:s.depth,duplicates:r,ignoreQueryPrefix:!0===t.ignoreQueryPrefix,interpretNumericEntities:"boolean"==typeof t.interpretNumericEntities?t.interpretNumericEntities:s.interpretNumericEntities,parameterLimit:"number"==typeof t.parameterLimit?t.parameterLimit:s.parameterLimit,parseArrays:!1!==t.parseArrays,plainObjects:"boolean"==typeof t.plainObjects?t.plainObjects:s.plainObjects,strictDepth:"boolean"==typeof t.strictDepth?!!t.strictDepth:s.strictDepth,strictNullHandling:"boolean"==typeof t.strictNullHandling?t.strictNullHandling:s.strictNullHandling,throwOnLimitExceeded:"boolean"==typeof t.throwOnLimitExceeded&&t.throwOnLimitExceeded}}(e);if(""===t||null==t)return r.plainObjects?{__proto__:null}:{};for(var c="string"==typeof t?function(t,e){var r={__proto__:null},l=e.ignoreQueryPrefix?t.replace(/^\?/,""):t;l=l.replace(/%5B/gi,"[").replace(/%5D/gi,"]");var c=e.parameterLimit===1/0?void 0:e.parameterLimit,f=l.split(e.delimiter,e.throwOnLimitExceeded?c+1:c);if(e.throwOnLimitExceeded&&f.length>c)throw new RangeError("Parameter limit exceeded. Only "+c+" parameter"+(1===c?"":"s")+" allowed.");var h,p=-1,d=e.charset;if(e.charsetSentinel)for(h=0;h-1&&(y=i(y)?[y]:y),null!==g){var w=o.call(r,g);w&&"combine"===e.duplicates?r[g]=n.combine(r[g],y,e.arrayLimit,e.plainObjects):w&&"last"!==e.duplicates||(r[g]=y)}}return r}(t,r):t,f=r.plainObjects?{__proto__:null}:{},h=Object.keys(c),p=0;p0?A.join(",")||null:void 0}];else if(u(y))P=y;else{var C=Object.keys(A);P=m?C.sort(m):C}var I=h?String(r).replace(/\./g,"%2E"):String(r),M=s&&u(A)&&1===A.length?I+"[]":I;if(a&&u(A)&&0===A.length)return M+"[]";for(var L=0;L0?E+w:""}},37720(t,e,r){"use strict";var n=r(74765),o=r(920),i=Object.prototype.hasOwnProperty,s=Array.isArray,a=o(),u=function(t,e){return a.set(t,e),t},l=function(t){return a.has(t)},c=function(t){return a.get(t)},f=function(t,e){a.set(t,e)},h=function(){for(var t=[],e=0;e<256;++e)t.push("%"+((e<16?"0":"")+e.toString(16)).toUpperCase());return t}(),p=function(t,e){for(var r=e&&e.plainObjects?{__proto__:null}:{},n=0;nr?u(p(i,{plainObjects:n}),i.length-1):i},compact:function(t){for(var e=[{obj:{o:t},prop:"o"}],r=[],n=0;n1;){var e=t.pop(),r=e.obj[e.prop];if(s(r)){for(var n=[],o=0;o=d?s.slice(u,u+d):s,c=[],f=0;f=48&&p<=57||p>=65&&p<=90||p>=97&&p<=122||i===n.RFC1738&&(40===p||41===p)?c[c.length]=l.charAt(f):p<128?c[c.length]=h[p]:p<2048?c[c.length]=h[192|p>>6]+h[128|63&p]:p<55296||p>=57344?c[c.length]=h[224|p>>12]+h[128|p>>6&63]+h[128|63&p]:(f+=1,p=65536+((1023&p)<<10|1023&l.charCodeAt(f)),c[c.length]=h[240|p>>18]+h[128|p>>12&63]+h[128|p>>6&63]+h[128|63&p])}a+=c.join("")}return a},isBuffer:function(t){return!(!t||"object"!=typeof t||!(t.constructor&&t.constructor.isBuffer&&t.constructor.isBuffer(t)))},isOverflow:l,isRegExp:function(t){return"[object RegExp]"===Object.prototype.toString.call(t)},maybeMap:function(t,e){if(s(t)){for(var r=[],n=0;ne._pos){var i=n.substr(e._pos);if("x-user-defined"===e._charset){for(var s=o.alloc(i.length),a=0;ae._pos&&(e.push(o.from(new Uint8Array(l.result.slice(e._pos)))),e._pos=l.result.byteLength)},l.onload=function(){t(!0),e.push(null)},l.readAsArrayBuffer(n)}e._xhr.readyState===u.DONE&&"ms-stream"!==e._mode&&(t(!0),e.push(null))}},73157(t){"use strict";var e={};function r(t,r,n){n||(n=Error);var o=function(t){var e,n;function o(e,n,o){return t.call(this,function(t,e,n){return"string"==typeof r?r:r(t,e,n)}(e,n,o))||this}return n=t,(e=o).prototype=Object.create(n.prototype),e.prototype.constructor=e,e.__proto__=n,o}(n);o.prototype.name=n.name,o.prototype.code=t,e[t]=o}function n(t,e){if(Array.isArray(t)){var r=t.length;return t=t.map(function(t){return String(t)}),r>2?"one of ".concat(e," ").concat(t.slice(0,r-1).join(", "),", or ")+t[r-1]:2===r?"one of ".concat(e," ").concat(t[0]," or ").concat(t[1]):"of ".concat(e," ").concat(t[0])}return"of ".concat(e," ").concat(String(t))}r("ERR_INVALID_OPT_VALUE",function(t,e){return'The value "'+e+'" is invalid for option "'+t+'"'},TypeError),r("ERR_INVALID_ARG_TYPE",function(t,e,r){var o,i,s,a,u;if("string"==typeof e&&(i="not ",e.substr(0,4)===i)?(o="must not be",e=e.replace(/^not /,"")):o="must be",function(t,e,r){return(void 0===r||r>t.length)&&(r=t.length),t.substring(r-9,r)===e}(t," argument"))s="The ".concat(t," ").concat(o," ").concat(n(e,"type"));else{var l=("number"!=typeof u&&(u=0),u+1>(a=t).length||-1===a.indexOf(".",u)?"argument":"property");s='The "'.concat(t,'" ').concat(l," ").concat(o," ").concat(n(e,"type"))}return s+". Received type ".concat(typeof r)},TypeError),r("ERR_STREAM_PUSH_AFTER_EOF","stream.push() after EOF"),r("ERR_METHOD_NOT_IMPLEMENTED",function(t){return"The "+t+" method is not implemented"}),r("ERR_STREAM_PREMATURE_CLOSE","Premature close"),r("ERR_STREAM_DESTROYED",function(t){return"Cannot call "+t+" after a stream was destroyed"}),r("ERR_MULTIPLE_CALLBACK","Callback called multiple times"),r("ERR_STREAM_CANNOT_PIPE","Cannot pipe, not readable"),r("ERR_STREAM_WRITE_AFTER_END","write after end"),r("ERR_STREAM_NULL_VALUES","May not write null values to stream",TypeError),r("ERR_UNKNOWN_ENCODING",function(t){return"Unknown encoding: "+t},TypeError),r("ERR_STREAM_UNSHIFT_AFTER_END_EVENT","stream.unshift() after end event"),t.exports.F=e},63527(t,e,r){"use strict";var n=r(65606),o=Object.keys||function(t){var e=[];for(var r in t)e.push(r);return e};t.exports=c;var i=r(52341),s=r(9573);r(56698)(c,i);for(var a=o(s.prototype),u=0;u0)if("string"==typeof e||a.objectMode||Object.getPrototypeOf(e)===u.prototype||(e=function(t){return u.from(t)}(e)),n)a.endEmitted?x(t,new E):T(t,a,e,!0);else if(a.ended)x(t,new v);else{if(a.destroyed)return!1;a.reading=!1,a.decoder&&!r?(e=a.decoder.write(e),a.objectMode||0!==e.length?T(t,a,e,!1):k(t,a)):T(t,a,e,!1)}else n||(a.reading=!1,k(t,a));return!a.ended&&(a.lengthe.highWaterMark&&(e.highWaterMark=function(t){return t>=j?t=j:(t--,t|=t>>>1,t|=t>>>2,t|=t>>>4,t|=t>>>8,t|=t>>>16,t++),t}(t)),t<=e.length?t:e.ended?e.length:(e.needReadable=!0,0))}function R(t){var e=t._readableState;i("emitReadable",e.needReadable,e.emittedReadable),e.needReadable=!1,e.emittedReadable||(i("emitReadable",e.flowing),e.emittedReadable=!0,o.nextTick(P,t))}function P(t){var e=t._readableState;i("emitReadable_",e.destroyed,e.length,e.ended),e.destroyed||!e.length&&!e.ended||(t.emit("readable"),e.emittedReadable=!1),e.needReadable=!e.flowing&&!e.ended&&e.length<=e.highWaterMark,D(t)}function k(t,e){e.readingMore||(e.readingMore=!0,o.nextTick(C,t,e))}function C(t,e){for(;!e.reading&&!e.ended&&(e.length0,e.resumeScheduled&&!e.paused?e.flowing=!0:t.listenerCount("data")>0&&t.resume()}function M(t){i("readable nexttick read 0"),t.read(0)}function L(t,e){i("resume",e.reading),e.reading||t.read(0),e.resumeScheduled=!1,t.emit("resume"),D(t),e.flowing&&!e.reading&&t.read(0)}function D(t){var e=t._readableState;for(i("flow",e.flowing);e.flowing&&null!==t.read(););}function $(t,e){return 0===e.length?null:(e.objectMode?r=e.buffer.shift():!t||t>=e.length?(r=e.decoder?e.buffer.join(""):1===e.buffer.length?e.buffer.first():e.buffer.concat(e.length),e.buffer.clear()):r=e.buffer.consume(t,e.decoder),r);var r}function U(t){var e=t._readableState;i("endReadable",e.endEmitted),e.endEmitted||(e.ended=!0,o.nextTick(q,e,t))}function q(t,e){if(i("endReadableNT",t.endEmitted,t.length),!t.endEmitted&&0===t.length&&(t.endEmitted=!0,e.readable=!1,e.emit("end"),t.autoDestroy)){var r=e._writableState;(!r||r.autoDestroy&&r.finished)&&e.destroy()}}function F(t,e){for(var r=0,n=t.length;r=e.highWaterMark:e.length>0)||e.ended))return i("read: emitReadable",e.length,e.ended),0===e.length&&e.ended?U(this):R(this),null;if(0===(t=N(t,e))&&e.ended)return 0===e.length&&U(this),null;var n,o=e.needReadable;return i("need readable",o),(0===e.length||e.length-t0?$(t,e):null)?(e.needReadable=e.length<=e.highWaterMark,t=0):(e.length-=t,e.awaitDrain=0),0===e.length&&(e.ended||(e.needReadable=!0),r!==t&&e.ended&&U(this)),null!==n&&this.emit("data",n),n},_.prototype._read=function(t){x(this,new w("_read()"))},_.prototype.pipe=function(t,e){var r=this,n=this._readableState;switch(n.pipesCount){case 0:n.pipes=t;break;case 1:n.pipes=[n.pipes,t];break;default:n.pipes.push(t)}n.pipesCount+=1,i("pipe count=%d opts=%j",n.pipesCount,e);var a=e&&!1===e.end||t===o.stdout||t===o.stderr?g:u;function u(){i("onend"),t.end()}n.endEmitted?o.nextTick(a):r.once("end",a),t.on("unpipe",function e(o,s){i("onunpipe"),o===r&&s&&!1===s.hasUnpiped&&(s.hasUnpiped=!0,i("cleanup"),t.removeListener("close",p),t.removeListener("finish",d),t.removeListener("drain",l),t.removeListener("error",h),t.removeListener("unpipe",e),r.removeListener("end",u),r.removeListener("end",g),r.removeListener("data",f),c=!0,!n.awaitDrain||t._writableState&&!t._writableState.needDrain||l())});var l=function(t){return function(){var e=t._readableState;i("pipeOnDrain",e.awaitDrain),e.awaitDrain&&e.awaitDrain--,0===e.awaitDrain&&s(t,"data")&&(e.flowing=!0,D(t))}}(r);t.on("drain",l);var c=!1;function f(e){i("ondata");var o=t.write(e);i("dest.write",o),!1===o&&((1===n.pipesCount&&n.pipes===t||n.pipesCount>1&&-1!==F(n.pipes,t))&&!c&&(i("false write response, pause",n.awaitDrain),n.awaitDrain++),r.pause())}function h(e){i("onerror",e),g(),t.removeListener("error",h),0===s(t,"error")&&x(t,e)}function p(){t.removeListener("finish",d),g()}function d(){i("onfinish"),t.removeListener("close",p),g()}function g(){i("unpipe"),r.unpipe(t)}return r.on("data",f),function(t,e,r){if("function"==typeof t.prependListener)return t.prependListener(e,r);t._events&&t._events[e]?Array.isArray(t._events[e])?t._events[e].unshift(r):t._events[e]=[r,t._events[e]]:t.on(e,r)}(t,"error",h),t.once("close",p),t.once("finish",d),t.emit("pipe",r),n.flowing||(i("pipe resume"),r.resume()),t},_.prototype.unpipe=function(t){var e=this._readableState,r={hasUnpiped:!1};if(0===e.pipesCount)return this;if(1===e.pipesCount)return t&&t!==e.pipes||(t||(t=e.pipes),e.pipes=null,e.pipesCount=0,e.flowing=!1,t&&t.emit("unpipe",this,r)),this;if(!t){var n=e.pipes,o=e.pipesCount;e.pipes=null,e.pipesCount=0,e.flowing=!1;for(var i=0;i0,!1!==n.flowing&&this.resume()):"readable"===t&&(n.endEmitted||n.readableListening||(n.readableListening=n.needReadable=!0,n.flowing=!1,n.emittedReadable=!1,i("on readable",n.length,n.reading),n.length?R(this):n.reading||o.nextTick(M,this))),r},_.prototype.addListener=_.prototype.on,_.prototype.removeListener=function(t,e){var r=a.prototype.removeListener.call(this,t,e);return"readable"===t&&o.nextTick(I,this),r},_.prototype.removeAllListeners=function(t){var e=a.prototype.removeAllListeners.apply(this,arguments);return"readable"!==t&&void 0!==t||o.nextTick(I,this),e},_.prototype.resume=function(){var t=this._readableState;return t.flowing||(i("resume"),t.flowing=!t.readableListening,function(t,e){e.resumeScheduled||(e.resumeScheduled=!0,o.nextTick(L,t,e))}(this,t)),t.paused=!1,this},_.prototype.pause=function(){return i("call pause flowing=%j",this._readableState.flowing),!1!==this._readableState.flowing&&(i("pause"),this._readableState.flowing=!1,this.emit("pause")),this._readableState.paused=!0,this},_.prototype.wrap=function(t){var e=this,r=this._readableState,n=!1;for(var o in t.on("end",function(){if(i("wrapped end"),r.decoder&&!r.ended){var t=r.decoder.end();t&&t.length&&e.push(t)}e.push(null)}),t.on("data",function(o){i("wrapped data"),r.decoder&&(o=r.decoder.write(o)),r.objectMode&&null==o||(r.objectMode||o&&o.length)&&(e.push(o)||(n=!0,t.pause()))}),t)void 0===this[o]&&"function"==typeof t[o]&&(this[o]=function(e){return function(){return t[e].apply(t,arguments)}}(o));for(var s=0;s-1))throw new E(t);return this._writableState.defaultEncoding=t,this},Object.defineProperty(_.prototype,"writableBuffer",{enumerable:!1,get:function(){return this._writableState&&this._writableState.getBuffer()}}),Object.defineProperty(_.prototype,"writableHighWaterMark",{enumerable:!1,get:function(){return this._writableState.highWaterMark}}),_.prototype._write=function(t,e,r){r(new g("_write()"))},_.prototype._writev=null,_.prototype.end=function(t,e,r){var n=this._writableState;return"function"==typeof t?(r=t,t=null,e=null):"function"==typeof e&&(r=e,e=null),null!=t&&this.write(t,e),n.corked&&(n.corked=1,this.uncork()),n.ending||function(t,e,r){e.ending=!0,P(t,e),r&&(e.finished?o.nextTick(r):t.once("finish",r)),e.ended=!0,t.writable=!1}(this,n,r),this},Object.defineProperty(_.prototype,"writableLength",{enumerable:!1,get:function(){return this._writableState.length}}),Object.defineProperty(_.prototype,"destroyed",{enumerable:!1,get:function(){return void 0!==this._writableState&&this._writableState.destroyed},set:function(t){this._writableState&&(this._writableState.destroyed=t)}}),_.prototype.destroy=f.destroy,_.prototype._undestroy=f.undestroy,_.prototype._destroy=function(t,e){e(t)}},17356(t,e,r){"use strict";var n,o=r(65606);function i(t,e,r){return(e=function(t){var e=function(t){if("object"!=typeof t||null===t)return t;var e=t[Symbol.toPrimitive];if(void 0!==e){var r=e.call(t,"string");if("object"!=typeof r)return r;throw new TypeError("@@toPrimitive must return a primitive value.")}return String(t)}(t);return"symbol"==typeof e?e:String(e)}(e))in t?Object.defineProperty(t,e,{value:r,enumerable:!0,configurable:!0,writable:!0}):t[e]=r,t}var s=r(19959),a=Symbol("lastResolve"),u=Symbol("lastReject"),l=Symbol("error"),c=Symbol("ended"),f=Symbol("lastPromise"),h=Symbol("handlePromise"),p=Symbol("stream");function d(t,e){return{value:t,done:e}}function g(t){var e=t[a];if(null!==e){var r=t[p].read();null!==r&&(t[f]=null,t[a]=null,t[u]=null,e(d(r,!1)))}}function y(t){o.nextTick(g,t)}var m=Object.getPrototypeOf(function(){}),b=Object.setPrototypeOf((i(n={get stream(){return this[p]},next:function(){var t=this,e=this[l];if(null!==e)return Promise.reject(e);if(this[c])return Promise.resolve(d(void 0,!0));if(this[p].destroyed)return new Promise(function(e,r){o.nextTick(function(){t[l]?r(t[l]):e(d(void 0,!0))})});var r,n=this[f];if(n)r=new Promise(function(t,e){return function(r,n){t.then(function(){e[c]?r(d(void 0,!0)):e[h](r,n)},n)}}(n,this));else{var i=this[p].read();if(null!==i)return Promise.resolve(d(i,!1));r=new Promise(this[h])}return this[f]=r,r}},Symbol.asyncIterator,function(){return this}),i(n,"return",function(){var t=this;return new Promise(function(e,r){t[p].destroy(null,function(t){t?r(t):e(d(void 0,!0))})})}),n),m);t.exports=function(t){var e,r=Object.create(b,(i(e={},p,{value:t,writable:!0}),i(e,a,{value:null,writable:!0}),i(e,u,{value:null,writable:!0}),i(e,l,{value:null,writable:!0}),i(e,c,{value:t._readableState.endEmitted,writable:!0}),i(e,h,{value:function(t,e){var n=r[p].read();n?(r[f]=null,r[a]=null,r[u]=null,t(d(n,!1))):(r[a]=t,r[u]=e)},writable:!0}),e));return r[f]=null,s(t,function(t){if(t&&"ERR_STREAM_PREMATURE_CLOSE"!==t.code){var e=r[u];return null!==e&&(r[f]=null,r[a]=null,r[u]=null,e(t)),void(r[l]=t)}var n=r[a];null!==n&&(r[f]=null,r[a]=null,r[u]=null,n(d(void 0,!0))),r[c]=!0}),t.on("readable",y.bind(null,r)),r}},10272(t,e,r){"use strict";function n(t,e){var r=Object.keys(t);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(t);e&&(n=n.filter(function(e){return Object.getOwnPropertyDescriptor(t,e).enumerable})),r.push.apply(r,n)}return r}function o(t){for(var e=1;e0?this.tail.next=e:this.head=e,this.tail=e,++this.length}},{key:"unshift",value:function(t){var e={data:t,next:this.head};0===this.length&&(this.tail=e),this.head=e,++this.length}},{key:"shift",value:function(){if(0!==this.length){var t=this.head.data;return 1===this.length?this.head=this.tail=null:this.head=this.head.next,--this.length,t}}},{key:"clear",value:function(){this.head=this.tail=null,this.length=0}},{key:"join",value:function(t){if(0===this.length)return"";for(var e=this.head,r=""+e.data;e=e.next;)r+=t+e.data;return r}},{key:"concat",value:function(t){if(0===this.length)return u.alloc(0);for(var e=u.allocUnsafe(t>>>0),r=this.head,n=0;r;)f(r.data,e,n),n+=r.data.length,r=r.next;return e}},{key:"consume",value:function(t,e){var r;return to.length?o.length:t;if(i===o.length?n+=o:n+=o.slice(0,t),0===(t-=i)){i===o.length?(++r,e.next?this.head=e.next:this.head=this.tail=null):(this.head=e,e.data=o.slice(i));break}++r}return this.length-=r,n}},{key:"_getBuffer",value:function(t){var e=u.allocUnsafe(t),r=this.head,n=1;for(r.data.copy(e),t-=r.data.length;r=r.next;){var o=r.data,i=t>o.length?o.length:t;if(o.copy(e,e.length-t,0,i),0===(t-=i)){i===o.length?(++n,r.next?this.head=r.next:this.head=this.tail=null):(this.head=r,r.data=o.slice(i));break}++n}return this.length-=n,e}},{key:c,value:function(t,e){return l(this,o(o({},e),{},{depth:0,customInspect:!1}))}}])&&s(e.prototype,r),Object.defineProperty(e,"prototype",{writable:!1}),t}()},16057(t,e,r){"use strict";var n=r(65606);function o(t,e){s(t,e),i(t)}function i(t){t._writableState&&!t._writableState.emitClose||t._readableState&&!t._readableState.emitClose||t.emit("close")}function s(t,e){t.emit("error",e)}t.exports={destroy:function(t,e){var r=this,a=this._readableState&&this._readableState.destroyed,u=this._writableState&&this._writableState.destroyed;return a||u?(e?e(t):t&&(this._writableState?this._writableState.errorEmitted||(this._writableState.errorEmitted=!0,n.nextTick(s,this,t)):n.nextTick(s,this,t)),this):(this._readableState&&(this._readableState.destroyed=!0),this._writableState&&(this._writableState.destroyed=!0),this._destroy(t||null,function(t){!e&&t?r._writableState?r._writableState.errorEmitted?n.nextTick(i,r):(r._writableState.errorEmitted=!0,n.nextTick(o,r,t)):n.nextTick(o,r,t):e?(n.nextTick(i,r),e(t)):n.nextTick(i,r)}),this)},undestroy:function(){this._readableState&&(this._readableState.destroyed=!1,this._readableState.reading=!1,this._readableState.ended=!1,this._readableState.endEmitted=!1),this._writableState&&(this._writableState.destroyed=!1,this._writableState.ended=!1,this._writableState.ending=!1,this._writableState.finalCalled=!1,this._writableState.prefinished=!1,this._writableState.finished=!1,this._writableState.errorEmitted=!1)},errorOrDestroy:function(t,e){var r=t._readableState,n=t._writableState;r&&r.autoDestroy||n&&n.autoDestroy?t.destroy(e):t.emit("error",e)}}},19959(t,e,r){"use strict";var n=r(73157).F.ERR_STREAM_PREMATURE_CLOSE;function o(){}t.exports=function t(e,r,i){if("function"==typeof r)return t(e,null,r);r||(r={}),i=function(t){var e=!1;return function(){if(!e){e=!0;for(var r=arguments.length,n=new Array(r),o=0;o0,function(t){c||(c=t),t&&h.forEach(u),i||(h.forEach(u),f(c))})});return e.reduce(l)}},11922(t,e,r){"use strict";var n=r(73157).F.ERR_INVALID_OPT_VALUE;t.exports={getHighWaterMark:function(t,e,r,o){var i=function(t,e,r){return null!=t.highWaterMark?t.highWaterMark:e?t[r]:null}(e,o,r);if(null!=i){if(!isFinite(i)||Math.floor(i)!==i||i<0)throw new n(o?r:"highWaterMark",i);return Math.floor(i)}return t.objectMode?16:16384}}},81914(t,e,r){t.exports=r(37007).EventEmitter},63242(t,e,r){(e=t.exports=r(52341)).Stream=e,e.Readable=e,e.Writable=r(9573),e.Duplex=r(63527),e.Transform=r(95689),e.PassThrough=r(82571),e.finished=r(19959),e.pipeline=r(37413)},61160(t,e,r){"use strict";var n=r(92063),o=r(73992),i=/^[\x00-\x20\u00a0\u1680\u2000-\u200a\u2028\u2029\u202f\u205f\u3000\ufeff]+/,s=/[\n\r\t]/g,a=/^[A-Za-z][A-Za-z0-9+-.]*:\/\//,u=/:\d+$/,l=/^([a-z][a-z0-9.+-]*:)?(\/\/)?([\\/]+)?([\S\s]*)/i,c=/^[a-zA-Z]:/;function f(t){return(t||"").toString().replace(i,"")}var h=[["#","hash"],["?","query"],function(t,e){return g(e.protocol)?t.replace(/\\/g,"/"):t},["/","pathname"],["@","auth",1],[NaN,"host",void 0,1,1],[/:(\d*)$/,"port",void 0,1],[NaN,"hostname",void 0,1,1]],p={hash:1,query:1};function d(t){var e,r=("undefined"!=typeof window?window:"undefined"!=typeof globalThis?globalThis:"undefined"!=typeof self?self:{}).location||{},n={},o=typeof(t=t||r);if("blob:"===t.protocol)n=new m(unescape(t.pathname),{});else if("string"===o)for(e in n=new m(t,{}),p)delete n[e];else if("object"===o){for(e in t)e in p||(n[e]=t[e]);void 0===n.slashes&&(n.slashes=a.test(t.href))}return n}function g(t){return"file:"===t||"ftp:"===t||"http:"===t||"https:"===t||"ws:"===t||"wss:"===t}function y(t,e){t=(t=f(t)).replace(s,""),e=e||{};var r,n=l.exec(t),o=n[1]?n[1].toLowerCase():"",i=!!n[2],a=!!n[3],u=0;return i?a?(r=n[2]+n[3]+n[4],u=n[2].length+n[3].length):(r=n[2]+n[4],u=n[2].length):a?(r=n[3]+n[4],u=n[3].length):r=n[4],"file:"===o?u>=2&&(r=r.slice(2)):g(o)?r=n[4]:o?i&&(r=r.slice(2)):u>=2&&g(e.protocol)&&(r=n[4]),{protocol:o,slashes:i||g(o),slashesCount:u,rest:r}}function m(t,e,r){if(t=(t=f(t)).replace(s,""),!(this instanceof m))return new m(t,e,r);var i,a,u,l,p,b,v=h.slice(),w=typeof e,E=this,x=0;for("object"!==w&&"string"!==w&&(r=e,e=null),r&&"function"!=typeof r&&(r=o.parse),i=!(a=y(t||"",e=d(e))).protocol&&!a.slashes,E.slashes=a.slashes||i&&e.slashes,E.protocol=a.protocol||e.protocol||"",t=a.rest,("file:"===a.protocol&&(2!==a.slashesCount||c.test(t))||!a.slashes&&(a.protocol||a.slashesCount<2||!g(E.protocol)))&&(v[3]=[/(.*)/,"pathname"]);x",'"',"`"," ","\r","\n","\t"]),l=["'"].concat(u),c=["%","/","?",";","#"].concat(l),f=["/","?","#"],h=/^[+a-z0-9A-Z_-]{0,63}$/,p=/^([+a-z0-9A-Z_-]{0,63})(.*)$/,d={javascript:!0,"javascript:":!0},g={javascript:!0,"javascript:":!0},y={http:!0,https:!0,ftp:!0,gopher:!0,file:!0,"http:":!0,"https:":!0,"ftp:":!0,"gopher:":!0,"file:":!0},m=r(55373);function b(t,e,r){if(t&&"object"==typeof t&&t instanceof o)return t;var n=new o;return n.parse(t,e,r),n}o.prototype.parse=function(t,e,r){if("string"!=typeof t)throw new TypeError("Parameter 'url' must be a string, not "+typeof t);var o=t.indexOf("?"),s=-1!==o&&o127?k+="x":k+=P[C];if(!k.match(h)){var M=N.slice(0,A),L=N.slice(A+1),D=P.match(p);D&&(M.push(D[1]),L.unshift(D[2])),L.length&&(b="/"+L.join(".")+b),this.hostname=M.join(".");break}}}this.hostname.length>255?this.hostname="":this.hostname=this.hostname.toLowerCase(),j||(this.hostname=n.toASCII(this.hostname));var $=this.port?":"+this.port:"",U=this.hostname||"";this.host=U+$,this.href+=this.host,j&&(this.hostname=this.hostname.substr(1,this.hostname.length-2),"/"!==b[0]&&(b="/"+b))}if(!d[E])for(A=0,R=l.length;A0)&&r.host.split("@"))&&(r.auth=j.shift(),r.hostname=j.shift(),r.host=r.hostname)),r.search=t.search,r.query=t.query,null===r.pathname&&null===r.search||(r.path=(r.pathname?r.pathname:"")+(r.search?r.search:"")),r.href=r.format(),r;if(!x.length)return r.pathname=null,r.search?r.path="/"+r.search:r.path=null,r.href=r.format(),r;for(var O=x.slice(-1)[0],_=(r.host||t.host||x.length>1)&&("."===O||".."===O)||""===O,A=0,T=x.length;T>=0;T--)"."===(O=x[T])?x.splice(T,1):".."===O?(x.splice(T,1),A++):A&&(x.splice(T,1),A--);if(!w&&!E)for(;A--;A)x.unshift("..");!w||""===x[0]||x[0]&&"/"===x[0].charAt(0)||x.unshift(""),_&&"/"!==x.join("/").substr(-1)&&x.push("");var j,N=""===x[0]||x[0]&&"/"===x[0].charAt(0);return S&&(r.hostname=N?"":x.length?x.shift():"",r.host=r.hostname,(j=!!(r.host&&r.host.indexOf("@")>0)&&r.host.split("@"))&&(r.auth=j.shift(),r.hostname=j.shift(),r.host=r.hostname)),(w=w||r.host&&x.length)&&!N&&x.unshift(""),x.length>0?r.pathname=x.join("/"):(r.pathname=null,r.path=null),null===r.pathname&&null===r.search||(r.path=(r.pathname?r.pathname:"")+(r.search?r.search:"")),r.auth=t.auth||r.auth,r.slashes=r.slashes||t.slashes,r.href=r.format(),r},o.prototype.parseHost=function(){var t=this.host,e=s.exec(t);e&&(":"!==(e=e[0])&&(this.port=e.substr(1)),t=t.substr(0,t.length-e.length)),t&&(this.hostname=t)},e.parse=b,e.resolve=function(t,e){return b(t,!1,!0).resolve(e)},e.resolveObject=function(t,e){return t?b(t,!1,!0).resolveObject(e):e},e.format=function(t){return"string"==typeof t&&(t=b(t)),t instanceof o?t.format():o.prototype.format.call(t)},e.Url=o},81135(t){t.exports=function(t){return t&&"object"==typeof t&&"function"==typeof t.copy&&"function"==typeof t.fill&&"function"==typeof t.readUInt8}},49032(t,e,r){"use strict";var n=r(47244),o=r(48184),i=r(25767),s=r(35680);function a(t){return t.call.bind(t)}var u="undefined"!=typeof BigInt,l="undefined"!=typeof Symbol,c=a(Object.prototype.toString),f=a(Number.prototype.valueOf),h=a(String.prototype.valueOf),p=a(Boolean.prototype.valueOf);if(u)var d=a(BigInt.prototype.valueOf);if(l)var g=a(Symbol.prototype.valueOf);function y(t,e){if("object"!=typeof t)return!1;try{return e(t),!0}catch(t){return!1}}function m(t){return"[object Map]"===c(t)}function b(t){return"[object Set]"===c(t)}function v(t){return"[object WeakMap]"===c(t)}function w(t){return"[object WeakSet]"===c(t)}function E(t){return"[object ArrayBuffer]"===c(t)}function x(t){return"undefined"!=typeof ArrayBuffer&&(E.working?E(t):t instanceof ArrayBuffer)}function S(t){return"[object DataView]"===c(t)}function O(t){return"undefined"!=typeof DataView&&(S.working?S(t):t instanceof DataView)}e.isArgumentsObject=n,e.isGeneratorFunction=o,e.isTypedArray=s,e.isPromise=function(t){return"undefined"!=typeof Promise&&t instanceof Promise||null!==t&&"object"==typeof t&&"function"==typeof t.then&&"function"==typeof t.catch},e.isArrayBufferView=function(t){return"undefined"!=typeof ArrayBuffer&&ArrayBuffer.isView?ArrayBuffer.isView(t):s(t)||O(t)},e.isUint8Array=function(t){return"Uint8Array"===i(t)},e.isUint8ClampedArray=function(t){return"Uint8ClampedArray"===i(t)},e.isUint16Array=function(t){return"Uint16Array"===i(t)},e.isUint32Array=function(t){return"Uint32Array"===i(t)},e.isInt8Array=function(t){return"Int8Array"===i(t)},e.isInt16Array=function(t){return"Int16Array"===i(t)},e.isInt32Array=function(t){return"Int32Array"===i(t)},e.isFloat32Array=function(t){return"Float32Array"===i(t)},e.isFloat64Array=function(t){return"Float64Array"===i(t)},e.isBigInt64Array=function(t){return"BigInt64Array"===i(t)},e.isBigUint64Array=function(t){return"BigUint64Array"===i(t)},m.working="undefined"!=typeof Map&&m(new Map),e.isMap=function(t){return"undefined"!=typeof Map&&(m.working?m(t):t instanceof Map)},b.working="undefined"!=typeof Set&&b(new Set),e.isSet=function(t){return"undefined"!=typeof Set&&(b.working?b(t):t instanceof Set)},v.working="undefined"!=typeof WeakMap&&v(new WeakMap),e.isWeakMap=function(t){return"undefined"!=typeof WeakMap&&(v.working?v(t):t instanceof WeakMap)},w.working="undefined"!=typeof WeakSet&&w(new WeakSet),e.isWeakSet=function(t){return w(t)},E.working="undefined"!=typeof ArrayBuffer&&E(new ArrayBuffer),e.isArrayBuffer=x,S.working="undefined"!=typeof ArrayBuffer&&"undefined"!=typeof DataView&&S(new DataView(new ArrayBuffer(1),0,1)),e.isDataView=O;var _="undefined"!=typeof SharedArrayBuffer?SharedArrayBuffer:void 0;function A(t){return"[object SharedArrayBuffer]"===c(t)}function T(t){return void 0!==_&&(void 0===A.working&&(A.working=A(new _)),A.working?A(t):t instanceof _)}function j(t){return y(t,f)}function N(t){return y(t,h)}function R(t){return y(t,p)}function P(t){return u&&y(t,d)}function k(t){return l&&y(t,g)}e.isSharedArrayBuffer=T,e.isAsyncFunction=function(t){return"[object AsyncFunction]"===c(t)},e.isMapIterator=function(t){return"[object Map Iterator]"===c(t)},e.isSetIterator=function(t){return"[object Set Iterator]"===c(t)},e.isGeneratorObject=function(t){return"[object Generator]"===c(t)},e.isWebAssemblyCompiledModule=function(t){return"[object WebAssembly.Module]"===c(t)},e.isNumberObject=j,e.isStringObject=N,e.isBooleanObject=R,e.isBigIntObject=P,e.isSymbolObject=k,e.isBoxedPrimitive=function(t){return j(t)||N(t)||R(t)||P(t)||k(t)},e.isAnyArrayBuffer=function(t){return"undefined"!=typeof Uint8Array&&(x(t)||T(t))},["isProxy","isExternal","isModuleNamespaceObject"].forEach(function(t){Object.defineProperty(e,t,{enumerable:!1,value:function(){throw new Error(t+" is not supported in userland")}})})},40537(t,e,r){var n=r(65606),o=Object.getOwnPropertyDescriptors||function(t){for(var e=Object.keys(t),r={},n=0;n=o)return t;switch(t){case"%s":return String(n[r++]);case"%d":return Number(n[r++]);case"%j":try{return JSON.stringify(n[r++])}catch(t){return"[Circular]"}default:return t}}),a=n[r];r=3&&(n.depth=arguments[2]),arguments.length>=4&&(n.colors=arguments[3]),y(r)?n.showHidden=r:r&&e._extend(n,r),w(n.showHidden)&&(n.showHidden=!1),w(n.depth)&&(n.depth=2),w(n.colors)&&(n.colors=!1),w(n.customInspect)&&(n.customInspect=!0),n.colors&&(n.stylize=c),h(n,t,n.depth)}function c(t,e){var r=l.styles[e];return r?"["+l.colors[r][0]+"m"+t+"["+l.colors[r][1]+"m":t}function f(t,e){return t}function h(t,r,n){if(t.customInspect&&r&&_(r.inspect)&&r.inspect!==e.inspect&&(!r.constructor||r.constructor.prototype!==r)){var o=r.inspect(n,t);return v(o)||(o=h(t,o,n)),o}var i=function(t,e){if(w(e))return t.stylize("undefined","undefined");if(v(e)){var r="'"+JSON.stringify(e).replace(/^"|"$/g,"").replace(/'/g,"\\'").replace(/\\"/g,'"')+"'";return t.stylize(r,"string")}return b(e)?t.stylize(""+e,"number"):y(e)?t.stylize(""+e,"boolean"):m(e)?t.stylize("null","null"):void 0}(t,r);if(i)return i;var s=Object.keys(r),a=function(t){var e={};return t.forEach(function(t,r){e[t]=!0}),e}(s);if(t.showHidden&&(s=Object.getOwnPropertyNames(r)),O(r)&&(s.indexOf("message")>=0||s.indexOf("description")>=0))return p(r);if(0===s.length){if(_(r)){var u=r.name?": "+r.name:"";return t.stylize("[Function"+u+"]","special")}if(E(r))return t.stylize(RegExp.prototype.toString.call(r),"regexp");if(S(r))return t.stylize(Date.prototype.toString.call(r),"date");if(O(r))return p(r)}var l,c="",f=!1,x=["{","}"];return g(r)&&(f=!0,x=["[","]"]),_(r)&&(c=" [Function"+(r.name?": "+r.name:"")+"]"),E(r)&&(c=" "+RegExp.prototype.toString.call(r)),S(r)&&(c=" "+Date.prototype.toUTCString.call(r)),O(r)&&(c=" "+p(r)),0!==s.length||f&&0!=r.length?n<0?E(r)?t.stylize(RegExp.prototype.toString.call(r),"regexp"):t.stylize("[Object]","special"):(t.seen.push(r),l=f?function(t,e,r,n,o){for(var i=[],s=0,a=e.length;s60?r[0]+(""===e?"":e+"\n ")+" "+t.join(",\n ")+" "+r[1]:r[0]+e+" "+t.join(", ")+" "+r[1]}(l,c,x)):x[0]+c+x[1]}function p(t){return"["+Error.prototype.toString.call(t)+"]"}function d(t,e,r,n,o,i){var s,a,u;if((u=Object.getOwnPropertyDescriptor(e,o)||{value:e[o]}).get?a=u.set?t.stylize("[Getter/Setter]","special"):t.stylize("[Getter]","special"):u.set&&(a=t.stylize("[Setter]","special")),N(n,o)||(s="["+o+"]"),a||(t.seen.indexOf(u.value)<0?(a=m(r)?h(t,u.value,null):h(t,u.value,r-1)).indexOf("\n")>-1&&(a=i?a.split("\n").map(function(t){return" "+t}).join("\n").slice(2):"\n"+a.split("\n").map(function(t){return" "+t}).join("\n")):a=t.stylize("[Circular]","special")),w(s)){if(i&&o.match(/^\d+$/))return a;(s=JSON.stringify(""+o)).match(/^"([a-zA-Z_][a-zA-Z_0-9]*)"$/)?(s=s.slice(1,-1),s=t.stylize(s,"name")):(s=s.replace(/'/g,"\\'").replace(/\\"/g,'"').replace(/(^"|"$)/g,"'"),s=t.stylize(s,"string"))}return s+": "+a}function g(t){return Array.isArray(t)}function y(t){return"boolean"==typeof t}function m(t){return null===t}function b(t){return"number"==typeof t}function v(t){return"string"==typeof t}function w(t){return void 0===t}function E(t){return x(t)&&"[object RegExp]"===A(t)}function x(t){return"object"==typeof t&&null!==t}function S(t){return x(t)&&"[object Date]"===A(t)}function O(t){return x(t)&&("[object Error]"===A(t)||t instanceof Error)}function _(t){return"function"==typeof t}function A(t){return Object.prototype.toString.call(t)}function T(t){return t<10?"0"+t.toString(10):t.toString(10)}e.debuglog=function(t){if(t=t.toUpperCase(),!s[t])if(a.test(t)){var r=n.pid;s[t]=function(){var n=e.format.apply(e,arguments);console.error("%s %d: %s",t,r,n)}}else s[t]=function(){};return s[t]},e.inspect=l,l.colors={bold:[1,22],italic:[3,23],underline:[4,24],inverse:[7,27],white:[37,39],grey:[90,39],black:[30,39],blue:[34,39],cyan:[36,39],green:[32,39],magenta:[35,39],red:[31,39],yellow:[33,39]},l.styles={special:"cyan",number:"yellow",boolean:"yellow",undefined:"grey",null:"bold",string:"green",date:"magenta",regexp:"red"},e.types=r(49032),e.isArray=g,e.isBoolean=y,e.isNull=m,e.isNullOrUndefined=function(t){return null==t},e.isNumber=b,e.isString=v,e.isSymbol=function(t){return"symbol"==typeof t},e.isUndefined=w,e.isRegExp=E,e.types.isRegExp=E,e.isObject=x,e.isDate=S,e.types.isDate=S,e.isError=O,e.types.isNativeError=O,e.isFunction=_,e.isPrimitive=function(t){return null===t||"boolean"==typeof t||"number"==typeof t||"string"==typeof t||"symbol"==typeof t||void 0===t},e.isBuffer=r(81135);var j=["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"];function N(t,e){return Object.prototype.hasOwnProperty.call(t,e)}e.log=function(){var t,r;console.log("%s - %s",(r=[T((t=new Date).getHours()),T(t.getMinutes()),T(t.getSeconds())].join(":"),[t.getDate(),j[t.getMonth()],r].join(" ")),e.format.apply(e,arguments))},e.inherits=r(56698),e._extend=function(t,e){if(!e||!x(e))return t;for(var r=Object.keys(e),n=r.length;n--;)t[r[n]]=e[r[n]];return t};var R="undefined"!=typeof Symbol?Symbol("util.promisify.custom"):void 0;function P(t,e){if(!t){var r=new Error("Promise was rejected with a falsy value");r.reason=t,t=r}return e(t)}e.promisify=function(t){if("function"!=typeof t)throw new TypeError('The "original" argument must be of type Function');if(R&&t[R]){var e;if("function"!=typeof(e=t[R]))throw new TypeError('The "util.promisify.custom" argument must be of type Function');return Object.defineProperty(e,R,{value:e,enumerable:!1,writable:!1,configurable:!0}),e}function e(){for(var e,r,n=new Promise(function(t,n){e=t,r=n}),o=[],i=0;io});const n="undefined"!=typeof WorkerGlobalScope&&self instanceof WorkerGlobalScope?self:"undefined"!=typeof window?window:globalThis,o=n.fetch.bind(n);n.Headers,n.Request,n.Response},72984(t,e,r){"use strict";function n(t){return"function"==typeof t?t:Array.isArray(t)?e=>{for(const r of t){if("string"==typeof r&&e===r)return!0;if(r instanceof RegExp&&r.test(e))return!0}}:()=>!1}r.d(e,{A:()=>n})},69031(t,e,r){"use strict";r.d(e,{Eo:()=>s,Xe:()=>i,yQ:()=>a});const n=":A-Za-z_\\u00C0-\\u00D6\\u00D8-\\u00F6\\u00F8-\\u02FF\\u0370-\\u037D\\u037F-\\u1FFF\\u200C-\\u200D\\u2070-\\u218F\\u2C00-\\u2FEF\\u3001-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFFD",o=new RegExp("^["+n+"]["+n+"\\-.\\d\\u00B7\\u0300-\\u036F\\u203F-\\u2040]*$");function i(t,e){const r=[];let n=e.exec(t);for(;n;){const o=[];o.startIndex=e.lastIndex-n[0].length;const i=n.length;for(let t=0;ti});var n=r(69031);const o={allowBooleanAttributes:!1,unpairedTags:[]};function i(t,e){e=Object.assign({},o,e);const r=[];let n=!1,i=!1;"\ufeff"===t[0]&&(t=t.substr(1));for(let o=0;o"!==t[o]&&" "!==t[o]&&"\t"!==t[o]&&"\n"!==t[o]&&"\r"!==t[o];o++)m+=t[o];if(m=m.trim(),"/"===m[m.length-1]&&(m=m.substring(0,m.length-1),o--),!g(m)){let e;return e=0===m.trim().length?"Invalid space after '<'.":"Tag '"+m+"' is an invalid name.",p("InvalidTag",e,y(t,o))}const b=l(t,o);if(!1===b)return p("InvalidAttr","Attributes for '"+m+"' have open quote.",y(t,o));let v=b.value;if(o=b.index,"/"===v[v.length-1]){const r=o-v.length;v=v.substring(0,v.length-1);const i=f(v,e);if(!0!==i)return p(i.err.code,i.err.msg,y(t,r+i.err.line));n=!0}else if(d){if(!b.tagClosed)return p("InvalidTag","Closing tag '"+m+"' doesn't have proper closing.",y(t,o));if(v.trim().length>0)return p("InvalidTag","Closing tag '"+m+"' can't have attributes or invalid starting.",y(t,c));if(0===r.length)return p("InvalidTag","Closing tag '"+m+"' has not been opened.",y(t,c));{const e=r.pop();if(m!==e.tagName){let r=y(t,e.tagStartPos);return p("InvalidTag","Expected closing tag '"+e.tagName+"' (opened in line "+r.line+", col "+r.col+") instead of closing tag '"+m+"'.",y(t,c))}0==r.length&&(i=!0)}}else{const s=f(v,e);if(!0!==s)return p(s.err.code,s.err.msg,y(t,o-v.length+s.err.line));if(!0===i)return p("InvalidXml","Multiple possible root nodes found.",y(t,o));-1!==e.unpairedTags.indexOf(m)||r.push({tagName:m,tagStartPos:c}),n=!0}for(o++;o0)||p("InvalidXml","Invalid '"+JSON.stringify(r.map(t=>t.tagName),null,4).replace(/\r?\n/g,"")+"' found.",{line:1,col:1}):p("InvalidXml","Start tag expected.",1)}function s(t){return" "===t||"\t"===t||"\n"===t||"\r"===t}function a(t,e){const r=e;for(;e5&&"xml"===n)return p("InvalidXml","XML declaration allowed only at the start of the document.",y(t,e));if("?"==t[e]&&">"==t[e+1]){e++;break}continue}return e}function u(t,e){if(t.length>e+5&&"-"===t[e+1]&&"-"===t[e+2]){for(e+=3;e"===t[e+2]){e+=2;break}}else if(t.length>e+8&&"D"===t[e+1]&&"O"===t[e+2]&&"C"===t[e+3]&&"T"===t[e+4]&&"Y"===t[e+5]&&"P"===t[e+6]&&"E"===t[e+7]){let r=1;for(e+=8;e"===t[e]&&(r--,0===r))break}else if(t.length>e+9&&"["===t[e+1]&&"C"===t[e+2]&&"D"===t[e+3]&&"A"===t[e+4]&&"T"===t[e+5]&&"A"===t[e+6]&&"["===t[e+7])for(e+=8;e"===t[e+2]){e+=2;break}return e}function l(t,e){let r="",n="",o=!1;for(;e"===t[e]&&""===n){o=!0;break}r+=t[e]}return""===n&&{value:r,index:e,tagClosed:o}}const c=new RegExp("(\\s*)([^\\s=]+)(\\s*=)?(\\s*(['\"])(([\\s\\S])*?)\\5)?","g");function f(t,e){const r=(0,n.Xe)(t,c),o={};for(let t=0;ts});var n=r(85697),o=r(72984);const i={attributeNamePrefix:"@_",attributesGroupName:!1,textNodeName:"#text",ignoreAttributes:!0,cdataPropName:!1,format:!1,indentBy:" ",suppressEmptyNode:!1,suppressUnpairedNode:!0,suppressBooleanAttributes:!0,tagValueProcessor:function(t,e){return e},attributeValueProcessor:function(t,e){return e},preserveOrder:!1,commentPropName:!1,unpairedTags:[],entities:[{regex:new RegExp("&","g"),val:"&"},{regex:new RegExp(">","g"),val:">"},{regex:new RegExp("<","g"),val:"<"},{regex:new RegExp("'","g"),val:"'"},{regex:new RegExp('"',"g"),val:"""}],processEntities:!0,stopNodes:[],oneListGroup:!1};function s(t){this.options=Object.assign({},i,t),!0===this.options.ignoreAttributes||this.options.attributesGroupName?this.isAttribute=function(){return!1}:(this.ignoreAttributesFn=(0,o.A)(this.options.ignoreAttributes),this.attrPrefixLen=this.options.attributeNamePrefix.length,this.isAttribute=l),this.processTextOrObjNode=a,this.options.format?(this.indentate=u,this.tagEndChar=">\n",this.newLine="\n"):(this.indentate=function(){return""},this.tagEndChar=">",this.newLine="")}function a(t,e,r,n){const o=this.j2x(t,r+1,n.concat(e));return void 0!==t[this.options.textNodeName]&&1===Object.keys(t).length?this.buildTextValNode(t[this.options.textNodeName],e,o.attrStr,r):this.buildObjectNode(o.val,e,o.attrStr,r)}function u(t){return this.options.indentBy.repeat(t)}function l(t){return!(!t.startsWith(this.options.attributeNamePrefix)||t===this.options.textNodeName)&&t.substr(this.attrPrefixLen)}s.prototype.build=function(t){return this.options.preserveOrder?(0,n.A)(t,this.options):(Array.isArray(t)&&this.options.arrayNodeName&&this.options.arrayNodeName.length>1&&(t={[this.options.arrayNodeName]:t}),this.j2x(t,0,[]).val)},s.prototype.j2x=function(t,e,r){let n="",o="";const i=r.join(".");for(let s in t)if(Object.prototype.hasOwnProperty.call(t,s))if(void 0===t[s])this.isAttribute(s)&&(o+="");else if(null===t[s])this.isAttribute(s)||s===this.options.cdataPropName?o+="":"?"===s[0]?o+=this.indentate(e)+"<"+s+"?"+this.tagEndChar:o+=this.indentate(e)+"<"+s+"/"+this.tagEndChar;else if(t[s]instanceof Date)o+=this.buildTextValNode(t[s],s,"",e);else if("object"!=typeof t[s]){const r=this.isAttribute(s);if(r&&!this.ignoreAttributesFn(r,i))n+=this.buildAttrPairStr(r,""+t[s]);else if(!r)if(s===this.options.textNodeName){let e=this.options.tagValueProcessor(s,""+t[s]);o+=this.replaceEntitiesValue(e)}else o+=this.buildTextValNode(t[s],s,"",e)}else if(Array.isArray(t[s])){const n=t[s].length;let i="",a="";for(let u=0;u"+t+o}},s.prototype.closeTag=function(t){let e="";return-1!==this.options.unpairedTags.indexOf(t)?this.options.suppressUnpairedNode||(e="/"):e=this.options.suppressEmptyNode?"/":`>`+this.newLine;if(!1!==this.options.commentPropName&&e===this.options.commentPropName)return this.indentate(n)+`\x3c!--${t}--\x3e`+this.newLine;if("?"===e[0])return this.indentate(n)+"<"+e+r+"?"+this.tagEndChar;{let o=this.options.tagValueProcessor(e,t);return o=this.replaceEntitiesValue(o),""===o?this.indentate(n)+"<"+e+r+this.closeTag(e)+this.tagEndChar:this.indentate(n)+"<"+e+r+">"+o+"0&&this.options.processEntities)for(let e=0;e0&&(r="\n"),o(t,e,"",r)}function o(t,e,r,n){let l="",c=!1;for(let f=0;f`,c=!1;continue}if(p===e.commentPropName){l+=n+`\x3c!--${h[p][0][e.textNodeName]}--\x3e`,c=!0;continue}if("?"===p[0]){const t=s(h[":@"],e),r="?xml"===p?"":n;let o=h[p][0][e.textNodeName];o=0!==o.length?" "+o:"",l+=r+`<${p}${o}${t}?>`,c=!0;continue}let g=n;""!==g&&(g+=e.indentBy);const y=n+`<${p}${s(h[":@"],e)}`,m=o(h[p],e,d,g);-1!==e.unpairedTags.indexOf(p)?e.suppressUnpairedNode?l+=y+">":l+=y+"/>":m&&0!==m.length||!e.suppressEmptyNode?m&&m.endsWith(">")?l+=y+`>${m}${n}`:(l+=y+">",m&&""!==n&&(m.includes("/>")||m.includes("`):l+=y+"/>",c=!0}return l}function i(t){const e=Object.keys(t);for(let r=0;r0&&e.processEntities)for(let r=0;rn})},25003(t,e,r){"use strict";r.d(e,{A:()=>o});var n=r(69031);class o{constructor(t){this.suppressValidationErr=!t}readDocType(t,e){const r={};if("O"!==t[e+3]||"C"!==t[e+4]||"T"!==t[e+5]||"Y"!==t[e+6]||"P"!==t[e+7]||"E"!==t[e+8])throw new Error("Invalid Tag instead of DOCTYPE");{e+=9;let n=1,o=!1,i=!1,a="";for(;e"===t[e]){if(i?"-"===t[e-1]&&"-"===t[e-2]&&(i=!1,n--):n--,0===n)break}else"["===t[e]?o=!0:a+=t[e];else{if(o&&s(t,"!ENTITY",e)){let n,o;e+=7,[n,o,e]=this.readEntityExp(t,e+1,this.suppressValidationErr),-1===o.indexOf("&")&&(r[n]={regx:RegExp(`&${n};`,"g"),val:o})}else if(o&&s(t,"!ELEMENT",e)){e+=8;const{index:r}=this.readElementExp(t,e+1);e=r}else if(o&&s(t,"!ATTLIST",e))e+=8;else if(o&&s(t,"!NOTATION",e)){e+=9;const{index:r}=this.readNotationExp(t,e+1,this.suppressValidationErr);e=r}else{if(!s(t,"!--",e))throw new Error("Invalid DOCTYPE");i=!0}n++,a=""}if(0!==n)throw new Error("Unclosed DOCTYPE")}return{entities:r,i:e}}readEntityExp(t,e){e=i(t,e);let r="";for(;e{for(;eo});const n={preserveOrder:!1,attributeNamePrefix:"@_",attributesGroupName:!1,textNodeName:"#text",ignoreAttributes:!0,removeNSPrefix:!1,allowBooleanAttributes:!1,parseTagValue:!0,parseAttributeValue:!1,trimValues:!0,cdataPropName:!1,numberParseOptions:{hex:!0,leadingZeros:!0,eNotation:!0},tagValueProcessor:function(t,e){return e},attributeValueProcessor:function(t,e){return e},stopNodes:[],alwaysCreateTextNode:!1,isArray:()=>!1,commentPropName:!1,unpairedTags:[],processEntities:!0,htmlEntities:!1,ignoreDeclaration:!1,ignorePiTags:!1,transformTagName:!1,transformAttributeName:!1,updateTag:function(t,e,r){return t},captureMetaData:!1},o=function(t){return Object.assign({},n,t)}},79781(t,e,r){"use strict";r.d(e,{A:()=>u});var n=r(69031),o=r(13127),i=r(25003),s=r(60524),a=r(72984);class u{constructor(t){if(this.options=t,this.currentNode=null,this.tagsNodeStack=[],this.docTypeEntities={},this.lastEntities={apos:{regex:/&(apos|#39|#x27);/g,val:"'"},gt:{regex:/&(gt|#62|#x3E);/g,val:">"},lt:{regex:/&(lt|#60|#x3C);/g,val:"<"},quot:{regex:/&(quot|#34|#x22);/g,val:'"'}},this.ampEntity={regex:/&(amp|#38|#x26);/g,val:"&"},this.htmlEntities={space:{regex:/&(nbsp|#160);/g,val:" "},cent:{regex:/&(cent|#162);/g,val:"¢"},pound:{regex:/&(pound|#163);/g,val:"£"},yen:{regex:/&(yen|#165);/g,val:"¥"},euro:{regex:/&(euro|#8364);/g,val:"€"},copyright:{regex:/&(copy|#169);/g,val:"©"},reg:{regex:/&(reg|#174);/g,val:"®"},inr:{regex:/&(inr|#8377);/g,val:"₹"},num_dec:{regex:/&#([0-9]{1,7});/g,val:(t,e)=>S(e,10,"&#")},num_hex:{regex:/&#x([0-9a-fA-F]{1,6});/g,val:(t,e)=>S(e,16,"&#x")}},this.addExternalEntities=l,this.parseXml=d,this.parseTextData=c,this.resolveNameSpace=f,this.buildAttributesMap=p,this.isItStopNode=b,this.replaceEntitiesValue=y,this.readStopNodeData=E,this.saveTextToParentTag=m,this.addChild=g,this.ignoreAttributesFn=(0,a.A)(this.options.ignoreAttributes),this.options.stopNodes&&this.options.stopNodes.length>0){this.stopNodesExact=new Set,this.stopNodesWildcard=new Set;for(let t=0;t0)){s||(t=this.replaceEntitiesValue(t));const n=this.options.tagValueProcessor(e,t,r,o,i);return null==n?t:typeof n!=typeof t||n!==t?n:this.options.trimValues||t.trim()===t?x(t,this.options.parseTagValue,this.options.numberParseOptions):t}}function f(t){if(this.options.removeNSPrefix){const e=t.split(":"),r="/"===t.charAt(0)?"/":"";if("xmlns"===e[0])return"";2===e.length&&(t=r+e[1])}return t}const h=new RegExp("([^\\s=]+)\\s*(=\\s*(['\"])([\\s\\S]*?)\\3)?","gm");function p(t,e){if(!0!==this.options.ignoreAttributes&&"string"==typeof t){const r=(0,n.Xe)(t,h),o=r.length,i={};for(let t=0;t",i,"Closing Tag is not closed.");let o=t.substring(i+2,e).trim();if(this.options.removeNSPrefix){const t=o.indexOf(":");-1!==t&&(o=o.substr(t+1))}this.options.transformTagName&&(o=this.options.transformTagName(o)),r&&(n=this.saveTextToParentTag(n,r,s));const a=s.substring(s.lastIndexOf(".")+1);if(o&&-1!==this.options.unpairedTags.indexOf(o))throw new Error(`Unpaired tag can not be used as closing tag: `);let u=0;a&&-1!==this.options.unpairedTags.indexOf(a)?(u=s.lastIndexOf(".",s.lastIndexOf(".")-1),this.tagsNodeStack.pop()):u=s.lastIndexOf("."),s=s.substring(0,u),r=this.tagsNodeStack.pop(),n="",i=e}else if("?"===t[i+1]){let e=w(t,i,!1,"?>");if(!e)throw new Error("Pi Tag is not closed.");if(n=this.saveTextToParentTag(n,r,s),this.options.ignoreDeclaration&&"?xml"===e.tagName||this.options.ignorePiTags);else{const t=new o.A(e.tagName);t.add(this.options.textNodeName,""),e.tagName!==e.tagExp&&e.attrExpPresent&&(t[":@"]=this.buildAttributesMap(e.tagExp,s)),this.addChild(r,t,s,i)}i=e.closeIndex+1}else if("!--"===t.substr(i+1,3)){const e=v(t,"--\x3e",i+4,"Comment is not closed.");if(this.options.commentPropName){const o=t.substring(i+4,e-2);n=this.saveTextToParentTag(n,r,s),r.add(this.options.commentPropName,[{[this.options.textNodeName]:o}])}i=e}else if("!D"===t.substr(i+1,2)){const e=a.readDocType(t,i);this.docTypeEntities=e.entities,i=e.i}else if("!["===t.substr(i+1,2)){const e=v(t,"]]>",i,"CDATA is not closed.")-2,o=t.substring(i+9,e);n=this.saveTextToParentTag(n,r,s);let a=this.parseTextData(o,r.tagname,s,!0,!1,!0,!0);null==a&&(a=""),this.options.cdataPropName?r.add(this.options.cdataPropName,[{[this.options.textNodeName]:o}]):r.add(this.options.textNodeName,a),i=e+2}else{let a=w(t,i,this.options.removeNSPrefix),u=a.tagName;const l=a.rawTagName;let c=a.tagExp,f=a.attrExpPresent,h=a.closeIndex;if(this.options.transformTagName){const t=this.options.transformTagName(u);c===u&&(c=t),u=t}r&&n&&"!xml"!==r.tagname&&(n=this.saveTextToParentTag(n,r,s,!1));const p=r;p&&-1!==this.options.unpairedTags.indexOf(p.tagname)&&(r=this.tagsNodeStack.pop(),s=s.substring(0,s.lastIndexOf("."))),u!==e.tagname&&(s+=s?"."+u:u);const d=i;if(this.isItStopNode(this.stopNodesExact,this.stopNodesWildcard,s,u)){let e="";if(c.length>0&&c.lastIndexOf("/")===c.length-1)"/"===u[u.length-1]?(u=u.substr(0,u.length-1),s=s.substr(0,s.length-1),c=u):c=c.substr(0,c.length-1),i=a.closeIndex;else if(-1!==this.options.unpairedTags.indexOf(u))i=a.closeIndex;else{const r=this.readStopNodeData(t,l,h+1);if(!r)throw new Error(`Unexpected end of ${l}`);i=r.i,e=r.tagContent}const n=new o.A(u);u!==c&&f&&(n[":@"]=this.buildAttributesMap(c,s)),e&&(e=this.parseTextData(e,u,s,!0,f,!0,!0)),s=s.substr(0,s.lastIndexOf(".")),n.add(this.options.textNodeName,e),this.addChild(r,n,s,d)}else{if(c.length>0&&c.lastIndexOf("/")===c.length-1){if("/"===u[u.length-1]?(u=u.substr(0,u.length-1),s=s.substr(0,s.length-1),c=u):c=c.substr(0,c.length-1),this.options.transformTagName){const t=this.options.transformTagName(u);c===u&&(c=t),u=t}const t=new o.A(u);u!==c&&f&&(t[":@"]=this.buildAttributesMap(c,s)),this.addChild(r,t,s,d),s=s.substr(0,s.lastIndexOf("."))}else{const t=new o.A(u);this.tagsNodeStack.push(r),u!==c&&f&&(t[":@"]=this.buildAttributesMap(c,s)),this.addChild(r,t,s,d),r=t}n="",i=h}}else n+=t[i];return e.child};function g(t,e,r,n){this.options.captureMetaData||(n=void 0);const o=this.options.updateTag(e.tagname,r,e[":@"]);!1===o||("string"==typeof o?(e.tagname=o,t.addChild(e,n)):t.addChild(e,n))}const y=function(t){if(this.options.processEntities){for(let e in this.docTypeEntities){const r=this.docTypeEntities[e];t=t.replace(r.regx,r.val)}for(let e in this.lastEntities){const r=this.lastEntities[e];t=t.replace(r.regex,r.val)}if(this.options.htmlEntities)for(let e in this.htmlEntities){const r=this.htmlEntities[e];t=t.replace(r.regex,r.val)}t=t.replace(this.ampEntity.regex,this.ampEntity.val)}return t};function m(t,e,r,n){return t&&(void 0===n&&(n=0===e.child.length),void 0!==(t=this.parseTextData(t,e.tagname,r,!1,!!e[":@"]&&0!==Object.keys(e[":@"]).length,n))&&""!==t&&e.add(this.options.textNodeName,t),t=""),t}function b(t,e,r,n){return!(!e||!e.has(n))||!(!t||!t.has(r))}function v(t,e,r,n){const o=t.indexOf(e,r);if(-1===o)throw new Error(n);return o+e.length-1}function w(t,e,r,n=">"){const o=function(t,e,r=">"){let n,o="";for(let i=e;i",r,`${e} is not closed`);if(t.substring(r+2,i).trim()===e&&(o--,0===o))return{tagContent:t.substring(n,r),i};r=i}else if("?"===t[r+1])r=v(t,"?>",r+1,"StopNode is not closed.");else if("!--"===t.substr(r+1,3))r=v(t,"--\x3e",r+3,"StopNode is not closed.");else if("!["===t.substr(r+1,2))r=v(t,"]]>",r,"StopNode is not closed.")-2;else{const n=w(t,r,">");n&&((n&&n.tagName)===e&&"/"!==n.tagExp[n.tagExp.length-1]&&o++,r=n.closeIndex)}}function x(t,e,r){if(e&&"string"==typeof t){const e=t.trim();return"true"===e||"false"!==e&&(0,s.A)(t,r)}return(0,n.yQ)(t)?t:""}function S(t,e,r){const n=Number.parseInt(t,e);return n>=0&&n<=1114111?String.fromCodePoint(n):r+t+";"}},1912(t,e,r){"use strict";r.d(e,{A:()=>u});var n=r(60341),o=r(79781),i=r(35382),s=r(86301),a=r(13127);class u{constructor(t){this.externalEntities={},this.options=(0,n.D)(t)}parse(t,e){if("string"!=typeof t&&t.toString)t=t.toString();else if("string"!=typeof t)throw new Error("XML data is accepted in String or Bytes[] form.");if(e){!0===e&&(e={});const r=(0,s.t)(t,e);if(!0!==r)throw Error(`${r.err.msg}:${r.err.line}:${r.err.col}`)}const r=new o.A(this.options);r.addExternalEntities(this.externalEntities);const n=r.parseXml(t);return this.options.preserveOrder||void 0===n?n:(0,i.A)(n,this.options)}addEntity(t,e){if(-1!==e.indexOf("&"))throw new Error("Entity value can't have '&'");if(-1!==t.indexOf("&")||-1!==t.indexOf(";"))throw new Error("An entity must be set without '&' and ';'. Eg. use '#xD' for ' '");if("&"===e)throw new Error("An entity with value '&' is not permitted");this.externalEntities[t]=e}static getMetaDataSymbol(){return a.A.getMetaDataSymbol()}}},35382(t,e,r){"use strict";r.d(e,{A:()=>o});const n=r(13127).A.getMetaDataSymbol();function o(t,e){return i(t,e)}function i(t,e,r){let o;const l={};for(let c=0;c0&&(l[e.textNodeName]=o):void 0!==o&&(l[e.textNodeName]=o),l}function s(t){const e=Object.keys(t);for(let t=0;to}),n="function"!=typeof Symbol?"@@xmlMetadata":Symbol("XML Node Metadata");class o{constructor(t){this.tagname=t,this.child=[],this[":@"]={}}add(t,e){"__proto__"===t&&(t="#__proto__"),this.child.push({[t]:e})}addChild(t,e){"__proto__"===t.tagname&&(t.tagname="#__proto__"),t[":@"]&&Object.keys(t[":@"]).length>0?this.child.push({[t.tagname]:t.child,":@":t[":@"]}):this.child.push({[t.tagname]:t.child}),void 0!==e&&(this.child[this.child.length-1][n]={startIndex:e})}static getMetaDataSymbol(){return n}}},21657(t,e,r){"use strict";function n(...t){if(0===t.length)throw new Error("Failed creating sequence: No functions provided");return function(...e){let r=e;const n=this;for(;t.length>0;)r=[t.shift().apply(n,r)];return r[0]}}r.d(e,{K:()=>n})},19621(t,e,r){"use strict";r.d(e,{T:()=>a});var n=r(21657);const o="@@HOTPATCHER",i=()=>{};function s(t){return{original:t,methods:[t],final:!1}}class a{constructor(){this._configuration={registry:{},getEmptyAction:"null"},this.__type__=o}get configuration(){return this._configuration}get getEmptyAction(){return this.configuration.getEmptyAction}set getEmptyAction(t){this.configuration.getEmptyAction=t}control(t,e=!1){if(!t||t.__type__!==o)throw new Error("Failed taking control of target HotPatcher instance: Invalid type or object");return Object.keys(t.configuration.registry).forEach(r=>{this.configuration.registry.hasOwnProperty(r)?e&&(this.configuration.registry[r]=Object.assign({},t.configuration.registry[r])):this.configuration.registry[r]=Object.assign({},t.configuration.registry[r])}),t._configuration=this.configuration,this}execute(t,...e){return(this.get(t)||i)(...e)}get(t){const e=this.configuration.registry[t];if(!e)switch(this.getEmptyAction){case"null":return null;case"throw":throw new Error(`Failed handling method request: No method provided for override: ${t}`);default:throw new Error(`Failed handling request which resulted in an empty method: Invalid empty-action specified: ${this.getEmptyAction}`)}return(0,n.K)(...e.methods)}isPatched(t){return!!this.configuration.registry[t]}patch(t,e,r={}){const{chain:n=!1}=r;if(this.configuration.registry[t]&&this.configuration.registry[t].final)throw new Error(`Failed patching '${t}': Method marked as being final`);if("function"!=typeof e)throw new Error(`Failed patching '${t}': Provided method is not a function`);if(n)this.configuration.registry[t]?this.configuration.registry[t].methods.push(e):this.configuration.registry[t]=s(e);else if(this.isPatched(t)){const{original:r}=this.configuration.registry[t];this.configuration.registry[t]=Object.assign(s(e),{original:r})}else this.configuration.registry[t]=s(e);return this}patchInline(t,e,...r){return this.isPatched(t)||this.patch(t,e),this.execute(t,...r)}plugin(t,...e){return e.forEach(e=>{this.patch(t,e,{chain:!0})}),this}restore(t){if(!this.isPatched(t))throw new Error(`Failed restoring method: No method present for key: ${t}`);if("function"!=typeof this.configuration.registry[t].original)throw new Error(`Failed restoring method: Original method not found or of invalid type for key: ${t}`);return this.configuration.registry[t].methods=[this.configuration.registry[t].original],this}setFinal(t){if(!this.configuration.registry.hasOwnProperty(t))throw new Error(`Failed marking '${t}' as final: No method found for key`);return this.configuration.registry[t].final=!0,this}}},93028(t,e,r){"use strict";function n(t){if(!o(t))throw new Error("Parameter was not an error")}function o(t){return!!t&&"object"==typeof t&&"[object Error]"===(e=t,Object.prototype.toString.call(e))||t instanceof Error;var e}r.d(e,{b:()=>o,t:()=>n})},11163(t,e,r){"use strict";r.d(e,{z:()=>n});function n(){return"Layerr"}},42294(t,e,r){"use strict";r.d(e,{GU:()=>n.G});var n=r(17601)},17601(t,e,r){"use strict";r.d(e,{G:()=>s});var n=r(93028),o=r(11163),i=r(78049);class s extends Error{constructor(t,e){const r=[...arguments],{options:n,shortMessage:s}=(0,i.W)(r);let a=s;if(n.cause&&(a=`${a}: ${n.cause.message}`),super(a),this.message=a,n.name&&"string"==typeof n.name?this.name=n.name:this.name=(0,o.z)(),n.cause&&Object.defineProperty(this,"_cause",{value:n.cause}),Object.defineProperty(this,"_info",{value:{}}),n.info&&"object"==typeof n.info&&Object.assign(this._info,n.info),Error.captureStackTrace){const t=n.constructorOpt||this.constructor;Error.captureStackTrace(this,t)}}static cause(t){return(0,n.t)(t),t._cause&&(0,n.b)(t._cause)?t._cause:null}static fullStack(t){(0,n.t)(t);const e=s.cause(t);return e?`${t.stack}\ncaused by: ${s.fullStack(e)}`:t.stack??""}static info(t){(0,n.t)(t);const e={},r=s.cause(t);return r&&Object.assign(e,s.info(r)),t._info&&Object.assign(e,t._info),e}toString(){let t=this.name||this.constructor.name||this.constructor.prototype.name;return this.message&&(t=`${t}: ${this.message}`),t}}},78049(t,e,r){"use strict";r.d(e,{W:()=>o});var n=r(93028);function o(t){let e,r="";if(0===t.length)e={};else if((0,n.b)(t[0]))e={cause:t[0]},r=t.slice(1).join(" ")||"";else if(t[0]&&"object"==typeof t[0])e=Object.assign({},t[0]),r=t.slice(1).join(" ")||"";else{if("string"!=typeof t[0])throw new Error("Invalid arguments passed to Layerr");e={},r=r=t.join(" ")||""}return{options:e,shortMessage:r}}},60524(t,e,r){"use strict";r.d(e,{A:()=>s});const n=/^[-+]?0x[a-fA-F0-9]+$/,o=/^([\-\+])?(0*)([0-9]*(\.[0-9]*)?)$/,i={hex:!0,leadingZeros:!0,decimalPoint:".",eNotation:!0};function s(t,e={}){if(e=Object.assign({},i,e),!t||"string"!=typeof t)return t;let r=t.trim();if(void 0!==e.skipLike&&e.skipLike.test(r))return t;if("0"===t)return 0;if(e.hex&&n.test(r))return function(t){if(parseInt)return parseInt(t,16);if(Number.parseInt)return Number.parseInt(t,16);if(window&&window.parseInt)return window.parseInt(t,16);throw new Error("parseInt, Number.parseInt, window.parseInt are not supported")}(r);if(r.includes("e")||r.includes("E"))return function(t,e,r){if(!r.eNotation)return t;const n=e.match(a);if(n){let o=n[1]||"";const i=-1===n[3].indexOf("e")?"E":"e",s=n[2],a=o?t[s.length+1]===i:t[s.length]===i;return s.length>1&&a?t:1!==s.length||!n[3].startsWith(`.${i}`)&&n[3][0]!==i?r.leadingZeros&&!a?(e=(n[1]||"")+n[3],Number(e)):t:Number(e)}return t}(t,r,e);{const n=o.exec(r);if(n){const o=n[1]||"",i=n[2];let a=(s=n[3])&&-1!==s.indexOf(".")?("."===(s=s.replace(/0+$/,""))?s="0":"."===s[0]?s="0"+s:"."===s[s.length-1]&&(s=s.substring(0,s.length-1)),s):s;const u=o?"."===t[i.length+1]:"."===t[i.length];if(!e.leadingZeros&&(i.length>1||1===i.length&&!u))return t;{const n=Number(r),s=String(n);if(0===n)return n;if(-1!==s.search(/[eE]/))return e.eNotation?n:t;if(-1!==r.indexOf("."))return"0"===s||s===a||s===`${o}${a}`?n:t;let u=i?a:r;return i?u===s||o+u===s?n:t:u===s||u===o+s?n:t}}return t}var s}const a=/^([-+])?(0*)(\d*(\.\d*)?[eE][-\+]?\d+)$/},406(t,e,r){"use strict";function n(){return function(t){var e=[];if(0===t.length)return"";if("string"!=typeof t[0])throw new TypeError("Url must be a string. Received "+t[0]);if(t[0].match(/^[^/:]+:\/*$/)&&t.length>1){var r=t.shift();t[0]=r+t[0]}t[0].match(/^file:\/\/\//)?t[0]=t[0].replace(/^([^/:]+):\/*/,"$1:///"):t[0]=t[0].replace(/^([^/:]+):\/*/,"$1://");for(var n=0;n0&&(o=o.replace(/^[\/]+/,"")),o=n0?"?":"")+s.join("&")}("object"==typeof arguments[0]?arguments[0]:[].slice.call(arguments))}r.d(e,{A:()=>n})},19396(t,e,r){"use strict";r.d(e,{V:()=>o});var n=r(57221);function o(t,e){return`Basic ${(0,n.nk)(`${t}:${e}`)}`}},90036(t,e,r){"use strict";r.d(e,{C8:()=>i,Wb:()=>a,XX:()=>s,oD:()=>u});var n=r(83503),o=r(35658);function i(t,e,r){return{username:t,password:e,ha1:r,nc:0,algorithm:"md5",hasDigestAuth:!1}}function s(t,e){const r=t.url.replace("//",""),i=-1==r.indexOf("/")?"/":r.slice(r.indexOf("/")),s=t.method?t.method.toUpperCase():"GET",a=!!/(^|,)\s*auth\s*($|,)/.test(e.qop)&&"auth",u=`00000000${e.nc}`.slice(-8),l=(0,o.M)(e.algorithm,e.username,e.realm,e.password,e.nonce,e.cnonce,e.ha1),c=n(`${s}:${i}`),f=n(a?`${l}:${e.nonce}:${u}:${e.cnonce}:${a}:${c}`:`${l}:${e.nonce}:${c}`),h={username:e.username,realm:e.realm,nonce:e.nonce,uri:i,qop:a,response:f,nc:u,cnonce:e.cnonce,algorithm:e.algorithm,opaque:e.opaque},p=[];for(const t in h)h[t]&&("qop"===t||"nc"===t||"algorithm"===t?p.push(`${t}=${h[t]}`):p.push(`${t}="${h[t]}"`));return`Digest ${p.join(", ")}`}function a(t,e){if(!u(t))return!1;const r=/([a-z0-9_-]+)=(?:"([^"]+)"|([a-z0-9_-]+))/gi;for(;;){const n=t.headers&&t.headers.get("www-authenticate")||"",o=r.exec(n);if(!o)break;e[o[1]]=o[2]||o[3]}return e.nc+=1,e.cnonce=function(){let t="";for(let e=0;e<32;++e)t=`${t}${"abcdef0123456789"[Math.floor(16*Math.random())]}`;return t}(),!0}function u(t){return"digest"===(t.headers&&t.headers.get("www-authenticate")||"").split(/\s/)[0].toLowerCase()}},36942(t,e,r){"use strict";r.d(e,{e:()=>u});var n=r(42294),o=r(90036),i=r(19396),s=r(89793),a=r(38374);function u(t,e,r,u,l){switch(t.authType){case a.hT.Auto:e&&r&&(t.headers.Authorization=(0,i.V)(e,r));break;case a.hT.Digest:t.digest=(0,o.C8)(e,r,l);break;case a.hT.None:break;case a.hT.Password:t.headers.Authorization=(0,i.V)(e,r);break;case a.hT.Token:t.headers.Authorization=(0,s.O)(u);break;default:throw new n.GU({info:{code:a.O4.InvalidAuthType}},`Invalid auth type: ${t.authType}`)}}},89793(t,e,r){"use strict";function n(t){return`${t.token_type} ${t.access_token}`}r.d(e,{O:()=>n})},47397(t,e,r){"use strict";r.d(e,{m:()=>i});const n="function"==typeof ArrayBuffer,{toString:o}=Object.prototype;function i(t){return n&&(t instanceof ArrayBuffer||"[object ArrayBuffer]"===o.call(t))}},53850(t,e,r){"use strict";function n(t){return null!=t&&null!=t.constructor&&"function"==typeof t.constructor.isBuffer&&t.constructor.isBuffer(t)}r.d(e,{P:()=>n})},22921(t,e,r){"use strict";function n(){return"string"==typeof TARGET&&"react-native"===TARGET}function o(){return"string"==typeof TARGET&&"web"===TARGET}r.d(e,{H:()=>o,l:()=>n})},84819(t,e,r){"use strict";r.d(e,{G:()=>i});var n=r(19621);let o=null;function i(){return o||(o=new n.T),o}},84997(t,e,r){"use strict";r.d(e,{U:()=>O});var n=r(85394),o=r(36942),i=r(50335),s=r(28161),a=r(68476),u=r(76374),l=r(77101),c=r(75892),f=r(74419),h=r(17658),p=r(39615),d=r(86772),g=r(84830),y=r(80156),m=r(77087),b=r(30047),v=r(81838),w=r(10524),E=r(90176),x=r(38374);const S="https://github.com/perry-mitchell/webdav-client/blob/master/LOCK_CONTACT.md";function O(t,e={}){const{authType:r=null,remoteBasePath:O,contactHref:_=S,ha1:A,headers:T={},httpAgent:j,httpsAgent:N,password:R,token:P,username:k,withCredentials:C}=e;let I=r;I||(I=k||R?x.hT.Password:x.hT.None);const M={authType:I,remoteBasePath:O,contactHref:_,ha1:A,headers:Object.assign({},T),httpAgent:j,httpsAgent:N,password:R,parsing:{attributeNamePrefix:e.attributeNamePrefix??"@",attributeParsers:[],tagParsers:[E.jp]},remotePath:(0,n.wB)(t),remoteURL:t,token:P,username:k,withCredentials:C};return(0,o.e)(M,k,R,P,A),{copyFile:(t,e,r)=>(0,i.m)(M,t,e,r),createDirectory:(t,e)=>(0,s.c)(M,t,e),createReadStream:(t,e)=>(0,a.V)(M,t,e),createWriteStream:(t,e,r)=>(0,a.o)(M,t,e,r),customRequest:(t,e)=>(0,u.J)(M,t,e),deleteFile:(t,e)=>(0,l.W)(M,t,e),exists:(t,e)=>(0,c.t)(M,t,e),getDirectoryContents:(t,e)=>(0,f.A)(M,t,e),getFileContents:(t,e)=>(0,h.F)(M,t,e),getFileDownloadLink:t=>(0,h.b)(M,t),getFileUploadLink:t=>(0,b.w)(M,t),getHeaders:()=>Object.assign({},M.headers),getQuota:t=>(0,d.T)(M,t),lock:(t,e)=>(0,p.s)(M,t,e),moveFile:(t,e,r)=>(0,m.m)(M,t,e,r),putFileContents:(t,e,r)=>(0,b.g)(M,t,e,r),partialUpdateFileContents:(t,e,r,n,o)=>(0,v.V)(M,t,e,r,n,o),getDAVCompliance:t=>(0,w.p)(M,t),search:(t,e)=>(0,y.T)(M,t,e),setHeaders:t=>{M.headers=Object.assign({},t)},stat:(t,e)=>(0,g.z)(M,t,e),unlock:(t,e,r)=>(0,p.T)(M,t,e,r),registerAttributeParser:t=>{M.parsing.attributeParsers.push(t)},registerTagParser:t=>{M.parsing.tagParsers.push(t)}}}},82415(t,e,r){"use strict";r.d(e,{UU:()=>n.U,h4:()=>o.h4});var n=r(84997),o=(r(38374),r(90176));r(71922),r(5e3)},50335(t,e,r){"use strict";r.d(e,{m:()=>a});var n=r(85394),o=r(36236),i=r(89062),s=r(5e3);async function a(t,e,r,a={}){const u=(0,i.H)({url:(0,n.oq)(t.remoteURL,(0,o.O0)(e)),method:"COPY",headers:{Destination:(0,n.oq)(t.remoteURL,(0,o.O0)(r)),Overwrite:!1===a.overwrite?"F":"T",Depth:a.shallow?"0":"infinity"}},t,a),l=await(0,i.E)(u,t);(0,s.HT)(t,l)}},28161(t,e,r){"use strict";r.d(e,{c:()=>u});var n=r(85394),o=r(36236),i=r(89062),s=r(5e3),a=r(84830);async function u(t,e,r={}){if(!0===r.recursive)return async function(t,e,r={}){const n=(0,o.xi)((0,o.qb)(e));n.sort((t,e)=>t.length>e.length?1:e.length>t.length?-1:0);let i=!1;for(const o of n)if(i)await u(t,o,{...r,recursive:!1});else try{if("directory"!==(await(0,a.z)(t,o)).type)throw new Error(`Path includes a file: ${e}`)}catch(e){if(404!==e.status)throw e;i=!0,await u(t,o,{...r,recursive:!1})}}(t,e,r);const l=(0,i.H)({url:(0,n.oq)(t.remoteURL,(f=(0,o.O0)(e),f.endsWith("/")?f:f+"/")),method:"MKCOL"},t,r),c=await(0,i.E)(l,t);var f;(0,s.HT)(t,c)}},68476(t,e,r){"use strict";r.d(e,{V:()=>l,o:()=>c});var n=r(88310),o=r(85394),i=r(36236),s=r(89062),a=r(5e3);const u=()=>{};function l(t,e,r={}){const u=new(0,n.PassThrough);return async function(t,e,r={}){const n={};if("object"==typeof r.range&&"number"==typeof r.range.start){let t=`bytes=${r.range.start}-`;"number"==typeof r.range.end&&(t=`${t}${r.range.end}`),n.Range=t}const u=(0,s.H)({url:(0,o.oq)(t.remoteURL,(0,i.O0)(e)),method:"GET",headers:n},t,r),l=await(0,s.E)(u,t);if((0,a.HT)(t,l),n.Range&&206!==l.status){const t=new Error(`Invalid response code for partial request: ${l.status}`);throw t.status=l.status,t}return r.callback&&setTimeout(()=>{r.callback(l)},0),l.body}(t,e,r).then(t=>{t.pipe(u)}).catch(t=>{u.emit("error",t)}),u}function c(t,e,r={},l=u){const c=new(0,n.PassThrough),f={};!1===r.overwrite&&(f["If-None-Match"]="*");const h=(0,s.H)({url:(0,o.oq)(t.remoteURL,(0,i.O0)(e)),method:"PUT",headers:f,data:c,maxRedirects:0},t,r);return(0,s.E)(h,t).then(e=>(0,a.HT)(t,e)).then(t=>{setTimeout(()=>{l(t)},0)}).catch(t=>{c.emit("error",t)}),c}},76374(t,e,r){"use strict";r.d(e,{J:()=>a});var n=r(85394),o=r(36236),i=r(89062),s=r(5e3);async function a(t,e,r){r.url||(r.url=(0,n.oq)(t.remoteURL,(0,o.O0)(e)));const a=(0,i.H)(r,t,{}),u=await(0,i.E)(a,t);return(0,s.HT)(t,u),u}},77101(t,e,r){"use strict";r.d(e,{W:()=>a});var n=r(85394),o=r(36236),i=r(89062),s=r(5e3);async function a(t,e,r={}){const a=(0,i.H)({url:(0,n.oq)(t.remoteURL,(0,o.O0)(e)),method:"DELETE"},t,r),u=await(0,i.E)(a,t);(0,s.HT)(t,u)}},74419(t,e,r){"use strict";r.d(e,{A:()=>l});var n=r(12692),o=r(85394),i=r(36236),s=r(90176),a=r(89062),u=r(5e3);async function l(t,e,r={}){const l=(0,a.H)({url:(0,o.oq)(t.remoteURL,(0,i.O0)(e),"/"),method:"PROPFIND",headers:{Accept:"text/plain,application/xml",Depth:r.deep?"infinity":"1"}},t,r),c=await(0,a.E)(l,t);(0,u.HT)(t,c);const f=await c.text();if(!f)throw new Error("Failed parsing directory contents: Empty response");const h=await(0,s.h4)(f,t.parsing),p=(0,i.dU)(e);let d=function(t,e,r,a=!1,u=!1){const l=n.join(e,"/"),{multistatus:{response:c}}=t,f=c.map(t=>{const e=(0,o.S8)(t.href),{propstat:{prop:r}}=t,u="/"===l?decodeURIComponent((0,i.qb)(e)):(0,i.qb)(n.relative(decodeURIComponent(l),decodeURIComponent(e)));return(0,s.ch)(r,u,a)});return u?f:f.filter(t=>t.basename&&("file"===t.type||t.filename!==r.replace(/\/$/,"")))}(h,(0,i.dU)(t.remoteBasePath||t.remotePath),p,r.details,r.includeSelf);return r.glob&&(d=(0,u.eh)(d,r.glob)),(0,u.hq)(c,d,r.details)}},75892(t,e,r){"use strict";r.d(e,{t:()=>o});var n=r(84830);async function o(t,e,r={}){try{return await(0,n.z)(t,e,r),!0}catch(t){if(404===t.status)return!1;throw t}}},10524(t,e,r){"use strict";r.d(e,{p:()=>a});var n=r(85394),o=r(36236),i=r(89062),s=r(5e3);async function a(t,e,r={}){const a=(0,i.H)({url:(0,n.oq)(t.remoteURL,(0,o.O0)(e)),method:"OPTIONS"},t,r),u=await(0,i.E)(a,t);try{(0,s.HT)(t,u)}catch(t){throw t}return{compliance:(u.headers.get("DAV")??"").split(",").map(t=>t.trim()),server:u.headers.get("Server")??""}}},17658(t,e,r){"use strict";r.d(e,{F:()=>p,b:()=>d});var n=r(42294),o=r(85394),i=r(36236),s=r(57221),a=r(22921),u=r(89062),l=r(5e3),c=r(38374),f=r(62045).hp;const h=t=>t;async function p(t,e,r={}){const{format:s="binary"}=r;if("binary"!==s&&"text"!==s)throw new n.GU({info:{code:c.O4.InvalidOutputFormat}},`Invalid output format: ${s}`);return"text"===s?async function(t,e,r={}){const n=(0,u.H)({url:(0,o.oq)(t.remoteURL,(0,i.O0)(e)),method:"GET",headers:{Accept:"text/plain"},transformResponse:[h]},t,r),s=await(0,u.E)(n,t);(0,l.HT)(t,s);const a=await s.text();return(0,l.hq)(s,a,r.details)}(t,e,r):async function(t,e,r={}){const n=(0,u.H)({url:(0,o.oq)(t.remoteURL,(0,i.O0)(e)),method:"GET"},t,r),s=await(0,u.E)(n,t);let c;return(0,l.HT)(t,s),c=(0,a.H)()||(0,a.l)()?await s.arrayBuffer():f.from(await s.arrayBuffer()),(0,l.hq)(s,c,r.details)}(t,e,r)}function d(t,e){let r=(0,o.oq)(t.remoteURL,(0,i.O0)(e));const a=/^https:/i.test(r)?"https":"http";switch(t.authType){case c.hT.None:break;case c.hT.Password:{const e=t.headers.Authorization.replace(/^Basic /i,"").trim(),n=(0,s.Ey)(e);r=r.replace(/^https?:\/\//,`${a}://${n}@`);break}default:throw new n.GU({info:{code:c.O4.LinkUnsupportedAuthType}},`Unsupported auth type for file link: ${t.authType}`)}return r}},86772(t,e,r){"use strict";r.d(e,{T:()=>u});var n=r(89062),o=r(5e3),i=r(90176),s=r(85394),a=r(7815);async function u(t,e={}){const r=e.path||"/",u=(0,n.H)({url:(0,s.oq)(t.remoteURL,r),method:"PROPFIND",headers:{Accept:"text/plain,application/xml",Depth:"0"}},t,e),l=await(0,n.E)(u,t);(0,o.HT)(t,l);const c=await l.text(),f=await(0,i.h4)(c,t.parsing),h=(0,a.K)(f);return(0,o.hq)(l,h,e.details)}},39615(t,e,r){"use strict";r.d(e,{T:()=>f,s:()=>c});var n=r(26602),o=r(85394),i=r(36236),s=r(27562),a=r(89062),u=r(5e3);const l="Infinite, Second-4100000000";async function c(t,e,r={}){const{refreshToken:c,timeout:f=l}=r,h={Accept:"text/plain,application/xml",Timeout:f};c&&(h.If=c);const p=(0,a.H)({url:(0,o.oq)(t.remoteURL,(0,i.O0)(e)),method:"LOCK",headers:h,data:(0,s.A)(t.contactHref)},t,r),d=await(0,a.E)(p,t);(0,u.HT)(t,d);const g=await d.text(),y=(0,s.o)(g),m=n.get(y,"prop.lockdiscovery.activelock.locktoken.href"),b=n.get(y,"prop.lockdiscovery.activelock.timeout");if(!m)throw(0,u.YQ)(d,"No lock token received: ");return{token:m,serverTimeout:b}}async function f(t,e,r,n={}){const s=(0,a.H)({url:(0,o.oq)(t.remoteURL,(0,i.O0)(e)),method:"UNLOCK",headers:{"Lock-Token":r}},t,n),l=await(0,a.E)(s,t);if((0,u.HT)(t,l),204!==l.status&&200!==l.status)throw(0,u.YQ)(l)}},77087(t,e,r){"use strict";r.d(e,{m:()=>a});var n=r(85394),o=r(36236),i=r(89062),s=r(5e3);async function a(t,e,r,a={}){const u=(0,i.H)({url:(0,n.oq)(t.remoteURL,(0,o.O0)(e)),method:"MOVE",headers:{Destination:(0,n.oq)(t.remoteURL,(0,o.O0)(r)),Overwrite:!1===a.overwrite?"F":"T"}},t,a),l=await(0,i.E)(u,t);(0,s.HT)(t,l)}},81838(t,e,r){"use strict";r.d(e,{V:()=>c});var n=r(42294),o=r(85394),i=r(36236),s=r(89062),a=r(5e3),u=r(10524),l=r(38374);async function c(t,e,r,c,f,h={}){const p=await(0,u.p)(t,e,h);if(p.compliance.includes("sabredav-partialupdate"))return await async function(t,e,r,u,c,f={}){if(r>u||r<0)throw new n.GU({info:{code:l.O4.InvalidUpdateRange}},`Invalid update range ${r} for partial update`);const h={"Content-Type":"application/x-sabredav-partialupdate","Content-Length":""+(u-r+1),"X-Update-Range":`bytes=${r}-${u}`},p=(0,s.H)({url:(0,o.oq)(t.remoteURL,(0,i.O0)(e)),method:"PATCH",headers:h,data:c},t,f),d=await(0,s.E)(p,t);(0,a.HT)(t,d)}(t,e,r,c,f,h);if(p.server.includes("Apache")&&p.compliance.includes(""))return await async function(t,e,r,u,c,f={}){if(r>u||r<0)throw new n.GU({info:{code:l.O4.InvalidUpdateRange}},`Invalid update range ${r} for partial update`);const h={"Content-Type":"application/octet-stream","Content-Length":""+(u-r+1),"Content-Range":`bytes ${r}-${u}/*`},p=(0,s.H)({url:(0,o.oq)(t.remoteURL,(0,i.O0)(e)),method:"PUT",headers:h,data:c},t,f),d=await(0,s.E)(p,t);(0,a.HT)(t,d)}(t,e,r,c,f,h);throw new n.GU({info:{code:l.O4.NotSupported}},"Not supported")}},30047(t,e,r){"use strict";r.d(e,{g:()=>p,w:()=>d});var n=r(42294),o=r(88310),i=r(57221),s=r(85394),a=r(36236),u=r(71922),l=r(22921),c=r(89062),f=r(5e3),h=r(38374);async function p(t,e,r,n={}){const{contentLength:i=!0,overwrite:h=!0}=n,p={"Content-Type":"application/octet-stream"};!(0,l.H)()&&!(0,l.l)()&&void 0!==o&&void 0!==o?.Readable&&r instanceof o.Readable||!1===i||(p["Content-Length"]="number"==typeof i?`${i}`:`${(0,u.J)(r)}`),h||(p["If-None-Match"]="*");const d=(0,c.H)({url:(0,s.oq)(t.remoteURL,(0,a.O0)(e)),method:"PUT",headers:p,data:r},t,n),g=await(0,c.E)(d,t);try{(0,f.HT)(t,g)}catch(t){const e=t;if(412!==e.status||h)throw e;return!1}return!0}function d(t,e){let r=`${(0,s.oq)(t.remoteURL,(0,a.O0)(e))}?Content-Type=application/octet-stream`;const o=/^https:/i.test(r)?"https":"http";switch(t.authType){case h.hT.None:break;case h.hT.Password:{const e=t.headers.Authorization.replace(/^Basic /i,"").trim(),n=(0,i.Ey)(e);r=r.replace(/^https?:\/\//,`${o}://${n}@`);break}default:throw new n.GU({info:{code:h.O4.LinkUnsupportedAuthType}},`Unsupported auth type for file link: ${t.authType}`)}return r}},80156(t,e,r){"use strict";r.d(e,{T:()=>u});var n=r(90176),o=r(85394),i=r(36236),s=r(89062),a=r(5e3);async function u(t,e,r={}){const{details:u=!1}=r,l=(0,s.H)({url:(0,o.oq)(t.remoteURL,(0,i.O0)(e)),method:"SEARCH",headers:{Accept:"text/plain,application/xml","Content-Type":t.headers["Content-Type"]||"application/xml; charset=utf-8"}},t,r),c=await(0,s.E)(l,t);(0,a.HT)(t,c);const f=await c.text(),h=await(0,n.h4)(f,t.parsing),p=(0,n.KA)(h,e,u);return(0,a.hq)(c,p,u)}},84830(t,e,r){"use strict";r.d(e,{z:()=>u});var n=r(90176),o=r(85394),i=r(36236),s=r(89062),a=r(5e3);async function u(t,e,r={}){const{details:u=!1}=r,l=(0,s.H)({url:(0,o.oq)(t.remoteURL,(0,i.O0)(e)),method:"PROPFIND",headers:{Accept:"text/plain,application/xml",Depth:"0"}},t,r),c=await(0,s.E)(l,t);(0,a.HT)(t,c);const f=await c.text(),h=await(0,n.h4)(f,t.parsing),p=(0,n.ky)(h,e,u);return(0,a.hq)(c,p,u)}},89062(t,e,r){"use strict";r.d(e,{E:()=>g,H:()=>d});var n=r(11568),o=r(11083),i=r(97192),s=r(84819),a=r(22921),u=r(90036),l=r(79275),c=r(79605),f=r(39299),h=r(38374),p=r(36942);function d(t,e,r){const n=(0,l.q)(t);return n.headers=(0,c.l)(e.headers,n.headers||{},r.headers||{}),void 0!==r.data&&(n.data=r.data),r.signal&&(n.signal=r.signal),e.httpAgent&&(n.httpAgent=e.httpAgent),e.httpsAgent&&(n.httpsAgent=e.httpsAgent),e.digest&&(n._digest=e.digest),"boolean"==typeof e.withCredentials&&(n.withCredentials=e.withCredentials),n}async function g(t,e){return e.authType===h.hT.Auto?async function(t,e){const r=await m(t);return r.ok?(e.authType=h.hT.Password,r):401==r.status&&(0,u.oD)(r)?(e.authType=h.hT.Digest,(0,p.e)(e,e.username,e.password,void 0,void 0),t._digest=e.digest,y(t)):r}(t,e):t._digest?y(t):m(t)}async function y(t){const e=t._digest;delete t._digest,e.hasDigestAuth&&(t=(0,l.h)(t,{headers:{Authorization:(0,u.XX)(t,e)}}));const r=await m(t);if(401==r.status){if(e.hasDigestAuth=(0,u.Wb)(r,e),e.hasDigestAuth){t=(0,l.h)(t,{headers:{Authorization:(0,u.XX)(t,e)}});const r=await m(t);return 401==r.status?e.hasDigestAuth=!1:e.nc++,r}}else e.nc++;return r}function m(t){const e=(0,s.G)();return e.patchInline("request",t=>e.patchInline("fetch",i.hd,t.url,function(t){let e={};const r={method:t.method};if(t.headers&&(e=(0,c.l)(e,t.headers)),void 0!==t.data){const[n,o]=(0,f.P)(t.data);r.body=n,e=(0,c.l)(e,o)}return t.signal&&(r.signal=t.signal),t.withCredentials&&(r.credentials="include"),(0,a.H)()||(0,a.l)()||(t.httpAgent||t.httpsAgent)&&(r.agent=e=>"http:"===e.protocol?t.httpAgent||new n.Agent:t.httpsAgent||new o.Agent),r.headers=e,r}(t)),t)}},5e3(t,e,r){"use strict";r.d(e,{HT:()=>s,YQ:()=>i,eh:()=>a,hq:()=>u});var n=r(44916),o=r(79605);function i(t,e=""){const r=new Error(`${e}Invalid response: ${t.status} ${t.statusText}`);return r.status=t.status,r.response=t,r}function s(t,e){const{status:r}=e;if(401===r&&t.digest)return e;if(r>=400)throw i(e);return e}function a(t,e){return t.filter(t=>(0,n.xF)(t.filename,e,{matchBase:!0}))}function u(t,e,r=!1){return r?{data:e,headers:t.headers?(0,o.N)(t.headers):{},status:t.status,statusText:t.statusText}:e}},39299(t,e,r){"use strict";r.d(e,{P:()=>a});var n=r(88310),o=r(47397),i=r(53850),s=r(22921);function a(t){if(!(0,s.H)()&&!(0,s.l)()&&t instanceof n.Readable)return[t,{}];if("string"==typeof t)return[t,{}];if((0,i.P)(t))return[t,{}];if((0,o.m)(t))return[t,{}];if(t&&"object"==typeof t)return[JSON.stringify(t),{"content-type":"application/json"}];throw new Error("Unable to convert request body: Unexpected body type: "+typeof t)}},35658(t,e,r){"use strict";r.d(e,{M:()=>o});var n=r(83503);function o(t,e,r,o,i,s,a){const u=a||n(`${e}:${r}:${o}`);return t&&"md5-sess"===t.toLowerCase()?n(`${u}:${i}:${s}`):u}},90176(t,e,r){"use strict";r.d(e,{KA:()=>p,ch:()=>f,h4:()=>c,i5:()=>d,jp:()=>u,ky:()=>h});var n,o=r(12692),i=r(1912),s=r(26602),a=r(36236);function u(t,e){if(!t.endsWith("propstat.prop.displayname"))return e}function l(t,e,r=n.Original){const o=s.get(t,e);return"array"===r&&!1===Array.isArray(o)?[o]:"object"===r&&Array.isArray(o)?o[0]:o}function c(t,e){return e=e??{attributeNamePrefix:"@",attributeParsers:[],tagParsers:[u]},new Promise(r=>{r(function(t){const{multistatus:e}=t;if(""===e)return{multistatus:{response:[]}};if(!e)throw new Error("Invalid response: No root multistatus found");const r={multistatus:Array.isArray(e)?e[0]:e};return s.set(r,"multistatus.response",l(r,"multistatus.response",n.Array)),s.set(r,"multistatus.response",s.get(r,"multistatus.response").map(t=>function(t){const e=Object.assign({},t);return e.status?s.set(e,"status",l(e,"status",n.Object)):(s.set(e,"propstat",l(e,"propstat",n.Object)),s.set(e,"propstat.prop",l(e,"propstat.prop",n.Object))),e}(t))),r}(function({attributeNamePrefix:t,attributeParsers:e,tagParsers:r}){return new i.A({allowBooleanAttributes:!0,attributeNamePrefix:t,textNodeName:"text",ignoreAttributes:!1,removeNSPrefix:!0,numberParseOptions:{hex:!0,leadingZeros:!1},attributeValueProcessor(t,r,n){for(const t of e)try{const e=t(n,r);if(e!==r)return e}catch(t){}return r},tagValueProcessor(t,e,n){for(const t of r)try{const r=t(n,e);if(r!==e)return r}catch(t){}return e}})}(e).parse(t)))})}function f(t,e,r=!1){const{getlastmodified:n=null,getcontentlength:i="0",resourcetype:s=null,getcontenttype:a=null,getetag:u=null}=t,l=s&&"object"==typeof s&&void 0!==s.collection?"directory":"file",c={filename:e,basename:o.basename(e),lastmod:n,size:parseInt(i,10),type:l,etag:"string"==typeof u?u.replace(/"/g,""):null};return"file"===l&&(c.mime=a&&"string"==typeof a?a.split(";")[0]:""),r&&(void 0!==t.displayname&&(t.displayname=String(t.displayname)),c.props=t),c}function h(t,e,r=!1){let n=null;try{t.multistatus.response[0].propstat&&(n=t.multistatus.response[0])}catch(t){}if(!n)throw new Error("Failed getting item stat: bad response");const{propstat:{prop:o,status:i}}=n,[s,u,l]=i.split(" ",3),c=parseInt(u,10);if(c>=400){const t=new Error(`Invalid response: ${c} ${l}`);throw t.status=c,t}return f(o,(0,a.qb)(e),r)}function p(t,e,r){const n={truncated:!1,results:[]};return n.truncated=t.multistatus.response.some(t=>"507"===(t.status||t.propstat?.status).split(" ",3)?.[1]&&t.href.replace(/\/$/,"").endsWith((0,a.O0)(e).replace(/\/$/,""))),t.multistatus.response.forEach(t=>{if(void 0===t.propstat)return;const e=t.href.split("/").map(decodeURIComponent).join("/");n.results.push(f(t.propstat.prop,e,r))}),n}function d(t){switch(String(t)){case"-3":return"unlimited";case"-2":case"-1":return"unknown";default:return parseInt(String(t),10)}}!function(t){t.Array="array",t.Object="object",t.Original="original"}(n||(n={}))},57221(t,e,r){"use strict";r.d(e,{Ey:()=>o,nk:()=>i});var n=r(85914);function o(t){return n.decode(t)}function i(t){return n.encode(t)}r(15723)},79605(t,e,r){"use strict";function n(t){const e={};for(const r of t.keys())e[r]=t.get(r);return e}function o(...t){if(0===t.length)return{};const e={};return t.reduce((t,r)=>(Object.keys(r).forEach(n=>{const o=n.toLowerCase();e.hasOwnProperty(o)?t[e[o]]=r[n]:(e[o]=n,t[n]=r[n])}),t),{})}r.d(e,{N:()=>n,l:()=>o})},79275(t,e,r){"use strict";function n(t){return function(t){if("object"!=typeof t||null===t||"[object Object]"!=Object.prototype.toString.call(t))return!1;if(null===Object.getPrototypeOf(t))return!0;let e=t;for(;null!==Object.getPrototypeOf(e);)e=Object.getPrototypeOf(e);return Object.getPrototypeOf(t)===e}(t)?Object.assign({},t):Object.setPrototypeOf(Object.assign({},t),Object.getPrototypeOf(t))}function o(...t){let e=null,r=[...t];for(;r.length>0;){const t=r.shift();e=e?i(e,t):n(t)}return e}function i(t,e){const r=n(t);return Object.keys(e).forEach(t=>{r.hasOwnProperty(t)?Array.isArray(e[t])?r[t]=Array.isArray(r[t])?[...r[t],...e[t]]:[...e[t]]:"object"==typeof e[t]&&e[t]?r[t]="object"==typeof r[t]&&r[t]?i(r[t],e[t]):n(e[t]):r[t]=e[t]:r[t]=e[t]}),r}r.d(e,{h:()=>o,q:()=>n})},36236(t,e,r){"use strict";r.d(e,{O0:()=>a,dU:()=>l,qb:()=>c,xi:()=>u});var n=r(42294),o=r(12692);const i="__PATH_SEPARATOR_POSIX__",s="__PATH_SEPARATOR_WINDOWS__";function a(t){try{const e=t.replace(/\//g,i).replace(/\\\\/g,s);return encodeURIComponent(e).split(s).join("\\\\").split(i).join("/")}catch(t){throw new n.GU(t,"Failed encoding path")}}function u(t){if(!t||"/"===t)return[];let e=t;const r=[];do{r.push(e),e=o.dirname(e)}while(e&&"/"!==e);return r}function l(t){return t.startsWith("/")?t:"/"+t}function c(t){let e=t;return"/"!==e[0]&&(e="/"+e),/^.+\/$/.test(e)&&(e=e.substr(0,e.length-1)),e}},7815(t,e,r){"use strict";r.d(e,{K:()=>o});var n=r(90176);function o(t){try{const[e]=t.multistatus.response,{propstat:{prop:{"quota-used-bytes":r,"quota-available-bytes":o}}}=e;return void 0!==r&&void 0!==o?{used:parseInt(String(r),10),available:(0,n.i5)(o)}:null}catch(t){}return null}},71922(t,e,r){"use strict";r.d(e,{J:()=>u});var n=r(42294),o=r(67691),i=r(47397),s=r(53850),a=r(38374);function u(t){if((0,i.m)(t))return t.byteLength;if((0,s.P)(t))return t.length;if("string"==typeof t)return(0,o.d)(t);throw new n.GU({info:{code:a.O4.DataTypeNoLength}},"Cannot calculate data length: Invalid type")}},85394(t,e,r){"use strict";r.d(e,{S8:()=>l,oq:()=>u,wB:()=>a});var n=r(61160),o=r(42294),i=r(406),s=r(36236);function a(t){let e=new n(t).pathname;return e.length<=0&&(e="/"),(0,s.qb)(e)}function u(...t){return(0,i.A)(t.reduce((t,e,r)=>((0===r||"/"!==e||"/"===e&&"/"!==t[t.length-1])&&t.push(e),t),[]))}function l(t){try{return t.replace(/^https?:\/\/[^\/]+/,"")}catch(t){throw new o.GU(t,"Failed normalising HREF")}}},27562(t,e,r){"use strict";r.d(e,{A:()=>i,o:()=>a});var n=r(1912),o=r(99111);function i(t){return new o.A({attributeNamePrefix:"@_",format:!0,ignoreAttributes:!1,suppressEmptyNode:!0}).build(s({lockinfo:{"@_xmlns:d":"DAV:",lockscope:{exclusive:{}},locktype:{write:{}},owner:{href:t}}},"d"))}function s(t,e){const r={...t};for(const t in r)r.hasOwnProperty(t)&&(r[t]&&"object"==typeof r[t]&&-1===t.indexOf(":")?(r[`${e}:${t}`]=s(r[t],e),delete r[t]):!1===/^@_/.test(t)&&(r[`${e}:${t}`]=r[t],delete r[t]));return r}function a(t){return new n.A({removeNSPrefix:!0,parseAttributeValue:!0,parseTagValue:!0}).parse(t)}},38374(t,e,r){"use strict";var n,o;r.d(e,{O4:()=>o,hT:()=>n}),r(97192),function(t){t.Auto="auto",t.Digest="digest",t.None="none",t.Password="password",t.Token="token"}(n||(n={})),function(t){t.DataTypeNoLength="data-type-no-length",t.InvalidAuthType="invalid-auth-type",t.InvalidOutputFormat="invalid-output-format",t.LinkUnsupportedAuthType="link-unsupported-auth",t.InvalidUpdateRange="invalid-update-range",t.NotSupported="not-supported"}(o||(o={}))},27341(t,e,r){"use strict";new Map([[0,65533],[128,8364],[130,8218],[131,402],[132,8222],[133,8230],[134,8224],[135,8225],[136,710],[137,8240],[138,352],[139,8249],[140,338],[142,381],[145,8216],[146,8217],[147,8220],[148,8221],[149,8226],[150,8211],[151,8212],[152,732],[153,8482],[154,353],[155,8250],[156,339],[158,382],[159,376]]),String.fromCodePoint},26549(t,e,r){"use strict";var n,o,i,s;r(75780),r(92148),r(27341),function(t){t[t.NUM=35]="NUM",t[t.SEMI=59]="SEMI",t[t.EQUALS=61]="EQUALS",t[t.ZERO=48]="ZERO",t[t.NINE=57]="NINE",t[t.LOWER_A=97]="LOWER_A",t[t.LOWER_F=102]="LOWER_F",t[t.LOWER_X=120]="LOWER_X",t[t.LOWER_Z=122]="LOWER_Z",t[t.UPPER_A=65]="UPPER_A",t[t.UPPER_F=70]="UPPER_F",t[t.UPPER_Z=90]="UPPER_Z"}(n||(n={})),function(t){t[t.VALUE_LENGTH=49152]="VALUE_LENGTH",t[t.BRANCH_LENGTH=16256]="BRANCH_LENGTH",t[t.JUMP_TABLE=127]="JUMP_TABLE"}(o||(o={})),function(t){t[t.EntityStart=0]="EntityStart",t[t.NumericStart=1]="NumericStart",t[t.NumericDecimal=2]="NumericDecimal",t[t.NumericHex=3]="NumericHex",t[t.NamedEntity=4]="NamedEntity"}(i||(i={})),function(t){t[t.Legacy=0]="Legacy",t[t.Strict=1]="Strict",t[t.Attribute=2]="Attribute"}(s||(s={}))},13197(t,e,r){"use strict";r(91573),r(40144)},40144(t,e,r){"use strict";new Map([[34,"""],[38,"&"],[39,"'"],[60,"<"],[62,">"]]),String.prototype.codePointAt,new Map([[34,"""],[38,"&"],[160," "]]),new Map([[38,"&"],[60,"<"],[62,">"],[160," "]])},75780(t,e,r){},92148(t,e,r){},91573(t,e,r){},15723(t,e,r){"use strict";var n,o;r(26549),r(13197),r(40144),function(t){t[t.XML=0]="XML",t[t.HTML=1]="HTML"}(n||(n={})),function(t){t[t.UTF8=0]="UTF8",t[t.ASCII=1]="ASCII",t[t.Extensive=2]="Extensive",t[t.Attribute=3]="Attribute",t[t.Text=4]="Text"}(o||(o={}))},84300(t,e,r){"use strict";r.d(e,{f:()=>n});const n=t=>{if("string"!=typeof t)throw new TypeError("invalid pattern");if(t.length>65536)throw new TypeError("pattern is too long")}},17908(t,e,r){"use strict";r.d(e,{d:()=>g});var n=r(73733),o=r(24754);const i=new Set(["!","?","+","*","@"]),s=t=>i.has(t),a="(?!\\.)",u=new Set(["[","."]),l=new Set(["..","."]),c=new Set("().*{}+?[]^$\\!"),f=t=>t.replace(/[-[\]{}()*+?.,\\^$|#\s]/g,"\\$&"),h="[^/]",p=h+"*?",d=h+"+?";class g{type;#t;#e;#r=!1;#n=[];#o;#i;#s;#a=!1;#u;#l;#c=!1;constructor(t,e,r={}){this.type=t,t&&(this.#e=!0),this.#o=e,this.#t=this.#o?this.#o.#t:this,this.#u=this.#t===this?r:this.#t.#u,this.#s=this.#t===this?[]:this.#t.#s,"!"!==t||this.#t.#a||this.#s.push(this),this.#i=this.#o?this.#o.#n.length:0}get hasMagic(){if(void 0!==this.#e)return this.#e;for(const t of this.#n)if("string"!=typeof t&&(t.type||t.hasMagic))return this.#e=!0;return this.#e}toString(){return void 0!==this.#l?this.#l:this.type?this.#l=this.type+"("+this.#n.map(t=>String(t)).join("|")+")":this.#l=this.#n.map(t=>String(t)).join("")}#f(){if(this!==this.#t)throw new Error("should only call on root");if(this.#a)return this;let t;for(this.toString(),this.#a=!0;t=this.#s.pop();){if("!"!==t.type)continue;let e=t,r=e.#o;for(;r;){for(let n=e.#i+1;!r.type&&n"string"==typeof t?t:t.toJSON()):[this.type,...this.#n.map(t=>t.toJSON())];return this.isStart()&&!this.type&&t.unshift([]),this.isEnd()&&(this===this.#t||this.#t.#a&&"!"===this.#o?.type)&&t.push({}),t}isStart(){if(this.#t===this)return!0;if(!this.#o?.isStart())return!1;if(0===this.#i)return!0;const t=this.#o;for(let e=0;e{const[n,o,i,s]="string"==typeof e?g.#p(e,this.#e,r):e.toRegExpSource(t);return this.#e=this.#e||i,this.#r=this.#r||s,n}).join("");let i="";if(this.isStart()&&"string"==typeof this.#n[0]&&(1!==this.#n.length||!l.has(this.#n[0]))){const r=u,o=e&&r.has(n.charAt(0))||n.startsWith("\\.")&&r.has(n.charAt(2))||n.startsWith("\\.\\.")&&r.has(n.charAt(4)),s=!e&&!t&&r.has(n.charAt(0));i=o?"(?!(?:^|/)\\.\\.?(?:$|/))":s?a:""}let s="";return this.isEnd()&&this.#t.#a&&"!"===this.#o?.type&&(s="(?:$|\\/)"),[i+n+s,(0,o.x)(n),this.#e=!!this.#e,this.#r]}const r="*"===this.type||"+"===this.type,n="!"===this.type?"(?:(?!(?:":"(?:";let i=this.#d(e);if(this.isStart()&&this.isEnd()&&!i&&"!"!==this.type){const t=this.toString();return this.#n=[t],this.type=null,this.#e=void 0,[t,(0,o.x)(this.toString()),!1,!1]}let s=!r||t||e?"":this.#d(!0);s===i&&(s=""),s&&(i=`(?:${i})(?:${s})*?`);let c="";return c="!"===this.type&&this.#c?(this.isStart()&&!e?a:"")+d:n+i+("!"===this.type?"))"+(!this.isStart()||e||t?"":a)+p+")":"@"===this.type?")":"?"===this.type?")?":"+"===this.type&&s?")":"*"===this.type&&s?")?":`)${this.type}`),[c,(0,o.x)(i),this.#e=!!this.#e,this.#r]}#d(t){return this.#n.map(e=>{if("string"==typeof e)throw new Error("string type in extglob ast??");const[r,n,o,i]=e.toRegExpSource(t);return this.#r=this.#r||i,r}).filter(t=>!(this.isStart()&&this.isEnd()&&!t)).join("|")}static#p(t,e,r=!1){let i=!1,s="",a=!1;for(let o=0;os});const n={"[:alnum:]":["\\p{L}\\p{Nl}\\p{Nd}",!0],"[:alpha:]":["\\p{L}\\p{Nl}",!0],"[:ascii:]":["\\x00-\\x7f",!1],"[:blank:]":["\\p{Zs}\\t",!0],"[:cntrl:]":["\\p{Cc}",!0],"[:digit:]":["\\p{Nd}",!0],"[:graph:]":["\\p{Z}\\p{C}",!0,!0],"[:lower:]":["\\p{Ll}",!0],"[:print:]":["\\p{C}",!0],"[:punct:]":["\\p{P}",!0],"[:space:]":["\\p{Z}\\t\\r\\n\\v\\f",!0],"[:upper:]":["\\p{Lu}",!0],"[:word:]":["\\p{L}\\p{Nl}\\p{Nd}\\p{Pc}",!0],"[:xdigit:]":["A-Fa-f0-9",!1]},o=t=>t.replace(/[[\]\\-]/g,"\\$&"),i=t=>t.join(""),s=(t,e)=>{const r=e;if("["!==t.charAt(r))throw new Error("not in a brace expression");const s=[],a=[];let u=r+1,l=!1,c=!1,f=!1,h=!1,p=r,d="";t:for(;ud?s.push(o(d)+"-"+o(e)):e===d&&s.push(o(e)),d="",u++):t.startsWith("-]",u+1)?(s.push(o(e+"-")),u+=2):t.startsWith("-",u+1)?(d=e,u+=2):(s.push(o(e)),u++)}else f=!0,u++}else h=!0,u++}if(pn});const n=(t,{windowsPathsNoEscape:e=!1}={})=>e?t.replace(/[?*()[\]]/g,"[$&]"):t.replace(/[?*()[\]\\]/g,"\\$&")},44916(t,e,r){"use strict";r.d(e,{xF:()=>l});var n=r(68928),o=r(84300),i=r(17908),s=r(25093),a=r(24754),u=r(65606);const l=(t,e,r={})=>((0,o.f)(e),!(!r.nocomment&&"#"===e.charAt(0))&&new L(e,r).match(t)),c=/^\*+([^+@!?\*\[\(]*)$/,f=t=>e=>!e.startsWith(".")&&e.endsWith(t),h=t=>e=>e.endsWith(t),p=t=>(t=t.toLowerCase(),e=>!e.startsWith(".")&&e.toLowerCase().endsWith(t)),d=t=>(t=t.toLowerCase(),e=>e.toLowerCase().endsWith(t)),g=/^\*+\.\*+$/,y=t=>!t.startsWith(".")&&t.includes("."),m=t=>"."!==t&&".."!==t&&t.includes("."),b=/^\.\*+$/,v=t=>"."!==t&&".."!==t&&t.startsWith("."),w=/^\*+$/,E=t=>0!==t.length&&!t.startsWith("."),x=t=>0!==t.length&&"."!==t&&".."!==t,S=/^\?+([^+@!?\*\[\(]*)?$/,O=([t,e=""])=>{const r=j([t]);return e?(e=e.toLowerCase(),t=>r(t)&&t.toLowerCase().endsWith(e)):r},_=([t,e=""])=>{const r=N([t]);return e?(e=e.toLowerCase(),t=>r(t)&&t.toLowerCase().endsWith(e)):r},A=([t,e=""])=>{const r=N([t]);return e?t=>r(t)&&t.endsWith(e):r},T=([t,e=""])=>{const r=j([t]);return e?t=>r(t)&&t.endsWith(e):r},j=([t])=>{const e=t.length;return t=>t.length===e&&!t.startsWith(".")},N=([t])=>{const e=t.length;return t=>t.length===e&&"."!==t&&".."!==t},R="object"==typeof u&&u?"object"==typeof u.env&&u.env&&u.env.__MINIMATCH_TESTING_PLATFORM__||u.platform:"posix",P="win32"===R?"\\":"/";l.sep=P;const k=Symbol("globstar **");l.GLOBSTAR=k,l.filter=(t,e={})=>r=>l(r,t,e);const C=(t,e={})=>Object.assign({},t,e);l.defaults=t=>{if(!t||"object"!=typeof t||!Object.keys(t).length)return l;const e=l;return Object.assign((r,n,o={})=>e(r,n,C(t,o)),{Minimatch:class extends e.Minimatch{constructor(e,r={}){super(e,C(t,r))}static defaults(r){return e.defaults(C(t,r)).Minimatch}},AST:class extends e.AST{constructor(e,r,n={}){super(e,r,C(t,n))}static fromGlob(r,n={}){return e.AST.fromGlob(r,C(t,n))}},unescape:(r,n={})=>e.unescape(r,C(t,n)),escape:(r,n={})=>e.escape(r,C(t,n)),filter:(r,n={})=>e.filter(r,C(t,n)),defaults:r=>e.defaults(C(t,r)),makeRe:(r,n={})=>e.makeRe(r,C(t,n)),braceExpand:(r,n={})=>e.braceExpand(r,C(t,n)),match:(r,n,o={})=>e.match(r,n,C(t,o)),sep:e.sep,GLOBSTAR:k})};const I=(t,e={})=>((0,o.f)(t),e.nobrace||!/\{(?:(?!\{).)*\}/.test(t)?[t]:n(t));l.braceExpand=I,l.makeRe=(t,e={})=>new L(t,e).makeRe(),l.match=(t,e,r={})=>{const n=new L(e,r);return t=t.filter(t=>n.match(t)),n.options.nonull&&!t.length&&t.push(e),t};const M=/[?*]|[+@!]\(.*?\)|\[|\]/;class L{options;set;pattern;windowsPathsNoEscape;nonegate;negate;comment;empty;preserveMultipleSlashes;partial;globSet;globParts;nocase;isWindows;platform;windowsNoMagicRoot;regexp;constructor(t,e={}){(0,o.f)(t),e=e||{},this.options=e,this.pattern=t,this.platform=e.platform||R,this.isWindows="win32"===this.platform,this.windowsPathsNoEscape=!!e.windowsPathsNoEscape||!1===e.allowWindowsEscape,this.windowsPathsNoEscape&&(this.pattern=this.pattern.replace(/\\/g,"/")),this.preserveMultipleSlashes=!!e.preserveMultipleSlashes,this.regexp=null,this.negate=!1,this.nonegate=!!e.nonegate,this.comment=!1,this.empty=!1,this.partial=!!e.partial,this.nocase=!!this.options.nocase,this.windowsNoMagicRoot=void 0!==e.windowsNoMagicRoot?e.windowsNoMagicRoot:!(!this.isWindows||!this.nocase),this.globSet=[],this.globParts=[],this.set=[],this.make()}hasMagic(){if(this.options.magicalBraces&&this.set.length>1)return!0;for(const t of this.set)for(const e of t)if("string"!=typeof e)return!0;return!1}debug(...t){}make(){const t=this.pattern,e=this.options;if(!e.nocomment&&"#"===t.charAt(0))return void(this.comment=!0);if(!t)return void(this.empty=!0);this.parseNegate(),this.globSet=[...new Set(this.braceExpand())],e.debug&&(this.debug=(...t)=>console.error(...t)),this.debug(this.pattern,this.globSet);const r=this.globSet.map(t=>this.slashSplit(t));this.globParts=this.preprocess(r),this.debug(this.pattern,this.globParts);let n=this.globParts.map((t,e,r)=>{if(this.isWindows&&this.windowsNoMagicRoot){const e=!(""!==t[0]||""!==t[1]||"?"!==t[2]&&M.test(t[2])||M.test(t[3])),r=/^[a-z]:/i.test(t[0]);if(e)return[...t.slice(0,4),...t.slice(4).map(t=>this.parse(t))];if(r)return[t[0],...t.slice(1).map(t=>this.parse(t))]}return t.map(t=>this.parse(t))});if(this.debug(this.pattern,n),this.set=n.filter(t=>-1===t.indexOf(!1)),this.isWindows)for(let t=0;t=2?(t=this.firstPhasePreProcess(t),t=this.secondPhasePreProcess(t)):t=e>=1?this.levelOneOptimize(t):this.adjascentGlobstarOptimize(t),t}adjascentGlobstarOptimize(t){return t.map(t=>{let e=-1;for(;-1!==(e=t.indexOf("**",e+1));){let r=e;for(;"**"===t[r+1];)r++;r!==e&&t.splice(e,r-e)}return t})}levelOneOptimize(t){return t.map(t=>0===(t=t.reduce((t,e)=>{const r=t[t.length-1];return"**"===e&&"**"===r?t:".."===e&&r&&".."!==r&&"."!==r&&"**"!==r?(t.pop(),t):(t.push(e),t)},[])).length?[""]:t)}levelTwoFileOptimize(t){Array.isArray(t)||(t=this.slashSplit(t));let e=!1;do{if(e=!1,!this.preserveMultipleSlashes){for(let r=1;rn&&r.splice(n+1,o-n);let i=r[n+1];const s=r[n+2],a=r[n+3];if(".."!==i)continue;if(!s||"."===s||".."===s||!a||"."===a||".."===a)continue;e=!0,r.splice(n,1);const u=r.slice(0);u[n]="**",t.push(u),n--}if(!this.preserveMultipleSlashes){for(let t=1;tt.length)}partsMatch(t,e,r=!1){let n=0,o=0,i=[],s="";for(;ni?e=e.slice(s):i>s&&(t=t.slice(i)))}}const{optimizationLevel:o=1}=this.options;o>=2&&(t=this.levelTwoFileOptimize(t)),this.debug("matchOne",this,{file:t,pattern:e}),this.debug("matchOne",t.length,e.length);for(var i=0,s=0,a=t.length,u=e.length;i>> no match, partial?",t,f,e,h),f!==a))}let o;if("string"==typeof l?(o=c===l,this.debug("string match",l,c,o)):(o=l.test(c),this.debug("pattern match",l,c,o)),!o)return!1}if(i===a&&s===u)return!0;if(i===a)return r;if(s===u)return i===a-1&&""===t[i];throw new Error("wtf?")}braceExpand(){return I(this.pattern,this.options)}parse(t){(0,o.f)(t);const e=this.options;if("**"===t)return k;if(""===t)return"";let r,n=null;(r=t.match(w))?n=e.dot?x:E:(r=t.match(c))?n=(e.nocase?e.dot?d:p:e.dot?h:f)(r[1]):(r=t.match(S))?n=(e.nocase?e.dot?_:O:e.dot?A:T)(r):(r=t.match(g))?n=e.dot?m:y:(r=t.match(b))&&(n=v);const s=i.d.fromGlob(t,this.options).toMMPattern();return n&&"object"==typeof s&&Reflect.defineProperty(s,"test",{value:n}),s}makeRe(){if(this.regexp||!1===this.regexp)return this.regexp;const t=this.set;if(!t.length)return this.regexp=!1,this.regexp;const e=this.options,r=e.noglobstar?"[^/]*?":e.dot?"(?:(?!(?:\\/|^)(?:\\.{1,2})($|\\/)).)*?":"(?:(?!(?:\\/|^)\\.).)*?",n=new Set(e.nocase?["i"]:[]);let o=t.map(t=>{const e=t.map(t=>{if(t instanceof RegExp)for(const e of t.flags.split(""))n.add(e);return"string"==typeof t?t.replace(/[-[\]{}()*+?.,\\^$|#\s]/g,"\\$&"):t===k?k:t._src});return e.forEach((t,n)=>{const o=e[n+1],i=e[n-1];t===k&&i!==k&&(void 0===i?void 0!==o&&o!==k?e[n+1]="(?:\\/|"+r+"\\/)?"+o:e[n]=r:void 0===o?e[n-1]=i+"(?:\\/|"+r+")?":o!==k&&(e[n-1]=i+"(?:\\/|\\/"+r+"\\/)"+o,e[n+1]=k))}),e.filter(t=>t!==k).join("/")}).join("|");const[i,s]=t.length>1?["(?:",")"]:["",""];o="^"+i+o+s+"$",this.negate&&(o="^(?!"+o+").+$");try{this.regexp=new RegExp(o,[...n].join(""))}catch(t){this.regexp=!1}return this.regexp}slashSplit(t){return this.preserveMultipleSlashes?t.split("/"):this.isWindows&&/^\/\/[^\/]+/.test(t)?["",...t.split(/\/+/)]:t.split(/\/+/)}match(t,e=this.partial){if(this.debug("match",t,this.pattern),this.comment)return!1;if(this.empty)return""===t;if("/"===t&&e)return!0;const r=this.options;this.isWindows&&(t=t.split("\\").join("/"));const n=this.slashSplit(t);this.debug(this.pattern,"split",n);const o=this.set;this.debug(this.pattern,"set",o);let i=n[n.length-1];if(!i)for(let t=n.length-2;!i&&t>=0;t--)i=n[t];for(let t=0;tn});const n=(t,{windowsPathsNoEscape:e=!1}={})=>e?t.replace(/\[([^\/\\])\]/g,"$1"):t.replace(/((?!\\).|^)\[([^\/\\])\]/g,"$1$2").replace(/\\([^\/])/g,"$1")}},o={};function i(t){var e=o[t];if(void 0!==e)return e.exports;var r=o[t]={id:t,loaded:!1,exports:{}};return n[t].call(r.exports,r,r.exports,i),r.loaded=!0,r.exports}i.m=n,t=[],i.O=(e,r,n,o)=>{if(!r){var s=1/0;for(c=0;c=o)&&Object.keys(i.O).every(t=>i.O[t](r[u]))?r.splice(u--,1):(a=!1,o0&&t[c-1][2]>o;c--)t[c]=t[c-1];t[c]=[r,n,o]},i.n=t=>{var e=t&&t.__esModule?()=>t.default:()=>t;return i.d(e,{a:e}),e},i.d=(t,e)=>{for(var r in e)i.o(e,r)&&!i.o(t,r)&&Object.defineProperty(t,r,{enumerable:!0,get:e[r]})},i.f={},i.e=t=>Promise.all(Object.keys(i.f).reduce((e,r)=>(i.f[r](t,e),e),[])),i.u=t=>t+"-"+t+".js?v="+{1140:"dd55e1cf2dab9870eea9",2221:"2dad9baace69cfd4a3be",3556:"57d00a12b4953e229068",4508:"04b1afd183e5ecdd9cae",4906:"75718b28aced26adc4af",5448:"71cfe268d6f1213c4735",5528:"1445efe9cbaf4e4cbcb8",5862:"580b9c2e231a9169a12f",6015:"8ac07126adf0759a3464",7039:"be7eefcb933f99fc5b1f",7859:"5bcb1bbacda3204063dd",7910:"de857920f8beb5205bbc",8124:"75a422293ae2add34a10",8815:"0f63c2eb085d7b08be1b"}[t],i.o=(t,e)=>Object.prototype.hasOwnProperty.call(t,e),e={},r="nextcloud-ui-legacy:",i.l=(t,n,o,s)=>{if(e[t])e[t].push(n);else{var a,u;if(void 0!==o)for(var l=document.getElementsByTagName("script"),c=0;c{a.onerror=a.onload=null,clearTimeout(p);var o=e[t];if(delete e[t],a.parentNode&&a.parentNode.removeChild(a),o&&o.forEach(t=>t(n)),r)return r(n)},p=setTimeout(h.bind(null,void 0,{type:"timeout",target:a}),12e4);a.onerror=h.bind(null,a.onerror),a.onload=h.bind(null,a.onload),u&&document.head.appendChild(a)}},i.r=t=>{"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(t,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(t,"__esModule",{value:!0})},i.nmd=t=>(t.paths=[],t.children||(t.children=[]),t),i.j=2122,(()=>{var t;globalThis.importScripts&&(t=globalThis.location+"");var e=globalThis.document;if(!t&&e&&(e.currentScript&&"SCRIPT"===e.currentScript.tagName.toUpperCase()&&(t=e.currentScript.src),!t)){var r=e.getElementsByTagName("script");if(r.length)for(var n=r.length-1;n>-1&&(!t||!/^http(s?):/.test(t));)t=r[n--].src}if(!t)throw new Error("Automatic publicPath is not supported in this browser");t=t.replace(/^blob:/,"").replace(/#.*$/,"").replace(/\?.*$/,"").replace(/\/[^\/]+$/,"/"),i.p=t})(),(()=>{i.b="undefined"!=typeof document&&document.baseURI||self.location.href;var t={2122:0};i.f.j=(e,r)=>{var n=i.o(t,e)?t[e]:void 0;if(0!==n)if(n)r.push(n[2]);else{var o=new Promise((r,o)=>n=t[e]=[r,o]);r.push(n[2]=o);var s=i.p+i.u(e),a=new Error;i.l(s,r=>{if(i.o(t,e)&&(0!==(n=t[e])&&(t[e]=void 0),n)){var o=r&&("load"===r.type?"missing":r.type),s=r&&r.target&&r.target.src;a.message="Loading chunk "+e+" failed.\n("+o+": "+s+")",a.name="ChunkLoadError",a.type=o,a.request=s,n[1](a)}},"chunk-"+e,e)}},i.O.j=e=>0===t[e];var e=(e,r)=>{var n,o,[s,a,u]=r,l=0;if(s.some(e=>0!==t[e])){for(n in a)i.o(a,n)&&(i.m[n]=a[n]);if(u)var c=u(i)}for(e&&e(r);li(80609));s=i.O(s)})(); +//# sourceMappingURL=comments-comments-tab.js.map?v=cd17de768e0048e45091 \ No newline at end of file diff --git a/dist/comments-comments-tab.js.map b/dist/comments-comments-tab.js.map index 10687a1280665..015463f2cf369 100644 --- a/dist/comments-comments-tab.js.map +++ b/dist/comments-comments-tab.js.map @@ -1 +1 @@ -{"version":3,"file":"comments-comments-tab.js?v=6fd740bd965740f5230b","mappings":"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","sources":["webpack:///nextcloud/webpack/runtime/chunk loaded","webpack:///nextcloud/webpack/runtime/load script","webpack:///nextcloud/apps/comments/src/logger.js","webpack:///nextcloud/apps/comments/src/services/DavClient.js","webpack:///nextcloud/apps/comments/src/utils/davUtils.js","webpack:///nextcloud/apps/comments/src/comments-activity-tab.ts","webpack:///nextcloud/apps/comments/src/files-sidebar.ts","webpack:///nextcloud/apps/comments/src/services/GetComments.ts","webpack:///nextcloud/node_modules/balanced-match/index.js","webpack:///nextcloud/node_modules/base-64/base64.js","webpack:///nextcloud/node_modules/brace-expansion/index.js","webpack:///nextcloud/node_modules/builtin-status-codes/browser.js","webpack:///nextcloud/node_modules/byte-length/dist/index.js","webpack:///nextcloud/node_modules/generator-function/index.js","webpack:///nextcloud/node_modules/https-browserify/index.js","webpack:///nextcloud/node_modules/is-arguments/index.js","webpack:///nextcloud/node_modules/is-generator-function/index.js","webpack:///nextcloud/node_modules/is-regex/index.js","webpack:///nextcloud/node_modules/nested-property/dist/nested-property.js","webpack:///nextcloud/node_modules/object-inspect/index.js","webpack:///nextcloud/node_modules/path-posix/index.js","webpack:///nextcloud/node_modules/punycode/punycode.js","webpack:///nextcloud/node_modules/qs/lib/formats.js","webpack:///nextcloud/node_modules/qs/lib/index.js","webpack:///nextcloud/node_modules/qs/lib/parse.js","webpack:///nextcloud/node_modules/qs/lib/stringify.js","webpack:///nextcloud/node_modules/qs/lib/utils.js","webpack:///nextcloud/node_modules/querystringify/index.js","webpack:///nextcloud/node_modules/requires-port/index.js","webpack:///nextcloud/node_modules/safe-regex-test/index.js","webpack:///nextcloud/node_modules/side-channel-list/index.js","webpack:///nextcloud/node_modules/side-channel-map/index.js","webpack:///nextcloud/node_modules/side-channel-weakmap/index.js","webpack:///nextcloud/node_modules/side-channel/index.js","webpack:///nextcloud/node_modules/stream-http/index.js","webpack:///nextcloud/node_modules/stream-http/lib/capability.js","webpack:///nextcloud/node_modules/stream-http/lib/request.js","webpack:///nextcloud/node_modules/stream-http/lib/response.js","webpack:///nextcloud/node_modules/stream-http/node_modules/readable-stream/errors-browser.js","webpack:///nextcloud/node_modules/stream-http/node_modules/readable-stream/lib/_stream_duplex.js","webpack:///nextcloud/node_modules/stream-http/node_modules/readable-stream/lib/_stream_passthrough.js","webpack:///nextcloud/node_modules/stream-http/node_modules/readable-stream/lib/_stream_readable.js","webpack:///nextcloud/node_modules/stream-http/node_modules/readable-stream/lib/_stream_transform.js","webpack:///nextcloud/node_modules/stream-http/node_modules/readable-stream/lib/_stream_writable.js","webpack:///nextcloud/node_modules/stream-http/node_modules/readable-stream/lib/internal/streams/async_iterator.js","webpack:///nextcloud/node_modules/stream-http/node_modules/readable-stream/lib/internal/streams/buffer_list.js","webpack:///nextcloud/node_modules/stream-http/node_modules/readable-stream/lib/internal/streams/destroy.js","webpack:///nextcloud/node_modules/stream-http/node_modules/readable-stream/lib/internal/streams/end-of-stream.js","webpack:///nextcloud/node_modules/stream-http/node_modules/readable-stream/lib/internal/streams/from-browser.js","webpack:///nextcloud/node_modules/stream-http/node_modules/readable-stream/lib/internal/streams/pipeline.js","webpack:///nextcloud/node_modules/stream-http/node_modules/readable-stream/lib/internal/streams/state.js","webpack:///nextcloud/node_modules/stream-http/node_modules/readable-stream/lib/internal/streams/stream-browser.js","webpack:///nextcloud/node_modules/stream-http/node_modules/readable-stream/readable-browser.js","webpack:///nextcloud/node_modules/url-parse/index.js","webpack:///nextcloud/node_modules/url/url.js","webpack:///nextcloud/node_modules/util/support/isBufferBrowser.js","webpack:///nextcloud/node_modules/util/support/types.js","webpack:///nextcloud/node_modules/util/util.js","webpack:///nextcloud/node_modules/xtend/immutable.js","webpack:///nextcloud/node_modules/@buttercup/fetch/dist/index.browser.js","webpack:///nextcloud/node_modules/fast-xml-parser/src/ignoreAttributes.js","webpack:///nextcloud/node_modules/fast-xml-parser/src/util.js","webpack:///nextcloud/node_modules/fast-xml-parser/src/validator.js","webpack:///nextcloud/node_modules/fast-xml-parser/src/xmlbuilder/json2xml.js","webpack:///nextcloud/node_modules/fast-xml-parser/src/xmlbuilder/orderedJs2Xml.js","webpack:///nextcloud/node_modules/fast-xml-parser/src/xmlparser/DocTypeReader.js","webpack:///nextcloud/node_modules/fast-xml-parser/src/xmlparser/OptionsBuilder.js","webpack:///nextcloud/node_modules/fast-xml-parser/src/xmlparser/OrderedObjParser.js","webpack:///nextcloud/node_modules/fast-xml-parser/src/xmlparser/XMLParser.js","webpack:///nextcloud/node_modules/fast-xml-parser/src/xmlparser/node2json.js","webpack:///nextcloud/node_modules/fast-xml-parser/src/xmlparser/xmlNode.js","webpack:///nextcloud/node_modules/hot-patcher/dist/functions.js","webpack:///nextcloud/node_modules/hot-patcher/dist/patcher.js","webpack:///nextcloud/node_modules/layerr/dist/error.js","webpack:///nextcloud/node_modules/layerr/dist/global.js","webpack:///nextcloud/node_modules/layerr/dist/layerr.js","webpack:///nextcloud/node_modules/layerr/dist/tools.js","webpack:///nextcloud/node_modules/strnum/strnum.js","webpack:///nextcloud/node_modules/url-join/lib/url-join.js","webpack:///nextcloud/node_modules/webdav/dist/node/auth/basic.js","webpack:///nextcloud/node_modules/webdav/dist/node/auth/digest.js","webpack:///nextcloud/node_modules/webdav/dist/node/auth/index.js","webpack:///nextcloud/node_modules/webdav/dist/node/auth/oauth.js","webpack:///nextcloud/node_modules/webdav/dist/node/compat/arrayBuffer.js","webpack:///nextcloud/node_modules/webdav/dist/node/compat/buffer.js","webpack:///nextcloud/node_modules/webdav/dist/node/compat/env.js","webpack:///nextcloud/node_modules/webdav/dist/node/compat/patcher.js","webpack:///nextcloud/node_modules/webdav/dist/node/factory.js","webpack:///nextcloud/node_modules/webdav/dist/node/operations/copyFile.js","webpack:///nextcloud/node_modules/webdav/dist/node/operations/createDirectory.js","webpack:///nextcloud/node_modules/webdav/dist/node/operations/createStream.js","webpack:///nextcloud/node_modules/webdav/dist/node/operations/customRequest.js","webpack:///nextcloud/node_modules/webdav/dist/node/operations/deleteFile.js","webpack:///nextcloud/node_modules/webdav/dist/node/operations/directoryContents.js","webpack:///nextcloud/node_modules/webdav/dist/node/operations/exists.js","webpack:///nextcloud/node_modules/webdav/dist/node/operations/getDAVCompliance.js","webpack:///nextcloud/node_modules/webdav/dist/node/operations/getFileContents.js","webpack:///nextcloud/node_modules/webdav/dist/node/operations/getQuota.js","webpack:///nextcloud/node_modules/webdav/dist/node/operations/lock.js","webpack:///nextcloud/node_modules/webdav/dist/node/operations/moveFile.js","webpack:///nextcloud/node_modules/webdav/dist/node/operations/partialUpdateFileContents.js","webpack:///nextcloud/node_modules/webdav/dist/node/operations/putFileContents.js","webpack:///nextcloud/node_modules/webdav/dist/node/operations/search.js","webpack:///nextcloud/node_modules/webdav/dist/node/operations/stat.js","webpack:///nextcloud/node_modules/webdav/dist/node/request.js","webpack:///nextcloud/node_modules/webdav/dist/node/response.js","webpack:///nextcloud/node_modules/webdav/dist/node/tools/body.js","webpack:///nextcloud/node_modules/webdav/dist/node/tools/crypto.js","webpack:///nextcloud/node_modules/webdav/dist/node/tools/dav.js","webpack:///nextcloud/node_modules/webdav/dist/node/tools/encode.js","webpack:///nextcloud/node_modules/webdav/dist/node/tools/headers.js","webpack:///nextcloud/node_modules/webdav/dist/node/tools/merge.js","webpack:///nextcloud/node_modules/webdav/dist/node/tools/path.js","webpack:///nextcloud/node_modules/webdav/dist/node/tools/quota.js","webpack:///nextcloud/node_modules/webdav/dist/node/tools/size.js","webpack:///nextcloud/node_modules/webdav/dist/node/tools/url.js","webpack:///nextcloud/node_modules/webdav/dist/node/tools/xml.js","webpack:///nextcloud/node_modules/webdav/dist/node/types.js","webpack:///nextcloud/node_modules/webdav/node_modules/entities/dist/esm/decode-codepoint.js","webpack:///nextcloud/node_modules/webdav/node_modules/entities/dist/esm/decode.js","webpack:///nextcloud/node_modules/webdav/node_modules/entities/dist/esm/escape.js","webpack:///nextcloud/node_modules/webdav/node_modules/entities/dist/esm/index.js","webpack:///nextcloud/node_modules/webdav/node_modules/minimatch/dist/esm/assert-valid-pattern.js","webpack:///nextcloud/node_modules/webdav/node_modules/minimatch/dist/esm/ast.js","webpack:///nextcloud/node_modules/webdav/node_modules/minimatch/dist/esm/brace-expressions.js","webpack:///nextcloud/node_modules/webdav/node_modules/minimatch/dist/esm/escape.js","webpack:///nextcloud/node_modules/webdav/node_modules/minimatch/dist/esm/index.js","webpack:///nextcloud/node_modules/webdav/node_modules/minimatch/dist/esm/unescape.js","webpack:///nextcloud/webpack/bootstrap","webpack:///nextcloud/webpack/runtime/compat get default export","webpack:///nextcloud/webpack/runtime/define property getters","webpack:///nextcloud/webpack/runtime/ensure chunk","webpack:///nextcloud/webpack/runtime/get javascript chunk filename","webpack:///nextcloud/webpack/runtime/hasOwnProperty shorthand","webpack:///nextcloud/webpack/runtime/make namespace object","webpack:///nextcloud/webpack/runtime/node module decorator","webpack:///nextcloud/webpack/runtime/runtimeId","webpack:///nextcloud/webpack/runtime/publicPath","webpack:///nextcloud/webpack/runtime/jsonp chunk loading","webpack:///nextcloud/webpack/runtime/nonce","webpack:///nextcloud/webpack/startup"],"sourcesContent":["var deferred = [];\n__webpack_require__.O = (result, chunkIds, fn, priority) => {\n\tif(chunkIds) {\n\t\tpriority = priority || 0;\n\t\tfor(var i = deferred.length; i > 0 && deferred[i - 1][2] > priority; i--) deferred[i] = deferred[i - 1];\n\t\tdeferred[i] = [chunkIds, fn, priority];\n\t\treturn;\n\t}\n\tvar notFulfilled = Infinity;\n\tfor (var i = 0; i < deferred.length; i++) {\n\t\tvar [chunkIds, fn, priority] = deferred[i];\n\t\tvar fulfilled = true;\n\t\tfor (var j = 0; j < chunkIds.length; j++) {\n\t\t\tif ((priority & 1 === 0 || notFulfilled >= priority) && Object.keys(__webpack_require__.O).every((key) => (__webpack_require__.O[key](chunkIds[j])))) {\n\t\t\t\tchunkIds.splice(j--, 1);\n\t\t\t} else {\n\t\t\t\tfulfilled = false;\n\t\t\t\tif(priority < notFulfilled) notFulfilled = priority;\n\t\t\t}\n\t\t}\n\t\tif(fulfilled) {\n\t\t\tdeferred.splice(i--, 1)\n\t\t\tvar r = fn();\n\t\t\tif (r !== undefined) result = r;\n\t\t}\n\t}\n\treturn result;\n};","var inProgress = {};\nvar dataWebpackPrefix = \"nextcloud-ui-legacy:\";\n// loadScript function to load a script via script tag\n__webpack_require__.l = (url, done, key, chunkId) => {\n\tif(inProgress[url]) { inProgress[url].push(done); return; }\n\tvar script, needAttach;\n\tif(key !== undefined) {\n\t\tvar scripts = document.getElementsByTagName(\"script\");\n\t\tfor(var i = 0; i < scripts.length; i++) {\n\t\t\tvar s = scripts[i];\n\t\t\tif(s.getAttribute(\"src\") == url || s.getAttribute(\"data-webpack\") == dataWebpackPrefix + key) { script = s; break; }\n\t\t}\n\t}\n\tif(!script) {\n\t\tneedAttach = true;\n\t\tscript = document.createElement('script');\n\n\t\tscript.charset = 'utf-8';\n\t\tif (__webpack_require__.nc) {\n\t\t\tscript.setAttribute(\"nonce\", __webpack_require__.nc);\n\t\t}\n\t\tscript.setAttribute(\"data-webpack\", dataWebpackPrefix + key);\n\n\t\tscript.src = url;\n\t}\n\tinProgress[url] = [done];\n\tvar onScriptComplete = (prev, event) => {\n\t\t// avoid mem leaks in IE.\n\t\tscript.onerror = script.onload = null;\n\t\tclearTimeout(timeout);\n\t\tvar doneFns = inProgress[url];\n\t\tdelete inProgress[url];\n\t\tscript.parentNode && script.parentNode.removeChild(script);\n\t\tdoneFns && doneFns.forEach((fn) => (fn(event)));\n\t\tif(prev) return prev(event);\n\t}\n\tvar timeout = setTimeout(onScriptComplete.bind(null, undefined, { type: 'timeout', target: script }), 120000);\n\tscript.onerror = onScriptComplete.bind(null, script.onerror);\n\tscript.onload = onScriptComplete.bind(null, script.onload);\n\tneedAttach && document.head.appendChild(script);\n};","/**\n * SPDX-FileCopyrightText: 2023 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\n\nimport { getLoggerBuilder } from '@nextcloud/logger'\n\nexport default getLoggerBuilder()\n\t.setApp('comments')\n\t.detectUser()\n\t.build()\n","/**\n * SPDX-FileCopyrightText: 2021 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\n\nimport { getRequestToken, onRequestTokenUpdate } from '@nextcloud/auth'\nimport { createClient } from 'webdav'\nimport { getRootPath } from '../utils/davUtils.js'\n\n// init webdav client\nconst client = createClient(getRootPath())\n\n// set CSRF token header\n/**\n * @param token\n */\nfunction setHeaders(token) {\n\tclient.setHeaders({\n\t\t// Add this so the server knows it is an request from the browser\n\t\t'X-Requested-With': 'XMLHttpRequest',\n\t\t// Inject user auth\n\t\trequesttoken: token ?? '',\n\t})\n}\n\n// refresh headers when request token changes\nonRequestTokenUpdate(setHeaders)\nsetHeaders(getRequestToken())\n\nexport default client\n","/**\n * SPDX-FileCopyrightText: 2020 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\n\nimport { generateRemoteUrl } from '@nextcloud/router'\n\n/**\n *\n */\nfunction getRootPath() {\n\treturn generateRemoteUrl('dav/comments')\n}\n\nexport { getRootPath }\n","/*!\n * SPDX-FileCopyrightText: 2023 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\nimport moment from '@nextcloud/moment';\nimport { createPinia, PiniaVuePlugin } from 'pinia';\nimport Vue, {} from 'vue';\nimport logger from './logger.js';\nimport { getComments } from './services/GetComments.js';\nVue.use(PiniaVuePlugin);\nlet ActivityTabPluginView;\nlet ActivityTabPluginInstance;\n/**\n * Register the comments plugins for the Activity sidebar\n */\nexport function registerCommentsPlugins() {\n window.OCA.Activity.registerSidebarAction({\n mount: async (el, { node, reload }) => {\n const pinia = createPinia();\n if (!ActivityTabPluginView) {\n const { default: ActivityCommentAction } = await import('./views/ActivityCommentAction.vue');\n // @ts-expect-error Types are broken for Vue2\n ActivityTabPluginView = Vue.extend(ActivityCommentAction);\n }\n ActivityTabPluginInstance = new ActivityTabPluginView({\n el,\n pinia,\n propsData: {\n reloadCallback: reload,\n resourceId: node.fileid,\n },\n });\n logger.info('Comments plugin mounted in Activity sidebar action', { node });\n },\n unmount: () => {\n // destroy previous instance if available\n if (ActivityTabPluginInstance) {\n ActivityTabPluginInstance.$destroy();\n }\n },\n });\n window.OCA.Activity.registerSidebarEntries(async ({ node, limit, offset }) => {\n const { data: comments } = await getComments({ resourceType: 'files', resourceId: node.fileid }, {\n limit,\n offset: offset ?? 0,\n });\n logger.debug('Loaded comments', { node, comments });\n const { default: CommentView } = await import('./views/ActivityCommentEntry.vue');\n // @ts-expect-error Types are broken for Vue2\n const CommentsViewObject = Vue.extend(CommentView);\n return comments.map((comment) => ({\n _CommentsViewInstance: undefined,\n timestamp: moment(comment.props?.creationDateTime).toDate().getTime(),\n mount(element, { reload }) {\n this._CommentsViewInstance = new CommentsViewObject({\n el: element,\n propsData: {\n comment,\n resourceId: node.fileid,\n reloadCallback: reload,\n },\n });\n },\n unmount() {\n this._CommentsViewInstance?.$destroy();\n },\n }));\n });\n window.OCA.Activity.registerSidebarFilter((activity) => activity.type !== 'comments');\n logger.info('Comments plugin registered for Activity sidebar action');\n}\n","/**\n * SPDX-FileCopyrightText: 2020 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\nimport MessageReplyText from '@mdi/svg/svg/message-reply-text.svg?raw';\nimport { getCSPNonce } from '@nextcloud/auth';\nimport { registerSidebarTab } from '@nextcloud/files';\nimport { loadState } from '@nextcloud/initial-state';\nimport { t } from '@nextcloud/l10n';\nimport wrap from '@vue/web-component-wrapper';\nimport { createPinia, PiniaVuePlugin } from 'pinia';\nimport Vue from 'vue';\nimport { registerCommentsPlugins } from './comments-activity-tab.ts';\n__webpack_nonce__ = getCSPNonce();\nconst tagName = 'comments_files-sidebar-tab';\nif (loadState('comments', 'activityEnabled', false) && OCA?.Activity?.registerSidebarAction !== undefined) {\n // Do not mount own tab but mount into activity\n window.addEventListener('DOMContentLoaded', function () {\n registerCommentsPlugins();\n });\n}\nelse {\n registerSidebarTab({\n id: 'comments',\n displayName: t('comments', 'Comments'),\n iconSvgInline: MessageReplyText,\n order: 50,\n tagName,\n async onInit() {\n const { default: FilesSidebarTab } = await import('./views/FilesSidebarTab.vue');\n Vue.use(PiniaVuePlugin);\n Vue.mixin({ pinia: createPinia() });\n const webComponent = wrap(Vue, FilesSidebarTab);\n // In Vue 2, wrap doesn't support disabling shadow. Disable with a hack\n Object.defineProperty(webComponent.prototype, 'attachShadow', {\n value() { return this; },\n });\n Object.defineProperty(webComponent.prototype, 'shadowRoot', {\n get() { return this; },\n });\n window.customElements.define(tagName, webComponent);\n },\n });\n}\n","/**\n * SPDX-FileCopyrightText: 2020 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\nimport { parseXML } from 'webdav';\nimport { processResponsePayload } from 'webdav/dist/node/response.js';\nimport { prepareFileFromProps } from 'webdav/dist/node/tools/dav.js';\nimport client from './DavClient.js';\nexport const DEFAULT_LIMIT = 20;\n/**\n * Retrieve the comments list\n *\n * @param data destructuring object\n * @param data.resourceType the resource type\n * @param data.resourceId the resource ID\n * @param [options] optional options for axios\n * @param [options.offset] the pagination offset\n * @param [options.limit] the pagination limit, defaults to 20\n * @param [options.datetime] optional date to query\n * @return the comments list\n */\nexport async function getComments({ resourceType, resourceId }, options) {\n const resourcePath = ['', resourceType, resourceId].join('/');\n const datetime = options.datetime ? `${options.datetime.toISOString()}` : '';\n const response = await client.customRequest(resourcePath, {\n method: 'REPORT',\n data: `\n\t\t\t\n\t\t\t\t${options.limit ?? DEFAULT_LIMIT}\n\t\t\t\t${options.offset || 0}\n\t\t\t\t${datetime}\n\t\t\t`,\n ...options,\n });\n const responseData = await response.text();\n const result = await parseXML(responseData);\n const stat = getDirectoryFiles(result, true);\n // https://github.com/perry-mitchell/webdav-client/issues/339\n return processResponsePayload(response, stat, true);\n}\n/**\n * https://github.com/perry-mitchell/webdav-client/blob/8d9694613c978ce7404e26a401c39a41f125f87f/source/operations/directoryContents.ts\n *\n * @param result\n * @param isDetailed\n */\nfunction getDirectoryFiles(result, isDetailed = false) {\n // Extract the response items (directory contents)\n const { multistatus: { response: responseItems }, } = result;\n // Map all items to a consistent output structure (results)\n return responseItems.map((item) => {\n // Each item should contain a stat object\n const props = item.propstat.prop;\n return prepareFileFromProps(props, props.id.toString(), isDetailed);\n });\n}\n","'use strict';\nmodule.exports = balanced;\nfunction balanced(a, b, str) {\n if (a instanceof RegExp) a = maybeMatch(a, str);\n if (b instanceof RegExp) b = maybeMatch(b, str);\n\n var r = range(a, b, str);\n\n return r && {\n start: r[0],\n end: r[1],\n pre: str.slice(0, r[0]),\n body: str.slice(r[0] + a.length, r[1]),\n post: str.slice(r[1] + b.length)\n };\n}\n\nfunction maybeMatch(reg, str) {\n var m = str.match(reg);\n return m ? m[0] : null;\n}\n\nbalanced.range = range;\nfunction range(a, b, str) {\n var begs, beg, left, right, result;\n var ai = str.indexOf(a);\n var bi = str.indexOf(b, ai + 1);\n var i = ai;\n\n if (ai >= 0 && bi > 0) {\n if(a===b) {\n return [ai, bi];\n }\n begs = [];\n left = str.length;\n\n while (i >= 0 && !result) {\n if (i == ai) {\n begs.push(i);\n ai = str.indexOf(a, i + 1);\n } else if (begs.length == 1) {\n result = [ begs.pop(), bi ];\n } else {\n beg = begs.pop();\n if (beg < left) {\n left = beg;\n right = bi;\n }\n\n bi = str.indexOf(b, i + 1);\n }\n\n i = ai < bi && ai >= 0 ? ai : bi;\n }\n\n if (begs.length) {\n result = [ left, right ];\n }\n }\n\n return result;\n}\n","/*! https://mths.be/base64 v1.0.0 by @mathias | MIT license */\n;(function(root) {\n\n\t// Detect free variables `exports`.\n\tvar freeExports = typeof exports == 'object' && exports;\n\n\t// Detect free variable `module`.\n\tvar freeModule = typeof module == 'object' && module &&\n\t\tmodule.exports == freeExports && module;\n\n\t// Detect free variable `global`, from Node.js or Browserified code, and use\n\t// it as `root`.\n\tvar freeGlobal = typeof global == 'object' && global;\n\tif (freeGlobal.global === freeGlobal || freeGlobal.window === freeGlobal) {\n\t\troot = freeGlobal;\n\t}\n\n\t/*--------------------------------------------------------------------------*/\n\n\tvar InvalidCharacterError = function(message) {\n\t\tthis.message = message;\n\t};\n\tInvalidCharacterError.prototype = new Error;\n\tInvalidCharacterError.prototype.name = 'InvalidCharacterError';\n\n\tvar error = function(message) {\n\t\t// Note: the error messages used throughout this file match those used by\n\t\t// the native `atob`/`btoa` implementation in Chromium.\n\t\tthrow new InvalidCharacterError(message);\n\t};\n\n\tvar TABLE = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/';\n\t// http://whatwg.org/html/common-microsyntaxes.html#space-character\n\tvar REGEX_SPACE_CHARACTERS = /[\\t\\n\\f\\r ]/g;\n\n\t// `decode` is designed to be fully compatible with `atob` as described in the\n\t// HTML Standard. http://whatwg.org/html/webappapis.html#dom-windowbase64-atob\n\t// The optimized base64-decoding algorithm used is based on @atk’s excellent\n\t// implementation. https://gist.github.com/atk/1020396\n\tvar decode = function(input) {\n\t\tinput = String(input)\n\t\t\t.replace(REGEX_SPACE_CHARACTERS, '');\n\t\tvar length = input.length;\n\t\tif (length % 4 == 0) {\n\t\t\tinput = input.replace(/==?$/, '');\n\t\t\tlength = input.length;\n\t\t}\n\t\tif (\n\t\t\tlength % 4 == 1 ||\n\t\t\t// http://whatwg.org/C#alphanumeric-ascii-characters\n\t\t\t/[^+a-zA-Z0-9/]/.test(input)\n\t\t) {\n\t\t\terror(\n\t\t\t\t'Invalid character: the string to be decoded is not correctly encoded.'\n\t\t\t);\n\t\t}\n\t\tvar bitCounter = 0;\n\t\tvar bitStorage;\n\t\tvar buffer;\n\t\tvar output = '';\n\t\tvar position = -1;\n\t\twhile (++position < length) {\n\t\t\tbuffer = TABLE.indexOf(input.charAt(position));\n\t\t\tbitStorage = bitCounter % 4 ? bitStorage * 64 + buffer : buffer;\n\t\t\t// Unless this is the first of a group of 4 characters…\n\t\t\tif (bitCounter++ % 4) {\n\t\t\t\t// …convert the first 8 bits to a single ASCII character.\n\t\t\t\toutput += String.fromCharCode(\n\t\t\t\t\t0xFF & bitStorage >> (-2 * bitCounter & 6)\n\t\t\t\t);\n\t\t\t}\n\t\t}\n\t\treturn output;\n\t};\n\n\t// `encode` is designed to be fully compatible with `btoa` as described in the\n\t// HTML Standard: http://whatwg.org/html/webappapis.html#dom-windowbase64-btoa\n\tvar encode = function(input) {\n\t\tinput = String(input);\n\t\tif (/[^\\0-\\xFF]/.test(input)) {\n\t\t\t// Note: no need to special-case astral symbols here, as surrogates are\n\t\t\t// matched, and the input is supposed to only contain ASCII anyway.\n\t\t\terror(\n\t\t\t\t'The string to be encoded contains characters outside of the ' +\n\t\t\t\t'Latin1 range.'\n\t\t\t);\n\t\t}\n\t\tvar padding = input.length % 3;\n\t\tvar output = '';\n\t\tvar position = -1;\n\t\tvar a;\n\t\tvar b;\n\t\tvar c;\n\t\tvar buffer;\n\t\t// Make sure any padding is handled outside of the loop.\n\t\tvar length = input.length - padding;\n\n\t\twhile (++position < length) {\n\t\t\t// Read three bytes, i.e. 24 bits.\n\t\t\ta = input.charCodeAt(position) << 16;\n\t\t\tb = input.charCodeAt(++position) << 8;\n\t\t\tc = input.charCodeAt(++position);\n\t\t\tbuffer = a + b + c;\n\t\t\t// Turn the 24 bits into four chunks of 6 bits each, and append the\n\t\t\t// matching character for each of them to the output.\n\t\t\toutput += (\n\t\t\t\tTABLE.charAt(buffer >> 18 & 0x3F) +\n\t\t\t\tTABLE.charAt(buffer >> 12 & 0x3F) +\n\t\t\t\tTABLE.charAt(buffer >> 6 & 0x3F) +\n\t\t\t\tTABLE.charAt(buffer & 0x3F)\n\t\t\t);\n\t\t}\n\n\t\tif (padding == 2) {\n\t\t\ta = input.charCodeAt(position) << 8;\n\t\t\tb = input.charCodeAt(++position);\n\t\t\tbuffer = a + b;\n\t\t\toutput += (\n\t\t\t\tTABLE.charAt(buffer >> 10) +\n\t\t\t\tTABLE.charAt((buffer >> 4) & 0x3F) +\n\t\t\t\tTABLE.charAt((buffer << 2) & 0x3F) +\n\t\t\t\t'='\n\t\t\t);\n\t\t} else if (padding == 1) {\n\t\t\tbuffer = input.charCodeAt(position);\n\t\t\toutput += (\n\t\t\t\tTABLE.charAt(buffer >> 2) +\n\t\t\t\tTABLE.charAt((buffer << 4) & 0x3F) +\n\t\t\t\t'=='\n\t\t\t);\n\t\t}\n\n\t\treturn output;\n\t};\n\n\tvar base64 = {\n\t\t'encode': encode,\n\t\t'decode': decode,\n\t\t'version': '1.0.0'\n\t};\n\n\t// Some AMD build optimizers, like r.js, check for specific condition patterns\n\t// like the following:\n\tif (\n\t\ttypeof define == 'function' &&\n\t\ttypeof define.amd == 'object' &&\n\t\tdefine.amd\n\t) {\n\t\tdefine(function() {\n\t\t\treturn base64;\n\t\t});\n\t}\telse if (freeExports && !freeExports.nodeType) {\n\t\tif (freeModule) { // in Node.js or RingoJS v0.8.0+\n\t\t\tfreeModule.exports = base64;\n\t\t} else { // in Narwhal or RingoJS v0.7.0-\n\t\t\tfor (var key in base64) {\n\t\t\t\tbase64.hasOwnProperty(key) && (freeExports[key] = base64[key]);\n\t\t\t}\n\t\t}\n\t} else { // in Rhino or a web browser\n\t\troot.base64 = base64;\n\t}\n\n}(this));\n","var balanced = require('balanced-match');\n\nmodule.exports = expandTop;\n\nvar escSlash = '\\0SLASH'+Math.random()+'\\0';\nvar escOpen = '\\0OPEN'+Math.random()+'\\0';\nvar escClose = '\\0CLOSE'+Math.random()+'\\0';\nvar escComma = '\\0COMMA'+Math.random()+'\\0';\nvar escPeriod = '\\0PERIOD'+Math.random()+'\\0';\n\nfunction numeric(str) {\n return parseInt(str, 10) == str\n ? parseInt(str, 10)\n : str.charCodeAt(0);\n}\n\nfunction escapeBraces(str) {\n return str.split('\\\\\\\\').join(escSlash)\n .split('\\\\{').join(escOpen)\n .split('\\\\}').join(escClose)\n .split('\\\\,').join(escComma)\n .split('\\\\.').join(escPeriod);\n}\n\nfunction unescapeBraces(str) {\n return str.split(escSlash).join('\\\\')\n .split(escOpen).join('{')\n .split(escClose).join('}')\n .split(escComma).join(',')\n .split(escPeriod).join('.');\n}\n\n\n// Basically just str.split(\",\"), but handling cases\n// where we have nested braced sections, which should be\n// treated as individual members, like {a,{b,c},d}\nfunction parseCommaParts(str) {\n if (!str)\n return [''];\n\n var parts = [];\n var m = balanced('{', '}', str);\n\n if (!m)\n return str.split(',');\n\n var pre = m.pre;\n var body = m.body;\n var post = m.post;\n var p = pre.split(',');\n\n p[p.length-1] += '{' + body + '}';\n var postParts = parseCommaParts(post);\n if (post.length) {\n p[p.length-1] += postParts.shift();\n p.push.apply(p, postParts);\n }\n\n parts.push.apply(parts, p);\n\n return parts;\n}\n\nfunction expandTop(str) {\n if (!str)\n return [];\n\n // I don't know why Bash 4.3 does this, but it does.\n // Anything starting with {} will have the first two bytes preserved\n // but *only* at the top level, so {},a}b will not expand to anything,\n // but a{},b}c will be expanded to [a}c,abc].\n // One could argue that this is a bug in Bash, but since the goal of\n // this module is to match Bash's rules, we escape a leading {}\n if (str.substr(0, 2) === '{}') {\n str = '\\\\{\\\\}' + str.substr(2);\n }\n\n return expand(escapeBraces(str), true).map(unescapeBraces);\n}\n\nfunction embrace(str) {\n return '{' + str + '}';\n}\nfunction isPadded(el) {\n return /^-?0\\d/.test(el);\n}\n\nfunction lte(i, y) {\n return i <= y;\n}\nfunction gte(i, y) {\n return i >= y;\n}\n\nfunction expand(str, isTop) {\n var expansions = [];\n\n var m = balanced('{', '}', str);\n if (!m) return [str];\n\n // no need to expand pre, since it is guaranteed to be free of brace-sets\n var pre = m.pre;\n var post = m.post.length\n ? expand(m.post, false)\n : [''];\n\n if (/\\$$/.test(m.pre)) { \n for (var k = 0; k < post.length; k++) {\n var expansion = pre+ '{' + m.body + '}' + post[k];\n expansions.push(expansion);\n }\n } else {\n var isNumericSequence = /^-?\\d+\\.\\.-?\\d+(?:\\.\\.-?\\d+)?$/.test(m.body);\n var isAlphaSequence = /^[a-zA-Z]\\.\\.[a-zA-Z](?:\\.\\.-?\\d+)?$/.test(m.body);\n var isSequence = isNumericSequence || isAlphaSequence;\n var isOptions = m.body.indexOf(',') >= 0;\n if (!isSequence && !isOptions) {\n // {a},b}\n if (m.post.match(/,(?!,).*\\}/)) {\n str = m.pre + '{' + m.body + escClose + m.post;\n return expand(str);\n }\n return [str];\n }\n\n var n;\n if (isSequence) {\n n = m.body.split(/\\.\\./);\n } else {\n n = parseCommaParts(m.body);\n if (n.length === 1) {\n // x{{a,b}}y ==> x{a}y x{b}y\n n = expand(n[0], false).map(embrace);\n if (n.length === 1) {\n return post.map(function(p) {\n return m.pre + n[0] + p;\n });\n }\n }\n }\n\n // at this point, n is the parts, and we know it's not a comma set\n // with a single entry.\n var N;\n\n if (isSequence) {\n var x = numeric(n[0]);\n var y = numeric(n[1]);\n var width = Math.max(n[0].length, n[1].length)\n var incr = n.length == 3\n ? Math.abs(numeric(n[2]))\n : 1;\n var test = lte;\n var reverse = y < x;\n if (reverse) {\n incr *= -1;\n test = gte;\n }\n var pad = n.some(isPadded);\n\n N = [];\n\n for (var i = x; test(i, y); i += incr) {\n var c;\n if (isAlphaSequence) {\n c = String.fromCharCode(i);\n if (c === '\\\\')\n c = '';\n } else {\n c = String(i);\n if (pad) {\n var need = width - c.length;\n if (need > 0) {\n var z = new Array(need + 1).join('0');\n if (i < 0)\n c = '-' + z + c.slice(1);\n else\n c = z + c;\n }\n }\n }\n N.push(c);\n }\n } else {\n N = [];\n\n for (var j = 0; j < n.length; j++) {\n N.push.apply(N, expand(n[j], false));\n }\n }\n\n for (var j = 0; j < N.length; j++) {\n for (var k = 0; k < post.length; k++) {\n var expansion = pre + N[j] + post[k];\n if (!isTop || isSequence || expansion)\n expansions.push(expansion);\n }\n }\n }\n\n return expansions;\n}\n\n","module.exports = {\n \"100\": \"Continue\",\n \"101\": \"Switching Protocols\",\n \"102\": \"Processing\",\n \"200\": \"OK\",\n \"201\": \"Created\",\n \"202\": \"Accepted\",\n \"203\": \"Non-Authoritative Information\",\n \"204\": \"No Content\",\n \"205\": \"Reset Content\",\n \"206\": \"Partial Content\",\n \"207\": \"Multi-Status\",\n \"208\": \"Already Reported\",\n \"226\": \"IM Used\",\n \"300\": \"Multiple Choices\",\n \"301\": \"Moved Permanently\",\n \"302\": \"Found\",\n \"303\": \"See Other\",\n \"304\": \"Not Modified\",\n \"305\": \"Use Proxy\",\n \"307\": \"Temporary Redirect\",\n \"308\": \"Permanent Redirect\",\n \"400\": \"Bad Request\",\n \"401\": \"Unauthorized\",\n \"402\": \"Payment Required\",\n \"403\": \"Forbidden\",\n \"404\": \"Not Found\",\n \"405\": \"Method Not Allowed\",\n \"406\": \"Not Acceptable\",\n \"407\": \"Proxy Authentication Required\",\n \"408\": \"Request Timeout\",\n \"409\": \"Conflict\",\n \"410\": \"Gone\",\n \"411\": \"Length Required\",\n \"412\": \"Precondition Failed\",\n \"413\": \"Payload Too Large\",\n \"414\": \"URI Too Long\",\n \"415\": \"Unsupported Media Type\",\n \"416\": \"Range Not Satisfiable\",\n \"417\": \"Expectation Failed\",\n \"418\": \"I'm a teapot\",\n \"421\": \"Misdirected Request\",\n \"422\": \"Unprocessable Entity\",\n \"423\": \"Locked\",\n \"424\": \"Failed Dependency\",\n \"425\": \"Unordered Collection\",\n \"426\": \"Upgrade Required\",\n \"428\": \"Precondition Required\",\n \"429\": \"Too Many Requests\",\n \"431\": \"Request Header Fields Too Large\",\n \"451\": \"Unavailable For Legal Reasons\",\n \"500\": \"Internal Server Error\",\n \"501\": \"Not Implemented\",\n \"502\": \"Bad Gateway\",\n \"503\": \"Service Unavailable\",\n \"504\": \"Gateway Timeout\",\n \"505\": \"HTTP Version Not Supported\",\n \"506\": \"Variant Also Negotiates\",\n \"507\": \"Insufficient Storage\",\n \"508\": \"Loop Detected\",\n \"509\": \"Bandwidth Limit Exceeded\",\n \"510\": \"Not Extended\",\n \"511\": \"Network Authentication Required\"\n}\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\n/*\n * Calculate the byte lengths for utf8 encoded strings.\n */\nfunction byteLength(str) {\n if (!str) {\n return 0;\n }\n str = str.toString();\n var len = str.length;\n for (var i = str.length; i--;) {\n var code = str.charCodeAt(i);\n if (0xdc00 <= code && code <= 0xdfff) {\n i--;\n }\n if (0x7f < code && code <= 0x7ff) {\n len++;\n }\n else if (0x7ff < code && code <= 0xffff) {\n len += 2;\n }\n }\n return len;\n}\nexports.byteLength = byteLength;\n//# sourceMappingURL=index.js.map","'use strict';\n\n// eslint-disable-next-line no-extra-parens, no-empty-function\nconst cached = /** @type {GeneratorFunctionConstructor} */ (function* () {}.constructor);\n\n/** @type {import('.')} */\nmodule.exports = () => cached;\n\n","var http = require('http')\nvar url = require('url')\n\nvar https = module.exports\n\nfor (var key in http) {\n if (http.hasOwnProperty(key)) https[key] = http[key]\n}\n\nhttps.request = function (params, cb) {\n params = validateParams(params)\n return http.request.call(this, params, cb)\n}\n\nhttps.get = function (params, cb) {\n params = validateParams(params)\n return http.get.call(this, params, cb)\n}\n\nfunction validateParams (params) {\n if (typeof params === 'string') {\n params = url.parse(params)\n }\n if (!params.protocol) {\n params.protocol = 'https:'\n }\n if (params.protocol !== 'https:') {\n throw new Error('Protocol \"' + params.protocol + '\" not supported. Expected \"https:\"')\n }\n return params\n}\n","'use strict';\n\nvar hasToStringTag = require('has-tostringtag/shams')();\nvar callBound = require('call-bound');\n\nvar $toString = callBound('Object.prototype.toString');\n\n/** @type {import('.')} */\nvar isStandardArguments = function isArguments(value) {\n\tif (\n\t\thasToStringTag\n\t\t&& value\n\t\t&& typeof value === 'object'\n\t\t&& Symbol.toStringTag in value\n\t) {\n\t\treturn false;\n\t}\n\treturn $toString(value) === '[object Arguments]';\n};\n\n/** @type {import('.')} */\nvar isLegacyArguments = function isArguments(value) {\n\tif (isStandardArguments(value)) {\n\t\treturn true;\n\t}\n\treturn value !== null\n\t\t&& typeof value === 'object'\n\t\t&& 'length' in value\n\t\t&& typeof value.length === 'number'\n\t\t&& value.length >= 0\n\t\t&& $toString(value) !== '[object Array]'\n\t\t&& 'callee' in value\n\t\t&& $toString(value.callee) === '[object Function]';\n};\n\nvar supportsStandardArguments = (function () {\n\treturn isStandardArguments(arguments);\n}());\n\n// @ts-expect-error TODO make this not error\nisStandardArguments.isLegacyArguments = isLegacyArguments; // for tests\n\n/** @type {import('.')} */\nmodule.exports = supportsStandardArguments ? isStandardArguments : isLegacyArguments;\n","'use strict';\n\nvar callBound = require('call-bound');\nvar safeRegexTest = require('safe-regex-test');\nvar isFnRegex = safeRegexTest(/^\\s*(?:function)?\\*/);\nvar hasToStringTag = require('has-tostringtag/shams')();\nvar getProto = require('get-proto');\n\nvar toStr = callBound('Object.prototype.toString');\nvar fnToStr = callBound('Function.prototype.toString');\n\nvar getGeneratorFunction = require('generator-function');\n\n/** @type {import('.')} */\nmodule.exports = function isGeneratorFunction(fn) {\n\tif (typeof fn !== 'function') {\n\t\treturn false;\n\t}\n\tif (isFnRegex(fnToStr(fn))) {\n\t\treturn true;\n\t}\n\tif (!hasToStringTag) {\n\t\tvar str = toStr(fn);\n\t\treturn str === '[object GeneratorFunction]';\n\t}\n\tif (!getProto) {\n\t\treturn false;\n\t}\n\tvar GeneratorFunction = getGeneratorFunction();\n\treturn GeneratorFunction && getProto(fn) === GeneratorFunction.prototype;\n};\n","'use strict';\n\nvar callBound = require('call-bound');\nvar hasToStringTag = require('has-tostringtag/shams')();\nvar hasOwn = require('hasown');\nvar gOPD = require('gopd');\n\n/** @type {import('.')} */\nvar fn;\n\nif (hasToStringTag) {\n\t/** @type {(receiver: ThisParameterType, ...args: Parameters) => ReturnType} */\n\tvar $exec = callBound('RegExp.prototype.exec');\n\t/** @type {object} */\n\tvar isRegexMarker = {};\n\n\tvar throwRegexMarker = function () {\n\t\tthrow isRegexMarker;\n\t};\n\t/** @type {{ toString(): never, valueOf(): never, [Symbol.toPrimitive]?(): never }} */\n\tvar badStringifier = {\n\t\ttoString: throwRegexMarker,\n\t\tvalueOf: throwRegexMarker\n\t};\n\n\tif (typeof Symbol.toPrimitive === 'symbol') {\n\t\tbadStringifier[Symbol.toPrimitive] = throwRegexMarker;\n\t}\n\n\t/** @type {import('.')} */\n\t// @ts-expect-error TS can't figure out that the $exec call always throws\n\t// eslint-disable-next-line consistent-return\n\tfn = function isRegex(value) {\n\t\tif (!value || typeof value !== 'object') {\n\t\t\treturn false;\n\t\t}\n\n\t\t// eslint-disable-next-line no-extra-parens\n\t\tvar descriptor = /** @type {NonNullable} */ (gOPD)(/** @type {{ lastIndex?: unknown }} */ (value), 'lastIndex');\n\t\tvar hasLastIndexDataProperty = descriptor && hasOwn(descriptor, 'value');\n\t\tif (!hasLastIndexDataProperty) {\n\t\t\treturn false;\n\t\t}\n\n\t\ttry {\n\t\t\t// eslint-disable-next-line no-extra-parens\n\t\t\t$exec(value, /** @type {string} */ (/** @type {unknown} */ (badStringifier)));\n\t\t} catch (e) {\n\t\t\treturn e === isRegexMarker;\n\t\t}\n\t};\n} else {\n\t/** @type {(receiver: ThisParameterType, ...args: Parameters) => ReturnType} */\n\tvar $toString = callBound('Object.prototype.toString');\n\t/** @const @type {'[object RegExp]'} */\n\tvar regexClass = '[object RegExp]';\n\n\t/** @type {import('.')} */\n\tfn = function isRegex(value) {\n\t\t// In older browsers, typeof regex incorrectly returns 'function'\n\t\tif (!value || (typeof value !== 'object' && typeof value !== 'function')) {\n\t\t\treturn false;\n\t\t}\n\n\t\treturn $toString(value) === regexClass;\n\t};\n}\n\nmodule.exports = fn;\n","/**\n* @license nested-property https://github.com/cosmosio/nested-property\n*\n* The MIT License (MIT)\n*\n* Copyright (c) 2014-2020 Olivier Scherrer \n*/\n\"use strict\";\n\nfunction _typeof(obj) { \"@babel/helpers - typeof\"; if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }; } return _typeof(obj); }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === \"object\" || typeof call === \"function\")) { return call; } return _assertThisInitialized(self); }\n\nfunction _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function\"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); if (superClass) _setPrototypeOf(subClass, superClass); }\n\nfunction _wrapNativeSuper(Class) { var _cache = typeof Map === \"function\" ? new Map() : undefined; _wrapNativeSuper = function _wrapNativeSuper(Class) { if (Class === null || !_isNativeFunction(Class)) return Class; if (typeof Class !== \"function\") { throw new TypeError(\"Super expression must either be null or a function\"); } if (typeof _cache !== \"undefined\") { if (_cache.has(Class)) return _cache.get(Class); _cache.set(Class, Wrapper); } function Wrapper() { return _construct(Class, arguments, _getPrototypeOf(this).constructor); } Wrapper.prototype = Object.create(Class.prototype, { constructor: { value: Wrapper, enumerable: false, writable: true, configurable: true } }); return _setPrototypeOf(Wrapper, Class); }; return _wrapNativeSuper(Class); }\n\nfunction _construct(Parent, args, Class) { if (_isNativeReflectConstruct()) { _construct = Reflect.construct; } else { _construct = function _construct(Parent, args, Class) { var a = [null]; a.push.apply(a, args); var Constructor = Function.bind.apply(Parent, a); var instance = new Constructor(); if (Class) _setPrototypeOf(instance, Class.prototype); return instance; }; } return _construct.apply(null, arguments); }\n\nfunction _isNativeReflectConstruct() { if (typeof Reflect === \"undefined\" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === \"function\") return true; try { Date.prototype.toString.call(Reflect.construct(Date, [], function () {})); return true; } catch (e) { return false; } }\n\nfunction _isNativeFunction(fn) { return Function.toString.call(fn).indexOf(\"[native code]\") !== -1; }\n\nfunction _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); }\n\nfunction _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); }\n\nvar ARRAY_WILDCARD = \"+\";\nvar PATH_DELIMITER = \".\";\n\nvar ObjectPrototypeMutationError = /*#__PURE__*/function (_Error) {\n _inherits(ObjectPrototypeMutationError, _Error);\n\n function ObjectPrototypeMutationError(params) {\n var _this;\n\n _classCallCheck(this, ObjectPrototypeMutationError);\n\n _this = _possibleConstructorReturn(this, _getPrototypeOf(ObjectPrototypeMutationError).call(this, params));\n _this.name = \"ObjectPrototypeMutationError\";\n return _this;\n }\n\n return ObjectPrototypeMutationError;\n}(_wrapNativeSuper(Error));\n\nmodule.exports = {\n set: setNestedProperty,\n get: getNestedProperty,\n has: hasNestedProperty,\n hasOwn: function hasOwn(object, property, options) {\n return this.has(object, property, options || {\n own: true\n });\n },\n isIn: isInNestedProperty,\n ObjectPrototypeMutationError: ObjectPrototypeMutationError\n};\n/**\n * Get the property of an object nested in one or more objects or array\n * Given an object such as a.b.c.d = 5, getNestedProperty(a, \"b.c.d\") will return 5.\n * It also works through arrays. Given a nested array such as a[0].b = 5, getNestedProperty(a, \"0.b\") will return 5.\n * For accessing nested properties through all items in an array, you may use the array wildcard \"+\".\n * For instance, getNestedProperty([{a:1}, {a:2}, {a:3}], \"+.a\") will return [1, 2, 3]\n * @param {Object} object the object to get the property from\n * @param {String} property the path to the property as a string\n * @returns the object or the the property value if found\n */\n\nfunction getNestedProperty(object, property) {\n if (_typeof(object) != \"object\" || object === null) {\n return object;\n }\n\n if (typeof property == \"undefined\") {\n return object;\n }\n\n if (typeof property == \"number\") {\n return object[property];\n }\n\n try {\n return traverse(object, property, function _getNestedProperty(currentObject, currentProperty) {\n return currentObject[currentProperty];\n });\n } catch (err) {\n return object;\n }\n}\n/**\n * Tell if a nested object has a given property (or array a given index)\n * given an object such as a.b.c.d = 5, hasNestedProperty(a, \"b.c.d\") will return true.\n * It also returns true if the property is in the prototype chain.\n * @param {Object} object the object to get the property from\n * @param {String} property the path to the property as a string\n * @param {Object} options:\n * - own: set to reject properties from the prototype\n * @returns true if has (property in object), false otherwise\n */\n\n\nfunction hasNestedProperty(object, property) {\n var options = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};\n\n if (_typeof(object) != \"object\" || object === null) {\n return false;\n }\n\n if (typeof property == \"undefined\") {\n return false;\n }\n\n if (typeof property == \"number\") {\n return property in object;\n }\n\n try {\n var has = false;\n traverse(object, property, function _hasNestedProperty(currentObject, currentProperty, segments, index) {\n if (isLastSegment(segments, index)) {\n if (options.own) {\n has = currentObject.hasOwnProperty(currentProperty);\n } else {\n has = currentProperty in currentObject;\n }\n } else {\n return currentObject && currentObject[currentProperty];\n }\n });\n return has;\n } catch (err) {\n return false;\n }\n}\n/**\n * Set the property of an object nested in one or more objects\n * If the property doesn't exist, it gets created.\n * @param {Object} object\n * @param {String} property\n * @param value the value to set\n * @returns object if no assignment was made or the value if the assignment was made\n */\n\n\nfunction setNestedProperty(object, property, value) {\n if (_typeof(object) != \"object\" || object === null) {\n return object;\n }\n\n if (typeof property == \"undefined\") {\n return object;\n }\n\n if (typeof property == \"number\") {\n object[property] = value;\n return object[property];\n }\n\n try {\n return traverse(object, property, function _setNestedProperty(currentObject, currentProperty, segments, index) {\n if (currentObject === Reflect.getPrototypeOf({})) {\n throw new ObjectPrototypeMutationError(\"Attempting to mutate Object.prototype\");\n }\n\n if (!currentObject[currentProperty]) {\n var nextPropIsNumber = Number.isInteger(Number(segments[index + 1]));\n var nextPropIsArrayWildcard = segments[index + 1] === ARRAY_WILDCARD;\n\n if (nextPropIsNumber || nextPropIsArrayWildcard) {\n currentObject[currentProperty] = [];\n } else {\n currentObject[currentProperty] = {};\n }\n }\n\n if (isLastSegment(segments, index)) {\n currentObject[currentProperty] = value;\n }\n\n return currentObject[currentProperty];\n });\n } catch (err) {\n if (err instanceof ObjectPrototypeMutationError) {\n // rethrow\n throw err;\n } else {\n return object;\n }\n }\n}\n/**\n * Tell if an object is on the path to a nested property\n * If the object is on the path, and the path exists, it returns true, and false otherwise.\n * @param {Object} object to get the nested property from\n * @param {String} property name of the nested property\n * @param {Object} objectInPath the object to check\n * @param {Object} options:\n * - validPath: return false if the path is invalid, even if the object is in the path\n * @returns {boolean} true if the object is on the path\n */\n\n\nfunction isInNestedProperty(object, property, objectInPath) {\n var options = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : {};\n\n if (_typeof(object) != \"object\" || object === null) {\n return false;\n }\n\n if (typeof property == \"undefined\") {\n return false;\n }\n\n try {\n var isIn = false,\n pathExists = false;\n traverse(object, property, function _isInNestedProperty(currentObject, currentProperty, segments, index) {\n isIn = isIn || currentObject === objectInPath || !!currentObject && currentObject[currentProperty] === objectInPath;\n pathExists = isLastSegment(segments, index) && _typeof(currentObject) === \"object\" && currentProperty in currentObject;\n return currentObject && currentObject[currentProperty];\n });\n\n if (options.validPath) {\n return isIn && pathExists;\n } else {\n return isIn;\n }\n } catch (err) {\n return false;\n }\n}\n\nfunction traverse(object, path) {\n var callback = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : function () {};\n var segments = path.split(PATH_DELIMITER);\n var length = segments.length;\n\n var _loop = function _loop(idx) {\n var currentSegment = segments[idx];\n\n if (!object) {\n return {\n v: void 0\n };\n }\n\n if (currentSegment === ARRAY_WILDCARD) {\n if (Array.isArray(object)) {\n return {\n v: object.map(function (value, index) {\n var remainingSegments = segments.slice(idx + 1);\n\n if (remainingSegments.length > 0) {\n return traverse(value, remainingSegments.join(PATH_DELIMITER), callback);\n } else {\n return callback(object, index, segments, idx);\n }\n })\n };\n } else {\n var pathToHere = segments.slice(0, idx).join(PATH_DELIMITER);\n throw new Error(\"Object at wildcard (\".concat(pathToHere, \") is not an array\"));\n }\n } else {\n object = callback(object, currentSegment, segments, idx);\n }\n };\n\n for (var idx = 0; idx < length; idx++) {\n var _ret = _loop(idx);\n\n if (_typeof(_ret) === \"object\") return _ret.v;\n }\n\n return object;\n}\n\nfunction isLastSegment(segments, index) {\n return segments.length === index + 1;\n}\n","var hasMap = typeof Map === 'function' && Map.prototype;\nvar mapSizeDescriptor = Object.getOwnPropertyDescriptor && hasMap ? Object.getOwnPropertyDescriptor(Map.prototype, 'size') : null;\nvar mapSize = hasMap && mapSizeDescriptor && typeof mapSizeDescriptor.get === 'function' ? mapSizeDescriptor.get : null;\nvar mapForEach = hasMap && Map.prototype.forEach;\nvar hasSet = typeof Set === 'function' && Set.prototype;\nvar setSizeDescriptor = Object.getOwnPropertyDescriptor && hasSet ? Object.getOwnPropertyDescriptor(Set.prototype, 'size') : null;\nvar setSize = hasSet && setSizeDescriptor && typeof setSizeDescriptor.get === 'function' ? setSizeDescriptor.get : null;\nvar setForEach = hasSet && Set.prototype.forEach;\nvar hasWeakMap = typeof WeakMap === 'function' && WeakMap.prototype;\nvar weakMapHas = hasWeakMap ? WeakMap.prototype.has : null;\nvar hasWeakSet = typeof WeakSet === 'function' && WeakSet.prototype;\nvar weakSetHas = hasWeakSet ? WeakSet.prototype.has : null;\nvar hasWeakRef = typeof WeakRef === 'function' && WeakRef.prototype;\nvar weakRefDeref = hasWeakRef ? WeakRef.prototype.deref : null;\nvar booleanValueOf = Boolean.prototype.valueOf;\nvar objectToString = Object.prototype.toString;\nvar functionToString = Function.prototype.toString;\nvar $match = String.prototype.match;\nvar $slice = String.prototype.slice;\nvar $replace = String.prototype.replace;\nvar $toUpperCase = String.prototype.toUpperCase;\nvar $toLowerCase = String.prototype.toLowerCase;\nvar $test = RegExp.prototype.test;\nvar $concat = Array.prototype.concat;\nvar $join = Array.prototype.join;\nvar $arrSlice = Array.prototype.slice;\nvar $floor = Math.floor;\nvar bigIntValueOf = typeof BigInt === 'function' ? BigInt.prototype.valueOf : null;\nvar gOPS = Object.getOwnPropertySymbols;\nvar symToString = typeof Symbol === 'function' && typeof Symbol.iterator === 'symbol' ? Symbol.prototype.toString : null;\nvar hasShammedSymbols = typeof Symbol === 'function' && typeof Symbol.iterator === 'object';\n// ie, `has-tostringtag/shams\nvar toStringTag = typeof Symbol === 'function' && Symbol.toStringTag && (typeof Symbol.toStringTag === hasShammedSymbols ? 'object' : 'symbol')\n ? Symbol.toStringTag\n : null;\nvar isEnumerable = Object.prototype.propertyIsEnumerable;\n\nvar gPO = (typeof Reflect === 'function' ? Reflect.getPrototypeOf : Object.getPrototypeOf) || (\n [].__proto__ === Array.prototype // eslint-disable-line no-proto\n ? function (O) {\n return O.__proto__; // eslint-disable-line no-proto\n }\n : null\n);\n\nfunction addNumericSeparator(num, str) {\n if (\n num === Infinity\n || num === -Infinity\n || num !== num\n || (num && num > -1000 && num < 1000)\n || $test.call(/e/, str)\n ) {\n return str;\n }\n var sepRegex = /[0-9](?=(?:[0-9]{3})+(?![0-9]))/g;\n if (typeof num === 'number') {\n var int = num < 0 ? -$floor(-num) : $floor(num); // trunc(num)\n if (int !== num) {\n var intStr = String(int);\n var dec = $slice.call(str, intStr.length + 1);\n return $replace.call(intStr, sepRegex, '$&_') + '.' + $replace.call($replace.call(dec, /([0-9]{3})/g, '$&_'), /_$/, '');\n }\n }\n return $replace.call(str, sepRegex, '$&_');\n}\n\nvar utilInspect = require('./util.inspect');\nvar inspectCustom = utilInspect.custom;\nvar inspectSymbol = isSymbol(inspectCustom) ? inspectCustom : null;\n\nvar quotes = {\n __proto__: null,\n 'double': '\"',\n single: \"'\"\n};\nvar quoteREs = {\n __proto__: null,\n 'double': /([\"\\\\])/g,\n single: /(['\\\\])/g\n};\n\nmodule.exports = function inspect_(obj, options, depth, seen) {\n var opts = options || {};\n\n if (has(opts, 'quoteStyle') && !has(quotes, opts.quoteStyle)) {\n throw new TypeError('option \"quoteStyle\" must be \"single\" or \"double\"');\n }\n if (\n has(opts, 'maxStringLength') && (typeof opts.maxStringLength === 'number'\n ? opts.maxStringLength < 0 && opts.maxStringLength !== Infinity\n : opts.maxStringLength !== null\n )\n ) {\n throw new TypeError('option \"maxStringLength\", if provided, must be a positive integer, Infinity, or `null`');\n }\n var customInspect = has(opts, 'customInspect') ? opts.customInspect : true;\n if (typeof customInspect !== 'boolean' && customInspect !== 'symbol') {\n throw new TypeError('option \"customInspect\", if provided, must be `true`, `false`, or `\\'symbol\\'`');\n }\n\n if (\n has(opts, 'indent')\n && opts.indent !== null\n && opts.indent !== '\\t'\n && !(parseInt(opts.indent, 10) === opts.indent && opts.indent > 0)\n ) {\n throw new TypeError('option \"indent\" must be \"\\\\t\", an integer > 0, or `null`');\n }\n if (has(opts, 'numericSeparator') && typeof opts.numericSeparator !== 'boolean') {\n throw new TypeError('option \"numericSeparator\", if provided, must be `true` or `false`');\n }\n var numericSeparator = opts.numericSeparator;\n\n if (typeof obj === 'undefined') {\n return 'undefined';\n }\n if (obj === null) {\n return 'null';\n }\n if (typeof obj === 'boolean') {\n return obj ? 'true' : 'false';\n }\n\n if (typeof obj === 'string') {\n return inspectString(obj, opts);\n }\n if (typeof obj === 'number') {\n if (obj === 0) {\n return Infinity / obj > 0 ? '0' : '-0';\n }\n var str = String(obj);\n return numericSeparator ? addNumericSeparator(obj, str) : str;\n }\n if (typeof obj === 'bigint') {\n var bigIntStr = String(obj) + 'n';\n return numericSeparator ? addNumericSeparator(obj, bigIntStr) : bigIntStr;\n }\n\n var maxDepth = typeof opts.depth === 'undefined' ? 5 : opts.depth;\n if (typeof depth === 'undefined') { depth = 0; }\n if (depth >= maxDepth && maxDepth > 0 && typeof obj === 'object') {\n return isArray(obj) ? '[Array]' : '[Object]';\n }\n\n var indent = getIndent(opts, depth);\n\n if (typeof seen === 'undefined') {\n seen = [];\n } else if (indexOf(seen, obj) >= 0) {\n return '[Circular]';\n }\n\n function inspect(value, from, noIndent) {\n if (from) {\n seen = $arrSlice.call(seen);\n seen.push(from);\n }\n if (noIndent) {\n var newOpts = {\n depth: opts.depth\n };\n if (has(opts, 'quoteStyle')) {\n newOpts.quoteStyle = opts.quoteStyle;\n }\n return inspect_(value, newOpts, depth + 1, seen);\n }\n return inspect_(value, opts, depth + 1, seen);\n }\n\n if (typeof obj === 'function' && !isRegExp(obj)) { // in older engines, regexes are callable\n var name = nameOf(obj);\n var keys = arrObjKeys(obj, inspect);\n return '[Function' + (name ? ': ' + name : ' (anonymous)') + ']' + (keys.length > 0 ? ' { ' + $join.call(keys, ', ') + ' }' : '');\n }\n if (isSymbol(obj)) {\n var symString = hasShammedSymbols ? $replace.call(String(obj), /^(Symbol\\(.*\\))_[^)]*$/, '$1') : symToString.call(obj);\n return typeof obj === 'object' && !hasShammedSymbols ? markBoxed(symString) : symString;\n }\n if (isElement(obj)) {\n var s = '<' + $toLowerCase.call(String(obj.nodeName));\n var attrs = obj.attributes || [];\n for (var i = 0; i < attrs.length; i++) {\n s += ' ' + attrs[i].name + '=' + wrapQuotes(quote(attrs[i].value), 'double', opts);\n }\n s += '>';\n if (obj.childNodes && obj.childNodes.length) { s += '...'; }\n s += '';\n return s;\n }\n if (isArray(obj)) {\n if (obj.length === 0) { return '[]'; }\n var xs = arrObjKeys(obj, inspect);\n if (indent && !singleLineValues(xs)) {\n return '[' + indentedJoin(xs, indent) + ']';\n }\n return '[ ' + $join.call(xs, ', ') + ' ]';\n }\n if (isError(obj)) {\n var parts = arrObjKeys(obj, inspect);\n if (!('cause' in Error.prototype) && 'cause' in obj && !isEnumerable.call(obj, 'cause')) {\n return '{ [' + String(obj) + '] ' + $join.call($concat.call('[cause]: ' + inspect(obj.cause), parts), ', ') + ' }';\n }\n if (parts.length === 0) { return '[' + String(obj) + ']'; }\n return '{ [' + String(obj) + '] ' + $join.call(parts, ', ') + ' }';\n }\n if (typeof obj === 'object' && customInspect) {\n if (inspectSymbol && typeof obj[inspectSymbol] === 'function' && utilInspect) {\n return utilInspect(obj, { depth: maxDepth - depth });\n } else if (customInspect !== 'symbol' && typeof obj.inspect === 'function') {\n return obj.inspect();\n }\n }\n if (isMap(obj)) {\n var mapParts = [];\n if (mapForEach) {\n mapForEach.call(obj, function (value, key) {\n mapParts.push(inspect(key, obj, true) + ' => ' + inspect(value, obj));\n });\n }\n return collectionOf('Map', mapSize.call(obj), mapParts, indent);\n }\n if (isSet(obj)) {\n var setParts = [];\n if (setForEach) {\n setForEach.call(obj, function (value) {\n setParts.push(inspect(value, obj));\n });\n }\n return collectionOf('Set', setSize.call(obj), setParts, indent);\n }\n if (isWeakMap(obj)) {\n return weakCollectionOf('WeakMap');\n }\n if (isWeakSet(obj)) {\n return weakCollectionOf('WeakSet');\n }\n if (isWeakRef(obj)) {\n return weakCollectionOf('WeakRef');\n }\n if (isNumber(obj)) {\n return markBoxed(inspect(Number(obj)));\n }\n if (isBigInt(obj)) {\n return markBoxed(inspect(bigIntValueOf.call(obj)));\n }\n if (isBoolean(obj)) {\n return markBoxed(booleanValueOf.call(obj));\n }\n if (isString(obj)) {\n return markBoxed(inspect(String(obj)));\n }\n // note: in IE 8, sometimes `global !== window` but both are the prototypes of each other\n /* eslint-env browser */\n if (typeof window !== 'undefined' && obj === window) {\n return '{ [object Window] }';\n }\n if (\n (typeof globalThis !== 'undefined' && obj === globalThis)\n || (typeof global !== 'undefined' && obj === global)\n ) {\n return '{ [object globalThis] }';\n }\n if (!isDate(obj) && !isRegExp(obj)) {\n var ys = arrObjKeys(obj, inspect);\n var isPlainObject = gPO ? gPO(obj) === Object.prototype : obj instanceof Object || obj.constructor === Object;\n var protoTag = obj instanceof Object ? '' : 'null prototype';\n var stringTag = !isPlainObject && toStringTag && Object(obj) === obj && toStringTag in obj ? $slice.call(toStr(obj), 8, -1) : protoTag ? 'Object' : '';\n var constructorTag = isPlainObject || typeof obj.constructor !== 'function' ? '' : obj.constructor.name ? obj.constructor.name + ' ' : '';\n var tag = constructorTag + (stringTag || protoTag ? '[' + $join.call($concat.call([], stringTag || [], protoTag || []), ': ') + '] ' : '');\n if (ys.length === 0) { return tag + '{}'; }\n if (indent) {\n return tag + '{' + indentedJoin(ys, indent) + '}';\n }\n return tag + '{ ' + $join.call(ys, ', ') + ' }';\n }\n return String(obj);\n};\n\nfunction wrapQuotes(s, defaultStyle, opts) {\n var style = opts.quoteStyle || defaultStyle;\n var quoteChar = quotes[style];\n return quoteChar + s + quoteChar;\n}\n\nfunction quote(s) {\n return $replace.call(String(s), /\"/g, '"');\n}\n\nfunction canTrustToString(obj) {\n return !toStringTag || !(typeof obj === 'object' && (toStringTag in obj || typeof obj[toStringTag] !== 'undefined'));\n}\nfunction isArray(obj) { return toStr(obj) === '[object Array]' && canTrustToString(obj); }\nfunction isDate(obj) { return toStr(obj) === '[object Date]' && canTrustToString(obj); }\nfunction isRegExp(obj) { return toStr(obj) === '[object RegExp]' && canTrustToString(obj); }\nfunction isError(obj) { return toStr(obj) === '[object Error]' && canTrustToString(obj); }\nfunction isString(obj) { return toStr(obj) === '[object String]' && canTrustToString(obj); }\nfunction isNumber(obj) { return toStr(obj) === '[object Number]' && canTrustToString(obj); }\nfunction isBoolean(obj) { return toStr(obj) === '[object Boolean]' && canTrustToString(obj); }\n\n// Symbol and BigInt do have Symbol.toStringTag by spec, so that can't be used to eliminate false positives\nfunction isSymbol(obj) {\n if (hasShammedSymbols) {\n return obj && typeof obj === 'object' && obj instanceof Symbol;\n }\n if (typeof obj === 'symbol') {\n return true;\n }\n if (!obj || typeof obj !== 'object' || !symToString) {\n return false;\n }\n try {\n symToString.call(obj);\n return true;\n } catch (e) {}\n return false;\n}\n\nfunction isBigInt(obj) {\n if (!obj || typeof obj !== 'object' || !bigIntValueOf) {\n return false;\n }\n try {\n bigIntValueOf.call(obj);\n return true;\n } catch (e) {}\n return false;\n}\n\nvar hasOwn = Object.prototype.hasOwnProperty || function (key) { return key in this; };\nfunction has(obj, key) {\n return hasOwn.call(obj, key);\n}\n\nfunction toStr(obj) {\n return objectToString.call(obj);\n}\n\nfunction nameOf(f) {\n if (f.name) { return f.name; }\n var m = $match.call(functionToString.call(f), /^function\\s*([\\w$]+)/);\n if (m) { return m[1]; }\n return null;\n}\n\nfunction indexOf(xs, x) {\n if (xs.indexOf) { return xs.indexOf(x); }\n for (var i = 0, l = xs.length; i < l; i++) {\n if (xs[i] === x) { return i; }\n }\n return -1;\n}\n\nfunction isMap(x) {\n if (!mapSize || !x || typeof x !== 'object') {\n return false;\n }\n try {\n mapSize.call(x);\n try {\n setSize.call(x);\n } catch (s) {\n return true;\n }\n return x instanceof Map; // core-js workaround, pre-v2.5.0\n } catch (e) {}\n return false;\n}\n\nfunction isWeakMap(x) {\n if (!weakMapHas || !x || typeof x !== 'object') {\n return false;\n }\n try {\n weakMapHas.call(x, weakMapHas);\n try {\n weakSetHas.call(x, weakSetHas);\n } catch (s) {\n return true;\n }\n return x instanceof WeakMap; // core-js workaround, pre-v2.5.0\n } catch (e) {}\n return false;\n}\n\nfunction isWeakRef(x) {\n if (!weakRefDeref || !x || typeof x !== 'object') {\n return false;\n }\n try {\n weakRefDeref.call(x);\n return true;\n } catch (e) {}\n return false;\n}\n\nfunction isSet(x) {\n if (!setSize || !x || typeof x !== 'object') {\n return false;\n }\n try {\n setSize.call(x);\n try {\n mapSize.call(x);\n } catch (m) {\n return true;\n }\n return x instanceof Set; // core-js workaround, pre-v2.5.0\n } catch (e) {}\n return false;\n}\n\nfunction isWeakSet(x) {\n if (!weakSetHas || !x || typeof x !== 'object') {\n return false;\n }\n try {\n weakSetHas.call(x, weakSetHas);\n try {\n weakMapHas.call(x, weakMapHas);\n } catch (s) {\n return true;\n }\n return x instanceof WeakSet; // core-js workaround, pre-v2.5.0\n } catch (e) {}\n return false;\n}\n\nfunction isElement(x) {\n if (!x || typeof x !== 'object') { return false; }\n if (typeof HTMLElement !== 'undefined' && x instanceof HTMLElement) {\n return true;\n }\n return typeof x.nodeName === 'string' && typeof x.getAttribute === 'function';\n}\n\nfunction inspectString(str, opts) {\n if (str.length > opts.maxStringLength) {\n var remaining = str.length - opts.maxStringLength;\n var trailer = '... ' + remaining + ' more character' + (remaining > 1 ? 's' : '');\n return inspectString($slice.call(str, 0, opts.maxStringLength), opts) + trailer;\n }\n var quoteRE = quoteREs[opts.quoteStyle || 'single'];\n quoteRE.lastIndex = 0;\n // eslint-disable-next-line no-control-regex\n var s = $replace.call($replace.call(str, quoteRE, '\\\\$1'), /[\\x00-\\x1f]/g, lowbyte);\n return wrapQuotes(s, 'single', opts);\n}\n\nfunction lowbyte(c) {\n var n = c.charCodeAt(0);\n var x = {\n 8: 'b',\n 9: 't',\n 10: 'n',\n 12: 'f',\n 13: 'r'\n }[n];\n if (x) { return '\\\\' + x; }\n return '\\\\x' + (n < 0x10 ? '0' : '') + $toUpperCase.call(n.toString(16));\n}\n\nfunction markBoxed(str) {\n return 'Object(' + str + ')';\n}\n\nfunction weakCollectionOf(type) {\n return type + ' { ? }';\n}\n\nfunction collectionOf(type, size, entries, indent) {\n var joinedEntries = indent ? indentedJoin(entries, indent) : $join.call(entries, ', ');\n return type + ' (' + size + ') {' + joinedEntries + '}';\n}\n\nfunction singleLineValues(xs) {\n for (var i = 0; i < xs.length; i++) {\n if (indexOf(xs[i], '\\n') >= 0) {\n return false;\n }\n }\n return true;\n}\n\nfunction getIndent(opts, depth) {\n var baseIndent;\n if (opts.indent === '\\t') {\n baseIndent = '\\t';\n } else if (typeof opts.indent === 'number' && opts.indent > 0) {\n baseIndent = $join.call(Array(opts.indent + 1), ' ');\n } else {\n return null;\n }\n return {\n base: baseIndent,\n prev: $join.call(Array(depth + 1), baseIndent)\n };\n}\n\nfunction indentedJoin(xs, indent) {\n if (xs.length === 0) { return ''; }\n var lineJoiner = '\\n' + indent.prev + indent.base;\n return lineJoiner + $join.call(xs, ',' + lineJoiner) + '\\n' + indent.prev;\n}\n\nfunction arrObjKeys(obj, inspect) {\n var isArr = isArray(obj);\n var xs = [];\n if (isArr) {\n xs.length = obj.length;\n for (var i = 0; i < obj.length; i++) {\n xs[i] = has(obj, i) ? inspect(obj[i], obj) : '';\n }\n }\n var syms = typeof gOPS === 'function' ? gOPS(obj) : [];\n var symMap;\n if (hasShammedSymbols) {\n symMap = {};\n for (var k = 0; k < syms.length; k++) {\n symMap['$' + syms[k]] = syms[k];\n }\n }\n\n for (var key in obj) { // eslint-disable-line no-restricted-syntax\n if (!has(obj, key)) { continue; } // eslint-disable-line no-restricted-syntax, no-continue\n if (isArr && String(Number(key)) === key && key < obj.length) { continue; } // eslint-disable-line no-restricted-syntax, no-continue\n if (hasShammedSymbols && symMap['$' + key] instanceof Symbol) {\n // this is to prevent shammed Symbols, which are stored as strings, from being included in the string key section\n continue; // eslint-disable-line no-restricted-syntax, no-continue\n } else if ($test.call(/[^\\w$]/, key)) {\n xs.push(inspect(key, obj) + ': ' + inspect(obj[key], obj));\n } else {\n xs.push(key + ': ' + inspect(obj[key], obj));\n }\n }\n if (typeof gOPS === 'function') {\n for (var j = 0; j < syms.length; j++) {\n if (isEnumerable.call(obj, syms[j])) {\n xs.push('[' + inspect(syms[j]) + ']: ' + inspect(obj[syms[j]], obj));\n }\n }\n }\n return xs;\n}\n","// Copyright Joyent, Inc. and other Node contributors.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a\n// copy of this software and associated documentation files (the\n// \"Software\"), to deal in the Software without restriction, including\n// without limitation the rights to use, copy, modify, merge, publish,\n// distribute, sublicense, and/or sell copies of the Software, and to permit\n// persons to whom the Software is furnished to do so, subject to the\n// following conditions:\n//\n// The above copyright notice and this permission notice shall be included\n// in all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN\n// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR\n// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\n// USE OR OTHER DEALINGS IN THE SOFTWARE.\n\n'use strict';\nvar util = require('util');\nvar isString = function (x) {\n return typeof x === 'string';\n};\n\n\n// resolves . and .. elements in a path array with directory names there\n// must be no slashes or device names (c:\\) in the array\n// (so also no leading and trailing slashes - it does not distinguish\n// relative and absolute paths)\nfunction normalizeArray(parts, allowAboveRoot) {\n var res = [];\n for (var i = 0; i < parts.length; i++) {\n var p = parts[i];\n\n // ignore empty parts\n if (!p || p === '.')\n continue;\n\n if (p === '..') {\n if (res.length && res[res.length - 1] !== '..') {\n res.pop();\n } else if (allowAboveRoot) {\n res.push('..');\n }\n } else {\n res.push(p);\n }\n }\n\n return res;\n}\n\n// Split a filename into [root, dir, basename, ext], unix version\n// 'root' is just a slash, or nothing.\nvar splitPathRe =\n /^(\\/?|)([\\s\\S]*?)((?:\\.{1,2}|[^\\/]+?|)(\\.[^.\\/]*|))(?:[\\/]*)$/;\nvar posix = {};\n\n\nfunction posixSplitPath(filename) {\n return splitPathRe.exec(filename).slice(1);\n}\n\n\n// path.resolve([from ...], to)\n// posix version\nposix.resolve = function() {\n var resolvedPath = '',\n resolvedAbsolute = false;\n\n for (var i = arguments.length - 1; i >= -1 && !resolvedAbsolute; i--) {\n var path = (i >= 0) ? arguments[i] : process.cwd();\n\n // Skip empty and invalid entries\n if (!isString(path)) {\n throw new TypeError('Arguments to path.resolve must be strings');\n } else if (!path) {\n continue;\n }\n\n resolvedPath = path + '/' + resolvedPath;\n resolvedAbsolute = path.charAt(0) === '/';\n }\n\n // At this point the path should be resolved to a full absolute path, but\n // handle relative paths to be safe (might happen when process.cwd() fails)\n\n // Normalize the path\n resolvedPath = normalizeArray(resolvedPath.split('/'),\n !resolvedAbsolute).join('/');\n\n return ((resolvedAbsolute ? '/' : '') + resolvedPath) || '.';\n};\n\n// path.normalize(path)\n// posix version\nposix.normalize = function(path) {\n var isAbsolute = posix.isAbsolute(path),\n trailingSlash = path.substr(-1) === '/';\n\n // Normalize the path\n path = normalizeArray(path.split('/'), !isAbsolute).join('/');\n\n if (!path && !isAbsolute) {\n path = '.';\n }\n if (path && trailingSlash) {\n path += '/';\n }\n\n return (isAbsolute ? '/' : '') + path;\n};\n\n// posix version\nposix.isAbsolute = function(path) {\n return path.charAt(0) === '/';\n};\n\n// posix version\nposix.join = function() {\n var path = '';\n for (var i = 0; i < arguments.length; i++) {\n var segment = arguments[i];\n if (!isString(segment)) {\n throw new TypeError('Arguments to path.join must be strings');\n }\n if (segment) {\n if (!path) {\n path += segment;\n } else {\n path += '/' + segment;\n }\n }\n }\n return posix.normalize(path);\n};\n\n\n// path.relative(from, to)\n// posix version\nposix.relative = function(from, to) {\n from = posix.resolve(from).substr(1);\n to = posix.resolve(to).substr(1);\n\n function trim(arr) {\n var start = 0;\n for (; start < arr.length; start++) {\n if (arr[start] !== '') break;\n }\n\n var end = arr.length - 1;\n for (; end >= 0; end--) {\n if (arr[end] !== '') break;\n }\n\n if (start > end) return [];\n return arr.slice(start, end + 1);\n }\n\n var fromParts = trim(from.split('/'));\n var toParts = trim(to.split('/'));\n\n var length = Math.min(fromParts.length, toParts.length);\n var samePartsLength = length;\n for (var i = 0; i < length; i++) {\n if (fromParts[i] !== toParts[i]) {\n samePartsLength = i;\n break;\n }\n }\n\n var outputParts = [];\n for (var i = samePartsLength; i < fromParts.length; i++) {\n outputParts.push('..');\n }\n\n outputParts = outputParts.concat(toParts.slice(samePartsLength));\n\n return outputParts.join('/');\n};\n\n\nposix._makeLong = function(path) {\n return path;\n};\n\n\nposix.dirname = function(path) {\n var result = posixSplitPath(path),\n root = result[0],\n dir = result[1];\n\n if (!root && !dir) {\n // No dirname whatsoever\n return '.';\n }\n\n if (dir) {\n // It has a dirname, strip trailing slash\n dir = dir.substr(0, dir.length - 1);\n }\n\n return root + dir;\n};\n\n\nposix.basename = function(path, ext) {\n var f = posixSplitPath(path)[2];\n // TODO: make this comparison case-insensitive on windows?\n if (ext && f.substr(-1 * ext.length) === ext) {\n f = f.substr(0, f.length - ext.length);\n }\n return f;\n};\n\n\nposix.extname = function(path) {\n return posixSplitPath(path)[3];\n};\n\n\nposix.format = function(pathObject) {\n if (!util.isObject(pathObject)) {\n throw new TypeError(\n \"Parameter 'pathObject' must be an object, not \" + typeof pathObject\n );\n }\n\n var root = pathObject.root || '';\n\n if (!isString(root)) {\n throw new TypeError(\n \"'pathObject.root' must be a string or undefined, not \" +\n typeof pathObject.root\n );\n }\n\n var dir = pathObject.dir ? pathObject.dir + posix.sep : '';\n var base = pathObject.base || '';\n return dir + base;\n};\n\n\nposix.parse = function(pathString) {\n if (!isString(pathString)) {\n throw new TypeError(\n \"Parameter 'pathString' must be a string, not \" + typeof pathString\n );\n }\n var allParts = posixSplitPath(pathString);\n if (!allParts || allParts.length !== 4) {\n throw new TypeError(\"Invalid path '\" + pathString + \"'\");\n }\n allParts[1] = allParts[1] || '';\n allParts[2] = allParts[2] || '';\n allParts[3] = allParts[3] || '';\n\n return {\n root: allParts[0],\n dir: allParts[0] + allParts[1].slice(0, allParts[1].length - 1),\n base: allParts[2],\n ext: allParts[3],\n name: allParts[2].slice(0, allParts[2].length - allParts[3].length)\n };\n};\n\n\nposix.sep = '/';\nposix.delimiter = ':';\n\n module.exports = posix;\n","/*! https://mths.be/punycode v1.4.1 by @mathias */\n;(function(root) {\n\n\t/** Detect free variables */\n\tvar freeExports = typeof exports == 'object' && exports &&\n\t\t!exports.nodeType && exports;\n\tvar freeModule = typeof module == 'object' && module &&\n\t\t!module.nodeType && module;\n\tvar freeGlobal = typeof global == 'object' && global;\n\tif (\n\t\tfreeGlobal.global === freeGlobal ||\n\t\tfreeGlobal.window === freeGlobal ||\n\t\tfreeGlobal.self === freeGlobal\n\t) {\n\t\troot = freeGlobal;\n\t}\n\n\t/**\n\t * The `punycode` object.\n\t * @name punycode\n\t * @type Object\n\t */\n\tvar punycode,\n\n\t/** Highest positive signed 32-bit float value */\n\tmaxInt = 2147483647, // aka. 0x7FFFFFFF or 2^31-1\n\n\t/** Bootstring parameters */\n\tbase = 36,\n\ttMin = 1,\n\ttMax = 26,\n\tskew = 38,\n\tdamp = 700,\n\tinitialBias = 72,\n\tinitialN = 128, // 0x80\n\tdelimiter = '-', // '\\x2D'\n\n\t/** Regular expressions */\n\tregexPunycode = /^xn--/,\n\tregexNonASCII = /[^\\x20-\\x7E]/, // unprintable ASCII chars + non-ASCII chars\n\tregexSeparators = /[\\x2E\\u3002\\uFF0E\\uFF61]/g, // RFC 3490 separators\n\n\t/** Error messages */\n\terrors = {\n\t\t'overflow': 'Overflow: input needs wider integers to process',\n\t\t'not-basic': 'Illegal input >= 0x80 (not a basic code point)',\n\t\t'invalid-input': 'Invalid input'\n\t},\n\n\t/** Convenience shortcuts */\n\tbaseMinusTMin = base - tMin,\n\tfloor = Math.floor,\n\tstringFromCharCode = String.fromCharCode,\n\n\t/** Temporary variable */\n\tkey;\n\n\t/*--------------------------------------------------------------------------*/\n\n\t/**\n\t * A generic error utility function.\n\t * @private\n\t * @param {String} type The error type.\n\t * @returns {Error} Throws a `RangeError` with the applicable error message.\n\t */\n\tfunction error(type) {\n\t\tthrow new RangeError(errors[type]);\n\t}\n\n\t/**\n\t * A generic `Array#map` utility function.\n\t * @private\n\t * @param {Array} array The array to iterate over.\n\t * @param {Function} callback The function that gets called for every array\n\t * item.\n\t * @returns {Array} A new array of values returned by the callback function.\n\t */\n\tfunction map(array, fn) {\n\t\tvar length = array.length;\n\t\tvar result = [];\n\t\twhile (length--) {\n\t\t\tresult[length] = fn(array[length]);\n\t\t}\n\t\treturn result;\n\t}\n\n\t/**\n\t * A simple `Array#map`-like wrapper to work with domain name strings or email\n\t * addresses.\n\t * @private\n\t * @param {String} domain The domain name or email address.\n\t * @param {Function} callback The function that gets called for every\n\t * character.\n\t * @returns {Array} A new string of characters returned by the callback\n\t * function.\n\t */\n\tfunction mapDomain(string, fn) {\n\t\tvar parts = string.split('@');\n\t\tvar result = '';\n\t\tif (parts.length > 1) {\n\t\t\t// In email addresses, only the domain name should be punycoded. Leave\n\t\t\t// the local part (i.e. everything up to `@`) intact.\n\t\t\tresult = parts[0] + '@';\n\t\t\tstring = parts[1];\n\t\t}\n\t\t// Avoid `split(regex)` for IE8 compatibility. See #17.\n\t\tstring = string.replace(regexSeparators, '\\x2E');\n\t\tvar labels = string.split('.');\n\t\tvar encoded = map(labels, fn).join('.');\n\t\treturn result + encoded;\n\t}\n\n\t/**\n\t * Creates an array containing the numeric code points of each Unicode\n\t * character in the string. While JavaScript uses UCS-2 internally,\n\t * this function will convert a pair of surrogate halves (each of which\n\t * UCS-2 exposes as separate characters) into a single code point,\n\t * matching UTF-16.\n\t * @see `punycode.ucs2.encode`\n\t * @see \n\t * @memberOf punycode.ucs2\n\t * @name decode\n\t * @param {String} string The Unicode input string (UCS-2).\n\t * @returns {Array} The new array of code points.\n\t */\n\tfunction ucs2decode(string) {\n\t\tvar output = [],\n\t\t counter = 0,\n\t\t length = string.length,\n\t\t value,\n\t\t extra;\n\t\twhile (counter < length) {\n\t\t\tvalue = string.charCodeAt(counter++);\n\t\t\tif (value >= 0xD800 && value <= 0xDBFF && counter < length) {\n\t\t\t\t// high surrogate, and there is a next character\n\t\t\t\textra = string.charCodeAt(counter++);\n\t\t\t\tif ((extra & 0xFC00) == 0xDC00) { // low surrogate\n\t\t\t\t\toutput.push(((value & 0x3FF) << 10) + (extra & 0x3FF) + 0x10000);\n\t\t\t\t} else {\n\t\t\t\t\t// unmatched surrogate; only append this code unit, in case the next\n\t\t\t\t\t// code unit is the high surrogate of a surrogate pair\n\t\t\t\t\toutput.push(value);\n\t\t\t\t\tcounter--;\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\toutput.push(value);\n\t\t\t}\n\t\t}\n\t\treturn output;\n\t}\n\n\t/**\n\t * Creates a string based on an array of numeric code points.\n\t * @see `punycode.ucs2.decode`\n\t * @memberOf punycode.ucs2\n\t * @name encode\n\t * @param {Array} codePoints The array of numeric code points.\n\t * @returns {String} The new Unicode string (UCS-2).\n\t */\n\tfunction ucs2encode(array) {\n\t\treturn map(array, function(value) {\n\t\t\tvar output = '';\n\t\t\tif (value > 0xFFFF) {\n\t\t\t\tvalue -= 0x10000;\n\t\t\t\toutput += stringFromCharCode(value >>> 10 & 0x3FF | 0xD800);\n\t\t\t\tvalue = 0xDC00 | value & 0x3FF;\n\t\t\t}\n\t\t\toutput += stringFromCharCode(value);\n\t\t\treturn output;\n\t\t}).join('');\n\t}\n\n\t/**\n\t * Converts a basic code point into a digit/integer.\n\t * @see `digitToBasic()`\n\t * @private\n\t * @param {Number} codePoint The basic numeric code point value.\n\t * @returns {Number} The numeric value of a basic code point (for use in\n\t * representing integers) in the range `0` to `base - 1`, or `base` if\n\t * the code point does not represent a value.\n\t */\n\tfunction basicToDigit(codePoint) {\n\t\tif (codePoint - 48 < 10) {\n\t\t\treturn codePoint - 22;\n\t\t}\n\t\tif (codePoint - 65 < 26) {\n\t\t\treturn codePoint - 65;\n\t\t}\n\t\tif (codePoint - 97 < 26) {\n\t\t\treturn codePoint - 97;\n\t\t}\n\t\treturn base;\n\t}\n\n\t/**\n\t * Converts a digit/integer into a basic code point.\n\t * @see `basicToDigit()`\n\t * @private\n\t * @param {Number} digit The numeric value of a basic code point.\n\t * @returns {Number} The basic code point whose value (when used for\n\t * representing integers) is `digit`, which needs to be in the range\n\t * `0` to `base - 1`. If `flag` is non-zero, the uppercase form is\n\t * used; else, the lowercase form is used. The behavior is undefined\n\t * if `flag` is non-zero and `digit` has no uppercase form.\n\t */\n\tfunction digitToBasic(digit, flag) {\n\t\t// 0..25 map to ASCII a..z or A..Z\n\t\t// 26..35 map to ASCII 0..9\n\t\treturn digit + 22 + 75 * (digit < 26) - ((flag != 0) << 5);\n\t}\n\n\t/**\n\t * Bias adaptation function as per section 3.4 of RFC 3492.\n\t * https://tools.ietf.org/html/rfc3492#section-3.4\n\t * @private\n\t */\n\tfunction adapt(delta, numPoints, firstTime) {\n\t\tvar k = 0;\n\t\tdelta = firstTime ? floor(delta / damp) : delta >> 1;\n\t\tdelta += floor(delta / numPoints);\n\t\tfor (/* no initialization */; delta > baseMinusTMin * tMax >> 1; k += base) {\n\t\t\tdelta = floor(delta / baseMinusTMin);\n\t\t}\n\t\treturn floor(k + (baseMinusTMin + 1) * delta / (delta + skew));\n\t}\n\n\t/**\n\t * Converts a Punycode string of ASCII-only symbols to a string of Unicode\n\t * symbols.\n\t * @memberOf punycode\n\t * @param {String} input The Punycode string of ASCII-only symbols.\n\t * @returns {String} The resulting string of Unicode symbols.\n\t */\n\tfunction decode(input) {\n\t\t// Don't use UCS-2\n\t\tvar output = [],\n\t\t inputLength = input.length,\n\t\t out,\n\t\t i = 0,\n\t\t n = initialN,\n\t\t bias = initialBias,\n\t\t basic,\n\t\t j,\n\t\t index,\n\t\t oldi,\n\t\t w,\n\t\t k,\n\t\t digit,\n\t\t t,\n\t\t /** Cached calculation results */\n\t\t baseMinusT;\n\n\t\t// Handle the basic code points: let `basic` be the number of input code\n\t\t// points before the last delimiter, or `0` if there is none, then copy\n\t\t// the first basic code points to the output.\n\n\t\tbasic = input.lastIndexOf(delimiter);\n\t\tif (basic < 0) {\n\t\t\tbasic = 0;\n\t\t}\n\n\t\tfor (j = 0; j < basic; ++j) {\n\t\t\t// if it's not a basic code point\n\t\t\tif (input.charCodeAt(j) >= 0x80) {\n\t\t\t\terror('not-basic');\n\t\t\t}\n\t\t\toutput.push(input.charCodeAt(j));\n\t\t}\n\n\t\t// Main decoding loop: start just after the last delimiter if any basic code\n\t\t// points were copied; start at the beginning otherwise.\n\n\t\tfor (index = basic > 0 ? basic + 1 : 0; index < inputLength; /* no final expression */) {\n\n\t\t\t// `index` is the index of the next character to be consumed.\n\t\t\t// Decode a generalized variable-length integer into `delta`,\n\t\t\t// which gets added to `i`. The overflow checking is easier\n\t\t\t// if we increase `i` as we go, then subtract off its starting\n\t\t\t// value at the end to obtain `delta`.\n\t\t\tfor (oldi = i, w = 1, k = base; /* no condition */; k += base) {\n\n\t\t\t\tif (index >= inputLength) {\n\t\t\t\t\terror('invalid-input');\n\t\t\t\t}\n\n\t\t\t\tdigit = basicToDigit(input.charCodeAt(index++));\n\n\t\t\t\tif (digit >= base || digit > floor((maxInt - i) / w)) {\n\t\t\t\t\terror('overflow');\n\t\t\t\t}\n\n\t\t\t\ti += digit * w;\n\t\t\t\tt = k <= bias ? tMin : (k >= bias + tMax ? tMax : k - bias);\n\n\t\t\t\tif (digit < t) {\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\n\t\t\t\tbaseMinusT = base - t;\n\t\t\t\tif (w > floor(maxInt / baseMinusT)) {\n\t\t\t\t\terror('overflow');\n\t\t\t\t}\n\n\t\t\t\tw *= baseMinusT;\n\n\t\t\t}\n\n\t\t\tout = output.length + 1;\n\t\t\tbias = adapt(i - oldi, out, oldi == 0);\n\n\t\t\t// `i` was supposed to wrap around from `out` to `0`,\n\t\t\t// incrementing `n` each time, so we'll fix that now:\n\t\t\tif (floor(i / out) > maxInt - n) {\n\t\t\t\terror('overflow');\n\t\t\t}\n\n\t\t\tn += floor(i / out);\n\t\t\ti %= out;\n\n\t\t\t// Insert `n` at position `i` of the output\n\t\t\toutput.splice(i++, 0, n);\n\n\t\t}\n\n\t\treturn ucs2encode(output);\n\t}\n\n\t/**\n\t * Converts a string of Unicode symbols (e.g. a domain name label) to a\n\t * Punycode string of ASCII-only symbols.\n\t * @memberOf punycode\n\t * @param {String} input The string of Unicode symbols.\n\t * @returns {String} The resulting Punycode string of ASCII-only symbols.\n\t */\n\tfunction encode(input) {\n\t\tvar n,\n\t\t delta,\n\t\t handledCPCount,\n\t\t basicLength,\n\t\t bias,\n\t\t j,\n\t\t m,\n\t\t q,\n\t\t k,\n\t\t t,\n\t\t currentValue,\n\t\t output = [],\n\t\t /** `inputLength` will hold the number of code points in `input`. */\n\t\t inputLength,\n\t\t /** Cached calculation results */\n\t\t handledCPCountPlusOne,\n\t\t baseMinusT,\n\t\t qMinusT;\n\n\t\t// Convert the input in UCS-2 to Unicode\n\t\tinput = ucs2decode(input);\n\n\t\t// Cache the length\n\t\tinputLength = input.length;\n\n\t\t// Initialize the state\n\t\tn = initialN;\n\t\tdelta = 0;\n\t\tbias = initialBias;\n\n\t\t// Handle the basic code points\n\t\tfor (j = 0; j < inputLength; ++j) {\n\t\t\tcurrentValue = input[j];\n\t\t\tif (currentValue < 0x80) {\n\t\t\t\toutput.push(stringFromCharCode(currentValue));\n\t\t\t}\n\t\t}\n\n\t\thandledCPCount = basicLength = output.length;\n\n\t\t// `handledCPCount` is the number of code points that have been handled;\n\t\t// `basicLength` is the number of basic code points.\n\n\t\t// Finish the basic string - if it is not empty - with a delimiter\n\t\tif (basicLength) {\n\t\t\toutput.push(delimiter);\n\t\t}\n\n\t\t// Main encoding loop:\n\t\twhile (handledCPCount < inputLength) {\n\n\t\t\t// All non-basic code points < n have been handled already. Find the next\n\t\t\t// larger one:\n\t\t\tfor (m = maxInt, j = 0; j < inputLength; ++j) {\n\t\t\t\tcurrentValue = input[j];\n\t\t\t\tif (currentValue >= n && currentValue < m) {\n\t\t\t\t\tm = currentValue;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// Increase `delta` enough to advance the decoder's state to ,\n\t\t\t// but guard against overflow\n\t\t\thandledCPCountPlusOne = handledCPCount + 1;\n\t\t\tif (m - n > floor((maxInt - delta) / handledCPCountPlusOne)) {\n\t\t\t\terror('overflow');\n\t\t\t}\n\n\t\t\tdelta += (m - n) * handledCPCountPlusOne;\n\t\t\tn = m;\n\n\t\t\tfor (j = 0; j < inputLength; ++j) {\n\t\t\t\tcurrentValue = input[j];\n\n\t\t\t\tif (currentValue < n && ++delta > maxInt) {\n\t\t\t\t\terror('overflow');\n\t\t\t\t}\n\n\t\t\t\tif (currentValue == n) {\n\t\t\t\t\t// Represent delta as a generalized variable-length integer\n\t\t\t\t\tfor (q = delta, k = base; /* no condition */; k += base) {\n\t\t\t\t\t\tt = k <= bias ? tMin : (k >= bias + tMax ? tMax : k - bias);\n\t\t\t\t\t\tif (q < t) {\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tqMinusT = q - t;\n\t\t\t\t\t\tbaseMinusT = base - t;\n\t\t\t\t\t\toutput.push(\n\t\t\t\t\t\t\tstringFromCharCode(digitToBasic(t + qMinusT % baseMinusT, 0))\n\t\t\t\t\t\t);\n\t\t\t\t\t\tq = floor(qMinusT / baseMinusT);\n\t\t\t\t\t}\n\n\t\t\t\t\toutput.push(stringFromCharCode(digitToBasic(q, 0)));\n\t\t\t\t\tbias = adapt(delta, handledCPCountPlusOne, handledCPCount == basicLength);\n\t\t\t\t\tdelta = 0;\n\t\t\t\t\t++handledCPCount;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t++delta;\n\t\t\t++n;\n\n\t\t}\n\t\treturn output.join('');\n\t}\n\n\t/**\n\t * Converts a Punycode string representing a domain name or an email address\n\t * to Unicode. Only the Punycoded parts of the input will be converted, i.e.\n\t * it doesn't matter if you call it on a string that has already been\n\t * converted to Unicode.\n\t * @memberOf punycode\n\t * @param {String} input The Punycoded domain name or email address to\n\t * convert to Unicode.\n\t * @returns {String} The Unicode representation of the given Punycode\n\t * string.\n\t */\n\tfunction toUnicode(input) {\n\t\treturn mapDomain(input, function(string) {\n\t\t\treturn regexPunycode.test(string)\n\t\t\t\t? decode(string.slice(4).toLowerCase())\n\t\t\t\t: string;\n\t\t});\n\t}\n\n\t/**\n\t * Converts a Unicode string representing a domain name or an email address to\n\t * Punycode. Only the non-ASCII parts of the domain name will be converted,\n\t * i.e. it doesn't matter if you call it with a domain that's already in\n\t * ASCII.\n\t * @memberOf punycode\n\t * @param {String} input The domain name or email address to convert, as a\n\t * Unicode string.\n\t * @returns {String} The Punycode representation of the given domain name or\n\t * email address.\n\t */\n\tfunction toASCII(input) {\n\t\treturn mapDomain(input, function(string) {\n\t\t\treturn regexNonASCII.test(string)\n\t\t\t\t? 'xn--' + encode(string)\n\t\t\t\t: string;\n\t\t});\n\t}\n\n\t/*--------------------------------------------------------------------------*/\n\n\t/** Define the public API */\n\tpunycode = {\n\t\t/**\n\t\t * A string representing the current Punycode.js version number.\n\t\t * @memberOf punycode\n\t\t * @type String\n\t\t */\n\t\t'version': '1.4.1',\n\t\t/**\n\t\t * An object of methods to convert from JavaScript's internal character\n\t\t * representation (UCS-2) to Unicode code points, and back.\n\t\t * @see \n\t\t * @memberOf punycode\n\t\t * @type Object\n\t\t */\n\t\t'ucs2': {\n\t\t\t'decode': ucs2decode,\n\t\t\t'encode': ucs2encode\n\t\t},\n\t\t'decode': decode,\n\t\t'encode': encode,\n\t\t'toASCII': toASCII,\n\t\t'toUnicode': toUnicode\n\t};\n\n\t/** Expose `punycode` */\n\t// Some AMD build optimizers, like r.js, check for specific condition patterns\n\t// like the following:\n\tif (\n\t\ttypeof define == 'function' &&\n\t\ttypeof define.amd == 'object' &&\n\t\tdefine.amd\n\t) {\n\t\tdefine('punycode', function() {\n\t\t\treturn punycode;\n\t\t});\n\t} else if (freeExports && freeModule) {\n\t\tif (module.exports == freeExports) {\n\t\t\t// in Node.js, io.js, or RingoJS v0.8.0+\n\t\t\tfreeModule.exports = punycode;\n\t\t} else {\n\t\t\t// in Narwhal or RingoJS v0.7.0-\n\t\t\tfor (key in punycode) {\n\t\t\t\tpunycode.hasOwnProperty(key) && (freeExports[key] = punycode[key]);\n\t\t\t}\n\t\t}\n\t} else {\n\t\t// in Rhino or a web browser\n\t\troot.punycode = punycode;\n\t}\n\n}(this));\n","'use strict';\n\nvar replace = String.prototype.replace;\nvar percentTwenties = /%20/g;\n\nvar Format = {\n RFC1738: 'RFC1738',\n RFC3986: 'RFC3986'\n};\n\nmodule.exports = {\n 'default': Format.RFC3986,\n formatters: {\n RFC1738: function (value) {\n return replace.call(value, percentTwenties, '+');\n },\n RFC3986: function (value) {\n return String(value);\n }\n },\n RFC1738: Format.RFC1738,\n RFC3986: Format.RFC3986\n};\n","'use strict';\n\nvar stringify = require('./stringify');\nvar parse = require('./parse');\nvar formats = require('./formats');\n\nmodule.exports = {\n formats: formats,\n parse: parse,\n stringify: stringify\n};\n","'use strict';\n\nvar utils = require('./utils');\n\nvar has = Object.prototype.hasOwnProperty;\nvar isArray = Array.isArray;\n\nvar defaults = {\n allowDots: false,\n allowEmptyArrays: false,\n allowPrototypes: false,\n allowSparse: false,\n arrayLimit: 20,\n charset: 'utf-8',\n charsetSentinel: false,\n comma: false,\n decodeDotInKeys: false,\n decoder: utils.decode,\n delimiter: '&',\n depth: 5,\n duplicates: 'combine',\n ignoreQueryPrefix: false,\n interpretNumericEntities: false,\n parameterLimit: 1000,\n parseArrays: true,\n plainObjects: false,\n strictDepth: false,\n strictNullHandling: false,\n throwOnLimitExceeded: false\n};\n\nvar interpretNumericEntities = function (str) {\n return str.replace(/&#(\\d+);/g, function ($0, numberStr) {\n return String.fromCharCode(parseInt(numberStr, 10));\n });\n};\n\nvar parseArrayValue = function (val, options, currentArrayLength) {\n if (val && typeof val === 'string' && options.comma && val.indexOf(',') > -1) {\n return val.split(',');\n }\n\n if (options.throwOnLimitExceeded && currentArrayLength >= options.arrayLimit) {\n throw new RangeError('Array limit exceeded. Only ' + options.arrayLimit + ' element' + (options.arrayLimit === 1 ? '' : 's') + ' allowed in an array.');\n }\n\n return val;\n};\n\n// This is what browsers will submit when the ✓ character occurs in an\n// application/x-www-form-urlencoded body and the encoding of the page containing\n// the form is iso-8859-1, or when the submitted form has an accept-charset\n// attribute of iso-8859-1. Presumably also with other charsets that do not contain\n// the ✓ character, such as us-ascii.\nvar isoSentinel = 'utf8=%26%2310003%3B'; // encodeURIComponent('✓')\n\n// These are the percent-encoded utf-8 octets representing a checkmark, indicating that the request actually is utf-8 encoded.\nvar charsetSentinel = 'utf8=%E2%9C%93'; // encodeURIComponent('✓')\n\nvar parseValues = function parseQueryStringValues(str, options) {\n var obj = { __proto__: null };\n\n var cleanStr = options.ignoreQueryPrefix ? str.replace(/^\\?/, '') : str;\n cleanStr = cleanStr.replace(/%5B/gi, '[').replace(/%5D/gi, ']');\n\n var limit = options.parameterLimit === Infinity ? undefined : options.parameterLimit;\n var parts = cleanStr.split(\n options.delimiter,\n options.throwOnLimitExceeded ? limit + 1 : limit\n );\n\n if (options.throwOnLimitExceeded && parts.length > limit) {\n throw new RangeError('Parameter limit exceeded. Only ' + limit + ' parameter' + (limit === 1 ? '' : 's') + ' allowed.');\n }\n\n var skipIndex = -1; // Keep track of where the utf8 sentinel was found\n var i;\n\n var charset = options.charset;\n if (options.charsetSentinel) {\n for (i = 0; i < parts.length; ++i) {\n if (parts[i].indexOf('utf8=') === 0) {\n if (parts[i] === charsetSentinel) {\n charset = 'utf-8';\n } else if (parts[i] === isoSentinel) {\n charset = 'iso-8859-1';\n }\n skipIndex = i;\n i = parts.length; // The eslint settings do not allow break;\n }\n }\n }\n\n for (i = 0; i < parts.length; ++i) {\n if (i === skipIndex) {\n continue;\n }\n var part = parts[i];\n\n var bracketEqualsPos = part.indexOf(']=');\n var pos = bracketEqualsPos === -1 ? part.indexOf('=') : bracketEqualsPos + 1;\n\n var key;\n var val;\n if (pos === -1) {\n key = options.decoder(part, defaults.decoder, charset, 'key');\n val = options.strictNullHandling ? null : '';\n } else {\n key = options.decoder(part.slice(0, pos), defaults.decoder, charset, 'key');\n\n if (key !== null) {\n val = utils.maybeMap(\n parseArrayValue(\n part.slice(pos + 1),\n options,\n isArray(obj[key]) ? obj[key].length : 0\n ),\n function (encodedVal) {\n return options.decoder(encodedVal, defaults.decoder, charset, 'value');\n }\n );\n }\n }\n\n if (val && options.interpretNumericEntities && charset === 'iso-8859-1') {\n val = interpretNumericEntities(String(val));\n }\n\n if (part.indexOf('[]=') > -1) {\n val = isArray(val) ? [val] : val;\n }\n\n if (key !== null) {\n var existing = has.call(obj, key);\n if (existing && options.duplicates === 'combine') {\n obj[key] = utils.combine(\n obj[key],\n val,\n options.arrayLimit,\n options.plainObjects\n );\n } else if (!existing || options.duplicates === 'last') {\n obj[key] = val;\n }\n }\n }\n\n return obj;\n};\n\nvar parseObject = function (chain, val, options, valuesParsed) {\n var currentArrayLength = 0;\n if (chain.length > 0 && chain[chain.length - 1] === '[]') {\n var parentKey = chain.slice(0, -1).join('');\n currentArrayLength = Array.isArray(val) && val[parentKey] ? val[parentKey].length : 0;\n }\n\n var leaf = valuesParsed ? val : parseArrayValue(val, options, currentArrayLength);\n\n for (var i = chain.length - 1; i >= 0; --i) {\n var obj;\n var root = chain[i];\n\n if (root === '[]' && options.parseArrays) {\n if (utils.isOverflow(leaf)) {\n // leaf is already an overflow object, preserve it\n obj = leaf;\n } else {\n obj = options.allowEmptyArrays && (leaf === '' || (options.strictNullHandling && leaf === null))\n ? []\n : utils.combine(\n [],\n leaf,\n options.arrayLimit,\n options.plainObjects\n );\n }\n } else {\n obj = options.plainObjects ? { __proto__: null } : {};\n var cleanRoot = root.charAt(0) === '[' && root.charAt(root.length - 1) === ']' ? root.slice(1, -1) : root;\n var decodedRoot = options.decodeDotInKeys ? cleanRoot.replace(/%2E/g, '.') : cleanRoot;\n var index = parseInt(decodedRoot, 10);\n if (!options.parseArrays && decodedRoot === '') {\n obj = { 0: leaf };\n } else if (\n !isNaN(index)\n && root !== decodedRoot\n && String(index) === decodedRoot\n && index >= 0\n && (options.parseArrays && index <= options.arrayLimit)\n ) {\n obj = [];\n obj[index] = leaf;\n } else if (decodedRoot !== '__proto__') {\n obj[decodedRoot] = leaf;\n }\n }\n\n leaf = obj;\n }\n\n return leaf;\n};\n\nvar splitKeyIntoSegments = function splitKeyIntoSegments(givenKey, options) {\n var key = options.allowDots ? givenKey.replace(/\\.([^.[]+)/g, '[$1]') : givenKey;\n\n if (options.depth <= 0) {\n if (!options.plainObjects && has.call(Object.prototype, key)) {\n if (!options.allowPrototypes) {\n return;\n }\n }\n\n return [key];\n }\n\n var brackets = /(\\[[^[\\]]*])/;\n var child = /(\\[[^[\\]]*])/g;\n\n var segment = brackets.exec(key);\n var parent = segment ? key.slice(0, segment.index) : key;\n\n var keys = [];\n\n if (parent) {\n if (!options.plainObjects && has.call(Object.prototype, parent)) {\n if (!options.allowPrototypes) {\n return;\n }\n }\n\n keys.push(parent);\n }\n\n var i = 0;\n while ((segment = child.exec(key)) !== null && i < options.depth) {\n i += 1;\n\n var segmentContent = segment[1].slice(1, -1);\n if (!options.plainObjects && has.call(Object.prototype, segmentContent)) {\n if (!options.allowPrototypes) {\n return;\n }\n }\n\n keys.push(segment[1]);\n }\n\n if (segment) {\n if (options.strictDepth === true) {\n throw new RangeError('Input depth exceeded depth option of ' + options.depth + ' and strictDepth is true');\n }\n\n keys.push('[' + key.slice(segment.index) + ']');\n }\n\n return keys;\n};\n\nvar parseKeys = function parseQueryStringKeys(givenKey, val, options, valuesParsed) {\n if (!givenKey) {\n return;\n }\n\n var keys = splitKeyIntoSegments(givenKey, options);\n\n if (!keys) {\n return;\n }\n\n return parseObject(keys, val, options, valuesParsed);\n};\n\nvar normalizeParseOptions = function normalizeParseOptions(opts) {\n if (!opts) {\n return defaults;\n }\n\n if (typeof opts.allowEmptyArrays !== 'undefined' && typeof opts.allowEmptyArrays !== 'boolean') {\n throw new TypeError('`allowEmptyArrays` option can only be `true` or `false`, when provided');\n }\n\n if (typeof opts.decodeDotInKeys !== 'undefined' && typeof opts.decodeDotInKeys !== 'boolean') {\n throw new TypeError('`decodeDotInKeys` option can only be `true` or `false`, when provided');\n }\n\n if (opts.decoder !== null && typeof opts.decoder !== 'undefined' && typeof opts.decoder !== 'function') {\n throw new TypeError('Decoder has to be a function.');\n }\n\n if (typeof opts.charset !== 'undefined' && opts.charset !== 'utf-8' && opts.charset !== 'iso-8859-1') {\n throw new TypeError('The charset option must be either utf-8, iso-8859-1, or undefined');\n }\n\n if (typeof opts.throwOnLimitExceeded !== 'undefined' && typeof opts.throwOnLimitExceeded !== 'boolean') {\n throw new TypeError('`throwOnLimitExceeded` option must be a boolean');\n }\n\n var charset = typeof opts.charset === 'undefined' ? defaults.charset : opts.charset;\n\n var duplicates = typeof opts.duplicates === 'undefined' ? defaults.duplicates : opts.duplicates;\n\n if (duplicates !== 'combine' && duplicates !== 'first' && duplicates !== 'last') {\n throw new TypeError('The duplicates option must be either combine, first, or last');\n }\n\n var allowDots = typeof opts.allowDots === 'undefined' ? opts.decodeDotInKeys === true ? true : defaults.allowDots : !!opts.allowDots;\n\n return {\n allowDots: allowDots,\n allowEmptyArrays: typeof opts.allowEmptyArrays === 'boolean' ? !!opts.allowEmptyArrays : defaults.allowEmptyArrays,\n allowPrototypes: typeof opts.allowPrototypes === 'boolean' ? opts.allowPrototypes : defaults.allowPrototypes,\n allowSparse: typeof opts.allowSparse === 'boolean' ? opts.allowSparse : defaults.allowSparse,\n arrayLimit: typeof opts.arrayLimit === 'number' ? opts.arrayLimit : defaults.arrayLimit,\n charset: charset,\n charsetSentinel: typeof opts.charsetSentinel === 'boolean' ? opts.charsetSentinel : defaults.charsetSentinel,\n comma: typeof opts.comma === 'boolean' ? opts.comma : defaults.comma,\n decodeDotInKeys: typeof opts.decodeDotInKeys === 'boolean' ? opts.decodeDotInKeys : defaults.decodeDotInKeys,\n decoder: typeof opts.decoder === 'function' ? opts.decoder : defaults.decoder,\n delimiter: typeof opts.delimiter === 'string' || utils.isRegExp(opts.delimiter) ? opts.delimiter : defaults.delimiter,\n // eslint-disable-next-line no-implicit-coercion, no-extra-parens\n depth: (typeof opts.depth === 'number' || opts.depth === false) ? +opts.depth : defaults.depth,\n duplicates: duplicates,\n ignoreQueryPrefix: opts.ignoreQueryPrefix === true,\n interpretNumericEntities: typeof opts.interpretNumericEntities === 'boolean' ? opts.interpretNumericEntities : defaults.interpretNumericEntities,\n parameterLimit: typeof opts.parameterLimit === 'number' ? opts.parameterLimit : defaults.parameterLimit,\n parseArrays: opts.parseArrays !== false,\n plainObjects: typeof opts.plainObjects === 'boolean' ? opts.plainObjects : defaults.plainObjects,\n strictDepth: typeof opts.strictDepth === 'boolean' ? !!opts.strictDepth : defaults.strictDepth,\n strictNullHandling: typeof opts.strictNullHandling === 'boolean' ? opts.strictNullHandling : defaults.strictNullHandling,\n throwOnLimitExceeded: typeof opts.throwOnLimitExceeded === 'boolean' ? opts.throwOnLimitExceeded : false\n };\n};\n\nmodule.exports = function (str, opts) {\n var options = normalizeParseOptions(opts);\n\n if (str === '' || str === null || typeof str === 'undefined') {\n return options.plainObjects ? { __proto__: null } : {};\n }\n\n var tempObj = typeof str === 'string' ? parseValues(str, options) : str;\n var obj = options.plainObjects ? { __proto__: null } : {};\n\n // Iterate over the keys and setup the new object\n\n var keys = Object.keys(tempObj);\n for (var i = 0; i < keys.length; ++i) {\n var key = keys[i];\n var newObj = parseKeys(key, tempObj[key], options, typeof str === 'string');\n obj = utils.merge(obj, newObj, options);\n }\n\n if (options.allowSparse === true) {\n return obj;\n }\n\n return utils.compact(obj);\n};\n","'use strict';\n\nvar getSideChannel = require('side-channel');\nvar utils = require('./utils');\nvar formats = require('./formats');\nvar has = Object.prototype.hasOwnProperty;\n\nvar arrayPrefixGenerators = {\n brackets: function brackets(prefix) {\n return prefix + '[]';\n },\n comma: 'comma',\n indices: function indices(prefix, key) {\n return prefix + '[' + key + ']';\n },\n repeat: function repeat(prefix) {\n return prefix;\n }\n};\n\nvar isArray = Array.isArray;\nvar push = Array.prototype.push;\nvar pushToArray = function (arr, valueOrArray) {\n push.apply(arr, isArray(valueOrArray) ? valueOrArray : [valueOrArray]);\n};\n\nvar toISO = Date.prototype.toISOString;\n\nvar defaultFormat = formats['default'];\nvar defaults = {\n addQueryPrefix: false,\n allowDots: false,\n allowEmptyArrays: false,\n arrayFormat: 'indices',\n charset: 'utf-8',\n charsetSentinel: false,\n commaRoundTrip: false,\n delimiter: '&',\n encode: true,\n encodeDotInKeys: false,\n encoder: utils.encode,\n encodeValuesOnly: false,\n filter: void undefined,\n format: defaultFormat,\n formatter: formats.formatters[defaultFormat],\n // deprecated\n indices: false,\n serializeDate: function serializeDate(date) {\n return toISO.call(date);\n },\n skipNulls: false,\n strictNullHandling: false\n};\n\nvar isNonNullishPrimitive = function isNonNullishPrimitive(v) {\n return typeof v === 'string'\n || typeof v === 'number'\n || typeof v === 'boolean'\n || typeof v === 'symbol'\n || typeof v === 'bigint';\n};\n\nvar sentinel = {};\n\nvar stringify = function stringify(\n object,\n prefix,\n generateArrayPrefix,\n commaRoundTrip,\n allowEmptyArrays,\n strictNullHandling,\n skipNulls,\n encodeDotInKeys,\n encoder,\n filter,\n sort,\n allowDots,\n serializeDate,\n format,\n formatter,\n encodeValuesOnly,\n charset,\n sideChannel\n) {\n var obj = object;\n\n var tmpSc = sideChannel;\n var step = 0;\n var findFlag = false;\n while ((tmpSc = tmpSc.get(sentinel)) !== void undefined && !findFlag) {\n // Where object last appeared in the ref tree\n var pos = tmpSc.get(object);\n step += 1;\n if (typeof pos !== 'undefined') {\n if (pos === step) {\n throw new RangeError('Cyclic object value');\n } else {\n findFlag = true; // Break while\n }\n }\n if (typeof tmpSc.get(sentinel) === 'undefined') {\n step = 0;\n }\n }\n\n if (typeof filter === 'function') {\n obj = filter(prefix, obj);\n } else if (obj instanceof Date) {\n obj = serializeDate(obj);\n } else if (generateArrayPrefix === 'comma' && isArray(obj)) {\n obj = utils.maybeMap(obj, function (value) {\n if (value instanceof Date) {\n return serializeDate(value);\n }\n return value;\n });\n }\n\n if (obj === null) {\n if (strictNullHandling) {\n return encoder && !encodeValuesOnly ? encoder(prefix, defaults.encoder, charset, 'key', format) : prefix;\n }\n\n obj = '';\n }\n\n if (isNonNullishPrimitive(obj) || utils.isBuffer(obj)) {\n if (encoder) {\n var keyValue = encodeValuesOnly ? prefix : encoder(prefix, defaults.encoder, charset, 'key', format);\n return [formatter(keyValue) + '=' + formatter(encoder(obj, defaults.encoder, charset, 'value', format))];\n }\n return [formatter(prefix) + '=' + formatter(String(obj))];\n }\n\n var values = [];\n\n if (typeof obj === 'undefined') {\n return values;\n }\n\n var objKeys;\n if (generateArrayPrefix === 'comma' && isArray(obj)) {\n // we need to join elements in\n if (encodeValuesOnly && encoder) {\n obj = utils.maybeMap(obj, encoder);\n }\n objKeys = [{ value: obj.length > 0 ? obj.join(',') || null : void undefined }];\n } else if (isArray(filter)) {\n objKeys = filter;\n } else {\n var keys = Object.keys(obj);\n objKeys = sort ? keys.sort(sort) : keys;\n }\n\n var encodedPrefix = encodeDotInKeys ? String(prefix).replace(/\\./g, '%2E') : String(prefix);\n\n var adjustedPrefix = commaRoundTrip && isArray(obj) && obj.length === 1 ? encodedPrefix + '[]' : encodedPrefix;\n\n if (allowEmptyArrays && isArray(obj) && obj.length === 0) {\n return adjustedPrefix + '[]';\n }\n\n for (var j = 0; j < objKeys.length; ++j) {\n var key = objKeys[j];\n var value = typeof key === 'object' && key && typeof key.value !== 'undefined'\n ? key.value\n : obj[key];\n\n if (skipNulls && value === null) {\n continue;\n }\n\n var encodedKey = allowDots && encodeDotInKeys ? String(key).replace(/\\./g, '%2E') : String(key);\n var keyPrefix = isArray(obj)\n ? typeof generateArrayPrefix === 'function' ? generateArrayPrefix(adjustedPrefix, encodedKey) : adjustedPrefix\n : adjustedPrefix + (allowDots ? '.' + encodedKey : '[' + encodedKey + ']');\n\n sideChannel.set(object, step);\n var valueSideChannel = getSideChannel();\n valueSideChannel.set(sentinel, sideChannel);\n pushToArray(values, stringify(\n value,\n keyPrefix,\n generateArrayPrefix,\n commaRoundTrip,\n allowEmptyArrays,\n strictNullHandling,\n skipNulls,\n encodeDotInKeys,\n generateArrayPrefix === 'comma' && encodeValuesOnly && isArray(obj) ? null : encoder,\n filter,\n sort,\n allowDots,\n serializeDate,\n format,\n formatter,\n encodeValuesOnly,\n charset,\n valueSideChannel\n ));\n }\n\n return values;\n};\n\nvar normalizeStringifyOptions = function normalizeStringifyOptions(opts) {\n if (!opts) {\n return defaults;\n }\n\n if (typeof opts.allowEmptyArrays !== 'undefined' && typeof opts.allowEmptyArrays !== 'boolean') {\n throw new TypeError('`allowEmptyArrays` option can only be `true` or `false`, when provided');\n }\n\n if (typeof opts.encodeDotInKeys !== 'undefined' && typeof opts.encodeDotInKeys !== 'boolean') {\n throw new TypeError('`encodeDotInKeys` option can only be `true` or `false`, when provided');\n }\n\n if (opts.encoder !== null && typeof opts.encoder !== 'undefined' && typeof opts.encoder !== 'function') {\n throw new TypeError('Encoder has to be a function.');\n }\n\n var charset = opts.charset || defaults.charset;\n if (typeof opts.charset !== 'undefined' && opts.charset !== 'utf-8' && opts.charset !== 'iso-8859-1') {\n throw new TypeError('The charset option must be either utf-8, iso-8859-1, or undefined');\n }\n\n var format = formats['default'];\n if (typeof opts.format !== 'undefined') {\n if (!has.call(formats.formatters, opts.format)) {\n throw new TypeError('Unknown format option provided.');\n }\n format = opts.format;\n }\n var formatter = formats.formatters[format];\n\n var filter = defaults.filter;\n if (typeof opts.filter === 'function' || isArray(opts.filter)) {\n filter = opts.filter;\n }\n\n var arrayFormat;\n if (opts.arrayFormat in arrayPrefixGenerators) {\n arrayFormat = opts.arrayFormat;\n } else if ('indices' in opts) {\n arrayFormat = opts.indices ? 'indices' : 'repeat';\n } else {\n arrayFormat = defaults.arrayFormat;\n }\n\n if ('commaRoundTrip' in opts && typeof opts.commaRoundTrip !== 'boolean') {\n throw new TypeError('`commaRoundTrip` must be a boolean, or absent');\n }\n\n var allowDots = typeof opts.allowDots === 'undefined' ? opts.encodeDotInKeys === true ? true : defaults.allowDots : !!opts.allowDots;\n\n return {\n addQueryPrefix: typeof opts.addQueryPrefix === 'boolean' ? opts.addQueryPrefix : defaults.addQueryPrefix,\n allowDots: allowDots,\n allowEmptyArrays: typeof opts.allowEmptyArrays === 'boolean' ? !!opts.allowEmptyArrays : defaults.allowEmptyArrays,\n arrayFormat: arrayFormat,\n charset: charset,\n charsetSentinel: typeof opts.charsetSentinel === 'boolean' ? opts.charsetSentinel : defaults.charsetSentinel,\n commaRoundTrip: !!opts.commaRoundTrip,\n delimiter: typeof opts.delimiter === 'undefined' ? defaults.delimiter : opts.delimiter,\n encode: typeof opts.encode === 'boolean' ? opts.encode : defaults.encode,\n encodeDotInKeys: typeof opts.encodeDotInKeys === 'boolean' ? opts.encodeDotInKeys : defaults.encodeDotInKeys,\n encoder: typeof opts.encoder === 'function' ? opts.encoder : defaults.encoder,\n encodeValuesOnly: typeof opts.encodeValuesOnly === 'boolean' ? opts.encodeValuesOnly : defaults.encodeValuesOnly,\n filter: filter,\n format: format,\n formatter: formatter,\n serializeDate: typeof opts.serializeDate === 'function' ? opts.serializeDate : defaults.serializeDate,\n skipNulls: typeof opts.skipNulls === 'boolean' ? opts.skipNulls : defaults.skipNulls,\n sort: typeof opts.sort === 'function' ? opts.sort : null,\n strictNullHandling: typeof opts.strictNullHandling === 'boolean' ? opts.strictNullHandling : defaults.strictNullHandling\n };\n};\n\nmodule.exports = function (object, opts) {\n var obj = object;\n var options = normalizeStringifyOptions(opts);\n\n var objKeys;\n var filter;\n\n if (typeof options.filter === 'function') {\n filter = options.filter;\n obj = filter('', obj);\n } else if (isArray(options.filter)) {\n filter = options.filter;\n objKeys = filter;\n }\n\n var keys = [];\n\n if (typeof obj !== 'object' || obj === null) {\n return '';\n }\n\n var generateArrayPrefix = arrayPrefixGenerators[options.arrayFormat];\n var commaRoundTrip = generateArrayPrefix === 'comma' && options.commaRoundTrip;\n\n if (!objKeys) {\n objKeys = Object.keys(obj);\n }\n\n if (options.sort) {\n objKeys.sort(options.sort);\n }\n\n var sideChannel = getSideChannel();\n for (var i = 0; i < objKeys.length; ++i) {\n var key = objKeys[i];\n var value = obj[key];\n\n if (options.skipNulls && value === null) {\n continue;\n }\n pushToArray(keys, stringify(\n value,\n key,\n generateArrayPrefix,\n commaRoundTrip,\n options.allowEmptyArrays,\n options.strictNullHandling,\n options.skipNulls,\n options.encodeDotInKeys,\n options.encode ? options.encoder : null,\n options.filter,\n options.sort,\n options.allowDots,\n options.serializeDate,\n options.format,\n options.formatter,\n options.encodeValuesOnly,\n options.charset,\n sideChannel\n ));\n }\n\n var joined = keys.join(options.delimiter);\n var prefix = options.addQueryPrefix === true ? '?' : '';\n\n if (options.charsetSentinel) {\n if (options.charset === 'iso-8859-1') {\n // encodeURIComponent('✓'), the \"numeric entity\" representation of a checkmark\n prefix += 'utf8=%26%2310003%3B&';\n } else {\n // encodeURIComponent('✓')\n prefix += 'utf8=%E2%9C%93&';\n }\n }\n\n return joined.length > 0 ? prefix + joined : '';\n};\n","'use strict';\n\nvar formats = require('./formats');\nvar getSideChannel = require('side-channel');\n\nvar has = Object.prototype.hasOwnProperty;\nvar isArray = Array.isArray;\n\n// Track objects created from arrayLimit overflow using side-channel\n// Stores the current max numeric index for O(1) lookup\nvar overflowChannel = getSideChannel();\n\nvar markOverflow = function markOverflow(obj, maxIndex) {\n overflowChannel.set(obj, maxIndex);\n return obj;\n};\n\nvar isOverflow = function isOverflow(obj) {\n return overflowChannel.has(obj);\n};\n\nvar getMaxIndex = function getMaxIndex(obj) {\n return overflowChannel.get(obj);\n};\n\nvar setMaxIndex = function setMaxIndex(obj, maxIndex) {\n overflowChannel.set(obj, maxIndex);\n};\n\nvar hexTable = (function () {\n var array = [];\n for (var i = 0; i < 256; ++i) {\n array.push('%' + ((i < 16 ? '0' : '') + i.toString(16)).toUpperCase());\n }\n\n return array;\n}());\n\nvar compactQueue = function compactQueue(queue) {\n while (queue.length > 1) {\n var item = queue.pop();\n var obj = item.obj[item.prop];\n\n if (isArray(obj)) {\n var compacted = [];\n\n for (var j = 0; j < obj.length; ++j) {\n if (typeof obj[j] !== 'undefined') {\n compacted.push(obj[j]);\n }\n }\n\n item.obj[item.prop] = compacted;\n }\n }\n};\n\nvar arrayToObject = function arrayToObject(source, options) {\n var obj = options && options.plainObjects ? { __proto__: null } : {};\n for (var i = 0; i < source.length; ++i) {\n if (typeof source[i] !== 'undefined') {\n obj[i] = source[i];\n }\n }\n\n return obj;\n};\n\nvar merge = function merge(target, source, options) {\n /* eslint no-param-reassign: 0 */\n if (!source) {\n return target;\n }\n\n if (typeof source !== 'object' && typeof source !== 'function') {\n if (isArray(target)) {\n target.push(source);\n } else if (target && typeof target === 'object') {\n if (isOverflow(target)) {\n // Add at next numeric index for overflow objects\n var newIndex = getMaxIndex(target) + 1;\n target[newIndex] = source;\n setMaxIndex(target, newIndex);\n } else if (\n (options && (options.plainObjects || options.allowPrototypes))\n || !has.call(Object.prototype, source)\n ) {\n target[source] = true;\n }\n } else {\n return [target, source];\n }\n\n return target;\n }\n\n if (!target || typeof target !== 'object') {\n if (isOverflow(source)) {\n // Create new object with target at 0, source values shifted by 1\n var sourceKeys = Object.keys(source);\n var result = options && options.plainObjects\n ? { __proto__: null, 0: target }\n : { 0: target };\n for (var m = 0; m < sourceKeys.length; m++) {\n var oldKey = parseInt(sourceKeys[m], 10);\n result[oldKey + 1] = source[sourceKeys[m]];\n }\n return markOverflow(result, getMaxIndex(source) + 1);\n }\n return [target].concat(source);\n }\n\n var mergeTarget = target;\n if (isArray(target) && !isArray(source)) {\n mergeTarget = arrayToObject(target, options);\n }\n\n if (isArray(target) && isArray(source)) {\n source.forEach(function (item, i) {\n if (has.call(target, i)) {\n var targetItem = target[i];\n if (targetItem && typeof targetItem === 'object' && item && typeof item === 'object') {\n target[i] = merge(targetItem, item, options);\n } else {\n target.push(item);\n }\n } else {\n target[i] = item;\n }\n });\n return target;\n }\n\n return Object.keys(source).reduce(function (acc, key) {\n var value = source[key];\n\n if (has.call(acc, key)) {\n acc[key] = merge(acc[key], value, options);\n } else {\n acc[key] = value;\n }\n return acc;\n }, mergeTarget);\n};\n\nvar assign = function assignSingleSource(target, source) {\n return Object.keys(source).reduce(function (acc, key) {\n acc[key] = source[key];\n return acc;\n }, target);\n};\n\nvar decode = function (str, defaultDecoder, charset) {\n var strWithoutPlus = str.replace(/\\+/g, ' ');\n if (charset === 'iso-8859-1') {\n // unescape never throws, no try...catch needed:\n return strWithoutPlus.replace(/%[0-9a-f]{2}/gi, unescape);\n }\n // utf-8\n try {\n return decodeURIComponent(strWithoutPlus);\n } catch (e) {\n return strWithoutPlus;\n }\n};\n\nvar limit = 1024;\n\n/* eslint operator-linebreak: [2, \"before\"] */\n\nvar encode = function encode(str, defaultEncoder, charset, kind, format) {\n // This code was originally written by Brian White (mscdex) for the io.js core querystring library.\n // It has been adapted here for stricter adherence to RFC 3986\n if (str.length === 0) {\n return str;\n }\n\n var string = str;\n if (typeof str === 'symbol') {\n string = Symbol.prototype.toString.call(str);\n } else if (typeof str !== 'string') {\n string = String(str);\n }\n\n if (charset === 'iso-8859-1') {\n return escape(string).replace(/%u[0-9a-f]{4}/gi, function ($0) {\n return '%26%23' + parseInt($0.slice(2), 16) + '%3B';\n });\n }\n\n var out = '';\n for (var j = 0; j < string.length; j += limit) {\n var segment = string.length >= limit ? string.slice(j, j + limit) : string;\n var arr = [];\n\n for (var i = 0; i < segment.length; ++i) {\n var c = segment.charCodeAt(i);\n if (\n c === 0x2D // -\n || c === 0x2E // .\n || c === 0x5F // _\n || c === 0x7E // ~\n || (c >= 0x30 && c <= 0x39) // 0-9\n || (c >= 0x41 && c <= 0x5A) // a-z\n || (c >= 0x61 && c <= 0x7A) // A-Z\n || (format === formats.RFC1738 && (c === 0x28 || c === 0x29)) // ( )\n ) {\n arr[arr.length] = segment.charAt(i);\n continue;\n }\n\n if (c < 0x80) {\n arr[arr.length] = hexTable[c];\n continue;\n }\n\n if (c < 0x800) {\n arr[arr.length] = hexTable[0xC0 | (c >> 6)]\n + hexTable[0x80 | (c & 0x3F)];\n continue;\n }\n\n if (c < 0xD800 || c >= 0xE000) {\n arr[arr.length] = hexTable[0xE0 | (c >> 12)]\n + hexTable[0x80 | ((c >> 6) & 0x3F)]\n + hexTable[0x80 | (c & 0x3F)];\n continue;\n }\n\n i += 1;\n c = 0x10000 + (((c & 0x3FF) << 10) | (segment.charCodeAt(i) & 0x3FF));\n\n arr[arr.length] = hexTable[0xF0 | (c >> 18)]\n + hexTable[0x80 | ((c >> 12) & 0x3F)]\n + hexTable[0x80 | ((c >> 6) & 0x3F)]\n + hexTable[0x80 | (c & 0x3F)];\n }\n\n out += arr.join('');\n }\n\n return out;\n};\n\nvar compact = function compact(value) {\n var queue = [{ obj: { o: value }, prop: 'o' }];\n var refs = [];\n\n for (var i = 0; i < queue.length; ++i) {\n var item = queue[i];\n var obj = item.obj[item.prop];\n\n var keys = Object.keys(obj);\n for (var j = 0; j < keys.length; ++j) {\n var key = keys[j];\n var val = obj[key];\n if (typeof val === 'object' && val !== null && refs.indexOf(val) === -1) {\n queue.push({ obj: obj, prop: key });\n refs.push(val);\n }\n }\n }\n\n compactQueue(queue);\n\n return value;\n};\n\nvar isRegExp = function isRegExp(obj) {\n return Object.prototype.toString.call(obj) === '[object RegExp]';\n};\n\nvar isBuffer = function isBuffer(obj) {\n if (!obj || typeof obj !== 'object') {\n return false;\n }\n\n return !!(obj.constructor && obj.constructor.isBuffer && obj.constructor.isBuffer(obj));\n};\n\nvar combine = function combine(a, b, arrayLimit, plainObjects) {\n // If 'a' is already an overflow object, add to it\n if (isOverflow(a)) {\n var newIndex = getMaxIndex(a) + 1;\n a[newIndex] = b;\n setMaxIndex(a, newIndex);\n return a;\n }\n\n var result = [].concat(a, b);\n if (result.length > arrayLimit) {\n return markOverflow(arrayToObject(result, { plainObjects: plainObjects }), result.length - 1);\n }\n return result;\n};\n\nvar maybeMap = function maybeMap(val, fn) {\n if (isArray(val)) {\n var mapped = [];\n for (var i = 0; i < val.length; i += 1) {\n mapped.push(fn(val[i]));\n }\n return mapped;\n }\n return fn(val);\n};\n\nmodule.exports = {\n arrayToObject: arrayToObject,\n assign: assign,\n combine: combine,\n compact: compact,\n decode: decode,\n encode: encode,\n isBuffer: isBuffer,\n isOverflow: isOverflow,\n isRegExp: isRegExp,\n maybeMap: maybeMap,\n merge: merge\n};\n","'use strict';\n\nvar has = Object.prototype.hasOwnProperty\n , undef;\n\n/**\n * Decode a URI encoded string.\n *\n * @param {String} input The URI encoded string.\n * @returns {String|Null} The decoded string.\n * @api private\n */\nfunction decode(input) {\n try {\n return decodeURIComponent(input.replace(/\\+/g, ' '));\n } catch (e) {\n return null;\n }\n}\n\n/**\n * Attempts to encode a given input.\n *\n * @param {String} input The string that needs to be encoded.\n * @returns {String|Null} The encoded string.\n * @api private\n */\nfunction encode(input) {\n try {\n return encodeURIComponent(input);\n } catch (e) {\n return null;\n }\n}\n\n/**\n * Simple query string parser.\n *\n * @param {String} query The query string that needs to be parsed.\n * @returns {Object}\n * @api public\n */\nfunction querystring(query) {\n var parser = /([^=?#&]+)=?([^&]*)/g\n , result = {}\n , part;\n\n while (part = parser.exec(query)) {\n var key = decode(part[1])\n , value = decode(part[2]);\n\n //\n // Prevent overriding of existing properties. This ensures that build-in\n // methods like `toString` or __proto__ are not overriden by malicious\n // querystrings.\n //\n // In the case if failed decoding, we want to omit the key/value pairs\n // from the result.\n //\n if (key === null || value === null || key in result) continue;\n result[key] = value;\n }\n\n return result;\n}\n\n/**\n * Transform a query string to an object.\n *\n * @param {Object} obj Object that should be transformed.\n * @param {String} prefix Optional prefix.\n * @returns {String}\n * @api public\n */\nfunction querystringify(obj, prefix) {\n prefix = prefix || '';\n\n var pairs = []\n , value\n , key;\n\n //\n // Optionally prefix with a '?' if needed\n //\n if ('string' !== typeof prefix) prefix = '?';\n\n for (key in obj) {\n if (has.call(obj, key)) {\n value = obj[key];\n\n //\n // Edge cases where we actually want to encode the value to an empty\n // string instead of the stringified value.\n //\n if (!value && (value === null || value === undef || isNaN(value))) {\n value = '';\n }\n\n key = encode(key);\n value = encode(value);\n\n //\n // If we failed to encode the strings, we should bail out as we don't\n // want to add invalid strings to the query.\n //\n if (key === null || value === null) continue;\n pairs.push(key +'='+ value);\n }\n }\n\n return pairs.length ? prefix + pairs.join('&') : '';\n}\n\n//\n// Expose the module.\n//\nexports.stringify = querystringify;\nexports.parse = querystring;\n","'use strict';\n\n/**\n * Check if we're required to add a port number.\n *\n * @see https://url.spec.whatwg.org/#default-port\n * @param {Number|String} port Port number we need to check\n * @param {String} protocol Protocol we need to check against.\n * @returns {Boolean} Is it a default port for the given protocol\n * @api private\n */\nmodule.exports = function required(port, protocol) {\n protocol = protocol.split(':')[0];\n port = +port;\n\n if (!port) return false;\n\n switch (protocol) {\n case 'http':\n case 'ws':\n return port !== 80;\n\n case 'https':\n case 'wss':\n return port !== 443;\n\n case 'ftp':\n return port !== 21;\n\n case 'gopher':\n return port !== 70;\n\n case 'file':\n return false;\n }\n\n return port !== 0;\n};\n","'use strict';\n\nvar callBound = require('call-bound');\nvar isRegex = require('is-regex');\n\nvar $exec = callBound('RegExp.prototype.exec');\nvar $TypeError = require('es-errors/type');\n\n/** @type {import('.')} */\nmodule.exports = function regexTester(regex) {\n\tif (!isRegex(regex)) {\n\t\tthrow new $TypeError('`regex` must be a RegExp');\n\t}\n\treturn function test(s) {\n\t\treturn $exec(regex, s) !== null;\n\t};\n};\n","'use strict';\n\nvar inspect = require('object-inspect');\n\nvar $TypeError = require('es-errors/type');\n\n/*\n* This function traverses the list returning the node corresponding to the given key.\n*\n* That node is also moved to the head of the list, so that if it's accessed again we don't need to traverse the whole list.\n* By doing so, all the recently used nodes can be accessed relatively quickly.\n*/\n/** @type {import('./list.d.ts').listGetNode} */\n// eslint-disable-next-line consistent-return\nvar listGetNode = function (list, key, isDelete) {\n\t/** @type {typeof list | NonNullable<(typeof list)['next']>} */\n\tvar prev = list;\n\t/** @type {(typeof list)['next']} */\n\tvar curr;\n\t// eslint-disable-next-line eqeqeq\n\tfor (; (curr = prev.next) != null; prev = curr) {\n\t\tif (curr.key === key) {\n\t\t\tprev.next = curr.next;\n\t\t\tif (!isDelete) {\n\t\t\t\t// eslint-disable-next-line no-extra-parens\n\t\t\t\tcurr.next = /** @type {NonNullable} */ (list.next);\n\t\t\t\tlist.next = curr; // eslint-disable-line no-param-reassign\n\t\t\t}\n\t\t\treturn curr;\n\t\t}\n\t}\n};\n\n/** @type {import('./list.d.ts').listGet} */\nvar listGet = function (objects, key) {\n\tif (!objects) {\n\t\treturn void undefined;\n\t}\n\tvar node = listGetNode(objects, key);\n\treturn node && node.value;\n};\n/** @type {import('./list.d.ts').listSet} */\nvar listSet = function (objects, key, value) {\n\tvar node = listGetNode(objects, key);\n\tif (node) {\n\t\tnode.value = value;\n\t} else {\n\t\t// Prepend the new node to the beginning of the list\n\t\tobjects.next = /** @type {import('./list.d.ts').ListNode} */ ({ // eslint-disable-line no-param-reassign, no-extra-parens\n\t\t\tkey: key,\n\t\t\tnext: objects.next,\n\t\t\tvalue: value\n\t\t});\n\t}\n};\n/** @type {import('./list.d.ts').listHas} */\nvar listHas = function (objects, key) {\n\tif (!objects) {\n\t\treturn false;\n\t}\n\treturn !!listGetNode(objects, key);\n};\n/** @type {import('./list.d.ts').listDelete} */\n// eslint-disable-next-line consistent-return\nvar listDelete = function (objects, key) {\n\tif (objects) {\n\t\treturn listGetNode(objects, key, true);\n\t}\n};\n\n/** @type {import('.')} */\nmodule.exports = function getSideChannelList() {\n\t/** @typedef {ReturnType} Channel */\n\t/** @typedef {Parameters[0]} K */\n\t/** @typedef {Parameters[1]} V */\n\n\t/** @type {import('./list.d.ts').RootNode | undefined} */ var $o;\n\n\t/** @type {Channel} */\n\tvar channel = {\n\t\tassert: function (key) {\n\t\t\tif (!channel.has(key)) {\n\t\t\t\tthrow new $TypeError('Side channel does not contain ' + inspect(key));\n\t\t\t}\n\t\t},\n\t\t'delete': function (key) {\n\t\t\tvar root = $o && $o.next;\n\t\t\tvar deletedNode = listDelete($o, key);\n\t\t\tif (deletedNode && root && root === deletedNode) {\n\t\t\t\t$o = void undefined;\n\t\t\t}\n\t\t\treturn !!deletedNode;\n\t\t},\n\t\tget: function (key) {\n\t\t\treturn listGet($o, key);\n\t\t},\n\t\thas: function (key) {\n\t\t\treturn listHas($o, key);\n\t\t},\n\t\tset: function (key, value) {\n\t\t\tif (!$o) {\n\t\t\t\t// Initialize the linked list as an empty node, so that we don't have to special-case handling of the first node: we can always refer to it as (previous node).next, instead of something like (list).head\n\t\t\t\t$o = {\n\t\t\t\t\tnext: void undefined\n\t\t\t\t};\n\t\t\t}\n\t\t\t// eslint-disable-next-line no-extra-parens\n\t\t\tlistSet(/** @type {NonNullable} */ ($o), key, value);\n\t\t}\n\t};\n\t// @ts-expect-error TODO: figure out why this is erroring\n\treturn channel;\n};\n","'use strict';\n\nvar GetIntrinsic = require('get-intrinsic');\nvar callBound = require('call-bound');\nvar inspect = require('object-inspect');\n\nvar $TypeError = require('es-errors/type');\nvar $Map = GetIntrinsic('%Map%', true);\n\n/** @type {(thisArg: Map, key: K) => V} */\nvar $mapGet = callBound('Map.prototype.get', true);\n/** @type {(thisArg: Map, key: K, value: V) => void} */\nvar $mapSet = callBound('Map.prototype.set', true);\n/** @type {(thisArg: Map, key: K) => boolean} */\nvar $mapHas = callBound('Map.prototype.has', true);\n/** @type {(thisArg: Map, key: K) => boolean} */\nvar $mapDelete = callBound('Map.prototype.delete', true);\n/** @type {(thisArg: Map) => number} */\nvar $mapSize = callBound('Map.prototype.size', true);\n\n/** @type {import('.')} */\nmodule.exports = !!$Map && /** @type {Exclude} */ function getSideChannelMap() {\n\t/** @typedef {ReturnType} Channel */\n\t/** @typedef {Parameters[0]} K */\n\t/** @typedef {Parameters[1]} V */\n\n\t/** @type {Map | undefined} */ var $m;\n\n\t/** @type {Channel} */\n\tvar channel = {\n\t\tassert: function (key) {\n\t\t\tif (!channel.has(key)) {\n\t\t\t\tthrow new $TypeError('Side channel does not contain ' + inspect(key));\n\t\t\t}\n\t\t},\n\t\t'delete': function (key) {\n\t\t\tif ($m) {\n\t\t\t\tvar result = $mapDelete($m, key);\n\t\t\t\tif ($mapSize($m) === 0) {\n\t\t\t\t\t$m = void undefined;\n\t\t\t\t}\n\t\t\t\treturn result;\n\t\t\t}\n\t\t\treturn false;\n\t\t},\n\t\tget: function (key) { // eslint-disable-line consistent-return\n\t\t\tif ($m) {\n\t\t\t\treturn $mapGet($m, key);\n\t\t\t}\n\t\t},\n\t\thas: function (key) {\n\t\t\tif ($m) {\n\t\t\t\treturn $mapHas($m, key);\n\t\t\t}\n\t\t\treturn false;\n\t\t},\n\t\tset: function (key, value) {\n\t\t\tif (!$m) {\n\t\t\t\t// @ts-expect-error TS can't handle narrowing a variable inside a closure\n\t\t\t\t$m = new $Map();\n\t\t\t}\n\t\t\t$mapSet($m, key, value);\n\t\t}\n\t};\n\n\t// @ts-expect-error TODO: figure out why TS is erroring here\n\treturn channel;\n};\n","'use strict';\n\nvar GetIntrinsic = require('get-intrinsic');\nvar callBound = require('call-bound');\nvar inspect = require('object-inspect');\nvar getSideChannelMap = require('side-channel-map');\n\nvar $TypeError = require('es-errors/type');\nvar $WeakMap = GetIntrinsic('%WeakMap%', true);\n\n/** @type {(thisArg: WeakMap, key: K) => V} */\nvar $weakMapGet = callBound('WeakMap.prototype.get', true);\n/** @type {(thisArg: WeakMap, key: K, value: V) => void} */\nvar $weakMapSet = callBound('WeakMap.prototype.set', true);\n/** @type {(thisArg: WeakMap, key: K) => boolean} */\nvar $weakMapHas = callBound('WeakMap.prototype.has', true);\n/** @type {(thisArg: WeakMap, key: K) => boolean} */\nvar $weakMapDelete = callBound('WeakMap.prototype.delete', true);\n\n/** @type {import('.')} */\nmodule.exports = $WeakMap\n\t? /** @type {Exclude} */ function getSideChannelWeakMap() {\n\t\t/** @typedef {ReturnType} Channel */\n\t\t/** @typedef {Parameters[0]} K */\n\t\t/** @typedef {Parameters[1]} V */\n\n\t\t/** @type {WeakMap | undefined} */ var $wm;\n\t\t/** @type {Channel | undefined} */ var $m;\n\n\t\t/** @type {Channel} */\n\t\tvar channel = {\n\t\t\tassert: function (key) {\n\t\t\t\tif (!channel.has(key)) {\n\t\t\t\t\tthrow new $TypeError('Side channel does not contain ' + inspect(key));\n\t\t\t\t}\n\t\t\t},\n\t\t\t'delete': function (key) {\n\t\t\t\tif ($WeakMap && key && (typeof key === 'object' || typeof key === 'function')) {\n\t\t\t\t\tif ($wm) {\n\t\t\t\t\t\treturn $weakMapDelete($wm, key);\n\t\t\t\t\t}\n\t\t\t\t} else if (getSideChannelMap) {\n\t\t\t\t\tif ($m) {\n\t\t\t\t\t\treturn $m['delete'](key);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\treturn false;\n\t\t\t},\n\t\t\tget: function (key) {\n\t\t\t\tif ($WeakMap && key && (typeof key === 'object' || typeof key === 'function')) {\n\t\t\t\t\tif ($wm) {\n\t\t\t\t\t\treturn $weakMapGet($wm, key);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\treturn $m && $m.get(key);\n\t\t\t},\n\t\t\thas: function (key) {\n\t\t\t\tif ($WeakMap && key && (typeof key === 'object' || typeof key === 'function')) {\n\t\t\t\t\tif ($wm) {\n\t\t\t\t\t\treturn $weakMapHas($wm, key);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\treturn !!$m && $m.has(key);\n\t\t\t},\n\t\t\tset: function (key, value) {\n\t\t\t\tif ($WeakMap && key && (typeof key === 'object' || typeof key === 'function')) {\n\t\t\t\t\tif (!$wm) {\n\t\t\t\t\t\t$wm = new $WeakMap();\n\t\t\t\t\t}\n\t\t\t\t\t$weakMapSet($wm, key, value);\n\t\t\t\t} else if (getSideChannelMap) {\n\t\t\t\t\tif (!$m) {\n\t\t\t\t\t\t$m = getSideChannelMap();\n\t\t\t\t\t}\n\t\t\t\t\t// eslint-disable-next-line no-extra-parens\n\t\t\t\t\t/** @type {NonNullable} */ ($m).set(key, value);\n\t\t\t\t}\n\t\t\t}\n\t\t};\n\n\t\t// @ts-expect-error TODO: figure out why this is erroring\n\t\treturn channel;\n\t}\n\t: getSideChannelMap;\n","'use strict';\n\nvar $TypeError = require('es-errors/type');\nvar inspect = require('object-inspect');\nvar getSideChannelList = require('side-channel-list');\nvar getSideChannelMap = require('side-channel-map');\nvar getSideChannelWeakMap = require('side-channel-weakmap');\n\nvar makeChannel = getSideChannelWeakMap || getSideChannelMap || getSideChannelList;\n\n/** @type {import('.')} */\nmodule.exports = function getSideChannel() {\n\t/** @typedef {ReturnType} Channel */\n\n\t/** @type {Channel | undefined} */ var $channelData;\n\n\t/** @type {Channel} */\n\tvar channel = {\n\t\tassert: function (key) {\n\t\t\tif (!channel.has(key)) {\n\t\t\t\tthrow new $TypeError('Side channel does not contain ' + inspect(key));\n\t\t\t}\n\t\t},\n\t\t'delete': function (key) {\n\t\t\treturn !!$channelData && $channelData['delete'](key);\n\t\t},\n\t\tget: function (key) {\n\t\t\treturn $channelData && $channelData.get(key);\n\t\t},\n\t\thas: function (key) {\n\t\t\treturn !!$channelData && $channelData.has(key);\n\t\t},\n\t\tset: function (key, value) {\n\t\t\tif (!$channelData) {\n\t\t\t\t$channelData = makeChannel();\n\t\t\t}\n\n\t\t\t$channelData.set(key, value);\n\t\t}\n\t};\n\t// @ts-expect-error TODO: figure out why this is erroring\n\treturn channel;\n};\n","var ClientRequest = require('./lib/request')\nvar response = require('./lib/response')\nvar extend = require('xtend')\nvar statusCodes = require('builtin-status-codes')\nvar url = require('url')\n\nvar http = exports\n\nhttp.request = function (opts, cb) {\n\tif (typeof opts === 'string')\n\t\topts = url.parse(opts)\n\telse\n\t\topts = extend(opts)\n\n\t// Normally, the page is loaded from http or https, so not specifying a protocol\n\t// will result in a (valid) protocol-relative url. However, this won't work if\n\t// the protocol is something else, like 'file:'\n\tvar defaultProtocol = global.location.protocol.search(/^https?:$/) === -1 ? 'http:' : ''\n\n\tvar protocol = opts.protocol || defaultProtocol\n\tvar host = opts.hostname || opts.host\n\tvar port = opts.port\n\tvar path = opts.path || '/'\n\n\t// Necessary for IPv6 addresses\n\tif (host && host.indexOf(':') !== -1)\n\t\thost = '[' + host + ']'\n\n\t// This may be a relative url. The browser should always be able to interpret it correctly.\n\topts.url = (host ? (protocol + '//' + host) : '') + (port ? ':' + port : '') + path\n\topts.method = (opts.method || 'GET').toUpperCase()\n\topts.headers = opts.headers || {}\n\n\t// Also valid opts.auth, opts.mode\n\n\tvar req = new ClientRequest(opts)\n\tif (cb)\n\t\treq.on('response', cb)\n\treturn req\n}\n\nhttp.get = function get (opts, cb) {\n\tvar req = http.request(opts, cb)\n\treq.end()\n\treturn req\n}\n\nhttp.ClientRequest = ClientRequest\nhttp.IncomingMessage = response.IncomingMessage\n\nhttp.Agent = function () {}\nhttp.Agent.defaultMaxSockets = 4\n\nhttp.globalAgent = new http.Agent()\n\nhttp.STATUS_CODES = statusCodes\n\nhttp.METHODS = [\n\t'CHECKOUT',\n\t'CONNECT',\n\t'COPY',\n\t'DELETE',\n\t'GET',\n\t'HEAD',\n\t'LOCK',\n\t'M-SEARCH',\n\t'MERGE',\n\t'MKACTIVITY',\n\t'MKCOL',\n\t'MOVE',\n\t'NOTIFY',\n\t'OPTIONS',\n\t'PATCH',\n\t'POST',\n\t'PROPFIND',\n\t'PROPPATCH',\n\t'PURGE',\n\t'PUT',\n\t'REPORT',\n\t'SEARCH',\n\t'SUBSCRIBE',\n\t'TRACE',\n\t'UNLOCK',\n\t'UNSUBSCRIBE'\n]","exports.fetch = isFunction(global.fetch) && isFunction(global.ReadableStream)\n\nexports.writableStream = isFunction(global.WritableStream)\n\nexports.abortController = isFunction(global.AbortController)\n\n// The xhr request to example.com may violate some restrictive CSP configurations,\n// so if we're running in a browser that supports `fetch`, avoid calling getXHR()\n// and assume support for certain features below.\nvar xhr\nfunction getXHR () {\n\t// Cache the xhr value\n\tif (xhr !== undefined) return xhr\n\n\tif (global.XMLHttpRequest) {\n\t\txhr = new global.XMLHttpRequest()\n\t\t// If XDomainRequest is available (ie only, where xhr might not work\n\t\t// cross domain), use the page location. Otherwise use example.com\n\t\t// Note: this doesn't actually make an http request.\n\t\ttry {\n\t\t\txhr.open('GET', global.XDomainRequest ? '/' : 'https://example.com')\n\t\t} catch(e) {\n\t\t\txhr = null\n\t\t}\n\t} else {\n\t\t// Service workers don't have XHR\n\t\txhr = null\n\t}\n\treturn xhr\n}\n\nfunction checkTypeSupport (type) {\n\tvar xhr = getXHR()\n\tif (!xhr) return false\n\ttry {\n\t\txhr.responseType = type\n\t\treturn xhr.responseType === type\n\t} catch (e) {}\n\treturn false\n}\n\n// If fetch is supported, then arraybuffer will be supported too. Skip calling\n// checkTypeSupport(), since that calls getXHR().\nexports.arraybuffer = exports.fetch || checkTypeSupport('arraybuffer')\n\n// These next two tests unavoidably show warnings in Chrome. Since fetch will always\n// be used if it's available, just return false for these to avoid the warnings.\nexports.msstream = !exports.fetch && checkTypeSupport('ms-stream')\nexports.mozchunkedarraybuffer = !exports.fetch && checkTypeSupport('moz-chunked-arraybuffer')\n\n// If fetch is supported, then overrideMimeType will be supported too. Skip calling\n// getXHR().\nexports.overrideMimeType = exports.fetch || (getXHR() ? isFunction(getXHR().overrideMimeType) : false)\n\nfunction isFunction (value) {\n\treturn typeof value === 'function'\n}\n\nxhr = null // Help gc\n","var capability = require('./capability')\nvar inherits = require('inherits')\nvar response = require('./response')\nvar stream = require('readable-stream')\n\nvar IncomingMessage = response.IncomingMessage\nvar rStates = response.readyStates\n\nfunction decideMode (preferBinary, useFetch) {\n\tif (capability.fetch && useFetch) {\n\t\treturn 'fetch'\n\t} else if (capability.mozchunkedarraybuffer) {\n\t\treturn 'moz-chunked-arraybuffer'\n\t} else if (capability.msstream) {\n\t\treturn 'ms-stream'\n\t} else if (capability.arraybuffer && preferBinary) {\n\t\treturn 'arraybuffer'\n\t} else {\n\t\treturn 'text'\n\t}\n}\n\nvar ClientRequest = module.exports = function (opts) {\n\tvar self = this\n\tstream.Writable.call(self)\n\n\tself._opts = opts\n\tself._body = []\n\tself._headers = {}\n\tif (opts.auth)\n\t\tself.setHeader('Authorization', 'Basic ' + Buffer.from(opts.auth).toString('base64'))\n\tObject.keys(opts.headers).forEach(function (name) {\n\t\tself.setHeader(name, opts.headers[name])\n\t})\n\n\tvar preferBinary\n\tvar useFetch = true\n\tif (opts.mode === 'disable-fetch' || ('requestTimeout' in opts && !capability.abortController)) {\n\t\t// If the use of XHR should be preferred. Not typically needed.\n\t\tuseFetch = false\n\t\tpreferBinary = true\n\t} else if (opts.mode === 'prefer-streaming') {\n\t\t// If streaming is a high priority but binary compatibility and\n\t\t// the accuracy of the 'content-type' header aren't\n\t\tpreferBinary = false\n\t} else if (opts.mode === 'allow-wrong-content-type') {\n\t\t// If streaming is more important than preserving the 'content-type' header\n\t\tpreferBinary = !capability.overrideMimeType\n\t} else if (!opts.mode || opts.mode === 'default' || opts.mode === 'prefer-fast') {\n\t\t// Use binary if text streaming may corrupt data or the content-type header, or for speed\n\t\tpreferBinary = true\n\t} else {\n\t\tthrow new Error('Invalid value for opts.mode')\n\t}\n\tself._mode = decideMode(preferBinary, useFetch)\n\tself._fetchTimer = null\n\tself._socketTimeout = null\n\tself._socketTimer = null\n\n\tself.on('finish', function () {\n\t\tself._onFinish()\n\t})\n}\n\ninherits(ClientRequest, stream.Writable)\n\nClientRequest.prototype.setHeader = function (name, value) {\n\tvar self = this\n\tvar lowerName = name.toLowerCase()\n\t// This check is not necessary, but it prevents warnings from browsers about setting unsafe\n\t// headers. To be honest I'm not entirely sure hiding these warnings is a good thing, but\n\t// http-browserify did it, so I will too.\n\tif (unsafeHeaders.indexOf(lowerName) !== -1)\n\t\treturn\n\n\tself._headers[lowerName] = {\n\t\tname: name,\n\t\tvalue: value\n\t}\n}\n\nClientRequest.prototype.getHeader = function (name) {\n\tvar header = this._headers[name.toLowerCase()]\n\tif (header)\n\t\treturn header.value\n\treturn null\n}\n\nClientRequest.prototype.removeHeader = function (name) {\n\tvar self = this\n\tdelete self._headers[name.toLowerCase()]\n}\n\nClientRequest.prototype._onFinish = function () {\n\tvar self = this\n\n\tif (self._destroyed)\n\t\treturn\n\tvar opts = self._opts\n\n\tif ('timeout' in opts && opts.timeout !== 0) {\n\t\tself.setTimeout(opts.timeout)\n\t}\n\n\tvar headersObj = self._headers\n\tvar body = null\n\tif (opts.method !== 'GET' && opts.method !== 'HEAD') {\n body = new Blob(self._body, {\n type: (headersObj['content-type'] || {}).value || ''\n });\n }\n\n\t// create flattened list of headers\n\tvar headersList = []\n\tObject.keys(headersObj).forEach(function (keyName) {\n\t\tvar name = headersObj[keyName].name\n\t\tvar value = headersObj[keyName].value\n\t\tif (Array.isArray(value)) {\n\t\t\tvalue.forEach(function (v) {\n\t\t\t\theadersList.push([name, v])\n\t\t\t})\n\t\t} else {\n\t\t\theadersList.push([name, value])\n\t\t}\n\t})\n\n\tif (self._mode === 'fetch') {\n\t\tvar signal = null\n\t\tif (capability.abortController) {\n\t\t\tvar controller = new AbortController()\n\t\t\tsignal = controller.signal\n\t\t\tself._fetchAbortController = controller\n\n\t\t\tif ('requestTimeout' in opts && opts.requestTimeout !== 0) {\n\t\t\t\tself._fetchTimer = global.setTimeout(function () {\n\t\t\t\t\tself.emit('requestTimeout')\n\t\t\t\t\tif (self._fetchAbortController)\n\t\t\t\t\t\tself._fetchAbortController.abort()\n\t\t\t\t}, opts.requestTimeout)\n\t\t\t}\n\t\t}\n\n\t\tglobal.fetch(self._opts.url, {\n\t\t\tmethod: self._opts.method,\n\t\t\theaders: headersList,\n\t\t\tbody: body || undefined,\n\t\t\tmode: 'cors',\n\t\t\tcredentials: opts.withCredentials ? 'include' : 'same-origin',\n\t\t\tsignal: signal\n\t\t}).then(function (response) {\n\t\t\tself._fetchResponse = response\n\t\t\tself._resetTimers(false)\n\t\t\tself._connect()\n\t\t}, function (reason) {\n\t\t\tself._resetTimers(true)\n\t\t\tif (!self._destroyed)\n\t\t\t\tself.emit('error', reason)\n\t\t})\n\t} else {\n\t\tvar xhr = self._xhr = new global.XMLHttpRequest()\n\t\ttry {\n\t\t\txhr.open(self._opts.method, self._opts.url, true)\n\t\t} catch (err) {\n\t\t\tprocess.nextTick(function () {\n\t\t\t\tself.emit('error', err)\n\t\t\t})\n\t\t\treturn\n\t\t}\n\n\t\t// Can't set responseType on really old browsers\n\t\tif ('responseType' in xhr)\n\t\t\txhr.responseType = self._mode\n\n\t\tif ('withCredentials' in xhr)\n\t\t\txhr.withCredentials = !!opts.withCredentials\n\n\t\tif (self._mode === 'text' && 'overrideMimeType' in xhr)\n\t\t\txhr.overrideMimeType('text/plain; charset=x-user-defined')\n\n\t\tif ('requestTimeout' in opts) {\n\t\t\txhr.timeout = opts.requestTimeout\n\t\t\txhr.ontimeout = function () {\n\t\t\t\tself.emit('requestTimeout')\n\t\t\t}\n\t\t}\n\n\t\theadersList.forEach(function (header) {\n\t\t\txhr.setRequestHeader(header[0], header[1])\n\t\t})\n\n\t\tself._response = null\n\t\txhr.onreadystatechange = function () {\n\t\t\tswitch (xhr.readyState) {\n\t\t\t\tcase rStates.LOADING:\n\t\t\t\tcase rStates.DONE:\n\t\t\t\t\tself._onXHRProgress()\n\t\t\t\t\tbreak\n\t\t\t}\n\t\t}\n\t\t// Necessary for streaming in Firefox, since xhr.response is ONLY defined\n\t\t// in onprogress, not in onreadystatechange with xhr.readyState = 3\n\t\tif (self._mode === 'moz-chunked-arraybuffer') {\n\t\t\txhr.onprogress = function () {\n\t\t\t\tself._onXHRProgress()\n\t\t\t}\n\t\t}\n\n\t\txhr.onerror = function () {\n\t\t\tif (self._destroyed)\n\t\t\t\treturn\n\t\t\tself._resetTimers(true)\n\t\t\tself.emit('error', new Error('XHR error'))\n\t\t}\n\n\t\ttry {\n\t\t\txhr.send(body)\n\t\t} catch (err) {\n\t\t\tprocess.nextTick(function () {\n\t\t\t\tself.emit('error', err)\n\t\t\t})\n\t\t\treturn\n\t\t}\n\t}\n}\n\n/**\n * Checks if xhr.status is readable and non-zero, indicating no error.\n * Even though the spec says it should be available in readyState 3,\n * accessing it throws an exception in IE8\n */\nfunction statusValid (xhr) {\n\ttry {\n\t\tvar status = xhr.status\n\t\treturn (status !== null && status !== 0)\n\t} catch (e) {\n\t\treturn false\n\t}\n}\n\nClientRequest.prototype._onXHRProgress = function () {\n\tvar self = this\n\n\tself._resetTimers(false)\n\n\tif (!statusValid(self._xhr) || self._destroyed)\n\t\treturn\n\n\tif (!self._response)\n\t\tself._connect()\n\n\tself._response._onXHRProgress(self._resetTimers.bind(self))\n}\n\nClientRequest.prototype._connect = function () {\n\tvar self = this\n\n\tif (self._destroyed)\n\t\treturn\n\n\tself._response = new IncomingMessage(self._xhr, self._fetchResponse, self._mode, self._resetTimers.bind(self))\n\tself._response.on('error', function(err) {\n\t\tself.emit('error', err)\n\t})\n\n\tself.emit('response', self._response)\n}\n\nClientRequest.prototype._write = function (chunk, encoding, cb) {\n\tvar self = this\n\n\tself._body.push(chunk)\n\tcb()\n}\n\nClientRequest.prototype._resetTimers = function (done) {\n\tvar self = this\n\n\tglobal.clearTimeout(self._socketTimer)\n\tself._socketTimer = null\n\n\tif (done) {\n\t\tglobal.clearTimeout(self._fetchTimer)\n\t\tself._fetchTimer = null\n\t} else if (self._socketTimeout) {\n\t\tself._socketTimer = global.setTimeout(function () {\n\t\t\tself.emit('timeout')\n\t\t}, self._socketTimeout)\n\t}\n}\n\nClientRequest.prototype.abort = ClientRequest.prototype.destroy = function (err) {\n\tvar self = this\n\tself._destroyed = true\n\tself._resetTimers(true)\n\tif (self._response)\n\t\tself._response._destroyed = true\n\tif (self._xhr)\n\t\tself._xhr.abort()\n\telse if (self._fetchAbortController)\n\t\tself._fetchAbortController.abort()\n\n\tif (err)\n\t\tself.emit('error', err)\n}\n\nClientRequest.prototype.end = function (data, encoding, cb) {\n\tvar self = this\n\tif (typeof data === 'function') {\n\t\tcb = data\n\t\tdata = undefined\n\t}\n\n\tstream.Writable.prototype.end.call(self, data, encoding, cb)\n}\n\nClientRequest.prototype.setTimeout = function (timeout, cb) {\n\tvar self = this\n\n\tif (cb)\n\t\tself.once('timeout', cb)\n\n\tself._socketTimeout = timeout\n\tself._resetTimers(false)\n}\n\nClientRequest.prototype.flushHeaders = function () {}\nClientRequest.prototype.setNoDelay = function () {}\nClientRequest.prototype.setSocketKeepAlive = function () {}\n\n// Taken from http://www.w3.org/TR/XMLHttpRequest/#the-setrequestheader%28%29-method\nvar unsafeHeaders = [\n\t'accept-charset',\n\t'accept-encoding',\n\t'access-control-request-headers',\n\t'access-control-request-method',\n\t'connection',\n\t'content-length',\n\t'cookie',\n\t'cookie2',\n\t'date',\n\t'dnt',\n\t'expect',\n\t'host',\n\t'keep-alive',\n\t'origin',\n\t'referer',\n\t'te',\n\t'trailer',\n\t'transfer-encoding',\n\t'upgrade',\n\t'via'\n]\n","var capability = require('./capability')\nvar inherits = require('inherits')\nvar stream = require('readable-stream')\n\nvar rStates = exports.readyStates = {\n\tUNSENT: 0,\n\tOPENED: 1,\n\tHEADERS_RECEIVED: 2,\n\tLOADING: 3,\n\tDONE: 4\n}\n\nvar IncomingMessage = exports.IncomingMessage = function (xhr, response, mode, resetTimers) {\n\tvar self = this\n\tstream.Readable.call(self)\n\n\tself._mode = mode\n\tself.headers = {}\n\tself.rawHeaders = []\n\tself.trailers = {}\n\tself.rawTrailers = []\n\n\t// Fake the 'close' event, but only once 'end' fires\n\tself.on('end', function () {\n\t\t// The nextTick is necessary to prevent the 'request' module from causing an infinite loop\n\t\tprocess.nextTick(function () {\n\t\t\tself.emit('close')\n\t\t})\n\t})\n\n\tif (mode === 'fetch') {\n\t\tself._fetchResponse = response\n\n\t\tself.url = response.url\n\t\tself.statusCode = response.status\n\t\tself.statusMessage = response.statusText\n\t\t\n\t\tresponse.headers.forEach(function (header, key){\n\t\t\tself.headers[key.toLowerCase()] = header\n\t\t\tself.rawHeaders.push(key, header)\n\t\t})\n\n\t\tif (capability.writableStream) {\n\t\t\tvar writable = new WritableStream({\n\t\t\t\twrite: function (chunk) {\n\t\t\t\t\tresetTimers(false)\n\t\t\t\t\treturn new Promise(function (resolve, reject) {\n\t\t\t\t\t\tif (self._destroyed) {\n\t\t\t\t\t\t\treject()\n\t\t\t\t\t\t} else if(self.push(Buffer.from(chunk))) {\n\t\t\t\t\t\t\tresolve()\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tself._resumeFetch = resolve\n\t\t\t\t\t\t}\n\t\t\t\t\t})\n\t\t\t\t},\n\t\t\t\tclose: function () {\n\t\t\t\t\tresetTimers(true)\n\t\t\t\t\tif (!self._destroyed)\n\t\t\t\t\t\tself.push(null)\n\t\t\t\t},\n\t\t\t\tabort: function (err) {\n\t\t\t\t\tresetTimers(true)\n\t\t\t\t\tif (!self._destroyed)\n\t\t\t\t\t\tself.emit('error', err)\n\t\t\t\t}\n\t\t\t})\n\n\t\t\ttry {\n\t\t\t\tresponse.body.pipeTo(writable).catch(function (err) {\n\t\t\t\t\tresetTimers(true)\n\t\t\t\t\tif (!self._destroyed)\n\t\t\t\t\t\tself.emit('error', err)\n\t\t\t\t})\n\t\t\t\treturn\n\t\t\t} catch (e) {} // pipeTo method isn't defined. Can't find a better way to feature test this\n\t\t}\n\t\t// fallback for when writableStream or pipeTo aren't available\n\t\tvar reader = response.body.getReader()\n\t\tfunction read () {\n\t\t\treader.read().then(function (result) {\n\t\t\t\tif (self._destroyed)\n\t\t\t\t\treturn\n\t\t\t\tresetTimers(result.done)\n\t\t\t\tif (result.done) {\n\t\t\t\t\tself.push(null)\n\t\t\t\t\treturn\n\t\t\t\t}\n\t\t\t\tself.push(Buffer.from(result.value))\n\t\t\t\tread()\n\t\t\t}).catch(function (err) {\n\t\t\t\tresetTimers(true)\n\t\t\t\tif (!self._destroyed)\n\t\t\t\t\tself.emit('error', err)\n\t\t\t})\n\t\t}\n\t\tread()\n\t} else {\n\t\tself._xhr = xhr\n\t\tself._pos = 0\n\n\t\tself.url = xhr.responseURL\n\t\tself.statusCode = xhr.status\n\t\tself.statusMessage = xhr.statusText\n\t\tvar headers = xhr.getAllResponseHeaders().split(/\\r?\\n/)\n\t\theaders.forEach(function (header) {\n\t\t\tvar matches = header.match(/^([^:]+):\\s*(.*)/)\n\t\t\tif (matches) {\n\t\t\t\tvar key = matches[1].toLowerCase()\n\t\t\t\tif (key === 'set-cookie') {\n\t\t\t\t\tif (self.headers[key] === undefined) {\n\t\t\t\t\t\tself.headers[key] = []\n\t\t\t\t\t}\n\t\t\t\t\tself.headers[key].push(matches[2])\n\t\t\t\t} else if (self.headers[key] !== undefined) {\n\t\t\t\t\tself.headers[key] += ', ' + matches[2]\n\t\t\t\t} else {\n\t\t\t\t\tself.headers[key] = matches[2]\n\t\t\t\t}\n\t\t\t\tself.rawHeaders.push(matches[1], matches[2])\n\t\t\t}\n\t\t})\n\n\t\tself._charset = 'x-user-defined'\n\t\tif (!capability.overrideMimeType) {\n\t\t\tvar mimeType = self.rawHeaders['mime-type']\n\t\t\tif (mimeType) {\n\t\t\t\tvar charsetMatch = mimeType.match(/;\\s*charset=([^;])(;|$)/)\n\t\t\t\tif (charsetMatch) {\n\t\t\t\t\tself._charset = charsetMatch[1].toLowerCase()\n\t\t\t\t}\n\t\t\t}\n\t\t\tif (!self._charset)\n\t\t\t\tself._charset = 'utf-8' // best guess\n\t\t}\n\t}\n}\n\ninherits(IncomingMessage, stream.Readable)\n\nIncomingMessage.prototype._read = function () {\n\tvar self = this\n\n\tvar resolve = self._resumeFetch\n\tif (resolve) {\n\t\tself._resumeFetch = null\n\t\tresolve()\n\t}\n}\n\nIncomingMessage.prototype._onXHRProgress = function (resetTimers) {\n\tvar self = this\n\n\tvar xhr = self._xhr\n\n\tvar response = null\n\tswitch (self._mode) {\n\t\tcase 'text':\n\t\t\tresponse = xhr.responseText\n\t\t\tif (response.length > self._pos) {\n\t\t\t\tvar newData = response.substr(self._pos)\n\t\t\t\tif (self._charset === 'x-user-defined') {\n\t\t\t\t\tvar buffer = Buffer.alloc(newData.length)\n\t\t\t\t\tfor (var i = 0; i < newData.length; i++)\n\t\t\t\t\t\tbuffer[i] = newData.charCodeAt(i) & 0xff\n\n\t\t\t\t\tself.push(buffer)\n\t\t\t\t} else {\n\t\t\t\t\tself.push(newData, self._charset)\n\t\t\t\t}\n\t\t\t\tself._pos = response.length\n\t\t\t}\n\t\t\tbreak\n\t\tcase 'arraybuffer':\n\t\t\tif (xhr.readyState !== rStates.DONE || !xhr.response)\n\t\t\t\tbreak\n\t\t\tresponse = xhr.response\n\t\t\tself.push(Buffer.from(new Uint8Array(response)))\n\t\t\tbreak\n\t\tcase 'moz-chunked-arraybuffer': // take whole\n\t\t\tresponse = xhr.response\n\t\t\tif (xhr.readyState !== rStates.LOADING || !response)\n\t\t\t\tbreak\n\t\t\tself.push(Buffer.from(new Uint8Array(response)))\n\t\t\tbreak\n\t\tcase 'ms-stream':\n\t\t\tresponse = xhr.response\n\t\t\tif (xhr.readyState !== rStates.LOADING)\n\t\t\t\tbreak\n\t\t\tvar reader = new global.MSStreamReader()\n\t\t\treader.onprogress = function () {\n\t\t\t\tif (reader.result.byteLength > self._pos) {\n\t\t\t\t\tself.push(Buffer.from(new Uint8Array(reader.result.slice(self._pos))))\n\t\t\t\t\tself._pos = reader.result.byteLength\n\t\t\t\t}\n\t\t\t}\n\t\t\treader.onload = function () {\n\t\t\t\tresetTimers(true)\n\t\t\t\tself.push(null)\n\t\t\t}\n\t\t\t// reader.onerror = ??? // TODO: this\n\t\t\treader.readAsArrayBuffer(response)\n\t\t\tbreak\n\t}\n\n\t// The ms-stream case handles end separately in reader.onload()\n\tif (self._xhr.readyState === rStates.DONE && self._mode !== 'ms-stream') {\n\t\tresetTimers(true)\n\t\tself.push(null)\n\t}\n}\n","'use strict';\n\nfunction _inheritsLoose(subClass, superClass) { subClass.prototype = Object.create(superClass.prototype); subClass.prototype.constructor = subClass; subClass.__proto__ = superClass; }\n\nvar codes = {};\n\nfunction createErrorType(code, message, Base) {\n if (!Base) {\n Base = Error;\n }\n\n function getMessage(arg1, arg2, arg3) {\n if (typeof message === 'string') {\n return message;\n } else {\n return message(arg1, arg2, arg3);\n }\n }\n\n var NodeError =\n /*#__PURE__*/\n function (_Base) {\n _inheritsLoose(NodeError, _Base);\n\n function NodeError(arg1, arg2, arg3) {\n return _Base.call(this, getMessage(arg1, arg2, arg3)) || this;\n }\n\n return NodeError;\n }(Base);\n\n NodeError.prototype.name = Base.name;\n NodeError.prototype.code = code;\n codes[code] = NodeError;\n} // https://github.com/nodejs/node/blob/v10.8.0/lib/internal/errors.js\n\n\nfunction oneOf(expected, thing) {\n if (Array.isArray(expected)) {\n var len = expected.length;\n expected = expected.map(function (i) {\n return String(i);\n });\n\n if (len > 2) {\n return \"one of \".concat(thing, \" \").concat(expected.slice(0, len - 1).join(', '), \", or \") + expected[len - 1];\n } else if (len === 2) {\n return \"one of \".concat(thing, \" \").concat(expected[0], \" or \").concat(expected[1]);\n } else {\n return \"of \".concat(thing, \" \").concat(expected[0]);\n }\n } else {\n return \"of \".concat(thing, \" \").concat(String(expected));\n }\n} // https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/startsWith\n\n\nfunction startsWith(str, search, pos) {\n return str.substr(!pos || pos < 0 ? 0 : +pos, search.length) === search;\n} // https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/endsWith\n\n\nfunction endsWith(str, search, this_len) {\n if (this_len === undefined || this_len > str.length) {\n this_len = str.length;\n }\n\n return str.substring(this_len - search.length, this_len) === search;\n} // https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/includes\n\n\nfunction includes(str, search, start) {\n if (typeof start !== 'number') {\n start = 0;\n }\n\n if (start + search.length > str.length) {\n return false;\n } else {\n return str.indexOf(search, start) !== -1;\n }\n}\n\ncreateErrorType('ERR_INVALID_OPT_VALUE', function (name, value) {\n return 'The value \"' + value + '\" is invalid for option \"' + name + '\"';\n}, TypeError);\ncreateErrorType('ERR_INVALID_ARG_TYPE', function (name, expected, actual) {\n // determiner: 'must be' or 'must not be'\n var determiner;\n\n if (typeof expected === 'string' && startsWith(expected, 'not ')) {\n determiner = 'must not be';\n expected = expected.replace(/^not /, '');\n } else {\n determiner = 'must be';\n }\n\n var msg;\n\n if (endsWith(name, ' argument')) {\n // For cases like 'first argument'\n msg = \"The \".concat(name, \" \").concat(determiner, \" \").concat(oneOf(expected, 'type'));\n } else {\n var type = includes(name, '.') ? 'property' : 'argument';\n msg = \"The \\\"\".concat(name, \"\\\" \").concat(type, \" \").concat(determiner, \" \").concat(oneOf(expected, 'type'));\n }\n\n msg += \". Received type \".concat(typeof actual);\n return msg;\n}, TypeError);\ncreateErrorType('ERR_STREAM_PUSH_AFTER_EOF', 'stream.push() after EOF');\ncreateErrorType('ERR_METHOD_NOT_IMPLEMENTED', function (name) {\n return 'The ' + name + ' method is not implemented';\n});\ncreateErrorType('ERR_STREAM_PREMATURE_CLOSE', 'Premature close');\ncreateErrorType('ERR_STREAM_DESTROYED', function (name) {\n return 'Cannot call ' + name + ' after a stream was destroyed';\n});\ncreateErrorType('ERR_MULTIPLE_CALLBACK', 'Callback called multiple times');\ncreateErrorType('ERR_STREAM_CANNOT_PIPE', 'Cannot pipe, not readable');\ncreateErrorType('ERR_STREAM_WRITE_AFTER_END', 'write after end');\ncreateErrorType('ERR_STREAM_NULL_VALUES', 'May not write null values to stream', TypeError);\ncreateErrorType('ERR_UNKNOWN_ENCODING', function (arg) {\n return 'Unknown encoding: ' + arg;\n}, TypeError);\ncreateErrorType('ERR_STREAM_UNSHIFT_AFTER_END_EVENT', 'stream.unshift() after end event');\nmodule.exports.codes = codes;\n","// Copyright Joyent, Inc. and other Node contributors.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a\n// copy of this software and associated documentation files (the\n// \"Software\"), to deal in the Software without restriction, including\n// without limitation the rights to use, copy, modify, merge, publish,\n// distribute, sublicense, and/or sell copies of the Software, and to permit\n// persons to whom the Software is furnished to do so, subject to the\n// following conditions:\n//\n// The above copyright notice and this permission notice shall be included\n// in all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN\n// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR\n// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\n// USE OR OTHER DEALINGS IN THE SOFTWARE.\n\n// a duplex stream is just a stream that is both readable and writable.\n// Since JS doesn't have multiple prototypal inheritance, this class\n// prototypally inherits from Readable, and then parasitically from\n// Writable.\n\n'use strict';\n\n/**/\nvar objectKeys = Object.keys || function (obj) {\n var keys = [];\n for (var key in obj) keys.push(key);\n return keys;\n};\n/**/\n\nmodule.exports = Duplex;\nvar Readable = require('./_stream_readable');\nvar Writable = require('./_stream_writable');\nrequire('inherits')(Duplex, Readable);\n{\n // Allow the keys array to be GC'ed.\n var keys = objectKeys(Writable.prototype);\n for (var v = 0; v < keys.length; v++) {\n var method = keys[v];\n if (!Duplex.prototype[method]) Duplex.prototype[method] = Writable.prototype[method];\n }\n}\nfunction Duplex(options) {\n if (!(this instanceof Duplex)) return new Duplex(options);\n Readable.call(this, options);\n Writable.call(this, options);\n this.allowHalfOpen = true;\n if (options) {\n if (options.readable === false) this.readable = false;\n if (options.writable === false) this.writable = false;\n if (options.allowHalfOpen === false) {\n this.allowHalfOpen = false;\n this.once('end', onend);\n }\n }\n}\nObject.defineProperty(Duplex.prototype, 'writableHighWaterMark', {\n // making it explicit this property is not enumerable\n // because otherwise some prototype manipulation in\n // userland will fail\n enumerable: false,\n get: function get() {\n return this._writableState.highWaterMark;\n }\n});\nObject.defineProperty(Duplex.prototype, 'writableBuffer', {\n // making it explicit this property is not enumerable\n // because otherwise some prototype manipulation in\n // userland will fail\n enumerable: false,\n get: function get() {\n return this._writableState && this._writableState.getBuffer();\n }\n});\nObject.defineProperty(Duplex.prototype, 'writableLength', {\n // making it explicit this property is not enumerable\n // because otherwise some prototype manipulation in\n // userland will fail\n enumerable: false,\n get: function get() {\n return this._writableState.length;\n }\n});\n\n// the no-half-open enforcer\nfunction onend() {\n // If the writable side ended, then we're ok.\n if (this._writableState.ended) return;\n\n // no more data can be written.\n // But allow more writes to happen in this tick.\n process.nextTick(onEndNT, this);\n}\nfunction onEndNT(self) {\n self.end();\n}\nObject.defineProperty(Duplex.prototype, 'destroyed', {\n // making it explicit this property is not enumerable\n // because otherwise some prototype manipulation in\n // userland will fail\n enumerable: false,\n get: function get() {\n if (this._readableState === undefined || this._writableState === undefined) {\n return false;\n }\n return this._readableState.destroyed && this._writableState.destroyed;\n },\n set: function set(value) {\n // we ignore the value if the stream\n // has not been initialized yet\n if (this._readableState === undefined || this._writableState === undefined) {\n return;\n }\n\n // backward compatibility, the user is explicitly\n // managing destroyed\n this._readableState.destroyed = value;\n this._writableState.destroyed = value;\n }\n});","// Copyright Joyent, Inc. and other Node contributors.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a\n// copy of this software and associated documentation files (the\n// \"Software\"), to deal in the Software without restriction, including\n// without limitation the rights to use, copy, modify, merge, publish,\n// distribute, sublicense, and/or sell copies of the Software, and to permit\n// persons to whom the Software is furnished to do so, subject to the\n// following conditions:\n//\n// The above copyright notice and this permission notice shall be included\n// in all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN\n// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR\n// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\n// USE OR OTHER DEALINGS IN THE SOFTWARE.\n\n// a passthrough stream.\n// basically just the most minimal sort of Transform stream.\n// Every written chunk gets output as-is.\n\n'use strict';\n\nmodule.exports = PassThrough;\nvar Transform = require('./_stream_transform');\nrequire('inherits')(PassThrough, Transform);\nfunction PassThrough(options) {\n if (!(this instanceof PassThrough)) return new PassThrough(options);\n Transform.call(this, options);\n}\nPassThrough.prototype._transform = function (chunk, encoding, cb) {\n cb(null, chunk);\n};","// Copyright Joyent, Inc. and other Node contributors.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a\n// copy of this software and associated documentation files (the\n// \"Software\"), to deal in the Software without restriction, including\n// without limitation the rights to use, copy, modify, merge, publish,\n// distribute, sublicense, and/or sell copies of the Software, and to permit\n// persons to whom the Software is furnished to do so, subject to the\n// following conditions:\n//\n// The above copyright notice and this permission notice shall be included\n// in all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN\n// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR\n// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\n// USE OR OTHER DEALINGS IN THE SOFTWARE.\n\n'use strict';\n\nmodule.exports = Readable;\n\n/**/\nvar Duplex;\n/**/\n\nReadable.ReadableState = ReadableState;\n\n/**/\nvar EE = require('events').EventEmitter;\nvar EElistenerCount = function EElistenerCount(emitter, type) {\n return emitter.listeners(type).length;\n};\n/**/\n\n/**/\nvar Stream = require('./internal/streams/stream');\n/**/\n\nvar Buffer = require('buffer').Buffer;\nvar OurUint8Array = (typeof global !== 'undefined' ? global : typeof window !== 'undefined' ? window : typeof self !== 'undefined' ? self : {}).Uint8Array || function () {};\nfunction _uint8ArrayToBuffer(chunk) {\n return Buffer.from(chunk);\n}\nfunction _isUint8Array(obj) {\n return Buffer.isBuffer(obj) || obj instanceof OurUint8Array;\n}\n\n/**/\nvar debugUtil = require('util');\nvar debug;\nif (debugUtil && debugUtil.debuglog) {\n debug = debugUtil.debuglog('stream');\n} else {\n debug = function debug() {};\n}\n/**/\n\nvar BufferList = require('./internal/streams/buffer_list');\nvar destroyImpl = require('./internal/streams/destroy');\nvar _require = require('./internal/streams/state'),\n getHighWaterMark = _require.getHighWaterMark;\nvar _require$codes = require('../errors').codes,\n ERR_INVALID_ARG_TYPE = _require$codes.ERR_INVALID_ARG_TYPE,\n ERR_STREAM_PUSH_AFTER_EOF = _require$codes.ERR_STREAM_PUSH_AFTER_EOF,\n ERR_METHOD_NOT_IMPLEMENTED = _require$codes.ERR_METHOD_NOT_IMPLEMENTED,\n ERR_STREAM_UNSHIFT_AFTER_END_EVENT = _require$codes.ERR_STREAM_UNSHIFT_AFTER_END_EVENT;\n\n// Lazy loaded to improve the startup performance.\nvar StringDecoder;\nvar createReadableStreamAsyncIterator;\nvar from;\nrequire('inherits')(Readable, Stream);\nvar errorOrDestroy = destroyImpl.errorOrDestroy;\nvar kProxyEvents = ['error', 'close', 'destroy', 'pause', 'resume'];\nfunction prependListener(emitter, event, fn) {\n // Sadly this is not cacheable as some libraries bundle their own\n // event emitter implementation with them.\n if (typeof emitter.prependListener === 'function') return emitter.prependListener(event, fn);\n\n // This is a hack to make sure that our error handler is attached before any\n // userland ones. NEVER DO THIS. This is here only because this code needs\n // to continue to work with older versions of Node.js that do not include\n // the prependListener() method. The goal is to eventually remove this hack.\n if (!emitter._events || !emitter._events[event]) emitter.on(event, fn);else if (Array.isArray(emitter._events[event])) emitter._events[event].unshift(fn);else emitter._events[event] = [fn, emitter._events[event]];\n}\nfunction ReadableState(options, stream, isDuplex) {\n Duplex = Duplex || require('./_stream_duplex');\n options = options || {};\n\n // Duplex streams are both readable and writable, but share\n // the same options object.\n // However, some cases require setting options to different\n // values for the readable and the writable sides of the duplex stream.\n // These options can be provided separately as readableXXX and writableXXX.\n if (typeof isDuplex !== 'boolean') isDuplex = stream instanceof Duplex;\n\n // object stream flag. Used to make read(n) ignore n and to\n // make all the buffer merging and length checks go away\n this.objectMode = !!options.objectMode;\n if (isDuplex) this.objectMode = this.objectMode || !!options.readableObjectMode;\n\n // the point at which it stops calling _read() to fill the buffer\n // Note: 0 is a valid value, means \"don't call _read preemptively ever\"\n this.highWaterMark = getHighWaterMark(this, options, 'readableHighWaterMark', isDuplex);\n\n // A linked list is used to store data chunks instead of an array because the\n // linked list can remove elements from the beginning faster than\n // array.shift()\n this.buffer = new BufferList();\n this.length = 0;\n this.pipes = null;\n this.pipesCount = 0;\n this.flowing = null;\n this.ended = false;\n this.endEmitted = false;\n this.reading = false;\n\n // a flag to be able to tell if the event 'readable'/'data' is emitted\n // immediately, or on a later tick. We set this to true at first, because\n // any actions that shouldn't happen until \"later\" should generally also\n // not happen before the first read call.\n this.sync = true;\n\n // whenever we return null, then we set a flag to say\n // that we're awaiting a 'readable' event emission.\n this.needReadable = false;\n this.emittedReadable = false;\n this.readableListening = false;\n this.resumeScheduled = false;\n this.paused = true;\n\n // Should close be emitted on destroy. Defaults to true.\n this.emitClose = options.emitClose !== false;\n\n // Should .destroy() be called after 'end' (and potentially 'finish')\n this.autoDestroy = !!options.autoDestroy;\n\n // has it been destroyed\n this.destroyed = false;\n\n // Crypto is kind of old and crusty. Historically, its default string\n // encoding is 'binary' so we have to make this configurable.\n // Everything else in the universe uses 'utf8', though.\n this.defaultEncoding = options.defaultEncoding || 'utf8';\n\n // the number of writers that are awaiting a drain event in .pipe()s\n this.awaitDrain = 0;\n\n // if true, a maybeReadMore has been scheduled\n this.readingMore = false;\n this.decoder = null;\n this.encoding = null;\n if (options.encoding) {\n if (!StringDecoder) StringDecoder = require('string_decoder/').StringDecoder;\n this.decoder = new StringDecoder(options.encoding);\n this.encoding = options.encoding;\n }\n}\nfunction Readable(options) {\n Duplex = Duplex || require('./_stream_duplex');\n if (!(this instanceof Readable)) return new Readable(options);\n\n // Checking for a Stream.Duplex instance is faster here instead of inside\n // the ReadableState constructor, at least with V8 6.5\n var isDuplex = this instanceof Duplex;\n this._readableState = new ReadableState(options, this, isDuplex);\n\n // legacy\n this.readable = true;\n if (options) {\n if (typeof options.read === 'function') this._read = options.read;\n if (typeof options.destroy === 'function') this._destroy = options.destroy;\n }\n Stream.call(this);\n}\nObject.defineProperty(Readable.prototype, 'destroyed', {\n // making it explicit this property is not enumerable\n // because otherwise some prototype manipulation in\n // userland will fail\n enumerable: false,\n get: function get() {\n if (this._readableState === undefined) {\n return false;\n }\n return this._readableState.destroyed;\n },\n set: function set(value) {\n // we ignore the value if the stream\n // has not been initialized yet\n if (!this._readableState) {\n return;\n }\n\n // backward compatibility, the user is explicitly\n // managing destroyed\n this._readableState.destroyed = value;\n }\n});\nReadable.prototype.destroy = destroyImpl.destroy;\nReadable.prototype._undestroy = destroyImpl.undestroy;\nReadable.prototype._destroy = function (err, cb) {\n cb(err);\n};\n\n// Manually shove something into the read() buffer.\n// This returns true if the highWaterMark has not been hit yet,\n// similar to how Writable.write() returns true if you should\n// write() some more.\nReadable.prototype.push = function (chunk, encoding) {\n var state = this._readableState;\n var skipChunkCheck;\n if (!state.objectMode) {\n if (typeof chunk === 'string') {\n encoding = encoding || state.defaultEncoding;\n if (encoding !== state.encoding) {\n chunk = Buffer.from(chunk, encoding);\n encoding = '';\n }\n skipChunkCheck = true;\n }\n } else {\n skipChunkCheck = true;\n }\n return readableAddChunk(this, chunk, encoding, false, skipChunkCheck);\n};\n\n// Unshift should *always* be something directly out of read()\nReadable.prototype.unshift = function (chunk) {\n return readableAddChunk(this, chunk, null, true, false);\n};\nfunction readableAddChunk(stream, chunk, encoding, addToFront, skipChunkCheck) {\n debug('readableAddChunk', chunk);\n var state = stream._readableState;\n if (chunk === null) {\n state.reading = false;\n onEofChunk(stream, state);\n } else {\n var er;\n if (!skipChunkCheck) er = chunkInvalid(state, chunk);\n if (er) {\n errorOrDestroy(stream, er);\n } else if (state.objectMode || chunk && chunk.length > 0) {\n if (typeof chunk !== 'string' && !state.objectMode && Object.getPrototypeOf(chunk) !== Buffer.prototype) {\n chunk = _uint8ArrayToBuffer(chunk);\n }\n if (addToFront) {\n if (state.endEmitted) errorOrDestroy(stream, new ERR_STREAM_UNSHIFT_AFTER_END_EVENT());else addChunk(stream, state, chunk, true);\n } else if (state.ended) {\n errorOrDestroy(stream, new ERR_STREAM_PUSH_AFTER_EOF());\n } else if (state.destroyed) {\n return false;\n } else {\n state.reading = false;\n if (state.decoder && !encoding) {\n chunk = state.decoder.write(chunk);\n if (state.objectMode || chunk.length !== 0) addChunk(stream, state, chunk, false);else maybeReadMore(stream, state);\n } else {\n addChunk(stream, state, chunk, false);\n }\n }\n } else if (!addToFront) {\n state.reading = false;\n maybeReadMore(stream, state);\n }\n }\n\n // We can push more data if we are below the highWaterMark.\n // Also, if we have no data yet, we can stand some more bytes.\n // This is to work around cases where hwm=0, such as the repl.\n return !state.ended && (state.length < state.highWaterMark || state.length === 0);\n}\nfunction addChunk(stream, state, chunk, addToFront) {\n if (state.flowing && state.length === 0 && !state.sync) {\n state.awaitDrain = 0;\n stream.emit('data', chunk);\n } else {\n // update the buffer info.\n state.length += state.objectMode ? 1 : chunk.length;\n if (addToFront) state.buffer.unshift(chunk);else state.buffer.push(chunk);\n if (state.needReadable) emitReadable(stream);\n }\n maybeReadMore(stream, state);\n}\nfunction chunkInvalid(state, chunk) {\n var er;\n if (!_isUint8Array(chunk) && typeof chunk !== 'string' && chunk !== undefined && !state.objectMode) {\n er = new ERR_INVALID_ARG_TYPE('chunk', ['string', 'Buffer', 'Uint8Array'], chunk);\n }\n return er;\n}\nReadable.prototype.isPaused = function () {\n return this._readableState.flowing === false;\n};\n\n// backwards compatibility.\nReadable.prototype.setEncoding = function (enc) {\n if (!StringDecoder) StringDecoder = require('string_decoder/').StringDecoder;\n var decoder = new StringDecoder(enc);\n this._readableState.decoder = decoder;\n // If setEncoding(null), decoder.encoding equals utf8\n this._readableState.encoding = this._readableState.decoder.encoding;\n\n // Iterate over current buffer to convert already stored Buffers:\n var p = this._readableState.buffer.head;\n var content = '';\n while (p !== null) {\n content += decoder.write(p.data);\n p = p.next;\n }\n this._readableState.buffer.clear();\n if (content !== '') this._readableState.buffer.push(content);\n this._readableState.length = content.length;\n return this;\n};\n\n// Don't raise the hwm > 1GB\nvar MAX_HWM = 0x40000000;\nfunction computeNewHighWaterMark(n) {\n if (n >= MAX_HWM) {\n // TODO(ronag): Throw ERR_VALUE_OUT_OF_RANGE.\n n = MAX_HWM;\n } else {\n // Get the next highest power of 2 to prevent increasing hwm excessively in\n // tiny amounts\n n--;\n n |= n >>> 1;\n n |= n >>> 2;\n n |= n >>> 4;\n n |= n >>> 8;\n n |= n >>> 16;\n n++;\n }\n return n;\n}\n\n// This function is designed to be inlinable, so please take care when making\n// changes to the function body.\nfunction howMuchToRead(n, state) {\n if (n <= 0 || state.length === 0 && state.ended) return 0;\n if (state.objectMode) return 1;\n if (n !== n) {\n // Only flow one buffer at a time\n if (state.flowing && state.length) return state.buffer.head.data.length;else return state.length;\n }\n // If we're asking for more than the current hwm, then raise the hwm.\n if (n > state.highWaterMark) state.highWaterMark = computeNewHighWaterMark(n);\n if (n <= state.length) return n;\n // Don't have enough\n if (!state.ended) {\n state.needReadable = true;\n return 0;\n }\n return state.length;\n}\n\n// you can override either this method, or the async _read(n) below.\nReadable.prototype.read = function (n) {\n debug('read', n);\n n = parseInt(n, 10);\n var state = this._readableState;\n var nOrig = n;\n if (n !== 0) state.emittedReadable = false;\n\n // if we're doing read(0) to trigger a readable event, but we\n // already have a bunch of data in the buffer, then just trigger\n // the 'readable' event and move on.\n if (n === 0 && state.needReadable && ((state.highWaterMark !== 0 ? state.length >= state.highWaterMark : state.length > 0) || state.ended)) {\n debug('read: emitReadable', state.length, state.ended);\n if (state.length === 0 && state.ended) endReadable(this);else emitReadable(this);\n return null;\n }\n n = howMuchToRead(n, state);\n\n // if we've ended, and we're now clear, then finish it up.\n if (n === 0 && state.ended) {\n if (state.length === 0) endReadable(this);\n return null;\n }\n\n // All the actual chunk generation logic needs to be\n // *below* the call to _read. The reason is that in certain\n // synthetic stream cases, such as passthrough streams, _read\n // may be a completely synchronous operation which may change\n // the state of the read buffer, providing enough data when\n // before there was *not* enough.\n //\n // So, the steps are:\n // 1. Figure out what the state of things will be after we do\n // a read from the buffer.\n //\n // 2. If that resulting state will trigger a _read, then call _read.\n // Note that this may be asynchronous, or synchronous. Yes, it is\n // deeply ugly to write APIs this way, but that still doesn't mean\n // that the Readable class should behave improperly, as streams are\n // designed to be sync/async agnostic.\n // Take note if the _read call is sync or async (ie, if the read call\n // has returned yet), so that we know whether or not it's safe to emit\n // 'readable' etc.\n //\n // 3. Actually pull the requested chunks out of the buffer and return.\n\n // if we need a readable event, then we need to do some reading.\n var doRead = state.needReadable;\n debug('need readable', doRead);\n\n // if we currently have less than the highWaterMark, then also read some\n if (state.length === 0 || state.length - n < state.highWaterMark) {\n doRead = true;\n debug('length less than watermark', doRead);\n }\n\n // however, if we've ended, then there's no point, and if we're already\n // reading, then it's unnecessary.\n if (state.ended || state.reading) {\n doRead = false;\n debug('reading or ended', doRead);\n } else if (doRead) {\n debug('do read');\n state.reading = true;\n state.sync = true;\n // if the length is currently zero, then we *need* a readable event.\n if (state.length === 0) state.needReadable = true;\n // call internal read method\n this._read(state.highWaterMark);\n state.sync = false;\n // If _read pushed data synchronously, then `reading` will be false,\n // and we need to re-evaluate how much data we can return to the user.\n if (!state.reading) n = howMuchToRead(nOrig, state);\n }\n var ret;\n if (n > 0) ret = fromList(n, state);else ret = null;\n if (ret === null) {\n state.needReadable = state.length <= state.highWaterMark;\n n = 0;\n } else {\n state.length -= n;\n state.awaitDrain = 0;\n }\n if (state.length === 0) {\n // If we have nothing in the buffer, then we want to know\n // as soon as we *do* get something into the buffer.\n if (!state.ended) state.needReadable = true;\n\n // If we tried to read() past the EOF, then emit end on the next tick.\n if (nOrig !== n && state.ended) endReadable(this);\n }\n if (ret !== null) this.emit('data', ret);\n return ret;\n};\nfunction onEofChunk(stream, state) {\n debug('onEofChunk');\n if (state.ended) return;\n if (state.decoder) {\n var chunk = state.decoder.end();\n if (chunk && chunk.length) {\n state.buffer.push(chunk);\n state.length += state.objectMode ? 1 : chunk.length;\n }\n }\n state.ended = true;\n if (state.sync) {\n // if we are sync, wait until next tick to emit the data.\n // Otherwise we risk emitting data in the flow()\n // the readable code triggers during a read() call\n emitReadable(stream);\n } else {\n // emit 'readable' now to make sure it gets picked up.\n state.needReadable = false;\n if (!state.emittedReadable) {\n state.emittedReadable = true;\n emitReadable_(stream);\n }\n }\n}\n\n// Don't emit readable right away in sync mode, because this can trigger\n// another read() call => stack overflow. This way, it might trigger\n// a nextTick recursion warning, but that's not so bad.\nfunction emitReadable(stream) {\n var state = stream._readableState;\n debug('emitReadable', state.needReadable, state.emittedReadable);\n state.needReadable = false;\n if (!state.emittedReadable) {\n debug('emitReadable', state.flowing);\n state.emittedReadable = true;\n process.nextTick(emitReadable_, stream);\n }\n}\nfunction emitReadable_(stream) {\n var state = stream._readableState;\n debug('emitReadable_', state.destroyed, state.length, state.ended);\n if (!state.destroyed && (state.length || state.ended)) {\n stream.emit('readable');\n state.emittedReadable = false;\n }\n\n // The stream needs another readable event if\n // 1. It is not flowing, as the flow mechanism will take\n // care of it.\n // 2. It is not ended.\n // 3. It is below the highWaterMark, so we can schedule\n // another readable later.\n state.needReadable = !state.flowing && !state.ended && state.length <= state.highWaterMark;\n flow(stream);\n}\n\n// at this point, the user has presumably seen the 'readable' event,\n// and called read() to consume some data. that may have triggered\n// in turn another _read(n) call, in which case reading = true if\n// it's in progress.\n// However, if we're not ended, or reading, and the length < hwm,\n// then go ahead and try to read some more preemptively.\nfunction maybeReadMore(stream, state) {\n if (!state.readingMore) {\n state.readingMore = true;\n process.nextTick(maybeReadMore_, stream, state);\n }\n}\nfunction maybeReadMore_(stream, state) {\n // Attempt to read more data if we should.\n //\n // The conditions for reading more data are (one of):\n // - Not enough data buffered (state.length < state.highWaterMark). The loop\n // is responsible for filling the buffer with enough data if such data\n // is available. If highWaterMark is 0 and we are not in the flowing mode\n // we should _not_ attempt to buffer any extra data. We'll get more data\n // when the stream consumer calls read() instead.\n // - No data in the buffer, and the stream is in flowing mode. In this mode\n // the loop below is responsible for ensuring read() is called. Failing to\n // call read here would abort the flow and there's no other mechanism for\n // continuing the flow if the stream consumer has just subscribed to the\n // 'data' event.\n //\n // In addition to the above conditions to keep reading data, the following\n // conditions prevent the data from being read:\n // - The stream has ended (state.ended).\n // - There is already a pending 'read' operation (state.reading). This is a\n // case where the the stream has called the implementation defined _read()\n // method, but they are processing the call asynchronously and have _not_\n // called push() with new data. In this case we skip performing more\n // read()s. The execution ends in this method again after the _read() ends\n // up calling push() with more data.\n while (!state.reading && !state.ended && (state.length < state.highWaterMark || state.flowing && state.length === 0)) {\n var len = state.length;\n debug('maybeReadMore read 0');\n stream.read(0);\n if (len === state.length)\n // didn't get any data, stop spinning.\n break;\n }\n state.readingMore = false;\n}\n\n// abstract method. to be overridden in specific implementation classes.\n// call cb(er, data) where data is <= n in length.\n// for virtual (non-string, non-buffer) streams, \"length\" is somewhat\n// arbitrary, and perhaps not very meaningful.\nReadable.prototype._read = function (n) {\n errorOrDestroy(this, new ERR_METHOD_NOT_IMPLEMENTED('_read()'));\n};\nReadable.prototype.pipe = function (dest, pipeOpts) {\n var src = this;\n var state = this._readableState;\n switch (state.pipesCount) {\n case 0:\n state.pipes = dest;\n break;\n case 1:\n state.pipes = [state.pipes, dest];\n break;\n default:\n state.pipes.push(dest);\n break;\n }\n state.pipesCount += 1;\n debug('pipe count=%d opts=%j', state.pipesCount, pipeOpts);\n var doEnd = (!pipeOpts || pipeOpts.end !== false) && dest !== process.stdout && dest !== process.stderr;\n var endFn = doEnd ? onend : unpipe;\n if (state.endEmitted) process.nextTick(endFn);else src.once('end', endFn);\n dest.on('unpipe', onunpipe);\n function onunpipe(readable, unpipeInfo) {\n debug('onunpipe');\n if (readable === src) {\n if (unpipeInfo && unpipeInfo.hasUnpiped === false) {\n unpipeInfo.hasUnpiped = true;\n cleanup();\n }\n }\n }\n function onend() {\n debug('onend');\n dest.end();\n }\n\n // when the dest drains, it reduces the awaitDrain counter\n // on the source. This would be more elegant with a .once()\n // handler in flow(), but adding and removing repeatedly is\n // too slow.\n var ondrain = pipeOnDrain(src);\n dest.on('drain', ondrain);\n var cleanedUp = false;\n function cleanup() {\n debug('cleanup');\n // cleanup event handlers once the pipe is broken\n dest.removeListener('close', onclose);\n dest.removeListener('finish', onfinish);\n dest.removeListener('drain', ondrain);\n dest.removeListener('error', onerror);\n dest.removeListener('unpipe', onunpipe);\n src.removeListener('end', onend);\n src.removeListener('end', unpipe);\n src.removeListener('data', ondata);\n cleanedUp = true;\n\n // if the reader is waiting for a drain event from this\n // specific writer, then it would cause it to never start\n // flowing again.\n // So, if this is awaiting a drain, then we just call it now.\n // If we don't know, then assume that we are waiting for one.\n if (state.awaitDrain && (!dest._writableState || dest._writableState.needDrain)) ondrain();\n }\n src.on('data', ondata);\n function ondata(chunk) {\n debug('ondata');\n var ret = dest.write(chunk);\n debug('dest.write', ret);\n if (ret === false) {\n // If the user unpiped during `dest.write()`, it is possible\n // to get stuck in a permanently paused state if that write\n // also returned false.\n // => Check whether `dest` is still a piping destination.\n if ((state.pipesCount === 1 && state.pipes === dest || state.pipesCount > 1 && indexOf(state.pipes, dest) !== -1) && !cleanedUp) {\n debug('false write response, pause', state.awaitDrain);\n state.awaitDrain++;\n }\n src.pause();\n }\n }\n\n // if the dest has an error, then stop piping into it.\n // however, don't suppress the throwing behavior for this.\n function onerror(er) {\n debug('onerror', er);\n unpipe();\n dest.removeListener('error', onerror);\n if (EElistenerCount(dest, 'error') === 0) errorOrDestroy(dest, er);\n }\n\n // Make sure our error handler is attached before userland ones.\n prependListener(dest, 'error', onerror);\n\n // Both close and finish should trigger unpipe, but only once.\n function onclose() {\n dest.removeListener('finish', onfinish);\n unpipe();\n }\n dest.once('close', onclose);\n function onfinish() {\n debug('onfinish');\n dest.removeListener('close', onclose);\n unpipe();\n }\n dest.once('finish', onfinish);\n function unpipe() {\n debug('unpipe');\n src.unpipe(dest);\n }\n\n // tell the dest that it's being piped to\n dest.emit('pipe', src);\n\n // start the flow if it hasn't been started already.\n if (!state.flowing) {\n debug('pipe resume');\n src.resume();\n }\n return dest;\n};\nfunction pipeOnDrain(src) {\n return function pipeOnDrainFunctionResult() {\n var state = src._readableState;\n debug('pipeOnDrain', state.awaitDrain);\n if (state.awaitDrain) state.awaitDrain--;\n if (state.awaitDrain === 0 && EElistenerCount(src, 'data')) {\n state.flowing = true;\n flow(src);\n }\n };\n}\nReadable.prototype.unpipe = function (dest) {\n var state = this._readableState;\n var unpipeInfo = {\n hasUnpiped: false\n };\n\n // if we're not piping anywhere, then do nothing.\n if (state.pipesCount === 0) return this;\n\n // just one destination. most common case.\n if (state.pipesCount === 1) {\n // passed in one, but it's not the right one.\n if (dest && dest !== state.pipes) return this;\n if (!dest) dest = state.pipes;\n\n // got a match.\n state.pipes = null;\n state.pipesCount = 0;\n state.flowing = false;\n if (dest) dest.emit('unpipe', this, unpipeInfo);\n return this;\n }\n\n // slow case. multiple pipe destinations.\n\n if (!dest) {\n // remove all.\n var dests = state.pipes;\n var len = state.pipesCount;\n state.pipes = null;\n state.pipesCount = 0;\n state.flowing = false;\n for (var i = 0; i < len; i++) dests[i].emit('unpipe', this, {\n hasUnpiped: false\n });\n return this;\n }\n\n // try to find the right one.\n var index = indexOf(state.pipes, dest);\n if (index === -1) return this;\n state.pipes.splice(index, 1);\n state.pipesCount -= 1;\n if (state.pipesCount === 1) state.pipes = state.pipes[0];\n dest.emit('unpipe', this, unpipeInfo);\n return this;\n};\n\n// set up data events if they are asked for\n// Ensure readable listeners eventually get something\nReadable.prototype.on = function (ev, fn) {\n var res = Stream.prototype.on.call(this, ev, fn);\n var state = this._readableState;\n if (ev === 'data') {\n // update readableListening so that resume() may be a no-op\n // a few lines down. This is needed to support once('readable').\n state.readableListening = this.listenerCount('readable') > 0;\n\n // Try start flowing on next tick if stream isn't explicitly paused\n if (state.flowing !== false) this.resume();\n } else if (ev === 'readable') {\n if (!state.endEmitted && !state.readableListening) {\n state.readableListening = state.needReadable = true;\n state.flowing = false;\n state.emittedReadable = false;\n debug('on readable', state.length, state.reading);\n if (state.length) {\n emitReadable(this);\n } else if (!state.reading) {\n process.nextTick(nReadingNextTick, this);\n }\n }\n }\n return res;\n};\nReadable.prototype.addListener = Readable.prototype.on;\nReadable.prototype.removeListener = function (ev, fn) {\n var res = Stream.prototype.removeListener.call(this, ev, fn);\n if (ev === 'readable') {\n // We need to check if there is someone still listening to\n // readable and reset the state. However this needs to happen\n // after readable has been emitted but before I/O (nextTick) to\n // support once('readable', fn) cycles. This means that calling\n // resume within the same tick will have no\n // effect.\n process.nextTick(updateReadableListening, this);\n }\n return res;\n};\nReadable.prototype.removeAllListeners = function (ev) {\n var res = Stream.prototype.removeAllListeners.apply(this, arguments);\n if (ev === 'readable' || ev === undefined) {\n // We need to check if there is someone still listening to\n // readable and reset the state. However this needs to happen\n // after readable has been emitted but before I/O (nextTick) to\n // support once('readable', fn) cycles. This means that calling\n // resume within the same tick will have no\n // effect.\n process.nextTick(updateReadableListening, this);\n }\n return res;\n};\nfunction updateReadableListening(self) {\n var state = self._readableState;\n state.readableListening = self.listenerCount('readable') > 0;\n if (state.resumeScheduled && !state.paused) {\n // flowing needs to be set to true now, otherwise\n // the upcoming resume will not flow.\n state.flowing = true;\n\n // crude way to check if we should resume\n } else if (self.listenerCount('data') > 0) {\n self.resume();\n }\n}\nfunction nReadingNextTick(self) {\n debug('readable nexttick read 0');\n self.read(0);\n}\n\n// pause() and resume() are remnants of the legacy readable stream API\n// If the user uses them, then switch into old mode.\nReadable.prototype.resume = function () {\n var state = this._readableState;\n if (!state.flowing) {\n debug('resume');\n // we flow only if there is no one listening\n // for readable, but we still have to call\n // resume()\n state.flowing = !state.readableListening;\n resume(this, state);\n }\n state.paused = false;\n return this;\n};\nfunction resume(stream, state) {\n if (!state.resumeScheduled) {\n state.resumeScheduled = true;\n process.nextTick(resume_, stream, state);\n }\n}\nfunction resume_(stream, state) {\n debug('resume', state.reading);\n if (!state.reading) {\n stream.read(0);\n }\n state.resumeScheduled = false;\n stream.emit('resume');\n flow(stream);\n if (state.flowing && !state.reading) stream.read(0);\n}\nReadable.prototype.pause = function () {\n debug('call pause flowing=%j', this._readableState.flowing);\n if (this._readableState.flowing !== false) {\n debug('pause');\n this._readableState.flowing = false;\n this.emit('pause');\n }\n this._readableState.paused = true;\n return this;\n};\nfunction flow(stream) {\n var state = stream._readableState;\n debug('flow', state.flowing);\n while (state.flowing && stream.read() !== null);\n}\n\n// wrap an old-style stream as the async data source.\n// This is *not* part of the readable stream interface.\n// It is an ugly unfortunate mess of history.\nReadable.prototype.wrap = function (stream) {\n var _this = this;\n var state = this._readableState;\n var paused = false;\n stream.on('end', function () {\n debug('wrapped end');\n if (state.decoder && !state.ended) {\n var chunk = state.decoder.end();\n if (chunk && chunk.length) _this.push(chunk);\n }\n _this.push(null);\n });\n stream.on('data', function (chunk) {\n debug('wrapped data');\n if (state.decoder) chunk = state.decoder.write(chunk);\n\n // don't skip over falsy values in objectMode\n if (state.objectMode && (chunk === null || chunk === undefined)) return;else if (!state.objectMode && (!chunk || !chunk.length)) return;\n var ret = _this.push(chunk);\n if (!ret) {\n paused = true;\n stream.pause();\n }\n });\n\n // proxy all the other methods.\n // important when wrapping filters and duplexes.\n for (var i in stream) {\n if (this[i] === undefined && typeof stream[i] === 'function') {\n this[i] = function methodWrap(method) {\n return function methodWrapReturnFunction() {\n return stream[method].apply(stream, arguments);\n };\n }(i);\n }\n }\n\n // proxy certain important events.\n for (var n = 0; n < kProxyEvents.length; n++) {\n stream.on(kProxyEvents[n], this.emit.bind(this, kProxyEvents[n]));\n }\n\n // when we try to consume some more bytes, simply unpause the\n // underlying stream.\n this._read = function (n) {\n debug('wrapped _read', n);\n if (paused) {\n paused = false;\n stream.resume();\n }\n };\n return this;\n};\nif (typeof Symbol === 'function') {\n Readable.prototype[Symbol.asyncIterator] = function () {\n if (createReadableStreamAsyncIterator === undefined) {\n createReadableStreamAsyncIterator = require('./internal/streams/async_iterator');\n }\n return createReadableStreamAsyncIterator(this);\n };\n}\nObject.defineProperty(Readable.prototype, 'readableHighWaterMark', {\n // making it explicit this property is not enumerable\n // because otherwise some prototype manipulation in\n // userland will fail\n enumerable: false,\n get: function get() {\n return this._readableState.highWaterMark;\n }\n});\nObject.defineProperty(Readable.prototype, 'readableBuffer', {\n // making it explicit this property is not enumerable\n // because otherwise some prototype manipulation in\n // userland will fail\n enumerable: false,\n get: function get() {\n return this._readableState && this._readableState.buffer;\n }\n});\nObject.defineProperty(Readable.prototype, 'readableFlowing', {\n // making it explicit this property is not enumerable\n // because otherwise some prototype manipulation in\n // userland will fail\n enumerable: false,\n get: function get() {\n return this._readableState.flowing;\n },\n set: function set(state) {\n if (this._readableState) {\n this._readableState.flowing = state;\n }\n }\n});\n\n// exposed for testing purposes only.\nReadable._fromList = fromList;\nObject.defineProperty(Readable.prototype, 'readableLength', {\n // making it explicit this property is not enumerable\n // because otherwise some prototype manipulation in\n // userland will fail\n enumerable: false,\n get: function get() {\n return this._readableState.length;\n }\n});\n\n// Pluck off n bytes from an array of buffers.\n// Length is the combined lengths of all the buffers in the list.\n// This function is designed to be inlinable, so please take care when making\n// changes to the function body.\nfunction fromList(n, state) {\n // nothing buffered\n if (state.length === 0) return null;\n var ret;\n if (state.objectMode) ret = state.buffer.shift();else if (!n || n >= state.length) {\n // read it all, truncate the list\n if (state.decoder) ret = state.buffer.join('');else if (state.buffer.length === 1) ret = state.buffer.first();else ret = state.buffer.concat(state.length);\n state.buffer.clear();\n } else {\n // read part of list\n ret = state.buffer.consume(n, state.decoder);\n }\n return ret;\n}\nfunction endReadable(stream) {\n var state = stream._readableState;\n debug('endReadable', state.endEmitted);\n if (!state.endEmitted) {\n state.ended = true;\n process.nextTick(endReadableNT, state, stream);\n }\n}\nfunction endReadableNT(state, stream) {\n debug('endReadableNT', state.endEmitted, state.length);\n\n // Check that we didn't get one last unshift.\n if (!state.endEmitted && state.length === 0) {\n state.endEmitted = true;\n stream.readable = false;\n stream.emit('end');\n if (state.autoDestroy) {\n // In case of duplex streams we need a way to detect\n // if the writable side is ready for autoDestroy as well\n var wState = stream._writableState;\n if (!wState || wState.autoDestroy && wState.finished) {\n stream.destroy();\n }\n }\n }\n}\nif (typeof Symbol === 'function') {\n Readable.from = function (iterable, opts) {\n if (from === undefined) {\n from = require('./internal/streams/from');\n }\n return from(Readable, iterable, opts);\n };\n}\nfunction indexOf(xs, x) {\n for (var i = 0, l = xs.length; i < l; i++) {\n if (xs[i] === x) return i;\n }\n return -1;\n}","// Copyright Joyent, Inc. and other Node contributors.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a\n// copy of this software and associated documentation files (the\n// \"Software\"), to deal in the Software without restriction, including\n// without limitation the rights to use, copy, modify, merge, publish,\n// distribute, sublicense, and/or sell copies of the Software, and to permit\n// persons to whom the Software is furnished to do so, subject to the\n// following conditions:\n//\n// The above copyright notice and this permission notice shall be included\n// in all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN\n// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR\n// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\n// USE OR OTHER DEALINGS IN THE SOFTWARE.\n\n// a transform stream is a readable/writable stream where you do\n// something with the data. Sometimes it's called a \"filter\",\n// but that's not a great name for it, since that implies a thing where\n// some bits pass through, and others are simply ignored. (That would\n// be a valid example of a transform, of course.)\n//\n// While the output is causally related to the input, it's not a\n// necessarily symmetric or synchronous transformation. For example,\n// a zlib stream might take multiple plain-text writes(), and then\n// emit a single compressed chunk some time in the future.\n//\n// Here's how this works:\n//\n// The Transform stream has all the aspects of the readable and writable\n// stream classes. When you write(chunk), that calls _write(chunk,cb)\n// internally, and returns false if there's a lot of pending writes\n// buffered up. When you call read(), that calls _read(n) until\n// there's enough pending readable data buffered up.\n//\n// In a transform stream, the written data is placed in a buffer. When\n// _read(n) is called, it transforms the queued up data, calling the\n// buffered _write cb's as it consumes chunks. If consuming a single\n// written chunk would result in multiple output chunks, then the first\n// outputted bit calls the readcb, and subsequent chunks just go into\n// the read buffer, and will cause it to emit 'readable' if necessary.\n//\n// This way, back-pressure is actually determined by the reading side,\n// since _read has to be called to start processing a new chunk. However,\n// a pathological inflate type of transform can cause excessive buffering\n// here. For example, imagine a stream where every byte of input is\n// interpreted as an integer from 0-255, and then results in that many\n// bytes of output. Writing the 4 bytes {ff,ff,ff,ff} would result in\n// 1kb of data being output. In this case, you could write a very small\n// amount of input, and end up with a very large amount of output. In\n// such a pathological inflating mechanism, there'd be no way to tell\n// the system to stop doing the transform. A single 4MB write could\n// cause the system to run out of memory.\n//\n// However, even in such a pathological case, only a single written chunk\n// would be consumed, and then the rest would wait (un-transformed) until\n// the results of the previous transformed chunk were consumed.\n\n'use strict';\n\nmodule.exports = Transform;\nvar _require$codes = require('../errors').codes,\n ERR_METHOD_NOT_IMPLEMENTED = _require$codes.ERR_METHOD_NOT_IMPLEMENTED,\n ERR_MULTIPLE_CALLBACK = _require$codes.ERR_MULTIPLE_CALLBACK,\n ERR_TRANSFORM_ALREADY_TRANSFORMING = _require$codes.ERR_TRANSFORM_ALREADY_TRANSFORMING,\n ERR_TRANSFORM_WITH_LENGTH_0 = _require$codes.ERR_TRANSFORM_WITH_LENGTH_0;\nvar Duplex = require('./_stream_duplex');\nrequire('inherits')(Transform, Duplex);\nfunction afterTransform(er, data) {\n var ts = this._transformState;\n ts.transforming = false;\n var cb = ts.writecb;\n if (cb === null) {\n return this.emit('error', new ERR_MULTIPLE_CALLBACK());\n }\n ts.writechunk = null;\n ts.writecb = null;\n if (data != null)\n // single equals check for both `null` and `undefined`\n this.push(data);\n cb(er);\n var rs = this._readableState;\n rs.reading = false;\n if (rs.needReadable || rs.length < rs.highWaterMark) {\n this._read(rs.highWaterMark);\n }\n}\nfunction Transform(options) {\n if (!(this instanceof Transform)) return new Transform(options);\n Duplex.call(this, options);\n this._transformState = {\n afterTransform: afterTransform.bind(this),\n needTransform: false,\n transforming: false,\n writecb: null,\n writechunk: null,\n writeencoding: null\n };\n\n // start out asking for a readable event once data is transformed.\n this._readableState.needReadable = true;\n\n // we have implemented the _read method, and done the other things\n // that Readable wants before the first _read call, so unset the\n // sync guard flag.\n this._readableState.sync = false;\n if (options) {\n if (typeof options.transform === 'function') this._transform = options.transform;\n if (typeof options.flush === 'function') this._flush = options.flush;\n }\n\n // When the writable side finishes, then flush out anything remaining.\n this.on('prefinish', prefinish);\n}\nfunction prefinish() {\n var _this = this;\n if (typeof this._flush === 'function' && !this._readableState.destroyed) {\n this._flush(function (er, data) {\n done(_this, er, data);\n });\n } else {\n done(this, null, null);\n }\n}\nTransform.prototype.push = function (chunk, encoding) {\n this._transformState.needTransform = false;\n return Duplex.prototype.push.call(this, chunk, encoding);\n};\n\n// This is the part where you do stuff!\n// override this function in implementation classes.\n// 'chunk' is an input chunk.\n//\n// Call `push(newChunk)` to pass along transformed output\n// to the readable side. You may call 'push' zero or more times.\n//\n// Call `cb(err)` when you are done with this chunk. If you pass\n// an error, then that'll put the hurt on the whole operation. If you\n// never call cb(), then you'll never get another chunk.\nTransform.prototype._transform = function (chunk, encoding, cb) {\n cb(new ERR_METHOD_NOT_IMPLEMENTED('_transform()'));\n};\nTransform.prototype._write = function (chunk, encoding, cb) {\n var ts = this._transformState;\n ts.writecb = cb;\n ts.writechunk = chunk;\n ts.writeencoding = encoding;\n if (!ts.transforming) {\n var rs = this._readableState;\n if (ts.needTransform || rs.needReadable || rs.length < rs.highWaterMark) this._read(rs.highWaterMark);\n }\n};\n\n// Doesn't matter what the args are here.\n// _transform does all the work.\n// That we got here means that the readable side wants more data.\nTransform.prototype._read = function (n) {\n var ts = this._transformState;\n if (ts.writechunk !== null && !ts.transforming) {\n ts.transforming = true;\n this._transform(ts.writechunk, ts.writeencoding, ts.afterTransform);\n } else {\n // mark that we need a transform, so that any data that comes in\n // will get processed, now that we've asked for it.\n ts.needTransform = true;\n }\n};\nTransform.prototype._destroy = function (err, cb) {\n Duplex.prototype._destroy.call(this, err, function (err2) {\n cb(err2);\n });\n};\nfunction done(stream, er, data) {\n if (er) return stream.emit('error', er);\n if (data != null)\n // single equals check for both `null` and `undefined`\n stream.push(data);\n\n // TODO(BridgeAR): Write a test for these two error cases\n // if there's nothing in the write buffer, then that means\n // that nothing more will ever be provided\n if (stream._writableState.length) throw new ERR_TRANSFORM_WITH_LENGTH_0();\n if (stream._transformState.transforming) throw new ERR_TRANSFORM_ALREADY_TRANSFORMING();\n return stream.push(null);\n}","// Copyright Joyent, Inc. and other Node contributors.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a\n// copy of this software and associated documentation files (the\n// \"Software\"), to deal in the Software without restriction, including\n// without limitation the rights to use, copy, modify, merge, publish,\n// distribute, sublicense, and/or sell copies of the Software, and to permit\n// persons to whom the Software is furnished to do so, subject to the\n// following conditions:\n//\n// The above copyright notice and this permission notice shall be included\n// in all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN\n// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR\n// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\n// USE OR OTHER DEALINGS IN THE SOFTWARE.\n\n// A bit simpler than readable streams.\n// Implement an async ._write(chunk, encoding, cb), and it'll handle all\n// the drain event emission and buffering.\n\n'use strict';\n\nmodule.exports = Writable;\n\n/* */\nfunction WriteReq(chunk, encoding, cb) {\n this.chunk = chunk;\n this.encoding = encoding;\n this.callback = cb;\n this.next = null;\n}\n\n// It seems a linked list but it is not\n// there will be only 2 of these for each stream\nfunction CorkedRequest(state) {\n var _this = this;\n this.next = null;\n this.entry = null;\n this.finish = function () {\n onCorkedFinish(_this, state);\n };\n}\n/* */\n\n/**/\nvar Duplex;\n/**/\n\nWritable.WritableState = WritableState;\n\n/**/\nvar internalUtil = {\n deprecate: require('util-deprecate')\n};\n/**/\n\n/**/\nvar Stream = require('./internal/streams/stream');\n/**/\n\nvar Buffer = require('buffer').Buffer;\nvar OurUint8Array = (typeof global !== 'undefined' ? global : typeof window !== 'undefined' ? window : typeof self !== 'undefined' ? self : {}).Uint8Array || function () {};\nfunction _uint8ArrayToBuffer(chunk) {\n return Buffer.from(chunk);\n}\nfunction _isUint8Array(obj) {\n return Buffer.isBuffer(obj) || obj instanceof OurUint8Array;\n}\nvar destroyImpl = require('./internal/streams/destroy');\nvar _require = require('./internal/streams/state'),\n getHighWaterMark = _require.getHighWaterMark;\nvar _require$codes = require('../errors').codes,\n ERR_INVALID_ARG_TYPE = _require$codes.ERR_INVALID_ARG_TYPE,\n ERR_METHOD_NOT_IMPLEMENTED = _require$codes.ERR_METHOD_NOT_IMPLEMENTED,\n ERR_MULTIPLE_CALLBACK = _require$codes.ERR_MULTIPLE_CALLBACK,\n ERR_STREAM_CANNOT_PIPE = _require$codes.ERR_STREAM_CANNOT_PIPE,\n ERR_STREAM_DESTROYED = _require$codes.ERR_STREAM_DESTROYED,\n ERR_STREAM_NULL_VALUES = _require$codes.ERR_STREAM_NULL_VALUES,\n ERR_STREAM_WRITE_AFTER_END = _require$codes.ERR_STREAM_WRITE_AFTER_END,\n ERR_UNKNOWN_ENCODING = _require$codes.ERR_UNKNOWN_ENCODING;\nvar errorOrDestroy = destroyImpl.errorOrDestroy;\nrequire('inherits')(Writable, Stream);\nfunction nop() {}\nfunction WritableState(options, stream, isDuplex) {\n Duplex = Duplex || require('./_stream_duplex');\n options = options || {};\n\n // Duplex streams are both readable and writable, but share\n // the same options object.\n // However, some cases require setting options to different\n // values for the readable and the writable sides of the duplex stream,\n // e.g. options.readableObjectMode vs. options.writableObjectMode, etc.\n if (typeof isDuplex !== 'boolean') isDuplex = stream instanceof Duplex;\n\n // object stream flag to indicate whether or not this stream\n // contains buffers or objects.\n this.objectMode = !!options.objectMode;\n if (isDuplex) this.objectMode = this.objectMode || !!options.writableObjectMode;\n\n // the point at which write() starts returning false\n // Note: 0 is a valid value, means that we always return false if\n // the entire buffer is not flushed immediately on write()\n this.highWaterMark = getHighWaterMark(this, options, 'writableHighWaterMark', isDuplex);\n\n // if _final has been called\n this.finalCalled = false;\n\n // drain event flag.\n this.needDrain = false;\n // at the start of calling end()\n this.ending = false;\n // when end() has been called, and returned\n this.ended = false;\n // when 'finish' is emitted\n this.finished = false;\n\n // has it been destroyed\n this.destroyed = false;\n\n // should we decode strings into buffers before passing to _write?\n // this is here so that some node-core streams can optimize string\n // handling at a lower level.\n var noDecode = options.decodeStrings === false;\n this.decodeStrings = !noDecode;\n\n // Crypto is kind of old and crusty. Historically, its default string\n // encoding is 'binary' so we have to make this configurable.\n // Everything else in the universe uses 'utf8', though.\n this.defaultEncoding = options.defaultEncoding || 'utf8';\n\n // not an actual buffer we keep track of, but a measurement\n // of how much we're waiting to get pushed to some underlying\n // socket or file.\n this.length = 0;\n\n // a flag to see when we're in the middle of a write.\n this.writing = false;\n\n // when true all writes will be buffered until .uncork() call\n this.corked = 0;\n\n // a flag to be able to tell if the onwrite cb is called immediately,\n // or on a later tick. We set this to true at first, because any\n // actions that shouldn't happen until \"later\" should generally also\n // not happen before the first write call.\n this.sync = true;\n\n // a flag to know if we're processing previously buffered items, which\n // may call the _write() callback in the same tick, so that we don't\n // end up in an overlapped onwrite situation.\n this.bufferProcessing = false;\n\n // the callback that's passed to _write(chunk,cb)\n this.onwrite = function (er) {\n onwrite(stream, er);\n };\n\n // the callback that the user supplies to write(chunk,encoding,cb)\n this.writecb = null;\n\n // the amount that is being written when _write is called.\n this.writelen = 0;\n this.bufferedRequest = null;\n this.lastBufferedRequest = null;\n\n // number of pending user-supplied write callbacks\n // this must be 0 before 'finish' can be emitted\n this.pendingcb = 0;\n\n // emit prefinish if the only thing we're waiting for is _write cbs\n // This is relevant for synchronous Transform streams\n this.prefinished = false;\n\n // True if the error was already emitted and should not be thrown again\n this.errorEmitted = false;\n\n // Should close be emitted on destroy. Defaults to true.\n this.emitClose = options.emitClose !== false;\n\n // Should .destroy() be called after 'finish' (and potentially 'end')\n this.autoDestroy = !!options.autoDestroy;\n\n // count buffered requests\n this.bufferedRequestCount = 0;\n\n // allocate the first CorkedRequest, there is always\n // one allocated and free to use, and we maintain at most two\n this.corkedRequestsFree = new CorkedRequest(this);\n}\nWritableState.prototype.getBuffer = function getBuffer() {\n var current = this.bufferedRequest;\n var out = [];\n while (current) {\n out.push(current);\n current = current.next;\n }\n return out;\n};\n(function () {\n try {\n Object.defineProperty(WritableState.prototype, 'buffer', {\n get: internalUtil.deprecate(function writableStateBufferGetter() {\n return this.getBuffer();\n }, '_writableState.buffer is deprecated. Use _writableState.getBuffer ' + 'instead.', 'DEP0003')\n });\n } catch (_) {}\n})();\n\n// Test _writableState for inheritance to account for Duplex streams,\n// whose prototype chain only points to Readable.\nvar realHasInstance;\nif (typeof Symbol === 'function' && Symbol.hasInstance && typeof Function.prototype[Symbol.hasInstance] === 'function') {\n realHasInstance = Function.prototype[Symbol.hasInstance];\n Object.defineProperty(Writable, Symbol.hasInstance, {\n value: function value(object) {\n if (realHasInstance.call(this, object)) return true;\n if (this !== Writable) return false;\n return object && object._writableState instanceof WritableState;\n }\n });\n} else {\n realHasInstance = function realHasInstance(object) {\n return object instanceof this;\n };\n}\nfunction Writable(options) {\n Duplex = Duplex || require('./_stream_duplex');\n\n // Writable ctor is applied to Duplexes, too.\n // `realHasInstance` is necessary because using plain `instanceof`\n // would return false, as no `_writableState` property is attached.\n\n // Trying to use the custom `instanceof` for Writable here will also break the\n // Node.js LazyTransform implementation, which has a non-trivial getter for\n // `_writableState` that would lead to infinite recursion.\n\n // Checking for a Stream.Duplex instance is faster here instead of inside\n // the WritableState constructor, at least with V8 6.5\n var isDuplex = this instanceof Duplex;\n if (!isDuplex && !realHasInstance.call(Writable, this)) return new Writable(options);\n this._writableState = new WritableState(options, this, isDuplex);\n\n // legacy.\n this.writable = true;\n if (options) {\n if (typeof options.write === 'function') this._write = options.write;\n if (typeof options.writev === 'function') this._writev = options.writev;\n if (typeof options.destroy === 'function') this._destroy = options.destroy;\n if (typeof options.final === 'function') this._final = options.final;\n }\n Stream.call(this);\n}\n\n// Otherwise people can pipe Writable streams, which is just wrong.\nWritable.prototype.pipe = function () {\n errorOrDestroy(this, new ERR_STREAM_CANNOT_PIPE());\n};\nfunction writeAfterEnd(stream, cb) {\n var er = new ERR_STREAM_WRITE_AFTER_END();\n // TODO: defer error events consistently everywhere, not just the cb\n errorOrDestroy(stream, er);\n process.nextTick(cb, er);\n}\n\n// Checks that a user-supplied chunk is valid, especially for the particular\n// mode the stream is in. Currently this means that `null` is never accepted\n// and undefined/non-string values are only allowed in object mode.\nfunction validChunk(stream, state, chunk, cb) {\n var er;\n if (chunk === null) {\n er = new ERR_STREAM_NULL_VALUES();\n } else if (typeof chunk !== 'string' && !state.objectMode) {\n er = new ERR_INVALID_ARG_TYPE('chunk', ['string', 'Buffer'], chunk);\n }\n if (er) {\n errorOrDestroy(stream, er);\n process.nextTick(cb, er);\n return false;\n }\n return true;\n}\nWritable.prototype.write = function (chunk, encoding, cb) {\n var state = this._writableState;\n var ret = false;\n var isBuf = !state.objectMode && _isUint8Array(chunk);\n if (isBuf && !Buffer.isBuffer(chunk)) {\n chunk = _uint8ArrayToBuffer(chunk);\n }\n if (typeof encoding === 'function') {\n cb = encoding;\n encoding = null;\n }\n if (isBuf) encoding = 'buffer';else if (!encoding) encoding = state.defaultEncoding;\n if (typeof cb !== 'function') cb = nop;\n if (state.ending) writeAfterEnd(this, cb);else if (isBuf || validChunk(this, state, chunk, cb)) {\n state.pendingcb++;\n ret = writeOrBuffer(this, state, isBuf, chunk, encoding, cb);\n }\n return ret;\n};\nWritable.prototype.cork = function () {\n this._writableState.corked++;\n};\nWritable.prototype.uncork = function () {\n var state = this._writableState;\n if (state.corked) {\n state.corked--;\n if (!state.writing && !state.corked && !state.bufferProcessing && state.bufferedRequest) clearBuffer(this, state);\n }\n};\nWritable.prototype.setDefaultEncoding = function setDefaultEncoding(encoding) {\n // node::ParseEncoding() requires lower case.\n if (typeof encoding === 'string') encoding = encoding.toLowerCase();\n if (!(['hex', 'utf8', 'utf-8', 'ascii', 'binary', 'base64', 'ucs2', 'ucs-2', 'utf16le', 'utf-16le', 'raw'].indexOf((encoding + '').toLowerCase()) > -1)) throw new ERR_UNKNOWN_ENCODING(encoding);\n this._writableState.defaultEncoding = encoding;\n return this;\n};\nObject.defineProperty(Writable.prototype, 'writableBuffer', {\n // making it explicit this property is not enumerable\n // because otherwise some prototype manipulation in\n // userland will fail\n enumerable: false,\n get: function get() {\n return this._writableState && this._writableState.getBuffer();\n }\n});\nfunction decodeChunk(state, chunk, encoding) {\n if (!state.objectMode && state.decodeStrings !== false && typeof chunk === 'string') {\n chunk = Buffer.from(chunk, encoding);\n }\n return chunk;\n}\nObject.defineProperty(Writable.prototype, 'writableHighWaterMark', {\n // making it explicit this property is not enumerable\n // because otherwise some prototype manipulation in\n // userland will fail\n enumerable: false,\n get: function get() {\n return this._writableState.highWaterMark;\n }\n});\n\n// if we're already writing something, then just put this\n// in the queue, and wait our turn. Otherwise, call _write\n// If we return false, then we need a drain event, so set that flag.\nfunction writeOrBuffer(stream, state, isBuf, chunk, encoding, cb) {\n if (!isBuf) {\n var newChunk = decodeChunk(state, chunk, encoding);\n if (chunk !== newChunk) {\n isBuf = true;\n encoding = 'buffer';\n chunk = newChunk;\n }\n }\n var len = state.objectMode ? 1 : chunk.length;\n state.length += len;\n var ret = state.length < state.highWaterMark;\n // we must ensure that previous needDrain will not be reset to false.\n if (!ret) state.needDrain = true;\n if (state.writing || state.corked) {\n var last = state.lastBufferedRequest;\n state.lastBufferedRequest = {\n chunk: chunk,\n encoding: encoding,\n isBuf: isBuf,\n callback: cb,\n next: null\n };\n if (last) {\n last.next = state.lastBufferedRequest;\n } else {\n state.bufferedRequest = state.lastBufferedRequest;\n }\n state.bufferedRequestCount += 1;\n } else {\n doWrite(stream, state, false, len, chunk, encoding, cb);\n }\n return ret;\n}\nfunction doWrite(stream, state, writev, len, chunk, encoding, cb) {\n state.writelen = len;\n state.writecb = cb;\n state.writing = true;\n state.sync = true;\n if (state.destroyed) state.onwrite(new ERR_STREAM_DESTROYED('write'));else if (writev) stream._writev(chunk, state.onwrite);else stream._write(chunk, encoding, state.onwrite);\n state.sync = false;\n}\nfunction onwriteError(stream, state, sync, er, cb) {\n --state.pendingcb;\n if (sync) {\n // defer the callback if we are being called synchronously\n // to avoid piling up things on the stack\n process.nextTick(cb, er);\n // this can emit finish, and it will always happen\n // after error\n process.nextTick(finishMaybe, stream, state);\n stream._writableState.errorEmitted = true;\n errorOrDestroy(stream, er);\n } else {\n // the caller expect this to happen before if\n // it is async\n cb(er);\n stream._writableState.errorEmitted = true;\n errorOrDestroy(stream, er);\n // this can emit finish, but finish must\n // always follow error\n finishMaybe(stream, state);\n }\n}\nfunction onwriteStateUpdate(state) {\n state.writing = false;\n state.writecb = null;\n state.length -= state.writelen;\n state.writelen = 0;\n}\nfunction onwrite(stream, er) {\n var state = stream._writableState;\n var sync = state.sync;\n var cb = state.writecb;\n if (typeof cb !== 'function') throw new ERR_MULTIPLE_CALLBACK();\n onwriteStateUpdate(state);\n if (er) onwriteError(stream, state, sync, er, cb);else {\n // Check if we're actually ready to finish, but don't emit yet\n var finished = needFinish(state) || stream.destroyed;\n if (!finished && !state.corked && !state.bufferProcessing && state.bufferedRequest) {\n clearBuffer(stream, state);\n }\n if (sync) {\n process.nextTick(afterWrite, stream, state, finished, cb);\n } else {\n afterWrite(stream, state, finished, cb);\n }\n }\n}\nfunction afterWrite(stream, state, finished, cb) {\n if (!finished) onwriteDrain(stream, state);\n state.pendingcb--;\n cb();\n finishMaybe(stream, state);\n}\n\n// Must force callback to be called on nextTick, so that we don't\n// emit 'drain' before the write() consumer gets the 'false' return\n// value, and has a chance to attach a 'drain' listener.\nfunction onwriteDrain(stream, state) {\n if (state.length === 0 && state.needDrain) {\n state.needDrain = false;\n stream.emit('drain');\n }\n}\n\n// if there's something in the buffer waiting, then process it\nfunction clearBuffer(stream, state) {\n state.bufferProcessing = true;\n var entry = state.bufferedRequest;\n if (stream._writev && entry && entry.next) {\n // Fast case, write everything using _writev()\n var l = state.bufferedRequestCount;\n var buffer = new Array(l);\n var holder = state.corkedRequestsFree;\n holder.entry = entry;\n var count = 0;\n var allBuffers = true;\n while (entry) {\n buffer[count] = entry;\n if (!entry.isBuf) allBuffers = false;\n entry = entry.next;\n count += 1;\n }\n buffer.allBuffers = allBuffers;\n doWrite(stream, state, true, state.length, buffer, '', holder.finish);\n\n // doWrite is almost always async, defer these to save a bit of time\n // as the hot path ends with doWrite\n state.pendingcb++;\n state.lastBufferedRequest = null;\n if (holder.next) {\n state.corkedRequestsFree = holder.next;\n holder.next = null;\n } else {\n state.corkedRequestsFree = new CorkedRequest(state);\n }\n state.bufferedRequestCount = 0;\n } else {\n // Slow case, write chunks one-by-one\n while (entry) {\n var chunk = entry.chunk;\n var encoding = entry.encoding;\n var cb = entry.callback;\n var len = state.objectMode ? 1 : chunk.length;\n doWrite(stream, state, false, len, chunk, encoding, cb);\n entry = entry.next;\n state.bufferedRequestCount--;\n // if we didn't call the onwrite immediately, then\n // it means that we need to wait until it does.\n // also, that means that the chunk and cb are currently\n // being processed, so move the buffer counter past them.\n if (state.writing) {\n break;\n }\n }\n if (entry === null) state.lastBufferedRequest = null;\n }\n state.bufferedRequest = entry;\n state.bufferProcessing = false;\n}\nWritable.prototype._write = function (chunk, encoding, cb) {\n cb(new ERR_METHOD_NOT_IMPLEMENTED('_write()'));\n};\nWritable.prototype._writev = null;\nWritable.prototype.end = function (chunk, encoding, cb) {\n var state = this._writableState;\n if (typeof chunk === 'function') {\n cb = chunk;\n chunk = null;\n encoding = null;\n } else if (typeof encoding === 'function') {\n cb = encoding;\n encoding = null;\n }\n if (chunk !== null && chunk !== undefined) this.write(chunk, encoding);\n\n // .end() fully uncorks\n if (state.corked) {\n state.corked = 1;\n this.uncork();\n }\n\n // ignore unnecessary end() calls.\n if (!state.ending) endWritable(this, state, cb);\n return this;\n};\nObject.defineProperty(Writable.prototype, 'writableLength', {\n // making it explicit this property is not enumerable\n // because otherwise some prototype manipulation in\n // userland will fail\n enumerable: false,\n get: function get() {\n return this._writableState.length;\n }\n});\nfunction needFinish(state) {\n return state.ending && state.length === 0 && state.bufferedRequest === null && !state.finished && !state.writing;\n}\nfunction callFinal(stream, state) {\n stream._final(function (err) {\n state.pendingcb--;\n if (err) {\n errorOrDestroy(stream, err);\n }\n state.prefinished = true;\n stream.emit('prefinish');\n finishMaybe(stream, state);\n });\n}\nfunction prefinish(stream, state) {\n if (!state.prefinished && !state.finalCalled) {\n if (typeof stream._final === 'function' && !state.destroyed) {\n state.pendingcb++;\n state.finalCalled = true;\n process.nextTick(callFinal, stream, state);\n } else {\n state.prefinished = true;\n stream.emit('prefinish');\n }\n }\n}\nfunction finishMaybe(stream, state) {\n var need = needFinish(state);\n if (need) {\n prefinish(stream, state);\n if (state.pendingcb === 0) {\n state.finished = true;\n stream.emit('finish');\n if (state.autoDestroy) {\n // In case of duplex streams we need a way to detect\n // if the readable side is ready for autoDestroy as well\n var rState = stream._readableState;\n if (!rState || rState.autoDestroy && rState.endEmitted) {\n stream.destroy();\n }\n }\n }\n }\n return need;\n}\nfunction endWritable(stream, state, cb) {\n state.ending = true;\n finishMaybe(stream, state);\n if (cb) {\n if (state.finished) process.nextTick(cb);else stream.once('finish', cb);\n }\n state.ended = true;\n stream.writable = false;\n}\nfunction onCorkedFinish(corkReq, state, err) {\n var entry = corkReq.entry;\n corkReq.entry = null;\n while (entry) {\n var cb = entry.callback;\n state.pendingcb--;\n cb(err);\n entry = entry.next;\n }\n\n // reuse the free corkReq.\n state.corkedRequestsFree.next = corkReq;\n}\nObject.defineProperty(Writable.prototype, 'destroyed', {\n // making it explicit this property is not enumerable\n // because otherwise some prototype manipulation in\n // userland will fail\n enumerable: false,\n get: function get() {\n if (this._writableState === undefined) {\n return false;\n }\n return this._writableState.destroyed;\n },\n set: function set(value) {\n // we ignore the value if the stream\n // has not been initialized yet\n if (!this._writableState) {\n return;\n }\n\n // backward compatibility, the user is explicitly\n // managing destroyed\n this._writableState.destroyed = value;\n }\n});\nWritable.prototype.destroy = destroyImpl.destroy;\nWritable.prototype._undestroy = destroyImpl.undestroy;\nWritable.prototype._destroy = function (err, cb) {\n cb(err);\n};","'use strict';\n\nvar _Object$setPrototypeO;\nfunction _defineProperty(obj, key, value) { key = _toPropertyKey(key); if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\nfunction _toPropertyKey(arg) { var key = _toPrimitive(arg, \"string\"); return typeof key === \"symbol\" ? key : String(key); }\nfunction _toPrimitive(input, hint) { if (typeof input !== \"object\" || input === null) return input; var prim = input[Symbol.toPrimitive]; if (prim !== undefined) { var res = prim.call(input, hint || \"default\"); if (typeof res !== \"object\") return res; throw new TypeError(\"@@toPrimitive must return a primitive value.\"); } return (hint === \"string\" ? String : Number)(input); }\nvar finished = require('./end-of-stream');\nvar kLastResolve = Symbol('lastResolve');\nvar kLastReject = Symbol('lastReject');\nvar kError = Symbol('error');\nvar kEnded = Symbol('ended');\nvar kLastPromise = Symbol('lastPromise');\nvar kHandlePromise = Symbol('handlePromise');\nvar kStream = Symbol('stream');\nfunction createIterResult(value, done) {\n return {\n value: value,\n done: done\n };\n}\nfunction readAndResolve(iter) {\n var resolve = iter[kLastResolve];\n if (resolve !== null) {\n var data = iter[kStream].read();\n // we defer if data is null\n // we can be expecting either 'end' or\n // 'error'\n if (data !== null) {\n iter[kLastPromise] = null;\n iter[kLastResolve] = null;\n iter[kLastReject] = null;\n resolve(createIterResult(data, false));\n }\n }\n}\nfunction onReadable(iter) {\n // we wait for the next tick, because it might\n // emit an error with process.nextTick\n process.nextTick(readAndResolve, iter);\n}\nfunction wrapForNext(lastPromise, iter) {\n return function (resolve, reject) {\n lastPromise.then(function () {\n if (iter[kEnded]) {\n resolve(createIterResult(undefined, true));\n return;\n }\n iter[kHandlePromise](resolve, reject);\n }, reject);\n };\n}\nvar AsyncIteratorPrototype = Object.getPrototypeOf(function () {});\nvar ReadableStreamAsyncIteratorPrototype = Object.setPrototypeOf((_Object$setPrototypeO = {\n get stream() {\n return this[kStream];\n },\n next: function next() {\n var _this = this;\n // if we have detected an error in the meanwhile\n // reject straight away\n var error = this[kError];\n if (error !== null) {\n return Promise.reject(error);\n }\n if (this[kEnded]) {\n return Promise.resolve(createIterResult(undefined, true));\n }\n if (this[kStream].destroyed) {\n // We need to defer via nextTick because if .destroy(err) is\n // called, the error will be emitted via nextTick, and\n // we cannot guarantee that there is no error lingering around\n // waiting to be emitted.\n return new Promise(function (resolve, reject) {\n process.nextTick(function () {\n if (_this[kError]) {\n reject(_this[kError]);\n } else {\n resolve(createIterResult(undefined, true));\n }\n });\n });\n }\n\n // if we have multiple next() calls\n // we will wait for the previous Promise to finish\n // this logic is optimized to support for await loops,\n // where next() is only called once at a time\n var lastPromise = this[kLastPromise];\n var promise;\n if (lastPromise) {\n promise = new Promise(wrapForNext(lastPromise, this));\n } else {\n // fast path needed to support multiple this.push()\n // without triggering the next() queue\n var data = this[kStream].read();\n if (data !== null) {\n return Promise.resolve(createIterResult(data, false));\n }\n promise = new Promise(this[kHandlePromise]);\n }\n this[kLastPromise] = promise;\n return promise;\n }\n}, _defineProperty(_Object$setPrototypeO, Symbol.asyncIterator, function () {\n return this;\n}), _defineProperty(_Object$setPrototypeO, \"return\", function _return() {\n var _this2 = this;\n // destroy(err, cb) is a private API\n // we can guarantee we have that here, because we control the\n // Readable class this is attached to\n return new Promise(function (resolve, reject) {\n _this2[kStream].destroy(null, function (err) {\n if (err) {\n reject(err);\n return;\n }\n resolve(createIterResult(undefined, true));\n });\n });\n}), _Object$setPrototypeO), AsyncIteratorPrototype);\nvar createReadableStreamAsyncIterator = function createReadableStreamAsyncIterator(stream) {\n var _Object$create;\n var iterator = Object.create(ReadableStreamAsyncIteratorPrototype, (_Object$create = {}, _defineProperty(_Object$create, kStream, {\n value: stream,\n writable: true\n }), _defineProperty(_Object$create, kLastResolve, {\n value: null,\n writable: true\n }), _defineProperty(_Object$create, kLastReject, {\n value: null,\n writable: true\n }), _defineProperty(_Object$create, kError, {\n value: null,\n writable: true\n }), _defineProperty(_Object$create, kEnded, {\n value: stream._readableState.endEmitted,\n writable: true\n }), _defineProperty(_Object$create, kHandlePromise, {\n value: function value(resolve, reject) {\n var data = iterator[kStream].read();\n if (data) {\n iterator[kLastPromise] = null;\n iterator[kLastResolve] = null;\n iterator[kLastReject] = null;\n resolve(createIterResult(data, false));\n } else {\n iterator[kLastResolve] = resolve;\n iterator[kLastReject] = reject;\n }\n },\n writable: true\n }), _Object$create));\n iterator[kLastPromise] = null;\n finished(stream, function (err) {\n if (err && err.code !== 'ERR_STREAM_PREMATURE_CLOSE') {\n var reject = iterator[kLastReject];\n // reject if we are waiting for data in the Promise\n // returned by next() and store the error\n if (reject !== null) {\n iterator[kLastPromise] = null;\n iterator[kLastResolve] = null;\n iterator[kLastReject] = null;\n reject(err);\n }\n iterator[kError] = err;\n return;\n }\n var resolve = iterator[kLastResolve];\n if (resolve !== null) {\n iterator[kLastPromise] = null;\n iterator[kLastResolve] = null;\n iterator[kLastReject] = null;\n resolve(createIterResult(undefined, true));\n }\n iterator[kEnded] = true;\n });\n stream.on('readable', onReadable.bind(null, iterator));\n return iterator;\n};\nmodule.exports = createReadableStreamAsyncIterator;","'use strict';\n\nfunction ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }\nfunction _defineProperty(obj, key, value) { key = _toPropertyKey(key); if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\nfunction _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, _toPropertyKey(descriptor.key), descriptor); } }\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); Object.defineProperty(Constructor, \"prototype\", { writable: false }); return Constructor; }\nfunction _toPropertyKey(arg) { var key = _toPrimitive(arg, \"string\"); return typeof key === \"symbol\" ? key : String(key); }\nfunction _toPrimitive(input, hint) { if (typeof input !== \"object\" || input === null) return input; var prim = input[Symbol.toPrimitive]; if (prim !== undefined) { var res = prim.call(input, hint || \"default\"); if (typeof res !== \"object\") return res; throw new TypeError(\"@@toPrimitive must return a primitive value.\"); } return (hint === \"string\" ? String : Number)(input); }\nvar _require = require('buffer'),\n Buffer = _require.Buffer;\nvar _require2 = require('util'),\n inspect = _require2.inspect;\nvar custom = inspect && inspect.custom || 'inspect';\nfunction copyBuffer(src, target, offset) {\n Buffer.prototype.copy.call(src, target, offset);\n}\nmodule.exports = /*#__PURE__*/function () {\n function BufferList() {\n _classCallCheck(this, BufferList);\n this.head = null;\n this.tail = null;\n this.length = 0;\n }\n _createClass(BufferList, [{\n key: \"push\",\n value: function push(v) {\n var entry = {\n data: v,\n next: null\n };\n if (this.length > 0) this.tail.next = entry;else this.head = entry;\n this.tail = entry;\n ++this.length;\n }\n }, {\n key: \"unshift\",\n value: function unshift(v) {\n var entry = {\n data: v,\n next: this.head\n };\n if (this.length === 0) this.tail = entry;\n this.head = entry;\n ++this.length;\n }\n }, {\n key: \"shift\",\n value: function shift() {\n if (this.length === 0) return;\n var ret = this.head.data;\n if (this.length === 1) this.head = this.tail = null;else this.head = this.head.next;\n --this.length;\n return ret;\n }\n }, {\n key: \"clear\",\n value: function clear() {\n this.head = this.tail = null;\n this.length = 0;\n }\n }, {\n key: \"join\",\n value: function join(s) {\n if (this.length === 0) return '';\n var p = this.head;\n var ret = '' + p.data;\n while (p = p.next) ret += s + p.data;\n return ret;\n }\n }, {\n key: \"concat\",\n value: function concat(n) {\n if (this.length === 0) return Buffer.alloc(0);\n var ret = Buffer.allocUnsafe(n >>> 0);\n var p = this.head;\n var i = 0;\n while (p) {\n copyBuffer(p.data, ret, i);\n i += p.data.length;\n p = p.next;\n }\n return ret;\n }\n\n // Consumes a specified amount of bytes or characters from the buffered data.\n }, {\n key: \"consume\",\n value: function consume(n, hasStrings) {\n var ret;\n if (n < this.head.data.length) {\n // `slice` is the same for buffers and strings.\n ret = this.head.data.slice(0, n);\n this.head.data = this.head.data.slice(n);\n } else if (n === this.head.data.length) {\n // First chunk is a perfect match.\n ret = this.shift();\n } else {\n // Result spans more than one buffer.\n ret = hasStrings ? this._getString(n) : this._getBuffer(n);\n }\n return ret;\n }\n }, {\n key: \"first\",\n value: function first() {\n return this.head.data;\n }\n\n // Consumes a specified amount of characters from the buffered data.\n }, {\n key: \"_getString\",\n value: function _getString(n) {\n var p = this.head;\n var c = 1;\n var ret = p.data;\n n -= ret.length;\n while (p = p.next) {\n var str = p.data;\n var nb = n > str.length ? str.length : n;\n if (nb === str.length) ret += str;else ret += str.slice(0, n);\n n -= nb;\n if (n === 0) {\n if (nb === str.length) {\n ++c;\n if (p.next) this.head = p.next;else this.head = this.tail = null;\n } else {\n this.head = p;\n p.data = str.slice(nb);\n }\n break;\n }\n ++c;\n }\n this.length -= c;\n return ret;\n }\n\n // Consumes a specified amount of bytes from the buffered data.\n }, {\n key: \"_getBuffer\",\n value: function _getBuffer(n) {\n var ret = Buffer.allocUnsafe(n);\n var p = this.head;\n var c = 1;\n p.data.copy(ret);\n n -= p.data.length;\n while (p = p.next) {\n var buf = p.data;\n var nb = n > buf.length ? buf.length : n;\n buf.copy(ret, ret.length - n, 0, nb);\n n -= nb;\n if (n === 0) {\n if (nb === buf.length) {\n ++c;\n if (p.next) this.head = p.next;else this.head = this.tail = null;\n } else {\n this.head = p;\n p.data = buf.slice(nb);\n }\n break;\n }\n ++c;\n }\n this.length -= c;\n return ret;\n }\n\n // Make sure the linked list only shows the minimal necessary information.\n }, {\n key: custom,\n value: function value(_, options) {\n return inspect(this, _objectSpread(_objectSpread({}, options), {}, {\n // Only inspect one level.\n depth: 0,\n // It should not recurse.\n customInspect: false\n }));\n }\n }]);\n return BufferList;\n}();","'use strict';\n\n// undocumented cb() API, needed for core, not for public API\nfunction destroy(err, cb) {\n var _this = this;\n var readableDestroyed = this._readableState && this._readableState.destroyed;\n var writableDestroyed = this._writableState && this._writableState.destroyed;\n if (readableDestroyed || writableDestroyed) {\n if (cb) {\n cb(err);\n } else if (err) {\n if (!this._writableState) {\n process.nextTick(emitErrorNT, this, err);\n } else if (!this._writableState.errorEmitted) {\n this._writableState.errorEmitted = true;\n process.nextTick(emitErrorNT, this, err);\n }\n }\n return this;\n }\n\n // we set destroyed to true before firing error callbacks in order\n // to make it re-entrance safe in case destroy() is called within callbacks\n\n if (this._readableState) {\n this._readableState.destroyed = true;\n }\n\n // if this is a duplex stream mark the writable part as destroyed as well\n if (this._writableState) {\n this._writableState.destroyed = true;\n }\n this._destroy(err || null, function (err) {\n if (!cb && err) {\n if (!_this._writableState) {\n process.nextTick(emitErrorAndCloseNT, _this, err);\n } else if (!_this._writableState.errorEmitted) {\n _this._writableState.errorEmitted = true;\n process.nextTick(emitErrorAndCloseNT, _this, err);\n } else {\n process.nextTick(emitCloseNT, _this);\n }\n } else if (cb) {\n process.nextTick(emitCloseNT, _this);\n cb(err);\n } else {\n process.nextTick(emitCloseNT, _this);\n }\n });\n return this;\n}\nfunction emitErrorAndCloseNT(self, err) {\n emitErrorNT(self, err);\n emitCloseNT(self);\n}\nfunction emitCloseNT(self) {\n if (self._writableState && !self._writableState.emitClose) return;\n if (self._readableState && !self._readableState.emitClose) return;\n self.emit('close');\n}\nfunction undestroy() {\n if (this._readableState) {\n this._readableState.destroyed = false;\n this._readableState.reading = false;\n this._readableState.ended = false;\n this._readableState.endEmitted = false;\n }\n if (this._writableState) {\n this._writableState.destroyed = false;\n this._writableState.ended = false;\n this._writableState.ending = false;\n this._writableState.finalCalled = false;\n this._writableState.prefinished = false;\n this._writableState.finished = false;\n this._writableState.errorEmitted = false;\n }\n}\nfunction emitErrorNT(self, err) {\n self.emit('error', err);\n}\nfunction errorOrDestroy(stream, err) {\n // We have tests that rely on errors being emitted\n // in the same tick, so changing this is semver major.\n // For now when you opt-in to autoDestroy we allow\n // the error to be emitted nextTick. In a future\n // semver major update we should change the default to this.\n\n var rState = stream._readableState;\n var wState = stream._writableState;\n if (rState && rState.autoDestroy || wState && wState.autoDestroy) stream.destroy(err);else stream.emit('error', err);\n}\nmodule.exports = {\n destroy: destroy,\n undestroy: undestroy,\n errorOrDestroy: errorOrDestroy\n};","// Ported from https://github.com/mafintosh/end-of-stream with\n// permission from the author, Mathias Buus (@mafintosh).\n\n'use strict';\n\nvar ERR_STREAM_PREMATURE_CLOSE = require('../../../errors').codes.ERR_STREAM_PREMATURE_CLOSE;\nfunction once(callback) {\n var called = false;\n return function () {\n if (called) return;\n called = true;\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n callback.apply(this, args);\n };\n}\nfunction noop() {}\nfunction isRequest(stream) {\n return stream.setHeader && typeof stream.abort === 'function';\n}\nfunction eos(stream, opts, callback) {\n if (typeof opts === 'function') return eos(stream, null, opts);\n if (!opts) opts = {};\n callback = once(callback || noop);\n var readable = opts.readable || opts.readable !== false && stream.readable;\n var writable = opts.writable || opts.writable !== false && stream.writable;\n var onlegacyfinish = function onlegacyfinish() {\n if (!stream.writable) onfinish();\n };\n var writableEnded = stream._writableState && stream._writableState.finished;\n var onfinish = function onfinish() {\n writable = false;\n writableEnded = true;\n if (!readable) callback.call(stream);\n };\n var readableEnded = stream._readableState && stream._readableState.endEmitted;\n var onend = function onend() {\n readable = false;\n readableEnded = true;\n if (!writable) callback.call(stream);\n };\n var onerror = function onerror(err) {\n callback.call(stream, err);\n };\n var onclose = function onclose() {\n var err;\n if (readable && !readableEnded) {\n if (!stream._readableState || !stream._readableState.ended) err = new ERR_STREAM_PREMATURE_CLOSE();\n return callback.call(stream, err);\n }\n if (writable && !writableEnded) {\n if (!stream._writableState || !stream._writableState.ended) err = new ERR_STREAM_PREMATURE_CLOSE();\n return callback.call(stream, err);\n }\n };\n var onrequest = function onrequest() {\n stream.req.on('finish', onfinish);\n };\n if (isRequest(stream)) {\n stream.on('complete', onfinish);\n stream.on('abort', onclose);\n if (stream.req) onrequest();else stream.on('request', onrequest);\n } else if (writable && !stream._writableState) {\n // legacy streams\n stream.on('end', onlegacyfinish);\n stream.on('close', onlegacyfinish);\n }\n stream.on('end', onend);\n stream.on('finish', onfinish);\n if (opts.error !== false) stream.on('error', onerror);\n stream.on('close', onclose);\n return function () {\n stream.removeListener('complete', onfinish);\n stream.removeListener('abort', onclose);\n stream.removeListener('request', onrequest);\n if (stream.req) stream.req.removeListener('finish', onfinish);\n stream.removeListener('end', onlegacyfinish);\n stream.removeListener('close', onlegacyfinish);\n stream.removeListener('finish', onfinish);\n stream.removeListener('end', onend);\n stream.removeListener('error', onerror);\n stream.removeListener('close', onclose);\n };\n}\nmodule.exports = eos;","module.exports = function () {\n throw new Error('Readable.from is not available in the browser')\n};\n","// Ported from https://github.com/mafintosh/pump with\n// permission from the author, Mathias Buus (@mafintosh).\n\n'use strict';\n\nvar eos;\nfunction once(callback) {\n var called = false;\n return function () {\n if (called) return;\n called = true;\n callback.apply(void 0, arguments);\n };\n}\nvar _require$codes = require('../../../errors').codes,\n ERR_MISSING_ARGS = _require$codes.ERR_MISSING_ARGS,\n ERR_STREAM_DESTROYED = _require$codes.ERR_STREAM_DESTROYED;\nfunction noop(err) {\n // Rethrow the error if it exists to avoid swallowing it\n if (err) throw err;\n}\nfunction isRequest(stream) {\n return stream.setHeader && typeof stream.abort === 'function';\n}\nfunction destroyer(stream, reading, writing, callback) {\n callback = once(callback);\n var closed = false;\n stream.on('close', function () {\n closed = true;\n });\n if (eos === undefined) eos = require('./end-of-stream');\n eos(stream, {\n readable: reading,\n writable: writing\n }, function (err) {\n if (err) return callback(err);\n closed = true;\n callback();\n });\n var destroyed = false;\n return function (err) {\n if (closed) return;\n if (destroyed) return;\n destroyed = true;\n\n // request.destroy just do .end - .abort is what we want\n if (isRequest(stream)) return stream.abort();\n if (typeof stream.destroy === 'function') return stream.destroy();\n callback(err || new ERR_STREAM_DESTROYED('pipe'));\n };\n}\nfunction call(fn) {\n fn();\n}\nfunction pipe(from, to) {\n return from.pipe(to);\n}\nfunction popCallback(streams) {\n if (!streams.length) return noop;\n if (typeof streams[streams.length - 1] !== 'function') return noop;\n return streams.pop();\n}\nfunction pipeline() {\n for (var _len = arguments.length, streams = new Array(_len), _key = 0; _key < _len; _key++) {\n streams[_key] = arguments[_key];\n }\n var callback = popCallback(streams);\n if (Array.isArray(streams[0])) streams = streams[0];\n if (streams.length < 2) {\n throw new ERR_MISSING_ARGS('streams');\n }\n var error;\n var destroys = streams.map(function (stream, i) {\n var reading = i < streams.length - 1;\n var writing = i > 0;\n return destroyer(stream, reading, writing, function (err) {\n if (!error) error = err;\n if (err) destroys.forEach(call);\n if (reading) return;\n destroys.forEach(call);\n callback(error);\n });\n });\n return streams.reduce(pipe);\n}\nmodule.exports = pipeline;","'use strict';\n\nvar ERR_INVALID_OPT_VALUE = require('../../../errors').codes.ERR_INVALID_OPT_VALUE;\nfunction highWaterMarkFrom(options, isDuplex, duplexKey) {\n return options.highWaterMark != null ? options.highWaterMark : isDuplex ? options[duplexKey] : null;\n}\nfunction getHighWaterMark(state, options, duplexKey, isDuplex) {\n var hwm = highWaterMarkFrom(options, isDuplex, duplexKey);\n if (hwm != null) {\n if (!(isFinite(hwm) && Math.floor(hwm) === hwm) || hwm < 0) {\n var name = isDuplex ? duplexKey : 'highWaterMark';\n throw new ERR_INVALID_OPT_VALUE(name, hwm);\n }\n return Math.floor(hwm);\n }\n\n // Default value\n return state.objectMode ? 16 : 16 * 1024;\n}\nmodule.exports = {\n getHighWaterMark: getHighWaterMark\n};","module.exports = require('events').EventEmitter;\n","exports = module.exports = require('./lib/_stream_readable.js');\nexports.Stream = exports;\nexports.Readable = exports;\nexports.Writable = require('./lib/_stream_writable.js');\nexports.Duplex = require('./lib/_stream_duplex.js');\nexports.Transform = require('./lib/_stream_transform.js');\nexports.PassThrough = require('./lib/_stream_passthrough.js');\nexports.finished = require('./lib/internal/streams/end-of-stream.js');\nexports.pipeline = require('./lib/internal/streams/pipeline.js');\n","'use strict';\n\nvar required = require('requires-port')\n , qs = require('querystringify')\n , controlOrWhitespace = /^[\\x00-\\x20\\u00a0\\u1680\\u2000-\\u200a\\u2028\\u2029\\u202f\\u205f\\u3000\\ufeff]+/\n , CRHTLF = /[\\n\\r\\t]/g\n , slashes = /^[A-Za-z][A-Za-z0-9+-.]*:\\/\\//\n , port = /:\\d+$/\n , protocolre = /^([a-z][a-z0-9.+-]*:)?(\\/\\/)?([\\\\/]+)?([\\S\\s]*)/i\n , windowsDriveLetter = /^[a-zA-Z]:/;\n\n/**\n * Remove control characters and whitespace from the beginning of a string.\n *\n * @param {Object|String} str String to trim.\n * @returns {String} A new string representing `str` stripped of control\n * characters and whitespace from its beginning.\n * @public\n */\nfunction trimLeft(str) {\n return (str ? str : '').toString().replace(controlOrWhitespace, '');\n}\n\n/**\n * These are the parse rules for the URL parser, it informs the parser\n * about:\n *\n * 0. The char it Needs to parse, if it's a string it should be done using\n * indexOf, RegExp using exec and NaN means set as current value.\n * 1. The property we should set when parsing this value.\n * 2. Indication if it's backwards or forward parsing, when set as number it's\n * the value of extra chars that should be split off.\n * 3. Inherit from location if non existing in the parser.\n * 4. `toLowerCase` the resulting value.\n */\nvar rules = [\n ['#', 'hash'], // Extract from the back.\n ['?', 'query'], // Extract from the back.\n function sanitize(address, url) { // Sanitize what is left of the address\n return isSpecial(url.protocol) ? address.replace(/\\\\/g, '/') : address;\n },\n ['/', 'pathname'], // Extract from the back.\n ['@', 'auth', 1], // Extract from the front.\n [NaN, 'host', undefined, 1, 1], // Set left over value.\n [/:(\\d*)$/, 'port', undefined, 1], // RegExp the back.\n [NaN, 'hostname', undefined, 1, 1] // Set left over.\n];\n\n/**\n * These properties should not be copied or inherited from. This is only needed\n * for all non blob URL's as a blob URL does not include a hash, only the\n * origin.\n *\n * @type {Object}\n * @private\n */\nvar ignore = { hash: 1, query: 1 };\n\n/**\n * The location object differs when your code is loaded through a normal page,\n * Worker or through a worker using a blob. And with the blobble begins the\n * trouble as the location object will contain the URL of the blob, not the\n * location of the page where our code is loaded in. The actual origin is\n * encoded in the `pathname` so we can thankfully generate a good \"default\"\n * location from it so we can generate proper relative URL's again.\n *\n * @param {Object|String} loc Optional default location object.\n * @returns {Object} lolcation object.\n * @public\n */\nfunction lolcation(loc) {\n var globalVar;\n\n if (typeof window !== 'undefined') globalVar = window;\n else if (typeof global !== 'undefined') globalVar = global;\n else if (typeof self !== 'undefined') globalVar = self;\n else globalVar = {};\n\n var location = globalVar.location || {};\n loc = loc || location;\n\n var finaldestination = {}\n , type = typeof loc\n , key;\n\n if ('blob:' === loc.protocol) {\n finaldestination = new Url(unescape(loc.pathname), {});\n } else if ('string' === type) {\n finaldestination = new Url(loc, {});\n for (key in ignore) delete finaldestination[key];\n } else if ('object' === type) {\n for (key in loc) {\n if (key in ignore) continue;\n finaldestination[key] = loc[key];\n }\n\n if (finaldestination.slashes === undefined) {\n finaldestination.slashes = slashes.test(loc.href);\n }\n }\n\n return finaldestination;\n}\n\n/**\n * Check whether a protocol scheme is special.\n *\n * @param {String} The protocol scheme of the URL\n * @return {Boolean} `true` if the protocol scheme is special, else `false`\n * @private\n */\nfunction isSpecial(scheme) {\n return (\n scheme === 'file:' ||\n scheme === 'ftp:' ||\n scheme === 'http:' ||\n scheme === 'https:' ||\n scheme === 'ws:' ||\n scheme === 'wss:'\n );\n}\n\n/**\n * @typedef ProtocolExtract\n * @type Object\n * @property {String} protocol Protocol matched in the URL, in lowercase.\n * @property {Boolean} slashes `true` if protocol is followed by \"//\", else `false`.\n * @property {String} rest Rest of the URL that is not part of the protocol.\n */\n\n/**\n * Extract protocol information from a URL with/without double slash (\"//\").\n *\n * @param {String} address URL we want to extract from.\n * @param {Object} location\n * @return {ProtocolExtract} Extracted information.\n * @private\n */\nfunction extractProtocol(address, location) {\n address = trimLeft(address);\n address = address.replace(CRHTLF, '');\n location = location || {};\n\n var match = protocolre.exec(address);\n var protocol = match[1] ? match[1].toLowerCase() : '';\n var forwardSlashes = !!match[2];\n var otherSlashes = !!match[3];\n var slashesCount = 0;\n var rest;\n\n if (forwardSlashes) {\n if (otherSlashes) {\n rest = match[2] + match[3] + match[4];\n slashesCount = match[2].length + match[3].length;\n } else {\n rest = match[2] + match[4];\n slashesCount = match[2].length;\n }\n } else {\n if (otherSlashes) {\n rest = match[3] + match[4];\n slashesCount = match[3].length;\n } else {\n rest = match[4]\n }\n }\n\n if (protocol === 'file:') {\n if (slashesCount >= 2) {\n rest = rest.slice(2);\n }\n } else if (isSpecial(protocol)) {\n rest = match[4];\n } else if (protocol) {\n if (forwardSlashes) {\n rest = rest.slice(2);\n }\n } else if (slashesCount >= 2 && isSpecial(location.protocol)) {\n rest = match[4];\n }\n\n return {\n protocol: protocol,\n slashes: forwardSlashes || isSpecial(protocol),\n slashesCount: slashesCount,\n rest: rest\n };\n}\n\n/**\n * Resolve a relative URL pathname against a base URL pathname.\n *\n * @param {String} relative Pathname of the relative URL.\n * @param {String} base Pathname of the base URL.\n * @return {String} Resolved pathname.\n * @private\n */\nfunction resolve(relative, base) {\n if (relative === '') return base;\n\n var path = (base || '/').split('/').slice(0, -1).concat(relative.split('/'))\n , i = path.length\n , last = path[i - 1]\n , unshift = false\n , up = 0;\n\n while (i--) {\n if (path[i] === '.') {\n path.splice(i, 1);\n } else if (path[i] === '..') {\n path.splice(i, 1);\n up++;\n } else if (up) {\n if (i === 0) unshift = true;\n path.splice(i, 1);\n up--;\n }\n }\n\n if (unshift) path.unshift('');\n if (last === '.' || last === '..') path.push('');\n\n return path.join('/');\n}\n\n/**\n * The actual URL instance. Instead of returning an object we've opted-in to\n * create an actual constructor as it's much more memory efficient and\n * faster and it pleases my OCD.\n *\n * It is worth noting that we should not use `URL` as class name to prevent\n * clashes with the global URL instance that got introduced in browsers.\n *\n * @constructor\n * @param {String} address URL we want to parse.\n * @param {Object|String} [location] Location defaults for relative paths.\n * @param {Boolean|Function} [parser] Parser for the query string.\n * @private\n */\nfunction Url(address, location, parser) {\n address = trimLeft(address);\n address = address.replace(CRHTLF, '');\n\n if (!(this instanceof Url)) {\n return new Url(address, location, parser);\n }\n\n var relative, extracted, parse, instruction, index, key\n , instructions = rules.slice()\n , type = typeof location\n , url = this\n , i = 0;\n\n //\n // The following if statements allows this module two have compatibility with\n // 2 different API:\n //\n // 1. Node.js's `url.parse` api which accepts a URL, boolean as arguments\n // where the boolean indicates that the query string should also be parsed.\n //\n // 2. The `URL` interface of the browser which accepts a URL, object as\n // arguments. The supplied object will be used as default values / fall-back\n // for relative paths.\n //\n if ('object' !== type && 'string' !== type) {\n parser = location;\n location = null;\n }\n\n if (parser && 'function' !== typeof parser) parser = qs.parse;\n\n location = lolcation(location);\n\n //\n // Extract protocol information before running the instructions.\n //\n extracted = extractProtocol(address || '', location);\n relative = !extracted.protocol && !extracted.slashes;\n url.slashes = extracted.slashes || relative && location.slashes;\n url.protocol = extracted.protocol || location.protocol || '';\n address = extracted.rest;\n\n //\n // When the authority component is absent the URL starts with a path\n // component.\n //\n if (\n extracted.protocol === 'file:' && (\n extracted.slashesCount !== 2 || windowsDriveLetter.test(address)) ||\n (!extracted.slashes &&\n (extracted.protocol ||\n extracted.slashesCount < 2 ||\n !isSpecial(url.protocol)))\n ) {\n instructions[3] = [/(.*)/, 'pathname'];\n }\n\n for (; i < instructions.length; i++) {\n instruction = instructions[i];\n\n if (typeof instruction === 'function') {\n address = instruction(address, url);\n continue;\n }\n\n parse = instruction[0];\n key = instruction[1];\n\n if (parse !== parse) {\n url[key] = address;\n } else if ('string' === typeof parse) {\n index = parse === '@'\n ? address.lastIndexOf(parse)\n : address.indexOf(parse);\n\n if (~index) {\n if ('number' === typeof instruction[2]) {\n url[key] = address.slice(0, index);\n address = address.slice(index + instruction[2]);\n } else {\n url[key] = address.slice(index);\n address = address.slice(0, index);\n }\n }\n } else if ((index = parse.exec(address))) {\n url[key] = index[1];\n address = address.slice(0, index.index);\n }\n\n url[key] = url[key] || (\n relative && instruction[3] ? location[key] || '' : ''\n );\n\n //\n // Hostname, host and protocol should be lowercased so they can be used to\n // create a proper `origin`.\n //\n if (instruction[4]) url[key] = url[key].toLowerCase();\n }\n\n //\n // Also parse the supplied query string in to an object. If we're supplied\n // with a custom parser as function use that instead of the default build-in\n // parser.\n //\n if (parser) url.query = parser(url.query);\n\n //\n // If the URL is relative, resolve the pathname against the base URL.\n //\n if (\n relative\n && location.slashes\n && url.pathname.charAt(0) !== '/'\n && (url.pathname !== '' || location.pathname !== '')\n ) {\n url.pathname = resolve(url.pathname, location.pathname);\n }\n\n //\n // Default to a / for pathname if none exists. This normalizes the URL\n // to always have a /\n //\n if (url.pathname.charAt(0) !== '/' && isSpecial(url.protocol)) {\n url.pathname = '/' + url.pathname;\n }\n\n //\n // We should not add port numbers if they are already the default port number\n // for a given protocol. As the host also contains the port number we're going\n // override it with the hostname which contains no port number.\n //\n if (!required(url.port, url.protocol)) {\n url.host = url.hostname;\n url.port = '';\n }\n\n //\n // Parse down the `auth` for the username and password.\n //\n url.username = url.password = '';\n\n if (url.auth) {\n index = url.auth.indexOf(':');\n\n if (~index) {\n url.username = url.auth.slice(0, index);\n url.username = encodeURIComponent(decodeURIComponent(url.username));\n\n url.password = url.auth.slice(index + 1);\n url.password = encodeURIComponent(decodeURIComponent(url.password))\n } else {\n url.username = encodeURIComponent(decodeURIComponent(url.auth));\n }\n\n url.auth = url.password ? url.username +':'+ url.password : url.username;\n }\n\n url.origin = url.protocol !== 'file:' && isSpecial(url.protocol) && url.host\n ? url.protocol +'//'+ url.host\n : 'null';\n\n //\n // The href is just the compiled result.\n //\n url.href = url.toString();\n}\n\n/**\n * This is convenience method for changing properties in the URL instance to\n * insure that they all propagate correctly.\n *\n * @param {String} part Property we need to adjust.\n * @param {Mixed} value The newly assigned value.\n * @param {Boolean|Function} fn When setting the query, it will be the function\n * used to parse the query.\n * When setting the protocol, double slash will be\n * removed from the final url if it is true.\n * @returns {URL} URL instance for chaining.\n * @public\n */\nfunction set(part, value, fn) {\n var url = this;\n\n switch (part) {\n case 'query':\n if ('string' === typeof value && value.length) {\n value = (fn || qs.parse)(value);\n }\n\n url[part] = value;\n break;\n\n case 'port':\n url[part] = value;\n\n if (!required(value, url.protocol)) {\n url.host = url.hostname;\n url[part] = '';\n } else if (value) {\n url.host = url.hostname +':'+ value;\n }\n\n break;\n\n case 'hostname':\n url[part] = value;\n\n if (url.port) value += ':'+ url.port;\n url.host = value;\n break;\n\n case 'host':\n url[part] = value;\n\n if (port.test(value)) {\n value = value.split(':');\n url.port = value.pop();\n url.hostname = value.join(':');\n } else {\n url.hostname = value;\n url.port = '';\n }\n\n break;\n\n case 'protocol':\n url.protocol = value.toLowerCase();\n url.slashes = !fn;\n break;\n\n case 'pathname':\n case 'hash':\n if (value) {\n var char = part === 'pathname' ? '/' : '#';\n url[part] = value.charAt(0) !== char ? char + value : value;\n } else {\n url[part] = value;\n }\n break;\n\n case 'username':\n case 'password':\n url[part] = encodeURIComponent(value);\n break;\n\n case 'auth':\n var index = value.indexOf(':');\n\n if (~index) {\n url.username = value.slice(0, index);\n url.username = encodeURIComponent(decodeURIComponent(url.username));\n\n url.password = value.slice(index + 1);\n url.password = encodeURIComponent(decodeURIComponent(url.password));\n } else {\n url.username = encodeURIComponent(decodeURIComponent(value));\n }\n }\n\n for (var i = 0; i < rules.length; i++) {\n var ins = rules[i];\n\n if (ins[4]) url[ins[1]] = url[ins[1]].toLowerCase();\n }\n\n url.auth = url.password ? url.username +':'+ url.password : url.username;\n\n url.origin = url.protocol !== 'file:' && isSpecial(url.protocol) && url.host\n ? url.protocol +'//'+ url.host\n : 'null';\n\n url.href = url.toString();\n\n return url;\n}\n\n/**\n * Transform the properties back in to a valid and full URL string.\n *\n * @param {Function} stringify Optional query stringify function.\n * @returns {String} Compiled version of the URL.\n * @public\n */\nfunction toString(stringify) {\n if (!stringify || 'function' !== typeof stringify) stringify = qs.stringify;\n\n var query\n , url = this\n , host = url.host\n , protocol = url.protocol;\n\n if (protocol && protocol.charAt(protocol.length - 1) !== ':') protocol += ':';\n\n var result =\n protocol +\n ((url.protocol && url.slashes) || isSpecial(url.protocol) ? '//' : '');\n\n if (url.username) {\n result += url.username;\n if (url.password) result += ':'+ url.password;\n result += '@';\n } else if (url.password) {\n result += ':'+ url.password;\n result += '@';\n } else if (\n url.protocol !== 'file:' &&\n isSpecial(url.protocol) &&\n !host &&\n url.pathname !== '/'\n ) {\n //\n // Add back the empty userinfo, otherwise the original invalid URL\n // might be transformed into a valid one with `url.pathname` as host.\n //\n result += '@';\n }\n\n //\n // Trailing colon is removed from `url.host` when it is parsed. If it still\n // ends with a colon, then add back the trailing colon that was removed. This\n // prevents an invalid URL from being transformed into a valid one.\n //\n if (host[host.length - 1] === ':' || (port.test(url.hostname) && !url.port)) {\n host += ':';\n }\n\n result += host + url.pathname;\n\n query = 'object' === typeof url.query ? stringify(url.query) : url.query;\n if (query) result += '?' !== query.charAt(0) ? '?'+ query : query;\n\n if (url.hash) result += url.hash;\n\n return result;\n}\n\nUrl.prototype = { set: set, toString: toString };\n\n//\n// Expose the URL parser and some additional properties that might be useful for\n// others or testing.\n//\nUrl.extractProtocol = extractProtocol;\nUrl.location = lolcation;\nUrl.trimLeft = trimLeft;\nUrl.qs = qs;\n\nmodule.exports = Url;\n","/*\n * Copyright Joyent, Inc. and other Node contributors.\n *\n * Permission is hereby granted, free of charge, to any person obtaining a\n * copy of this software and associated documentation files (the\n * \"Software\"), to deal in the Software without restriction, including\n * without limitation the rights to use, copy, modify, merge, publish,\n * distribute, sublicense, and/or sell copies of the Software, and to permit\n * persons to whom the Software is furnished to do so, subject to the\n * following conditions:\n *\n * The above copyright notice and this permission notice shall be included\n * in all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN\n * NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n * DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR\n * OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\n * USE OR OTHER DEALINGS IN THE SOFTWARE.\n */\n\n'use strict';\n\nvar punycode = require('punycode/');\n\nfunction Url() {\n this.protocol = null;\n this.slashes = null;\n this.auth = null;\n this.host = null;\n this.port = null;\n this.hostname = null;\n this.hash = null;\n this.search = null;\n this.query = null;\n this.pathname = null;\n this.path = null;\n this.href = null;\n}\n\n// Reference: RFC 3986, RFC 1808, RFC 2396\n\n/*\n * define these here so at least they only have to be\n * compiled once on the first module load.\n */\nvar protocolPattern = /^([a-z0-9.+-]+:)/i,\n portPattern = /:[0-9]*$/,\n\n // Special case for a simple path URL\n simplePathPattern = /^(\\/\\/?(?!\\/)[^?\\s]*)(\\?[^\\s]*)?$/,\n\n /*\n * RFC 2396: characters reserved for delimiting URLs.\n * We actually just auto-escape these.\n */\n delims = [\n '<', '>', '\"', '`', ' ', '\\r', '\\n', '\\t'\n ],\n\n // RFC 2396: characters not allowed for various reasons.\n unwise = [\n '{', '}', '|', '\\\\', '^', '`'\n ].concat(delims),\n\n // Allowed by RFCs, but cause of XSS attacks. Always escape these.\n autoEscape = ['\\''].concat(unwise),\n /*\n * Characters that are never ever allowed in a hostname.\n * Note that any invalid chars are also handled, but these\n * are the ones that are *expected* to be seen, so we fast-path\n * them.\n */\n nonHostChars = [\n '%', '/', '?', ';', '#'\n ].concat(autoEscape),\n hostEndingChars = [\n '/', '?', '#'\n ],\n hostnameMaxLen = 255,\n hostnamePartPattern = /^[+a-z0-9A-Z_-]{0,63}$/,\n hostnamePartStart = /^([+a-z0-9A-Z_-]{0,63})(.*)$/,\n // protocols that can allow \"unsafe\" and \"unwise\" chars.\n unsafeProtocol = {\n javascript: true,\n 'javascript:': true\n },\n // protocols that never have a hostname.\n hostlessProtocol = {\n javascript: true,\n 'javascript:': true\n },\n // protocols that always contain a // bit.\n slashedProtocol = {\n http: true,\n https: true,\n ftp: true,\n gopher: true,\n file: true,\n 'http:': true,\n 'https:': true,\n 'ftp:': true,\n 'gopher:': true,\n 'file:': true\n },\n querystring = require('qs');\n\nfunction urlParse(url, parseQueryString, slashesDenoteHost) {\n if (url && typeof url === 'object' && url instanceof Url) { return url; }\n\n var u = new Url();\n u.parse(url, parseQueryString, slashesDenoteHost);\n return u;\n}\n\nUrl.prototype.parse = function (url, parseQueryString, slashesDenoteHost) {\n if (typeof url !== 'string') {\n throw new TypeError(\"Parameter 'url' must be a string, not \" + typeof url);\n }\n\n /*\n * Copy chrome, IE, opera backslash-handling behavior.\n * Back slashes before the query string get converted to forward slashes\n * See: https://code.google.com/p/chromium/issues/detail?id=25916\n */\n var queryIndex = url.indexOf('?'),\n splitter = queryIndex !== -1 && queryIndex < url.indexOf('#') ? '?' : '#',\n uSplit = url.split(splitter),\n slashRegex = /\\\\/g;\n uSplit[0] = uSplit[0].replace(slashRegex, '/');\n url = uSplit.join(splitter);\n\n var rest = url;\n\n /*\n * trim before proceeding.\n * This is to support parse stuff like \" http://foo.com \\n\"\n */\n rest = rest.trim();\n\n if (!slashesDenoteHost && url.split('#').length === 1) {\n // Try fast path regexp\n var simplePath = simplePathPattern.exec(rest);\n if (simplePath) {\n this.path = rest;\n this.href = rest;\n this.pathname = simplePath[1];\n if (simplePath[2]) {\n this.search = simplePath[2];\n if (parseQueryString) {\n this.query = querystring.parse(this.search.substr(1));\n } else {\n this.query = this.search.substr(1);\n }\n } else if (parseQueryString) {\n this.search = '';\n this.query = {};\n }\n return this;\n }\n }\n\n var proto = protocolPattern.exec(rest);\n if (proto) {\n proto = proto[0];\n var lowerProto = proto.toLowerCase();\n this.protocol = lowerProto;\n rest = rest.substr(proto.length);\n }\n\n /*\n * figure out if it's got a host\n * user@server is *always* interpreted as a hostname, and url\n * resolution will treat //foo/bar as host=foo,path=bar because that's\n * how the browser resolves relative URLs.\n */\n if (slashesDenoteHost || proto || rest.match(/^\\/\\/[^@/]+@[^@/]+/)) {\n var slashes = rest.substr(0, 2) === '//';\n if (slashes && !(proto && hostlessProtocol[proto])) {\n rest = rest.substr(2);\n this.slashes = true;\n }\n }\n\n if (!hostlessProtocol[proto] && (slashes || (proto && !slashedProtocol[proto]))) {\n\n /*\n * there's a hostname.\n * the first instance of /, ?, ;, or # ends the host.\n *\n * If there is an @ in the hostname, then non-host chars *are* allowed\n * to the left of the last @ sign, unless some host-ending character\n * comes *before* the @-sign.\n * URLs are obnoxious.\n *\n * ex:\n * http://a@b@c/ => user:a@b host:c\n * http://a@b?@c => user:a host:c path:/?@c\n */\n\n /*\n * v0.12 TODO(isaacs): This is not quite how Chrome does things.\n * Review our test case against browsers more comprehensively.\n */\n\n // find the first instance of any hostEndingChars\n var hostEnd = -1;\n for (var i = 0; i < hostEndingChars.length; i++) {\n var hec = rest.indexOf(hostEndingChars[i]);\n if (hec !== -1 && (hostEnd === -1 || hec < hostEnd)) { hostEnd = hec; }\n }\n\n /*\n * at this point, either we have an explicit point where the\n * auth portion cannot go past, or the last @ char is the decider.\n */\n var auth, atSign;\n if (hostEnd === -1) {\n // atSign can be anywhere.\n atSign = rest.lastIndexOf('@');\n } else {\n /*\n * atSign must be in auth portion.\n * http://a@b/c@d => host:b auth:a path:/c@d\n */\n atSign = rest.lastIndexOf('@', hostEnd);\n }\n\n /*\n * Now we have a portion which is definitely the auth.\n * Pull that off.\n */\n if (atSign !== -1) {\n auth = rest.slice(0, atSign);\n rest = rest.slice(atSign + 1);\n this.auth = decodeURIComponent(auth);\n }\n\n // the host is the remaining to the left of the first non-host char\n hostEnd = -1;\n for (var i = 0; i < nonHostChars.length; i++) {\n var hec = rest.indexOf(nonHostChars[i]);\n if (hec !== -1 && (hostEnd === -1 || hec < hostEnd)) { hostEnd = hec; }\n }\n // if we still have not hit it, then the entire thing is a host.\n if (hostEnd === -1) { hostEnd = rest.length; }\n\n this.host = rest.slice(0, hostEnd);\n rest = rest.slice(hostEnd);\n\n // pull out port.\n this.parseHost();\n\n /*\n * we've indicated that there is a hostname,\n * so even if it's empty, it has to be present.\n */\n this.hostname = this.hostname || '';\n\n /*\n * if hostname begins with [ and ends with ]\n * assume that it's an IPv6 address.\n */\n var ipv6Hostname = this.hostname[0] === '[' && this.hostname[this.hostname.length - 1] === ']';\n\n // validate a little.\n if (!ipv6Hostname) {\n var hostparts = this.hostname.split(/\\./);\n for (var i = 0, l = hostparts.length; i < l; i++) {\n var part = hostparts[i];\n if (!part) { continue; }\n if (!part.match(hostnamePartPattern)) {\n var newpart = '';\n for (var j = 0, k = part.length; j < k; j++) {\n if (part.charCodeAt(j) > 127) {\n /*\n * we replace non-ASCII char with a temporary placeholder\n * we need this to make sure size of hostname is not\n * broken by replacing non-ASCII by nothing\n */\n newpart += 'x';\n } else {\n newpart += part[j];\n }\n }\n // we test again with ASCII char only\n if (!newpart.match(hostnamePartPattern)) {\n var validParts = hostparts.slice(0, i);\n var notHost = hostparts.slice(i + 1);\n var bit = part.match(hostnamePartStart);\n if (bit) {\n validParts.push(bit[1]);\n notHost.unshift(bit[2]);\n }\n if (notHost.length) {\n rest = '/' + notHost.join('.') + rest;\n }\n this.hostname = validParts.join('.');\n break;\n }\n }\n }\n }\n\n if (this.hostname.length > hostnameMaxLen) {\n this.hostname = '';\n } else {\n // hostnames are always lower case.\n this.hostname = this.hostname.toLowerCase();\n }\n\n if (!ipv6Hostname) {\n /*\n * IDNA Support: Returns a punycoded representation of \"domain\".\n * It only converts parts of the domain name that\n * have non-ASCII characters, i.e. it doesn't matter if\n * you call it with a domain that already is ASCII-only.\n */\n this.hostname = punycode.toASCII(this.hostname);\n }\n\n var p = this.port ? ':' + this.port : '';\n var h = this.hostname || '';\n this.host = h + p;\n this.href += this.host;\n\n /*\n * strip [ and ] from the hostname\n * the host field still retains them, though\n */\n if (ipv6Hostname) {\n this.hostname = this.hostname.substr(1, this.hostname.length - 2);\n if (rest[0] !== '/') {\n rest = '/' + rest;\n }\n }\n }\n\n /*\n * now rest is set to the post-host stuff.\n * chop off any delim chars.\n */\n if (!unsafeProtocol[lowerProto]) {\n\n /*\n * First, make 100% sure that any \"autoEscape\" chars get\n * escaped, even if encodeURIComponent doesn't think they\n * need to be.\n */\n for (var i = 0, l = autoEscape.length; i < l; i++) {\n var ae = autoEscape[i];\n if (rest.indexOf(ae) === -1) { continue; }\n var esc = encodeURIComponent(ae);\n if (esc === ae) {\n esc = escape(ae);\n }\n rest = rest.split(ae).join(esc);\n }\n }\n\n // chop off from the tail first.\n var hash = rest.indexOf('#');\n if (hash !== -1) {\n // got a fragment string.\n this.hash = rest.substr(hash);\n rest = rest.slice(0, hash);\n }\n var qm = rest.indexOf('?');\n if (qm !== -1) {\n this.search = rest.substr(qm);\n this.query = rest.substr(qm + 1);\n if (parseQueryString) {\n this.query = querystring.parse(this.query);\n }\n rest = rest.slice(0, qm);\n } else if (parseQueryString) {\n // no query string, but parseQueryString still requested\n this.search = '';\n this.query = {};\n }\n if (rest) { this.pathname = rest; }\n if (slashedProtocol[lowerProto] && this.hostname && !this.pathname) {\n this.pathname = '/';\n }\n\n // to support http.request\n if (this.pathname || this.search) {\n var p = this.pathname || '';\n var s = this.search || '';\n this.path = p + s;\n }\n\n // finally, reconstruct the href based on what has been validated.\n this.href = this.format();\n return this;\n};\n\n// format a parsed object into a url string\nfunction urlFormat(obj) {\n /*\n * ensure it's an object, and not a string url.\n * If it's an obj, this is a no-op.\n * this way, you can call url_format() on strings\n * to clean up potentially wonky urls.\n */\n if (typeof obj === 'string') { obj = urlParse(obj); }\n if (!(obj instanceof Url)) { return Url.prototype.format.call(obj); }\n return obj.format();\n}\n\nUrl.prototype.format = function () {\n var auth = this.auth || '';\n if (auth) {\n auth = encodeURIComponent(auth);\n auth = auth.replace(/%3A/i, ':');\n auth += '@';\n }\n\n var protocol = this.protocol || '',\n pathname = this.pathname || '',\n hash = this.hash || '',\n host = false,\n query = '';\n\n if (this.host) {\n host = auth + this.host;\n } else if (this.hostname) {\n host = auth + (this.hostname.indexOf(':') === -1 ? this.hostname : '[' + this.hostname + ']');\n if (this.port) {\n host += ':' + this.port;\n }\n }\n\n if (this.query && typeof this.query === 'object' && Object.keys(this.query).length) {\n query = querystring.stringify(this.query, {\n arrayFormat: 'repeat',\n addQueryPrefix: false\n });\n }\n\n var search = this.search || (query && ('?' + query)) || '';\n\n if (protocol && protocol.substr(-1) !== ':') { protocol += ':'; }\n\n /*\n * only the slashedProtocols get the //. Not mailto:, xmpp:, etc.\n * unless they had them to begin with.\n */\n if (this.slashes || (!protocol || slashedProtocol[protocol]) && host !== false) {\n host = '//' + (host || '');\n if (pathname && pathname.charAt(0) !== '/') { pathname = '/' + pathname; }\n } else if (!host) {\n host = '';\n }\n\n if (hash && hash.charAt(0) !== '#') { hash = '#' + hash; }\n if (search && search.charAt(0) !== '?') { search = '?' + search; }\n\n pathname = pathname.replace(/[?#]/g, function (match) {\n return encodeURIComponent(match);\n });\n search = search.replace('#', '%23');\n\n return protocol + host + pathname + search + hash;\n};\n\nfunction urlResolve(source, relative) {\n return urlParse(source, false, true).resolve(relative);\n}\n\nUrl.prototype.resolve = function (relative) {\n return this.resolveObject(urlParse(relative, false, true)).format();\n};\n\nfunction urlResolveObject(source, relative) {\n if (!source) { return relative; }\n return urlParse(source, false, true).resolveObject(relative);\n}\n\nUrl.prototype.resolveObject = function (relative) {\n if (typeof relative === 'string') {\n var rel = new Url();\n rel.parse(relative, false, true);\n relative = rel;\n }\n\n var result = new Url();\n var tkeys = Object.keys(this);\n for (var tk = 0; tk < tkeys.length; tk++) {\n var tkey = tkeys[tk];\n result[tkey] = this[tkey];\n }\n\n /*\n * hash is always overridden, no matter what.\n * even href=\"\" will remove it.\n */\n result.hash = relative.hash;\n\n // if the relative url is empty, then there's nothing left to do here.\n if (relative.href === '') {\n result.href = result.format();\n return result;\n }\n\n // hrefs like //foo/bar always cut to the protocol.\n if (relative.slashes && !relative.protocol) {\n // take everything except the protocol from relative\n var rkeys = Object.keys(relative);\n for (var rk = 0; rk < rkeys.length; rk++) {\n var rkey = rkeys[rk];\n if (rkey !== 'protocol') { result[rkey] = relative[rkey]; }\n }\n\n // urlParse appends trailing / to urls like http://www.example.com\n if (slashedProtocol[result.protocol] && result.hostname && !result.pathname) {\n result.pathname = '/';\n result.path = result.pathname;\n }\n\n result.href = result.format();\n return result;\n }\n\n if (relative.protocol && relative.protocol !== result.protocol) {\n /*\n * if it's a known url protocol, then changing\n * the protocol does weird things\n * first, if it's not file:, then we MUST have a host,\n * and if there was a path\n * to begin with, then we MUST have a path.\n * if it is file:, then the host is dropped,\n * because that's known to be hostless.\n * anything else is assumed to be absolute.\n */\n if (!slashedProtocol[relative.protocol]) {\n var keys = Object.keys(relative);\n for (var v = 0; v < keys.length; v++) {\n var k = keys[v];\n result[k] = relative[k];\n }\n result.href = result.format();\n return result;\n }\n\n result.protocol = relative.protocol;\n if (!relative.host && !hostlessProtocol[relative.protocol]) {\n var relPath = (relative.pathname || '').split('/');\n while (relPath.length && !(relative.host = relPath.shift())) { }\n if (!relative.host) { relative.host = ''; }\n if (!relative.hostname) { relative.hostname = ''; }\n if (relPath[0] !== '') { relPath.unshift(''); }\n if (relPath.length < 2) { relPath.unshift(''); }\n result.pathname = relPath.join('/');\n } else {\n result.pathname = relative.pathname;\n }\n result.search = relative.search;\n result.query = relative.query;\n result.host = relative.host || '';\n result.auth = relative.auth;\n result.hostname = relative.hostname || relative.host;\n result.port = relative.port;\n // to support http.request\n if (result.pathname || result.search) {\n var p = result.pathname || '';\n var s = result.search || '';\n result.path = p + s;\n }\n result.slashes = result.slashes || relative.slashes;\n result.href = result.format();\n return result;\n }\n\n var isSourceAbs = result.pathname && result.pathname.charAt(0) === '/',\n isRelAbs = relative.host || relative.pathname && relative.pathname.charAt(0) === '/',\n mustEndAbs = isRelAbs || isSourceAbs || (result.host && relative.pathname),\n removeAllDots = mustEndAbs,\n srcPath = result.pathname && result.pathname.split('/') || [],\n relPath = relative.pathname && relative.pathname.split('/') || [],\n psychotic = result.protocol && !slashedProtocol[result.protocol];\n\n /*\n * if the url is a non-slashed url, then relative\n * links like ../.. should be able\n * to crawl up to the hostname, as well. This is strange.\n * result.protocol has already been set by now.\n * Later on, put the first path part into the host field.\n */\n if (psychotic) {\n result.hostname = '';\n result.port = null;\n if (result.host) {\n if (srcPath[0] === '') { srcPath[0] = result.host; } else { srcPath.unshift(result.host); }\n }\n result.host = '';\n if (relative.protocol) {\n relative.hostname = null;\n relative.port = null;\n if (relative.host) {\n if (relPath[0] === '') { relPath[0] = relative.host; } else { relPath.unshift(relative.host); }\n }\n relative.host = null;\n }\n mustEndAbs = mustEndAbs && (relPath[0] === '' || srcPath[0] === '');\n }\n\n if (isRelAbs) {\n // it's absolute.\n result.host = relative.host || relative.host === '' ? relative.host : result.host;\n result.hostname = relative.hostname || relative.hostname === '' ? relative.hostname : result.hostname;\n result.search = relative.search;\n result.query = relative.query;\n srcPath = relPath;\n // fall through to the dot-handling below.\n } else if (relPath.length) {\n /*\n * it's relative\n * throw away the existing file, and take the new path instead.\n */\n if (!srcPath) { srcPath = []; }\n srcPath.pop();\n srcPath = srcPath.concat(relPath);\n result.search = relative.search;\n result.query = relative.query;\n } else if (relative.search != null) {\n /*\n * just pull out the search.\n * like href='?foo'.\n * Put this after the other two cases because it simplifies the booleans\n */\n if (psychotic) {\n result.host = srcPath.shift();\n result.hostname = result.host;\n /*\n * occationaly the auth can get stuck only in host\n * this especially happens in cases like\n * url.resolveObject('mailto:local1@domain1', 'local2@domain2')\n */\n var authInHost = result.host && result.host.indexOf('@') > 0 ? result.host.split('@') : false;\n if (authInHost) {\n result.auth = authInHost.shift();\n result.hostname = authInHost.shift();\n result.host = result.hostname;\n }\n }\n result.search = relative.search;\n result.query = relative.query;\n // to support http.request\n if (result.pathname !== null || result.search !== null) {\n result.path = (result.pathname ? result.pathname : '') + (result.search ? result.search : '');\n }\n result.href = result.format();\n return result;\n }\n\n if (!srcPath.length) {\n /*\n * no path at all. easy.\n * we've already handled the other stuff above.\n */\n result.pathname = null;\n // to support http.request\n if (result.search) {\n result.path = '/' + result.search;\n } else {\n result.path = null;\n }\n result.href = result.format();\n return result;\n }\n\n /*\n * if a url ENDs in . or .., then it must get a trailing slash.\n * however, if it ends in anything else non-slashy,\n * then it must NOT get a trailing slash.\n */\n var last = srcPath.slice(-1)[0];\n var hasTrailingSlash = (result.host || relative.host || srcPath.length > 1) && (last === '.' || last === '..') || last === '';\n\n /*\n * strip single dots, resolve double dots to parent dir\n * if the path tries to go above the root, `up` ends up > 0\n */\n var up = 0;\n for (var i = srcPath.length; i >= 0; i--) {\n last = srcPath[i];\n if (last === '.') {\n srcPath.splice(i, 1);\n } else if (last === '..') {\n srcPath.splice(i, 1);\n up++;\n } else if (up) {\n srcPath.splice(i, 1);\n up--;\n }\n }\n\n // if the path is allowed to go above the root, restore leading ..s\n if (!mustEndAbs && !removeAllDots) {\n for (; up--; up) {\n srcPath.unshift('..');\n }\n }\n\n if (mustEndAbs && srcPath[0] !== '' && (!srcPath[0] || srcPath[0].charAt(0) !== '/')) {\n srcPath.unshift('');\n }\n\n if (hasTrailingSlash && (srcPath.join('/').substr(-1) !== '/')) {\n srcPath.push('');\n }\n\n var isAbsolute = srcPath[0] === '' || (srcPath[0] && srcPath[0].charAt(0) === '/');\n\n // put the host back\n if (psychotic) {\n result.hostname = isAbsolute ? '' : srcPath.length ? srcPath.shift() : '';\n result.host = result.hostname;\n /*\n * occationaly the auth can get stuck only in host\n * this especially happens in cases like\n * url.resolveObject('mailto:local1@domain1', 'local2@domain2')\n */\n var authInHost = result.host && result.host.indexOf('@') > 0 ? result.host.split('@') : false;\n if (authInHost) {\n result.auth = authInHost.shift();\n result.hostname = authInHost.shift();\n result.host = result.hostname;\n }\n }\n\n mustEndAbs = mustEndAbs || (result.host && srcPath.length);\n\n if (mustEndAbs && !isAbsolute) {\n srcPath.unshift('');\n }\n\n if (srcPath.length > 0) {\n result.pathname = srcPath.join('/');\n } else {\n result.pathname = null;\n result.path = null;\n }\n\n // to support request.http\n if (result.pathname !== null || result.search !== null) {\n result.path = (result.pathname ? result.pathname : '') + (result.search ? result.search : '');\n }\n result.auth = relative.auth || result.auth;\n result.slashes = result.slashes || relative.slashes;\n result.href = result.format();\n return result;\n};\n\nUrl.prototype.parseHost = function () {\n var host = this.host;\n var port = portPattern.exec(host);\n if (port) {\n port = port[0];\n if (port !== ':') {\n this.port = port.substr(1);\n }\n host = host.substr(0, host.length - port.length);\n }\n if (host) { this.hostname = host; }\n};\n\nexports.parse = urlParse;\nexports.resolve = urlResolve;\nexports.resolveObject = urlResolveObject;\nexports.format = urlFormat;\n\nexports.Url = Url;\n","module.exports = function isBuffer(arg) {\n return arg && typeof arg === 'object'\n && typeof arg.copy === 'function'\n && typeof arg.fill === 'function'\n && typeof arg.readUInt8 === 'function';\n}","// Currently in sync with Node.js lib/internal/util/types.js\n// https://github.com/nodejs/node/commit/112cc7c27551254aa2b17098fb774867f05ed0d9\n\n'use strict';\n\nvar isArgumentsObject = require('is-arguments');\nvar isGeneratorFunction = require('is-generator-function');\nvar whichTypedArray = require('which-typed-array');\nvar isTypedArray = require('is-typed-array');\n\nfunction uncurryThis(f) {\n return f.call.bind(f);\n}\n\nvar BigIntSupported = typeof BigInt !== 'undefined';\nvar SymbolSupported = typeof Symbol !== 'undefined';\n\nvar ObjectToString = uncurryThis(Object.prototype.toString);\n\nvar numberValue = uncurryThis(Number.prototype.valueOf);\nvar stringValue = uncurryThis(String.prototype.valueOf);\nvar booleanValue = uncurryThis(Boolean.prototype.valueOf);\n\nif (BigIntSupported) {\n var bigIntValue = uncurryThis(BigInt.prototype.valueOf);\n}\n\nif (SymbolSupported) {\n var symbolValue = uncurryThis(Symbol.prototype.valueOf);\n}\n\nfunction checkBoxedPrimitive(value, prototypeValueOf) {\n if (typeof value !== 'object') {\n return false;\n }\n try {\n prototypeValueOf(value);\n return true;\n } catch(e) {\n return false;\n }\n}\n\nexports.isArgumentsObject = isArgumentsObject;\nexports.isGeneratorFunction = isGeneratorFunction;\nexports.isTypedArray = isTypedArray;\n\n// Taken from here and modified for better browser support\n// https://github.com/sindresorhus/p-is-promise/blob/cda35a513bda03f977ad5cde3a079d237e82d7ef/index.js\nfunction isPromise(input) {\n\treturn (\n\t\t(\n\t\t\ttypeof Promise !== 'undefined' &&\n\t\t\tinput instanceof Promise\n\t\t) ||\n\t\t(\n\t\t\tinput !== null &&\n\t\t\ttypeof input === 'object' &&\n\t\t\ttypeof input.then === 'function' &&\n\t\t\ttypeof input.catch === 'function'\n\t\t)\n\t);\n}\nexports.isPromise = isPromise;\n\nfunction isArrayBufferView(value) {\n if (typeof ArrayBuffer !== 'undefined' && ArrayBuffer.isView) {\n return ArrayBuffer.isView(value);\n }\n\n return (\n isTypedArray(value) ||\n isDataView(value)\n );\n}\nexports.isArrayBufferView = isArrayBufferView;\n\n\nfunction isUint8Array(value) {\n return whichTypedArray(value) === 'Uint8Array';\n}\nexports.isUint8Array = isUint8Array;\n\nfunction isUint8ClampedArray(value) {\n return whichTypedArray(value) === 'Uint8ClampedArray';\n}\nexports.isUint8ClampedArray = isUint8ClampedArray;\n\nfunction isUint16Array(value) {\n return whichTypedArray(value) === 'Uint16Array';\n}\nexports.isUint16Array = isUint16Array;\n\nfunction isUint32Array(value) {\n return whichTypedArray(value) === 'Uint32Array';\n}\nexports.isUint32Array = isUint32Array;\n\nfunction isInt8Array(value) {\n return whichTypedArray(value) === 'Int8Array';\n}\nexports.isInt8Array = isInt8Array;\n\nfunction isInt16Array(value) {\n return whichTypedArray(value) === 'Int16Array';\n}\nexports.isInt16Array = isInt16Array;\n\nfunction isInt32Array(value) {\n return whichTypedArray(value) === 'Int32Array';\n}\nexports.isInt32Array = isInt32Array;\n\nfunction isFloat32Array(value) {\n return whichTypedArray(value) === 'Float32Array';\n}\nexports.isFloat32Array = isFloat32Array;\n\nfunction isFloat64Array(value) {\n return whichTypedArray(value) === 'Float64Array';\n}\nexports.isFloat64Array = isFloat64Array;\n\nfunction isBigInt64Array(value) {\n return whichTypedArray(value) === 'BigInt64Array';\n}\nexports.isBigInt64Array = isBigInt64Array;\n\nfunction isBigUint64Array(value) {\n return whichTypedArray(value) === 'BigUint64Array';\n}\nexports.isBigUint64Array = isBigUint64Array;\n\nfunction isMapToString(value) {\n return ObjectToString(value) === '[object Map]';\n}\nisMapToString.working = (\n typeof Map !== 'undefined' &&\n isMapToString(new Map())\n);\n\nfunction isMap(value) {\n if (typeof Map === 'undefined') {\n return false;\n }\n\n return isMapToString.working\n ? isMapToString(value)\n : value instanceof Map;\n}\nexports.isMap = isMap;\n\nfunction isSetToString(value) {\n return ObjectToString(value) === '[object Set]';\n}\nisSetToString.working = (\n typeof Set !== 'undefined' &&\n isSetToString(new Set())\n);\nfunction isSet(value) {\n if (typeof Set === 'undefined') {\n return false;\n }\n\n return isSetToString.working\n ? isSetToString(value)\n : value instanceof Set;\n}\nexports.isSet = isSet;\n\nfunction isWeakMapToString(value) {\n return ObjectToString(value) === '[object WeakMap]';\n}\nisWeakMapToString.working = (\n typeof WeakMap !== 'undefined' &&\n isWeakMapToString(new WeakMap())\n);\nfunction isWeakMap(value) {\n if (typeof WeakMap === 'undefined') {\n return false;\n }\n\n return isWeakMapToString.working\n ? isWeakMapToString(value)\n : value instanceof WeakMap;\n}\nexports.isWeakMap = isWeakMap;\n\nfunction isWeakSetToString(value) {\n return ObjectToString(value) === '[object WeakSet]';\n}\nisWeakSetToString.working = (\n typeof WeakSet !== 'undefined' &&\n isWeakSetToString(new WeakSet())\n);\nfunction isWeakSet(value) {\n return isWeakSetToString(value);\n}\nexports.isWeakSet = isWeakSet;\n\nfunction isArrayBufferToString(value) {\n return ObjectToString(value) === '[object ArrayBuffer]';\n}\nisArrayBufferToString.working = (\n typeof ArrayBuffer !== 'undefined' &&\n isArrayBufferToString(new ArrayBuffer())\n);\nfunction isArrayBuffer(value) {\n if (typeof ArrayBuffer === 'undefined') {\n return false;\n }\n\n return isArrayBufferToString.working\n ? isArrayBufferToString(value)\n : value instanceof ArrayBuffer;\n}\nexports.isArrayBuffer = isArrayBuffer;\n\nfunction isDataViewToString(value) {\n return ObjectToString(value) === '[object DataView]';\n}\nisDataViewToString.working = (\n typeof ArrayBuffer !== 'undefined' &&\n typeof DataView !== 'undefined' &&\n isDataViewToString(new DataView(new ArrayBuffer(1), 0, 1))\n);\nfunction isDataView(value) {\n if (typeof DataView === 'undefined') {\n return false;\n }\n\n return isDataViewToString.working\n ? isDataViewToString(value)\n : value instanceof DataView;\n}\nexports.isDataView = isDataView;\n\n// Store a copy of SharedArrayBuffer in case it's deleted elsewhere\nvar SharedArrayBufferCopy = typeof SharedArrayBuffer !== 'undefined' ? SharedArrayBuffer : undefined;\nfunction isSharedArrayBufferToString(value) {\n return ObjectToString(value) === '[object SharedArrayBuffer]';\n}\nfunction isSharedArrayBuffer(value) {\n if (typeof SharedArrayBufferCopy === 'undefined') {\n return false;\n }\n\n if (typeof isSharedArrayBufferToString.working === 'undefined') {\n isSharedArrayBufferToString.working = isSharedArrayBufferToString(new SharedArrayBufferCopy());\n }\n\n return isSharedArrayBufferToString.working\n ? isSharedArrayBufferToString(value)\n : value instanceof SharedArrayBufferCopy;\n}\nexports.isSharedArrayBuffer = isSharedArrayBuffer;\n\nfunction isAsyncFunction(value) {\n return ObjectToString(value) === '[object AsyncFunction]';\n}\nexports.isAsyncFunction = isAsyncFunction;\n\nfunction isMapIterator(value) {\n return ObjectToString(value) === '[object Map Iterator]';\n}\nexports.isMapIterator = isMapIterator;\n\nfunction isSetIterator(value) {\n return ObjectToString(value) === '[object Set Iterator]';\n}\nexports.isSetIterator = isSetIterator;\n\nfunction isGeneratorObject(value) {\n return ObjectToString(value) === '[object Generator]';\n}\nexports.isGeneratorObject = isGeneratorObject;\n\nfunction isWebAssemblyCompiledModule(value) {\n return ObjectToString(value) === '[object WebAssembly.Module]';\n}\nexports.isWebAssemblyCompiledModule = isWebAssemblyCompiledModule;\n\nfunction isNumberObject(value) {\n return checkBoxedPrimitive(value, numberValue);\n}\nexports.isNumberObject = isNumberObject;\n\nfunction isStringObject(value) {\n return checkBoxedPrimitive(value, stringValue);\n}\nexports.isStringObject = isStringObject;\n\nfunction isBooleanObject(value) {\n return checkBoxedPrimitive(value, booleanValue);\n}\nexports.isBooleanObject = isBooleanObject;\n\nfunction isBigIntObject(value) {\n return BigIntSupported && checkBoxedPrimitive(value, bigIntValue);\n}\nexports.isBigIntObject = isBigIntObject;\n\nfunction isSymbolObject(value) {\n return SymbolSupported && checkBoxedPrimitive(value, symbolValue);\n}\nexports.isSymbolObject = isSymbolObject;\n\nfunction isBoxedPrimitive(value) {\n return (\n isNumberObject(value) ||\n isStringObject(value) ||\n isBooleanObject(value) ||\n isBigIntObject(value) ||\n isSymbolObject(value)\n );\n}\nexports.isBoxedPrimitive = isBoxedPrimitive;\n\nfunction isAnyArrayBuffer(value) {\n return typeof Uint8Array !== 'undefined' && (\n isArrayBuffer(value) ||\n isSharedArrayBuffer(value)\n );\n}\nexports.isAnyArrayBuffer = isAnyArrayBuffer;\n\n['isProxy', 'isExternal', 'isModuleNamespaceObject'].forEach(function(method) {\n Object.defineProperty(exports, method, {\n enumerable: false,\n value: function() {\n throw new Error(method + ' is not supported in userland');\n }\n });\n});\n","// Copyright Joyent, Inc. and other Node contributors.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a\n// copy of this software and associated documentation files (the\n// \"Software\"), to deal in the Software without restriction, including\n// without limitation the rights to use, copy, modify, merge, publish,\n// distribute, sublicense, and/or sell copies of the Software, and to permit\n// persons to whom the Software is furnished to do so, subject to the\n// following conditions:\n//\n// The above copyright notice and this permission notice shall be included\n// in all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN\n// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR\n// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\n// USE OR OTHER DEALINGS IN THE SOFTWARE.\n\nvar getOwnPropertyDescriptors = Object.getOwnPropertyDescriptors ||\n function getOwnPropertyDescriptors(obj) {\n var keys = Object.keys(obj);\n var descriptors = {};\n for (var i = 0; i < keys.length; i++) {\n descriptors[keys[i]] = Object.getOwnPropertyDescriptor(obj, keys[i]);\n }\n return descriptors;\n };\n\nvar formatRegExp = /%[sdj%]/g;\nexports.format = function(f) {\n if (!isString(f)) {\n var objects = [];\n for (var i = 0; i < arguments.length; i++) {\n objects.push(inspect(arguments[i]));\n }\n return objects.join(' ');\n }\n\n var i = 1;\n var args = arguments;\n var len = args.length;\n var str = String(f).replace(formatRegExp, function(x) {\n if (x === '%%') return '%';\n if (i >= len) return x;\n switch (x) {\n case '%s': return String(args[i++]);\n case '%d': return Number(args[i++]);\n case '%j':\n try {\n return JSON.stringify(args[i++]);\n } catch (_) {\n return '[Circular]';\n }\n default:\n return x;\n }\n });\n for (var x = args[i]; i < len; x = args[++i]) {\n if (isNull(x) || !isObject(x)) {\n str += ' ' + x;\n } else {\n str += ' ' + inspect(x);\n }\n }\n return str;\n};\n\n\n// Mark that a method should not be used.\n// Returns a modified function which warns once by default.\n// If --no-deprecation is set, then it is a no-op.\nexports.deprecate = function(fn, msg) {\n if (typeof process !== 'undefined' && process.noDeprecation === true) {\n return fn;\n }\n\n // Allow for deprecating things in the process of starting up.\n if (typeof process === 'undefined') {\n return function() {\n return exports.deprecate(fn, msg).apply(this, arguments);\n };\n }\n\n var warned = false;\n function deprecated() {\n if (!warned) {\n if (process.throwDeprecation) {\n throw new Error(msg);\n } else if (process.traceDeprecation) {\n console.trace(msg);\n } else {\n console.error(msg);\n }\n warned = true;\n }\n return fn.apply(this, arguments);\n }\n\n return deprecated;\n};\n\n\nvar debugs = {};\nvar debugEnvRegex = /^$/;\n\nif (process.env.NODE_DEBUG) {\n var debugEnv = process.env.NODE_DEBUG;\n debugEnv = debugEnv.replace(/[|\\\\{}()[\\]^$+?.]/g, '\\\\$&')\n .replace(/\\*/g, '.*')\n .replace(/,/g, '$|^')\n .toUpperCase();\n debugEnvRegex = new RegExp('^' + debugEnv + '$', 'i');\n}\nexports.debuglog = function(set) {\n set = set.toUpperCase();\n if (!debugs[set]) {\n if (debugEnvRegex.test(set)) {\n var pid = process.pid;\n debugs[set] = function() {\n var msg = exports.format.apply(exports, arguments);\n console.error('%s %d: %s', set, pid, msg);\n };\n } else {\n debugs[set] = function() {};\n }\n }\n return debugs[set];\n};\n\n\n/**\n * Echos the value of a value. Trys to print the value out\n * in the best way possible given the different types.\n *\n * @param {Object} obj The object to print out.\n * @param {Object} opts Optional options object that alters the output.\n */\n/* legacy: obj, showHidden, depth, colors*/\nfunction inspect(obj, opts) {\n // default options\n var ctx = {\n seen: [],\n stylize: stylizeNoColor\n };\n // legacy...\n if (arguments.length >= 3) ctx.depth = arguments[2];\n if (arguments.length >= 4) ctx.colors = arguments[3];\n if (isBoolean(opts)) {\n // legacy...\n ctx.showHidden = opts;\n } else if (opts) {\n // got an \"options\" object\n exports._extend(ctx, opts);\n }\n // set default options\n if (isUndefined(ctx.showHidden)) ctx.showHidden = false;\n if (isUndefined(ctx.depth)) ctx.depth = 2;\n if (isUndefined(ctx.colors)) ctx.colors = false;\n if (isUndefined(ctx.customInspect)) ctx.customInspect = true;\n if (ctx.colors) ctx.stylize = stylizeWithColor;\n return formatValue(ctx, obj, ctx.depth);\n}\nexports.inspect = inspect;\n\n\n// http://en.wikipedia.org/wiki/ANSI_escape_code#graphics\ninspect.colors = {\n 'bold' : [1, 22],\n 'italic' : [3, 23],\n 'underline' : [4, 24],\n 'inverse' : [7, 27],\n 'white' : [37, 39],\n 'grey' : [90, 39],\n 'black' : [30, 39],\n 'blue' : [34, 39],\n 'cyan' : [36, 39],\n 'green' : [32, 39],\n 'magenta' : [35, 39],\n 'red' : [31, 39],\n 'yellow' : [33, 39]\n};\n\n// Don't use 'blue' not visible on cmd.exe\ninspect.styles = {\n 'special': 'cyan',\n 'number': 'yellow',\n 'boolean': 'yellow',\n 'undefined': 'grey',\n 'null': 'bold',\n 'string': 'green',\n 'date': 'magenta',\n // \"name\": intentionally not styling\n 'regexp': 'red'\n};\n\n\nfunction stylizeWithColor(str, styleType) {\n var style = inspect.styles[styleType];\n\n if (style) {\n return '\\u001b[' + inspect.colors[style][0] + 'm' + str +\n '\\u001b[' + inspect.colors[style][1] + 'm';\n } else {\n return str;\n }\n}\n\n\nfunction stylizeNoColor(str, styleType) {\n return str;\n}\n\n\nfunction arrayToHash(array) {\n var hash = {};\n\n array.forEach(function(val, idx) {\n hash[val] = true;\n });\n\n return hash;\n}\n\n\nfunction formatValue(ctx, value, recurseTimes) {\n // Provide a hook for user-specified inspect functions.\n // Check that value is an object with an inspect function on it\n if (ctx.customInspect &&\n value &&\n isFunction(value.inspect) &&\n // Filter out the util module, it's inspect function is special\n value.inspect !== exports.inspect &&\n // Also filter out any prototype objects using the circular check.\n !(value.constructor && value.constructor.prototype === value)) {\n var ret = value.inspect(recurseTimes, ctx);\n if (!isString(ret)) {\n ret = formatValue(ctx, ret, recurseTimes);\n }\n return ret;\n }\n\n // Primitive types cannot have properties\n var primitive = formatPrimitive(ctx, value);\n if (primitive) {\n return primitive;\n }\n\n // Look up the keys of the object.\n var keys = Object.keys(value);\n var visibleKeys = arrayToHash(keys);\n\n if (ctx.showHidden) {\n keys = Object.getOwnPropertyNames(value);\n }\n\n // IE doesn't make error fields non-enumerable\n // http://msdn.microsoft.com/en-us/library/ie/dww52sbt(v=vs.94).aspx\n if (isError(value)\n && (keys.indexOf('message') >= 0 || keys.indexOf('description') >= 0)) {\n return formatError(value);\n }\n\n // Some type of object without properties can be shortcutted.\n if (keys.length === 0) {\n if (isFunction(value)) {\n var name = value.name ? ': ' + value.name : '';\n return ctx.stylize('[Function' + name + ']', 'special');\n }\n if (isRegExp(value)) {\n return ctx.stylize(RegExp.prototype.toString.call(value), 'regexp');\n }\n if (isDate(value)) {\n return ctx.stylize(Date.prototype.toString.call(value), 'date');\n }\n if (isError(value)) {\n return formatError(value);\n }\n }\n\n var base = '', array = false, braces = ['{', '}'];\n\n // Make Array say that they are Array\n if (isArray(value)) {\n array = true;\n braces = ['[', ']'];\n }\n\n // Make functions say that they are functions\n if (isFunction(value)) {\n var n = value.name ? ': ' + value.name : '';\n base = ' [Function' + n + ']';\n }\n\n // Make RegExps say that they are RegExps\n if (isRegExp(value)) {\n base = ' ' + RegExp.prototype.toString.call(value);\n }\n\n // Make dates with properties first say the date\n if (isDate(value)) {\n base = ' ' + Date.prototype.toUTCString.call(value);\n }\n\n // Make error with message first say the error\n if (isError(value)) {\n base = ' ' + formatError(value);\n }\n\n if (keys.length === 0 && (!array || value.length == 0)) {\n return braces[0] + base + braces[1];\n }\n\n if (recurseTimes < 0) {\n if (isRegExp(value)) {\n return ctx.stylize(RegExp.prototype.toString.call(value), 'regexp');\n } else {\n return ctx.stylize('[Object]', 'special');\n }\n }\n\n ctx.seen.push(value);\n\n var output;\n if (array) {\n output = formatArray(ctx, value, recurseTimes, visibleKeys, keys);\n } else {\n output = keys.map(function(key) {\n return formatProperty(ctx, value, recurseTimes, visibleKeys, key, array);\n });\n }\n\n ctx.seen.pop();\n\n return reduceToSingleString(output, base, braces);\n}\n\n\nfunction formatPrimitive(ctx, value) {\n if (isUndefined(value))\n return ctx.stylize('undefined', 'undefined');\n if (isString(value)) {\n var simple = '\\'' + JSON.stringify(value).replace(/^\"|\"$/g, '')\n .replace(/'/g, \"\\\\'\")\n .replace(/\\\\\"/g, '\"') + '\\'';\n return ctx.stylize(simple, 'string');\n }\n if (isNumber(value))\n return ctx.stylize('' + value, 'number');\n if (isBoolean(value))\n return ctx.stylize('' + value, 'boolean');\n // For some reason typeof null is \"object\", so special case here.\n if (isNull(value))\n return ctx.stylize('null', 'null');\n}\n\n\nfunction formatError(value) {\n return '[' + Error.prototype.toString.call(value) + ']';\n}\n\n\nfunction formatArray(ctx, value, recurseTimes, visibleKeys, keys) {\n var output = [];\n for (var i = 0, l = value.length; i < l; ++i) {\n if (hasOwnProperty(value, String(i))) {\n output.push(formatProperty(ctx, value, recurseTimes, visibleKeys,\n String(i), true));\n } else {\n output.push('');\n }\n }\n keys.forEach(function(key) {\n if (!key.match(/^\\d+$/)) {\n output.push(formatProperty(ctx, value, recurseTimes, visibleKeys,\n key, true));\n }\n });\n return output;\n}\n\n\nfunction formatProperty(ctx, value, recurseTimes, visibleKeys, key, array) {\n var name, str, desc;\n desc = Object.getOwnPropertyDescriptor(value, key) || { value: value[key] };\n if (desc.get) {\n if (desc.set) {\n str = ctx.stylize('[Getter/Setter]', 'special');\n } else {\n str = ctx.stylize('[Getter]', 'special');\n }\n } else {\n if (desc.set) {\n str = ctx.stylize('[Setter]', 'special');\n }\n }\n if (!hasOwnProperty(visibleKeys, key)) {\n name = '[' + key + ']';\n }\n if (!str) {\n if (ctx.seen.indexOf(desc.value) < 0) {\n if (isNull(recurseTimes)) {\n str = formatValue(ctx, desc.value, null);\n } else {\n str = formatValue(ctx, desc.value, recurseTimes - 1);\n }\n if (str.indexOf('\\n') > -1) {\n if (array) {\n str = str.split('\\n').map(function(line) {\n return ' ' + line;\n }).join('\\n').slice(2);\n } else {\n str = '\\n' + str.split('\\n').map(function(line) {\n return ' ' + line;\n }).join('\\n');\n }\n }\n } else {\n str = ctx.stylize('[Circular]', 'special');\n }\n }\n if (isUndefined(name)) {\n if (array && key.match(/^\\d+$/)) {\n return str;\n }\n name = JSON.stringify('' + key);\n if (name.match(/^\"([a-zA-Z_][a-zA-Z_0-9]*)\"$/)) {\n name = name.slice(1, -1);\n name = ctx.stylize(name, 'name');\n } else {\n name = name.replace(/'/g, \"\\\\'\")\n .replace(/\\\\\"/g, '\"')\n .replace(/(^\"|\"$)/g, \"'\");\n name = ctx.stylize(name, 'string');\n }\n }\n\n return name + ': ' + str;\n}\n\n\nfunction reduceToSingleString(output, base, braces) {\n var numLinesEst = 0;\n var length = output.reduce(function(prev, cur) {\n numLinesEst++;\n if (cur.indexOf('\\n') >= 0) numLinesEst++;\n return prev + cur.replace(/\\u001b\\[\\d\\d?m/g, '').length + 1;\n }, 0);\n\n if (length > 60) {\n return braces[0] +\n (base === '' ? '' : base + '\\n ') +\n ' ' +\n output.join(',\\n ') +\n ' ' +\n braces[1];\n }\n\n return braces[0] + base + ' ' + output.join(', ') + ' ' + braces[1];\n}\n\n\n// NOTE: These type checking functions intentionally don't use `instanceof`\n// because it is fragile and can be easily faked with `Object.create()`.\nexports.types = require('./support/types');\n\nfunction isArray(ar) {\n return Array.isArray(ar);\n}\nexports.isArray = isArray;\n\nfunction isBoolean(arg) {\n return typeof arg === 'boolean';\n}\nexports.isBoolean = isBoolean;\n\nfunction isNull(arg) {\n return arg === null;\n}\nexports.isNull = isNull;\n\nfunction isNullOrUndefined(arg) {\n return arg == null;\n}\nexports.isNullOrUndefined = isNullOrUndefined;\n\nfunction isNumber(arg) {\n return typeof arg === 'number';\n}\nexports.isNumber = isNumber;\n\nfunction isString(arg) {\n return typeof arg === 'string';\n}\nexports.isString = isString;\n\nfunction isSymbol(arg) {\n return typeof arg === 'symbol';\n}\nexports.isSymbol = isSymbol;\n\nfunction isUndefined(arg) {\n return arg === void 0;\n}\nexports.isUndefined = isUndefined;\n\nfunction isRegExp(re) {\n return isObject(re) && objectToString(re) === '[object RegExp]';\n}\nexports.isRegExp = isRegExp;\nexports.types.isRegExp = isRegExp;\n\nfunction isObject(arg) {\n return typeof arg === 'object' && arg !== null;\n}\nexports.isObject = isObject;\n\nfunction isDate(d) {\n return isObject(d) && objectToString(d) === '[object Date]';\n}\nexports.isDate = isDate;\nexports.types.isDate = isDate;\n\nfunction isError(e) {\n return isObject(e) &&\n (objectToString(e) === '[object Error]' || e instanceof Error);\n}\nexports.isError = isError;\nexports.types.isNativeError = isError;\n\nfunction isFunction(arg) {\n return typeof arg === 'function';\n}\nexports.isFunction = isFunction;\n\nfunction isPrimitive(arg) {\n return arg === null ||\n typeof arg === 'boolean' ||\n typeof arg === 'number' ||\n typeof arg === 'string' ||\n typeof arg === 'symbol' || // ES6 symbol\n typeof arg === 'undefined';\n}\nexports.isPrimitive = isPrimitive;\n\nexports.isBuffer = require('./support/isBuffer');\n\nfunction objectToString(o) {\n return Object.prototype.toString.call(o);\n}\n\n\nfunction pad(n) {\n return n < 10 ? '0' + n.toString(10) : n.toString(10);\n}\n\n\nvar months = ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep',\n 'Oct', 'Nov', 'Dec'];\n\n// 26 Feb 16:19:34\nfunction timestamp() {\n var d = new Date();\n var time = [pad(d.getHours()),\n pad(d.getMinutes()),\n pad(d.getSeconds())].join(':');\n return [d.getDate(), months[d.getMonth()], time].join(' ');\n}\n\n\n// log is just a thin wrapper to console.log that prepends a timestamp\nexports.log = function() {\n console.log('%s - %s', timestamp(), exports.format.apply(exports, arguments));\n};\n\n\n/**\n * Inherit the prototype methods from one constructor into another.\n *\n * The Function.prototype.inherits from lang.js rewritten as a standalone\n * function (not on Function.prototype). NOTE: If this file is to be loaded\n * during bootstrapping this function needs to be rewritten using some native\n * functions as prototype setup using normal JavaScript does not work as\n * expected during bootstrapping (see mirror.js in r114903).\n *\n * @param {function} ctor Constructor function which needs to inherit the\n * prototype.\n * @param {function} superCtor Constructor function to inherit prototype from.\n */\nexports.inherits = require('inherits');\n\nexports._extend = function(origin, add) {\n // Don't do anything if add isn't an object\n if (!add || !isObject(add)) return origin;\n\n var keys = Object.keys(add);\n var i = keys.length;\n while (i--) {\n origin[keys[i]] = add[keys[i]];\n }\n return origin;\n};\n\nfunction hasOwnProperty(obj, prop) {\n return Object.prototype.hasOwnProperty.call(obj, prop);\n}\n\nvar kCustomPromisifiedSymbol = typeof Symbol !== 'undefined' ? Symbol('util.promisify.custom') : undefined;\n\nexports.promisify = function promisify(original) {\n if (typeof original !== 'function')\n throw new TypeError('The \"original\" argument must be of type Function');\n\n if (kCustomPromisifiedSymbol && original[kCustomPromisifiedSymbol]) {\n var fn = original[kCustomPromisifiedSymbol];\n if (typeof fn !== 'function') {\n throw new TypeError('The \"util.promisify.custom\" argument must be of type Function');\n }\n Object.defineProperty(fn, kCustomPromisifiedSymbol, {\n value: fn, enumerable: false, writable: false, configurable: true\n });\n return fn;\n }\n\n function fn() {\n var promiseResolve, promiseReject;\n var promise = new Promise(function (resolve, reject) {\n promiseResolve = resolve;\n promiseReject = reject;\n });\n\n var args = [];\n for (var i = 0; i < arguments.length; i++) {\n args.push(arguments[i]);\n }\n args.push(function (err, value) {\n if (err) {\n promiseReject(err);\n } else {\n promiseResolve(value);\n }\n });\n\n try {\n original.apply(this, args);\n } catch (err) {\n promiseReject(err);\n }\n\n return promise;\n }\n\n Object.setPrototypeOf(fn, Object.getPrototypeOf(original));\n\n if (kCustomPromisifiedSymbol) Object.defineProperty(fn, kCustomPromisifiedSymbol, {\n value: fn, enumerable: false, writable: false, configurable: true\n });\n return Object.defineProperties(\n fn,\n getOwnPropertyDescriptors(original)\n );\n}\n\nexports.promisify.custom = kCustomPromisifiedSymbol\n\nfunction callbackifyOnRejected(reason, cb) {\n // `!reason` guard inspired by bluebird (Ref: https://goo.gl/t5IS6M).\n // Because `null` is a special error value in callbacks which means \"no error\n // occurred\", we error-wrap so the callback consumer can distinguish between\n // \"the promise rejected with null\" or \"the promise fulfilled with undefined\".\n if (!reason) {\n var newReason = new Error('Promise was rejected with a falsy value');\n newReason.reason = reason;\n reason = newReason;\n }\n return cb(reason);\n}\n\nfunction callbackify(original) {\n if (typeof original !== 'function') {\n throw new TypeError('The \"original\" argument must be of type Function');\n }\n\n // We DO NOT return the promise as it gives the user a false sense that\n // the promise is actually somehow related to the callback's execution\n // and that the callback throwing will reject the promise.\n function callbackified() {\n var args = [];\n for (var i = 0; i < arguments.length; i++) {\n args.push(arguments[i]);\n }\n\n var maybeCb = args.pop();\n if (typeof maybeCb !== 'function') {\n throw new TypeError('The last argument must be of type Function');\n }\n var self = this;\n var cb = function() {\n return maybeCb.apply(self, arguments);\n };\n // In true node style we process the callback on `nextTick` with all the\n // implications (stack, `uncaughtException`, `async_hooks`)\n original.apply(this, args)\n .then(function(ret) { process.nextTick(cb.bind(null, null, ret)) },\n function(rej) { process.nextTick(callbackifyOnRejected.bind(null, rej, cb)) });\n }\n\n Object.setPrototypeOf(callbackified, Object.getPrototypeOf(original));\n Object.defineProperties(callbackified,\n getOwnPropertyDescriptors(original));\n return callbackified;\n}\nexports.callbackify = callbackify;\n","module.exports = extend\n\nvar hasOwnProperty = Object.prototype.hasOwnProperty;\n\nfunction extend() {\n var target = {}\n\n for (var i = 0; i < arguments.length; i++) {\n var source = arguments[i]\n\n for (var key in source) {\n if (hasOwnProperty.call(source, key)) {\n target[key] = source[key]\n }\n }\n }\n\n return target\n}\n","const inWebWorker = typeof WorkerGlobalScope !== \"undefined\" &&\n self instanceof WorkerGlobalScope;\nconst root = inWebWorker\n ? self\n : typeof window !== \"undefined\"\n ? window\n : globalThis;\nexport const fetch = root.fetch.bind(root);\nexport const Headers = root.Headers;\nexport const Request = root.Request;\nexport const Response = root.Response;\n","export default function getIgnoreAttributesFn(ignoreAttributes) {\n if (typeof ignoreAttributes === 'function') {\n return ignoreAttributes\n }\n if (Array.isArray(ignoreAttributes)) {\n return (attrName) => {\n for (const pattern of ignoreAttributes) {\n if (typeof pattern === 'string' && attrName === pattern) {\n return true\n }\n if (pattern instanceof RegExp && pattern.test(attrName)) {\n return true\n }\n }\n }\n }\n return () => false\n}","'use strict';\n\nconst nameStartChar = ':A-Za-z_\\\\u00C0-\\\\u00D6\\\\u00D8-\\\\u00F6\\\\u00F8-\\\\u02FF\\\\u0370-\\\\u037D\\\\u037F-\\\\u1FFF\\\\u200C-\\\\u200D\\\\u2070-\\\\u218F\\\\u2C00-\\\\u2FEF\\\\u3001-\\\\uD7FF\\\\uF900-\\\\uFDCF\\\\uFDF0-\\\\uFFFD';\nconst nameChar = nameStartChar + '\\\\-.\\\\d\\\\u00B7\\\\u0300-\\\\u036F\\\\u203F-\\\\u2040';\nexport const nameRegexp = '[' + nameStartChar + '][' + nameChar + ']*';\nconst regexName = new RegExp('^' + nameRegexp + '$');\n\nexport function getAllMatches(string, regex) {\n const matches = [];\n let match = regex.exec(string);\n while (match) {\n const allmatches = [];\n allmatches.startIndex = regex.lastIndex - match[0].length;\n const len = match.length;\n for (let index = 0; index < len; index++) {\n allmatches.push(match[index]);\n }\n matches.push(allmatches);\n match = regex.exec(string);\n }\n return matches;\n}\n\nexport const isName = function(string) {\n const match = regexName.exec(string);\n return !(match === null || typeof match === 'undefined');\n}\n\nexport function isExist(v) {\n return typeof v !== 'undefined';\n}\n\nexport function isEmptyObject(obj) {\n return Object.keys(obj).length === 0;\n}\n\n/**\n * Copy all the properties of a into b.\n * @param {*} target\n * @param {*} a\n */\nexport function merge(target, a, arrayMode) {\n if (a) {\n const keys = Object.keys(a); // will return an array of own properties\n const len = keys.length; //don't make it inline\n for (let i = 0; i < len; i++) {\n if (arrayMode === 'strict') {\n target[keys[i]] = [ a[keys[i]] ];\n } else {\n target[keys[i]] = a[keys[i]];\n }\n }\n }\n}\n/* exports.merge =function (b,a){\n return Object.assign(b,a);\n} */\n\nexport function getValue(v) {\n if (exports.isExist(v)) {\n return v;\n } else {\n return '';\n }\n}\n\n// const fakeCall = function(a) {return a;};\n// const fakeCallNoReturn = function() {};","'use strict';\n\nimport {getAllMatches, isName} from './util.js';\n\nconst defaultOptions = {\n allowBooleanAttributes: false, //A tag can have attributes without any value\n unpairedTags: []\n};\n\n//const tagsPattern = new RegExp(\"<\\\\/?([\\\\w:\\\\-_\\.]+)\\\\s*\\/?>\",\"g\");\nexport function validate(xmlData, options) {\n options = Object.assign({}, defaultOptions, options);\n\n //xmlData = xmlData.replace(/(\\r\\n|\\n|\\r)/gm,\"\");//make it single line\n //xmlData = xmlData.replace(/(^\\s*<\\?xml.*?\\?>)/g,\"\");//Remove XML starting tag\n //xmlData = xmlData.replace(/()/g,\"\");//Remove DOCTYPE\n const tags = [];\n let tagFound = false;\n\n //indicates that the root tag has been closed (aka. depth 0 has been reached)\n let reachedRoot = false;\n\n if (xmlData[0] === '\\ufeff') {\n // check for byte order mark (BOM)\n xmlData = xmlData.substr(1);\n }\n \n for (let i = 0; i < xmlData.length; i++) {\n\n if (xmlData[i] === '<' && xmlData[i+1] === '?') {\n i+=2;\n i = readPI(xmlData,i);\n if (i.err) return i;\n }else if (xmlData[i] === '<') {\n //starting of tag\n //read until you reach to '>' avoiding any '>' in attribute value\n let tagStartPos = i;\n i++;\n \n if (xmlData[i] === '!') {\n i = readCommentAndCDATA(xmlData, i);\n continue;\n } else {\n let closingTag = false;\n if (xmlData[i] === '/') {\n //closing tag\n closingTag = true;\n i++;\n }\n //read tagname\n let tagName = '';\n for (; i < xmlData.length &&\n xmlData[i] !== '>' &&\n xmlData[i] !== ' ' &&\n xmlData[i] !== '\\t' &&\n xmlData[i] !== '\\n' &&\n xmlData[i] !== '\\r'; i++\n ) {\n tagName += xmlData[i];\n }\n tagName = tagName.trim();\n //console.log(tagName);\n\n if (tagName[tagName.length - 1] === '/') {\n //self closing tag without attributes\n tagName = tagName.substring(0, tagName.length - 1);\n //continue;\n i--;\n }\n if (!validateTagName(tagName)) {\n let msg;\n if (tagName.trim().length === 0) {\n msg = \"Invalid space after '<'.\";\n } else {\n msg = \"Tag '\"+tagName+\"' is an invalid name.\";\n }\n return getErrorObject('InvalidTag', msg, getLineNumberForPosition(xmlData, i));\n }\n\n const result = readAttributeStr(xmlData, i);\n if (result === false) {\n return getErrorObject('InvalidAttr', \"Attributes for '\"+tagName+\"' have open quote.\", getLineNumberForPosition(xmlData, i));\n }\n let attrStr = result.value;\n i = result.index;\n\n if (attrStr[attrStr.length - 1] === '/') {\n //self closing tag\n const attrStrStart = i - attrStr.length;\n attrStr = attrStr.substring(0, attrStr.length - 1);\n const isValid = validateAttributeString(attrStr, options);\n if (isValid === true) {\n tagFound = true;\n //continue; //text may presents after self closing tag\n } else {\n //the result from the nested function returns the position of the error within the attribute\n //in order to get the 'true' error line, we need to calculate the position where the attribute begins (i - attrStr.length) and then add the position within the attribute\n //this gives us the absolute index in the entire xml, which we can use to find the line at last\n return getErrorObject(isValid.err.code, isValid.err.msg, getLineNumberForPosition(xmlData, attrStrStart + isValid.err.line));\n }\n } else if (closingTag) {\n if (!result.tagClosed) {\n return getErrorObject('InvalidTag', \"Closing tag '\"+tagName+\"' doesn't have proper closing.\", getLineNumberForPosition(xmlData, i));\n } else if (attrStr.trim().length > 0) {\n return getErrorObject('InvalidTag', \"Closing tag '\"+tagName+\"' can't have attributes or invalid starting.\", getLineNumberForPosition(xmlData, tagStartPos));\n } else if (tags.length === 0) {\n return getErrorObject('InvalidTag', \"Closing tag '\"+tagName+\"' has not been opened.\", getLineNumberForPosition(xmlData, tagStartPos));\n } else {\n const otg = tags.pop();\n if (tagName !== otg.tagName) {\n let openPos = getLineNumberForPosition(xmlData, otg.tagStartPos);\n return getErrorObject('InvalidTag',\n \"Expected closing tag '\"+otg.tagName+\"' (opened in line \"+openPos.line+\", col \"+openPos.col+\") instead of closing tag '\"+tagName+\"'.\",\n getLineNumberForPosition(xmlData, tagStartPos));\n }\n\n //when there are no more tags, we reached the root level.\n if (tags.length == 0) {\n reachedRoot = true;\n }\n }\n } else {\n const isValid = validateAttributeString(attrStr, options);\n if (isValid !== true) {\n //the result from the nested function returns the position of the error within the attribute\n //in order to get the 'true' error line, we need to calculate the position where the attribute begins (i - attrStr.length) and then add the position within the attribute\n //this gives us the absolute index in the entire xml, which we can use to find the line at last\n return getErrorObject(isValid.err.code, isValid.err.msg, getLineNumberForPosition(xmlData, i - attrStr.length + isValid.err.line));\n }\n\n //if the root level has been reached before ...\n if (reachedRoot === true) {\n return getErrorObject('InvalidXml', 'Multiple possible root nodes found.', getLineNumberForPosition(xmlData, i));\n } else if(options.unpairedTags.indexOf(tagName) !== -1){\n //don't push into stack\n } else {\n tags.push({tagName, tagStartPos});\n }\n tagFound = true;\n }\n\n //skip tag text value\n //It may include comments and CDATA value\n for (i++; i < xmlData.length; i++) {\n if (xmlData[i] === '<') {\n if (xmlData[i + 1] === '!') {\n //comment or CADATA\n i++;\n i = readCommentAndCDATA(xmlData, i);\n continue;\n } else if (xmlData[i+1] === '?') {\n i = readPI(xmlData, ++i);\n if (i.err) return i;\n } else{\n break;\n }\n } else if (xmlData[i] === '&') {\n const afterAmp = validateAmpersand(xmlData, i);\n if (afterAmp == -1)\n return getErrorObject('InvalidChar', \"char '&' is not expected.\", getLineNumberForPosition(xmlData, i));\n i = afterAmp;\n }else{\n if (reachedRoot === true && !isWhiteSpace(xmlData[i])) {\n return getErrorObject('InvalidXml', \"Extra text at the end\", getLineNumberForPosition(xmlData, i));\n }\n }\n } //end of reading tag text value\n if (xmlData[i] === '<') {\n i--;\n }\n }\n } else {\n if ( isWhiteSpace(xmlData[i])) {\n continue;\n }\n return getErrorObject('InvalidChar', \"char '\"+xmlData[i]+\"' is not expected.\", getLineNumberForPosition(xmlData, i));\n }\n }\n\n if (!tagFound) {\n return getErrorObject('InvalidXml', 'Start tag expected.', 1);\n }else if (tags.length == 1) {\n return getErrorObject('InvalidTag', \"Unclosed tag '\"+tags[0].tagName+\"'.\", getLineNumberForPosition(xmlData, tags[0].tagStartPos));\n }else if (tags.length > 0) {\n return getErrorObject('InvalidXml', \"Invalid '\"+\n JSON.stringify(tags.map(t => t.tagName), null, 4).replace(/\\r?\\n/g, '')+\n \"' found.\", {line: 1, col: 1});\n }\n\n return true;\n};\n\nfunction isWhiteSpace(char){\n return char === ' ' || char === '\\t' || char === '\\n' || char === '\\r';\n}\n/**\n * Read Processing insstructions and skip\n * @param {*} xmlData\n * @param {*} i\n */\nfunction readPI(xmlData, i) {\n const start = i;\n for (; i < xmlData.length; i++) {\n if (xmlData[i] == '?' || xmlData[i] == ' ') {\n //tagname\n const tagname = xmlData.substr(start, i - start);\n if (i > 5 && tagname === 'xml') {\n return getErrorObject('InvalidXml', 'XML declaration allowed only at the start of the document.', getLineNumberForPosition(xmlData, i));\n } else if (xmlData[i] == '?' && xmlData[i + 1] == '>') {\n //check if valid attribut string\n i++;\n break;\n } else {\n continue;\n }\n }\n }\n return i;\n}\n\nfunction readCommentAndCDATA(xmlData, i) {\n if (xmlData.length > i + 5 && xmlData[i + 1] === '-' && xmlData[i + 2] === '-') {\n //comment\n for (i += 3; i < xmlData.length; i++) {\n if (xmlData[i] === '-' && xmlData[i + 1] === '-' && xmlData[i + 2] === '>') {\n i += 2;\n break;\n }\n }\n } else if (\n xmlData.length > i + 8 &&\n xmlData[i + 1] === 'D' &&\n xmlData[i + 2] === 'O' &&\n xmlData[i + 3] === 'C' &&\n xmlData[i + 4] === 'T' &&\n xmlData[i + 5] === 'Y' &&\n xmlData[i + 6] === 'P' &&\n xmlData[i + 7] === 'E'\n ) {\n let angleBracketsCount = 1;\n for (i += 8; i < xmlData.length; i++) {\n if (xmlData[i] === '<') {\n angleBracketsCount++;\n } else if (xmlData[i] === '>') {\n angleBracketsCount--;\n if (angleBracketsCount === 0) {\n break;\n }\n }\n }\n } else if (\n xmlData.length > i + 9 &&\n xmlData[i + 1] === '[' &&\n xmlData[i + 2] === 'C' &&\n xmlData[i + 3] === 'D' &&\n xmlData[i + 4] === 'A' &&\n xmlData[i + 5] === 'T' &&\n xmlData[i + 6] === 'A' &&\n xmlData[i + 7] === '['\n ) {\n for (i += 8; i < xmlData.length; i++) {\n if (xmlData[i] === ']' && xmlData[i + 1] === ']' && xmlData[i + 2] === '>') {\n i += 2;\n break;\n }\n }\n }\n\n return i;\n}\n\nconst doubleQuote = '\"';\nconst singleQuote = \"'\";\n\n/**\n * Keep reading xmlData until '<' is found outside the attribute value.\n * @param {string} xmlData\n * @param {number} i\n */\nfunction readAttributeStr(xmlData, i) {\n let attrStr = '';\n let startChar = '';\n let tagClosed = false;\n for (; i < xmlData.length; i++) {\n if (xmlData[i] === doubleQuote || xmlData[i] === singleQuote) {\n if (startChar === '') {\n startChar = xmlData[i];\n } else if (startChar !== xmlData[i]) {\n //if vaue is enclosed with double quote then single quotes are allowed inside the value and vice versa\n } else {\n startChar = '';\n }\n } else if (xmlData[i] === '>') {\n if (startChar === '') {\n tagClosed = true;\n break;\n }\n }\n attrStr += xmlData[i];\n }\n if (startChar !== '') {\n return false;\n }\n\n return {\n value: attrStr,\n index: i,\n tagClosed: tagClosed\n };\n}\n\n/**\n * Select all the attributes whether valid or invalid.\n */\nconst validAttrStrRegxp = new RegExp('(\\\\s*)([^\\\\s=]+)(\\\\s*=)?(\\\\s*([\\'\"])(([\\\\s\\\\S])*?)\\\\5)?', 'g');\n\n//attr, =\"sd\", a=\"amit's\", a=\"sd\"b=\"saf\", ab cd=\"\"\n\nfunction validateAttributeString(attrStr, options) {\n //console.log(\"start:\"+attrStr+\":end\");\n\n //if(attrStr.trim().length === 0) return true; //empty string\n\n const matches = getAllMatches(attrStr, validAttrStrRegxp);\n const attrNames = {};\n\n for (let i = 0; i < matches.length; i++) {\n if (matches[i][1].length === 0) {\n //nospace before attribute name: a=\"sd\"b=\"saf\"\n return getErrorObject('InvalidAttr', \"Attribute '\"+matches[i][2]+\"' has no space in starting.\", getPositionFromMatch(matches[i]))\n } else if (matches[i][3] !== undefined && matches[i][4] === undefined) {\n return getErrorObject('InvalidAttr', \"Attribute '\"+matches[i][2]+\"' is without value.\", getPositionFromMatch(matches[i]));\n } else if (matches[i][3] === undefined && !options.allowBooleanAttributes) {\n //independent attribute: ab\n return getErrorObject('InvalidAttr', \"boolean attribute '\"+matches[i][2]+\"' is not allowed.\", getPositionFromMatch(matches[i]));\n }\n /* else if(matches[i][6] === undefined){//attribute without value: ab=\n return { err: { code:\"InvalidAttr\",msg:\"attribute \" + matches[i][2] + \" has no value assigned.\"}};\n } */\n const attrName = matches[i][2];\n if (!validateAttrName(attrName)) {\n return getErrorObject('InvalidAttr', \"Attribute '\"+attrName+\"' is an invalid name.\", getPositionFromMatch(matches[i]));\n }\n if (!attrNames.hasOwnProperty(attrName)) {\n //check for duplicate attribute.\n attrNames[attrName] = 1;\n } else {\n return getErrorObject('InvalidAttr', \"Attribute '\"+attrName+\"' is repeated.\", getPositionFromMatch(matches[i]));\n }\n }\n\n return true;\n}\n\nfunction validateNumberAmpersand(xmlData, i) {\n let re = /\\d/;\n if (xmlData[i] === 'x') {\n i++;\n re = /[\\da-fA-F]/;\n }\n for (; i < xmlData.length; i++) {\n if (xmlData[i] === ';')\n return i;\n if (!xmlData[i].match(re))\n break;\n }\n return -1;\n}\n\nfunction validateAmpersand(xmlData, i) {\n // https://www.w3.org/TR/xml/#dt-charref\n i++;\n if (xmlData[i] === ';')\n return -1;\n if (xmlData[i] === '#') {\n i++;\n return validateNumberAmpersand(xmlData, i);\n }\n let count = 0;\n for (; i < xmlData.length; i++, count++) {\n if (xmlData[i].match(/\\w/) && count < 20)\n continue;\n if (xmlData[i] === ';')\n break;\n return -1;\n }\n return i;\n}\n\nfunction getErrorObject(code, message, lineNumber) {\n return {\n err: {\n code: code,\n msg: message,\n line: lineNumber.line || lineNumber,\n col: lineNumber.col,\n },\n };\n}\n\nfunction validateAttrName(attrName) {\n return isName(attrName);\n}\n\n// const startsWithXML = /^xml/i;\n\nfunction validateTagName(tagname) {\n return isName(tagname) /* && !tagname.match(startsWithXML) */;\n}\n\n//this function returns the line number for the character at the given index\nfunction getLineNumberForPosition(xmlData, index) {\n const lines = xmlData.substring(0, index).split(/\\r?\\n/);\n return {\n line: lines.length,\n\n // column number is last line's length + 1, because column numbering starts at 1:\n col: lines[lines.length - 1].length + 1\n };\n}\n\n//this function returns the position of the first character of match within attrStr\nfunction getPositionFromMatch(match) {\n return match.startIndex + match[1].length;\n}\n","'use strict';\n//parse Empty Node as self closing node\nimport buildFromOrderedJs from './orderedJs2Xml.js';\nimport getIgnoreAttributesFn from \"../ignoreAttributes.js\";\n\nconst defaultOptions = {\n attributeNamePrefix: '@_',\n attributesGroupName: false,\n textNodeName: '#text',\n ignoreAttributes: true,\n cdataPropName: false,\n format: false,\n indentBy: ' ',\n suppressEmptyNode: false,\n suppressUnpairedNode: true,\n suppressBooleanAttributes: true,\n tagValueProcessor: function(key, a) {\n return a;\n },\n attributeValueProcessor: function(attrName, a) {\n return a;\n },\n preserveOrder: false,\n commentPropName: false,\n unpairedTags: [],\n entities: [\n { regex: new RegExp(\"&\", \"g\"), val: \"&\" },//it must be on top\n { regex: new RegExp(\">\", \"g\"), val: \">\" },\n { regex: new RegExp(\"<\", \"g\"), val: \"<\" },\n { regex: new RegExp(\"\\'\", \"g\"), val: \"'\" },\n { regex: new RegExp(\"\\\"\", \"g\"), val: \""\" }\n ],\n processEntities: true,\n stopNodes: [],\n // transformTagName: false,\n // transformAttributeName: false,\n oneListGroup: false\n};\n\nexport default function Builder(options) {\n this.options = Object.assign({}, defaultOptions, options);\n if (this.options.ignoreAttributes === true || this.options.attributesGroupName) {\n this.isAttribute = function(/*a*/) {\n return false;\n };\n } else {\n this.ignoreAttributesFn = getIgnoreAttributesFn(this.options.ignoreAttributes)\n this.attrPrefixLen = this.options.attributeNamePrefix.length;\n this.isAttribute = isAttribute;\n }\n\n this.processTextOrObjNode = processTextOrObjNode\n\n if (this.options.format) {\n this.indentate = indentate;\n this.tagEndChar = '>\\n';\n this.newLine = '\\n';\n } else {\n this.indentate = function() {\n return '';\n };\n this.tagEndChar = '>';\n this.newLine = '';\n }\n}\n\nBuilder.prototype.build = function(jObj) {\n if(this.options.preserveOrder){\n return buildFromOrderedJs(jObj, this.options);\n }else {\n if(Array.isArray(jObj) && this.options.arrayNodeName && this.options.arrayNodeName.length > 1){\n jObj = {\n [this.options.arrayNodeName] : jObj\n }\n }\n return this.j2x(jObj, 0, []).val;\n }\n};\n\nBuilder.prototype.j2x = function(jObj, level, ajPath) {\n let attrStr = '';\n let val = '';\n const jPath = ajPath.join('.')\n for (let key in jObj) {\n if(!Object.prototype.hasOwnProperty.call(jObj, key)) continue;\n if (typeof jObj[key] === 'undefined') {\n // supress undefined node only if it is not an attribute\n if (this.isAttribute(key)) {\n val += '';\n }\n } else if (jObj[key] === null) {\n // null attribute should be ignored by the attribute list, but should not cause the tag closing\n if (this.isAttribute(key)) {\n val += '';\n } else if (key === this.options.cdataPropName) {\n val += '';\n } else if (key[0] === '?') {\n val += this.indentate(level) + '<' + key + '?' + this.tagEndChar;\n } else {\n val += this.indentate(level) + '<' + key + '/' + this.tagEndChar;\n }\n // val += this.indentate(level) + '<' + key + '/' + this.tagEndChar;\n } else if (jObj[key] instanceof Date) {\n val += this.buildTextValNode(jObj[key], key, '', level);\n } else if (typeof jObj[key] !== 'object') {\n //premitive type\n const attr = this.isAttribute(key);\n if (attr && !this.ignoreAttributesFn(attr, jPath)) {\n attrStr += this.buildAttrPairStr(attr, '' + jObj[key]);\n } else if (!attr) {\n //tag value\n if (key === this.options.textNodeName) {\n let newval = this.options.tagValueProcessor(key, '' + jObj[key]);\n val += this.replaceEntitiesValue(newval);\n } else {\n val += this.buildTextValNode(jObj[key], key, '', level);\n }\n }\n } else if (Array.isArray(jObj[key])) {\n //repeated nodes\n const arrLen = jObj[key].length;\n let listTagVal = \"\";\n let listTagAttr = \"\";\n for (let j = 0; j < arrLen; j++) {\n const item = jObj[key][j];\n if (typeof item === 'undefined') {\n // supress undefined node\n } else if (item === null) {\n if(key[0] === \"?\") val += this.indentate(level) + '<' + key + '?' + this.tagEndChar;\n else val += this.indentate(level) + '<' + key + '/' + this.tagEndChar;\n // val += this.indentate(level) + '<' + key + '/' + this.tagEndChar;\n } else if (typeof item === 'object') {\n if(this.options.oneListGroup){\n const result = this.j2x(item, level + 1, ajPath.concat(key));\n listTagVal += result.val;\n if (this.options.attributesGroupName && item.hasOwnProperty(this.options.attributesGroupName)) {\n listTagAttr += result.attrStr\n }\n }else{\n listTagVal += this.processTextOrObjNode(item, key, level, ajPath)\n }\n } else {\n if (this.options.oneListGroup) {\n let textValue = this.options.tagValueProcessor(key, item);\n textValue = this.replaceEntitiesValue(textValue);\n listTagVal += textValue;\n } else {\n listTagVal += this.buildTextValNode(item, key, '', level);\n }\n }\n }\n if(this.options.oneListGroup){\n listTagVal = this.buildObjectNode(listTagVal, key, listTagAttr, level);\n }\n val += listTagVal;\n } else {\n //nested node\n if (this.options.attributesGroupName && key === this.options.attributesGroupName) {\n const Ks = Object.keys(jObj[key]);\n const L = Ks.length;\n for (let j = 0; j < L; j++) {\n attrStr += this.buildAttrPairStr(Ks[j], '' + jObj[key][Ks[j]]);\n }\n } else {\n val += this.processTextOrObjNode(jObj[key], key, level, ajPath)\n }\n }\n }\n return {attrStr: attrStr, val: val};\n};\n\nBuilder.prototype.buildAttrPairStr = function(attrName, val){\n val = this.options.attributeValueProcessor(attrName, '' + val);\n val = this.replaceEntitiesValue(val);\n if (this.options.suppressBooleanAttributes && val === \"true\") {\n return ' ' + attrName;\n } else return ' ' + attrName + '=\"' + val + '\"';\n}\n\nfunction processTextOrObjNode (object, key, level, ajPath) {\n const result = this.j2x(object, level + 1, ajPath.concat(key));\n if (object[this.options.textNodeName] !== undefined && Object.keys(object).length === 1) {\n return this.buildTextValNode(object[this.options.textNodeName], key, result.attrStr, level);\n } else {\n return this.buildObjectNode(result.val, key, result.attrStr, level);\n }\n}\n\nBuilder.prototype.buildObjectNode = function(val, key, attrStr, level) {\n if(val === \"\"){\n if(key[0] === \"?\") return this.indentate(level) + '<' + key + attrStr+ '?' + this.tagEndChar;\n else {\n return this.indentate(level) + '<' + key + attrStr + this.closeTag(key) + this.tagEndChar;\n }\n }else{\n\n let tagEndExp = '' + val + tagEndExp );\n } else if (this.options.commentPropName !== false && key === this.options.commentPropName && piClosingChar.length === 0) {\n return this.indentate(level) + `` + this.newLine;\n }else {\n return (\n this.indentate(level) + '<' + key + attrStr + piClosingChar + this.tagEndChar +\n val +\n this.indentate(level) + tagEndExp );\n }\n }\n}\n\nBuilder.prototype.closeTag = function(key){\n let closeTag = \"\";\n if(this.options.unpairedTags.indexOf(key) !== -1){ //unpaired\n if(!this.options.suppressUnpairedNode) closeTag = \"/\"\n }else if(this.options.suppressEmptyNode){ //empty\n closeTag = \"/\";\n }else{\n closeTag = `>` + this.newLine;\n }else if (this.options.commentPropName !== false && key === this.options.commentPropName) {\n return this.indentate(level) + `` + this.newLine;\n }else if(key[0] === \"?\") {//PI tag\n return this.indentate(level) + '<' + key + attrStr+ '?' + this.tagEndChar; \n }else{\n let textValue = this.options.tagValueProcessor(key, val);\n textValue = this.replaceEntitiesValue(textValue);\n \n if( textValue === ''){\n return this.indentate(level) + '<' + key + attrStr + this.closeTag(key) + this.tagEndChar;\n }else{\n return this.indentate(level) + '<' + key + attrStr + '>' +\n textValue +\n ' 0 && this.options.processEntities){\n for (let i=0; i 0) {\n indentation = EOL;\n }\n return arrToStr(jArray, options, \"\", indentation);\n}\n\nfunction arrToStr(arr, options, jPath, indentation) {\n let xmlStr = \"\";\n let isPreviousElementTag = false;\n\n for (let i = 0; i < arr.length; i++) {\n const tagObj = arr[i];\n const tagName = propName(tagObj);\n if(tagName === undefined) continue;\n\n let newJPath = \"\";\n if (jPath.length === 0) newJPath = tagName\n else newJPath = `${jPath}.${tagName}`;\n\n if (tagName === options.textNodeName) {\n let tagText = tagObj[tagName];\n if (!isStopNode(newJPath, options)) {\n tagText = options.tagValueProcessor(tagName, tagText);\n tagText = replaceEntitiesValue(tagText, options);\n }\n if (isPreviousElementTag) {\n xmlStr += indentation;\n }\n xmlStr += tagText;\n isPreviousElementTag = false;\n continue;\n } else if (tagName === options.cdataPropName) {\n if (isPreviousElementTag) {\n xmlStr += indentation;\n }\n xmlStr += ``;\n isPreviousElementTag = false;\n continue;\n } else if (tagName === options.commentPropName) {\n xmlStr += indentation + ``;\n isPreviousElementTag = true;\n continue;\n } else if (tagName[0] === \"?\") {\n const attStr = attr_to_str(tagObj[\":@\"], options);\n const tempInd = tagName === \"?xml\" ? \"\" : indentation;\n let piTextNodeName = tagObj[tagName][0][options.textNodeName];\n piTextNodeName = piTextNodeName.length !== 0 ? \" \" + piTextNodeName : \"\"; //remove extra spacing\n xmlStr += tempInd + `<${tagName}${piTextNodeName}${attStr}?>`;\n isPreviousElementTag = true;\n continue;\n }\n let newIdentation = indentation;\n if (newIdentation !== \"\") {\n newIdentation += options.indentBy;\n }\n const attStr = attr_to_str(tagObj[\":@\"], options);\n const tagStart = indentation + `<${tagName}${attStr}`;\n const tagValue = arrToStr(tagObj[tagName], options, newJPath, newIdentation);\n if (options.unpairedTags.indexOf(tagName) !== -1) {\n if (options.suppressUnpairedNode) xmlStr += tagStart + \">\";\n else xmlStr += tagStart + \"/>\";\n } else if ((!tagValue || tagValue.length === 0) && options.suppressEmptyNode) {\n xmlStr += tagStart + \"/>\";\n } else if (tagValue && tagValue.endsWith(\">\")) {\n xmlStr += tagStart + `>${tagValue}${indentation}`;\n } else {\n xmlStr += tagStart + \">\";\n if (tagValue && indentation !== \"\" && (tagValue.includes(\"/>\") || tagValue.includes(\"`;\n }\n isPreviousElementTag = true;\n }\n\n return xmlStr;\n}\n\nfunction propName(obj) {\n const keys = Object.keys(obj);\n for (let i = 0; i < keys.length; i++) {\n const key = keys[i];\n if(!obj.hasOwnProperty(key)) continue;\n if (key !== \":@\") return key;\n }\n}\n\nfunction attr_to_str(attrMap, options) {\n let attrStr = \"\";\n if (attrMap && !options.ignoreAttributes) {\n for (let attr in attrMap) {\n if(!attrMap.hasOwnProperty(attr)) continue;\n let attrVal = options.attributeValueProcessor(attr, attrMap[attr]);\n attrVal = replaceEntitiesValue(attrVal, options);\n if (attrVal === true && options.suppressBooleanAttributes) {\n attrStr += ` ${attr.substr(options.attributeNamePrefix.length)}`;\n } else {\n attrStr += ` ${attr.substr(options.attributeNamePrefix.length)}=\"${attrVal}\"`;\n }\n }\n }\n return attrStr;\n}\n\nfunction isStopNode(jPath, options) {\n jPath = jPath.substr(0, jPath.length - options.textNodeName.length - 1);\n let tagName = jPath.substr(jPath.lastIndexOf(\".\") + 1);\n for (let index in options.stopNodes) {\n if (options.stopNodes[index] === jPath || options.stopNodes[index] === \"*.\" + tagName) return true;\n }\n return false;\n}\n\nfunction replaceEntitiesValue(textValue, options) {\n if (textValue && textValue.length > 0 && options.processEntities) {\n for (let i = 0; i < options.entities.length; i++) {\n const entity = options.entities[i];\n textValue = textValue.replace(entity.regex, entity.val);\n }\n }\n return textValue;\n}\n","import {isName} from '../util.js';\n\nexport default class DocTypeReader{\n constructor(processEntities){\n this.suppressValidationErr = !processEntities;\n }\n \n readDocType(xmlData, i){\n \n const entities = {};\n if( xmlData[i + 3] === 'O' &&\n xmlData[i + 4] === 'C' &&\n xmlData[i + 5] === 'T' &&\n xmlData[i + 6] === 'Y' &&\n xmlData[i + 7] === 'P' &&\n xmlData[i + 8] === 'E')\n { \n i = i+9;\n let angleBracketsCount = 1;\n let hasBody = false, comment = false;\n let exp = \"\";\n for(;i') { //Read tag content\n if(comment){\n if( xmlData[i - 1] === \"-\" && xmlData[i - 2] === \"-\"){\n comment = false;\n angleBracketsCount--;\n }\n }else{\n angleBracketsCount--;\n }\n if (angleBracketsCount === 0) {\n break;\n }\n }else if( xmlData[i] === '['){\n hasBody = true;\n }else{\n exp += xmlData[i];\n }\n }\n if(angleBracketsCount !== 0){\n throw new Error(`Unclosed DOCTYPE`);\n }\n }else{\n throw new Error(`Invalid Tag instead of DOCTYPE`);\n }\n return {entities, i};\n }\n readEntityExp(xmlData, i) { \n //External entities are not supported\n // \n\n //Parameter entities are not supported\n // \n\n //Internal entities are supported\n // \n\n // Skip leading whitespace after \n // \n // \n // \n // \n \n // Skip leading whitespace after {\n while (index < data.length && /\\s/.test(data[index])) {\n index++;\n }\n return index;\n};\n\n\n\nfunction hasSeq(data, seq,i){\n for(let j=0;j false,\n commentPropName: false,\n unpairedTags: [],\n processEntities: true,\n htmlEntities: false,\n ignoreDeclaration: false,\n ignorePiTags: false,\n transformTagName: false,\n transformAttributeName: false,\n updateTag: function(tagName, jPath, attrs){\n return tagName\n },\n // skipEmptyListItem: false\n captureMetaData: false,\n};\n \nexport const buildOptions = function(options) {\n return Object.assign({}, defaultOptions, options);\n};\n","'use strict';\n///@ts-check\n\nimport {getAllMatches, isExist} from '../util.js';\nimport xmlNode from './xmlNode.js';\nimport DocTypeReader from './DocTypeReader.js';\nimport toNumber from \"strnum\";\nimport getIgnoreAttributesFn from \"../ignoreAttributes.js\";\n\n// const regx =\n// '<((!\\\\[CDATA\\\\[([\\\\s\\\\S]*?)(]]>))|((NAME:)?(NAME))([^>]*)>|((\\\\/)(NAME)\\\\s*>))([^<]*)'\n// .replace(/NAME/g, util.nameRegexp);\n\n//const tagsRegx = new RegExp(\"<(\\\\/?[\\\\w:\\\\-\\._]+)([^>]*)>(\\\\s*\"+cdataRegx+\")*([^<]+)?\",\"g\");\n//const tagsRegx = new RegExp(\"<(\\\\/?)((\\\\w*:)?([\\\\w:\\\\-\\._]+))([^>]*)>([^<]*)(\"+cdataRegx+\"([^<]*))*([^<]+)?\",\"g\");\n\nexport default class OrderedObjParser{\n constructor(options){\n this.options = options;\n this.currentNode = null;\n this.tagsNodeStack = [];\n this.docTypeEntities = {};\n this.lastEntities = {\n \"apos\" : { regex: /&(apos|#39|#x27);/g, val : \"'\"},\n \"gt\" : { regex: /&(gt|#62|#x3E);/g, val : \">\"},\n \"lt\" : { regex: /&(lt|#60|#x3C);/g, val : \"<\"},\n \"quot\" : { regex: /&(quot|#34|#x22);/g, val : \"\\\"\"},\n };\n this.ampEntity = { regex: /&(amp|#38|#x26);/g, val : \"&\"};\n this.htmlEntities = {\n \"space\": { regex: /&(nbsp|#160);/g, val: \" \" },\n // \"lt\" : { regex: /&(lt|#60);/g, val: \"<\" },\n // \"gt\" : { regex: /&(gt|#62);/g, val: \">\" },\n // \"amp\" : { regex: /&(amp|#38);/g, val: \"&\" },\n // \"quot\" : { regex: /&(quot|#34);/g, val: \"\\\"\" },\n // \"apos\" : { regex: /&(apos|#39);/g, val: \"'\" },\n \"cent\" : { regex: /&(cent|#162);/g, val: \"¢\" },\n \"pound\" : { regex: /&(pound|#163);/g, val: \"£\" },\n \"yen\" : { regex: /&(yen|#165);/g, val: \"¥\" },\n \"euro\" : { regex: /&(euro|#8364);/g, val: \"€\" },\n \"copyright\" : { regex: /&(copy|#169);/g, val: \"©\" },\n \"reg\" : { regex: /&(reg|#174);/g, val: \"®\" },\n \"inr\" : { regex: /&(inr|#8377);/g, val: \"₹\" },\n \"num_dec\": { regex: /&#([0-9]{1,7});/g, val : (_, str) => fromCodePoint(str, 10, \"&#\") },\n \"num_hex\": { regex: /&#x([0-9a-fA-F]{1,6});/g, val : (_, str) => fromCodePoint(str, 16, \"&#x\") },\n };\n this.addExternalEntities = addExternalEntities;\n this.parseXml = parseXml;\n this.parseTextData = parseTextData;\n this.resolveNameSpace = resolveNameSpace;\n this.buildAttributesMap = buildAttributesMap;\n this.isItStopNode = isItStopNode;\n this.replaceEntitiesValue = replaceEntitiesValue;\n this.readStopNodeData = readStopNodeData;\n this.saveTextToParentTag = saveTextToParentTag;\n this.addChild = addChild;\n this.ignoreAttributesFn = getIgnoreAttributesFn(this.options.ignoreAttributes)\n\n if(this.options.stopNodes && this.options.stopNodes.length > 0){\n this.stopNodesExact = new Set();\n this.stopNodesWildcard = new Set();\n for(let i = 0; i < this.options.stopNodes.length; i++){\n const stopNodeExp = this.options.stopNodes[i];\n if(typeof stopNodeExp !== 'string') continue;\n if(stopNodeExp.startsWith(\"*.\")){\n this.stopNodesWildcard.add(stopNodeExp.substring(2));\n }else{\n this.stopNodesExact.add(stopNodeExp);\n }\n }\n }\n }\n\n}\n\nfunction addExternalEntities(externalEntities){\n const entKeys = Object.keys(externalEntities);\n for (let i = 0; i < entKeys.length; i++) {\n const ent = entKeys[i];\n this.lastEntities[ent] = {\n regex: new RegExp(\"&\"+ent+\";\",\"g\"),\n val : externalEntities[ent]\n }\n }\n}\n\n/**\n * @param {string} val\n * @param {string} tagName\n * @param {string} jPath\n * @param {boolean} dontTrim\n * @param {boolean} hasAttributes\n * @param {boolean} isLeafNode\n * @param {boolean} escapeEntities\n */\nfunction parseTextData(val, tagName, jPath, dontTrim, hasAttributes, isLeafNode, escapeEntities) {\n if (val !== undefined) {\n if (this.options.trimValues && !dontTrim) {\n val = val.trim();\n }\n if(val.length > 0){\n if(!escapeEntities) val = this.replaceEntitiesValue(val);\n \n const newval = this.options.tagValueProcessor(tagName, val, jPath, hasAttributes, isLeafNode);\n if(newval === null || newval === undefined){\n //don't parse\n return val;\n }else if(typeof newval !== typeof val || newval !== val){\n //overwrite\n return newval;\n }else if(this.options.trimValues){\n return parseValue(val, this.options.parseTagValue, this.options.numberParseOptions);\n }else{\n const trimmedVal = val.trim();\n if(trimmedVal === val){\n return parseValue(val, this.options.parseTagValue, this.options.numberParseOptions);\n }else{\n return val;\n }\n }\n }\n }\n}\n\nfunction resolveNameSpace(tagname) {\n if (this.options.removeNSPrefix) {\n const tags = tagname.split(':');\n const prefix = tagname.charAt(0) === '/' ? '/' : '';\n if (tags[0] === 'xmlns') {\n return '';\n }\n if (tags.length === 2) {\n tagname = prefix + tags[1];\n }\n }\n return tagname;\n}\n\n//TODO: change regex to capture NS\n//const attrsRegx = new RegExp(\"([\\\\w\\\\-\\\\.\\\\:]+)\\\\s*=\\\\s*(['\\\"])((.|\\n)*?)\\\\2\",\"gm\");\nconst attrsRegx = new RegExp('([^\\\\s=]+)\\\\s*(=\\\\s*([\\'\"])([\\\\s\\\\S]*?)\\\\3)?', 'gm');\n\nfunction buildAttributesMap(attrStr, jPath) {\n if (this.options.ignoreAttributes !== true && typeof attrStr === 'string') {\n // attrStr = attrStr.replace(/\\r?\\n/g, ' ');\n //attrStr = attrStr || attrStr.trim();\n\n const matches = getAllMatches(attrStr, attrsRegx);\n const len = matches.length; //don't make it inline\n const attrs = {};\n for (let i = 0; i < len; i++) {\n const attrName = this.resolveNameSpace(matches[i][1]);\n if (this.ignoreAttributesFn(attrName, jPath)) {\n continue\n }\n let oldVal = matches[i][4];\n let aName = this.options.attributeNamePrefix + attrName;\n if (attrName.length) {\n if (this.options.transformAttributeName) {\n aName = this.options.transformAttributeName(aName);\n }\n if(aName === \"__proto__\") aName = \"#__proto__\";\n if (oldVal !== undefined) {\n if (this.options.trimValues) {\n oldVal = oldVal.trim();\n }\n oldVal = this.replaceEntitiesValue(oldVal);\n const newVal = this.options.attributeValueProcessor(attrName, oldVal, jPath);\n if(newVal === null || newVal === undefined){\n //don't parse\n attrs[aName] = oldVal;\n }else if(typeof newVal !== typeof oldVal || newVal !== oldVal){\n //overwrite\n attrs[aName] = newVal;\n }else{\n //parse\n attrs[aName] = parseValue(\n oldVal,\n this.options.parseAttributeValue,\n this.options.numberParseOptions\n );\n }\n } else if (this.options.allowBooleanAttributes) {\n attrs[aName] = true;\n }\n }\n }\n if (!Object.keys(attrs).length) {\n return;\n }\n if (this.options.attributesGroupName) {\n const attrCollection = {};\n attrCollection[this.options.attributesGroupName] = attrs;\n return attrCollection;\n }\n return attrs\n }\n}\n\nconst parseXml = function(xmlData) {\n xmlData = xmlData.replace(/\\r\\n?/g, \"\\n\"); //TODO: remove this line\n const xmlObj = new xmlNode('!xml');\n let currentNode = xmlObj;\n let textData = \"\";\n let jPath = \"\";\n const docTypeReader = new DocTypeReader(this.options.processEntities);\n for(let i=0; i< xmlData.length; i++){//for each char in XML data\n const ch = xmlData[i];\n if(ch === '<'){\n // const nextIndex = i+1;\n // const _2ndChar = xmlData[nextIndex];\n if( xmlData[i+1] === '/') {//Closing Tag\n const closeIndex = findClosingIndex(xmlData, \">\", i, \"Closing Tag is not closed.\")\n let tagName = xmlData.substring(i+2,closeIndex).trim();\n\n if(this.options.removeNSPrefix){\n const colonIndex = tagName.indexOf(\":\");\n if(colonIndex !== -1){\n tagName = tagName.substr(colonIndex+1);\n }\n }\n\n if(this.options.transformTagName) {\n tagName = this.options.transformTagName(tagName);\n }\n\n if(currentNode){\n textData = this.saveTextToParentTag(textData, currentNode, jPath);\n }\n\n //check if last tag of nested tag was unpaired tag\n const lastTagName = jPath.substring(jPath.lastIndexOf(\".\")+1);\n if(tagName && this.options.unpairedTags.indexOf(tagName) !== -1 ){\n throw new Error(`Unpaired tag can not be used as closing tag: `);\n }\n let propIndex = 0\n if(lastTagName && this.options.unpairedTags.indexOf(lastTagName) !== -1 ){\n propIndex = jPath.lastIndexOf('.', jPath.lastIndexOf('.')-1)\n this.tagsNodeStack.pop();\n }else{\n propIndex = jPath.lastIndexOf(\".\");\n }\n jPath = jPath.substring(0, propIndex);\n\n currentNode = this.tagsNodeStack.pop();//avoid recursion, set the parent tag scope\n textData = \"\";\n i = closeIndex;\n } else if( xmlData[i+1] === '?') {\n\n let tagData = readTagExp(xmlData,i, false, \"?>\");\n if(!tagData) throw new Error(\"Pi Tag is not closed.\");\n\n textData = this.saveTextToParentTag(textData, currentNode, jPath);\n if( (this.options.ignoreDeclaration && tagData.tagName === \"?xml\") || this.options.ignorePiTags){\n //do nothing\n }else{\n \n const childNode = new xmlNode(tagData.tagName);\n childNode.add(this.options.textNodeName, \"\");\n \n if(tagData.tagName !== tagData.tagExp && tagData.attrExpPresent){\n childNode[\":@\"] = this.buildAttributesMap(tagData.tagExp, jPath);\n }\n this.addChild(currentNode, childNode, jPath, i);\n }\n\n\n i = tagData.closeIndex + 1;\n } else if(xmlData.substr(i + 1, 3) === '!--') {\n const endIndex = findClosingIndex(xmlData, \"-->\", i+4, \"Comment is not closed.\")\n if(this.options.commentPropName){\n const comment = xmlData.substring(i + 4, endIndex - 2);\n\n textData = this.saveTextToParentTag(textData, currentNode, jPath);\n\n currentNode.add(this.options.commentPropName, [ { [this.options.textNodeName] : comment } ]);\n }\n i = endIndex;\n } else if( xmlData.substr(i + 1, 2) === '!D') {\n const result = docTypeReader.readDocType(xmlData, i);\n this.docTypeEntities = result.entities;\n i = result.i;\n }else if(xmlData.substr(i + 1, 2) === '![') {\n const closeIndex = findClosingIndex(xmlData, \"]]>\", i, \"CDATA is not closed.\") - 2;\n const tagExp = xmlData.substring(i + 9,closeIndex);\n\n textData = this.saveTextToParentTag(textData, currentNode, jPath);\n\n let val = this.parseTextData(tagExp, currentNode.tagname, jPath, true, false, true, true);\n if(val == undefined) val = \"\";\n\n //cdata should be set even if it is 0 length string\n if(this.options.cdataPropName){\n currentNode.add(this.options.cdataPropName, [ { [this.options.textNodeName] : tagExp } ]);\n }else{\n currentNode.add(this.options.textNodeName, val);\n }\n \n i = closeIndex + 2;\n }else {//Opening tag\n let result = readTagExp(xmlData,i, this.options.removeNSPrefix);\n let tagName= result.tagName;\n const rawTagName = result.rawTagName;\n let tagExp = result.tagExp;\n let attrExpPresent = result.attrExpPresent;\n let closeIndex = result.closeIndex;\n\n if (this.options.transformTagName) {\n //console.log(tagExp, tagName)\n const newTagName = this.options.transformTagName(tagName);\n if(tagExp === tagName) {\n tagExp = newTagName\n }\n tagName = newTagName;\n }\n \n //save text as child node\n if (currentNode && textData) {\n if(currentNode.tagname !== '!xml'){\n //when nested tag is found\n textData = this.saveTextToParentTag(textData, currentNode, jPath, false);\n }\n }\n\n //check if last tag was unpaired tag\n const lastTag = currentNode;\n if(lastTag && this.options.unpairedTags.indexOf(lastTag.tagname) !== -1 ){\n currentNode = this.tagsNodeStack.pop();\n jPath = jPath.substring(0, jPath.lastIndexOf(\".\"));\n }\n if(tagName !== xmlObj.tagname){\n jPath += jPath ? \".\" + tagName : tagName;\n }\n const startIndex = i;\n if (this.isItStopNode(this.stopNodesExact, this.stopNodesWildcard, jPath, tagName)) {\n let tagContent = \"\";\n //self-closing tag\n if(tagExp.length > 0 && tagExp.lastIndexOf(\"/\") === tagExp.length - 1){\n if(tagName[tagName.length - 1] === \"/\"){ //remove trailing '/'\n tagName = tagName.substr(0, tagName.length - 1);\n jPath = jPath.substr(0, jPath.length - 1);\n tagExp = tagName;\n }else{\n tagExp = tagExp.substr(0, tagExp.length - 1);\n }\n i = result.closeIndex;\n }\n //unpaired tag\n else if(this.options.unpairedTags.indexOf(tagName) !== -1){\n \n i = result.closeIndex;\n }\n //normal tag\n else{\n //read until closing tag is found\n const result = this.readStopNodeData(xmlData, rawTagName, closeIndex + 1);\n if(!result) throw new Error(`Unexpected end of ${rawTagName}`);\n i = result.i;\n tagContent = result.tagContent;\n }\n\n const childNode = new xmlNode(tagName);\n\n if(tagName !== tagExp && attrExpPresent){\n childNode[\":@\"] = this.buildAttributesMap(tagExp, jPath\n );\n }\n if(tagContent) {\n tagContent = this.parseTextData(tagContent, tagName, jPath, true, attrExpPresent, true, true);\n }\n \n jPath = jPath.substr(0, jPath.lastIndexOf(\".\"));\n childNode.add(this.options.textNodeName, tagContent);\n \n this.addChild(currentNode, childNode, jPath, startIndex);\n }else{\n //selfClosing tag\n if(tagExp.length > 0 && tagExp.lastIndexOf(\"/\") === tagExp.length - 1){\n if(tagName[tagName.length - 1] === \"/\"){ //remove trailing '/'\n tagName = tagName.substr(0, tagName.length - 1);\n jPath = jPath.substr(0, jPath.length - 1);\n tagExp = tagName;\n }else{\n tagExp = tagExp.substr(0, tagExp.length - 1);\n }\n \n if(this.options.transformTagName) {\n const newTagName = this.options.transformTagName(tagName);\n if(tagExp === tagName) {\n tagExp = newTagName\n }\n tagName = newTagName;\n }\n\n const childNode = new xmlNode(tagName);\n if(tagName !== tagExp && attrExpPresent){\n childNode[\":@\"] = this.buildAttributesMap(tagExp, jPath);\n }\n this.addChild(currentNode, childNode, jPath, startIndex);\n jPath = jPath.substr(0, jPath.lastIndexOf(\".\"));\n }\n //opening tag\n else{\n const childNode = new xmlNode( tagName);\n this.tagsNodeStack.push(currentNode);\n \n if(tagName !== tagExp && attrExpPresent){\n childNode[\":@\"] = this.buildAttributesMap(tagExp, jPath);\n }\n this.addChild(currentNode, childNode, jPath, startIndex);\n currentNode = childNode;\n }\n textData = \"\";\n i = closeIndex;\n }\n }\n }else{\n textData += xmlData[i];\n }\n }\n return xmlObj.child;\n}\n\nfunction addChild(currentNode, childNode, jPath, startIndex){\n // unset startIndex if not requested\n if (!this.options.captureMetaData) startIndex = undefined;\n const result = this.options.updateTag(childNode.tagname, jPath, childNode[\":@\"])\n if(result === false){\n //do nothing\n } else if(typeof result === \"string\"){\n childNode.tagname = result\n currentNode.addChild(childNode, startIndex);\n }else{\n currentNode.addChild(childNode, startIndex);\n }\n}\n\nconst replaceEntitiesValue = function(val){\n\n if(this.options.processEntities){\n for(let entityName in this.docTypeEntities){\n const entity = this.docTypeEntities[entityName];\n val = val.replace( entity.regx, entity.val);\n }\n for(let entityName in this.lastEntities){\n const entity = this.lastEntities[entityName];\n val = val.replace( entity.regex, entity.val);\n }\n if(this.options.htmlEntities){\n for(let entityName in this.htmlEntities){\n const entity = this.htmlEntities[entityName];\n val = val.replace( entity.regex, entity.val);\n }\n }\n val = val.replace( this.ampEntity.regex, this.ampEntity.val);\n }\n return val;\n}\nfunction saveTextToParentTag(textData, currentNode, jPath, isLeafNode) {\n if (textData) { //store previously collected data as textNode\n if(isLeafNode === undefined) isLeafNode = currentNode.child.length === 0\n \n textData = this.parseTextData(textData,\n currentNode.tagname,\n jPath,\n false,\n currentNode[\":@\"] ? Object.keys(currentNode[\":@\"]).length !== 0 : false,\n isLeafNode);\n\n if (textData !== undefined && textData !== \"\")\n currentNode.add(this.options.textNodeName, textData);\n textData = \"\";\n }\n return textData;\n}\n\n//TODO: use jPath to simplify the logic\n/**\n * @param {Set} stopNodesExact\n * @param {Set} stopNodesWildcard\n * @param {string} jPath\n * @param {string} currentTagName\n */\nfunction isItStopNode(stopNodesExact, stopNodesWildcard, jPath, currentTagName){\n if(stopNodesWildcard && stopNodesWildcard.has(currentTagName)) return true;\n if(stopNodesExact && stopNodesExact.has(jPath)) return true;\n return false;\n}\n\n/**\n * Returns the tag Expression and where it is ending handling single-double quotes situation\n * @param {string} xmlData \n * @param {number} i starting index\n * @returns \n */\nfunction tagExpWithClosingIndex(xmlData, i, closingChar = \">\"){\n let attrBoundary;\n let tagExp = \"\";\n for (let index = i; index < xmlData.length; index++) {\n let ch = xmlData[index];\n if (attrBoundary) {\n if (ch === attrBoundary) attrBoundary = \"\";//reset\n } else if (ch === '\"' || ch === \"'\") {\n attrBoundary = ch;\n } else if (ch === closingChar[0]) {\n if(closingChar[1]){\n if(xmlData[index + 1] === closingChar[1]){\n return {\n data: tagExp,\n index: index\n }\n }\n }else{\n return {\n data: tagExp,\n index: index\n }\n }\n } else if (ch === '\\t') {\n ch = \" \"\n }\n tagExp += ch;\n }\n}\n\nfunction findClosingIndex(xmlData, str, i, errMsg){\n const closingIndex = xmlData.indexOf(str, i);\n if(closingIndex === -1){\n throw new Error(errMsg)\n }else{\n return closingIndex + str.length - 1;\n }\n}\n\nfunction readTagExp(xmlData,i, removeNSPrefix, closingChar = \">\"){\n const result = tagExpWithClosingIndex(xmlData, i+1, closingChar);\n if(!result) return;\n let tagExp = result.data;\n const closeIndex = result.index;\n const separatorIndex = tagExp.search(/\\s/);\n let tagName = tagExp;\n let attrExpPresent = true;\n if(separatorIndex !== -1){//separate tag name and attributes expression\n tagName = tagExp.substring(0, separatorIndex);\n tagExp = tagExp.substring(separatorIndex + 1).trimStart();\n }\n\n const rawTagName = tagName;\n if(removeNSPrefix){\n const colonIndex = tagName.indexOf(\":\");\n if(colonIndex !== -1){\n tagName = tagName.substr(colonIndex+1);\n attrExpPresent = tagName !== result.data.substr(colonIndex + 1);\n }\n }\n\n return {\n tagName: tagName,\n tagExp: tagExp,\n closeIndex: closeIndex,\n attrExpPresent: attrExpPresent,\n rawTagName: rawTagName,\n }\n}\n/**\n * find paired tag for a stop node\n * @param {string} xmlData \n * @param {string} tagName \n * @param {number} i \n */\nfunction readStopNodeData(xmlData, tagName, i){\n const startIndex = i;\n // Starting at 1 since we already have an open tag\n let openTagCount = 1;\n\n for (; i < xmlData.length; i++) {\n if( xmlData[i] === \"<\"){ \n if (xmlData[i+1] === \"/\") {//close tag\n const closeIndex = findClosingIndex(xmlData, \">\", i, `${tagName} is not closed`);\n let closeTagName = xmlData.substring(i+2,closeIndex).trim();\n if(closeTagName === tagName){\n openTagCount--;\n if (openTagCount === 0) {\n return {\n tagContent: xmlData.substring(startIndex, i),\n i : closeIndex\n }\n }\n }\n i=closeIndex;\n } else if(xmlData[i+1] === '?') { \n const closeIndex = findClosingIndex(xmlData, \"?>\", i+1, \"StopNode is not closed.\")\n i=closeIndex;\n } else if(xmlData.substr(i + 1, 3) === '!--') { \n const closeIndex = findClosingIndex(xmlData, \"-->\", i+3, \"StopNode is not closed.\")\n i=closeIndex;\n } else if(xmlData.substr(i + 1, 2) === '![') { \n const closeIndex = findClosingIndex(xmlData, \"]]>\", i, \"StopNode is not closed.\") - 2;\n i=closeIndex;\n } else {\n const tagData = readTagExp(xmlData, i, '>')\n\n if (tagData) {\n const openTagName = tagData && tagData.tagName;\n if (openTagName === tagName && tagData.tagExp[tagData.tagExp.length-1] !== \"/\") {\n openTagCount++;\n }\n i=tagData.closeIndex;\n }\n }\n }\n }//end for loop\n}\n\nfunction parseValue(val, shouldParse, options) {\n if (shouldParse && typeof val === 'string') {\n //console.log(options)\n const newval = val.trim();\n if(newval === 'true' ) return true;\n else if(newval === 'false' ) return false;\n else return toNumber(val, options);\n } else {\n if (isExist(val)) {\n return val;\n } else {\n return '';\n }\n }\n}\n\nfunction fromCodePoint(str, base, prefix){\n const codePoint = Number.parseInt(str, base);\n\n if (codePoint >= 0 && codePoint <= 0x10FFFF) {\n return String.fromCodePoint(codePoint);\n } else {\n return prefix +str + \";\";\n }\n}","import { buildOptions} from './OptionsBuilder.js';\nimport OrderedObjParser from './OrderedObjParser.js';\nimport prettify from './node2json.js';\nimport {validate} from \"../validator.js\";\nimport XmlNode from './xmlNode.js';\n\nexport default class XMLParser{\n \n constructor(options){\n this.externalEntities = {};\n this.options = buildOptions(options);\n \n }\n /**\n * Parse XML dats to JS object \n * @param {string|Uint8Array} xmlData \n * @param {boolean|Object} validationOption \n */\n parse(xmlData,validationOption){\n if(typeof xmlData !== \"string\" && xmlData.toString){\n xmlData = xmlData.toString();\n }else if(typeof xmlData !== \"string\"){\n throw new Error(\"XML data is accepted in String or Bytes[] form.\")\n }\n \n if( validationOption){\n if(validationOption === true) validationOption = {}; //validate with default options\n \n const result = validate(xmlData, validationOption);\n if (result !== true) {\n throw Error( `${result.err.msg}:${result.err.line}:${result.err.col}` )\n }\n }\n const orderedObjParser = new OrderedObjParser(this.options);\n orderedObjParser.addExternalEntities(this.externalEntities);\n const orderedResult = orderedObjParser.parseXml(xmlData);\n if(this.options.preserveOrder || orderedResult === undefined) return orderedResult;\n else return prettify(orderedResult, this.options);\n }\n\n /**\n * Add Entity which is not by default supported by this library\n * @param {string} key \n * @param {string} value \n */\n addEntity(key, value){\n if(value.indexOf(\"&\") !== -1){\n throw new Error(\"Entity value can't have '&'\")\n }else if(key.indexOf(\"&\") !== -1 || key.indexOf(\";\") !== -1){\n throw new Error(\"An entity must be set without '&' and ';'. Eg. use '#xD' for ' '\")\n }else if(value === \"&\"){\n throw new Error(\"An entity with value '&' is not permitted\");\n }else{\n this.externalEntities[key] = value;\n }\n }\n\n /**\n * Returns a Symbol that can be used to access the metadata\n * property on a node.\n * \n * If Symbol is not available in the environment, an ordinary property is used\n * and the name of the property is here returned.\n * \n * The XMLMetaData property is only present when `captureMetaData`\n * is true in the options.\n */\n static getMetaDataSymbol() {\n return XmlNode.getMetaDataSymbol();\n }\n}\n","'use strict';\n\nimport XmlNode from './xmlNode.js';\n\nconst METADATA_SYMBOL = XmlNode.getMetaDataSymbol();\n\n/**\n * \n * @param {array} node \n * @param {any} options \n * @returns \n */\nexport default function prettify(node, options){\n return compress( node, options);\n}\n\n/**\n * \n * @param {array} arr \n * @param {object} options \n * @param {string} jPath \n * @returns object\n */\nfunction compress(arr, options, jPath){\n let text;\n const compressedObj = {};\n for (let i = 0; i < arr.length; i++) {\n const tagObj = arr[i];\n const property = propName(tagObj);\n let newJpath = \"\";\n if(jPath === undefined) newJpath = property;\n else newJpath = jPath + \".\" + property;\n\n if(property === options.textNodeName){\n if(text === undefined) text = tagObj[property];\n else text += \"\" + tagObj[property];\n }else if(property === undefined){\n continue;\n }else if(tagObj[property]){\n \n let val = compress(tagObj[property], options, newJpath);\n const isLeaf = isLeafTag(val, options);\n if (tagObj[METADATA_SYMBOL] !== undefined) {\n val[METADATA_SYMBOL] = tagObj[METADATA_SYMBOL]; // copy over metadata\n }\n\n if(tagObj[\":@\"]){\n assignAttributes( val, tagObj[\":@\"], newJpath, options);\n }else if(Object.keys(val).length === 1 && val[options.textNodeName] !== undefined && !options.alwaysCreateTextNode){\n val = val[options.textNodeName];\n }else if(Object.keys(val).length === 0){\n if(options.alwaysCreateTextNode) val[options.textNodeName] = \"\";\n else val = \"\";\n }\n\n if(compressedObj[property] !== undefined && compressedObj.hasOwnProperty(property)) {\n if(!Array.isArray(compressedObj[property])) {\n compressedObj[property] = [ compressedObj[property] ];\n }\n compressedObj[property].push(val);\n }else{\n //TODO: if a node is not an array, then check if it should be an array\n //also determine if it is a leaf node\n if (options.isArray(property, newJpath, isLeaf )) {\n compressedObj[property] = [val];\n }else{\n compressedObj[property] = val;\n }\n }\n }\n \n }\n // if(text && text.length > 0) compressedObj[options.textNodeName] = text;\n if(typeof text === \"string\"){\n if(text.length > 0) compressedObj[options.textNodeName] = text;\n }else if(text !== undefined) compressedObj[options.textNodeName] = text;\n return compressedObj;\n}\n\nfunction propName(obj){\n const keys = Object.keys(obj);\n for (let i = 0; i < keys.length; i++) {\n const key = keys[i];\n if(key !== \":@\") return key;\n }\n}\n\nfunction assignAttributes(obj, attrMap, jpath, options){\n if (attrMap) {\n const keys = Object.keys(attrMap);\n const len = keys.length; //don't make it inline\n for (let i = 0; i < len; i++) {\n const atrrName = keys[i];\n if (options.isArray(atrrName, jpath + \".\" + atrrName, true, true)) {\n obj[atrrName] = [ attrMap[atrrName] ];\n } else {\n obj[atrrName] = attrMap[atrrName];\n }\n }\n }\n}\n\nfunction isLeafTag(obj, options){\n const { textNodeName } = options;\n const propCount = Object.keys(obj).length;\n \n if (propCount === 0) {\n return true;\n }\n\n if (\n propCount === 1 &&\n (obj[textNodeName] || typeof obj[textNodeName] === \"boolean\" || obj[textNodeName] === 0)\n ) {\n return true;\n }\n\n return false;\n}\n","'use strict';\n\nlet METADATA_SYMBOL;\n\nif (typeof Symbol !== \"function\") {\n METADATA_SYMBOL = \"@@xmlMetadata\";\n} else {\n METADATA_SYMBOL = Symbol(\"XML Node Metadata\");\n}\n\nexport default class XmlNode{\n constructor(tagname) {\n this.tagname = tagname;\n this.child = []; //nested tags, text, cdata, comments in order\n this[\":@\"] = {}; //attributes map\n }\n add(key,val){\n // this.child.push( {name : key, val: val, isCdata: isCdata });\n if(key === \"__proto__\") key = \"#__proto__\";\n this.child.push( {[key]: val });\n }\n addChild(node, startIndex) {\n if(node.tagname === \"__proto__\") node.tagname = \"#__proto__\";\n if(node[\":@\"] && Object.keys(node[\":@\"]).length > 0){\n this.child.push( { [node.tagname]: node.child, [\":@\"]: node[\":@\"] });\n }else{\n this.child.push( { [node.tagname]: node.child });\n }\n // if requested, add the startIndex\n if (startIndex !== undefined) {\n // Note: for now we just overwrite the metadata. If we had more complex metadata,\n // we might need to do an object append here: metadata = { ...metadata, startIndex }\n this.child[this.child.length - 1][METADATA_SYMBOL] = { startIndex };\n }\n }\n /** symbol used for metadata */\n static getMetaDataSymbol() {\n return METADATA_SYMBOL;\n }\n}\n","export function sequence(...methods) {\n if (methods.length === 0) {\n throw new Error(\"Failed creating sequence: No functions provided\");\n }\n return function __executeSequence(...args) {\n let result = args;\n const _this = this;\n while (methods.length > 0) {\n const method = methods.shift();\n result = [method.apply(_this, result)];\n }\n return result[0];\n };\n}\n","import { sequence } from \"./functions.js\";\nconst HOT_PATCHER_TYPE = \"@@HOTPATCHER\";\nconst NOOP = () => { };\nfunction createNewItem(method) {\n return {\n original: method,\n methods: [method],\n final: false\n };\n}\n/**\n * Hot patching manager class\n */\nexport class HotPatcher {\n constructor() {\n this._configuration = {\n registry: {},\n getEmptyAction: \"null\"\n };\n this.__type__ = HOT_PATCHER_TYPE;\n }\n /**\n * Configuration object reference\n * @readonly\n */\n get configuration() {\n return this._configuration;\n }\n /**\n * The action to take when a non-set method is requested\n * Possible values: null/throw\n */\n get getEmptyAction() {\n return this.configuration.getEmptyAction;\n }\n set getEmptyAction(newAction) {\n this.configuration.getEmptyAction = newAction;\n }\n /**\n * Control another hot-patcher instance\n * Force the remote instance to use patched methods from calling instance\n * @param target The target instance to control\n * @param allowTargetOverrides Allow the target to override patched methods on\n * the controller (default is false)\n * @returns Returns self\n * @throws {Error} Throws if the target is invalid\n */\n control(target, allowTargetOverrides = false) {\n if (!target || target.__type__ !== HOT_PATCHER_TYPE) {\n throw new Error(\"Failed taking control of target HotPatcher instance: Invalid type or object\");\n }\n Object.keys(target.configuration.registry).forEach(foreignKey => {\n if (this.configuration.registry.hasOwnProperty(foreignKey)) {\n if (allowTargetOverrides) {\n this.configuration.registry[foreignKey] = Object.assign({}, target.configuration.registry[foreignKey]);\n }\n }\n else {\n this.configuration.registry[foreignKey] = Object.assign({}, target.configuration.registry[foreignKey]);\n }\n });\n target._configuration = this.configuration;\n return this;\n }\n /**\n * Execute a patched method\n * @param key The method key\n * @param args Arguments to pass to the method (optional)\n * @see HotPatcher#get\n * @returns The output of the called method\n */\n execute(key, ...args) {\n const method = this.get(key) || NOOP;\n return method(...args);\n }\n /**\n * Get a method for a key\n * @param key The method key\n * @returns Returns the requested function or null if the function\n * does not exist and the host is configured to return null (and not throw)\n * @throws {Error} Throws if the configuration specifies to throw and the method\n * does not exist\n * @throws {Error} Throws if the `getEmptyAction` value is invalid\n */\n get(key) {\n const item = this.configuration.registry[key];\n if (!item) {\n switch (this.getEmptyAction) {\n case \"null\":\n return null;\n case \"throw\":\n throw new Error(`Failed handling method request: No method provided for override: ${key}`);\n default:\n throw new Error(`Failed handling request which resulted in an empty method: Invalid empty-action specified: ${this.getEmptyAction}`);\n }\n }\n return sequence(...item.methods);\n }\n /**\n * Check if a method has been patched\n * @param key The function key\n * @returns True if already patched\n */\n isPatched(key) {\n return !!this.configuration.registry[key];\n }\n /**\n * Patch a method name\n * @param key The method key to patch\n * @param method The function to set\n * @param opts Patch options\n * @returns Returns self\n */\n patch(key, method, opts = {}) {\n const { chain = false } = opts;\n if (this.configuration.registry[key] && this.configuration.registry[key].final) {\n throw new Error(`Failed patching '${key}': Method marked as being final`);\n }\n if (typeof method !== \"function\") {\n throw new Error(`Failed patching '${key}': Provided method is not a function`);\n }\n if (chain) {\n // Add new method to the chain\n if (!this.configuration.registry[key]) {\n // New key, create item\n this.configuration.registry[key] = createNewItem(method);\n }\n else {\n // Existing, push the method\n this.configuration.registry[key].methods.push(method);\n }\n }\n else {\n // Replace the original\n if (this.isPatched(key)) {\n const { original } = this.configuration.registry[key];\n this.configuration.registry[key] = Object.assign(createNewItem(method), {\n original\n });\n }\n else {\n this.configuration.registry[key] = createNewItem(method);\n }\n }\n return this;\n }\n /**\n * Patch a method inline, execute it and return the value\n * Used for patching contents of functions. This method will not apply a patched\n * function if it has already been patched, allowing for external overrides to\n * function. It also means that the function is cached so that it is not\n * instantiated every time the outer function is invoked.\n * @param key The function key to use\n * @param method The function to patch (once, only if not patched)\n * @param args Arguments to pass to the function\n * @returns The output of the patched function\n * @example\n * function mySpecialFunction(a, b) {\n * return hotPatcher.patchInline(\"func\", (a, b) => {\n * return a + b;\n * }, a, b);\n * }\n */\n patchInline(key, method, ...args) {\n if (!this.isPatched(key)) {\n this.patch(key, method);\n }\n return this.execute(key, ...args);\n }\n /**\n * Patch a method (or methods) in sequential-mode\n * See `patch()` with the option `chain: true`\n * @see patch\n * @param key The key to patch\n * @param methods The methods to patch\n * @returns Returns self\n */\n plugin(key, ...methods) {\n methods.forEach(method => {\n this.patch(key, method, { chain: true });\n });\n return this;\n }\n /**\n * Restore a patched method if it has been overridden\n * @param key The method key\n * @returns Returns self\n */\n restore(key) {\n if (!this.isPatched(key)) {\n throw new Error(`Failed restoring method: No method present for key: ${key}`);\n }\n else if (typeof this.configuration.registry[key].original !== \"function\") {\n throw new Error(`Failed restoring method: Original method not found or of invalid type for key: ${key}`);\n }\n this.configuration.registry[key].methods = [this.configuration.registry[key].original];\n return this;\n }\n /**\n * Set a method as being final\n * This sets a method as having been finally overridden. Attempts at overriding\n * again will fail with an error.\n * @param key The key to make final\n * @returns Returns self\n */\n setFinal(key) {\n if (!this.configuration.registry.hasOwnProperty(key)) {\n throw new Error(`Failed marking '${key}' as final: No method found for key`);\n }\n this.configuration.registry[key].final = true;\n return this;\n }\n}\n","export function assertError(err) {\n if (!isError(err)) {\n throw new Error(\"Parameter was not an error\");\n }\n}\nexport function isError(err) {\n return ((!!err &&\n typeof err === \"object\" &&\n objectToString(err) === \"[object Error]\") ||\n err instanceof Error);\n}\nfunction objectToString(obj) {\n return Object.prototype.toString.call(obj);\n}\n","const NAME = \"Layerr\";\nlet __name = NAME;\nexport function getGlobalName() {\n return __name;\n}\nexport function setGlobalName(name = null) {\n __name = name ?? NAME;\n}\n","import { assertError, isError } from \"./error.js\";\nimport { getGlobalName } from \"./global.js\";\nimport { parseArguments } from \"./tools.js\";\nexport class Layerr extends Error {\n constructor(errorOptionsOrMessage, messageText) {\n const args = [...arguments];\n const { options, shortMessage } = parseArguments(args);\n let message = shortMessage;\n if (options.cause) {\n message = `${message}: ${options.cause.message}`;\n }\n super(message);\n this.message = message;\n if (options.name && typeof options.name === \"string\") {\n this.name = options.name;\n }\n else {\n this.name = getGlobalName();\n }\n if (options.cause) {\n Object.defineProperty(this, \"_cause\", { value: options.cause });\n }\n Object.defineProperty(this, \"_info\", { value: {} });\n if (options.info && typeof options.info === \"object\") {\n Object.assign(this._info, options.info);\n }\n if (Error.captureStackTrace) {\n const ctor = options.constructorOpt || this.constructor;\n Error.captureStackTrace(this, ctor);\n }\n }\n static cause(err) {\n assertError(err);\n if (!err._cause)\n return null;\n return isError(err._cause)\n ? err._cause\n : null;\n }\n static fullStack(err) {\n assertError(err);\n const cause = Layerr.cause(err);\n if (cause) {\n return `${err.stack}\\ncaused by: ${Layerr.fullStack(cause)}`;\n }\n return err.stack ?? \"\";\n }\n static info(err) {\n assertError(err);\n const output = {};\n const cause = Layerr.cause(err);\n if (cause) {\n Object.assign(output, Layerr.info(cause));\n }\n if (err._info) {\n Object.assign(output, err._info);\n }\n return output;\n }\n toString() {\n let output = this.name ||\n this.constructor.name ||\n this.constructor.prototype.name;\n if (this.message) {\n output = `${output}: ${this.message}`;\n }\n return output;\n }\n}\n","import { isError } from \"./error.js\";\nexport function parseArguments(args) {\n let options, shortMessage = \"\";\n if (args.length === 0) {\n options = {};\n }\n else if (isError(args[0])) {\n options = {\n cause: args[0],\n };\n shortMessage = args.slice(1).join(\" \") || \"\";\n }\n else if (args[0] && typeof args[0] === \"object\") {\n options = Object.assign({}, args[0]);\n shortMessage = args.slice(1).join(\" \") || \"\";\n }\n else if (typeof args[0] === \"string\") {\n options = {};\n shortMessage = shortMessage = args.join(\" \") || \"\";\n }\n else {\n throw new Error(\"Invalid arguments passed to Layerr\");\n }\n return {\n options,\n shortMessage,\n };\n}\n","const hexRegex = /^[-+]?0x[a-fA-F0-9]+$/;\nconst numRegex = /^([\\-\\+])?(0*)([0-9]*(\\.[0-9]*)?)$/;\n// const octRegex = /^0x[a-z0-9]+/;\n// const binRegex = /0x[a-z0-9]+/;\n\n \nconst consider = {\n hex : true,\n // oct: false,\n leadingZeros: true,\n decimalPoint: \"\\.\",\n eNotation: true,\n //skipLike: /regex/\n};\n\nexport default function toNumber(str, options = {}){\n options = Object.assign({}, consider, options );\n if(!str || typeof str !== \"string\" ) return str;\n \n let trimmedStr = str.trim();\n \n if(options.skipLike !== undefined && options.skipLike.test(trimmedStr)) return str;\n else if(str===\"0\") return 0;\n else if (options.hex && hexRegex.test(trimmedStr)) {\n return parse_int(trimmedStr, 16);\n // }else if (options.oct && octRegex.test(str)) {\n // return Number.parseInt(val, 8);\n }else if (trimmedStr.includes('e') || trimmedStr.includes('E')) { //eNotation\n return resolveEnotation(str,trimmedStr,options);\n // }else if (options.parseBin && binRegex.test(str)) {\n // return Number.parseInt(val, 2);\n }else{\n //separate negative sign, leading zeros, and rest number\n const match = numRegex.exec(trimmedStr);\n // +00.123 => [ , '+', '00', '.123', ..\n if(match){\n const sign = match[1] || \"\";\n const leadingZeros = match[2];\n let numTrimmedByZeros = trimZeros(match[3]); //complete num without leading zeros\n const decimalAdjacentToLeadingZeros = sign ? // 0., -00., 000.\n str[leadingZeros.length+1] === \".\" \n : str[leadingZeros.length] === \".\";\n\n //trim ending zeros for floating number\n if(!options.leadingZeros //leading zeros are not allowed\n && (leadingZeros.length > 1 \n || (leadingZeros.length === 1 && !decimalAdjacentToLeadingZeros))){\n // 00, 00.3, +03.24, 03, 03.24\n return str;\n }\n else{//no leading zeros or leading zeros are allowed\n const num = Number(trimmedStr);\n const parsedStr = String(num);\n\n if( num === 0) return num;\n if(parsedStr.search(/[eE]/) !== -1){ //given number is long and parsed to eNotation\n if(options.eNotation) return num;\n else return str;\n }else if(trimmedStr.indexOf(\".\") !== -1){ //floating number\n if(parsedStr === \"0\") return num; //0.0\n else if(parsedStr === numTrimmedByZeros) return num; //0.456. 0.79000\n else if( parsedStr === `${sign}${numTrimmedByZeros}`) return num;\n else return str;\n }\n \n let n = leadingZeros? numTrimmedByZeros : trimmedStr;\n if(leadingZeros){\n // -009 => -9\n return (n === parsedStr) || (sign+n === parsedStr) ? num : str\n }else {\n // +9\n return (n === parsedStr) || (n === sign+parsedStr) ? num : str\n }\n }\n }else{ //non-numeric string\n return str;\n }\n }\n}\n\nconst eNotationRegx = /^([-+])?(0*)(\\d*(\\.\\d*)?[eE][-\\+]?\\d+)$/;\nfunction resolveEnotation(str,trimmedStr,options){\n if(!options.eNotation) return str;\n const notation = trimmedStr.match(eNotationRegx); \n if(notation){\n let sign = notation[1] || \"\";\n const eChar = notation[3].indexOf(\"e\") === -1 ? \"E\" : \"e\";\n const leadingZeros = notation[2];\n const eAdjacentToLeadingZeros = sign ? // 0E.\n str[leadingZeros.length+1] === eChar \n : str[leadingZeros.length] === eChar;\n\n if(leadingZeros.length > 1 && eAdjacentToLeadingZeros) return str;\n else if(leadingZeros.length === 1 \n && (notation[3].startsWith(`.${eChar}`) || notation[3][0] === eChar)){\n return Number(trimmedStr);\n }else if(options.leadingZeros && !eAdjacentToLeadingZeros){ //accept with leading zeros\n //remove leading 0s\n trimmedStr = (notation[1] || \"\") + notation[3];\n return Number(trimmedStr);\n }else return str;\n }else{\n return str;\n }\n}\n\n/**\n * \n * @param {string} numStr without leading zeros\n * @returns \n */\nfunction trimZeros(numStr){\n if(numStr && numStr.indexOf(\".\") !== -1){//float\n numStr = numStr.replace(/0+$/, \"\"); //remove ending zeros\n if(numStr === \".\") numStr = \"0\";\n else if(numStr[0] === \".\") numStr = \"0\"+numStr;\n else if(numStr[numStr.length-1] === \".\") numStr = numStr.substring(0,numStr.length-1);\n return numStr;\n }\n return numStr;\n}\n\nfunction parse_int(numStr, base){\n //polyfill\n if(parseInt) return parseInt(numStr, base);\n else if(Number.parseInt) return Number.parseInt(numStr, base);\n else if(window && window.parseInt) return window.parseInt(numStr, base);\n else throw new Error(\"parseInt, Number.parseInt, window.parseInt are not supported\")\n}","function normalize (strArray) {\n var resultArray = [];\n if (strArray.length === 0) { return ''; }\n\n if (typeof strArray[0] !== 'string') {\n throw new TypeError('Url must be a string. Received ' + strArray[0]);\n }\n\n // If the first part is a plain protocol, we combine it with the next part.\n if (strArray[0].match(/^[^/:]+:\\/*$/) && strArray.length > 1) {\n var first = strArray.shift();\n strArray[0] = first + strArray[0];\n }\n\n // There must be two or three slashes in the file protocol, two slashes in anything else.\n if (strArray[0].match(/^file:\\/\\/\\//)) {\n strArray[0] = strArray[0].replace(/^([^/:]+):\\/*/, '$1:///');\n } else {\n strArray[0] = strArray[0].replace(/^([^/:]+):\\/*/, '$1://');\n }\n\n for (var i = 0; i < strArray.length; i++) {\n var component = strArray[i];\n\n if (typeof component !== 'string') {\n throw new TypeError('Url must be a string. Received ' + component);\n }\n\n if (component === '') { continue; }\n\n if (i > 0) {\n // Removing the starting slashes for each component but the first.\n component = component.replace(/^[\\/]+/, '');\n }\n if (i < strArray.length - 1) {\n // Removing the ending slashes for each component but the last.\n component = component.replace(/[\\/]+$/, '');\n } else {\n // For the last component we will combine multiple slashes to a single one.\n component = component.replace(/[\\/]+$/, '/');\n }\n\n resultArray.push(component);\n\n }\n\n var str = resultArray.join('/');\n // Each input component is now separated by a single slash except the possible first plain protocol part.\n\n // remove trailing slash before parameters or hash\n str = str.replace(/\\/(\\?|&|#[^!])/g, '$1');\n\n // replace ? in parameters with &\n var parts = str.split('?');\n str = parts.shift() + (parts.length > 0 ? '?': '') + parts.join('&');\n\n return str;\n}\n\nexport default function urlJoin() {\n var input;\n\n if (typeof arguments[0] === 'object') {\n input = arguments[0];\n } else {\n input = [].slice.call(arguments);\n }\n\n return normalize(input);\n}\n","import { toBase64 } from \"../tools/encode.js\";\nexport function generateBasicAuthHeader(username, password) {\n const encoded = toBase64(`${username}:${password}`);\n return `Basic ${encoded}`;\n}\n","import md5 from \"md5\";\nimport { ha1Compute } from \"../tools/crypto.js\";\nconst NONCE_CHARS = \"abcdef0123456789\";\nconst NONCE_SIZE = 32;\nexport function createDigestContext(username, password, ha1) {\n return { username, password, ha1, nc: 0, algorithm: \"md5\", hasDigestAuth: false };\n}\nexport function generateDigestAuthHeader(options, digest) {\n const url = options.url.replace(\"//\", \"\");\n const uri = url.indexOf(\"/\") == -1 ? \"/\" : url.slice(url.indexOf(\"/\"));\n const method = options.method ? options.method.toUpperCase() : \"GET\";\n const qop = /(^|,)\\s*auth\\s*($|,)/.test(digest.qop) ? \"auth\" : false;\n const ncString = `00000000${digest.nc}`.slice(-8);\n const ha1 = ha1Compute(digest.algorithm, digest.username, digest.realm, digest.password, digest.nonce, digest.cnonce, digest.ha1);\n const ha2 = md5(`${method}:${uri}`);\n const digestResponse = qop\n ? md5(`${ha1}:${digest.nonce}:${ncString}:${digest.cnonce}:${qop}:${ha2}`)\n : md5(`${ha1}:${digest.nonce}:${ha2}`);\n const authValues = {\n username: digest.username,\n realm: digest.realm,\n nonce: digest.nonce,\n uri,\n qop,\n response: digestResponse,\n nc: ncString,\n cnonce: digest.cnonce,\n algorithm: digest.algorithm,\n opaque: digest.opaque\n };\n const authHeader = [];\n for (const k in authValues) {\n if (authValues[k]) {\n if (k === \"qop\" || k === \"nc\" || k === \"algorithm\") {\n authHeader.push(`${k}=${authValues[k]}`);\n }\n else {\n authHeader.push(`${k}=\"${authValues[k]}\"`);\n }\n }\n }\n return `Digest ${authHeader.join(\", \")}`;\n}\nfunction makeNonce() {\n let uid = \"\";\n for (let i = 0; i < NONCE_SIZE; ++i) {\n uid = `${uid}${NONCE_CHARS[Math.floor(Math.random() * NONCE_CHARS.length)]}`;\n }\n return uid;\n}\nexport function parseDigestAuth(response, _digest) {\n const isDigest = responseIndicatesDigestAuth(response);\n if (!isDigest) {\n return false;\n }\n const re = /([a-z0-9_-]+)=(?:\"([^\"]+)\"|([a-z0-9_-]+))/gi;\n for (;;) {\n const authHeader = (response.headers && response.headers.get(\"www-authenticate\")) || \"\";\n const match = re.exec(authHeader);\n if (!match) {\n break;\n }\n _digest[match[1]] = match[2] || match[3];\n }\n _digest.nc += 1;\n _digest.cnonce = makeNonce();\n return true;\n}\nexport function responseIndicatesDigestAuth(response) {\n const authHeader = (response.headers && response.headers.get(\"www-authenticate\")) || \"\";\n return authHeader.split(/\\s/)[0].toLowerCase() === \"digest\";\n}\n","import { Layerr } from \"layerr\";\nimport { createDigestContext } from \"./digest.js\";\nimport { generateBasicAuthHeader } from \"./basic.js\";\nimport { generateTokenAuthHeader } from \"./oauth.js\";\nimport { AuthType, ErrorCode } from \"../types.js\";\nexport function setupAuth(context, username, password, oauthToken, ha1) {\n switch (context.authType) {\n case AuthType.Auto:\n if (username && password) {\n context.headers.Authorization = generateBasicAuthHeader(username, password);\n }\n break;\n case AuthType.Digest:\n context.digest = createDigestContext(username, password, ha1);\n break;\n case AuthType.None:\n // Do nothing\n break;\n case AuthType.Password:\n context.headers.Authorization = generateBasicAuthHeader(username, password);\n break;\n case AuthType.Token:\n context.headers.Authorization = generateTokenAuthHeader(oauthToken);\n break;\n default:\n throw new Layerr({\n info: {\n code: ErrorCode.InvalidAuthType\n }\n }, `Invalid auth type: ${context.authType}`);\n }\n}\n","export function generateTokenAuthHeader(token) {\n return `${token.token_type} ${token.access_token}`;\n}\n","const hasArrayBuffer = typeof ArrayBuffer === \"function\";\nconst { toString: objToString } = Object.prototype;\n// Taken from: https://github.com/fengyuanchen/is-array-buffer/blob/master/src/index.js\nexport function isArrayBuffer(value) {\n return (hasArrayBuffer &&\n (value instanceof ArrayBuffer || objToString.call(value) === \"[object ArrayBuffer]\"));\n}\n","export function isBuffer(value) {\n return (value != null &&\n value.constructor != null &&\n typeof value.constructor.isBuffer === \"function\" &&\n value.constructor.isBuffer(value));\n}\n","export function isReactNative() {\n return typeof TARGET === \"string\" && TARGET === \"react-native\";\n}\nexport function isWeb() {\n return typeof TARGET === \"string\" && TARGET === \"web\";\n}\n","import { HotPatcher } from \"hot-patcher\";\nlet __patcher = null;\nexport function getPatcher() {\n if (!__patcher) {\n __patcher = new HotPatcher();\n }\n return __patcher;\n}\n","import { extractURLPath } from \"./tools/url.js\";\nimport { setupAuth } from \"./auth/index.js\";\nimport { copyFile } from \"./operations/copyFile.js\";\nimport { createDirectory } from \"./operations/createDirectory.js\";\nimport { createReadStream, createWriteStream } from \"./operations/createStream.js\";\nimport { customRequest } from \"./operations/customRequest.js\";\nimport { deleteFile } from \"./operations/deleteFile.js\";\nimport { exists } from \"./operations/exists.js\";\nimport { getDirectoryContents } from \"./operations/directoryContents.js\";\nimport { getFileContents, getFileDownloadLink } from \"./operations/getFileContents.js\";\nimport { lock, unlock } from \"./operations/lock.js\";\nimport { getQuota } from \"./operations/getQuota.js\";\nimport { getStat } from \"./operations/stat.js\";\nimport { getSearch } from \"./operations/search.js\";\nimport { moveFile } from \"./operations/moveFile.js\";\nimport { getFileUploadLink, putFileContents } from \"./operations/putFileContents.js\";\nimport { partialUpdateFileContents } from \"./operations/partialUpdateFileContents.js\";\nimport { getDAVCompliance } from \"./operations/getDAVCompliance.js\";\nimport { displaynameTagParser } from \"./tools/dav.js\";\nimport { AuthType } from \"./types.js\";\nconst DEFAULT_CONTACT_HREF = \"https://github.com/perry-mitchell/webdav-client/blob/master/LOCK_CONTACT.md\";\nexport function createClient(remoteURL, options = {}) {\n const { authType: authTypeRaw = null, remoteBasePath, contactHref = DEFAULT_CONTACT_HREF, ha1, headers = {}, httpAgent, httpsAgent, password, token, username, withCredentials } = options;\n let authType = authTypeRaw;\n if (!authType) {\n authType = username || password ? AuthType.Password : AuthType.None;\n }\n const context = {\n authType,\n remoteBasePath,\n contactHref,\n ha1,\n headers: Object.assign({}, headers),\n httpAgent,\n httpsAgent,\n password,\n parsing: {\n attributeNamePrefix: options.attributeNamePrefix ?? \"@\",\n attributeParsers: [],\n tagParsers: [displaynameTagParser]\n },\n remotePath: extractURLPath(remoteURL),\n remoteURL,\n token,\n username,\n withCredentials\n };\n setupAuth(context, username, password, token, ha1);\n return {\n copyFile: (filename, destination, options) => copyFile(context, filename, destination, options),\n createDirectory: (path, options) => createDirectory(context, path, options),\n createReadStream: (filename, options) => createReadStream(context, filename, options),\n createWriteStream: (filename, options, callback) => createWriteStream(context, filename, options, callback),\n customRequest: (path, requestOptions) => customRequest(context, path, requestOptions),\n deleteFile: (filename, options) => deleteFile(context, filename, options),\n exists: (path, options) => exists(context, path, options),\n getDirectoryContents: (path, options\n // @ts-ignore\n ) => getDirectoryContents(context, path, options),\n getFileContents: (filename, options) => getFileContents(context, filename, options),\n getFileDownloadLink: (filename) => getFileDownloadLink(context, filename),\n getFileUploadLink: (filename) => getFileUploadLink(context, filename),\n getHeaders: () => Object.assign({}, context.headers),\n getQuota: (options) => getQuota(context, options),\n lock: (path, options) => lock(context, path, options),\n moveFile: (filename, destinationFilename, options) => moveFile(context, filename, destinationFilename, options),\n putFileContents: (filename, data, options) => putFileContents(context, filename, data, options),\n partialUpdateFileContents: (filePath, start, end, data, options) => partialUpdateFileContents(context, filePath, start, end, data, options),\n getDAVCompliance: (path) => getDAVCompliance(context, path),\n search: (path, options) => getSearch(context, path, options),\n setHeaders: (headers) => {\n context.headers = Object.assign({}, headers);\n },\n stat: (path, options) => getStat(context, path, options),\n unlock: (path, token, options) => unlock(context, path, token, options),\n registerAttributeParser: (parser) => {\n context.parsing.attributeParsers.push(parser);\n },\n registerTagParser: (parser) => {\n context.parsing.tagParsers.push(parser);\n }\n };\n}\n","import { joinURL } from \"../tools/url.js\";\nimport { encodePath } from \"../tools/path.js\";\nimport { request, prepareRequestOptions } from \"../request.js\";\nimport { handleResponseCode } from \"../response.js\";\nexport async function copyFile(context, filename, destination, options = {}) {\n const requestOptions = prepareRequestOptions({\n url: joinURL(context.remoteURL, encodePath(filename)),\n method: \"COPY\",\n headers: {\n Destination: joinURL(context.remoteURL, encodePath(destination)),\n /**\n * From RFC4918 section 10.6: If the overwrite header is not included in a COPY or MOVE request,\n * then the resource MUST treat the request as if it has an overwrite header of value \"T\".\n *\n * Meaning the overwrite header is always set to \"T\" EXCEPT the option is explicitly set to false.\n */\n Overwrite: options.overwrite === false ? \"F\" : \"T\",\n /**\n * From RFC4918 section 9.8.3: A client may submit a Depth header on a COPY on a collection with a value of \"0\"\n * or \"infinity\". The COPY method on a collection without a Depth header MUST act as if\n * a Depth header with value \"infinity\" was included.\n */\n Depth: options.shallow ? \"0\" : \"infinity\"\n }\n }, context, options);\n const response = await request(requestOptions, context);\n handleResponseCode(context, response);\n}\n","import { joinURL } from \"../tools/url.js\";\nimport { encodePath, getAllDirectories, normalisePath } from \"../tools/path.js\";\nimport { request, prepareRequestOptions } from \"../request.js\";\nimport { handleResponseCode } from \"../response.js\";\nimport { getStat } from \"./stat.js\";\nexport async function createDirectory(context, dirPath, options = {}) {\n if (options.recursive === true)\n return createDirectoryRecursively(context, dirPath, options);\n const requestOptions = prepareRequestOptions({\n url: joinURL(context.remoteURL, ensureCollectionPath(encodePath(dirPath))),\n method: \"MKCOL\"\n }, context, options);\n const response = await request(requestOptions, context);\n handleResponseCode(context, response);\n}\n/**\n * Ensure the path is a proper \"collection\" path by ensuring it has a trailing \"/\".\n * The proper format of collection according to the specification does contain the trailing slash.\n * http://www.webdav.org/specs/rfc4918.html#rfc.section.5.2\n * @param path Path of the collection\n * @return string Path of the collection with appended trailing \"/\" in case the `path` does not have it.\n */\nfunction ensureCollectionPath(path) {\n if (!path.endsWith(\"/\")) {\n return path + \"/\";\n }\n return path;\n}\nasync function createDirectoryRecursively(context, dirPath, options = {}) {\n const paths = getAllDirectories(normalisePath(dirPath));\n paths.sort((a, b) => {\n if (a.length > b.length) {\n return 1;\n }\n else if (b.length > a.length) {\n return -1;\n }\n return 0;\n });\n let creating = false;\n for (const testPath of paths) {\n if (creating) {\n await createDirectory(context, testPath, {\n ...options,\n recursive: false\n });\n continue;\n }\n try {\n const testStat = (await getStat(context, testPath));\n if (testStat.type !== \"directory\") {\n throw new Error(`Path includes a file: ${dirPath}`);\n }\n }\n catch (err) {\n const error = err;\n if (error.status === 404) {\n creating = true;\n await createDirectory(context, testPath, {\n ...options,\n recursive: false\n });\n }\n else {\n throw err;\n }\n }\n }\n}\n","import Stream from \"stream\";\nimport { joinURL } from \"../tools/url.js\";\nimport { encodePath } from \"../tools/path.js\";\nimport { request, prepareRequestOptions } from \"../request.js\";\nimport { handleResponseCode } from \"../response.js\";\nconst NOOP = () => { };\nexport function createReadStream(context, filePath, options = {}) {\n const PassThroughStream = Stream.PassThrough;\n const outStream = new PassThroughStream();\n getFileStream(context, filePath, options)\n .then(stream => {\n stream.pipe(outStream);\n })\n .catch(err => {\n outStream.emit(\"error\", err);\n });\n return outStream;\n}\nexport function createWriteStream(context, filePath, options = {}, callback = NOOP) {\n const PassThroughStream = Stream.PassThrough;\n const writeStream = new PassThroughStream();\n const headers = {};\n if (options.overwrite === false) {\n headers[\"If-None-Match\"] = \"*\";\n }\n const requestOptions = prepareRequestOptions({\n url: joinURL(context.remoteURL, encodePath(filePath)),\n method: \"PUT\",\n headers,\n data: writeStream,\n maxRedirects: 0\n }, context, options);\n request(requestOptions, context)\n .then(response => handleResponseCode(context, response))\n .then(response => {\n // Fire callback asynchronously to avoid errors\n setTimeout(() => {\n callback(response);\n }, 0);\n })\n .catch(err => {\n writeStream.emit(\"error\", err);\n });\n return writeStream;\n}\nasync function getFileStream(context, filePath, options = {}) {\n const headers = {};\n if (typeof options.range === \"object\" && typeof options.range.start === \"number\") {\n let rangeHeader = `bytes=${options.range.start}-`;\n if (typeof options.range.end === \"number\") {\n rangeHeader = `${rangeHeader}${options.range.end}`;\n }\n headers.Range = rangeHeader;\n }\n const requestOptions = prepareRequestOptions({\n url: joinURL(context.remoteURL, encodePath(filePath)),\n method: \"GET\",\n headers\n }, context, options);\n const response = await request(requestOptions, context);\n handleResponseCode(context, response);\n if (headers.Range && response.status !== 206) {\n const responseError = new Error(`Invalid response code for partial request: ${response.status}`);\n responseError.status = response.status;\n throw responseError;\n }\n if (options.callback) {\n setTimeout(() => {\n options.callback(response);\n }, 0);\n }\n // @ts-ignore\n return response.body;\n}\n","import { joinURL } from \"../tools/url.js\";\nimport { encodePath } from \"../tools/path.js\";\nimport { request, prepareRequestOptions } from \"../request.js\";\nimport { handleResponseCode } from \"../response.js\";\nexport async function customRequest(context, remotePath, requestOptions) {\n if (!requestOptions.url) {\n requestOptions.url = joinURL(context.remoteURL, encodePath(remotePath));\n }\n const finalOptions = prepareRequestOptions(requestOptions, context, {});\n const response = await request(finalOptions, context);\n handleResponseCode(context, response);\n return response;\n}\n","import { joinURL } from \"../tools/url.js\";\nimport { encodePath } from \"../tools/path.js\";\nimport { request, prepareRequestOptions } from \"../request.js\";\nimport { handleResponseCode } from \"../response.js\";\nexport async function deleteFile(context, filename, options = {}) {\n const requestOptions = prepareRequestOptions({\n url: joinURL(context.remoteURL, encodePath(filename)),\n method: \"DELETE\"\n }, context, options);\n const response = await request(requestOptions, context);\n handleResponseCode(context, response);\n}\n","import pathPosix from \"path-posix\";\nimport { joinURL, normaliseHREF } from \"../tools/url.js\";\nimport { encodePath, makePathAbsolute, normalisePath } from \"../tools/path.js\";\nimport { parseXML, prepareFileFromProps } from \"../tools/dav.js\";\nimport { request, prepareRequestOptions } from \"../request.js\";\nimport { handleResponseCode, processGlobFilter, processResponsePayload } from \"../response.js\";\nexport async function getDirectoryContents(context, remotePath, options = {}) {\n const requestOptions = prepareRequestOptions({\n url: joinURL(context.remoteURL, encodePath(remotePath), \"/\"),\n method: \"PROPFIND\",\n headers: {\n Accept: \"text/plain,application/xml\",\n Depth: options.deep ? \"infinity\" : \"1\"\n }\n }, context, options);\n const response = await request(requestOptions, context);\n handleResponseCode(context, response);\n const responseData = await response.text();\n if (!responseData) {\n throw new Error(\"Failed parsing directory contents: Empty response\");\n }\n const davResp = await parseXML(responseData, context.parsing);\n const _remotePath = makePathAbsolute(remotePath);\n const remoteBasePath = makePathAbsolute(context.remoteBasePath || context.remotePath);\n let files = getDirectoryFiles(davResp, remoteBasePath, _remotePath, options.details, options.includeSelf);\n if (options.glob) {\n files = processGlobFilter(files, options.glob);\n }\n return processResponsePayload(response, files, options.details);\n}\nfunction getDirectoryFiles(result, serverremoteBasePath, requestPath, isDetailed = false, includeSelf = false) {\n const serverBase = pathPosix.join(serverremoteBasePath, \"/\");\n // Extract the response items (directory contents)\n const { multistatus: { response: responseItems } } = result;\n // Map all items to a consistent output structure (results)\n const nodes = responseItems.map(item => {\n // HREF is the file path (in full) - The href is already XML entities decoded (e.g. foo&bar is reverted to foo&bar)\n const href = normaliseHREF(item.href);\n // Each item should contain a stat object\n const { propstat: { prop: props } } = item;\n // Process the true full filename (minus the base server path)\n const filename = serverBase === \"/\"\n ? decodeURIComponent(normalisePath(href))\n : normalisePath(pathPosix.relative(decodeURIComponent(serverBase), decodeURIComponent(href)));\n return prepareFileFromProps(props, filename, isDetailed);\n });\n // If specified, also return the current directory\n if (includeSelf) {\n return nodes;\n }\n // Else, filter out the item pointing to the current directory (not needed)\n return nodes.filter(item => item.basename &&\n (item.type === \"file\" || item.filename !== requestPath.replace(/\\/$/, \"\")));\n}\n","import { getStat } from \"./stat.js\";\nexport async function exists(context, remotePath, options = {}) {\n try {\n await getStat(context, remotePath, options);\n return true;\n }\n catch (err) {\n if (err.status === 404) {\n return false;\n }\n throw err;\n }\n}\n","import { joinURL } from \"../tools/url.js\";\nimport { encodePath } from \"../tools/path.js\";\nimport { request, prepareRequestOptions } from \"../request.js\";\nimport { handleResponseCode } from \"../response.js\";\nexport async function getDAVCompliance(context, filePath, options = {}) {\n const requestOptions = prepareRequestOptions({\n url: joinURL(context.remoteURL, encodePath(filePath)),\n method: \"OPTIONS\"\n }, context, options);\n const response = await request(requestOptions, context);\n try {\n handleResponseCode(context, response);\n }\n catch (err) {\n const error = err;\n throw error;\n }\n const davHeader = response.headers.get(\"DAV\") ?? \"\";\n const compliance = davHeader.split(\",\").map(item => item.trim());\n const server = response.headers.get(\"Server\") ?? \"\";\n return {\n compliance,\n server\n };\n}\n","import { Layerr } from \"layerr\";\nimport { joinURL } from \"../tools/url.js\";\nimport { encodePath } from \"../tools/path.js\";\nimport { fromBase64 } from \"../tools/encode.js\";\nimport { isReactNative, isWeb } from \"../compat/env.js\";\nimport { request, prepareRequestOptions } from \"../request.js\";\nimport { handleResponseCode, processResponsePayload } from \"../response.js\";\nimport { AuthType, ErrorCode } from \"../types.js\";\nconst TRANSFORM_RETAIN_FORMAT = (v) => v;\nexport async function getFileContents(context, filePath, options = {}) {\n const { format = \"binary\" } = options;\n if (format !== \"binary\" && format !== \"text\") {\n throw new Layerr({\n info: {\n code: ErrorCode.InvalidOutputFormat\n }\n }, `Invalid output format: ${format}`);\n }\n return format === \"text\"\n ? getFileContentsString(context, filePath, options)\n : getFileContentsBuffer(context, filePath, options);\n}\nasync function getFileContentsBuffer(context, filePath, options = {}) {\n const requestOptions = prepareRequestOptions({\n url: joinURL(context.remoteURL, encodePath(filePath)),\n method: \"GET\"\n }, context, options);\n const response = await request(requestOptions, context);\n handleResponseCode(context, response);\n let body;\n if (isWeb() || isReactNative()) {\n body = await response.arrayBuffer();\n }\n else {\n body = Buffer.from(await response.arrayBuffer());\n }\n return processResponsePayload(response, body, options.details);\n}\nasync function getFileContentsString(context, filePath, options = {}) {\n const requestOptions = prepareRequestOptions({\n url: joinURL(context.remoteURL, encodePath(filePath)),\n method: \"GET\",\n headers: {\n Accept: \"text/plain\"\n },\n transformResponse: [TRANSFORM_RETAIN_FORMAT]\n }, context, options);\n const response = await request(requestOptions, context);\n handleResponseCode(context, response);\n const body = await response.text();\n return processResponsePayload(response, body, options.details);\n}\nexport function getFileDownloadLink(context, filePath) {\n let url = joinURL(context.remoteURL, encodePath(filePath));\n const protocol = /^https:/i.test(url) ? \"https\" : \"http\";\n switch (context.authType) {\n case AuthType.None:\n // Do nothing\n break;\n case AuthType.Password: {\n const authPart = context.headers.Authorization.replace(/^Basic /i, \"\").trim();\n const authContents = fromBase64(authPart);\n url = url.replace(/^https?:\\/\\//, `${protocol}://${authContents}@`);\n break;\n }\n default:\n throw new Layerr({\n info: {\n code: ErrorCode.LinkUnsupportedAuthType\n }\n }, `Unsupported auth type for file link: ${context.authType}`);\n }\n return url;\n}\n","import { prepareRequestOptions, request } from \"../request.js\";\nimport { handleResponseCode, processResponsePayload } from \"../response.js\";\nimport { parseXML } from \"../tools/dav.js\";\nimport { joinURL } from \"../tools/url.js\";\nimport { parseQuota } from \"../tools/quota.js\";\nexport async function getQuota(context, options = {}) {\n const path = options.path || \"/\";\n const requestOptions = prepareRequestOptions({\n url: joinURL(context.remoteURL, path),\n method: \"PROPFIND\",\n headers: {\n Accept: \"text/plain,application/xml\",\n Depth: \"0\"\n }\n }, context, options);\n const response = await request(requestOptions, context);\n handleResponseCode(context, response);\n const responseData = await response.text();\n const result = await parseXML(responseData, context.parsing);\n const quota = parseQuota(result);\n return processResponsePayload(response, quota, options.details);\n}\n","import nestedProp from \"nested-property\";\nimport { joinURL } from \"../tools/url.js\";\nimport { encodePath } from \"../tools/path.js\";\nimport { generateLockXML, parseGenericResponse } from \"../tools/xml.js\";\nimport { request, prepareRequestOptions } from \"../request.js\";\nimport { createErrorFromResponse, handleResponseCode } from \"../response.js\";\nconst DEFAULT_TIMEOUT = \"Infinite, Second-4100000000\";\nexport async function lock(context, path, options = {}) {\n const { refreshToken, timeout = DEFAULT_TIMEOUT } = options;\n const headers = {\n Accept: \"text/plain,application/xml\",\n Timeout: timeout\n };\n if (refreshToken) {\n headers.If = refreshToken;\n }\n const requestOptions = prepareRequestOptions({\n url: joinURL(context.remoteURL, encodePath(path)),\n method: \"LOCK\",\n headers,\n data: generateLockXML(context.contactHref)\n }, context, options);\n const response = await request(requestOptions, context);\n handleResponseCode(context, response);\n const responseData = await response.text();\n const lockPayload = parseGenericResponse(responseData);\n const token = nestedProp.get(lockPayload, \"prop.lockdiscovery.activelock.locktoken.href\");\n const serverTimeout = nestedProp.get(lockPayload, \"prop.lockdiscovery.activelock.timeout\");\n if (!token) {\n const err = createErrorFromResponse(response, \"No lock token received: \");\n throw err;\n }\n return {\n token,\n serverTimeout\n };\n}\nexport async function unlock(context, path, token, options = {}) {\n const requestOptions = prepareRequestOptions({\n url: joinURL(context.remoteURL, encodePath(path)),\n method: \"UNLOCK\",\n headers: {\n \"Lock-Token\": token\n }\n }, context, options);\n const response = await request(requestOptions, context);\n handleResponseCode(context, response);\n if (response.status !== 204 && response.status !== 200) {\n const err = createErrorFromResponse(response);\n throw err;\n }\n}\n","import { joinURL } from \"../tools/url.js\";\nimport { encodePath } from \"../tools/path.js\";\nimport { request, prepareRequestOptions } from \"../request.js\";\nimport { handleResponseCode } from \"../response.js\";\nexport async function moveFile(context, filename, destination, options = {}) {\n const requestOptions = prepareRequestOptions({\n url: joinURL(context.remoteURL, encodePath(filename)),\n method: \"MOVE\",\n headers: {\n Destination: joinURL(context.remoteURL, encodePath(destination)),\n /**\n * From RFC4918 section 10.6: If the overwrite header is not included in a COPY or MOVE request,\n * then the resource MUST treat the request as if it has an overwrite header of value \"T\".\n *\n * Meaning the overwrite header is always set to \"T\" EXCEPT the option is explicitly set to false.\n */\n Overwrite: options.overwrite === false ? \"F\" : \"T\"\n }\n }, context, options);\n const response = await request(requestOptions, context);\n handleResponseCode(context, response);\n}\n","import { Layerr } from \"layerr\";\nimport { joinURL } from \"../tools/url.js\";\nimport { encodePath } from \"../tools/path.js\";\nimport { request, prepareRequestOptions } from \"../request.js\";\nimport { handleResponseCode } from \"../response.js\";\nimport { getDAVCompliance } from \"./getDAVCompliance.js\";\nimport { ErrorCode } from \"../types.js\";\nexport async function partialUpdateFileContents(context, filePath, start, end, data, options = {}) {\n const compliance = await getDAVCompliance(context, filePath, options);\n if (compliance.compliance.includes(\"sabredav-partialupdate\")) {\n return await partialUpdateFileContentsSabredav(context, filePath, start, end, data, options);\n }\n if (compliance.server.includes(\"Apache\") &&\n compliance.compliance.includes(\"\")) {\n return await partialUpdateFileContentsApache(context, filePath, start, end, data, options);\n }\n throw new Layerr({\n info: {\n code: ErrorCode.NotSupported\n }\n }, \"Not supported\");\n}\nasync function partialUpdateFileContentsSabredav(context, filePath, start, end, data, options = {}) {\n if (start > end || start < 0) {\n // Actually, SabreDAV support negative start value,\n // Do not support here for compatibility with Apache-style way\n throw new Layerr({\n info: {\n code: ErrorCode.InvalidUpdateRange\n }\n }, `Invalid update range ${start} for partial update`);\n }\n const headers = {\n \"Content-Type\": \"application/x-sabredav-partialupdate\",\n \"Content-Length\": `${end - start + 1}`,\n \"X-Update-Range\": `bytes=${start}-${end}`\n };\n const requestOptions = prepareRequestOptions({\n url: joinURL(context.remoteURL, encodePath(filePath)),\n method: \"PATCH\",\n headers,\n data\n }, context, options);\n const response = await request(requestOptions, context);\n handleResponseCode(context, response);\n}\nasync function partialUpdateFileContentsApache(context, filePath, start, end, data, options = {}) {\n if (start > end || start < 0) {\n throw new Layerr({\n info: {\n code: ErrorCode.InvalidUpdateRange\n }\n }, `Invalid update range ${start} for partial update`);\n }\n const headers = {\n \"Content-Type\": \"application/octet-stream\",\n \"Content-Length\": `${end - start + 1}`,\n \"Content-Range\": `bytes ${start}-${end}/*`\n };\n const requestOptions = prepareRequestOptions({\n url: joinURL(context.remoteURL, encodePath(filePath)),\n method: \"PUT\",\n headers,\n data\n }, context, options);\n const response = await request(requestOptions, context);\n handleResponseCode(context, response);\n}\n","import { Layerr } from \"layerr\";\nimport Stream from \"stream\";\nimport { fromBase64 } from \"../tools/encode.js\";\nimport { joinURL } from \"../tools/url.js\";\nimport { encodePath } from \"../tools/path.js\";\nimport { calculateDataLength } from \"../tools/size.js\";\nimport { isReactNative, isWeb } from \"../compat/env.js\";\nimport { request, prepareRequestOptions } from \"../request.js\";\nimport { handleResponseCode } from \"../response.js\";\nimport { AuthType, ErrorCode } from \"../types.js\";\nexport async function putFileContents(context, filePath, data, options = {}) {\n const { contentLength = true, overwrite = true } = options;\n const headers = {\n \"Content-Type\": \"application/octet-stream\"\n };\n if (!isWeb() &&\n !isReactNative() &&\n typeof Stream !== \"undefined\" &&\n typeof Stream?.Readable !== \"undefined\" &&\n data instanceof Stream.Readable) {\n // Skip, no content-length\n }\n else if (contentLength === false) {\n // Skip, disabled\n }\n else if (typeof contentLength === \"number\") {\n headers[\"Content-Length\"] = `${contentLength}`;\n }\n else {\n headers[\"Content-Length\"] = `${calculateDataLength(data)}`;\n }\n if (!overwrite) {\n headers[\"If-None-Match\"] = \"*\";\n }\n const requestOptions = prepareRequestOptions({\n url: joinURL(context.remoteURL, encodePath(filePath)),\n method: \"PUT\",\n headers,\n data\n }, context, options);\n const response = await request(requestOptions, context);\n try {\n handleResponseCode(context, response);\n }\n catch (err) {\n const error = err;\n if (error.status === 412 && !overwrite) {\n return false;\n }\n else {\n throw error;\n }\n }\n return true;\n}\nexport function getFileUploadLink(context, filePath) {\n let url = `${joinURL(context.remoteURL, encodePath(filePath))}?Content-Type=application/octet-stream`;\n const protocol = /^https:/i.test(url) ? \"https\" : \"http\";\n switch (context.authType) {\n case AuthType.None:\n // Do nothing\n break;\n case AuthType.Password: {\n const authPart = context.headers.Authorization.replace(/^Basic /i, \"\").trim();\n const authContents = fromBase64(authPart);\n url = url.replace(/^https?:\\/\\//, `${protocol}://${authContents}@`);\n break;\n }\n default:\n throw new Layerr({\n info: {\n code: ErrorCode.LinkUnsupportedAuthType\n }\n }, `Unsupported auth type for file link: ${context.authType}`);\n }\n return url;\n}\n","import { parseSearch, parseXML } from \"../tools/dav.js\";\nimport { joinURL } from \"../tools/url.js\";\nimport { encodePath } from \"../tools/path.js\";\nimport { request, prepareRequestOptions } from \"../request.js\";\nimport { handleResponseCode, processResponsePayload } from \"../response.js\";\nexport async function getSearch(context, searchArbiter, options = {}) {\n const { details: isDetailed = false } = options;\n const requestOptions = prepareRequestOptions({\n url: joinURL(context.remoteURL, encodePath(searchArbiter)),\n method: \"SEARCH\",\n headers: {\n Accept: \"text/plain,application/xml\",\n // Ensure a Content-Type header is set was this is required by e.g. sabre/dav\n \"Content-Type\": context.headers[\"Content-Type\"] || \"application/xml; charset=utf-8\"\n }\n }, context, options);\n const response = await request(requestOptions, context);\n handleResponseCode(context, response);\n const responseText = await response.text();\n const responseData = await parseXML(responseText, context.parsing);\n const results = parseSearch(responseData, searchArbiter, isDetailed);\n return processResponsePayload(response, results, isDetailed);\n}\n","import { parseStat, parseXML } from \"../tools/dav.js\";\nimport { joinURL } from \"../tools/url.js\";\nimport { encodePath } from \"../tools/path.js\";\nimport { request, prepareRequestOptions } from \"../request.js\";\nimport { handleResponseCode, processResponsePayload } from \"../response.js\";\nexport async function getStat(context, filename, options = {}) {\n const { details: isDetailed = false } = options;\n const requestOptions = prepareRequestOptions({\n url: joinURL(context.remoteURL, encodePath(filename)),\n method: \"PROPFIND\",\n headers: {\n Accept: \"text/plain,application/xml\",\n Depth: \"0\"\n }\n }, context, options);\n const response = await request(requestOptions, context);\n handleResponseCode(context, response);\n const responseData = await response.text();\n const result = await parseXML(responseData, context.parsing);\n const stat = parseStat(result, filename, isDetailed);\n return processResponsePayload(response, stat, isDetailed);\n}\n","import { Agent as HTTPAgent } from \"http\";\nimport { Agent as HTTPSAgent } from \"https\";\nimport { fetch } from \"@buttercup/fetch\";\nimport { getPatcher } from \"./compat/patcher.js\";\nimport { isReactNative, isWeb } from \"./compat/env.js\";\nimport { generateDigestAuthHeader, parseDigestAuth, responseIndicatesDigestAuth } from \"./auth/digest.js\";\nimport { cloneShallow, merge } from \"./tools/merge.js\";\nimport { mergeHeaders } from \"./tools/headers.js\";\nimport { requestDataToFetchBody } from \"./tools/body.js\";\nimport { AuthType } from \"./types.js\";\nimport { setupAuth } from \"./auth/index.js\";\nfunction getFetchOptions(requestOptions) {\n let headers = {};\n // Handle standard options\n const opts = {\n method: requestOptions.method\n };\n if (requestOptions.headers) {\n headers = mergeHeaders(headers, requestOptions.headers);\n }\n if (typeof requestOptions.data !== \"undefined\") {\n const [body, newHeaders] = requestDataToFetchBody(requestOptions.data);\n opts.body = body;\n headers = mergeHeaders(headers, newHeaders);\n }\n if (requestOptions.signal) {\n opts.signal = requestOptions.signal;\n }\n if (requestOptions.withCredentials) {\n opts.credentials = \"include\";\n }\n // Check for node-specific options\n if (!isWeb() && !isReactNative()) {\n if (requestOptions.httpAgent || requestOptions.httpsAgent) {\n opts.agent = (parsedURL) => {\n if (parsedURL.protocol === \"http:\") {\n return requestOptions.httpAgent || new HTTPAgent();\n }\n return requestOptions.httpsAgent || new HTTPSAgent();\n };\n }\n }\n // Attach headers\n opts.headers = headers;\n return opts;\n}\nexport function prepareRequestOptions(requestOptions, context, userOptions) {\n const finalOptions = cloneShallow(requestOptions);\n finalOptions.headers = mergeHeaders(context.headers, finalOptions.headers || {}, userOptions.headers || {});\n if (typeof userOptions.data !== \"undefined\") {\n finalOptions.data = userOptions.data;\n }\n if (userOptions.signal) {\n finalOptions.signal = userOptions.signal;\n }\n if (context.httpAgent) {\n finalOptions.httpAgent = context.httpAgent;\n }\n if (context.httpsAgent) {\n finalOptions.httpsAgent = context.httpsAgent;\n }\n if (context.digest) {\n finalOptions._digest = context.digest;\n }\n if (typeof context.withCredentials === \"boolean\") {\n finalOptions.withCredentials = context.withCredentials;\n }\n return finalOptions;\n}\nexport async function request(requestOptions, context) {\n if (context.authType === AuthType.Auto) {\n return requestAuto(requestOptions, context);\n }\n if (requestOptions._digest) {\n return requestDigest(requestOptions);\n }\n return requestStandard(requestOptions);\n}\nasync function requestAuto(requestOptions, context) {\n const response = await requestStandard(requestOptions);\n if (response.ok) {\n context.authType = AuthType.Password;\n return response;\n }\n if (response.status == 401 && responseIndicatesDigestAuth(response)) {\n context.authType = AuthType.Digest;\n setupAuth(context, context.username, context.password, undefined, undefined);\n requestOptions._digest = context.digest;\n return requestDigest(requestOptions);\n }\n return response;\n}\nasync function requestDigest(requestOptions) {\n // Remove client's digest authentication object from request options\n const _digest = requestOptions._digest;\n delete requestOptions._digest;\n // If client is already using digest authentication, include the digest authorization header\n if (_digest.hasDigestAuth) {\n requestOptions = merge(requestOptions, {\n headers: {\n Authorization: generateDigestAuthHeader(requestOptions, _digest)\n }\n });\n }\n // Perform digest request + check\n const response = await requestStandard(requestOptions);\n if (response.status == 401) {\n _digest.hasDigestAuth = parseDigestAuth(response, _digest);\n if (_digest.hasDigestAuth) {\n requestOptions = merge(requestOptions, {\n headers: {\n Authorization: generateDigestAuthHeader(requestOptions, _digest)\n }\n });\n const response2 = await requestStandard(requestOptions);\n if (response2.status == 401) {\n _digest.hasDigestAuth = false;\n }\n else {\n _digest.nc++;\n }\n return response2;\n }\n }\n else {\n _digest.nc++;\n }\n return response;\n}\nfunction requestStandard(requestOptions) {\n const patcher = getPatcher();\n return patcher.patchInline(\"request\", (options) => patcher.patchInline(\"fetch\", fetch, options.url, getFetchOptions(options)), requestOptions);\n}\n","import { minimatch } from \"minimatch\";\nimport { convertResponseHeaders } from \"./tools/headers.js\";\nexport function createErrorFromResponse(response, prefix = \"\") {\n const err = new Error(`${prefix}Invalid response: ${response.status} ${response.statusText}`);\n err.status = response.status;\n err.response = response;\n return err;\n}\nexport function handleResponseCode(context, response) {\n const { status } = response;\n if (status === 401 && context.digest)\n return response;\n if (status >= 400) {\n const err = createErrorFromResponse(response);\n throw err;\n }\n return response;\n}\nexport function processGlobFilter(files, glob) {\n return files.filter(file => minimatch(file.filename, glob, { matchBase: true }));\n}\n/**\n * Process a response payload (eg. from `customRequest`) and\n * prepare it for further processing. Exposed for custom\n * request handling.\n * @param response The response for a request\n * @param data The data returned\n * @param isDetailed Whether or not a detailed result is\n * requested\n * @returns The response data, or a detailed response object\n * if required\n */\nexport function processResponsePayload(response, data, isDetailed = false) {\n return isDetailed\n ? {\n data,\n headers: response.headers ? convertResponseHeaders(response.headers) : {},\n status: response.status,\n statusText: response.statusText\n }\n : data;\n}\n","import Stream from \"stream\";\nimport { isArrayBuffer } from \"../compat/arrayBuffer.js\";\nimport { isBuffer } from \"../compat/buffer.js\";\nimport { isReactNative, isWeb } from \"../compat/env.js\";\nexport function requestDataToFetchBody(data) {\n if (!isWeb() && !isReactNative() && data instanceof Stream.Readable) {\n // @ts-ignore\n return [data, {}];\n }\n if (typeof data === \"string\") {\n return [data, {}];\n }\n else if (isBuffer(data)) {\n return [data, {}];\n }\n else if (isArrayBuffer(data)) {\n return [data, {}];\n }\n else if (data && typeof data === \"object\") {\n return [\n JSON.stringify(data),\n {\n \"content-type\": \"application/json\"\n }\n ];\n }\n throw new Error(`Unable to convert request body: Unexpected body type: ${typeof data}`);\n}\n","import md5 from \"md5\";\nexport function ha1Compute(algorithm, user, realm, pass, nonce, cnonce, ha1) {\n const ha1Hash = ha1 || md5(`${user}:${realm}:${pass}`);\n if (algorithm && algorithm.toLowerCase() === \"md5-sess\") {\n return md5(`${ha1Hash}:${nonce}:${cnonce}`);\n }\n return ha1Hash;\n}\n","import path from \"path-posix\";\nimport { XMLParser } from \"fast-xml-parser\";\nimport nestedProp from \"nested-property\";\nimport { encodePath, normalisePath } from \"./path.js\";\nvar PropertyType;\n(function (PropertyType) {\n PropertyType[\"Array\"] = \"array\";\n PropertyType[\"Object\"] = \"object\";\n PropertyType[\"Original\"] = \"original\";\n})(PropertyType || (PropertyType = {}));\nfunction getParser({ attributeNamePrefix, attributeParsers, tagParsers }) {\n return new XMLParser({\n allowBooleanAttributes: true,\n attributeNamePrefix,\n textNodeName: \"text\",\n ignoreAttributes: false,\n removeNSPrefix: true,\n numberParseOptions: {\n hex: true,\n leadingZeros: false\n },\n attributeValueProcessor(_, attrValue, jPath) {\n for (const processor of attributeParsers) {\n try {\n const value = processor(jPath, attrValue);\n if (value !== attrValue) {\n return value;\n }\n }\n catch (error) {\n // skipping this invalid parser\n }\n }\n return attrValue;\n },\n tagValueProcessor(tagName, tagValue, jPath) {\n for (const processor of tagParsers) {\n try {\n const value = processor(jPath, tagValue);\n if (value !== tagValue) {\n return value;\n }\n }\n catch (error) {\n // skipping this invalid parser\n }\n }\n return tagValue;\n }\n });\n}\n/**\n * Tag parser for the displayname prop.\n * Ensure that the displayname is not parsed and always handled as is.\n * @param path The jPath of the tag\n * @param value The text value of the tag\n */\nexport function displaynameTagParser(path, value) {\n if (path.endsWith(\"propstat.prop.displayname\")) {\n // Do not parse the displayname, because this causes e.g. '2024.10' to result in number 2024.1\n return;\n }\n return value;\n}\nfunction getPropertyOfType(obj, prop, type = PropertyType.Original) {\n const val = nestedProp.get(obj, prop);\n if (type === \"array\" && Array.isArray(val) === false) {\n return [val];\n }\n else if (type === \"object\" && Array.isArray(val)) {\n return val[0];\n }\n return val;\n}\nfunction normaliseResponse(response) {\n const output = Object.assign({}, response);\n // Only either status OR propstat is allowed\n if (output.status) {\n nestedProp.set(output, \"status\", getPropertyOfType(output, \"status\", PropertyType.Object));\n }\n else {\n nestedProp.set(output, \"propstat\", getPropertyOfType(output, \"propstat\", PropertyType.Object));\n nestedProp.set(output, \"propstat.prop\", getPropertyOfType(output, \"propstat.prop\", PropertyType.Object));\n }\n return output;\n}\nfunction normaliseResult(result) {\n const { multistatus } = result;\n if (multistatus === \"\") {\n return {\n multistatus: {\n response: []\n }\n };\n }\n if (!multistatus) {\n throw new Error(\"Invalid response: No root multistatus found\");\n }\n const output = {\n multistatus: Array.isArray(multistatus) ? multistatus[0] : multistatus\n };\n nestedProp.set(output, \"multistatus.response\", getPropertyOfType(output, \"multistatus.response\", PropertyType.Array));\n nestedProp.set(output, \"multistatus.response\", nestedProp.get(output, \"multistatus.response\").map(response => normaliseResponse(response)));\n return output;\n}\n/**\n * Parse an XML response from a WebDAV service,\n * converting it to an internal DAV result\n * @param xml The raw XML string\n * @param context The current client context\n * @returns A parsed and processed DAV result\n */\nexport function parseXML(xml, context) {\n // backwards compatibility as this method is exported from the package\n context = context ?? {\n attributeNamePrefix: \"@\",\n attributeParsers: [],\n tagParsers: [displaynameTagParser]\n };\n return new Promise(resolve => {\n const result = getParser(context).parse(xml);\n resolve(normaliseResult(result));\n });\n}\n/**\n * Get a file stat result from given DAV properties\n * @param props DAV properties\n * @param filename The filename for the file stat\n * @param isDetailed Whether or not the raw props of the resource should be returned\n * @returns A file stat result\n */\nexport function prepareFileFromProps(props, filename, isDetailed = false) {\n // Last modified time, raw size, item type and mime\n const { getlastmodified: lastMod = null, getcontentlength: rawSize = \"0\", resourcetype: resourceType = null, getcontenttype: mimeType = null, getetag: etag = null } = props;\n const type = resourceType &&\n typeof resourceType === \"object\" &&\n typeof resourceType.collection !== \"undefined\"\n ? \"directory\"\n : \"file\";\n const stat = {\n filename,\n basename: path.basename(filename),\n lastmod: lastMod,\n size: parseInt(rawSize, 10),\n type,\n etag: typeof etag === \"string\" ? etag.replace(/\"/g, \"\") : null\n };\n if (type === \"file\") {\n stat.mime = mimeType && typeof mimeType === \"string\" ? mimeType.split(\";\")[0] : \"\";\n }\n if (isDetailed) {\n // The XML parser tries to interpret values, but the display name is required to be a string\n if (typeof props.displayname !== \"undefined\") {\n props.displayname = String(props.displayname);\n }\n stat.props = props;\n }\n return stat;\n}\n/**\n * Parse a DAV result for file stats\n * @param result The resulting DAV response\n * @param filename The filename that was stat'd\n * @param isDetailed Whether or not the raw props of\n * the resource should be returned\n * @returns A file stat result\n */\nexport function parseStat(result, filename, isDetailed = false) {\n let responseItem = null;\n try {\n // should be a propstat response, if not the if below will throw an error\n if (result.multistatus.response[0].propstat) {\n responseItem = result.multistatus.response[0];\n }\n }\n catch (e) {\n /* ignore */\n }\n if (!responseItem) {\n throw new Error(\"Failed getting item stat: bad response\");\n }\n const { propstat: { prop: props, status: statusLine } } = responseItem;\n // As defined in https://tools.ietf.org/html/rfc2068#section-6.1\n const [_, statusCodeStr, statusText] = statusLine.split(\" \", 3);\n const statusCode = parseInt(statusCodeStr, 10);\n if (statusCode >= 400) {\n const err = new Error(`Invalid response: ${statusCode} ${statusText}`);\n err.status = statusCode;\n throw err;\n }\n const filePath = normalisePath(filename);\n return prepareFileFromProps(props, filePath, isDetailed);\n}\n/**\n * Parse a DAV result for a search request\n *\n * @param result The resulting DAV response\n * @param searchArbiter The collection path that was searched\n * @param isDetailed Whether or not the raw props of the resource should be returned\n */\nexport function parseSearch(result, searchArbiter, isDetailed) {\n const response = {\n truncated: false,\n results: []\n };\n response.truncated = result.multistatus.response.some(v => {\n return ((v.status || v.propstat?.status).split(\" \", 3)?.[1] === \"507\" &&\n v.href.replace(/\\/$/, \"\").endsWith(encodePath(searchArbiter).replace(/\\/$/, \"\")));\n });\n result.multistatus.response.forEach(result => {\n if (result.propstat === undefined) {\n return;\n }\n const filename = result.href.split(\"/\").map(decodeURIComponent).join(\"/\");\n response.results.push(prepareFileFromProps(result.propstat.prop, filename, isDetailed));\n });\n return response;\n}\n/**\n * Translate a disk quota indicator to a recognised\n * value (includes \"unlimited\" and \"unknown\")\n * @param value The quota indicator, eg. \"-3\"\n * @returns The value in bytes, or another indicator\n */\nexport function translateDiskSpace(value) {\n switch (String(value)) {\n case \"-3\":\n return \"unlimited\";\n case \"-2\":\n /* falls-through */\n case \"-1\":\n // -1 is non-computed\n return \"unknown\";\n default:\n return parseInt(String(value), 10);\n }\n}\n","import base64 from \"base-64\";\nimport { decodeHTML } from \"entities\";\nimport { isWeb } from \"../compat/env.js\";\nexport function decodeHTMLEntities(text) {\n if (isWeb()) {\n const txt = document.createElement(\"textarea\");\n txt.innerHTML = text;\n return txt.value;\n }\n return decodeHTML(text);\n}\nexport function fromBase64(text) {\n return base64.decode(text);\n}\nexport function toBase64(text) {\n return base64.encode(text);\n}\n","export function convertResponseHeaders(headers) {\n const output = {};\n for (const key of headers.keys()) {\n output[key] = headers.get(key);\n }\n return output;\n}\nexport function mergeHeaders(...headerPayloads) {\n if (headerPayloads.length === 0)\n return {};\n const headerKeys = {};\n return headerPayloads.reduce((output, headers) => {\n Object.keys(headers).forEach(header => {\n const lowerHeader = header.toLowerCase();\n if (headerKeys.hasOwnProperty(lowerHeader)) {\n output[headerKeys[lowerHeader]] = headers[header];\n }\n else {\n headerKeys[lowerHeader] = header;\n output[header] = headers[header];\n }\n });\n return output;\n }, {});\n}\n","export function cloneShallow(obj) {\n return isPlainObject(obj)\n ? Object.assign({}, obj)\n : Object.setPrototypeOf(Object.assign({}, obj), Object.getPrototypeOf(obj));\n}\nfunction isPlainObject(obj) {\n if (typeof obj !== \"object\" ||\n obj === null ||\n Object.prototype.toString.call(obj) != \"[object Object]\") {\n // Not an object\n return false;\n }\n if (Object.getPrototypeOf(obj) === null) {\n return true;\n }\n let proto = obj;\n // Find the prototype\n while (Object.getPrototypeOf(proto) !== null) {\n proto = Object.getPrototypeOf(proto);\n }\n return Object.getPrototypeOf(obj) === proto;\n}\nexport function merge(...args) {\n let output = null, items = [...args];\n while (items.length > 0) {\n const nextItem = items.shift();\n if (!output) {\n output = cloneShallow(nextItem);\n }\n else {\n output = mergeObjects(output, nextItem);\n }\n }\n return output;\n}\nfunction mergeObjects(obj1, obj2) {\n const output = cloneShallow(obj1);\n Object.keys(obj2).forEach(key => {\n if (!output.hasOwnProperty(key)) {\n output[key] = obj2[key];\n return;\n }\n if (Array.isArray(obj2[key])) {\n output[key] = Array.isArray(output[key])\n ? [...output[key], ...obj2[key]]\n : [...obj2[key]];\n }\n else if (typeof obj2[key] === \"object\" && !!obj2[key]) {\n output[key] =\n typeof output[key] === \"object\" && !!output[key]\n ? mergeObjects(output[key], obj2[key])\n : cloneShallow(obj2[key]);\n }\n else {\n output[key] = obj2[key];\n }\n });\n return output;\n}\n","import { Layerr } from \"layerr\";\nimport path from \"path-posix\";\nconst SEP_PATH_POSIX = \"__PATH_SEPARATOR_POSIX__\";\nconst SEP_PATH_WINDOWS = \"__PATH_SEPARATOR_WINDOWS__\";\nexport function encodePath(filePath) {\n try {\n const replaced = filePath.replace(/\\//g, SEP_PATH_POSIX).replace(/\\\\\\\\/g, SEP_PATH_WINDOWS);\n const formatted = encodeURIComponent(replaced);\n return formatted.split(SEP_PATH_WINDOWS).join(\"\\\\\\\\\").split(SEP_PATH_POSIX).join(\"/\");\n }\n catch (err) {\n throw new Layerr(err, \"Failed encoding path\");\n }\n}\nexport function getAllDirectories(directory) {\n if (!directory || directory === \"/\")\n return [];\n let currentPath = directory;\n const output = [];\n do {\n output.push(currentPath);\n currentPath = path.dirname(currentPath);\n } while (currentPath && currentPath !== \"/\");\n return output;\n}\nexport function makePathAbsolute(pathStr) {\n return pathStr.startsWith(\"/\") ? pathStr : \"/\" + pathStr;\n}\nexport function normalisePath(pathStr) {\n let normalisedPath = pathStr;\n if (normalisedPath[0] !== \"/\") {\n normalisedPath = \"/\" + normalisedPath;\n }\n if (/^.+\\/$/.test(normalisedPath)) {\n normalisedPath = normalisedPath.substr(0, normalisedPath.length - 1);\n }\n return normalisedPath;\n}\n","import { translateDiskSpace } from \"./dav.js\";\nexport function parseQuota(result) {\n try {\n const [responseItem] = result.multistatus.response;\n const { propstat: { prop: { \"quota-used-bytes\": quotaUsed, \"quota-available-bytes\": quotaAvail } } } = responseItem;\n return typeof quotaUsed !== \"undefined\" && typeof quotaAvail !== \"undefined\"\n ? {\n // As it could be both a string or a number ensure we are working with a number\n used: parseInt(String(quotaUsed), 10),\n available: translateDiskSpace(quotaAvail)\n }\n : null;\n }\n catch (err) {\n /* ignore */\n }\n return null;\n}\n","import { Layerr } from \"layerr\";\nimport { byteLength } from \"byte-length\";\nimport { isArrayBuffer } from \"../compat/arrayBuffer.js\";\nimport { isBuffer } from \"../compat/buffer.js\";\nimport { ErrorCode } from \"../types.js\";\nexport function calculateDataLength(data) {\n if (isArrayBuffer(data)) {\n return data.byteLength;\n }\n else if (isBuffer(data)) {\n return data.length;\n }\n else if (typeof data === \"string\") {\n return byteLength(data);\n }\n throw new Layerr({\n info: {\n code: ErrorCode.DataTypeNoLength\n }\n }, \"Cannot calculate data length: Invalid type\");\n}\n","import URL from \"url-parse\";\nimport { Layerr } from \"layerr\";\nimport _joinURL from \"url-join\";\nimport { normalisePath } from \"./path.js\";\nexport function extractURLPath(fullURL) {\n const url = new URL(fullURL);\n let urlPath = url.pathname;\n if (urlPath.length <= 0) {\n urlPath = \"/\";\n }\n return normalisePath(urlPath);\n}\nexport function joinURL(...parts) {\n return _joinURL(parts.reduce((output, nextPart, partIndex) => {\n if (partIndex === 0 ||\n nextPart !== \"/\" ||\n (nextPart === \"/\" && output[output.length - 1] !== \"/\")) {\n output.push(nextPart);\n }\n return output;\n }, []));\n}\nexport function normaliseHREF(href) {\n try {\n const normalisedHref = href.replace(/^https?:\\/\\/[^\\/]+/, \"\");\n return normalisedHref;\n }\n catch (err) {\n throw new Layerr(err, \"Failed normalising HREF\");\n }\n}\n","import { XMLParser, XMLBuilder } from \"fast-xml-parser\";\nexport function generateLockXML(ownerHREF) {\n return getBuilder().build(namespace({\n lockinfo: {\n \"@_xmlns:d\": \"DAV:\",\n lockscope: {\n exclusive: {}\n },\n locktype: {\n write: {}\n },\n owner: {\n href: ownerHREF\n }\n }\n }, \"d\"));\n}\nfunction getBuilder() {\n return new XMLBuilder({\n attributeNamePrefix: \"@_\",\n format: true,\n ignoreAttributes: false,\n suppressEmptyNode: true\n });\n}\nfunction getParser() {\n return new XMLParser({\n removeNSPrefix: true,\n parseAttributeValue: true,\n parseTagValue: true\n });\n}\nfunction namespace(obj, ns) {\n const copy = { ...obj };\n for (const key in copy) {\n if (!copy.hasOwnProperty(key)) {\n continue;\n }\n if (copy[key] && typeof copy[key] === \"object\" && key.indexOf(\":\") === -1) {\n copy[`${ns}:${key}`] = namespace(copy[key], ns);\n delete copy[key];\n }\n else if (/^@_/.test(key) === false) {\n copy[`${ns}:${key}`] = copy[key];\n delete copy[key];\n }\n }\n return copy;\n}\nexport function parseGenericResponse(xml) {\n return getParser().parse(xml);\n}\n","export { Request, Response } from \"@buttercup/fetch\";\nexport var AuthType;\n(function (AuthType) {\n AuthType[\"Auto\"] = \"auto\";\n AuthType[\"Digest\"] = \"digest\";\n AuthType[\"None\"] = \"none\";\n AuthType[\"Password\"] = \"password\";\n AuthType[\"Token\"] = \"token\";\n})(AuthType || (AuthType = {}));\nexport var ErrorCode;\n(function (ErrorCode) {\n ErrorCode[\"DataTypeNoLength\"] = \"data-type-no-length\";\n ErrorCode[\"InvalidAuthType\"] = \"invalid-auth-type\";\n ErrorCode[\"InvalidOutputFormat\"] = \"invalid-output-format\";\n ErrorCode[\"LinkUnsupportedAuthType\"] = \"link-unsupported-auth\";\n ErrorCode[\"InvalidUpdateRange\"] = \"invalid-update-range\";\n ErrorCode[\"NotSupported\"] = \"not-supported\";\n})(ErrorCode || (ErrorCode = {}));\n","// Adapted from https://github.com/mathiasbynens/he/blob/36afe179392226cf1b6ccdb16ebbb7a5a844d93a/src/he.js#L106-L134\nvar _a;\nconst decodeMap = new Map([\n [0, 65533],\n // C1 Unicode control character reference replacements\n [128, 8364],\n [130, 8218],\n [131, 402],\n [132, 8222],\n [133, 8230],\n [134, 8224],\n [135, 8225],\n [136, 710],\n [137, 8240],\n [138, 352],\n [139, 8249],\n [140, 338],\n [142, 381],\n [145, 8216],\n [146, 8217],\n [147, 8220],\n [148, 8221],\n [149, 8226],\n [150, 8211],\n [151, 8212],\n [152, 732],\n [153, 8482],\n [154, 353],\n [155, 8250],\n [156, 339],\n [158, 382],\n [159, 376],\n]);\n/**\n * Polyfill for `String.fromCodePoint`. It is used to create a string from a Unicode code point.\n */\nexport const fromCodePoint = \n// eslint-disable-next-line @typescript-eslint/no-unnecessary-condition, n/no-unsupported-features/es-builtins\n(_a = String.fromCodePoint) !== null && _a !== void 0 ? _a : function (codePoint) {\n let output = \"\";\n if (codePoint > 65535) {\n codePoint -= 65536;\n output += String.fromCharCode(((codePoint >>> 10) & 1023) | 55296);\n codePoint = 56320 | (codePoint & 1023);\n }\n output += String.fromCharCode(codePoint);\n return output;\n};\n/**\n * Replace the given code point with a replacement character if it is a\n * surrogate or is outside the valid range. Otherwise return the code\n * point unchanged.\n */\nexport function replaceCodePoint(codePoint) {\n var _a;\n if ((codePoint >= 55296 && codePoint <= 57343) ||\n codePoint > 1114111) {\n return 65533;\n }\n return (_a = decodeMap.get(codePoint)) !== null && _a !== void 0 ? _a : codePoint;\n}\n/**\n * Replace the code point if relevant, then convert it to a string.\n *\n * @deprecated Use `fromCodePoint(replaceCodePoint(codePoint))` instead.\n * @param codePoint The code point to decode.\n * @returns The decoded code point.\n */\nexport function decodeCodePoint(codePoint) {\n return fromCodePoint(replaceCodePoint(codePoint));\n}\n//# sourceMappingURL=decode-codepoint.js.map","import { htmlDecodeTree } from \"./generated/decode-data-html.js\";\nimport { xmlDecodeTree } from \"./generated/decode-data-xml.js\";\nimport { replaceCodePoint, fromCodePoint } from \"./decode-codepoint.js\";\nvar CharCodes;\n(function (CharCodes) {\n CharCodes[CharCodes[\"NUM\"] = 35] = \"NUM\";\n CharCodes[CharCodes[\"SEMI\"] = 59] = \"SEMI\";\n CharCodes[CharCodes[\"EQUALS\"] = 61] = \"EQUALS\";\n CharCodes[CharCodes[\"ZERO\"] = 48] = \"ZERO\";\n CharCodes[CharCodes[\"NINE\"] = 57] = \"NINE\";\n CharCodes[CharCodes[\"LOWER_A\"] = 97] = \"LOWER_A\";\n CharCodes[CharCodes[\"LOWER_F\"] = 102] = \"LOWER_F\";\n CharCodes[CharCodes[\"LOWER_X\"] = 120] = \"LOWER_X\";\n CharCodes[CharCodes[\"LOWER_Z\"] = 122] = \"LOWER_Z\";\n CharCodes[CharCodes[\"UPPER_A\"] = 65] = \"UPPER_A\";\n CharCodes[CharCodes[\"UPPER_F\"] = 70] = \"UPPER_F\";\n CharCodes[CharCodes[\"UPPER_Z\"] = 90] = \"UPPER_Z\";\n})(CharCodes || (CharCodes = {}));\n/** Bit that needs to be set to convert an upper case ASCII character to lower case */\nconst TO_LOWER_BIT = 32;\nexport var BinTrieFlags;\n(function (BinTrieFlags) {\n BinTrieFlags[BinTrieFlags[\"VALUE_LENGTH\"] = 49152] = \"VALUE_LENGTH\";\n BinTrieFlags[BinTrieFlags[\"BRANCH_LENGTH\"] = 16256] = \"BRANCH_LENGTH\";\n BinTrieFlags[BinTrieFlags[\"JUMP_TABLE\"] = 127] = \"JUMP_TABLE\";\n})(BinTrieFlags || (BinTrieFlags = {}));\nfunction isNumber(code) {\n return code >= CharCodes.ZERO && code <= CharCodes.NINE;\n}\nfunction isHexadecimalCharacter(code) {\n return ((code >= CharCodes.UPPER_A && code <= CharCodes.UPPER_F) ||\n (code >= CharCodes.LOWER_A && code <= CharCodes.LOWER_F));\n}\nfunction isAsciiAlphaNumeric(code) {\n return ((code >= CharCodes.UPPER_A && code <= CharCodes.UPPER_Z) ||\n (code >= CharCodes.LOWER_A && code <= CharCodes.LOWER_Z) ||\n isNumber(code));\n}\n/**\n * Checks if the given character is a valid end character for an entity in an attribute.\n *\n * Attribute values that aren't terminated properly aren't parsed, and shouldn't lead to a parser error.\n * See the example in https://html.spec.whatwg.org/multipage/parsing.html#named-character-reference-state\n */\nfunction isEntityInAttributeInvalidEnd(code) {\n return code === CharCodes.EQUALS || isAsciiAlphaNumeric(code);\n}\nvar EntityDecoderState;\n(function (EntityDecoderState) {\n EntityDecoderState[EntityDecoderState[\"EntityStart\"] = 0] = \"EntityStart\";\n EntityDecoderState[EntityDecoderState[\"NumericStart\"] = 1] = \"NumericStart\";\n EntityDecoderState[EntityDecoderState[\"NumericDecimal\"] = 2] = \"NumericDecimal\";\n EntityDecoderState[EntityDecoderState[\"NumericHex\"] = 3] = \"NumericHex\";\n EntityDecoderState[EntityDecoderState[\"NamedEntity\"] = 4] = \"NamedEntity\";\n})(EntityDecoderState || (EntityDecoderState = {}));\nexport var DecodingMode;\n(function (DecodingMode) {\n /** Entities in text nodes that can end with any character. */\n DecodingMode[DecodingMode[\"Legacy\"] = 0] = \"Legacy\";\n /** Only allow entities terminated with a semicolon. */\n DecodingMode[DecodingMode[\"Strict\"] = 1] = \"Strict\";\n /** Entities in attributes have limitations on ending characters. */\n DecodingMode[DecodingMode[\"Attribute\"] = 2] = \"Attribute\";\n})(DecodingMode || (DecodingMode = {}));\n/**\n * Token decoder with support of writing partial entities.\n */\nexport class EntityDecoder {\n constructor(\n /** The tree used to decode entities. */\n decodeTree, \n /**\n * The function that is called when a codepoint is decoded.\n *\n * For multi-byte named entities, this will be called multiple times,\n * with the second codepoint, and the same `consumed` value.\n *\n * @param codepoint The decoded codepoint.\n * @param consumed The number of bytes consumed by the decoder.\n */\n emitCodePoint, \n /** An object that is used to produce errors. */\n errors) {\n this.decodeTree = decodeTree;\n this.emitCodePoint = emitCodePoint;\n this.errors = errors;\n /** The current state of the decoder. */\n this.state = EntityDecoderState.EntityStart;\n /** Characters that were consumed while parsing an entity. */\n this.consumed = 1;\n /**\n * The result of the entity.\n *\n * Either the result index of a numeric entity, or the codepoint of a\n * numeric entity.\n */\n this.result = 0;\n /** The current index in the decode tree. */\n this.treeIndex = 0;\n /** The number of characters that were consumed in excess. */\n this.excess = 1;\n /** The mode in which the decoder is operating. */\n this.decodeMode = DecodingMode.Strict;\n }\n /** Resets the instance to make it reusable. */\n startEntity(decodeMode) {\n this.decodeMode = decodeMode;\n this.state = EntityDecoderState.EntityStart;\n this.result = 0;\n this.treeIndex = 0;\n this.excess = 1;\n this.consumed = 1;\n }\n /**\n * Write an entity to the decoder. This can be called multiple times with partial entities.\n * If the entity is incomplete, the decoder will return -1.\n *\n * Mirrors the implementation of `getDecoder`, but with the ability to stop decoding if the\n * entity is incomplete, and resume when the next string is written.\n *\n * @param input The string containing the entity (or a continuation of the entity).\n * @param offset The offset at which the entity begins. Should be 0 if this is not the first call.\n * @returns The number of characters that were consumed, or -1 if the entity is incomplete.\n */\n write(input, offset) {\n switch (this.state) {\n case EntityDecoderState.EntityStart: {\n if (input.charCodeAt(offset) === CharCodes.NUM) {\n this.state = EntityDecoderState.NumericStart;\n this.consumed += 1;\n return this.stateNumericStart(input, offset + 1);\n }\n this.state = EntityDecoderState.NamedEntity;\n return this.stateNamedEntity(input, offset);\n }\n case EntityDecoderState.NumericStart: {\n return this.stateNumericStart(input, offset);\n }\n case EntityDecoderState.NumericDecimal: {\n return this.stateNumericDecimal(input, offset);\n }\n case EntityDecoderState.NumericHex: {\n return this.stateNumericHex(input, offset);\n }\n case EntityDecoderState.NamedEntity: {\n return this.stateNamedEntity(input, offset);\n }\n }\n }\n /**\n * Switches between the numeric decimal and hexadecimal states.\n *\n * Equivalent to the `Numeric character reference state` in the HTML spec.\n *\n * @param input The string containing the entity (or a continuation of the entity).\n * @param offset The current offset.\n * @returns The number of characters that were consumed, or -1 if the entity is incomplete.\n */\n stateNumericStart(input, offset) {\n if (offset >= input.length) {\n return -1;\n }\n if ((input.charCodeAt(offset) | TO_LOWER_BIT) === CharCodes.LOWER_X) {\n this.state = EntityDecoderState.NumericHex;\n this.consumed += 1;\n return this.stateNumericHex(input, offset + 1);\n }\n this.state = EntityDecoderState.NumericDecimal;\n return this.stateNumericDecimal(input, offset);\n }\n addToNumericResult(input, start, end, base) {\n if (start !== end) {\n const digitCount = end - start;\n this.result =\n this.result * Math.pow(base, digitCount) +\n Number.parseInt(input.substr(start, digitCount), base);\n this.consumed += digitCount;\n }\n }\n /**\n * Parses a hexadecimal numeric entity.\n *\n * Equivalent to the `Hexademical character reference state` in the HTML spec.\n *\n * @param input The string containing the entity (or a continuation of the entity).\n * @param offset The current offset.\n * @returns The number of characters that were consumed, or -1 if the entity is incomplete.\n */\n stateNumericHex(input, offset) {\n const startIndex = offset;\n while (offset < input.length) {\n const char = input.charCodeAt(offset);\n if (isNumber(char) || isHexadecimalCharacter(char)) {\n offset += 1;\n }\n else {\n this.addToNumericResult(input, startIndex, offset, 16);\n return this.emitNumericEntity(char, 3);\n }\n }\n this.addToNumericResult(input, startIndex, offset, 16);\n return -1;\n }\n /**\n * Parses a decimal numeric entity.\n *\n * Equivalent to the `Decimal character reference state` in the HTML spec.\n *\n * @param input The string containing the entity (or a continuation of the entity).\n * @param offset The current offset.\n * @returns The number of characters that were consumed, or -1 if the entity is incomplete.\n */\n stateNumericDecimal(input, offset) {\n const startIndex = offset;\n while (offset < input.length) {\n const char = input.charCodeAt(offset);\n if (isNumber(char)) {\n offset += 1;\n }\n else {\n this.addToNumericResult(input, startIndex, offset, 10);\n return this.emitNumericEntity(char, 2);\n }\n }\n this.addToNumericResult(input, startIndex, offset, 10);\n return -1;\n }\n /**\n * Validate and emit a numeric entity.\n *\n * Implements the logic from the `Hexademical character reference start\n * state` and `Numeric character reference end state` in the HTML spec.\n *\n * @param lastCp The last code point of the entity. Used to see if the\n * entity was terminated with a semicolon.\n * @param expectedLength The minimum number of characters that should be\n * consumed. Used to validate that at least one digit\n * was consumed.\n * @returns The number of characters that were consumed.\n */\n emitNumericEntity(lastCp, expectedLength) {\n var _a;\n // Ensure we consumed at least one digit.\n if (this.consumed <= expectedLength) {\n (_a = this.errors) === null || _a === void 0 ? void 0 : _a.absenceOfDigitsInNumericCharacterReference(this.consumed);\n return 0;\n }\n // Figure out if this is a legit end of the entity\n if (lastCp === CharCodes.SEMI) {\n this.consumed += 1;\n }\n else if (this.decodeMode === DecodingMode.Strict) {\n return 0;\n }\n this.emitCodePoint(replaceCodePoint(this.result), this.consumed);\n if (this.errors) {\n if (lastCp !== CharCodes.SEMI) {\n this.errors.missingSemicolonAfterCharacterReference();\n }\n this.errors.validateNumericCharacterReference(this.result);\n }\n return this.consumed;\n }\n /**\n * Parses a named entity.\n *\n * Equivalent to the `Named character reference state` in the HTML spec.\n *\n * @param input The string containing the entity (or a continuation of the entity).\n * @param offset The current offset.\n * @returns The number of characters that were consumed, or -1 if the entity is incomplete.\n */\n stateNamedEntity(input, offset) {\n const { decodeTree } = this;\n let current = decodeTree[this.treeIndex];\n // The mask is the number of bytes of the value, including the current byte.\n let valueLength = (current & BinTrieFlags.VALUE_LENGTH) >> 14;\n for (; offset < input.length; offset++, this.excess++) {\n const char = input.charCodeAt(offset);\n this.treeIndex = determineBranch(decodeTree, current, this.treeIndex + Math.max(1, valueLength), char);\n if (this.treeIndex < 0) {\n return this.result === 0 ||\n // If we are parsing an attribute\n (this.decodeMode === DecodingMode.Attribute &&\n // We shouldn't have consumed any characters after the entity,\n (valueLength === 0 ||\n // And there should be no invalid characters.\n isEntityInAttributeInvalidEnd(char)))\n ? 0\n : this.emitNotTerminatedNamedEntity();\n }\n current = decodeTree[this.treeIndex];\n valueLength = (current & BinTrieFlags.VALUE_LENGTH) >> 14;\n // If the branch is a value, store it and continue\n if (valueLength !== 0) {\n // If the entity is terminated by a semicolon, we are done.\n if (char === CharCodes.SEMI) {\n return this.emitNamedEntityData(this.treeIndex, valueLength, this.consumed + this.excess);\n }\n // If we encounter a non-terminated (legacy) entity while parsing strictly, then ignore it.\n if (this.decodeMode !== DecodingMode.Strict) {\n this.result = this.treeIndex;\n this.consumed += this.excess;\n this.excess = 0;\n }\n }\n }\n return -1;\n }\n /**\n * Emit a named entity that was not terminated with a semicolon.\n *\n * @returns The number of characters consumed.\n */\n emitNotTerminatedNamedEntity() {\n var _a;\n const { result, decodeTree } = this;\n const valueLength = (decodeTree[result] & BinTrieFlags.VALUE_LENGTH) >> 14;\n this.emitNamedEntityData(result, valueLength, this.consumed);\n (_a = this.errors) === null || _a === void 0 ? void 0 : _a.missingSemicolonAfterCharacterReference();\n return this.consumed;\n }\n /**\n * Emit a named entity.\n *\n * @param result The index of the entity in the decode tree.\n * @param valueLength The number of bytes in the entity.\n * @param consumed The number of characters consumed.\n *\n * @returns The number of characters consumed.\n */\n emitNamedEntityData(result, valueLength, consumed) {\n const { decodeTree } = this;\n this.emitCodePoint(valueLength === 1\n ? decodeTree[result] & ~BinTrieFlags.VALUE_LENGTH\n : decodeTree[result + 1], consumed);\n if (valueLength === 3) {\n // For multi-byte values, we need to emit the second byte.\n this.emitCodePoint(decodeTree[result + 2], consumed);\n }\n return consumed;\n }\n /**\n * Signal to the parser that the end of the input was reached.\n *\n * Remaining data will be emitted and relevant errors will be produced.\n *\n * @returns The number of characters consumed.\n */\n end() {\n var _a;\n switch (this.state) {\n case EntityDecoderState.NamedEntity: {\n // Emit a named entity if we have one.\n return this.result !== 0 &&\n (this.decodeMode !== DecodingMode.Attribute ||\n this.result === this.treeIndex)\n ? this.emitNotTerminatedNamedEntity()\n : 0;\n }\n // Otherwise, emit a numeric entity if we have one.\n case EntityDecoderState.NumericDecimal: {\n return this.emitNumericEntity(0, 2);\n }\n case EntityDecoderState.NumericHex: {\n return this.emitNumericEntity(0, 3);\n }\n case EntityDecoderState.NumericStart: {\n (_a = this.errors) === null || _a === void 0 ? void 0 : _a.absenceOfDigitsInNumericCharacterReference(this.consumed);\n return 0;\n }\n case EntityDecoderState.EntityStart: {\n // Return 0 if we have no entity.\n return 0;\n }\n }\n }\n}\n/**\n * Creates a function that decodes entities in a string.\n *\n * @param decodeTree The decode tree.\n * @returns A function that decodes entities in a string.\n */\nfunction getDecoder(decodeTree) {\n let returnValue = \"\";\n const decoder = new EntityDecoder(decodeTree, (data) => (returnValue += fromCodePoint(data)));\n return function decodeWithTrie(input, decodeMode) {\n let lastIndex = 0;\n let offset = 0;\n while ((offset = input.indexOf(\"&\", offset)) >= 0) {\n returnValue += input.slice(lastIndex, offset);\n decoder.startEntity(decodeMode);\n const length = decoder.write(input, \n // Skip the \"&\"\n offset + 1);\n if (length < 0) {\n lastIndex = offset + decoder.end();\n break;\n }\n lastIndex = offset + length;\n // If `length` is 0, skip the current `&` and continue.\n offset = length === 0 ? lastIndex + 1 : lastIndex;\n }\n const result = returnValue + input.slice(lastIndex);\n // Make sure we don't keep a reference to the final string.\n returnValue = \"\";\n return result;\n };\n}\n/**\n * Determines the branch of the current node that is taken given the current\n * character. This function is used to traverse the trie.\n *\n * @param decodeTree The trie.\n * @param current The current node.\n * @param nodeIdx The index right after the current node and its value.\n * @param char The current character.\n * @returns The index of the next node, or -1 if no branch is taken.\n */\nexport function determineBranch(decodeTree, current, nodeIndex, char) {\n const branchCount = (current & BinTrieFlags.BRANCH_LENGTH) >> 7;\n const jumpOffset = current & BinTrieFlags.JUMP_TABLE;\n // Case 1: Single branch encoded in jump offset\n if (branchCount === 0) {\n return jumpOffset !== 0 && char === jumpOffset ? nodeIndex : -1;\n }\n // Case 2: Multiple branches encoded in jump table\n if (jumpOffset) {\n const value = char - jumpOffset;\n return value < 0 || value >= branchCount\n ? -1\n : decodeTree[nodeIndex + value] - 1;\n }\n // Case 3: Multiple branches encoded in dictionary\n // Binary search for the character.\n let lo = nodeIndex;\n let hi = lo + branchCount - 1;\n while (lo <= hi) {\n const mid = (lo + hi) >>> 1;\n const midValue = decodeTree[mid];\n if (midValue < char) {\n lo = mid + 1;\n }\n else if (midValue > char) {\n hi = mid - 1;\n }\n else {\n return decodeTree[mid + branchCount];\n }\n }\n return -1;\n}\nconst htmlDecoder = /* #__PURE__ */ getDecoder(htmlDecodeTree);\nconst xmlDecoder = /* #__PURE__ */ getDecoder(xmlDecodeTree);\n/**\n * Decodes an HTML string.\n *\n * @param htmlString The string to decode.\n * @param mode The decoding mode.\n * @returns The decoded string.\n */\nexport function decodeHTML(htmlString, mode = DecodingMode.Legacy) {\n return htmlDecoder(htmlString, mode);\n}\n/**\n * Decodes an HTML string in an attribute.\n *\n * @param htmlAttribute The string to decode.\n * @returns The decoded string.\n */\nexport function decodeHTMLAttribute(htmlAttribute) {\n return htmlDecoder(htmlAttribute, DecodingMode.Attribute);\n}\n/**\n * Decodes an HTML string, requiring all entities to be terminated by a semicolon.\n *\n * @param htmlString The string to decode.\n * @returns The decoded string.\n */\nexport function decodeHTMLStrict(htmlString) {\n return htmlDecoder(htmlString, DecodingMode.Strict);\n}\n/**\n * Decodes an XML string, requiring all entities to be terminated by a semicolon.\n *\n * @param xmlString The string to decode.\n * @returns The decoded string.\n */\nexport function decodeXML(xmlString) {\n return xmlDecoder(xmlString, DecodingMode.Strict);\n}\n// Re-export for use by eg. htmlparser2\nexport { htmlDecodeTree } from \"./generated/decode-data-html.js\";\nexport { xmlDecodeTree } from \"./generated/decode-data-xml.js\";\nexport { decodeCodePoint, replaceCodePoint, fromCodePoint, } from \"./decode-codepoint.js\";\n//# sourceMappingURL=decode.js.map","export const xmlReplacer = /[\"$&'<>\\u0080-\\uFFFF]/g;\nconst xmlCodeMap = new Map([\n [34, \""\"],\n [38, \"&\"],\n [39, \"'\"],\n [60, \"<\"],\n [62, \">\"],\n]);\n// For compatibility with node < 4, we wrap `codePointAt`\nexport const getCodePoint = \n// eslint-disable-next-line @typescript-eslint/no-unnecessary-condition\nString.prototype.codePointAt == null\n ? (c, index) => (c.charCodeAt(index) & 64512) === 55296\n ? (c.charCodeAt(index) - 55296) * 1024 +\n c.charCodeAt(index + 1) -\n 56320 +\n 65536\n : c.charCodeAt(index)\n : // http://mathiasbynens.be/notes/javascript-encoding#surrogate-formulae\n (input, index) => input.codePointAt(index);\n/**\n * Encodes all non-ASCII characters, as well as characters not valid in XML\n * documents using XML entities.\n *\n * If a character has no equivalent entity, a\n * numeric hexadecimal reference (eg. `ü`) will be used.\n */\nexport function encodeXML(input) {\n let returnValue = \"\";\n let lastIndex = 0;\n let match;\n while ((match = xmlReplacer.exec(input)) !== null) {\n const { index } = match;\n const char = input.charCodeAt(index);\n const next = xmlCodeMap.get(char);\n if (next === undefined) {\n returnValue += `${input.substring(lastIndex, index)}&#x${getCodePoint(input, index).toString(16)};`;\n // Increase by 1 if we have a surrogate pair\n lastIndex = xmlReplacer.lastIndex += Number((char & 64512) === 55296);\n }\n else {\n returnValue += input.substring(lastIndex, index) + next;\n lastIndex = index + 1;\n }\n }\n return returnValue + input.substr(lastIndex);\n}\n/**\n * Encodes all non-ASCII characters, as well as characters not valid in XML\n * documents using numeric hexadecimal reference (eg. `ü`).\n *\n * Have a look at `escapeUTF8` if you want a more concise output at the expense\n * of reduced transportability.\n *\n * @param data String to escape.\n */\nexport const escape = encodeXML;\n/**\n * Creates a function that escapes all characters matched by the given regular\n * expression using the given map of characters to escape to their entities.\n *\n * @param regex Regular expression to match characters to escape.\n * @param map Map of characters to escape to their entities.\n *\n * @returns Function that escapes all characters matched by the given regular\n * expression using the given map of characters to escape to their entities.\n */\nfunction getEscaper(regex, map) {\n return function escape(data) {\n let match;\n let lastIndex = 0;\n let result = \"\";\n while ((match = regex.exec(data))) {\n if (lastIndex !== match.index) {\n result += data.substring(lastIndex, match.index);\n }\n // We know that this character will be in the map.\n result += map.get(match[0].charCodeAt(0));\n // Every match will be of length 1\n lastIndex = match.index + 1;\n }\n return result + data.substring(lastIndex);\n };\n}\n/**\n * Encodes all characters not valid in XML documents using XML entities.\n *\n * Note that the output will be character-set dependent.\n *\n * @param data String to escape.\n */\nexport const escapeUTF8 = /* #__PURE__ */ getEscaper(/[\"&'<>]/g, xmlCodeMap);\n/**\n * Encodes all characters that have to be escaped in HTML attributes,\n * following {@link https://html.spec.whatwg.org/multipage/parsing.html#escapingString}.\n *\n * @param data String to escape.\n */\nexport const escapeAttribute = \n/* #__PURE__ */ getEscaper(/[\"&\\u00A0]/g, new Map([\n [34, \""\"],\n [38, \"&\"],\n [160, \" \"],\n]));\n/**\n * Encodes all characters that have to be escaped in HTML text,\n * following {@link https://html.spec.whatwg.org/multipage/parsing.html#escapingString}.\n *\n * @param data String to escape.\n */\nexport const escapeText = /* #__PURE__ */ getEscaper(/[&<>\\u00A0]/g, new Map([\n [38, \"&\"],\n [60, \"<\"],\n [62, \">\"],\n [160, \" \"],\n]));\n//# sourceMappingURL=escape.js.map","import { decodeXML, decodeHTML, DecodingMode } from \"./decode.js\";\nimport { encodeHTML, encodeNonAsciiHTML } from \"./encode.js\";\nimport { encodeXML, escapeUTF8, escapeAttribute, escapeText, } from \"./escape.js\";\n/** The level of entities to support. */\nexport var EntityLevel;\n(function (EntityLevel) {\n /** Support only XML entities. */\n EntityLevel[EntityLevel[\"XML\"] = 0] = \"XML\";\n /** Support HTML entities, which are a superset of XML entities. */\n EntityLevel[EntityLevel[\"HTML\"] = 1] = \"HTML\";\n})(EntityLevel || (EntityLevel = {}));\nexport var EncodingMode;\n(function (EncodingMode) {\n /**\n * The output is UTF-8 encoded. Only characters that need escaping within\n * XML will be escaped.\n */\n EncodingMode[EncodingMode[\"UTF8\"] = 0] = \"UTF8\";\n /**\n * The output consists only of ASCII characters. Characters that need\n * escaping within HTML, and characters that aren't ASCII characters will\n * be escaped.\n */\n EncodingMode[EncodingMode[\"ASCII\"] = 1] = \"ASCII\";\n /**\n * Encode all characters that have an equivalent entity, as well as all\n * characters that are not ASCII characters.\n */\n EncodingMode[EncodingMode[\"Extensive\"] = 2] = \"Extensive\";\n /**\n * Encode all characters that have to be escaped in HTML attributes,\n * following {@link https://html.spec.whatwg.org/multipage/parsing.html#escapingString}.\n */\n EncodingMode[EncodingMode[\"Attribute\"] = 3] = \"Attribute\";\n /**\n * Encode all characters that have to be escaped in HTML text,\n * following {@link https://html.spec.whatwg.org/multipage/parsing.html#escapingString}.\n */\n EncodingMode[EncodingMode[\"Text\"] = 4] = \"Text\";\n})(EncodingMode || (EncodingMode = {}));\n/**\n * Decodes a string with entities.\n *\n * @param input String to decode.\n * @param options Decoding options.\n */\nexport function decode(input, options = EntityLevel.XML) {\n const level = typeof options === \"number\" ? options : options.level;\n if (level === EntityLevel.HTML) {\n const mode = typeof options === \"object\" ? options.mode : undefined;\n return decodeHTML(input, mode);\n }\n return decodeXML(input);\n}\n/**\n * Decodes a string with entities. Does not allow missing trailing semicolons for entities.\n *\n * @param input String to decode.\n * @param options Decoding options.\n * @deprecated Use `decode` with the `mode` set to `Strict`.\n */\nexport function decodeStrict(input, options = EntityLevel.XML) {\n var _a;\n const normalizedOptions = typeof options === \"number\" ? { level: options } : options;\n (_a = normalizedOptions.mode) !== null && _a !== void 0 ? _a : (normalizedOptions.mode = DecodingMode.Strict);\n return decode(input, normalizedOptions);\n}\n/**\n * Encodes a string with entities.\n *\n * @param input String to encode.\n * @param options Encoding options.\n */\nexport function encode(input, options = EntityLevel.XML) {\n const { mode = EncodingMode.Extensive, level = EntityLevel.XML } = typeof options === \"number\" ? { level: options } : options;\n switch (mode) {\n case EncodingMode.UTF8: {\n return escapeUTF8(input);\n }\n case EncodingMode.Attribute: {\n return escapeAttribute(input);\n }\n case EncodingMode.Text: {\n return escapeText(input);\n }\n case EncodingMode.ASCII: {\n return level === EntityLevel.HTML\n ? encodeNonAsciiHTML(input)\n : encodeXML(input);\n }\n // eslint-disable-next-line unicorn/no-useless-switch-case\n case EncodingMode.Extensive:\n default: {\n return level === EntityLevel.HTML\n ? encodeHTML(input)\n : encodeXML(input);\n }\n }\n}\nexport { encodeXML, escape, escapeUTF8, escapeAttribute, escapeText, } from \"./escape.js\";\nexport { encodeHTML, encodeNonAsciiHTML, \n// Legacy aliases (deprecated)\nencodeHTML as encodeHTML4, encodeHTML as encodeHTML5, } from \"./encode.js\";\nexport { EntityDecoder, DecodingMode, decodeXML, decodeHTML, decodeHTMLStrict, decodeHTMLAttribute, \n// Legacy aliases (deprecated)\ndecodeHTML as decodeHTML4, decodeHTML as decodeHTML5, decodeHTMLStrict as decodeHTML4Strict, decodeHTMLStrict as decodeHTML5Strict, decodeXML as decodeXMLStrict, } from \"./decode.js\";\n//# sourceMappingURL=index.js.map","const MAX_PATTERN_LENGTH = 1024 * 64;\nexport const assertValidPattern = (pattern) => {\n if (typeof pattern !== 'string') {\n throw new TypeError('invalid pattern');\n }\n if (pattern.length > MAX_PATTERN_LENGTH) {\n throw new TypeError('pattern is too long');\n }\n};\n//# sourceMappingURL=assert-valid-pattern.js.map","// parse a single path portion\nimport { parseClass } from './brace-expressions.js';\nimport { unescape } from './unescape.js';\nconst types = new Set(['!', '?', '+', '*', '@']);\nconst isExtglobType = (c) => types.has(c);\n// Patterns that get prepended to bind to the start of either the\n// entire string, or just a single path portion, to prevent dots\n// and/or traversal patterns, when needed.\n// Exts don't need the ^ or / bit, because the root binds that already.\nconst startNoTraversal = '(?!(?:^|/)\\\\.\\\\.?(?:$|/))';\nconst startNoDot = '(?!\\\\.)';\n// characters that indicate a start of pattern needs the \"no dots\" bit,\n// because a dot *might* be matched. ( is not in the list, because in\n// the case of a child extglob, it will handle the prevention itself.\nconst addPatternStart = new Set(['[', '.']);\n// cases where traversal is A-OK, no dot prevention needed\nconst justDots = new Set(['..', '.']);\nconst reSpecials = new Set('().*{}+?[]^$\\\\!');\nconst regExpEscape = (s) => s.replace(/[-[\\]{}()*+?.,\\\\^$|#\\s]/g, '\\\\$&');\n// any single thing other than /\nconst qmark = '[^/]';\n// * => any number of characters\nconst star = qmark + '*?';\n// use + when we need to ensure that *something* matches, because the * is\n// the only thing in the path portion.\nconst starNoEmpty = qmark + '+?';\n// remove the \\ chars that we added if we end up doing a nonmagic compare\n// const deslash = (s: string) => s.replace(/\\\\(.)/g, '$1')\nexport class AST {\n type;\n #root;\n #hasMagic;\n #uflag = false;\n #parts = [];\n #parent;\n #parentIndex;\n #negs;\n #filledNegs = false;\n #options;\n #toString;\n // set to true if it's an extglob with no children\n // (which really means one child of '')\n #emptyExt = false;\n constructor(type, parent, options = {}) {\n this.type = type;\n // extglobs are inherently magical\n if (type)\n this.#hasMagic = true;\n this.#parent = parent;\n this.#root = this.#parent ? this.#parent.#root : this;\n this.#options = this.#root === this ? options : this.#root.#options;\n this.#negs = this.#root === this ? [] : this.#root.#negs;\n if (type === '!' && !this.#root.#filledNegs)\n this.#negs.push(this);\n this.#parentIndex = this.#parent ? this.#parent.#parts.length : 0;\n }\n get hasMagic() {\n /* c8 ignore start */\n if (this.#hasMagic !== undefined)\n return this.#hasMagic;\n /* c8 ignore stop */\n for (const p of this.#parts) {\n if (typeof p === 'string')\n continue;\n if (p.type || p.hasMagic)\n return (this.#hasMagic = true);\n }\n // note: will be undefined until we generate the regexp src and find out\n return this.#hasMagic;\n }\n // reconstructs the pattern\n toString() {\n if (this.#toString !== undefined)\n return this.#toString;\n if (!this.type) {\n return (this.#toString = this.#parts.map(p => String(p)).join(''));\n }\n else {\n return (this.#toString =\n this.type + '(' + this.#parts.map(p => String(p)).join('|') + ')');\n }\n }\n #fillNegs() {\n /* c8 ignore start */\n if (this !== this.#root)\n throw new Error('should only call on root');\n if (this.#filledNegs)\n return this;\n /* c8 ignore stop */\n // call toString() once to fill this out\n this.toString();\n this.#filledNegs = true;\n let n;\n while ((n = this.#negs.pop())) {\n if (n.type !== '!')\n continue;\n // walk up the tree, appending everthing that comes AFTER parentIndex\n let p = n;\n let pp = p.#parent;\n while (pp) {\n for (let i = p.#parentIndex + 1; !pp.type && i < pp.#parts.length; i++) {\n for (const part of n.#parts) {\n /* c8 ignore start */\n if (typeof part === 'string') {\n throw new Error('string part in extglob AST??');\n }\n /* c8 ignore stop */\n part.copyIn(pp.#parts[i]);\n }\n }\n p = pp;\n pp = p.#parent;\n }\n }\n return this;\n }\n push(...parts) {\n for (const p of parts) {\n if (p === '')\n continue;\n /* c8 ignore start */\n if (typeof p !== 'string' && !(p instanceof AST && p.#parent === this)) {\n throw new Error('invalid part: ' + p);\n }\n /* c8 ignore stop */\n this.#parts.push(p);\n }\n }\n toJSON() {\n const ret = this.type === null\n ? this.#parts.slice().map(p => (typeof p === 'string' ? p : p.toJSON()))\n : [this.type, ...this.#parts.map(p => p.toJSON())];\n if (this.isStart() && !this.type)\n ret.unshift([]);\n if (this.isEnd() &&\n (this === this.#root ||\n (this.#root.#filledNegs && this.#parent?.type === '!'))) {\n ret.push({});\n }\n return ret;\n }\n isStart() {\n if (this.#root === this)\n return true;\n // if (this.type) return !!this.#parent?.isStart()\n if (!this.#parent?.isStart())\n return false;\n if (this.#parentIndex === 0)\n return true;\n // if everything AHEAD of this is a negation, then it's still the \"start\"\n const p = this.#parent;\n for (let i = 0; i < this.#parentIndex; i++) {\n const pp = p.#parts[i];\n if (!(pp instanceof AST && pp.type === '!')) {\n return false;\n }\n }\n return true;\n }\n isEnd() {\n if (this.#root === this)\n return true;\n if (this.#parent?.type === '!')\n return true;\n if (!this.#parent?.isEnd())\n return false;\n if (!this.type)\n return this.#parent?.isEnd();\n // if not root, it'll always have a parent\n /* c8 ignore start */\n const pl = this.#parent ? this.#parent.#parts.length : 0;\n /* c8 ignore stop */\n return this.#parentIndex === pl - 1;\n }\n copyIn(part) {\n if (typeof part === 'string')\n this.push(part);\n else\n this.push(part.clone(this));\n }\n clone(parent) {\n const c = new AST(this.type, parent);\n for (const p of this.#parts) {\n c.copyIn(p);\n }\n return c;\n }\n static #parseAST(str, ast, pos, opt) {\n let escaping = false;\n let inBrace = false;\n let braceStart = -1;\n let braceNeg = false;\n if (ast.type === null) {\n // outside of a extglob, append until we find a start\n let i = pos;\n let acc = '';\n while (i < str.length) {\n const c = str.charAt(i++);\n // still accumulate escapes at this point, but we do ignore\n // starts that are escaped\n if (escaping || c === '\\\\') {\n escaping = !escaping;\n acc += c;\n continue;\n }\n if (inBrace) {\n if (i === braceStart + 1) {\n if (c === '^' || c === '!') {\n braceNeg = true;\n }\n }\n else if (c === ']' && !(i === braceStart + 2 && braceNeg)) {\n inBrace = false;\n }\n acc += c;\n continue;\n }\n else if (c === '[') {\n inBrace = true;\n braceStart = i;\n braceNeg = false;\n acc += c;\n continue;\n }\n if (!opt.noext && isExtglobType(c) && str.charAt(i) === '(') {\n ast.push(acc);\n acc = '';\n const ext = new AST(c, ast);\n i = AST.#parseAST(str, ext, i, opt);\n ast.push(ext);\n continue;\n }\n acc += c;\n }\n ast.push(acc);\n return i;\n }\n // some kind of extglob, pos is at the (\n // find the next | or )\n let i = pos + 1;\n let part = new AST(null, ast);\n const parts = [];\n let acc = '';\n while (i < str.length) {\n const c = str.charAt(i++);\n // still accumulate escapes at this point, but we do ignore\n // starts that are escaped\n if (escaping || c === '\\\\') {\n escaping = !escaping;\n acc += c;\n continue;\n }\n if (inBrace) {\n if (i === braceStart + 1) {\n if (c === '^' || c === '!') {\n braceNeg = true;\n }\n }\n else if (c === ']' && !(i === braceStart + 2 && braceNeg)) {\n inBrace = false;\n }\n acc += c;\n continue;\n }\n else if (c === '[') {\n inBrace = true;\n braceStart = i;\n braceNeg = false;\n acc += c;\n continue;\n }\n if (isExtglobType(c) && str.charAt(i) === '(') {\n part.push(acc);\n acc = '';\n const ext = new AST(c, part);\n part.push(ext);\n i = AST.#parseAST(str, ext, i, opt);\n continue;\n }\n if (c === '|') {\n part.push(acc);\n acc = '';\n parts.push(part);\n part = new AST(null, ast);\n continue;\n }\n if (c === ')') {\n if (acc === '' && ast.#parts.length === 0) {\n ast.#emptyExt = true;\n }\n part.push(acc);\n acc = '';\n ast.push(...parts, part);\n return i;\n }\n acc += c;\n }\n // unfinished extglob\n // if we got here, it was a malformed extglob! not an extglob, but\n // maybe something else in there.\n ast.type = null;\n ast.#hasMagic = undefined;\n ast.#parts = [str.substring(pos - 1)];\n return i;\n }\n static fromGlob(pattern, options = {}) {\n const ast = new AST(null, undefined, options);\n AST.#parseAST(pattern, ast, 0, options);\n return ast;\n }\n // returns the regular expression if there's magic, or the unescaped\n // string if not.\n toMMPattern() {\n // should only be called on root\n /* c8 ignore start */\n if (this !== this.#root)\n return this.#root.toMMPattern();\n /* c8 ignore stop */\n const glob = this.toString();\n const [re, body, hasMagic, uflag] = this.toRegExpSource();\n // if we're in nocase mode, and not nocaseMagicOnly, then we do\n // still need a regular expression if we have to case-insensitively\n // match capital/lowercase characters.\n const anyMagic = hasMagic ||\n this.#hasMagic ||\n (this.#options.nocase &&\n !this.#options.nocaseMagicOnly &&\n glob.toUpperCase() !== glob.toLowerCase());\n if (!anyMagic) {\n return body;\n }\n const flags = (this.#options.nocase ? 'i' : '') + (uflag ? 'u' : '');\n return Object.assign(new RegExp(`^${re}$`, flags), {\n _src: re,\n _glob: glob,\n });\n }\n get options() {\n return this.#options;\n }\n // returns the string match, the regexp source, whether there's magic\n // in the regexp (so a regular expression is required) and whether or\n // not the uflag is needed for the regular expression (for posix classes)\n // TODO: instead of injecting the start/end at this point, just return\n // the BODY of the regexp, along with the start/end portions suitable\n // for binding the start/end in either a joined full-path makeRe context\n // (where we bind to (^|/), or a standalone matchPart context (where\n // we bind to ^, and not /). Otherwise slashes get duped!\n //\n // In part-matching mode, the start is:\n // - if not isStart: nothing\n // - if traversal possible, but not allowed: ^(?!\\.\\.?$)\n // - if dots allowed or not possible: ^\n // - if dots possible and not allowed: ^(?!\\.)\n // end is:\n // - if not isEnd(): nothing\n // - else: $\n //\n // In full-path matching mode, we put the slash at the START of the\n // pattern, so start is:\n // - if first pattern: same as part-matching mode\n // - if not isStart(): nothing\n // - if traversal possible, but not allowed: /(?!\\.\\.?(?:$|/))\n // - if dots allowed or not possible: /\n // - if dots possible and not allowed: /(?!\\.)\n // end is:\n // - if last pattern, same as part-matching mode\n // - else nothing\n //\n // Always put the (?:$|/) on negated tails, though, because that has to be\n // there to bind the end of the negated pattern portion, and it's easier to\n // just stick it in now rather than try to inject it later in the middle of\n // the pattern.\n //\n // We can just always return the same end, and leave it up to the caller\n // to know whether it's going to be used joined or in parts.\n // And, if the start is adjusted slightly, can do the same there:\n // - if not isStart: nothing\n // - if traversal possible, but not allowed: (?:/|^)(?!\\.\\.?$)\n // - if dots allowed or not possible: (?:/|^)\n // - if dots possible and not allowed: (?:/|^)(?!\\.)\n //\n // But it's better to have a simpler binding without a conditional, for\n // performance, so probably better to return both start options.\n //\n // Then the caller just ignores the end if it's not the first pattern,\n // and the start always gets applied.\n //\n // But that's always going to be $ if it's the ending pattern, or nothing,\n // so the caller can just attach $ at the end of the pattern when building.\n //\n // So the todo is:\n // - better detect what kind of start is needed\n // - return both flavors of starting pattern\n // - attach $ at the end of the pattern when creating the actual RegExp\n //\n // Ah, but wait, no, that all only applies to the root when the first pattern\n // is not an extglob. If the first pattern IS an extglob, then we need all\n // that dot prevention biz to live in the extglob portions, because eg\n // +(*|.x*) can match .xy but not .yx.\n //\n // So, return the two flavors if it's #root and the first child is not an\n // AST, otherwise leave it to the child AST to handle it, and there,\n // use the (?:^|/) style of start binding.\n //\n // Even simplified further:\n // - Since the start for a join is eg /(?!\\.) and the start for a part\n // is ^(?!\\.), we can just prepend (?!\\.) to the pattern (either root\n // or start or whatever) and prepend ^ or / at the Regexp construction.\n toRegExpSource(allowDot) {\n const dot = allowDot ?? !!this.#options.dot;\n if (this.#root === this)\n this.#fillNegs();\n if (!this.type) {\n const noEmpty = this.isStart() && this.isEnd();\n const src = this.#parts\n .map(p => {\n const [re, _, hasMagic, uflag] = typeof p === 'string'\n ? AST.#parseGlob(p, this.#hasMagic, noEmpty)\n : p.toRegExpSource(allowDot);\n this.#hasMagic = this.#hasMagic || hasMagic;\n this.#uflag = this.#uflag || uflag;\n return re;\n })\n .join('');\n let start = '';\n if (this.isStart()) {\n if (typeof this.#parts[0] === 'string') {\n // this is the string that will match the start of the pattern,\n // so we need to protect against dots and such.\n // '.' and '..' cannot match unless the pattern is that exactly,\n // even if it starts with . or dot:true is set.\n const dotTravAllowed = this.#parts.length === 1 && justDots.has(this.#parts[0]);\n if (!dotTravAllowed) {\n const aps = addPatternStart;\n // check if we have a possibility of matching . or ..,\n // and prevent that.\n const needNoTrav = \n // dots are allowed, and the pattern starts with [ or .\n (dot && aps.has(src.charAt(0))) ||\n // the pattern starts with \\., and then [ or .\n (src.startsWith('\\\\.') && aps.has(src.charAt(2))) ||\n // the pattern starts with \\.\\., and then [ or .\n (src.startsWith('\\\\.\\\\.') && aps.has(src.charAt(4)));\n // no need to prevent dots if it can't match a dot, or if a\n // sub-pattern will be preventing it anyway.\n const needNoDot = !dot && !allowDot && aps.has(src.charAt(0));\n start = needNoTrav ? startNoTraversal : needNoDot ? startNoDot : '';\n }\n }\n }\n // append the \"end of path portion\" pattern to negation tails\n let end = '';\n if (this.isEnd() &&\n this.#root.#filledNegs &&\n this.#parent?.type === '!') {\n end = '(?:$|\\\\/)';\n }\n const final = start + src + end;\n return [\n final,\n unescape(src),\n (this.#hasMagic = !!this.#hasMagic),\n this.#uflag,\n ];\n }\n // We need to calculate the body *twice* if it's a repeat pattern\n // at the start, once in nodot mode, then again in dot mode, so a\n // pattern like *(?) can match 'x.y'\n const repeated = this.type === '*' || this.type === '+';\n // some kind of extglob\n const start = this.type === '!' ? '(?:(?!(?:' : '(?:';\n let body = this.#partsToRegExp(dot);\n if (this.isStart() && this.isEnd() && !body && this.type !== '!') {\n // invalid extglob, has to at least be *something* present, if it's\n // the entire path portion.\n const s = this.toString();\n this.#parts = [s];\n this.type = null;\n this.#hasMagic = undefined;\n return [s, unescape(this.toString()), false, false];\n }\n // XXX abstract out this map method\n let bodyDotAllowed = !repeated || allowDot || dot || !startNoDot\n ? ''\n : this.#partsToRegExp(true);\n if (bodyDotAllowed === body) {\n bodyDotAllowed = '';\n }\n if (bodyDotAllowed) {\n body = `(?:${body})(?:${bodyDotAllowed})*?`;\n }\n // an empty !() is exactly equivalent to a starNoEmpty\n let final = '';\n if (this.type === '!' && this.#emptyExt) {\n final = (this.isStart() && !dot ? startNoDot : '') + starNoEmpty;\n }\n else {\n const close = this.type === '!'\n ? // !() must match something,but !(x) can match ''\n '))' +\n (this.isStart() && !dot && !allowDot ? startNoDot : '') +\n star +\n ')'\n : this.type === '@'\n ? ')'\n : this.type === '?'\n ? ')?'\n : this.type === '+' && bodyDotAllowed\n ? ')'\n : this.type === '*' && bodyDotAllowed\n ? `)?`\n : `)${this.type}`;\n final = start + body + close;\n }\n return [\n final,\n unescape(body),\n (this.#hasMagic = !!this.#hasMagic),\n this.#uflag,\n ];\n }\n #partsToRegExp(dot) {\n return this.#parts\n .map(p => {\n // extglob ASTs should only contain parent ASTs\n /* c8 ignore start */\n if (typeof p === 'string') {\n throw new Error('string type in extglob ast??');\n }\n /* c8 ignore stop */\n // can ignore hasMagic, because extglobs are already always magic\n const [re, _, _hasMagic, uflag] = p.toRegExpSource(dot);\n this.#uflag = this.#uflag || uflag;\n return re;\n })\n .filter(p => !(this.isStart() && this.isEnd()) || !!p)\n .join('|');\n }\n static #parseGlob(glob, hasMagic, noEmpty = false) {\n let escaping = false;\n let re = '';\n let uflag = false;\n for (let i = 0; i < glob.length; i++) {\n const c = glob.charAt(i);\n if (escaping) {\n escaping = false;\n re += (reSpecials.has(c) ? '\\\\' : '') + c;\n continue;\n }\n if (c === '\\\\') {\n if (i === glob.length - 1) {\n re += '\\\\\\\\';\n }\n else {\n escaping = true;\n }\n continue;\n }\n if (c === '[') {\n const [src, needUflag, consumed, magic] = parseClass(glob, i);\n if (consumed) {\n re += src;\n uflag = uflag || needUflag;\n i += consumed - 1;\n hasMagic = hasMagic || magic;\n continue;\n }\n }\n if (c === '*') {\n if (noEmpty && glob === '*')\n re += starNoEmpty;\n else\n re += star;\n hasMagic = true;\n continue;\n }\n if (c === '?') {\n re += qmark;\n hasMagic = true;\n continue;\n }\n re += regExpEscape(c);\n }\n return [re, unescape(glob), !!hasMagic, uflag];\n }\n}\n//# sourceMappingURL=ast.js.map","// translate the various posix character classes into unicode properties\n// this works across all unicode locales\n// { : [, /u flag required, negated]\nconst posixClasses = {\n '[:alnum:]': ['\\\\p{L}\\\\p{Nl}\\\\p{Nd}', true],\n '[:alpha:]': ['\\\\p{L}\\\\p{Nl}', true],\n '[:ascii:]': ['\\\\x' + '00-\\\\x' + '7f', false],\n '[:blank:]': ['\\\\p{Zs}\\\\t', true],\n '[:cntrl:]': ['\\\\p{Cc}', true],\n '[:digit:]': ['\\\\p{Nd}', true],\n '[:graph:]': ['\\\\p{Z}\\\\p{C}', true, true],\n '[:lower:]': ['\\\\p{Ll}', true],\n '[:print:]': ['\\\\p{C}', true],\n '[:punct:]': ['\\\\p{P}', true],\n '[:space:]': ['\\\\p{Z}\\\\t\\\\r\\\\n\\\\v\\\\f', true],\n '[:upper:]': ['\\\\p{Lu}', true],\n '[:word:]': ['\\\\p{L}\\\\p{Nl}\\\\p{Nd}\\\\p{Pc}', true],\n '[:xdigit:]': ['A-Fa-f0-9', false],\n};\n// only need to escape a few things inside of brace expressions\n// escapes: [ \\ ] -\nconst braceEscape = (s) => s.replace(/[[\\]\\\\-]/g, '\\\\$&');\n// escape all regexp magic characters\nconst regexpEscape = (s) => s.replace(/[-[\\]{}()*+?.,\\\\^$|#\\s]/g, '\\\\$&');\n// everything has already been escaped, we just have to join\nconst rangesToString = (ranges) => ranges.join('');\n// takes a glob string at a posix brace expression, and returns\n// an equivalent regular expression source, and boolean indicating\n// whether the /u flag needs to be applied, and the number of chars\n// consumed to parse the character class.\n// This also removes out of order ranges, and returns ($.) if the\n// entire class just no good.\nexport const parseClass = (glob, position) => {\n const pos = position;\n /* c8 ignore start */\n if (glob.charAt(pos) !== '[') {\n throw new Error('not in a brace expression');\n }\n /* c8 ignore stop */\n const ranges = [];\n const negs = [];\n let i = pos + 1;\n let sawStart = false;\n let uflag = false;\n let escaping = false;\n let negate = false;\n let endPos = pos;\n let rangeStart = '';\n WHILE: while (i < glob.length) {\n const c = glob.charAt(i);\n if ((c === '!' || c === '^') && i === pos + 1) {\n negate = true;\n i++;\n continue;\n }\n if (c === ']' && sawStart && !escaping) {\n endPos = i + 1;\n break;\n }\n sawStart = true;\n if (c === '\\\\') {\n if (!escaping) {\n escaping = true;\n i++;\n continue;\n }\n // escaped \\ char, fall through and treat like normal char\n }\n if (c === '[' && !escaping) {\n // either a posix class, a collation equivalent, or just a [\n for (const [cls, [unip, u, neg]] of Object.entries(posixClasses)) {\n if (glob.startsWith(cls, i)) {\n // invalid, [a-[] is fine, but not [a-[:alpha]]\n if (rangeStart) {\n return ['$.', false, glob.length - pos, true];\n }\n i += cls.length;\n if (neg)\n negs.push(unip);\n else\n ranges.push(unip);\n uflag = uflag || u;\n continue WHILE;\n }\n }\n }\n // now it's just a normal character, effectively\n escaping = false;\n if (rangeStart) {\n // throw this range away if it's not valid, but others\n // can still match.\n if (c > rangeStart) {\n ranges.push(braceEscape(rangeStart) + '-' + braceEscape(c));\n }\n else if (c === rangeStart) {\n ranges.push(braceEscape(c));\n }\n rangeStart = '';\n i++;\n continue;\n }\n // now might be the start of a range.\n // can be either c-d or c-] or c] or c] at this point\n if (glob.startsWith('-]', i + 1)) {\n ranges.push(braceEscape(c + '-'));\n i += 2;\n continue;\n }\n if (glob.startsWith('-', i + 1)) {\n rangeStart = c;\n i += 2;\n continue;\n }\n // not the start of a range, just a single character\n ranges.push(braceEscape(c));\n i++;\n }\n if (endPos < i) {\n // didn't see the end of the class, not a valid class,\n // but might still be valid as a literal match.\n return ['', false, 0, false];\n }\n // if we got no ranges and no negates, then we have a range that\n // cannot possibly match anything, and that poisons the whole glob\n if (!ranges.length && !negs.length) {\n return ['$.', false, glob.length - pos, true];\n }\n // if we got one positive range, and it's a single character, then that's\n // not actually a magic pattern, it's just that one literal character.\n // we should not treat that as \"magic\", we should just return the literal\n // character. [_] is a perfectly valid way to escape glob magic chars.\n if (negs.length === 0 &&\n ranges.length === 1 &&\n /^\\\\?.$/.test(ranges[0]) &&\n !negate) {\n const r = ranges[0].length === 2 ? ranges[0].slice(-1) : ranges[0];\n return [regexpEscape(r), false, endPos - pos, false];\n }\n const sranges = '[' + (negate ? '^' : '') + rangesToString(ranges) + ']';\n const snegs = '[' + (negate ? '' : '^') + rangesToString(negs) + ']';\n const comb = ranges.length && negs.length\n ? '(' + sranges + '|' + snegs + ')'\n : ranges.length\n ? sranges\n : snegs;\n return [comb, uflag, endPos - pos, true];\n};\n//# sourceMappingURL=brace-expressions.js.map","/**\n * Escape all magic characters in a glob pattern.\n *\n * If the {@link windowsPathsNoEscape | GlobOptions.windowsPathsNoEscape}\n * option is used, then characters are escaped by wrapping in `[]`, because\n * a magic character wrapped in a character class can only be satisfied by\n * that exact character. In this mode, `\\` is _not_ escaped, because it is\n * not interpreted as a magic character, but instead as a path separator.\n */\nexport const escape = (s, { windowsPathsNoEscape = false, } = {}) => {\n // don't need to escape +@! because we escape the parens\n // that make those magic, and escaping ! as [!] isn't valid,\n // because [!]] is a valid glob class meaning not ']'.\n return windowsPathsNoEscape\n ? s.replace(/[?*()[\\]]/g, '[$&]')\n : s.replace(/[?*()[\\]\\\\]/g, '\\\\$&');\n};\n//# sourceMappingURL=escape.js.map","import expand from 'brace-expansion';\nimport { assertValidPattern } from './assert-valid-pattern.js';\nimport { AST } from './ast.js';\nimport { escape } from './escape.js';\nimport { unescape } from './unescape.js';\nexport const minimatch = (p, pattern, options = {}) => {\n assertValidPattern(pattern);\n // shortcut: comments match nothing.\n if (!options.nocomment && pattern.charAt(0) === '#') {\n return false;\n }\n return new Minimatch(pattern, options).match(p);\n};\n// Optimized checking for the most common glob patterns.\nconst starDotExtRE = /^\\*+([^+@!?\\*\\[\\(]*)$/;\nconst starDotExtTest = (ext) => (f) => !f.startsWith('.') && f.endsWith(ext);\nconst starDotExtTestDot = (ext) => (f) => f.endsWith(ext);\nconst starDotExtTestNocase = (ext) => {\n ext = ext.toLowerCase();\n return (f) => !f.startsWith('.') && f.toLowerCase().endsWith(ext);\n};\nconst starDotExtTestNocaseDot = (ext) => {\n ext = ext.toLowerCase();\n return (f) => f.toLowerCase().endsWith(ext);\n};\nconst starDotStarRE = /^\\*+\\.\\*+$/;\nconst starDotStarTest = (f) => !f.startsWith('.') && f.includes('.');\nconst starDotStarTestDot = (f) => f !== '.' && f !== '..' && f.includes('.');\nconst dotStarRE = /^\\.\\*+$/;\nconst dotStarTest = (f) => f !== '.' && f !== '..' && f.startsWith('.');\nconst starRE = /^\\*+$/;\nconst starTest = (f) => f.length !== 0 && !f.startsWith('.');\nconst starTestDot = (f) => f.length !== 0 && f !== '.' && f !== '..';\nconst qmarksRE = /^\\?+([^+@!?\\*\\[\\(]*)?$/;\nconst qmarksTestNocase = ([$0, ext = '']) => {\n const noext = qmarksTestNoExt([$0]);\n if (!ext)\n return noext;\n ext = ext.toLowerCase();\n return (f) => noext(f) && f.toLowerCase().endsWith(ext);\n};\nconst qmarksTestNocaseDot = ([$0, ext = '']) => {\n const noext = qmarksTestNoExtDot([$0]);\n if (!ext)\n return noext;\n ext = ext.toLowerCase();\n return (f) => noext(f) && f.toLowerCase().endsWith(ext);\n};\nconst qmarksTestDot = ([$0, ext = '']) => {\n const noext = qmarksTestNoExtDot([$0]);\n return !ext ? noext : (f) => noext(f) && f.endsWith(ext);\n};\nconst qmarksTest = ([$0, ext = '']) => {\n const noext = qmarksTestNoExt([$0]);\n return !ext ? noext : (f) => noext(f) && f.endsWith(ext);\n};\nconst qmarksTestNoExt = ([$0]) => {\n const len = $0.length;\n return (f) => f.length === len && !f.startsWith('.');\n};\nconst qmarksTestNoExtDot = ([$0]) => {\n const len = $0.length;\n return (f) => f.length === len && f !== '.' && f !== '..';\n};\n/* c8 ignore start */\nconst defaultPlatform = (typeof process === 'object' && process\n ? (typeof process.env === 'object' &&\n process.env &&\n process.env.__MINIMATCH_TESTING_PLATFORM__) ||\n process.platform\n : 'posix');\nconst path = {\n win32: { sep: '\\\\' },\n posix: { sep: '/' },\n};\n/* c8 ignore stop */\nexport const sep = defaultPlatform === 'win32' ? path.win32.sep : path.posix.sep;\nminimatch.sep = sep;\nexport const GLOBSTAR = Symbol('globstar **');\nminimatch.GLOBSTAR = GLOBSTAR;\n// any single thing other than /\n// don't need to escape / when using new RegExp()\nconst qmark = '[^/]';\n// * => any number of characters\nconst star = qmark + '*?';\n// ** when dots are allowed. Anything goes, except .. and .\n// not (^ or / followed by one or two dots followed by $ or /),\n// followed by anything, any number of times.\nconst twoStarDot = '(?:(?!(?:\\\\/|^)(?:\\\\.{1,2})($|\\\\/)).)*?';\n// not a ^ or / followed by a dot,\n// followed by anything, any number of times.\nconst twoStarNoDot = '(?:(?!(?:\\\\/|^)\\\\.).)*?';\nexport const filter = (pattern, options = {}) => (p) => minimatch(p, pattern, options);\nminimatch.filter = filter;\nconst ext = (a, b = {}) => Object.assign({}, a, b);\nexport const defaults = (def) => {\n if (!def || typeof def !== 'object' || !Object.keys(def).length) {\n return minimatch;\n }\n const orig = minimatch;\n const m = (p, pattern, options = {}) => orig(p, pattern, ext(def, options));\n return Object.assign(m, {\n Minimatch: class Minimatch extends orig.Minimatch {\n constructor(pattern, options = {}) {\n super(pattern, ext(def, options));\n }\n static defaults(options) {\n return orig.defaults(ext(def, options)).Minimatch;\n }\n },\n AST: class AST extends orig.AST {\n /* c8 ignore start */\n constructor(type, parent, options = {}) {\n super(type, parent, ext(def, options));\n }\n /* c8 ignore stop */\n static fromGlob(pattern, options = {}) {\n return orig.AST.fromGlob(pattern, ext(def, options));\n }\n },\n unescape: (s, options = {}) => orig.unescape(s, ext(def, options)),\n escape: (s, options = {}) => orig.escape(s, ext(def, options)),\n filter: (pattern, options = {}) => orig.filter(pattern, ext(def, options)),\n defaults: (options) => orig.defaults(ext(def, options)),\n makeRe: (pattern, options = {}) => orig.makeRe(pattern, ext(def, options)),\n braceExpand: (pattern, options = {}) => orig.braceExpand(pattern, ext(def, options)),\n match: (list, pattern, options = {}) => orig.match(list, pattern, ext(def, options)),\n sep: orig.sep,\n GLOBSTAR: GLOBSTAR,\n });\n};\nminimatch.defaults = defaults;\n// Brace expansion:\n// a{b,c}d -> abd acd\n// a{b,}c -> abc ac\n// a{0..3}d -> a0d a1d a2d a3d\n// a{b,c{d,e}f}g -> abg acdfg acefg\n// a{b,c}d{e,f}g -> abdeg acdeg abdeg abdfg\n//\n// Invalid sets are not expanded.\n// a{2..}b -> a{2..}b\n// a{b}c -> a{b}c\nexport const braceExpand = (pattern, options = {}) => {\n assertValidPattern(pattern);\n // Thanks to Yeting Li for\n // improving this regexp to avoid a ReDOS vulnerability.\n if (options.nobrace || !/\\{(?:(?!\\{).)*\\}/.test(pattern)) {\n // shortcut. no need to expand.\n return [pattern];\n }\n return expand(pattern);\n};\nminimatch.braceExpand = braceExpand;\n// parse a component of the expanded set.\n// At this point, no pattern may contain \"/\" in it\n// so we're going to return a 2d array, where each entry is the full\n// pattern, split on '/', and then turned into a regular expression.\n// A regexp is made at the end which joins each array with an\n// escaped /, and another full one which joins each regexp with |.\n//\n// Following the lead of Bash 4.1, note that \"**\" only has special meaning\n// when it is the *only* thing in a path portion. Otherwise, any series\n// of * is equivalent to a single *. Globstar behavior is enabled by\n// default, and can be disabled by setting options.noglobstar.\nexport const makeRe = (pattern, options = {}) => new Minimatch(pattern, options).makeRe();\nminimatch.makeRe = makeRe;\nexport const match = (list, pattern, options = {}) => {\n const mm = new Minimatch(pattern, options);\n list = list.filter(f => mm.match(f));\n if (mm.options.nonull && !list.length) {\n list.push(pattern);\n }\n return list;\n};\nminimatch.match = match;\n// replace stuff like \\* with *\nconst globMagic = /[?*]|[+@!]\\(.*?\\)|\\[|\\]/;\nconst regExpEscape = (s) => s.replace(/[-[\\]{}()*+?.,\\\\^$|#\\s]/g, '\\\\$&');\nexport class Minimatch {\n options;\n set;\n pattern;\n windowsPathsNoEscape;\n nonegate;\n negate;\n comment;\n empty;\n preserveMultipleSlashes;\n partial;\n globSet;\n globParts;\n nocase;\n isWindows;\n platform;\n windowsNoMagicRoot;\n regexp;\n constructor(pattern, options = {}) {\n assertValidPattern(pattern);\n options = options || {};\n this.options = options;\n this.pattern = pattern;\n this.platform = options.platform || defaultPlatform;\n this.isWindows = this.platform === 'win32';\n this.windowsPathsNoEscape =\n !!options.windowsPathsNoEscape || options.allowWindowsEscape === false;\n if (this.windowsPathsNoEscape) {\n this.pattern = this.pattern.replace(/\\\\/g, '/');\n }\n this.preserveMultipleSlashes = !!options.preserveMultipleSlashes;\n this.regexp = null;\n this.negate = false;\n this.nonegate = !!options.nonegate;\n this.comment = false;\n this.empty = false;\n this.partial = !!options.partial;\n this.nocase = !!this.options.nocase;\n this.windowsNoMagicRoot =\n options.windowsNoMagicRoot !== undefined\n ? options.windowsNoMagicRoot\n : !!(this.isWindows && this.nocase);\n this.globSet = [];\n this.globParts = [];\n this.set = [];\n // make the set of regexps etc.\n this.make();\n }\n hasMagic() {\n if (this.options.magicalBraces && this.set.length > 1) {\n return true;\n }\n for (const pattern of this.set) {\n for (const part of pattern) {\n if (typeof part !== 'string')\n return true;\n }\n }\n return false;\n }\n debug(..._) { }\n make() {\n const pattern = this.pattern;\n const options = this.options;\n // empty patterns and comments match nothing.\n if (!options.nocomment && pattern.charAt(0) === '#') {\n this.comment = true;\n return;\n }\n if (!pattern) {\n this.empty = true;\n return;\n }\n // step 1: figure out negation, etc.\n this.parseNegate();\n // step 2: expand braces\n this.globSet = [...new Set(this.braceExpand())];\n if (options.debug) {\n this.debug = (...args) => console.error(...args);\n }\n this.debug(this.pattern, this.globSet);\n // step 3: now we have a set, so turn each one into a series of\n // path-portion matching patterns.\n // These will be regexps, except in the case of \"**\", which is\n // set to the GLOBSTAR object for globstar behavior,\n // and will not contain any / characters\n //\n // First, we preprocess to make the glob pattern sets a bit simpler\n // and deduped. There are some perf-killing patterns that can cause\n // problems with a glob walk, but we can simplify them down a bit.\n const rawGlobParts = this.globSet.map(s => this.slashSplit(s));\n this.globParts = this.preprocess(rawGlobParts);\n this.debug(this.pattern, this.globParts);\n // glob --> regexps\n let set = this.globParts.map((s, _, __) => {\n if (this.isWindows && this.windowsNoMagicRoot) {\n // check if it's a drive or unc path.\n const isUNC = s[0] === '' &&\n s[1] === '' &&\n (s[2] === '?' || !globMagic.test(s[2])) &&\n !globMagic.test(s[3]);\n const isDrive = /^[a-z]:/i.test(s[0]);\n if (isUNC) {\n return [...s.slice(0, 4), ...s.slice(4).map(ss => this.parse(ss))];\n }\n else if (isDrive) {\n return [s[0], ...s.slice(1).map(ss => this.parse(ss))];\n }\n }\n return s.map(ss => this.parse(ss));\n });\n this.debug(this.pattern, set);\n // filter out everything that didn't compile properly.\n this.set = set.filter(s => s.indexOf(false) === -1);\n // do not treat the ? in UNC paths as magic\n if (this.isWindows) {\n for (let i = 0; i < this.set.length; i++) {\n const p = this.set[i];\n if (p[0] === '' &&\n p[1] === '' &&\n this.globParts[i][2] === '?' &&\n typeof p[3] === 'string' &&\n /^[a-z]:$/i.test(p[3])) {\n p[2] = '?';\n }\n }\n }\n this.debug(this.pattern, this.set);\n }\n // various transforms to equivalent pattern sets that are\n // faster to process in a filesystem walk. The goal is to\n // eliminate what we can, and push all ** patterns as far\n // to the right as possible, even if it increases the number\n // of patterns that we have to process.\n preprocess(globParts) {\n // if we're not in globstar mode, then turn all ** into *\n if (this.options.noglobstar) {\n for (let i = 0; i < globParts.length; i++) {\n for (let j = 0; j < globParts[i].length; j++) {\n if (globParts[i][j] === '**') {\n globParts[i][j] = '*';\n }\n }\n }\n }\n const { optimizationLevel = 1 } = this.options;\n if (optimizationLevel >= 2) {\n // aggressive optimization for the purpose of fs walking\n globParts = this.firstPhasePreProcess(globParts);\n globParts = this.secondPhasePreProcess(globParts);\n }\n else if (optimizationLevel >= 1) {\n // just basic optimizations to remove some .. parts\n globParts = this.levelOneOptimize(globParts);\n }\n else {\n // just collapse multiple ** portions into one\n globParts = this.adjascentGlobstarOptimize(globParts);\n }\n return globParts;\n }\n // just get rid of adjascent ** portions\n adjascentGlobstarOptimize(globParts) {\n return globParts.map(parts => {\n let gs = -1;\n while (-1 !== (gs = parts.indexOf('**', gs + 1))) {\n let i = gs;\n while (parts[i + 1] === '**') {\n i++;\n }\n if (i !== gs) {\n parts.splice(gs, i - gs);\n }\n }\n return parts;\n });\n }\n // get rid of adjascent ** and resolve .. portions\n levelOneOptimize(globParts) {\n return globParts.map(parts => {\n parts = parts.reduce((set, part) => {\n const prev = set[set.length - 1];\n if (part === '**' && prev === '**') {\n return set;\n }\n if (part === '..') {\n if (prev && prev !== '..' && prev !== '.' && prev !== '**') {\n set.pop();\n return set;\n }\n }\n set.push(part);\n return set;\n }, []);\n return parts.length === 0 ? [''] : parts;\n });\n }\n levelTwoFileOptimize(parts) {\n if (!Array.isArray(parts)) {\n parts = this.slashSplit(parts);\n }\n let didSomething = false;\n do {\n didSomething = false;\n //
// -> 
/\n            if (!this.preserveMultipleSlashes) {\n                for (let i = 1; i < parts.length - 1; i++) {\n                    const p = parts[i];\n                    // don't squeeze out UNC patterns\n                    if (i === 1 && p === '' && parts[0] === '')\n                        continue;\n                    if (p === '.' || p === '') {\n                        didSomething = true;\n                        parts.splice(i, 1);\n                        i--;\n                    }\n                }\n                if (parts[0] === '.' &&\n                    parts.length === 2 &&\n                    (parts[1] === '.' || parts[1] === '')) {\n                    didSomething = true;\n                    parts.pop();\n                }\n            }\n            // 
/

/../ ->

/\n            let dd = 0;\n            while (-1 !== (dd = parts.indexOf('..', dd + 1))) {\n                const p = parts[dd - 1];\n                if (p && p !== '.' && p !== '..' && p !== '**') {\n                    didSomething = true;\n                    parts.splice(dd - 1, 2);\n                    dd -= 2;\n                }\n            }\n        } while (didSomething);\n        return parts.length === 0 ? [''] : parts;\n    }\n    // First phase: single-pattern processing\n    // 
 is 1 or more portions\n    //  is 1 or more portions\n    // 

is any portion other than ., .., '', or **\n // is . or ''\n //\n // **/.. is *brutal* for filesystem walking performance, because\n // it effectively resets the recursive walk each time it occurs,\n // and ** cannot be reduced out by a .. pattern part like a regexp\n // or most strings (other than .., ., and '') can be.\n //\n //

/**/../

/

/ -> {

/../

/

/,

/**/

/

/}\n //

// -> 
/\n    // 
/

/../ ->

/\n    // **/**/ -> **/\n    //\n    // **/*/ -> */**/ <== not valid because ** doesn't follow\n    // this WOULD be allowed if ** did follow symlinks, or * didn't\n    firstPhasePreProcess(globParts) {\n        let didSomething = false;\n        do {\n            didSomething = false;\n            // 
/**/../

/

/ -> {

/../

/

/,

/**/

/

/}\n for (let parts of globParts) {\n let gs = -1;\n while (-1 !== (gs = parts.indexOf('**', gs + 1))) {\n let gss = gs;\n while (parts[gss + 1] === '**') {\n //

/**/**/ -> 
/**/\n                        gss++;\n                    }\n                    // eg, if gs is 2 and gss is 4, that means we have 3 **\n                    // parts, and can remove 2 of them.\n                    if (gss > gs) {\n                        parts.splice(gs + 1, gss - gs);\n                    }\n                    let next = parts[gs + 1];\n                    const p = parts[gs + 2];\n                    const p2 = parts[gs + 3];\n                    if (next !== '..')\n                        continue;\n                    if (!p ||\n                        p === '.' ||\n                        p === '..' ||\n                        !p2 ||\n                        p2 === '.' ||\n                        p2 === '..') {\n                        continue;\n                    }\n                    didSomething = true;\n                    // edit parts in place, and push the new one\n                    parts.splice(gs, 1);\n                    const other = parts.slice(0);\n                    other[gs] = '**';\n                    globParts.push(other);\n                    gs--;\n                }\n                // 
// -> 
/\n                if (!this.preserveMultipleSlashes) {\n                    for (let i = 1; i < parts.length - 1; i++) {\n                        const p = parts[i];\n                        // don't squeeze out UNC patterns\n                        if (i === 1 && p === '' && parts[0] === '')\n                            continue;\n                        if (p === '.' || p === '') {\n                            didSomething = true;\n                            parts.splice(i, 1);\n                            i--;\n                        }\n                    }\n                    if (parts[0] === '.' &&\n                        parts.length === 2 &&\n                        (parts[1] === '.' || parts[1] === '')) {\n                        didSomething = true;\n                        parts.pop();\n                    }\n                }\n                // 
/

/../ ->

/\n                let dd = 0;\n                while (-1 !== (dd = parts.indexOf('..', dd + 1))) {\n                    const p = parts[dd - 1];\n                    if (p && p !== '.' && p !== '..' && p !== '**') {\n                        didSomething = true;\n                        const needDot = dd === 1 && parts[dd + 1] === '**';\n                        const splin = needDot ? ['.'] : [];\n                        parts.splice(dd - 1, 2, ...splin);\n                        if (parts.length === 0)\n                            parts.push('');\n                        dd -= 2;\n                    }\n                }\n            }\n        } while (didSomething);\n        return globParts;\n    }\n    // second phase: multi-pattern dedupes\n    // {
/*/,
/

/} ->

/*/\n    // {
/,
/} -> 
/\n    // {
/**/,
/} -> 
/**/\n    //\n    // {
/**/,
/**/

/} ->

/**/\n    // ^-- not valid because ** doens't follow symlinks\n    secondPhasePreProcess(globParts) {\n        for (let i = 0; i < globParts.length - 1; i++) {\n            for (let j = i + 1; j < globParts.length; j++) {\n                const matched = this.partsMatch(globParts[i], globParts[j], !this.preserveMultipleSlashes);\n                if (matched) {\n                    globParts[i] = [];\n                    globParts[j] = matched;\n                    break;\n                }\n            }\n        }\n        return globParts.filter(gs => gs.length);\n    }\n    partsMatch(a, b, emptyGSMatch = false) {\n        let ai = 0;\n        let bi = 0;\n        let result = [];\n        let which = '';\n        while (ai < a.length && bi < b.length) {\n            if (a[ai] === b[bi]) {\n                result.push(which === 'b' ? b[bi] : a[ai]);\n                ai++;\n                bi++;\n            }\n            else if (emptyGSMatch && a[ai] === '**' && b[bi] === a[ai + 1]) {\n                result.push(a[ai]);\n                ai++;\n            }\n            else if (emptyGSMatch && b[bi] === '**' && a[ai] === b[bi + 1]) {\n                result.push(b[bi]);\n                bi++;\n            }\n            else if (a[ai] === '*' &&\n                b[bi] &&\n                (this.options.dot || !b[bi].startsWith('.')) &&\n                b[bi] !== '**') {\n                if (which === 'b')\n                    return false;\n                which = 'a';\n                result.push(a[ai]);\n                ai++;\n                bi++;\n            }\n            else if (b[bi] === '*' &&\n                a[ai] &&\n                (this.options.dot || !a[ai].startsWith('.')) &&\n                a[ai] !== '**') {\n                if (which === 'a')\n                    return false;\n                which = 'b';\n                result.push(b[bi]);\n                ai++;\n                bi++;\n            }\n            else {\n                return false;\n            }\n        }\n        // if we fall out of the loop, it means they two are identical\n        // as long as their lengths match\n        return a.length === b.length && result;\n    }\n    parseNegate() {\n        if (this.nonegate)\n            return;\n        const pattern = this.pattern;\n        let negate = false;\n        let negateOffset = 0;\n        for (let i = 0; i < pattern.length && pattern.charAt(i) === '!'; i++) {\n            negate = !negate;\n            negateOffset++;\n        }\n        if (negateOffset)\n            this.pattern = pattern.slice(negateOffset);\n        this.negate = negate;\n    }\n    // set partial to true to test if, for example,\n    // \"/a/b\" matches the start of \"/*/b/*/d\"\n    // Partial means, if you run out of file before you run\n    // out of pattern, then that's fine, as long as all\n    // the parts match.\n    matchOne(file, pattern, partial = false) {\n        const options = this.options;\n        // UNC paths like //?/X:/... can match X:/... and vice versa\n        // Drive letters in absolute drive or unc paths are always compared\n        // case-insensitively.\n        if (this.isWindows) {\n            const fileDrive = typeof file[0] === 'string' && /^[a-z]:$/i.test(file[0]);\n            const fileUNC = !fileDrive &&\n                file[0] === '' &&\n                file[1] === '' &&\n                file[2] === '?' &&\n                /^[a-z]:$/i.test(file[3]);\n            const patternDrive = typeof pattern[0] === 'string' && /^[a-z]:$/i.test(pattern[0]);\n            const patternUNC = !patternDrive &&\n                pattern[0] === '' &&\n                pattern[1] === '' &&\n                pattern[2] === '?' &&\n                typeof pattern[3] === 'string' &&\n                /^[a-z]:$/i.test(pattern[3]);\n            const fdi = fileUNC ? 3 : fileDrive ? 0 : undefined;\n            const pdi = patternUNC ? 3 : patternDrive ? 0 : undefined;\n            if (typeof fdi === 'number' && typeof pdi === 'number') {\n                const [fd, pd] = [file[fdi], pattern[pdi]];\n                if (fd.toLowerCase() === pd.toLowerCase()) {\n                    pattern[pdi] = fd;\n                    if (pdi > fdi) {\n                        pattern = pattern.slice(pdi);\n                    }\n                    else if (fdi > pdi) {\n                        file = file.slice(fdi);\n                    }\n                }\n            }\n        }\n        // resolve and reduce . and .. portions in the file as well.\n        // dont' need to do the second phase, because it's only one string[]\n        const { optimizationLevel = 1 } = this.options;\n        if (optimizationLevel >= 2) {\n            file = this.levelTwoFileOptimize(file);\n        }\n        this.debug('matchOne', this, { file, pattern });\n        this.debug('matchOne', file.length, pattern.length);\n        for (var fi = 0, pi = 0, fl = file.length, pl = pattern.length; fi < fl && pi < pl; fi++, pi++) {\n            this.debug('matchOne loop');\n            var p = pattern[pi];\n            var f = file[fi];\n            this.debug(pattern, p, f);\n            // should be impossible.\n            // some invalid regexp stuff in the set.\n            /* c8 ignore start */\n            if (p === false) {\n                return false;\n            }\n            /* c8 ignore stop */\n            if (p === GLOBSTAR) {\n                this.debug('GLOBSTAR', [pattern, p, f]);\n                // \"**\"\n                // a/**/b/**/c would match the following:\n                // a/b/x/y/z/c\n                // a/x/y/z/b/c\n                // a/b/x/b/x/c\n                // a/b/c\n                // To do this, take the rest of the pattern after\n                // the **, and see if it would match the file remainder.\n                // If so, return success.\n                // If not, the ** \"swallows\" a segment, and try again.\n                // This is recursively awful.\n                //\n                // a/**/b/**/c matching a/b/x/y/z/c\n                // - a matches a\n                // - doublestar\n                //   - matchOne(b/x/y/z/c, b/**/c)\n                //     - b matches b\n                //     - doublestar\n                //       - matchOne(x/y/z/c, c) -> no\n                //       - matchOne(y/z/c, c) -> no\n                //       - matchOne(z/c, c) -> no\n                //       - matchOne(c, c) yes, hit\n                var fr = fi;\n                var pr = pi + 1;\n                if (pr === pl) {\n                    this.debug('** at the end');\n                    // a ** at the end will just swallow the rest.\n                    // We have found a match.\n                    // however, it will not swallow /.x, unless\n                    // options.dot is set.\n                    // . and .. are *never* matched by **, for explosively\n                    // exponential reasons.\n                    for (; fi < fl; fi++) {\n                        if (file[fi] === '.' ||\n                            file[fi] === '..' ||\n                            (!options.dot && file[fi].charAt(0) === '.'))\n                            return false;\n                    }\n                    return true;\n                }\n                // ok, let's see if we can swallow whatever we can.\n                while (fr < fl) {\n                    var swallowee = file[fr];\n                    this.debug('\\nglobstar while', file, fr, pattern, pr, swallowee);\n                    // XXX remove this slice.  Just pass the start index.\n                    if (this.matchOne(file.slice(fr), pattern.slice(pr), partial)) {\n                        this.debug('globstar found match!', fr, fl, swallowee);\n                        // found a match.\n                        return true;\n                    }\n                    else {\n                        // can't swallow \".\" or \"..\" ever.\n                        // can only swallow \".foo\" when explicitly asked.\n                        if (swallowee === '.' ||\n                            swallowee === '..' ||\n                            (!options.dot && swallowee.charAt(0) === '.')) {\n                            this.debug('dot detected!', file, fr, pattern, pr);\n                            break;\n                        }\n                        // ** swallows a segment, and continue.\n                        this.debug('globstar swallow a segment, and continue');\n                        fr++;\n                    }\n                }\n                // no match was found.\n                // However, in partial mode, we can't say this is necessarily over.\n                /* c8 ignore start */\n                if (partial) {\n                    // ran out of file\n                    this.debug('\\n>>> no match, partial?', file, fr, pattern, pr);\n                    if (fr === fl) {\n                        return true;\n                    }\n                }\n                /* c8 ignore stop */\n                return false;\n            }\n            // something other than **\n            // non-magic patterns just have to match exactly\n            // patterns with magic have been turned into regexps.\n            let hit;\n            if (typeof p === 'string') {\n                hit = f === p;\n                this.debug('string match', p, f, hit);\n            }\n            else {\n                hit = p.test(f);\n                this.debug('pattern match', p, f, hit);\n            }\n            if (!hit)\n                return false;\n        }\n        // Note: ending in / means that we'll get a final \"\"\n        // at the end of the pattern.  This can only match a\n        // corresponding \"\" at the end of the file.\n        // If the file ends in /, then it can only match a\n        // a pattern that ends in /, unless the pattern just\n        // doesn't have any more for it. But, a/b/ should *not*\n        // match \"a/b/*\", even though \"\" matches against the\n        // [^/]*? pattern, except in partial mode, where it might\n        // simply not be reached yet.\n        // However, a/b/ should still satisfy a/*\n        // now either we fell off the end of the pattern, or we're done.\n        if (fi === fl && pi === pl) {\n            // ran out of pattern and filename at the same time.\n            // an exact hit!\n            return true;\n        }\n        else if (fi === fl) {\n            // ran out of file, but still had pattern left.\n            // this is ok if we're doing the match as part of\n            // a glob fs traversal.\n            return partial;\n        }\n        else if (pi === pl) {\n            // ran out of pattern, still have file left.\n            // this is only acceptable if we're on the very last\n            // empty segment of a file with a trailing slash.\n            // a/* should match a/b/\n            return fi === fl - 1 && file[fi] === '';\n            /* c8 ignore start */\n        }\n        else {\n            // should be unreachable.\n            throw new Error('wtf?');\n        }\n        /* c8 ignore stop */\n    }\n    braceExpand() {\n        return braceExpand(this.pattern, this.options);\n    }\n    parse(pattern) {\n        assertValidPattern(pattern);\n        const options = this.options;\n        // shortcuts\n        if (pattern === '**')\n            return GLOBSTAR;\n        if (pattern === '')\n            return '';\n        // far and away, the most common glob pattern parts are\n        // *, *.*, and *.  Add a fast check method for those.\n        let m;\n        let fastTest = null;\n        if ((m = pattern.match(starRE))) {\n            fastTest = options.dot ? starTestDot : starTest;\n        }\n        else if ((m = pattern.match(starDotExtRE))) {\n            fastTest = (options.nocase\n                ? options.dot\n                    ? starDotExtTestNocaseDot\n                    : starDotExtTestNocase\n                : options.dot\n                    ? starDotExtTestDot\n                    : starDotExtTest)(m[1]);\n        }\n        else if ((m = pattern.match(qmarksRE))) {\n            fastTest = (options.nocase\n                ? options.dot\n                    ? qmarksTestNocaseDot\n                    : qmarksTestNocase\n                : options.dot\n                    ? qmarksTestDot\n                    : qmarksTest)(m);\n        }\n        else if ((m = pattern.match(starDotStarRE))) {\n            fastTest = options.dot ? starDotStarTestDot : starDotStarTest;\n        }\n        else if ((m = pattern.match(dotStarRE))) {\n            fastTest = dotStarTest;\n        }\n        const re = AST.fromGlob(pattern, this.options).toMMPattern();\n        if (fastTest && typeof re === 'object') {\n            // Avoids overriding in frozen environments\n            Reflect.defineProperty(re, 'test', { value: fastTest });\n        }\n        return re;\n    }\n    makeRe() {\n        if (this.regexp || this.regexp === false)\n            return this.regexp;\n        // at this point, this.set is a 2d array of partial\n        // pattern strings, or \"**\".\n        //\n        // It's better to use .match().  This function shouldn't\n        // be used, really, but it's pretty convenient sometimes,\n        // when you just want to work with a regex.\n        const set = this.set;\n        if (!set.length) {\n            this.regexp = false;\n            return this.regexp;\n        }\n        const options = this.options;\n        const twoStar = options.noglobstar\n            ? star\n            : options.dot\n                ? twoStarDot\n                : twoStarNoDot;\n        const flags = new Set(options.nocase ? ['i'] : []);\n        // regexpify non-globstar patterns\n        // if ** is only item, then we just do one twoStar\n        // if ** is first, and there are more, prepend (\\/|twoStar\\/)? to next\n        // if ** is last, append (\\/twoStar|) to previous\n        // if ** is in the middle, append (\\/|\\/twoStar\\/) to previous\n        // then filter out GLOBSTAR symbols\n        let re = set\n            .map(pattern => {\n            const pp = pattern.map(p => {\n                if (p instanceof RegExp) {\n                    for (const f of p.flags.split(''))\n                        flags.add(f);\n                }\n                return typeof p === 'string'\n                    ? regExpEscape(p)\n                    : p === GLOBSTAR\n                        ? GLOBSTAR\n                        : p._src;\n            });\n            pp.forEach((p, i) => {\n                const next = pp[i + 1];\n                const prev = pp[i - 1];\n                if (p !== GLOBSTAR || prev === GLOBSTAR) {\n                    return;\n                }\n                if (prev === undefined) {\n                    if (next !== undefined && next !== GLOBSTAR) {\n                        pp[i + 1] = '(?:\\\\/|' + twoStar + '\\\\/)?' + next;\n                    }\n                    else {\n                        pp[i] = twoStar;\n                    }\n                }\n                else if (next === undefined) {\n                    pp[i - 1] = prev + '(?:\\\\/|' + twoStar + ')?';\n                }\n                else if (next !== GLOBSTAR) {\n                    pp[i - 1] = prev + '(?:\\\\/|\\\\/' + twoStar + '\\\\/)' + next;\n                    pp[i + 1] = GLOBSTAR;\n                }\n            });\n            return pp.filter(p => p !== GLOBSTAR).join('/');\n        })\n            .join('|');\n        // need to wrap in parens if we had more than one thing with |,\n        // otherwise only the first will be anchored to ^ and the last to $\n        const [open, close] = set.length > 1 ? ['(?:', ')'] : ['', ''];\n        // must match entire pattern\n        // ending in a * or ** will make it less strict.\n        re = '^' + open + re + close + '$';\n        // can match anything, as long as it's not this.\n        if (this.negate)\n            re = '^(?!' + re + ').+$';\n        try {\n            this.regexp = new RegExp(re, [...flags].join(''));\n            /* c8 ignore start */\n        }\n        catch (ex) {\n            // should be impossible\n            this.regexp = false;\n        }\n        /* c8 ignore stop */\n        return this.regexp;\n    }\n    slashSplit(p) {\n        // if p starts with // on windows, we preserve that\n        // so that UNC paths aren't broken.  Otherwise, any number of\n        // / characters are coalesced into one, unless\n        // preserveMultipleSlashes is set to true.\n        if (this.preserveMultipleSlashes) {\n            return p.split('/');\n        }\n        else if (this.isWindows && /^\\/\\/[^\\/]+/.test(p)) {\n            // add an extra '' for the one we lose\n            return ['', ...p.split(/\\/+/)];\n        }\n        else {\n            return p.split(/\\/+/);\n        }\n    }\n    match(f, partial = this.partial) {\n        this.debug('match', f, this.pattern);\n        // short-circuit in the case of busted things.\n        // comments, etc.\n        if (this.comment) {\n            return false;\n        }\n        if (this.empty) {\n            return f === '';\n        }\n        if (f === '/' && partial) {\n            return true;\n        }\n        const options = this.options;\n        // windows: need to use /, not \\\n        if (this.isWindows) {\n            f = f.split('\\\\').join('/');\n        }\n        // treat the test path as a set of pathparts.\n        const ff = this.slashSplit(f);\n        this.debug(this.pattern, 'split', ff);\n        // just ONE of the pattern sets in this.set needs to match\n        // in order for it to be valid.  If negating, then just one\n        // match means that we have failed.\n        // Either way, return on the first hit.\n        const set = this.set;\n        this.debug(this.pattern, 'set', set);\n        // Find the basename of the path by looking for the last non-empty segment\n        let filename = ff[ff.length - 1];\n        if (!filename) {\n            for (let i = ff.length - 2; !filename && i >= 0; i--) {\n                filename = ff[i];\n            }\n        }\n        for (let i = 0; i < set.length; i++) {\n            const pattern = set[i];\n            let file = ff;\n            if (options.matchBase && pattern.length === 1) {\n                file = [filename];\n            }\n            const hit = this.matchOne(file, pattern, partial);\n            if (hit) {\n                if (options.flipNegate) {\n                    return true;\n                }\n                return !this.negate;\n            }\n        }\n        // didn't get any hits.  this is success if it's a negative\n        // pattern, failure otherwise.\n        if (options.flipNegate) {\n            return false;\n        }\n        return this.negate;\n    }\n    static defaults(def) {\n        return minimatch.defaults(def).Minimatch;\n    }\n}\n/* c8 ignore start */\nexport { AST } from './ast.js';\nexport { escape } from './escape.js';\nexport { unescape } from './unescape.js';\n/* c8 ignore stop */\nminimatch.AST = AST;\nminimatch.Minimatch = Minimatch;\nminimatch.escape = escape;\nminimatch.unescape = unescape;\n//# sourceMappingURL=index.js.map","/**\n * Un-escape a string that has been escaped with {@link escape}.\n *\n * If the {@link windowsPathsNoEscape} option is used, then square-brace\n * escapes are removed, but not backslash escapes.  For example, it will turn\n * the string `'[*]'` into `*`, but it will not turn `'\\\\*'` into `'*'`,\n * becuase `\\` is a path separator in `windowsPathsNoEscape` mode.\n *\n * When `windowsPathsNoEscape` is not set, then both brace escapes and\n * backslash escapes are removed.\n *\n * Slashes (and backslashes in `windowsPathsNoEscape` mode) cannot be escaped\n * or unescaped.\n */\nexport const unescape = (s, { windowsPathsNoEscape = false, } = {}) => {\n    return windowsPathsNoEscape\n        ? s.replace(/\\[([^\\/\\\\])\\]/g, '$1')\n        : s.replace(/((?!\\\\).|^)\\[([^\\/\\\\])\\]/g, '$1$2').replace(/\\\\([^\\/])/g, '$1');\n};\n//# sourceMappingURL=unescape.js.map","// The module cache\nvar __webpack_module_cache__ = {};\n\n// The require function\nfunction __webpack_require__(moduleId) {\n\t// Check if module is in cache\n\tvar cachedModule = __webpack_module_cache__[moduleId];\n\tif (cachedModule !== undefined) {\n\t\treturn cachedModule.exports;\n\t}\n\t// Create a new module (and put it into the cache)\n\tvar module = __webpack_module_cache__[moduleId] = {\n\t\tid: moduleId,\n\t\tloaded: false,\n\t\texports: {}\n\t};\n\n\t// Execute the module function\n\t__webpack_modules__[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n\t// Flag the module as loaded\n\tmodule.loaded = true;\n\n\t// Return the exports of the module\n\treturn module.exports;\n}\n\n// expose the modules object (__webpack_modules__)\n__webpack_require__.m = __webpack_modules__;\n\n","// getDefaultExport function for compatibility with non-harmony modules\n__webpack_require__.n = (module) => {\n\tvar getter = module && module.__esModule ?\n\t\t() => (module['default']) :\n\t\t() => (module);\n\t__webpack_require__.d(getter, { a: getter });\n\treturn getter;\n};","// define getter functions for harmony exports\n__webpack_require__.d = (exports, definition) => {\n\tfor(var key in definition) {\n\t\tif(__webpack_require__.o(definition, key) && !__webpack_require__.o(exports, key)) {\n\t\t\tObject.defineProperty(exports, key, { enumerable: true, get: definition[key] });\n\t\t}\n\t}\n};","__webpack_require__.f = {};\n// This file contains only the entry chunk.\n// The chunk loading function for additional chunks\n__webpack_require__.e = (chunkId) => {\n\treturn Promise.all(Object.keys(__webpack_require__.f).reduce((promises, key) => {\n\t\t__webpack_require__.f[key](chunkId, promises);\n\t\treturn promises;\n\t}, []));\n};","// This function allow to reference async chunks\n__webpack_require__.u = (chunkId) => {\n\t// return url for filenames based on template\n\treturn \"\" + chunkId + \"-\" + chunkId + \".js?v=\" + {\"1140\":\"dd55e1cf2dab9870eea9\",\"2221\":\"2dad9baace69cfd4a3be\",\"3556\":\"57d00a12b4953e229068\",\"4508\":\"04b1afd183e5ecdd9cae\",\"4906\":\"75718b28aced26adc4af\",\"5448\":\"71cfe268d6f1213c4735\",\"5528\":\"1445efe9cbaf4e4cbcb8\",\"5862\":\"580b9c2e231a9169a12f\",\"6015\":\"8ac07126adf0759a3464\",\"7039\":\"be7eefcb933f99fc5b1f\",\"7859\":\"5bcb1bbacda3204063dd\",\"7910\":\"de857920f8beb5205bbc\",\"8124\":\"75a422293ae2add34a10\",\"8815\":\"0f63c2eb085d7b08be1b\"}[chunkId] + \"\";\n};","__webpack_require__.o = (obj, prop) => (Object.prototype.hasOwnProperty.call(obj, prop))","// define __esModule on exports\n__webpack_require__.r = (exports) => {\n\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n\t}\n\tObject.defineProperty(exports, '__esModule', { value: true });\n};","__webpack_require__.nmd = (module) => {\n\tmodule.paths = [];\n\tif (!module.children) module.children = [];\n\treturn module;\n};","__webpack_require__.j = 2122;","var scriptUrl;\nif (globalThis.importScripts) scriptUrl = globalThis.location + \"\";\nvar document = globalThis.document;\nif (!scriptUrl && document) {\n\tif (document.currentScript && document.currentScript.tagName.toUpperCase() === 'SCRIPT')\n\t\tscriptUrl = document.currentScript.src;\n\tif (!scriptUrl) {\n\t\tvar scripts = document.getElementsByTagName(\"script\");\n\t\tif(scripts.length) {\n\t\t\tvar i = scripts.length - 1;\n\t\t\twhile (i > -1 && (!scriptUrl || !/^http(s?):/.test(scriptUrl))) scriptUrl = scripts[i--].src;\n\t\t}\n\t}\n}\n// When supporting browsers where an automatic publicPath is not supported you must specify an output.publicPath manually via configuration\n// or pass an empty string (\"\") and set the __webpack_public_path__ variable from your code to use your own logic.\nif (!scriptUrl) throw new Error(\"Automatic publicPath is not supported in this browser\");\nscriptUrl = scriptUrl.replace(/^blob:/, \"\").replace(/#.*$/, \"\").replace(/\\?.*$/, \"\").replace(/\\/[^\\/]+$/, \"/\");\n__webpack_require__.p = scriptUrl;","__webpack_require__.b = (typeof document !== 'undefined' && document.baseURI) || self.location.href;\n\n// object to store loaded and loading chunks\n// undefined = chunk not loaded, null = chunk preloaded/prefetched\n// [resolve, reject, Promise] = chunk loading, 0 = chunk loaded\nvar installedChunks = {\n\t2122: 0\n};\n\n__webpack_require__.f.j = (chunkId, promises) => {\n\t\t// JSONP chunk loading for javascript\n\t\tvar installedChunkData = __webpack_require__.o(installedChunks, chunkId) ? installedChunks[chunkId] : undefined;\n\t\tif(installedChunkData !== 0) { // 0 means \"already installed\".\n\n\t\t\t// a Promise means \"currently loading\".\n\t\t\tif(installedChunkData) {\n\t\t\t\tpromises.push(installedChunkData[2]);\n\t\t\t} else {\n\t\t\t\tif(true) { // all chunks have JS\n\t\t\t\t\t// setup Promise in chunk cache\n\t\t\t\t\tvar promise = new Promise((resolve, reject) => (installedChunkData = installedChunks[chunkId] = [resolve, reject]));\n\t\t\t\t\tpromises.push(installedChunkData[2] = promise);\n\n\t\t\t\t\t// start chunk loading\n\t\t\t\t\tvar url = __webpack_require__.p + __webpack_require__.u(chunkId);\n\t\t\t\t\t// create error before stack unwound to get useful stacktrace later\n\t\t\t\t\tvar error = new Error();\n\t\t\t\t\tvar loadingEnded = (event) => {\n\t\t\t\t\t\tif(__webpack_require__.o(installedChunks, chunkId)) {\n\t\t\t\t\t\t\tinstalledChunkData = installedChunks[chunkId];\n\t\t\t\t\t\t\tif(installedChunkData !== 0) installedChunks[chunkId] = undefined;\n\t\t\t\t\t\t\tif(installedChunkData) {\n\t\t\t\t\t\t\t\tvar errorType = event && (event.type === 'load' ? 'missing' : event.type);\n\t\t\t\t\t\t\t\tvar realSrc = event && event.target && event.target.src;\n\t\t\t\t\t\t\t\terror.message = 'Loading chunk ' + chunkId + ' failed.\\n(' + errorType + ': ' + realSrc + ')';\n\t\t\t\t\t\t\t\terror.name = 'ChunkLoadError';\n\t\t\t\t\t\t\t\terror.type = errorType;\n\t\t\t\t\t\t\t\terror.request = realSrc;\n\t\t\t\t\t\t\t\tinstalledChunkData[1](error);\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t};\n\t\t\t\t\t__webpack_require__.l(url, loadingEnded, \"chunk-\" + chunkId, chunkId);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n};\n\n// no prefetching\n\n// no preloaded\n\n// no HMR\n\n// no HMR manifest\n\n__webpack_require__.O.j = (chunkId) => (installedChunks[chunkId] === 0);\n\n// install a JSONP callback for chunk loading\nvar webpackJsonpCallback = (parentChunkLoadingFunction, data) => {\n\tvar [chunkIds, moreModules, runtime] = data;\n\t// add \"moreModules\" to the modules object,\n\t// then flag all \"chunkIds\" as loaded and fire callback\n\tvar moduleId, chunkId, i = 0;\n\tif(chunkIds.some((id) => (installedChunks[id] !== 0))) {\n\t\tfor(moduleId in moreModules) {\n\t\t\tif(__webpack_require__.o(moreModules, moduleId)) {\n\t\t\t\t__webpack_require__.m[moduleId] = moreModules[moduleId];\n\t\t\t}\n\t\t}\n\t\tif(runtime) var result = runtime(__webpack_require__);\n\t}\n\tif(parentChunkLoadingFunction) parentChunkLoadingFunction(data);\n\tfor(;i < chunkIds.length; i++) {\n\t\tchunkId = chunkIds[i];\n\t\tif(__webpack_require__.o(installedChunks, chunkId) && installedChunks[chunkId]) {\n\t\t\tinstalledChunks[chunkId][0]();\n\t\t}\n\t\tinstalledChunks[chunkId] = 0;\n\t}\n\treturn __webpack_require__.O(result);\n}\n\nvar chunkLoadingGlobal = globalThis[\"webpackChunknextcloud_ui_legacy\"] = globalThis[\"webpackChunknextcloud_ui_legacy\"] || [];\nchunkLoadingGlobal.forEach(webpackJsonpCallback.bind(null, 0));\nchunkLoadingGlobal.push = webpackJsonpCallback.bind(null, chunkLoadingGlobal.push.bind(chunkLoadingGlobal));","__webpack_require__.nc = undefined;","// startup\n// Load entry module and return exports\n// This entry module depends on other loaded chunks and execution need to be delayed\nvar __webpack_exports__ = __webpack_require__.O(undefined, [4208], () => (__webpack_require__(83769)))\n__webpack_exports__ = __webpack_require__.O(__webpack_exports__);\n"],"names":["deferred","inProgress","dataWebpackPrefix","getLoggerBuilder","setApp","detectUser","build","client","createClient","getRootPath","setHeaders","token","requesttoken","onRequestTokenUpdate","getRequestToken","generateRemoteUrl","ActivityTabPluginView","ActivityTabPluginInstance","Vue","use","PiniaVuePlugin","__webpack_nonce__","getCSPNonce","tagName","loadState","undefined","OCA","Activity","registerSidebarAction","window","addEventListener","mount","async","el","node","reload","pinia","createPinia","default","ActivityCommentAction","extend","propsData","reloadCallback","resourceId","fileid","logger","info","unmount","$destroy","registerSidebarEntries","limit","offset","data","comments","getComments","resourceType","debug","CommentView","CommentsViewObject","map","comment","_CommentsViewInstance","timestamp","moment","props","creationDateTime","toDate","getTime","element","this","registerSidebarFilter","activity","type","registerSidebarTab","id","displayName","t","iconSvgInline","order","onInit","FilesSidebarTab","mixin","webComponent","wrap","Object","defineProperty","prototype","value","get","customElements","define","DEFAULT_LIMIT","options","resourcePath","join","datetime","toISOString","response","customRequest","method","responseData","text","stat","result","isDetailed","multistatus","responseItems","item","propstat","prop","prepareFileFromProps","toString","getDirectoryFiles","parseXML","processResponsePayload","balanced","a","b","str","RegExp","maybeMatch","r","range","start","end","pre","slice","body","length","post","reg","m","match","begs","beg","left","right","ai","indexOf","bi","i","push","pop","module","exports","freeGlobal","global","InvalidCharacterError","message","Error","name","error","TABLE","REGEX_SPACE_CHARACTERS","base64","input","String","test","c","buffer","padding","output","position","charCodeAt","charAt","replace","bitStorage","bitCounter","fromCharCode","substr","expand","split","escSlash","escOpen","escClose","escComma","escPeriod","escapeBraces","unescapeBraces","Math","random","numeric","parseInt","parseCommaParts","parts","p","postParts","shift","apply","embrace","isPadded","lte","y","gte","isTop","expansions","k","expansion","n","N","isNumericSequence","isAlphaSequence","isSequence","isOptions","x","width","max","incr","abs","pad","some","need","z","Array","j","len","code","cached","http","url","https","key","hasOwnProperty","validateParams","params","parse","protocol","request","cb","call","hasToStringTag","$toString","callBound","isStandardArguments","Symbol","toStringTag","isLegacyArguments","callee","supportsStandardArguments","arguments","isFnRegex","safeRegexTest","getProto","toStr","fnToStr","getGeneratorFunction","fn","GeneratorFunction","hasOwn","gOPD","$exec","isRegexMarker","throwRegexMarker","badStringifier","valueOf","toPrimitive","descriptor","e","_typeof","obj","iterator","constructor","_wrapNativeSuper","Class","_cache","Map","Function","TypeError","has","set","Wrapper","_construct","_getPrototypeOf","create","enumerable","writable","configurable","_setPrototypeOf","Parent","args","Reflect","construct","sham","Proxy","Date","_isNativeReflectConstruct","instance","bind","o","setPrototypeOf","__proto__","getPrototypeOf","ObjectPrototypeMutationError","_Error","_this","Constructor","_classCallCheck","self","ReferenceError","_assertThisInitialized","_possibleConstructorReturn","subClass","superClass","_inherits","traverse","object","path","callback","segments","_loop","idx","currentSegment","v","isArray","index","remainingSegments","pathToHere","concat","_ret","isLastSegment","property","currentObject","currentProperty","nextPropIsNumber","Number","isInteger","nextPropIsArrayWildcard","err","own","isIn","objectInPath","pathExists","validPath","hasMap","mapSizeDescriptor","getOwnPropertyDescriptor","mapSize","mapForEach","forEach","hasSet","Set","setSizeDescriptor","setSize","setForEach","weakMapHas","WeakMap","weakSetHas","WeakSet","weakRefDeref","WeakRef","deref","booleanValueOf","Boolean","objectToString","functionToString","$match","$slice","$replace","$toUpperCase","toUpperCase","$toLowerCase","toLowerCase","$test","$concat","$join","$arrSlice","$floor","floor","bigIntValueOf","BigInt","gOPS","getOwnPropertySymbols","symToString","hasShammedSymbols","isEnumerable","propertyIsEnumerable","gPO","O","addNumericSeparator","num","Infinity","sepRegex","int","intStr","dec","utilInspect","inspectCustom","custom","inspectSymbol","isSymbol","quotes","single","quoteREs","wrapQuotes","s","defaultStyle","opts","style","quoteStyle","quoteChar","quote","canTrustToString","isRegExp","inspect_","depth","seen","maxStringLength","customInspect","indent","numericSeparator","inspectString","bigIntStr","maxDepth","baseIndent","base","prev","getIndent","inspect","from","noIndent","newOpts","f","nameOf","keys","arrObjKeys","symString","markBoxed","HTMLElement","nodeName","getAttribute","attrs","attributes","childNodes","xs","singleLineValues","indentedJoin","isError","cause","isMap","mapParts","collectionOf","isSet","setParts","isWeakMap","weakCollectionOf","isWeakSet","isWeakRef","isNumber","isBigInt","isBoolean","isString","globalThis","isDate","ys","isPlainObject","protoTag","stringTag","tag","l","remaining","trailer","quoteRE","lastIndex","lowbyte","size","entries","lineJoiner","isArr","symMap","syms","util","normalizeArray","allowAboveRoot","res","splitPathRe","posix","posixSplitPath","filename","exec","resolve","resolvedPath","resolvedAbsolute","process","cwd","normalize","isAbsolute","trailingSlash","segment","relative","to","trim","arr","fromParts","toParts","min","samePartsLength","outputParts","_makeLong","dirname","root","dir","basename","ext","extname","format","pathObject","isObject","sep","pathString","allParts","delimiter","nodeType","punycode","maxInt","regexPunycode","regexNonASCII","regexSeparators","errors","stringFromCharCode","RangeError","array","mapDomain","string","ucs2decode","extra","counter","ucs2encode","basicToDigit","codePoint","digitToBasic","digit","flag","adapt","delta","numPoints","firstTime","baseMinusTMin","decode","out","basic","oldi","w","baseMinusT","inputLength","bias","lastIndexOf","splice","encode","handledCPCount","basicLength","q","currentValue","handledCPCountPlusOne","qMinusT","percentTwenties","Format","formatters","RFC1738","RFC3986","stringify","formats","utils","defaults","allowDots","allowEmptyArrays","allowPrototypes","allowSparse","arrayLimit","charset","charsetSentinel","comma","decodeDotInKeys","decoder","duplicates","ignoreQueryPrefix","interpretNumericEntities","parameterLimit","parseArrays","plainObjects","strictDepth","strictNullHandling","throwOnLimitExceeded","$0","numberStr","parseArrayValue","val","currentArrayLength","parseKeys","givenKey","valuesParsed","child","parent","segmentContent","splitKeyIntoSegments","chain","parentKey","leaf","isOverflow","combine","cleanRoot","decodedRoot","isNaN","parseObject","normalizeParseOptions","tempObj","cleanStr","skipIndex","part","bracketEqualsPos","pos","maybeMap","encodedVal","existing","parseValues","newObj","merge","compact","getSideChannel","arrayPrefixGenerators","brackets","prefix","indices","repeat","pushToArray","valueOrArray","toISO","defaultFormat","addQueryPrefix","arrayFormat","commaRoundTrip","encodeDotInKeys","encoder","encodeValuesOnly","filter","formatter","serializeDate","date","skipNulls","sentinel","generateArrayPrefix","sort","sideChannel","tmpSc","step","findFlag","isBuffer","objKeys","values","encodedPrefix","adjustedPrefix","encodedKey","keyPrefix","valueSideChannel","normalizeStringifyOptions","joined","overflowChannel","markOverflow","maxIndex","getMaxIndex","setMaxIndex","hexTable","arrayToObject","source","assign","target","reduce","acc","newIndex","queue","refs","compacted","compactQueue","defaultDecoder","strWithoutPlus","unescape","decodeURIComponent","defaultEncoder","kind","escape","mapped","sourceKeys","mergeTarget","targetItem","encodeURIComponent","pairs","query","parser","port","isRegex","$TypeError","regex","listGetNode","list","isDelete","curr","next","$o","channel","assert","deletedNode","objects","listDelete","listGet","listHas","listSet","GetIntrinsic","$Map","$mapGet","$mapSet","$mapHas","$mapDelete","$mapSize","$m","getSideChannelMap","$WeakMap","$weakMapGet","$weakMapSet","$weakMapHas","$weakMapDelete","$wm","getSideChannelList","makeChannel","$channelData","ClientRequest","statusCodes","defaultProtocol","location","search","host","hostname","headers","req","on","IncomingMessage","Agent","defaultMaxSockets","globalAgent","STATUS_CODES","METHODS","xhr","getXHR","XMLHttpRequest","open","XDomainRequest","checkTypeSupport","responseType","isFunction","fetch","ReadableStream","writableStream","WritableStream","abortController","AbortController","arraybuffer","msstream","mozchunkedarraybuffer","overrideMimeType","capability","inherits","stream","rStates","readyStates","preferBinary","Writable","_opts","_body","_headers","auth","setHeader","Buffer","useFetch","mode","_mode","decideMode","_fetchTimer","_socketTimeout","_socketTimer","_onFinish","lowerName","unsafeHeaders","getHeader","header","removeHeader","_destroyed","timeout","setTimeout","headersObj","Blob","headersList","keyName","signal","controller","_fetchAbortController","requestTimeout","emit","abort","credentials","withCredentials","then","_fetchResponse","_resetTimers","_connect","reason","_xhr","nextTick","ontimeout","setRequestHeader","_response","onreadystatechange","readyState","LOADING","DONE","_onXHRProgress","onprogress","onerror","send","status","statusValid","_write","chunk","encoding","done","clearTimeout","destroy","once","flushHeaders","setNoDelay","setSocketKeepAlive","UNSENT","OPENED","HEADERS_RECEIVED","resetTimers","Readable","rawHeaders","trailers","rawTrailers","statusCode","statusMessage","statusText","write","Promise","reject","_resumeFetch","close","pipeTo","catch","reader","getReader","read","_pos","responseURL","getAllResponseHeaders","matches","_charset","mimeType","charsetMatch","_read","responseText","newData","alloc","Uint8Array","MSStreamReader","byteLength","onload","readAsArrayBuffer","codes","createErrorType","Base","NodeError","_Base","arg1","arg2","arg3","getMessage","oneOf","expected","thing","actual","determiner","msg","this_len","substring","endsWith","arg","objectKeys","Duplex","allowHalfOpen","readable","onend","_writableState","ended","onEndNT","highWaterMark","getBuffer","_readableState","destroyed","PassThrough","Transform","_transform","ReadableState","EElistenerCount","emitter","listeners","Stream","OurUint8Array","debugUtil","debuglog","StringDecoder","createReadableStreamAsyncIterator","BufferList","destroyImpl","getHighWaterMark","_require$codes","ERR_INVALID_ARG_TYPE","ERR_STREAM_PUSH_AFTER_EOF","ERR_METHOD_NOT_IMPLEMENTED","ERR_STREAM_UNSHIFT_AFTER_END_EVENT","errorOrDestroy","kProxyEvents","isDuplex","objectMode","readableObjectMode","pipes","pipesCount","flowing","endEmitted","reading","sync","needReadable","emittedReadable","readableListening","resumeScheduled","paused","emitClose","autoDestroy","defaultEncoding","awaitDrain","readingMore","_destroy","readableAddChunk","addToFront","skipChunkCheck","er","state","emitReadable","emitReadable_","onEofChunk","chunkInvalid","_uint8ArrayToBuffer","addChunk","maybeReadMore","unshift","_undestroy","undestroy","isPaused","setEncoding","enc","head","content","clear","MAX_HWM","howMuchToRead","computeNewHighWaterMark","flow","maybeReadMore_","updateReadableListening","listenerCount","resume","nReadingNextTick","resume_","fromList","ret","first","consume","endReadable","endReadableNT","wState","finished","nOrig","doRead","pipe","dest","pipeOpts","src","endFn","stdout","stderr","unpipe","onunpipe","unpipeInfo","hasUnpiped","removeListener","onclose","onfinish","ondrain","ondata","cleanedUp","needDrain","pipeOnDrain","pause","event","prependListener","_events","dests","ev","addListener","removeAllListeners","asyncIterator","_fromList","iterable","ERR_MULTIPLE_CALLBACK","ERR_TRANSFORM_ALREADY_TRANSFORMING","ERR_TRANSFORM_WITH_LENGTH_0","afterTransform","ts","_transformState","transforming","writecb","writechunk","rs","needTransform","writeencoding","transform","flush","_flush","prefinish","err2","CorkedRequest","entry","finish","corkReq","pendingcb","onCorkedFinish","corkedRequestsFree","WritableState","realHasInstance","internalUtil","deprecate","ERR_STREAM_CANNOT_PIPE","ERR_STREAM_DESTROYED","ERR_STREAM_NULL_VALUES","ERR_STREAM_WRITE_AFTER_END","ERR_UNKNOWN_ENCODING","nop","writableObjectMode","finalCalled","ending","noDecode","decodeStrings","writing","corked","bufferProcessing","onwrite","writelen","onwriteStateUpdate","finishMaybe","errorEmitted","onwriteError","needFinish","bufferedRequest","clearBuffer","afterWrite","lastBufferedRequest","prefinished","bufferedRequestCount","writev","_writev","final","_final","doWrite","onwriteDrain","holder","count","allBuffers","isBuf","callFinal","rState","current","_","hasInstance","writeAfterEnd","validChunk","newChunk","decodeChunk","last","writeOrBuffer","cork","uncork","setDefaultEncoding","endWritable","_Object$setPrototypeO","_defineProperty","prim","hint","_toPrimitive","_toPropertyKey","kLastResolve","kLastReject","kError","kEnded","kLastPromise","kHandlePromise","kStream","createIterResult","readAndResolve","iter","onReadable","AsyncIteratorPrototype","ReadableStreamAsyncIteratorPrototype","promise","lastPromise","wrapForNext","_this2","_Object$create","ownKeys","enumerableOnly","symbols","sym","_objectSpread","getOwnPropertyDescriptors","defineProperties","_defineProperties","copyBuffer","copy","tail","protoProps","allocUnsafe","hasStrings","_getString","_getBuffer","nb","buf","emitErrorAndCloseNT","emitErrorNT","emitCloseNT","readableDestroyed","writableDestroyed","ERR_STREAM_PREMATURE_CLOSE","noop","eos","called","_len","_key","onlegacyfinish","writableEnded","readableEnded","onrequest","isRequest","ERR_MISSING_ARGS","streams","popCallback","destroys","closed","destroyer","ERR_INVALID_OPT_VALUE","duplexKey","hwm","highWaterMarkFrom","isFinite","pipeline","required","qs","controlOrWhitespace","CRHTLF","slashes","protocolre","windowsDriveLetter","trimLeft","rules","address","isSpecial","NaN","ignore","hash","lolcation","loc","finaldestination","Url","pathname","href","scheme","extractProtocol","rest","forwardSlashes","otherSlashes","slashesCount","extracted","instruction","instructions","up","username","password","origin","char","ins","protocolPattern","portPattern","simplePathPattern","unwise","autoEscape","nonHostChars","hostEndingChars","hostnamePartPattern","hostnamePartStart","unsafeProtocol","javascript","hostlessProtocol","slashedProtocol","ftp","gopher","file","querystring","urlParse","parseQueryString","slashesDenoteHost","u","queryIndex","splitter","uSplit","simplePath","proto","lowerProto","atSign","hostEnd","hec","parseHost","ipv6Hostname","hostparts","newpart","validParts","notHost","bit","toASCII","h","ae","esc","qm","resolveObject","rel","tkeys","tk","tkey","rkeys","rk","rkey","relPath","isSourceAbs","isRelAbs","mustEndAbs","removeAllDots","srcPath","psychotic","authInHost","hasTrailingSlash","fill","readUInt8","isArgumentsObject","isGeneratorFunction","whichTypedArray","isTypedArray","uncurryThis","BigIntSupported","SymbolSupported","ObjectToString","numberValue","stringValue","booleanValue","bigIntValue","symbolValue","checkBoxedPrimitive","prototypeValueOf","isMapToString","isSetToString","isWeakMapToString","isWeakSetToString","isArrayBufferToString","isArrayBuffer","ArrayBuffer","working","isDataViewToString","isDataView","DataView","isPromise","isArrayBufferView","isView","isUint8Array","isUint8ClampedArray","isUint16Array","isUint32Array","isInt8Array","isInt16Array","isInt32Array","isFloat32Array","isFloat64Array","isBigInt64Array","isBigUint64Array","SharedArrayBufferCopy","SharedArrayBuffer","isSharedArrayBufferToString","isSharedArrayBuffer","isNumberObject","isStringObject","isBooleanObject","isBigIntObject","isSymbolObject","isAsyncFunction","isMapIterator","isSetIterator","isGeneratorObject","isWebAssemblyCompiledModule","isBoxedPrimitive","isAnyArrayBuffer","descriptors","formatRegExp","JSON","isNull","noDeprecation","warned","throwDeprecation","traceDeprecation","console","trace","debugs","debugEnvRegex","env","NODE_DEBUG","debugEnv","ctx","stylize","stylizeNoColor","colors","showHidden","_extend","isUndefined","stylizeWithColor","formatValue","styleType","styles","recurseTimes","primitive","simple","formatPrimitive","visibleKeys","arrayToHash","getOwnPropertyNames","formatError","braces","toUTCString","formatProperty","formatArray","cur","reduceToSingleString","desc","line","ar","re","d","pid","types","isNullOrUndefined","isNativeError","isPrimitive","months","log","time","getHours","getMinutes","getSeconds","getDate","getMonth","add","kCustomPromisifiedSymbol","callbackifyOnRejected","newReason","promisify","original","promiseResolve","promiseReject","callbackify","callbackified","maybeCb","rej","WorkerGlobalScope","Headers","Request","Response","getIgnoreAttributesFn","ignoreAttributes","attrName","pattern","nameStartChar","regexName","getAllMatches","allmatches","startIndex","isName","isExist","defaultOptions","allowBooleanAttributes","unpairedTags","validate","xmlData","tags","tagFound","reachedRoot","readPI","isWhiteSpace","getErrorObject","getLineNumberForPosition","tagStartPos","readCommentAndCDATA","closingTag","validateTagName","readAttributeStr","attrStr","attrStrStart","isValid","validateAttributeString","tagClosed","otg","openPos","col","afterAmp","validateAmpersand","tagname","angleBracketsCount","startChar","validAttrStrRegxp","attrNames","getPositionFromMatch","validateAttrName","validateNumberAmpersand","lineNumber","lines","attributeNamePrefix","attributesGroupName","textNodeName","cdataPropName","indentBy","suppressEmptyNode","suppressUnpairedNode","suppressBooleanAttributes","tagValueProcessor","attributeValueProcessor","preserveOrder","commentPropName","entities","processEntities","stopNodes","oneListGroup","Builder","isAttribute","ignoreAttributesFn","attrPrefixLen","processTextOrObjNode","indentate","tagEndChar","newLine","level","ajPath","j2x","buildTextValNode","buildObjectNode","startsWith","jObj","arrayNodeName","jPath","attr","buildAttrPairStr","newval","replaceEntitiesValue","arrLen","listTagVal","listTagAttr","textValue","Ks","L","closeTag","tagEndExp","piClosingChar","entity","toXml","jArray","indentation","arrToStr","xmlStr","isPreviousElementTag","tagObj","propName","newJPath","tagText","isStopNode","attStr","attr_to_str","tempInd","piTextNodeName","newIdentation","tagStart","tagValue","includes","attrMap","attrVal","DocTypeReader","suppressValidationErr","readDocType","hasBody","exp","hasSeq","entityName","readEntityExp","regx","readElementExp","readNotationExp","skipWhitespace","validateEntityName","entityValue","readIdentifierVal","notationName","identifierType","publicIdentifier","systemIdentifier","identifierVal","elementName","contentModel","readAttlistExp","attributeName","attributeType","allowedNotations","notation","validTypes","defaultValue","seq","removeNSPrefix","parseTagValue","parseAttributeValue","trimValues","numberParseOptions","hex","leadingZeros","eNotation","alwaysCreateTextNode","htmlEntities","ignoreDeclaration","ignorePiTags","transformTagName","transformAttributeName","updateTag","captureMetaData","buildOptions","OrderedObjParser","currentNode","tagsNodeStack","docTypeEntities","lastEntities","ampEntity","fromCodePoint","addExternalEntities","parseXml","parseTextData","resolveNameSpace","buildAttributesMap","isItStopNode","readStopNodeData","saveTextToParentTag","addChild","stopNodesExact","stopNodesWildcard","stopNodeExp","externalEntities","entKeys","ent","dontTrim","hasAttributes","isLeafNode","escapeEntities","parseValue","attrsRegx","oldVal","aName","newVal","attrCollection","xmlObj","textData","docTypeReader","closeIndex","findClosingIndex","colonIndex","lastTagName","propIndex","tagData","readTagExp","childNode","tagExp","attrExpPresent","endIndex","rawTagName","newTagName","lastTag","tagContent","currentTagName","errMsg","closingIndex","closingChar","attrBoundary","ch","tagExpWithClosingIndex","separatorIndex","trimStart","openTagCount","shouldParse","XMLParser","validationOption","orderedObjParser","orderedResult","addEntity","getMetaDataSymbol","METADATA_SYMBOL","prettify","compress","compressedObj","newJpath","isLeaf","isLeafTag","assignAttributes","jpath","atrrName","propCount","XmlNode","sequence","methods","HOT_PATCHER_TYPE","NOOP","createNewItem","HotPatcher","_configuration","registry","getEmptyAction","__type__","configuration","newAction","control","allowTargetOverrides","foreignKey","execute","isPatched","patch","patchInline","plugin","restore","setFinal","assertError","getGlobalName","Layerr","errorOptionsOrMessage","messageText","shortMessage","super","_info","captureStackTrace","ctor","constructorOpt","_cause","fullStack","stack","parseArguments","hexRegex","numRegex","consider","decimalPoint","toNumber","trimmedStr","skipLike","numStr","parse_int","eNotationRegx","sign","eChar","eAdjacentToLeadingZeros","resolveEnotation","numTrimmedByZeros","decimalAdjacentToLeadingZeros","parsedStr","urlJoin","strArray","resultArray","component","generateBasicAuthHeader","createDigestContext","ha1","nc","algorithm","hasDigestAuth","generateDigestAuthHeader","digest","uri","qop","ncString","realm","nonce","cnonce","ha2","digestResponse","authValues","opaque","authHeader","parseDigestAuth","_digest","responseIndicatesDigestAuth","uid","NONCE_CHARS","makeNonce","setupAuth","context","oauthToken","authType","Auto","Authorization","Digest","None","Password","Token","InvalidAuthType","generateTokenAuthHeader","token_type","access_token","hasArrayBuffer","objToString","isReactNative","TARGET","isWeb","__patcher","getPatcher","DEFAULT_CONTACT_HREF","remoteURL","authTypeRaw","remoteBasePath","contactHref","httpAgent","httpsAgent","parsing","attributeParsers","tagParsers","remotePath","copyFile","destination","createDirectory","createReadStream","createWriteStream","requestOptions","deleteFile","exists","getDirectoryContents","getFileContents","getFileDownloadLink","getFileUploadLink","getHeaders","getQuota","lock","moveFile","destinationFilename","putFileContents","partialUpdateFileContents","filePath","getDAVCompliance","unlock","registerAttributeParser","registerTagParser","Destination","Overwrite","overwrite","Depth","shallow","dirPath","recursive","paths","creating","testPath","createDirectoryRecursively","outStream","PassThroughStream","rangeHeader","Range","responseError","getFileStream","writeStream","maxRedirects","finalOptions","Accept","deep","davResp","_remotePath","files","serverremoteBasePath","requestPath","includeSelf","serverBase","nodes","details","glob","compliance","server","TRANSFORM_RETAIN_FORMAT","InvalidOutputFormat","transformResponse","getFileContentsString","arrayBuffer","getFileContentsBuffer","authPart","authContents","LinkUnsupportedAuthType","quota","DEFAULT_TIMEOUT","refreshToken","Timeout","If","lockPayload","serverTimeout","InvalidUpdateRange","partialUpdateFileContentsSabredav","partialUpdateFileContentsApache","NotSupported","contentLength","getSearch","searchArbiter","results","getStat","prepareRequestOptions","userOptions","requestStandard","ok","requestDigest","requestAuto","response2","patcher","newHeaders","agent","parsedURL","getFetchOptions","createErrorFromResponse","handleResponseCode","processGlobFilter","matchBase","requestDataToFetchBody","ha1Compute","user","pass","ha1Hash","PropertyType","displaynameTagParser","getPropertyOfType","Original","xml","normaliseResponse","normaliseResult","attrValue","processor","getParser","getlastmodified","lastMod","getcontentlength","rawSize","resourcetype","getcontenttype","getetag","etag","collection","lastmod","mime","displayname","parseStat","responseItem","statusLine","statusCodeStr","parseSearch","truncated","translateDiskSpace","fromBase64","toBase64","convertResponseHeaders","mergeHeaders","headerPayloads","headerKeys","lowerHeader","cloneShallow","items","nextItem","mergeObjects","obj1","obj2","SEP_PATH_POSIX","SEP_PATH_WINDOWS","encodePath","replaced","getAllDirectories","directory","currentPath","makePathAbsolute","pathStr","normalisePath","normalisedPath","parseQuota","quotaUsed","quotaAvail","used","available","calculateDataLength","DataTypeNoLength","extractURLPath","fullURL","urlPath","joinURL","nextPart","partIndex","normaliseHREF","generateLockXML","ownerHREF","namespace","lockinfo","lockscope","exclusive","locktype","owner","ns","parseGenericResponse","AuthType","ErrorCode","CharCodes","BinTrieFlags","EntityDecoderState","DecodingMode","codePointAt","EntityLevel","EncodingMode","assertValidPattern","isExtglobType","startNoDot","addPatternStart","justDots","reSpecials","regExpEscape","qmark","star","starNoEmpty","AST","hasMagic","pp","copyIn","toJSON","isStart","isEnd","pl","clone","ast","opt","escaping","inBrace","braceStart","braceNeg","noext","fromGlob","toMMPattern","uflag","toRegExpSource","nocase","nocaseMagicOnly","flags","_src","_glob","allowDot","dot","noEmpty","aps","needNoTrav","needNoDot","repeated","bodyDotAllowed","_hasMagic","needUflag","consumed","magic","posixClasses","braceEscape","rangesToString","ranges","parseClass","negs","sawStart","negate","endPos","rangeStart","WHILE","cls","unip","neg","sranges","snegs","windowsPathsNoEscape","minimatch","nocomment","Minimatch","starDotExtRE","starDotExtTest","starDotExtTestDot","starDotExtTestNocase","starDotExtTestNocaseDot","starDotStarRE","starDotStarTest","starDotStarTestDot","dotStarRE","dotStarTest","starRE","starTest","starTestDot","qmarksRE","qmarksTestNocase","qmarksTestNoExt","qmarksTestNocaseDot","qmarksTestNoExtDot","qmarksTestDot","qmarksTest","defaultPlatform","__MINIMATCH_TESTING_PLATFORM__","platform","GLOBSTAR","def","orig","makeRe","braceExpand","nobrace","mm","nonull","globMagic","nonegate","empty","preserveMultipleSlashes","partial","globSet","globParts","isWindows","windowsNoMagicRoot","regexp","allowWindowsEscape","make","magicalBraces","parseNegate","rawGlobParts","slashSplit","preprocess","__","isUNC","isDrive","ss","noglobstar","optimizationLevel","firstPhasePreProcess","secondPhasePreProcess","levelOneOptimize","adjascentGlobstarOptimize","gs","levelTwoFileOptimize","didSomething","dd","gss","p2","other","splin","matched","partsMatch","emptyGSMatch","which","negateOffset","matchOne","fileDrive","fileUNC","patternDrive","fdi","pdi","fd","pd","fi","pi","fl","fr","pr","swallowee","hit","fastTest","twoStar","ex","ff","flipNegate","__webpack_module_cache__","__webpack_require__","moduleId","cachedModule","loaded","__webpack_modules__","chunkIds","priority","notFulfilled","fulfilled","every","getter","__esModule","definition","chunkId","all","promises","script","needAttach","scripts","document","getElementsByTagName","createElement","setAttribute","onScriptComplete","doneFns","parentNode","removeChild","appendChild","nmd","children","scriptUrl","importScripts","currentScript","baseURI","installedChunks","installedChunkData","errorType","realSrc","webpackJsonpCallback","parentChunkLoadingFunction","moreModules","runtime","chunkLoadingGlobal","__webpack_exports__"],"sourceRoot":""}
\ No newline at end of file
+{"version":3,"file":"comments-comments-tab.js?v=cd17de768e0048e45091","mappings":"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","sources":["webpack:///nextcloud/webpack/runtime/chunk loaded","webpack:///nextcloud/webpack/runtime/load script","webpack:///nextcloud/apps/comments/src/logger.js","webpack:///nextcloud/apps/comments/src/services/DavClient.js","webpack:///nextcloud/apps/comments/src/utils/davUtils.js","webpack:///nextcloud/apps/comments/src/comments-activity-tab.ts","webpack:///nextcloud/apps/comments/src/files-sidebar.ts","webpack:///nextcloud/apps/comments/src/utils/activity.ts","webpack:///nextcloud/apps/comments/src/services/GetComments.ts","webpack:///nextcloud/node_modules/balanced-match/index.js","webpack:///nextcloud/node_modules/base-64/base64.js","webpack:///nextcloud/node_modules/brace-expansion/index.js","webpack:///nextcloud/node_modules/builtin-status-codes/browser.js","webpack:///nextcloud/node_modules/byte-length/dist/index.js","webpack:///nextcloud/node_modules/generator-function/index.js","webpack:///nextcloud/node_modules/https-browserify/index.js","webpack:///nextcloud/node_modules/is-arguments/index.js","webpack:///nextcloud/node_modules/is-generator-function/index.js","webpack:///nextcloud/node_modules/is-regex/index.js","webpack:///nextcloud/node_modules/nested-property/dist/nested-property.js","webpack:///nextcloud/node_modules/object-inspect/index.js","webpack:///nextcloud/node_modules/path-posix/index.js","webpack:///nextcloud/node_modules/punycode/punycode.js","webpack:///nextcloud/node_modules/qs/lib/formats.js","webpack:///nextcloud/node_modules/qs/lib/index.js","webpack:///nextcloud/node_modules/qs/lib/parse.js","webpack:///nextcloud/node_modules/qs/lib/stringify.js","webpack:///nextcloud/node_modules/qs/lib/utils.js","webpack:///nextcloud/node_modules/querystringify/index.js","webpack:///nextcloud/node_modules/requires-port/index.js","webpack:///nextcloud/node_modules/safe-regex-test/index.js","webpack:///nextcloud/node_modules/side-channel-list/index.js","webpack:///nextcloud/node_modules/side-channel-map/index.js","webpack:///nextcloud/node_modules/side-channel-weakmap/index.js","webpack:///nextcloud/node_modules/side-channel/index.js","webpack:///nextcloud/node_modules/stream-http/index.js","webpack:///nextcloud/node_modules/stream-http/lib/capability.js","webpack:///nextcloud/node_modules/stream-http/lib/request.js","webpack:///nextcloud/node_modules/stream-http/lib/response.js","webpack:///nextcloud/node_modules/stream-http/node_modules/readable-stream/errors-browser.js","webpack:///nextcloud/node_modules/stream-http/node_modules/readable-stream/lib/_stream_duplex.js","webpack:///nextcloud/node_modules/stream-http/node_modules/readable-stream/lib/_stream_passthrough.js","webpack:///nextcloud/node_modules/stream-http/node_modules/readable-stream/lib/_stream_readable.js","webpack:///nextcloud/node_modules/stream-http/node_modules/readable-stream/lib/_stream_transform.js","webpack:///nextcloud/node_modules/stream-http/node_modules/readable-stream/lib/_stream_writable.js","webpack:///nextcloud/node_modules/stream-http/node_modules/readable-stream/lib/internal/streams/async_iterator.js","webpack:///nextcloud/node_modules/stream-http/node_modules/readable-stream/lib/internal/streams/buffer_list.js","webpack:///nextcloud/node_modules/stream-http/node_modules/readable-stream/lib/internal/streams/destroy.js","webpack:///nextcloud/node_modules/stream-http/node_modules/readable-stream/lib/internal/streams/end-of-stream.js","webpack:///nextcloud/node_modules/stream-http/node_modules/readable-stream/lib/internal/streams/from-browser.js","webpack:///nextcloud/node_modules/stream-http/node_modules/readable-stream/lib/internal/streams/pipeline.js","webpack:///nextcloud/node_modules/stream-http/node_modules/readable-stream/lib/internal/streams/state.js","webpack:///nextcloud/node_modules/stream-http/node_modules/readable-stream/lib/internal/streams/stream-browser.js","webpack:///nextcloud/node_modules/stream-http/node_modules/readable-stream/readable-browser.js","webpack:///nextcloud/node_modules/url-parse/index.js","webpack:///nextcloud/node_modules/url/url.js","webpack:///nextcloud/node_modules/util/support/isBufferBrowser.js","webpack:///nextcloud/node_modules/util/support/types.js","webpack:///nextcloud/node_modules/util/util.js","webpack:///nextcloud/node_modules/xtend/immutable.js","webpack:///nextcloud/node_modules/@buttercup/fetch/dist/index.browser.js","webpack:///nextcloud/node_modules/fast-xml-parser/src/ignoreAttributes.js","webpack:///nextcloud/node_modules/fast-xml-parser/src/util.js","webpack:///nextcloud/node_modules/fast-xml-parser/src/validator.js","webpack:///nextcloud/node_modules/fast-xml-parser/src/xmlbuilder/json2xml.js","webpack:///nextcloud/node_modules/fast-xml-parser/src/xmlbuilder/orderedJs2Xml.js","webpack:///nextcloud/node_modules/fast-xml-parser/src/xmlparser/DocTypeReader.js","webpack:///nextcloud/node_modules/fast-xml-parser/src/xmlparser/OptionsBuilder.js","webpack:///nextcloud/node_modules/fast-xml-parser/src/xmlparser/OrderedObjParser.js","webpack:///nextcloud/node_modules/fast-xml-parser/src/xmlparser/XMLParser.js","webpack:///nextcloud/node_modules/fast-xml-parser/src/xmlparser/node2json.js","webpack:///nextcloud/node_modules/fast-xml-parser/src/xmlparser/xmlNode.js","webpack:///nextcloud/node_modules/hot-patcher/dist/functions.js","webpack:///nextcloud/node_modules/hot-patcher/dist/patcher.js","webpack:///nextcloud/node_modules/layerr/dist/error.js","webpack:///nextcloud/node_modules/layerr/dist/global.js","webpack:///nextcloud/node_modules/layerr/dist/layerr.js","webpack:///nextcloud/node_modules/layerr/dist/tools.js","webpack:///nextcloud/node_modules/strnum/strnum.js","webpack:///nextcloud/node_modules/url-join/lib/url-join.js","webpack:///nextcloud/node_modules/webdav/dist/node/auth/basic.js","webpack:///nextcloud/node_modules/webdav/dist/node/auth/digest.js","webpack:///nextcloud/node_modules/webdav/dist/node/auth/index.js","webpack:///nextcloud/node_modules/webdav/dist/node/auth/oauth.js","webpack:///nextcloud/node_modules/webdav/dist/node/compat/arrayBuffer.js","webpack:///nextcloud/node_modules/webdav/dist/node/compat/buffer.js","webpack:///nextcloud/node_modules/webdav/dist/node/compat/env.js","webpack:///nextcloud/node_modules/webdav/dist/node/compat/patcher.js","webpack:///nextcloud/node_modules/webdav/dist/node/factory.js","webpack:///nextcloud/node_modules/webdav/dist/node/operations/copyFile.js","webpack:///nextcloud/node_modules/webdav/dist/node/operations/createDirectory.js","webpack:///nextcloud/node_modules/webdav/dist/node/operations/createStream.js","webpack:///nextcloud/node_modules/webdav/dist/node/operations/customRequest.js","webpack:///nextcloud/node_modules/webdav/dist/node/operations/deleteFile.js","webpack:///nextcloud/node_modules/webdav/dist/node/operations/directoryContents.js","webpack:///nextcloud/node_modules/webdav/dist/node/operations/exists.js","webpack:///nextcloud/node_modules/webdav/dist/node/operations/getDAVCompliance.js","webpack:///nextcloud/node_modules/webdav/dist/node/operations/getFileContents.js","webpack:///nextcloud/node_modules/webdav/dist/node/operations/getQuota.js","webpack:///nextcloud/node_modules/webdav/dist/node/operations/lock.js","webpack:///nextcloud/node_modules/webdav/dist/node/operations/moveFile.js","webpack:///nextcloud/node_modules/webdav/dist/node/operations/partialUpdateFileContents.js","webpack:///nextcloud/node_modules/webdav/dist/node/operations/putFileContents.js","webpack:///nextcloud/node_modules/webdav/dist/node/operations/search.js","webpack:///nextcloud/node_modules/webdav/dist/node/operations/stat.js","webpack:///nextcloud/node_modules/webdav/dist/node/request.js","webpack:///nextcloud/node_modules/webdav/dist/node/response.js","webpack:///nextcloud/node_modules/webdav/dist/node/tools/body.js","webpack:///nextcloud/node_modules/webdav/dist/node/tools/crypto.js","webpack:///nextcloud/node_modules/webdav/dist/node/tools/dav.js","webpack:///nextcloud/node_modules/webdav/dist/node/tools/encode.js","webpack:///nextcloud/node_modules/webdav/dist/node/tools/headers.js","webpack:///nextcloud/node_modules/webdav/dist/node/tools/merge.js","webpack:///nextcloud/node_modules/webdav/dist/node/tools/path.js","webpack:///nextcloud/node_modules/webdav/dist/node/tools/quota.js","webpack:///nextcloud/node_modules/webdav/dist/node/tools/size.js","webpack:///nextcloud/node_modules/webdav/dist/node/tools/url.js","webpack:///nextcloud/node_modules/webdav/dist/node/tools/xml.js","webpack:///nextcloud/node_modules/webdav/dist/node/types.js","webpack:///nextcloud/node_modules/webdav/node_modules/entities/dist/esm/decode-codepoint.js","webpack:///nextcloud/node_modules/webdav/node_modules/entities/dist/esm/decode.js","webpack:///nextcloud/node_modules/webdav/node_modules/entities/dist/esm/escape.js","webpack:///nextcloud/node_modules/webdav/node_modules/entities/dist/esm/index.js","webpack:///nextcloud/node_modules/webdav/node_modules/minimatch/dist/esm/assert-valid-pattern.js","webpack:///nextcloud/node_modules/webdav/node_modules/minimatch/dist/esm/ast.js","webpack:///nextcloud/node_modules/webdav/node_modules/minimatch/dist/esm/brace-expressions.js","webpack:///nextcloud/node_modules/webdav/node_modules/minimatch/dist/esm/escape.js","webpack:///nextcloud/node_modules/webdav/node_modules/minimatch/dist/esm/index.js","webpack:///nextcloud/node_modules/webdav/node_modules/minimatch/dist/esm/unescape.js","webpack:///nextcloud/webpack/bootstrap","webpack:///nextcloud/webpack/runtime/compat get default export","webpack:///nextcloud/webpack/runtime/define property getters","webpack:///nextcloud/webpack/runtime/ensure chunk","webpack:///nextcloud/webpack/runtime/get javascript chunk filename","webpack:///nextcloud/webpack/runtime/hasOwnProperty shorthand","webpack:///nextcloud/webpack/runtime/make namespace object","webpack:///nextcloud/webpack/runtime/node module decorator","webpack:///nextcloud/webpack/runtime/runtimeId","webpack:///nextcloud/webpack/runtime/publicPath","webpack:///nextcloud/webpack/runtime/jsonp chunk loading","webpack:///nextcloud/webpack/runtime/nonce","webpack:///nextcloud/webpack/startup"],"sourcesContent":["var deferred = [];\n__webpack_require__.O = (result, chunkIds, fn, priority) => {\n\tif(chunkIds) {\n\t\tpriority = priority || 0;\n\t\tfor(var i = deferred.length; i > 0 && deferred[i - 1][2] > priority; i--) deferred[i] = deferred[i - 1];\n\t\tdeferred[i] = [chunkIds, fn, priority];\n\t\treturn;\n\t}\n\tvar notFulfilled = Infinity;\n\tfor (var i = 0; i < deferred.length; i++) {\n\t\tvar [chunkIds, fn, priority] = deferred[i];\n\t\tvar fulfilled = true;\n\t\tfor (var j = 0; j < chunkIds.length; j++) {\n\t\t\tif ((priority & 1 === 0 || notFulfilled >= priority) && Object.keys(__webpack_require__.O).every((key) => (__webpack_require__.O[key](chunkIds[j])))) {\n\t\t\t\tchunkIds.splice(j--, 1);\n\t\t\t} else {\n\t\t\t\tfulfilled = false;\n\t\t\t\tif(priority < notFulfilled) notFulfilled = priority;\n\t\t\t}\n\t\t}\n\t\tif(fulfilled) {\n\t\t\tdeferred.splice(i--, 1)\n\t\t\tvar r = fn();\n\t\t\tif (r !== undefined) result = r;\n\t\t}\n\t}\n\treturn result;\n};","var inProgress = {};\nvar dataWebpackPrefix = \"nextcloud-ui-legacy:\";\n// loadScript function to load a script via script tag\n__webpack_require__.l = (url, done, key, chunkId) => {\n\tif(inProgress[url]) { inProgress[url].push(done); return; }\n\tvar script, needAttach;\n\tif(key !== undefined) {\n\t\tvar scripts = document.getElementsByTagName(\"script\");\n\t\tfor(var i = 0; i < scripts.length; i++) {\n\t\t\tvar s = scripts[i];\n\t\t\tif(s.getAttribute(\"src\") == url || s.getAttribute(\"data-webpack\") == dataWebpackPrefix + key) { script = s; break; }\n\t\t}\n\t}\n\tif(!script) {\n\t\tneedAttach = true;\n\t\tscript = document.createElement('script');\n\n\t\tscript.charset = 'utf-8';\n\t\tif (__webpack_require__.nc) {\n\t\t\tscript.setAttribute(\"nonce\", __webpack_require__.nc);\n\t\t}\n\t\tscript.setAttribute(\"data-webpack\", dataWebpackPrefix + key);\n\n\t\tscript.src = url;\n\t}\n\tinProgress[url] = [done];\n\tvar onScriptComplete = (prev, event) => {\n\t\t// avoid mem leaks in IE.\n\t\tscript.onerror = script.onload = null;\n\t\tclearTimeout(timeout);\n\t\tvar doneFns = inProgress[url];\n\t\tdelete inProgress[url];\n\t\tscript.parentNode && script.parentNode.removeChild(script);\n\t\tdoneFns && doneFns.forEach((fn) => (fn(event)));\n\t\tif(prev) return prev(event);\n\t}\n\tvar timeout = setTimeout(onScriptComplete.bind(null, undefined, { type: 'timeout', target: script }), 120000);\n\tscript.onerror = onScriptComplete.bind(null, script.onerror);\n\tscript.onload = onScriptComplete.bind(null, script.onload);\n\tneedAttach && document.head.appendChild(script);\n};","/**\n * SPDX-FileCopyrightText: 2023 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\n\nimport { getLoggerBuilder } from '@nextcloud/logger'\n\nexport default getLoggerBuilder()\n\t.setApp('comments')\n\t.detectUser()\n\t.build()\n","/**\n * SPDX-FileCopyrightText: 2021 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\n\nimport { getRequestToken, onRequestTokenUpdate } from '@nextcloud/auth'\nimport { createClient } from 'webdav'\nimport { getRootPath } from '../utils/davUtils.js'\n\n// init webdav client\nconst client = createClient(getRootPath())\n\n// set CSRF token header\n/**\n * @param token\n */\nfunction setHeaders(token) {\n\tclient.setHeaders({\n\t\t// Add this so the server knows it is an request from the browser\n\t\t'X-Requested-With': 'XMLHttpRequest',\n\t\t// Inject user auth\n\t\trequesttoken: token ?? '',\n\t})\n}\n\n// refresh headers when request token changes\nonRequestTokenUpdate(setHeaders)\nsetHeaders(getRequestToken())\n\nexport default client\n","/**\n * SPDX-FileCopyrightText: 2020 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\n\nimport { generateRemoteUrl } from '@nextcloud/router'\n\n/**\n *\n */\nfunction getRootPath() {\n\treturn generateRemoteUrl('dav/comments')\n}\n\nexport { getRootPath }\n","/*!\n * SPDX-FileCopyrightText: 2023 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\nimport moment from '@nextcloud/moment';\nimport { createPinia, PiniaVuePlugin } from 'pinia';\nimport Vue, {} from 'vue';\nimport logger from './logger.js';\nimport { getComments } from './services/GetComments.js';\nVue.use(PiniaVuePlugin);\nlet ActivityTabPluginView;\nlet ActivityTabPluginInstance;\n/**\n * Register the comments plugins for the Activity sidebar\n */\nexport function registerCommentsPlugins() {\n    window.OCA.Activity.registerSidebarAction({\n        mount: async (el, { node, reload }) => {\n            const pinia = createPinia();\n            if (!ActivityTabPluginView) {\n                const { default: ActivityCommentAction } = await import('./views/ActivityCommentAction.vue');\n                // @ts-expect-error Types are broken for Vue2\n                ActivityTabPluginView = Vue.extend(ActivityCommentAction);\n            }\n            ActivityTabPluginInstance = new ActivityTabPluginView({\n                el,\n                pinia,\n                propsData: {\n                    reloadCallback: reload,\n                    resourceId: node.fileid,\n                },\n            });\n            logger.info('Comments plugin mounted in Activity sidebar action', { node });\n        },\n        unmount: () => {\n            // destroy previous instance if available\n            if (ActivityTabPluginInstance) {\n                ActivityTabPluginInstance.$destroy();\n            }\n        },\n    });\n    window.OCA.Activity.registerSidebarEntries(async ({ node, limit, offset }) => {\n        const { data: comments } = await getComments({ resourceType: 'files', resourceId: node.fileid }, {\n            limit,\n            offset: offset ?? 0,\n        });\n        logger.debug('Loaded comments', { node, comments });\n        const { default: CommentView } = await import('./views/ActivityCommentEntry.vue');\n        // @ts-expect-error Types are broken for Vue2\n        const CommentsViewObject = Vue.extend(CommentView);\n        return comments.map((comment) => ({\n            _CommentsViewInstance: undefined,\n            timestamp: moment(comment.props?.creationDateTime).toDate().getTime(),\n            mount(element, { reload }) {\n                this._CommentsViewInstance = new CommentsViewObject({\n                    el: element,\n                    propsData: {\n                        comment,\n                        resourceId: node.fileid,\n                        reloadCallback: reload,\n                    },\n                });\n            },\n            unmount() {\n                this._CommentsViewInstance?.$destroy();\n            },\n        }));\n    });\n    window.OCA.Activity.registerSidebarFilter((activity) => activity.type !== 'comments');\n    logger.info('Comments plugin registered for Activity sidebar action');\n}\n","/*!\n * SPDX-FileCopyrightText: 2020 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\nimport MessageReplyText from '@mdi/svg/svg/message-reply-text.svg?raw';\nimport { getCSPNonce } from '@nextcloud/auth';\nimport { registerSidebarTab } from '@nextcloud/files';\nimport { t } from '@nextcloud/l10n';\nimport wrap from '@vue/web-component-wrapper';\nimport { createPinia, PiniaVuePlugin } from 'pinia';\nimport Vue from 'vue';\nimport { registerCommentsPlugins } from './comments-activity-tab.ts';\nimport { isUsingActivityIntegration } from './utils/activity.ts';\n__webpack_nonce__ = getCSPNonce();\nconst tagName = 'comments_files-sidebar-tab';\nif (isUsingActivityIntegration()) {\n    // Do not mount own tab but mount into activity\n    window.addEventListener('DOMContentLoaded', function () {\n        registerCommentsPlugins();\n    });\n}\nelse {\n    registerSidebarTab({\n        id: 'comments',\n        displayName: t('comments', 'Comments'),\n        iconSvgInline: MessageReplyText,\n        order: 50,\n        tagName,\n        async onInit() {\n            const { default: FilesSidebarTab } = await import('./views/FilesSidebarTab.vue');\n            Vue.use(PiniaVuePlugin);\n            Vue.mixin({ pinia: createPinia() });\n            const webComponent = wrap(Vue, FilesSidebarTab);\n            // In Vue 2, wrap doesn't support disabling shadow. Disable with a hack\n            Object.defineProperty(webComponent.prototype, 'attachShadow', {\n                value() { return this; },\n            });\n            Object.defineProperty(webComponent.prototype, 'shadowRoot', {\n                get() { return this; },\n            });\n            window.customElements.define(tagName, webComponent);\n        },\n    });\n}\n","/*!\n * SPDX-FileCopyrightText: 2026 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\nimport { loadState } from '@nextcloud/initial-state';\n/**\n * Check if the comments app is using the Activity app integration for the sidebar.\n */\nexport function isUsingActivityIntegration() {\n    return loadState('comments', 'activityEnabled', false) && window.OCA?.Activity?.registerSidebarAction !== undefined;\n}\n","/**\n * SPDX-FileCopyrightText: 2020 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\nimport { parseXML } from 'webdav';\nimport { processResponsePayload } from 'webdav/dist/node/response.js';\nimport { prepareFileFromProps } from 'webdav/dist/node/tools/dav.js';\nimport client from './DavClient.js';\nexport const DEFAULT_LIMIT = 20;\n/**\n * Retrieve the comments list\n *\n * @param data destructuring object\n * @param data.resourceType the resource type\n * @param data.resourceId the resource ID\n * @param [options] optional options for axios\n * @param [options.offset] the pagination offset\n * @param [options.limit] the pagination limit, defaults to 20\n * @param [options.datetime] optional date to query\n * @return the comments list\n */\nexport async function getComments({ resourceType, resourceId }, options) {\n    const resourcePath = ['', resourceType, resourceId].join('/');\n    const datetime = options.datetime ? `${options.datetime.toISOString()}` : '';\n    const response = await client.customRequest(resourcePath, {\n        method: 'REPORT',\n        data: `\n\t\t\t\n\t\t\t\t${options.limit ?? DEFAULT_LIMIT}\n\t\t\t\t${options.offset || 0}\n\t\t\t\t${datetime}\n\t\t\t`,\n        ...options,\n    });\n    const responseData = await response.text();\n    const result = await parseXML(responseData);\n    const stat = getDirectoryFiles(result, true);\n    // https://github.com/perry-mitchell/webdav-client/issues/339\n    return processResponsePayload(response, stat, true);\n}\n/**\n * https://github.com/perry-mitchell/webdav-client/blob/8d9694613c978ce7404e26a401c39a41f125f87f/source/operations/directoryContents.ts\n *\n * @param result\n * @param isDetailed\n */\nfunction getDirectoryFiles(result, isDetailed = false) {\n    // Extract the response items (directory contents)\n    const { multistatus: { response: responseItems }, } = result;\n    // Map all items to a consistent output structure (results)\n    return responseItems.map((item) => {\n        // Each item should contain a stat object\n        const props = item.propstat.prop;\n        return prepareFileFromProps(props, props.id.toString(), isDetailed);\n    });\n}\n","'use strict';\nmodule.exports = balanced;\nfunction balanced(a, b, str) {\n  if (a instanceof RegExp) a = maybeMatch(a, str);\n  if (b instanceof RegExp) b = maybeMatch(b, str);\n\n  var r = range(a, b, str);\n\n  return r && {\n    start: r[0],\n    end: r[1],\n    pre: str.slice(0, r[0]),\n    body: str.slice(r[0] + a.length, r[1]),\n    post: str.slice(r[1] + b.length)\n  };\n}\n\nfunction maybeMatch(reg, str) {\n  var m = str.match(reg);\n  return m ? m[0] : null;\n}\n\nbalanced.range = range;\nfunction range(a, b, str) {\n  var begs, beg, left, right, result;\n  var ai = str.indexOf(a);\n  var bi = str.indexOf(b, ai + 1);\n  var i = ai;\n\n  if (ai >= 0 && bi > 0) {\n    if(a===b) {\n      return [ai, bi];\n    }\n    begs = [];\n    left = str.length;\n\n    while (i >= 0 && !result) {\n      if (i == ai) {\n        begs.push(i);\n        ai = str.indexOf(a, i + 1);\n      } else if (begs.length == 1) {\n        result = [ begs.pop(), bi ];\n      } else {\n        beg = begs.pop();\n        if (beg < left) {\n          left = beg;\n          right = bi;\n        }\n\n        bi = str.indexOf(b, i + 1);\n      }\n\n      i = ai < bi && ai >= 0 ? ai : bi;\n    }\n\n    if (begs.length) {\n      result = [ left, right ];\n    }\n  }\n\n  return result;\n}\n","/*! https://mths.be/base64 v1.0.0 by @mathias | MIT license */\n;(function(root) {\n\n\t// Detect free variables `exports`.\n\tvar freeExports = typeof exports == 'object' && exports;\n\n\t// Detect free variable `module`.\n\tvar freeModule = typeof module == 'object' && module &&\n\t\tmodule.exports == freeExports && module;\n\n\t// Detect free variable `global`, from Node.js or Browserified code, and use\n\t// it as `root`.\n\tvar freeGlobal = typeof global == 'object' && global;\n\tif (freeGlobal.global === freeGlobal || freeGlobal.window === freeGlobal) {\n\t\troot = freeGlobal;\n\t}\n\n\t/*--------------------------------------------------------------------------*/\n\n\tvar InvalidCharacterError = function(message) {\n\t\tthis.message = message;\n\t};\n\tInvalidCharacterError.prototype = new Error;\n\tInvalidCharacterError.prototype.name = 'InvalidCharacterError';\n\n\tvar error = function(message) {\n\t\t// Note: the error messages used throughout this file match those used by\n\t\t// the native `atob`/`btoa` implementation in Chromium.\n\t\tthrow new InvalidCharacterError(message);\n\t};\n\n\tvar TABLE = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/';\n\t// http://whatwg.org/html/common-microsyntaxes.html#space-character\n\tvar REGEX_SPACE_CHARACTERS = /[\\t\\n\\f\\r ]/g;\n\n\t// `decode` is designed to be fully compatible with `atob` as described in the\n\t// HTML Standard. http://whatwg.org/html/webappapis.html#dom-windowbase64-atob\n\t// The optimized base64-decoding algorithm used is based on @atk’s excellent\n\t// implementation. https://gist.github.com/atk/1020396\n\tvar decode = function(input) {\n\t\tinput = String(input)\n\t\t\t.replace(REGEX_SPACE_CHARACTERS, '');\n\t\tvar length = input.length;\n\t\tif (length % 4 == 0) {\n\t\t\tinput = input.replace(/==?$/, '');\n\t\t\tlength = input.length;\n\t\t}\n\t\tif (\n\t\t\tlength % 4 == 1 ||\n\t\t\t// http://whatwg.org/C#alphanumeric-ascii-characters\n\t\t\t/[^+a-zA-Z0-9/]/.test(input)\n\t\t) {\n\t\t\terror(\n\t\t\t\t'Invalid character: the string to be decoded is not correctly encoded.'\n\t\t\t);\n\t\t}\n\t\tvar bitCounter = 0;\n\t\tvar bitStorage;\n\t\tvar buffer;\n\t\tvar output = '';\n\t\tvar position = -1;\n\t\twhile (++position < length) {\n\t\t\tbuffer = TABLE.indexOf(input.charAt(position));\n\t\t\tbitStorage = bitCounter % 4 ? bitStorage * 64 + buffer : buffer;\n\t\t\t// Unless this is the first of a group of 4 characters…\n\t\t\tif (bitCounter++ % 4) {\n\t\t\t\t// …convert the first 8 bits to a single ASCII character.\n\t\t\t\toutput += String.fromCharCode(\n\t\t\t\t\t0xFF & bitStorage >> (-2 * bitCounter & 6)\n\t\t\t\t);\n\t\t\t}\n\t\t}\n\t\treturn output;\n\t};\n\n\t// `encode` is designed to be fully compatible with `btoa` as described in the\n\t// HTML Standard: http://whatwg.org/html/webappapis.html#dom-windowbase64-btoa\n\tvar encode = function(input) {\n\t\tinput = String(input);\n\t\tif (/[^\\0-\\xFF]/.test(input)) {\n\t\t\t// Note: no need to special-case astral symbols here, as surrogates are\n\t\t\t// matched, and the input is supposed to only contain ASCII anyway.\n\t\t\terror(\n\t\t\t\t'The string to be encoded contains characters outside of the ' +\n\t\t\t\t'Latin1 range.'\n\t\t\t);\n\t\t}\n\t\tvar padding = input.length % 3;\n\t\tvar output = '';\n\t\tvar position = -1;\n\t\tvar a;\n\t\tvar b;\n\t\tvar c;\n\t\tvar buffer;\n\t\t// Make sure any padding is handled outside of the loop.\n\t\tvar length = input.length - padding;\n\n\t\twhile (++position < length) {\n\t\t\t// Read three bytes, i.e. 24 bits.\n\t\t\ta = input.charCodeAt(position) << 16;\n\t\t\tb = input.charCodeAt(++position) << 8;\n\t\t\tc = input.charCodeAt(++position);\n\t\t\tbuffer = a + b + c;\n\t\t\t// Turn the 24 bits into four chunks of 6 bits each, and append the\n\t\t\t// matching character for each of them to the output.\n\t\t\toutput += (\n\t\t\t\tTABLE.charAt(buffer >> 18 & 0x3F) +\n\t\t\t\tTABLE.charAt(buffer >> 12 & 0x3F) +\n\t\t\t\tTABLE.charAt(buffer >> 6 & 0x3F) +\n\t\t\t\tTABLE.charAt(buffer & 0x3F)\n\t\t\t);\n\t\t}\n\n\t\tif (padding == 2) {\n\t\t\ta = input.charCodeAt(position) << 8;\n\t\t\tb = input.charCodeAt(++position);\n\t\t\tbuffer = a + b;\n\t\t\toutput += (\n\t\t\t\tTABLE.charAt(buffer >> 10) +\n\t\t\t\tTABLE.charAt((buffer >> 4) & 0x3F) +\n\t\t\t\tTABLE.charAt((buffer << 2) & 0x3F) +\n\t\t\t\t'='\n\t\t\t);\n\t\t} else if (padding == 1) {\n\t\t\tbuffer = input.charCodeAt(position);\n\t\t\toutput += (\n\t\t\t\tTABLE.charAt(buffer >> 2) +\n\t\t\t\tTABLE.charAt((buffer << 4) & 0x3F) +\n\t\t\t\t'=='\n\t\t\t);\n\t\t}\n\n\t\treturn output;\n\t};\n\n\tvar base64 = {\n\t\t'encode': encode,\n\t\t'decode': decode,\n\t\t'version': '1.0.0'\n\t};\n\n\t// Some AMD build optimizers, like r.js, check for specific condition patterns\n\t// like the following:\n\tif (\n\t\ttypeof define == 'function' &&\n\t\ttypeof define.amd == 'object' &&\n\t\tdefine.amd\n\t) {\n\t\tdefine(function() {\n\t\t\treturn base64;\n\t\t});\n\t}\telse if (freeExports && !freeExports.nodeType) {\n\t\tif (freeModule) { // in Node.js or RingoJS v0.8.0+\n\t\t\tfreeModule.exports = base64;\n\t\t} else { // in Narwhal or RingoJS v0.7.0-\n\t\t\tfor (var key in base64) {\n\t\t\t\tbase64.hasOwnProperty(key) && (freeExports[key] = base64[key]);\n\t\t\t}\n\t\t}\n\t} else { // in Rhino or a web browser\n\t\troot.base64 = base64;\n\t}\n\n}(this));\n","var balanced = require('balanced-match');\n\nmodule.exports = expandTop;\n\nvar escSlash = '\\0SLASH'+Math.random()+'\\0';\nvar escOpen = '\\0OPEN'+Math.random()+'\\0';\nvar escClose = '\\0CLOSE'+Math.random()+'\\0';\nvar escComma = '\\0COMMA'+Math.random()+'\\0';\nvar escPeriod = '\\0PERIOD'+Math.random()+'\\0';\n\nfunction numeric(str) {\n  return parseInt(str, 10) == str\n    ? parseInt(str, 10)\n    : str.charCodeAt(0);\n}\n\nfunction escapeBraces(str) {\n  return str.split('\\\\\\\\').join(escSlash)\n            .split('\\\\{').join(escOpen)\n            .split('\\\\}').join(escClose)\n            .split('\\\\,').join(escComma)\n            .split('\\\\.').join(escPeriod);\n}\n\nfunction unescapeBraces(str) {\n  return str.split(escSlash).join('\\\\')\n            .split(escOpen).join('{')\n            .split(escClose).join('}')\n            .split(escComma).join(',')\n            .split(escPeriod).join('.');\n}\n\n\n// Basically just str.split(\",\"), but handling cases\n// where we have nested braced sections, which should be\n// treated as individual members, like {a,{b,c},d}\nfunction parseCommaParts(str) {\n  if (!str)\n    return [''];\n\n  var parts = [];\n  var m = balanced('{', '}', str);\n\n  if (!m)\n    return str.split(',');\n\n  var pre = m.pre;\n  var body = m.body;\n  var post = m.post;\n  var p = pre.split(',');\n\n  p[p.length-1] += '{' + body + '}';\n  var postParts = parseCommaParts(post);\n  if (post.length) {\n    p[p.length-1] += postParts.shift();\n    p.push.apply(p, postParts);\n  }\n\n  parts.push.apply(parts, p);\n\n  return parts;\n}\n\nfunction expandTop(str) {\n  if (!str)\n    return [];\n\n  // I don't know why Bash 4.3 does this, but it does.\n  // Anything starting with {} will have the first two bytes preserved\n  // but *only* at the top level, so {},a}b will not expand to anything,\n  // but a{},b}c will be expanded to [a}c,abc].\n  // One could argue that this is a bug in Bash, but since the goal of\n  // this module is to match Bash's rules, we escape a leading {}\n  if (str.substr(0, 2) === '{}') {\n    str = '\\\\{\\\\}' + str.substr(2);\n  }\n\n  return expand(escapeBraces(str), true).map(unescapeBraces);\n}\n\nfunction embrace(str) {\n  return '{' + str + '}';\n}\nfunction isPadded(el) {\n  return /^-?0\\d/.test(el);\n}\n\nfunction lte(i, y) {\n  return i <= y;\n}\nfunction gte(i, y) {\n  return i >= y;\n}\n\nfunction expand(str, isTop) {\n  var expansions = [];\n\n  var m = balanced('{', '}', str);\n  if (!m) return [str];\n\n  // no need to expand pre, since it is guaranteed to be free of brace-sets\n  var pre = m.pre;\n  var post = m.post.length\n    ? expand(m.post, false)\n    : [''];\n\n  if (/\\$$/.test(m.pre)) {    \n    for (var k = 0; k < post.length; k++) {\n      var expansion = pre+ '{' + m.body + '}' + post[k];\n      expansions.push(expansion);\n    }\n  } else {\n    var isNumericSequence = /^-?\\d+\\.\\.-?\\d+(?:\\.\\.-?\\d+)?$/.test(m.body);\n    var isAlphaSequence = /^[a-zA-Z]\\.\\.[a-zA-Z](?:\\.\\.-?\\d+)?$/.test(m.body);\n    var isSequence = isNumericSequence || isAlphaSequence;\n    var isOptions = m.body.indexOf(',') >= 0;\n    if (!isSequence && !isOptions) {\n      // {a},b}\n      if (m.post.match(/,(?!,).*\\}/)) {\n        str = m.pre + '{' + m.body + escClose + m.post;\n        return expand(str);\n      }\n      return [str];\n    }\n\n    var n;\n    if (isSequence) {\n      n = m.body.split(/\\.\\./);\n    } else {\n      n = parseCommaParts(m.body);\n      if (n.length === 1) {\n        // x{{a,b}}y ==> x{a}y x{b}y\n        n = expand(n[0], false).map(embrace);\n        if (n.length === 1) {\n          return post.map(function(p) {\n            return m.pre + n[0] + p;\n          });\n        }\n      }\n    }\n\n    // at this point, n is the parts, and we know it's not a comma set\n    // with a single entry.\n    var N;\n\n    if (isSequence) {\n      var x = numeric(n[0]);\n      var y = numeric(n[1]);\n      var width = Math.max(n[0].length, n[1].length)\n      var incr = n.length == 3\n        ? Math.abs(numeric(n[2]))\n        : 1;\n      var test = lte;\n      var reverse = y < x;\n      if (reverse) {\n        incr *= -1;\n        test = gte;\n      }\n      var pad = n.some(isPadded);\n\n      N = [];\n\n      for (var i = x; test(i, y); i += incr) {\n        var c;\n        if (isAlphaSequence) {\n          c = String.fromCharCode(i);\n          if (c === '\\\\')\n            c = '';\n        } else {\n          c = String(i);\n          if (pad) {\n            var need = width - c.length;\n            if (need > 0) {\n              var z = new Array(need + 1).join('0');\n              if (i < 0)\n                c = '-' + z + c.slice(1);\n              else\n                c = z + c;\n            }\n          }\n        }\n        N.push(c);\n      }\n    } else {\n      N = [];\n\n      for (var j = 0; j < n.length; j++) {\n        N.push.apply(N, expand(n[j], false));\n      }\n    }\n\n    for (var j = 0; j < N.length; j++) {\n      for (var k = 0; k < post.length; k++) {\n        var expansion = pre + N[j] + post[k];\n        if (!isTop || isSequence || expansion)\n          expansions.push(expansion);\n      }\n    }\n  }\n\n  return expansions;\n}\n\n","module.exports = {\n  \"100\": \"Continue\",\n  \"101\": \"Switching Protocols\",\n  \"102\": \"Processing\",\n  \"200\": \"OK\",\n  \"201\": \"Created\",\n  \"202\": \"Accepted\",\n  \"203\": \"Non-Authoritative Information\",\n  \"204\": \"No Content\",\n  \"205\": \"Reset Content\",\n  \"206\": \"Partial Content\",\n  \"207\": \"Multi-Status\",\n  \"208\": \"Already Reported\",\n  \"226\": \"IM Used\",\n  \"300\": \"Multiple Choices\",\n  \"301\": \"Moved Permanently\",\n  \"302\": \"Found\",\n  \"303\": \"See Other\",\n  \"304\": \"Not Modified\",\n  \"305\": \"Use Proxy\",\n  \"307\": \"Temporary Redirect\",\n  \"308\": \"Permanent Redirect\",\n  \"400\": \"Bad Request\",\n  \"401\": \"Unauthorized\",\n  \"402\": \"Payment Required\",\n  \"403\": \"Forbidden\",\n  \"404\": \"Not Found\",\n  \"405\": \"Method Not Allowed\",\n  \"406\": \"Not Acceptable\",\n  \"407\": \"Proxy Authentication Required\",\n  \"408\": \"Request Timeout\",\n  \"409\": \"Conflict\",\n  \"410\": \"Gone\",\n  \"411\": \"Length Required\",\n  \"412\": \"Precondition Failed\",\n  \"413\": \"Payload Too Large\",\n  \"414\": \"URI Too Long\",\n  \"415\": \"Unsupported Media Type\",\n  \"416\": \"Range Not Satisfiable\",\n  \"417\": \"Expectation Failed\",\n  \"418\": \"I'm a teapot\",\n  \"421\": \"Misdirected Request\",\n  \"422\": \"Unprocessable Entity\",\n  \"423\": \"Locked\",\n  \"424\": \"Failed Dependency\",\n  \"425\": \"Unordered Collection\",\n  \"426\": \"Upgrade Required\",\n  \"428\": \"Precondition Required\",\n  \"429\": \"Too Many Requests\",\n  \"431\": \"Request Header Fields Too Large\",\n  \"451\": \"Unavailable For Legal Reasons\",\n  \"500\": \"Internal Server Error\",\n  \"501\": \"Not Implemented\",\n  \"502\": \"Bad Gateway\",\n  \"503\": \"Service Unavailable\",\n  \"504\": \"Gateway Timeout\",\n  \"505\": \"HTTP Version Not Supported\",\n  \"506\": \"Variant Also Negotiates\",\n  \"507\": \"Insufficient Storage\",\n  \"508\": \"Loop Detected\",\n  \"509\": \"Bandwidth Limit Exceeded\",\n  \"510\": \"Not Extended\",\n  \"511\": \"Network Authentication Required\"\n}\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\n/*\n * Calculate the byte lengths for utf8 encoded strings.\n */\nfunction byteLength(str) {\n    if (!str) {\n        return 0;\n    }\n    str = str.toString();\n    var len = str.length;\n    for (var i = str.length; i--;) {\n        var code = str.charCodeAt(i);\n        if (0xdc00 <= code && code <= 0xdfff) {\n            i--;\n        }\n        if (0x7f < code && code <= 0x7ff) {\n            len++;\n        }\n        else if (0x7ff < code && code <= 0xffff) {\n            len += 2;\n        }\n    }\n    return len;\n}\nexports.byteLength = byteLength;\n//# sourceMappingURL=index.js.map","'use strict';\n\n// eslint-disable-next-line no-extra-parens, no-empty-function\nconst cached = /** @type {GeneratorFunctionConstructor} */ (function* () {}.constructor);\n\n/** @type {import('.')} */\nmodule.exports = () => cached;\n\n","var http = require('http')\nvar url = require('url')\n\nvar https = module.exports\n\nfor (var key in http) {\n  if (http.hasOwnProperty(key)) https[key] = http[key]\n}\n\nhttps.request = function (params, cb) {\n  params = validateParams(params)\n  return http.request.call(this, params, cb)\n}\n\nhttps.get = function (params, cb) {\n  params = validateParams(params)\n  return http.get.call(this, params, cb)\n}\n\nfunction validateParams (params) {\n  if (typeof params === 'string') {\n    params = url.parse(params)\n  }\n  if (!params.protocol) {\n    params.protocol = 'https:'\n  }\n  if (params.protocol !== 'https:') {\n    throw new Error('Protocol \"' + params.protocol + '\" not supported. Expected \"https:\"')\n  }\n  return params\n}\n","'use strict';\n\nvar hasToStringTag = require('has-tostringtag/shams')();\nvar callBound = require('call-bound');\n\nvar $toString = callBound('Object.prototype.toString');\n\n/** @type {import('.')} */\nvar isStandardArguments = function isArguments(value) {\n\tif (\n\t\thasToStringTag\n\t\t&& value\n\t\t&& typeof value === 'object'\n\t\t&& Symbol.toStringTag in value\n\t) {\n\t\treturn false;\n\t}\n\treturn $toString(value) === '[object Arguments]';\n};\n\n/** @type {import('.')} */\nvar isLegacyArguments = function isArguments(value) {\n\tif (isStandardArguments(value)) {\n\t\treturn true;\n\t}\n\treturn value !== null\n\t\t&& typeof value === 'object'\n\t\t&& 'length' in value\n\t\t&& typeof value.length === 'number'\n\t\t&& value.length >= 0\n\t\t&& $toString(value) !== '[object Array]'\n\t\t&& 'callee' in value\n\t\t&& $toString(value.callee) === '[object Function]';\n};\n\nvar supportsStandardArguments = (function () {\n\treturn isStandardArguments(arguments);\n}());\n\n// @ts-expect-error TODO make this not error\nisStandardArguments.isLegacyArguments = isLegacyArguments; // for tests\n\n/** @type {import('.')} */\nmodule.exports = supportsStandardArguments ? isStandardArguments : isLegacyArguments;\n","'use strict';\n\nvar callBound = require('call-bound');\nvar safeRegexTest = require('safe-regex-test');\nvar isFnRegex = safeRegexTest(/^\\s*(?:function)?\\*/);\nvar hasToStringTag = require('has-tostringtag/shams')();\nvar getProto = require('get-proto');\n\nvar toStr = callBound('Object.prototype.toString');\nvar fnToStr = callBound('Function.prototype.toString');\n\nvar getGeneratorFunction = require('generator-function');\n\n/** @type {import('.')} */\nmodule.exports = function isGeneratorFunction(fn) {\n\tif (typeof fn !== 'function') {\n\t\treturn false;\n\t}\n\tif (isFnRegex(fnToStr(fn))) {\n\t\treturn true;\n\t}\n\tif (!hasToStringTag) {\n\t\tvar str = toStr(fn);\n\t\treturn str === '[object GeneratorFunction]';\n\t}\n\tif (!getProto) {\n\t\treturn false;\n\t}\n\tvar GeneratorFunction = getGeneratorFunction();\n\treturn GeneratorFunction && getProto(fn) === GeneratorFunction.prototype;\n};\n","'use strict';\n\nvar callBound = require('call-bound');\nvar hasToStringTag = require('has-tostringtag/shams')();\nvar hasOwn = require('hasown');\nvar gOPD = require('gopd');\n\n/** @type {import('.')} */\nvar fn;\n\nif (hasToStringTag) {\n\t/** @type {(receiver: ThisParameterType, ...args: Parameters) => ReturnType} */\n\tvar $exec = callBound('RegExp.prototype.exec');\n\t/** @type {object} */\n\tvar isRegexMarker = {};\n\n\tvar throwRegexMarker = function () {\n\t\tthrow isRegexMarker;\n\t};\n\t/** @type {{ toString(): never, valueOf(): never, [Symbol.toPrimitive]?(): never }} */\n\tvar badStringifier = {\n\t\ttoString: throwRegexMarker,\n\t\tvalueOf: throwRegexMarker\n\t};\n\n\tif (typeof Symbol.toPrimitive === 'symbol') {\n\t\tbadStringifier[Symbol.toPrimitive] = throwRegexMarker;\n\t}\n\n\t/** @type {import('.')} */\n\t// @ts-expect-error TS can't figure out that the $exec call always throws\n\t// eslint-disable-next-line consistent-return\n\tfn = function isRegex(value) {\n\t\tif (!value || typeof value !== 'object') {\n\t\t\treturn false;\n\t\t}\n\n\t\t// eslint-disable-next-line no-extra-parens\n\t\tvar descriptor = /** @type {NonNullable} */ (gOPD)(/** @type {{ lastIndex?: unknown }} */ (value), 'lastIndex');\n\t\tvar hasLastIndexDataProperty = descriptor && hasOwn(descriptor, 'value');\n\t\tif (!hasLastIndexDataProperty) {\n\t\t\treturn false;\n\t\t}\n\n\t\ttry {\n\t\t\t// eslint-disable-next-line no-extra-parens\n\t\t\t$exec(value, /** @type {string} */ (/** @type {unknown} */ (badStringifier)));\n\t\t} catch (e) {\n\t\t\treturn e === isRegexMarker;\n\t\t}\n\t};\n} else {\n\t/** @type {(receiver: ThisParameterType, ...args: Parameters) => ReturnType} */\n\tvar $toString = callBound('Object.prototype.toString');\n\t/** @const @type {'[object RegExp]'} */\n\tvar regexClass = '[object RegExp]';\n\n\t/** @type {import('.')} */\n\tfn = function isRegex(value) {\n\t\t// In older browsers, typeof regex incorrectly returns 'function'\n\t\tif (!value || (typeof value !== 'object' && typeof value !== 'function')) {\n\t\t\treturn false;\n\t\t}\n\n\t\treturn $toString(value) === regexClass;\n\t};\n}\n\nmodule.exports = fn;\n","/**\n* @license nested-property https://github.com/cosmosio/nested-property\n*\n* The MIT License (MIT)\n*\n* Copyright (c) 2014-2020 Olivier Scherrer \n*/\n\"use strict\";\n\nfunction _typeof(obj) { \"@babel/helpers - typeof\"; if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }; } return _typeof(obj); }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === \"object\" || typeof call === \"function\")) { return call; } return _assertThisInitialized(self); }\n\nfunction _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function\"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); if (superClass) _setPrototypeOf(subClass, superClass); }\n\nfunction _wrapNativeSuper(Class) { var _cache = typeof Map === \"function\" ? new Map() : undefined; _wrapNativeSuper = function _wrapNativeSuper(Class) { if (Class === null || !_isNativeFunction(Class)) return Class; if (typeof Class !== \"function\") { throw new TypeError(\"Super expression must either be null or a function\"); } if (typeof _cache !== \"undefined\") { if (_cache.has(Class)) return _cache.get(Class); _cache.set(Class, Wrapper); } function Wrapper() { return _construct(Class, arguments, _getPrototypeOf(this).constructor); } Wrapper.prototype = Object.create(Class.prototype, { constructor: { value: Wrapper, enumerable: false, writable: true, configurable: true } }); return _setPrototypeOf(Wrapper, Class); }; return _wrapNativeSuper(Class); }\n\nfunction _construct(Parent, args, Class) { if (_isNativeReflectConstruct()) { _construct = Reflect.construct; } else { _construct = function _construct(Parent, args, Class) { var a = [null]; a.push.apply(a, args); var Constructor = Function.bind.apply(Parent, a); var instance = new Constructor(); if (Class) _setPrototypeOf(instance, Class.prototype); return instance; }; } return _construct.apply(null, arguments); }\n\nfunction _isNativeReflectConstruct() { if (typeof Reflect === \"undefined\" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === \"function\") return true; try { Date.prototype.toString.call(Reflect.construct(Date, [], function () {})); return true; } catch (e) { return false; } }\n\nfunction _isNativeFunction(fn) { return Function.toString.call(fn).indexOf(\"[native code]\") !== -1; }\n\nfunction _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); }\n\nfunction _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); }\n\nvar ARRAY_WILDCARD = \"+\";\nvar PATH_DELIMITER = \".\";\n\nvar ObjectPrototypeMutationError = /*#__PURE__*/function (_Error) {\n  _inherits(ObjectPrototypeMutationError, _Error);\n\n  function ObjectPrototypeMutationError(params) {\n    var _this;\n\n    _classCallCheck(this, ObjectPrototypeMutationError);\n\n    _this = _possibleConstructorReturn(this, _getPrototypeOf(ObjectPrototypeMutationError).call(this, params));\n    _this.name = \"ObjectPrototypeMutationError\";\n    return _this;\n  }\n\n  return ObjectPrototypeMutationError;\n}(_wrapNativeSuper(Error));\n\nmodule.exports = {\n  set: setNestedProperty,\n  get: getNestedProperty,\n  has: hasNestedProperty,\n  hasOwn: function hasOwn(object, property, options) {\n    return this.has(object, property, options || {\n      own: true\n    });\n  },\n  isIn: isInNestedProperty,\n  ObjectPrototypeMutationError: ObjectPrototypeMutationError\n};\n/**\n * Get the property of an object nested in one or more objects or array\n * Given an object such as a.b.c.d = 5, getNestedProperty(a, \"b.c.d\") will return 5.\n * It also works through arrays. Given a nested array such as a[0].b = 5, getNestedProperty(a, \"0.b\") will return 5.\n * For accessing nested properties through all items in an array, you may use the array wildcard \"+\".\n * For instance, getNestedProperty([{a:1}, {a:2}, {a:3}], \"+.a\") will return [1, 2, 3]\n * @param {Object} object the object to get the property from\n * @param {String} property the path to the property as a string\n * @returns the object or the the property value if found\n */\n\nfunction getNestedProperty(object, property) {\n  if (_typeof(object) != \"object\" || object === null) {\n    return object;\n  }\n\n  if (typeof property == \"undefined\") {\n    return object;\n  }\n\n  if (typeof property == \"number\") {\n    return object[property];\n  }\n\n  try {\n    return traverse(object, property, function _getNestedProperty(currentObject, currentProperty) {\n      return currentObject[currentProperty];\n    });\n  } catch (err) {\n    return object;\n  }\n}\n/**\n * Tell if a nested object has a given property (or array a given index)\n * given an object such as a.b.c.d = 5, hasNestedProperty(a, \"b.c.d\") will return true.\n * It also returns true if the property is in the prototype chain.\n * @param {Object} object the object to get the property from\n * @param {String} property the path to the property as a string\n * @param {Object} options:\n *  - own: set to reject properties from the prototype\n * @returns true if has (property in object), false otherwise\n */\n\n\nfunction hasNestedProperty(object, property) {\n  var options = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};\n\n  if (_typeof(object) != \"object\" || object === null) {\n    return false;\n  }\n\n  if (typeof property == \"undefined\") {\n    return false;\n  }\n\n  if (typeof property == \"number\") {\n    return property in object;\n  }\n\n  try {\n    var has = false;\n    traverse(object, property, function _hasNestedProperty(currentObject, currentProperty, segments, index) {\n      if (isLastSegment(segments, index)) {\n        if (options.own) {\n          has = currentObject.hasOwnProperty(currentProperty);\n        } else {\n          has = currentProperty in currentObject;\n        }\n      } else {\n        return currentObject && currentObject[currentProperty];\n      }\n    });\n    return has;\n  } catch (err) {\n    return false;\n  }\n}\n/**\n * Set the property of an object nested in one or more objects\n * If the property doesn't exist, it gets created.\n * @param {Object} object\n * @param {String} property\n * @param value the value to set\n * @returns object if no assignment was made or the value if the assignment was made\n */\n\n\nfunction setNestedProperty(object, property, value) {\n  if (_typeof(object) != \"object\" || object === null) {\n    return object;\n  }\n\n  if (typeof property == \"undefined\") {\n    return object;\n  }\n\n  if (typeof property == \"number\") {\n    object[property] = value;\n    return object[property];\n  }\n\n  try {\n    return traverse(object, property, function _setNestedProperty(currentObject, currentProperty, segments, index) {\n      if (currentObject === Reflect.getPrototypeOf({})) {\n        throw new ObjectPrototypeMutationError(\"Attempting to mutate Object.prototype\");\n      }\n\n      if (!currentObject[currentProperty]) {\n        var nextPropIsNumber = Number.isInteger(Number(segments[index + 1]));\n        var nextPropIsArrayWildcard = segments[index + 1] === ARRAY_WILDCARD;\n\n        if (nextPropIsNumber || nextPropIsArrayWildcard) {\n          currentObject[currentProperty] = [];\n        } else {\n          currentObject[currentProperty] = {};\n        }\n      }\n\n      if (isLastSegment(segments, index)) {\n        currentObject[currentProperty] = value;\n      }\n\n      return currentObject[currentProperty];\n    });\n  } catch (err) {\n    if (err instanceof ObjectPrototypeMutationError) {\n      // rethrow\n      throw err;\n    } else {\n      return object;\n    }\n  }\n}\n/**\n * Tell if an object is on the path to a nested property\n * If the object is on the path, and the path exists, it returns true, and false otherwise.\n * @param {Object} object to get the nested property from\n * @param {String} property name of the nested property\n * @param {Object} objectInPath the object to check\n * @param {Object} options:\n *  - validPath: return false if the path is invalid, even if the object is in the path\n * @returns {boolean} true if the object is on the path\n */\n\n\nfunction isInNestedProperty(object, property, objectInPath) {\n  var options = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : {};\n\n  if (_typeof(object) != \"object\" || object === null) {\n    return false;\n  }\n\n  if (typeof property == \"undefined\") {\n    return false;\n  }\n\n  try {\n    var isIn = false,\n        pathExists = false;\n    traverse(object, property, function _isInNestedProperty(currentObject, currentProperty, segments, index) {\n      isIn = isIn || currentObject === objectInPath || !!currentObject && currentObject[currentProperty] === objectInPath;\n      pathExists = isLastSegment(segments, index) && _typeof(currentObject) === \"object\" && currentProperty in currentObject;\n      return currentObject && currentObject[currentProperty];\n    });\n\n    if (options.validPath) {\n      return isIn && pathExists;\n    } else {\n      return isIn;\n    }\n  } catch (err) {\n    return false;\n  }\n}\n\nfunction traverse(object, path) {\n  var callback = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : function () {};\n  var segments = path.split(PATH_DELIMITER);\n  var length = segments.length;\n\n  var _loop = function _loop(idx) {\n    var currentSegment = segments[idx];\n\n    if (!object) {\n      return {\n        v: void 0\n      };\n    }\n\n    if (currentSegment === ARRAY_WILDCARD) {\n      if (Array.isArray(object)) {\n        return {\n          v: object.map(function (value, index) {\n            var remainingSegments = segments.slice(idx + 1);\n\n            if (remainingSegments.length > 0) {\n              return traverse(value, remainingSegments.join(PATH_DELIMITER), callback);\n            } else {\n              return callback(object, index, segments, idx);\n            }\n          })\n        };\n      } else {\n        var pathToHere = segments.slice(0, idx).join(PATH_DELIMITER);\n        throw new Error(\"Object at wildcard (\".concat(pathToHere, \") is not an array\"));\n      }\n    } else {\n      object = callback(object, currentSegment, segments, idx);\n    }\n  };\n\n  for (var idx = 0; idx < length; idx++) {\n    var _ret = _loop(idx);\n\n    if (_typeof(_ret) === \"object\") return _ret.v;\n  }\n\n  return object;\n}\n\nfunction isLastSegment(segments, index) {\n  return segments.length === index + 1;\n}\n","var hasMap = typeof Map === 'function' && Map.prototype;\nvar mapSizeDescriptor = Object.getOwnPropertyDescriptor && hasMap ? Object.getOwnPropertyDescriptor(Map.prototype, 'size') : null;\nvar mapSize = hasMap && mapSizeDescriptor && typeof mapSizeDescriptor.get === 'function' ? mapSizeDescriptor.get : null;\nvar mapForEach = hasMap && Map.prototype.forEach;\nvar hasSet = typeof Set === 'function' && Set.prototype;\nvar setSizeDescriptor = Object.getOwnPropertyDescriptor && hasSet ? Object.getOwnPropertyDescriptor(Set.prototype, 'size') : null;\nvar setSize = hasSet && setSizeDescriptor && typeof setSizeDescriptor.get === 'function' ? setSizeDescriptor.get : null;\nvar setForEach = hasSet && Set.prototype.forEach;\nvar hasWeakMap = typeof WeakMap === 'function' && WeakMap.prototype;\nvar weakMapHas = hasWeakMap ? WeakMap.prototype.has : null;\nvar hasWeakSet = typeof WeakSet === 'function' && WeakSet.prototype;\nvar weakSetHas = hasWeakSet ? WeakSet.prototype.has : null;\nvar hasWeakRef = typeof WeakRef === 'function' && WeakRef.prototype;\nvar weakRefDeref = hasWeakRef ? WeakRef.prototype.deref : null;\nvar booleanValueOf = Boolean.prototype.valueOf;\nvar objectToString = Object.prototype.toString;\nvar functionToString = Function.prototype.toString;\nvar $match = String.prototype.match;\nvar $slice = String.prototype.slice;\nvar $replace = String.prototype.replace;\nvar $toUpperCase = String.prototype.toUpperCase;\nvar $toLowerCase = String.prototype.toLowerCase;\nvar $test = RegExp.prototype.test;\nvar $concat = Array.prototype.concat;\nvar $join = Array.prototype.join;\nvar $arrSlice = Array.prototype.slice;\nvar $floor = Math.floor;\nvar bigIntValueOf = typeof BigInt === 'function' ? BigInt.prototype.valueOf : null;\nvar gOPS = Object.getOwnPropertySymbols;\nvar symToString = typeof Symbol === 'function' && typeof Symbol.iterator === 'symbol' ? Symbol.prototype.toString : null;\nvar hasShammedSymbols = typeof Symbol === 'function' && typeof Symbol.iterator === 'object';\n// ie, `has-tostringtag/shams\nvar toStringTag = typeof Symbol === 'function' && Symbol.toStringTag && (typeof Symbol.toStringTag === hasShammedSymbols ? 'object' : 'symbol')\n    ? Symbol.toStringTag\n    : null;\nvar isEnumerable = Object.prototype.propertyIsEnumerable;\n\nvar gPO = (typeof Reflect === 'function' ? Reflect.getPrototypeOf : Object.getPrototypeOf) || (\n    [].__proto__ === Array.prototype // eslint-disable-line no-proto\n        ? function (O) {\n            return O.__proto__; // eslint-disable-line no-proto\n        }\n        : null\n);\n\nfunction addNumericSeparator(num, str) {\n    if (\n        num === Infinity\n        || num === -Infinity\n        || num !== num\n        || (num && num > -1000 && num < 1000)\n        || $test.call(/e/, str)\n    ) {\n        return str;\n    }\n    var sepRegex = /[0-9](?=(?:[0-9]{3})+(?![0-9]))/g;\n    if (typeof num === 'number') {\n        var int = num < 0 ? -$floor(-num) : $floor(num); // trunc(num)\n        if (int !== num) {\n            var intStr = String(int);\n            var dec = $slice.call(str, intStr.length + 1);\n            return $replace.call(intStr, sepRegex, '$&_') + '.' + $replace.call($replace.call(dec, /([0-9]{3})/g, '$&_'), /_$/, '');\n        }\n    }\n    return $replace.call(str, sepRegex, '$&_');\n}\n\nvar utilInspect = require('./util.inspect');\nvar inspectCustom = utilInspect.custom;\nvar inspectSymbol = isSymbol(inspectCustom) ? inspectCustom : null;\n\nvar quotes = {\n    __proto__: null,\n    'double': '\"',\n    single: \"'\"\n};\nvar quoteREs = {\n    __proto__: null,\n    'double': /([\"\\\\])/g,\n    single: /(['\\\\])/g\n};\n\nmodule.exports = function inspect_(obj, options, depth, seen) {\n    var opts = options || {};\n\n    if (has(opts, 'quoteStyle') && !has(quotes, opts.quoteStyle)) {\n        throw new TypeError('option \"quoteStyle\" must be \"single\" or \"double\"');\n    }\n    if (\n        has(opts, 'maxStringLength') && (typeof opts.maxStringLength === 'number'\n            ? opts.maxStringLength < 0 && opts.maxStringLength !== Infinity\n            : opts.maxStringLength !== null\n        )\n    ) {\n        throw new TypeError('option \"maxStringLength\", if provided, must be a positive integer, Infinity, or `null`');\n    }\n    var customInspect = has(opts, 'customInspect') ? opts.customInspect : true;\n    if (typeof customInspect !== 'boolean' && customInspect !== 'symbol') {\n        throw new TypeError('option \"customInspect\", if provided, must be `true`, `false`, or `\\'symbol\\'`');\n    }\n\n    if (\n        has(opts, 'indent')\n        && opts.indent !== null\n        && opts.indent !== '\\t'\n        && !(parseInt(opts.indent, 10) === opts.indent && opts.indent > 0)\n    ) {\n        throw new TypeError('option \"indent\" must be \"\\\\t\", an integer > 0, or `null`');\n    }\n    if (has(opts, 'numericSeparator') && typeof opts.numericSeparator !== 'boolean') {\n        throw new TypeError('option \"numericSeparator\", if provided, must be `true` or `false`');\n    }\n    var numericSeparator = opts.numericSeparator;\n\n    if (typeof obj === 'undefined') {\n        return 'undefined';\n    }\n    if (obj === null) {\n        return 'null';\n    }\n    if (typeof obj === 'boolean') {\n        return obj ? 'true' : 'false';\n    }\n\n    if (typeof obj === 'string') {\n        return inspectString(obj, opts);\n    }\n    if (typeof obj === 'number') {\n        if (obj === 0) {\n            return Infinity / obj > 0 ? '0' : '-0';\n        }\n        var str = String(obj);\n        return numericSeparator ? addNumericSeparator(obj, str) : str;\n    }\n    if (typeof obj === 'bigint') {\n        var bigIntStr = String(obj) + 'n';\n        return numericSeparator ? addNumericSeparator(obj, bigIntStr) : bigIntStr;\n    }\n\n    var maxDepth = typeof opts.depth === 'undefined' ? 5 : opts.depth;\n    if (typeof depth === 'undefined') { depth = 0; }\n    if (depth >= maxDepth && maxDepth > 0 && typeof obj === 'object') {\n        return isArray(obj) ? '[Array]' : '[Object]';\n    }\n\n    var indent = getIndent(opts, depth);\n\n    if (typeof seen === 'undefined') {\n        seen = [];\n    } else if (indexOf(seen, obj) >= 0) {\n        return '[Circular]';\n    }\n\n    function inspect(value, from, noIndent) {\n        if (from) {\n            seen = $arrSlice.call(seen);\n            seen.push(from);\n        }\n        if (noIndent) {\n            var newOpts = {\n                depth: opts.depth\n            };\n            if (has(opts, 'quoteStyle')) {\n                newOpts.quoteStyle = opts.quoteStyle;\n            }\n            return inspect_(value, newOpts, depth + 1, seen);\n        }\n        return inspect_(value, opts, depth + 1, seen);\n    }\n\n    if (typeof obj === 'function' && !isRegExp(obj)) { // in older engines, regexes are callable\n        var name = nameOf(obj);\n        var keys = arrObjKeys(obj, inspect);\n        return '[Function' + (name ? ': ' + name : ' (anonymous)') + ']' + (keys.length > 0 ? ' { ' + $join.call(keys, ', ') + ' }' : '');\n    }\n    if (isSymbol(obj)) {\n        var symString = hasShammedSymbols ? $replace.call(String(obj), /^(Symbol\\(.*\\))_[^)]*$/, '$1') : symToString.call(obj);\n        return typeof obj === 'object' && !hasShammedSymbols ? markBoxed(symString) : symString;\n    }\n    if (isElement(obj)) {\n        var s = '<' + $toLowerCase.call(String(obj.nodeName));\n        var attrs = obj.attributes || [];\n        for (var i = 0; i < attrs.length; i++) {\n            s += ' ' + attrs[i].name + '=' + wrapQuotes(quote(attrs[i].value), 'double', opts);\n        }\n        s += '>';\n        if (obj.childNodes && obj.childNodes.length) { s += '...'; }\n        s += '';\n        return s;\n    }\n    if (isArray(obj)) {\n        if (obj.length === 0) { return '[]'; }\n        var xs = arrObjKeys(obj, inspect);\n        if (indent && !singleLineValues(xs)) {\n            return '[' + indentedJoin(xs, indent) + ']';\n        }\n        return '[ ' + $join.call(xs, ', ') + ' ]';\n    }\n    if (isError(obj)) {\n        var parts = arrObjKeys(obj, inspect);\n        if (!('cause' in Error.prototype) && 'cause' in obj && !isEnumerable.call(obj, 'cause')) {\n            return '{ [' + String(obj) + '] ' + $join.call($concat.call('[cause]: ' + inspect(obj.cause), parts), ', ') + ' }';\n        }\n        if (parts.length === 0) { return '[' + String(obj) + ']'; }\n        return '{ [' + String(obj) + '] ' + $join.call(parts, ', ') + ' }';\n    }\n    if (typeof obj === 'object' && customInspect) {\n        if (inspectSymbol && typeof obj[inspectSymbol] === 'function' && utilInspect) {\n            return utilInspect(obj, { depth: maxDepth - depth });\n        } else if (customInspect !== 'symbol' && typeof obj.inspect === 'function') {\n            return obj.inspect();\n        }\n    }\n    if (isMap(obj)) {\n        var mapParts = [];\n        if (mapForEach) {\n            mapForEach.call(obj, function (value, key) {\n                mapParts.push(inspect(key, obj, true) + ' => ' + inspect(value, obj));\n            });\n        }\n        return collectionOf('Map', mapSize.call(obj), mapParts, indent);\n    }\n    if (isSet(obj)) {\n        var setParts = [];\n        if (setForEach) {\n            setForEach.call(obj, function (value) {\n                setParts.push(inspect(value, obj));\n            });\n        }\n        return collectionOf('Set', setSize.call(obj), setParts, indent);\n    }\n    if (isWeakMap(obj)) {\n        return weakCollectionOf('WeakMap');\n    }\n    if (isWeakSet(obj)) {\n        return weakCollectionOf('WeakSet');\n    }\n    if (isWeakRef(obj)) {\n        return weakCollectionOf('WeakRef');\n    }\n    if (isNumber(obj)) {\n        return markBoxed(inspect(Number(obj)));\n    }\n    if (isBigInt(obj)) {\n        return markBoxed(inspect(bigIntValueOf.call(obj)));\n    }\n    if (isBoolean(obj)) {\n        return markBoxed(booleanValueOf.call(obj));\n    }\n    if (isString(obj)) {\n        return markBoxed(inspect(String(obj)));\n    }\n    // note: in IE 8, sometimes `global !== window` but both are the prototypes of each other\n    /* eslint-env browser */\n    if (typeof window !== 'undefined' && obj === window) {\n        return '{ [object Window] }';\n    }\n    if (\n        (typeof globalThis !== 'undefined' && obj === globalThis)\n        || (typeof global !== 'undefined' && obj === global)\n    ) {\n        return '{ [object globalThis] }';\n    }\n    if (!isDate(obj) && !isRegExp(obj)) {\n        var ys = arrObjKeys(obj, inspect);\n        var isPlainObject = gPO ? gPO(obj) === Object.prototype : obj instanceof Object || obj.constructor === Object;\n        var protoTag = obj instanceof Object ? '' : 'null prototype';\n        var stringTag = !isPlainObject && toStringTag && Object(obj) === obj && toStringTag in obj ? $slice.call(toStr(obj), 8, -1) : protoTag ? 'Object' : '';\n        var constructorTag = isPlainObject || typeof obj.constructor !== 'function' ? '' : obj.constructor.name ? obj.constructor.name + ' ' : '';\n        var tag = constructorTag + (stringTag || protoTag ? '[' + $join.call($concat.call([], stringTag || [], protoTag || []), ': ') + '] ' : '');\n        if (ys.length === 0) { return tag + '{}'; }\n        if (indent) {\n            return tag + '{' + indentedJoin(ys, indent) + '}';\n        }\n        return tag + '{ ' + $join.call(ys, ', ') + ' }';\n    }\n    return String(obj);\n};\n\nfunction wrapQuotes(s, defaultStyle, opts) {\n    var style = opts.quoteStyle || defaultStyle;\n    var quoteChar = quotes[style];\n    return quoteChar + s + quoteChar;\n}\n\nfunction quote(s) {\n    return $replace.call(String(s), /\"/g, '"');\n}\n\nfunction canTrustToString(obj) {\n    return !toStringTag || !(typeof obj === 'object' && (toStringTag in obj || typeof obj[toStringTag] !== 'undefined'));\n}\nfunction isArray(obj) { return toStr(obj) === '[object Array]' && canTrustToString(obj); }\nfunction isDate(obj) { return toStr(obj) === '[object Date]' && canTrustToString(obj); }\nfunction isRegExp(obj) { return toStr(obj) === '[object RegExp]' && canTrustToString(obj); }\nfunction isError(obj) { return toStr(obj) === '[object Error]' && canTrustToString(obj); }\nfunction isString(obj) { return toStr(obj) === '[object String]' && canTrustToString(obj); }\nfunction isNumber(obj) { return toStr(obj) === '[object Number]' && canTrustToString(obj); }\nfunction isBoolean(obj) { return toStr(obj) === '[object Boolean]' && canTrustToString(obj); }\n\n// Symbol and BigInt do have Symbol.toStringTag by spec, so that can't be used to eliminate false positives\nfunction isSymbol(obj) {\n    if (hasShammedSymbols) {\n        return obj && typeof obj === 'object' && obj instanceof Symbol;\n    }\n    if (typeof obj === 'symbol') {\n        return true;\n    }\n    if (!obj || typeof obj !== 'object' || !symToString) {\n        return false;\n    }\n    try {\n        symToString.call(obj);\n        return true;\n    } catch (e) {}\n    return false;\n}\n\nfunction isBigInt(obj) {\n    if (!obj || typeof obj !== 'object' || !bigIntValueOf) {\n        return false;\n    }\n    try {\n        bigIntValueOf.call(obj);\n        return true;\n    } catch (e) {}\n    return false;\n}\n\nvar hasOwn = Object.prototype.hasOwnProperty || function (key) { return key in this; };\nfunction has(obj, key) {\n    return hasOwn.call(obj, key);\n}\n\nfunction toStr(obj) {\n    return objectToString.call(obj);\n}\n\nfunction nameOf(f) {\n    if (f.name) { return f.name; }\n    var m = $match.call(functionToString.call(f), /^function\\s*([\\w$]+)/);\n    if (m) { return m[1]; }\n    return null;\n}\n\nfunction indexOf(xs, x) {\n    if (xs.indexOf) { return xs.indexOf(x); }\n    for (var i = 0, l = xs.length; i < l; i++) {\n        if (xs[i] === x) { return i; }\n    }\n    return -1;\n}\n\nfunction isMap(x) {\n    if (!mapSize || !x || typeof x !== 'object') {\n        return false;\n    }\n    try {\n        mapSize.call(x);\n        try {\n            setSize.call(x);\n        } catch (s) {\n            return true;\n        }\n        return x instanceof Map; // core-js workaround, pre-v2.5.0\n    } catch (e) {}\n    return false;\n}\n\nfunction isWeakMap(x) {\n    if (!weakMapHas || !x || typeof x !== 'object') {\n        return false;\n    }\n    try {\n        weakMapHas.call(x, weakMapHas);\n        try {\n            weakSetHas.call(x, weakSetHas);\n        } catch (s) {\n            return true;\n        }\n        return x instanceof WeakMap; // core-js workaround, pre-v2.5.0\n    } catch (e) {}\n    return false;\n}\n\nfunction isWeakRef(x) {\n    if (!weakRefDeref || !x || typeof x !== 'object') {\n        return false;\n    }\n    try {\n        weakRefDeref.call(x);\n        return true;\n    } catch (e) {}\n    return false;\n}\n\nfunction isSet(x) {\n    if (!setSize || !x || typeof x !== 'object') {\n        return false;\n    }\n    try {\n        setSize.call(x);\n        try {\n            mapSize.call(x);\n        } catch (m) {\n            return true;\n        }\n        return x instanceof Set; // core-js workaround, pre-v2.5.0\n    } catch (e) {}\n    return false;\n}\n\nfunction isWeakSet(x) {\n    if (!weakSetHas || !x || typeof x !== 'object') {\n        return false;\n    }\n    try {\n        weakSetHas.call(x, weakSetHas);\n        try {\n            weakMapHas.call(x, weakMapHas);\n        } catch (s) {\n            return true;\n        }\n        return x instanceof WeakSet; // core-js workaround, pre-v2.5.0\n    } catch (e) {}\n    return false;\n}\n\nfunction isElement(x) {\n    if (!x || typeof x !== 'object') { return false; }\n    if (typeof HTMLElement !== 'undefined' && x instanceof HTMLElement) {\n        return true;\n    }\n    return typeof x.nodeName === 'string' && typeof x.getAttribute === 'function';\n}\n\nfunction inspectString(str, opts) {\n    if (str.length > opts.maxStringLength) {\n        var remaining = str.length - opts.maxStringLength;\n        var trailer = '... ' + remaining + ' more character' + (remaining > 1 ? 's' : '');\n        return inspectString($slice.call(str, 0, opts.maxStringLength), opts) + trailer;\n    }\n    var quoteRE = quoteREs[opts.quoteStyle || 'single'];\n    quoteRE.lastIndex = 0;\n    // eslint-disable-next-line no-control-regex\n    var s = $replace.call($replace.call(str, quoteRE, '\\\\$1'), /[\\x00-\\x1f]/g, lowbyte);\n    return wrapQuotes(s, 'single', opts);\n}\n\nfunction lowbyte(c) {\n    var n = c.charCodeAt(0);\n    var x = {\n        8: 'b',\n        9: 't',\n        10: 'n',\n        12: 'f',\n        13: 'r'\n    }[n];\n    if (x) { return '\\\\' + x; }\n    return '\\\\x' + (n < 0x10 ? '0' : '') + $toUpperCase.call(n.toString(16));\n}\n\nfunction markBoxed(str) {\n    return 'Object(' + str + ')';\n}\n\nfunction weakCollectionOf(type) {\n    return type + ' { ? }';\n}\n\nfunction collectionOf(type, size, entries, indent) {\n    var joinedEntries = indent ? indentedJoin(entries, indent) : $join.call(entries, ', ');\n    return type + ' (' + size + ') {' + joinedEntries + '}';\n}\n\nfunction singleLineValues(xs) {\n    for (var i = 0; i < xs.length; i++) {\n        if (indexOf(xs[i], '\\n') >= 0) {\n            return false;\n        }\n    }\n    return true;\n}\n\nfunction getIndent(opts, depth) {\n    var baseIndent;\n    if (opts.indent === '\\t') {\n        baseIndent = '\\t';\n    } else if (typeof opts.indent === 'number' && opts.indent > 0) {\n        baseIndent = $join.call(Array(opts.indent + 1), ' ');\n    } else {\n        return null;\n    }\n    return {\n        base: baseIndent,\n        prev: $join.call(Array(depth + 1), baseIndent)\n    };\n}\n\nfunction indentedJoin(xs, indent) {\n    if (xs.length === 0) { return ''; }\n    var lineJoiner = '\\n' + indent.prev + indent.base;\n    return lineJoiner + $join.call(xs, ',' + lineJoiner) + '\\n' + indent.prev;\n}\n\nfunction arrObjKeys(obj, inspect) {\n    var isArr = isArray(obj);\n    var xs = [];\n    if (isArr) {\n        xs.length = obj.length;\n        for (var i = 0; i < obj.length; i++) {\n            xs[i] = has(obj, i) ? inspect(obj[i], obj) : '';\n        }\n    }\n    var syms = typeof gOPS === 'function' ? gOPS(obj) : [];\n    var symMap;\n    if (hasShammedSymbols) {\n        symMap = {};\n        for (var k = 0; k < syms.length; k++) {\n            symMap['$' + syms[k]] = syms[k];\n        }\n    }\n\n    for (var key in obj) { // eslint-disable-line no-restricted-syntax\n        if (!has(obj, key)) { continue; } // eslint-disable-line no-restricted-syntax, no-continue\n        if (isArr && String(Number(key)) === key && key < obj.length) { continue; } // eslint-disable-line no-restricted-syntax, no-continue\n        if (hasShammedSymbols && symMap['$' + key] instanceof Symbol) {\n            // this is to prevent shammed Symbols, which are stored as strings, from being included in the string key section\n            continue; // eslint-disable-line no-restricted-syntax, no-continue\n        } else if ($test.call(/[^\\w$]/, key)) {\n            xs.push(inspect(key, obj) + ': ' + inspect(obj[key], obj));\n        } else {\n            xs.push(key + ': ' + inspect(obj[key], obj));\n        }\n    }\n    if (typeof gOPS === 'function') {\n        for (var j = 0; j < syms.length; j++) {\n            if (isEnumerable.call(obj, syms[j])) {\n                xs.push('[' + inspect(syms[j]) + ']: ' + inspect(obj[syms[j]], obj));\n            }\n        }\n    }\n    return xs;\n}\n","// Copyright Joyent, Inc. and other Node contributors.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a\n// copy of this software and associated documentation files (the\n// \"Software\"), to deal in the Software without restriction, including\n// without limitation the rights to use, copy, modify, merge, publish,\n// distribute, sublicense, and/or sell copies of the Software, and to permit\n// persons to whom the Software is furnished to do so, subject to the\n// following conditions:\n//\n// The above copyright notice and this permission notice shall be included\n// in all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN\n// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR\n// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\n// USE OR OTHER DEALINGS IN THE SOFTWARE.\n\n'use strict';\nvar util = require('util');\nvar isString = function (x) {\n  return typeof x === 'string';\n};\n\n\n// resolves . and .. elements in a path array with directory names there\n// must be no slashes or device names (c:\\) in the array\n// (so also no leading and trailing slashes - it does not distinguish\n// relative and absolute paths)\nfunction normalizeArray(parts, allowAboveRoot) {\n  var res = [];\n  for (var i = 0; i < parts.length; i++) {\n    var p = parts[i];\n\n    // ignore empty parts\n    if (!p || p === '.')\n      continue;\n\n    if (p === '..') {\n      if (res.length && res[res.length - 1] !== '..') {\n        res.pop();\n      } else if (allowAboveRoot) {\n        res.push('..');\n      }\n    } else {\n      res.push(p);\n    }\n  }\n\n  return res;\n}\n\n// Split a filename into [root, dir, basename, ext], unix version\n// 'root' is just a slash, or nothing.\nvar splitPathRe =\n    /^(\\/?|)([\\s\\S]*?)((?:\\.{1,2}|[^\\/]+?|)(\\.[^.\\/]*|))(?:[\\/]*)$/;\nvar posix = {};\n\n\nfunction posixSplitPath(filename) {\n  return splitPathRe.exec(filename).slice(1);\n}\n\n\n// path.resolve([from ...], to)\n// posix version\nposix.resolve = function() {\n  var resolvedPath = '',\n      resolvedAbsolute = false;\n\n  for (var i = arguments.length - 1; i >= -1 && !resolvedAbsolute; i--) {\n    var path = (i >= 0) ? arguments[i] : process.cwd();\n\n    // Skip empty and invalid entries\n    if (!isString(path)) {\n      throw new TypeError('Arguments to path.resolve must be strings');\n    } else if (!path) {\n      continue;\n    }\n\n    resolvedPath = path + '/' + resolvedPath;\n    resolvedAbsolute = path.charAt(0) === '/';\n  }\n\n  // At this point the path should be resolved to a full absolute path, but\n  // handle relative paths to be safe (might happen when process.cwd() fails)\n\n  // Normalize the path\n  resolvedPath = normalizeArray(resolvedPath.split('/'),\n                                !resolvedAbsolute).join('/');\n\n  return ((resolvedAbsolute ? '/' : '') + resolvedPath) || '.';\n};\n\n// path.normalize(path)\n// posix version\nposix.normalize = function(path) {\n  var isAbsolute = posix.isAbsolute(path),\n      trailingSlash = path.substr(-1) === '/';\n\n  // Normalize the path\n  path = normalizeArray(path.split('/'), !isAbsolute).join('/');\n\n  if (!path && !isAbsolute) {\n    path = '.';\n  }\n  if (path && trailingSlash) {\n    path += '/';\n  }\n\n  return (isAbsolute ? '/' : '') + path;\n};\n\n// posix version\nposix.isAbsolute = function(path) {\n  return path.charAt(0) === '/';\n};\n\n// posix version\nposix.join = function() {\n  var path = '';\n  for (var i = 0; i < arguments.length; i++) {\n    var segment = arguments[i];\n    if (!isString(segment)) {\n      throw new TypeError('Arguments to path.join must be strings');\n    }\n    if (segment) {\n      if (!path) {\n        path += segment;\n      } else {\n        path += '/' + segment;\n      }\n    }\n  }\n  return posix.normalize(path);\n};\n\n\n// path.relative(from, to)\n// posix version\nposix.relative = function(from, to) {\n  from = posix.resolve(from).substr(1);\n  to = posix.resolve(to).substr(1);\n\n  function trim(arr) {\n    var start = 0;\n    for (; start < arr.length; start++) {\n      if (arr[start] !== '') break;\n    }\n\n    var end = arr.length - 1;\n    for (; end >= 0; end--) {\n      if (arr[end] !== '') break;\n    }\n\n    if (start > end) return [];\n    return arr.slice(start, end + 1);\n  }\n\n  var fromParts = trim(from.split('/'));\n  var toParts = trim(to.split('/'));\n\n  var length = Math.min(fromParts.length, toParts.length);\n  var samePartsLength = length;\n  for (var i = 0; i < length; i++) {\n    if (fromParts[i] !== toParts[i]) {\n      samePartsLength = i;\n      break;\n    }\n  }\n\n  var outputParts = [];\n  for (var i = samePartsLength; i < fromParts.length; i++) {\n    outputParts.push('..');\n  }\n\n  outputParts = outputParts.concat(toParts.slice(samePartsLength));\n\n  return outputParts.join('/');\n};\n\n\nposix._makeLong = function(path) {\n  return path;\n};\n\n\nposix.dirname = function(path) {\n  var result = posixSplitPath(path),\n      root = result[0],\n      dir = result[1];\n\n  if (!root && !dir) {\n    // No dirname whatsoever\n    return '.';\n  }\n\n  if (dir) {\n    // It has a dirname, strip trailing slash\n    dir = dir.substr(0, dir.length - 1);\n  }\n\n  return root + dir;\n};\n\n\nposix.basename = function(path, ext) {\n  var f = posixSplitPath(path)[2];\n  // TODO: make this comparison case-insensitive on windows?\n  if (ext && f.substr(-1 * ext.length) === ext) {\n    f = f.substr(0, f.length - ext.length);\n  }\n  return f;\n};\n\n\nposix.extname = function(path) {\n  return posixSplitPath(path)[3];\n};\n\n\nposix.format = function(pathObject) {\n  if (!util.isObject(pathObject)) {\n    throw new TypeError(\n        \"Parameter 'pathObject' must be an object, not \" + typeof pathObject\n    );\n  }\n\n  var root = pathObject.root || '';\n\n  if (!isString(root)) {\n    throw new TypeError(\n        \"'pathObject.root' must be a string or undefined, not \" +\n        typeof pathObject.root\n    );\n  }\n\n  var dir = pathObject.dir ? pathObject.dir + posix.sep : '';\n  var base = pathObject.base || '';\n  return dir + base;\n};\n\n\nposix.parse = function(pathString) {\n  if (!isString(pathString)) {\n    throw new TypeError(\n        \"Parameter 'pathString' must be a string, not \" + typeof pathString\n    );\n  }\n  var allParts = posixSplitPath(pathString);\n  if (!allParts || allParts.length !== 4) {\n    throw new TypeError(\"Invalid path '\" + pathString + \"'\");\n  }\n  allParts[1] = allParts[1] || '';\n  allParts[2] = allParts[2] || '';\n  allParts[3] = allParts[3] || '';\n\n  return {\n    root: allParts[0],\n    dir: allParts[0] + allParts[1].slice(0, allParts[1].length - 1),\n    base: allParts[2],\n    ext: allParts[3],\n    name: allParts[2].slice(0, allParts[2].length - allParts[3].length)\n  };\n};\n\n\nposix.sep = '/';\nposix.delimiter = ':';\n\n  module.exports = posix;\n","/*! https://mths.be/punycode v1.4.1 by @mathias */\n;(function(root) {\n\n\t/** Detect free variables */\n\tvar freeExports = typeof exports == 'object' && exports &&\n\t\t!exports.nodeType && exports;\n\tvar freeModule = typeof module == 'object' && module &&\n\t\t!module.nodeType && module;\n\tvar freeGlobal = typeof global == 'object' && global;\n\tif (\n\t\tfreeGlobal.global === freeGlobal ||\n\t\tfreeGlobal.window === freeGlobal ||\n\t\tfreeGlobal.self === freeGlobal\n\t) {\n\t\troot = freeGlobal;\n\t}\n\n\t/**\n\t * The `punycode` object.\n\t * @name punycode\n\t * @type Object\n\t */\n\tvar punycode,\n\n\t/** Highest positive signed 32-bit float value */\n\tmaxInt = 2147483647, // aka. 0x7FFFFFFF or 2^31-1\n\n\t/** Bootstring parameters */\n\tbase = 36,\n\ttMin = 1,\n\ttMax = 26,\n\tskew = 38,\n\tdamp = 700,\n\tinitialBias = 72,\n\tinitialN = 128, // 0x80\n\tdelimiter = '-', // '\\x2D'\n\n\t/** Regular expressions */\n\tregexPunycode = /^xn--/,\n\tregexNonASCII = /[^\\x20-\\x7E]/, // unprintable ASCII chars + non-ASCII chars\n\tregexSeparators = /[\\x2E\\u3002\\uFF0E\\uFF61]/g, // RFC 3490 separators\n\n\t/** Error messages */\n\terrors = {\n\t\t'overflow': 'Overflow: input needs wider integers to process',\n\t\t'not-basic': 'Illegal input >= 0x80 (not a basic code point)',\n\t\t'invalid-input': 'Invalid input'\n\t},\n\n\t/** Convenience shortcuts */\n\tbaseMinusTMin = base - tMin,\n\tfloor = Math.floor,\n\tstringFromCharCode = String.fromCharCode,\n\n\t/** Temporary variable */\n\tkey;\n\n\t/*--------------------------------------------------------------------------*/\n\n\t/**\n\t * A generic error utility function.\n\t * @private\n\t * @param {String} type The error type.\n\t * @returns {Error} Throws a `RangeError` with the applicable error message.\n\t */\n\tfunction error(type) {\n\t\tthrow new RangeError(errors[type]);\n\t}\n\n\t/**\n\t * A generic `Array#map` utility function.\n\t * @private\n\t * @param {Array} array The array to iterate over.\n\t * @param {Function} callback The function that gets called for every array\n\t * item.\n\t * @returns {Array} A new array of values returned by the callback function.\n\t */\n\tfunction map(array, fn) {\n\t\tvar length = array.length;\n\t\tvar result = [];\n\t\twhile (length--) {\n\t\t\tresult[length] = fn(array[length]);\n\t\t}\n\t\treturn result;\n\t}\n\n\t/**\n\t * A simple `Array#map`-like wrapper to work with domain name strings or email\n\t * addresses.\n\t * @private\n\t * @param {String} domain The domain name or email address.\n\t * @param {Function} callback The function that gets called for every\n\t * character.\n\t * @returns {Array} A new string of characters returned by the callback\n\t * function.\n\t */\n\tfunction mapDomain(string, fn) {\n\t\tvar parts = string.split('@');\n\t\tvar result = '';\n\t\tif (parts.length > 1) {\n\t\t\t// In email addresses, only the domain name should be punycoded. Leave\n\t\t\t// the local part (i.e. everything up to `@`) intact.\n\t\t\tresult = parts[0] + '@';\n\t\t\tstring = parts[1];\n\t\t}\n\t\t// Avoid `split(regex)` for IE8 compatibility. See #17.\n\t\tstring = string.replace(regexSeparators, '\\x2E');\n\t\tvar labels = string.split('.');\n\t\tvar encoded = map(labels, fn).join('.');\n\t\treturn result + encoded;\n\t}\n\n\t/**\n\t * Creates an array containing the numeric code points of each Unicode\n\t * character in the string. While JavaScript uses UCS-2 internally,\n\t * this function will convert a pair of surrogate halves (each of which\n\t * UCS-2 exposes as separate characters) into a single code point,\n\t * matching UTF-16.\n\t * @see `punycode.ucs2.encode`\n\t * @see \n\t * @memberOf punycode.ucs2\n\t * @name decode\n\t * @param {String} string The Unicode input string (UCS-2).\n\t * @returns {Array} The new array of code points.\n\t */\n\tfunction ucs2decode(string) {\n\t\tvar output = [],\n\t\t    counter = 0,\n\t\t    length = string.length,\n\t\t    value,\n\t\t    extra;\n\t\twhile (counter < length) {\n\t\t\tvalue = string.charCodeAt(counter++);\n\t\t\tif (value >= 0xD800 && value <= 0xDBFF && counter < length) {\n\t\t\t\t// high surrogate, and there is a next character\n\t\t\t\textra = string.charCodeAt(counter++);\n\t\t\t\tif ((extra & 0xFC00) == 0xDC00) { // low surrogate\n\t\t\t\t\toutput.push(((value & 0x3FF) << 10) + (extra & 0x3FF) + 0x10000);\n\t\t\t\t} else {\n\t\t\t\t\t// unmatched surrogate; only append this code unit, in case the next\n\t\t\t\t\t// code unit is the high surrogate of a surrogate pair\n\t\t\t\t\toutput.push(value);\n\t\t\t\t\tcounter--;\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\toutput.push(value);\n\t\t\t}\n\t\t}\n\t\treturn output;\n\t}\n\n\t/**\n\t * Creates a string based on an array of numeric code points.\n\t * @see `punycode.ucs2.decode`\n\t * @memberOf punycode.ucs2\n\t * @name encode\n\t * @param {Array} codePoints The array of numeric code points.\n\t * @returns {String} The new Unicode string (UCS-2).\n\t */\n\tfunction ucs2encode(array) {\n\t\treturn map(array, function(value) {\n\t\t\tvar output = '';\n\t\t\tif (value > 0xFFFF) {\n\t\t\t\tvalue -= 0x10000;\n\t\t\t\toutput += stringFromCharCode(value >>> 10 & 0x3FF | 0xD800);\n\t\t\t\tvalue = 0xDC00 | value & 0x3FF;\n\t\t\t}\n\t\t\toutput += stringFromCharCode(value);\n\t\t\treturn output;\n\t\t}).join('');\n\t}\n\n\t/**\n\t * Converts a basic code point into a digit/integer.\n\t * @see `digitToBasic()`\n\t * @private\n\t * @param {Number} codePoint The basic numeric code point value.\n\t * @returns {Number} The numeric value of a basic code point (for use in\n\t * representing integers) in the range `0` to `base - 1`, or `base` if\n\t * the code point does not represent a value.\n\t */\n\tfunction basicToDigit(codePoint) {\n\t\tif (codePoint - 48 < 10) {\n\t\t\treturn codePoint - 22;\n\t\t}\n\t\tif (codePoint - 65 < 26) {\n\t\t\treturn codePoint - 65;\n\t\t}\n\t\tif (codePoint - 97 < 26) {\n\t\t\treturn codePoint - 97;\n\t\t}\n\t\treturn base;\n\t}\n\n\t/**\n\t * Converts a digit/integer into a basic code point.\n\t * @see `basicToDigit()`\n\t * @private\n\t * @param {Number} digit The numeric value of a basic code point.\n\t * @returns {Number} The basic code point whose value (when used for\n\t * representing integers) is `digit`, which needs to be in the range\n\t * `0` to `base - 1`. If `flag` is non-zero, the uppercase form is\n\t * used; else, the lowercase form is used. The behavior is undefined\n\t * if `flag` is non-zero and `digit` has no uppercase form.\n\t */\n\tfunction digitToBasic(digit, flag) {\n\t\t//  0..25 map to ASCII a..z or A..Z\n\t\t// 26..35 map to ASCII 0..9\n\t\treturn digit + 22 + 75 * (digit < 26) - ((flag != 0) << 5);\n\t}\n\n\t/**\n\t * Bias adaptation function as per section 3.4 of RFC 3492.\n\t * https://tools.ietf.org/html/rfc3492#section-3.4\n\t * @private\n\t */\n\tfunction adapt(delta, numPoints, firstTime) {\n\t\tvar k = 0;\n\t\tdelta = firstTime ? floor(delta / damp) : delta >> 1;\n\t\tdelta += floor(delta / numPoints);\n\t\tfor (/* no initialization */; delta > baseMinusTMin * tMax >> 1; k += base) {\n\t\t\tdelta = floor(delta / baseMinusTMin);\n\t\t}\n\t\treturn floor(k + (baseMinusTMin + 1) * delta / (delta + skew));\n\t}\n\n\t/**\n\t * Converts a Punycode string of ASCII-only symbols to a string of Unicode\n\t * symbols.\n\t * @memberOf punycode\n\t * @param {String} input The Punycode string of ASCII-only symbols.\n\t * @returns {String} The resulting string of Unicode symbols.\n\t */\n\tfunction decode(input) {\n\t\t// Don't use UCS-2\n\t\tvar output = [],\n\t\t    inputLength = input.length,\n\t\t    out,\n\t\t    i = 0,\n\t\t    n = initialN,\n\t\t    bias = initialBias,\n\t\t    basic,\n\t\t    j,\n\t\t    index,\n\t\t    oldi,\n\t\t    w,\n\t\t    k,\n\t\t    digit,\n\t\t    t,\n\t\t    /** Cached calculation results */\n\t\t    baseMinusT;\n\n\t\t// Handle the basic code points: let `basic` be the number of input code\n\t\t// points before the last delimiter, or `0` if there is none, then copy\n\t\t// the first basic code points to the output.\n\n\t\tbasic = input.lastIndexOf(delimiter);\n\t\tif (basic < 0) {\n\t\t\tbasic = 0;\n\t\t}\n\n\t\tfor (j = 0; j < basic; ++j) {\n\t\t\t// if it's not a basic code point\n\t\t\tif (input.charCodeAt(j) >= 0x80) {\n\t\t\t\terror('not-basic');\n\t\t\t}\n\t\t\toutput.push(input.charCodeAt(j));\n\t\t}\n\n\t\t// Main decoding loop: start just after the last delimiter if any basic code\n\t\t// points were copied; start at the beginning otherwise.\n\n\t\tfor (index = basic > 0 ? basic + 1 : 0; index < inputLength; /* no final expression */) {\n\n\t\t\t// `index` is the index of the next character to be consumed.\n\t\t\t// Decode a generalized variable-length integer into `delta`,\n\t\t\t// which gets added to `i`. The overflow checking is easier\n\t\t\t// if we increase `i` as we go, then subtract off its starting\n\t\t\t// value at the end to obtain `delta`.\n\t\t\tfor (oldi = i, w = 1, k = base; /* no condition */; k += base) {\n\n\t\t\t\tif (index >= inputLength) {\n\t\t\t\t\terror('invalid-input');\n\t\t\t\t}\n\n\t\t\t\tdigit = basicToDigit(input.charCodeAt(index++));\n\n\t\t\t\tif (digit >= base || digit > floor((maxInt - i) / w)) {\n\t\t\t\t\terror('overflow');\n\t\t\t\t}\n\n\t\t\t\ti += digit * w;\n\t\t\t\tt = k <= bias ? tMin : (k >= bias + tMax ? tMax : k - bias);\n\n\t\t\t\tif (digit < t) {\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\n\t\t\t\tbaseMinusT = base - t;\n\t\t\t\tif (w > floor(maxInt / baseMinusT)) {\n\t\t\t\t\terror('overflow');\n\t\t\t\t}\n\n\t\t\t\tw *= baseMinusT;\n\n\t\t\t}\n\n\t\t\tout = output.length + 1;\n\t\t\tbias = adapt(i - oldi, out, oldi == 0);\n\n\t\t\t// `i` was supposed to wrap around from `out` to `0`,\n\t\t\t// incrementing `n` each time, so we'll fix that now:\n\t\t\tif (floor(i / out) > maxInt - n) {\n\t\t\t\terror('overflow');\n\t\t\t}\n\n\t\t\tn += floor(i / out);\n\t\t\ti %= out;\n\n\t\t\t// Insert `n` at position `i` of the output\n\t\t\toutput.splice(i++, 0, n);\n\n\t\t}\n\n\t\treturn ucs2encode(output);\n\t}\n\n\t/**\n\t * Converts a string of Unicode symbols (e.g. a domain name label) to a\n\t * Punycode string of ASCII-only symbols.\n\t * @memberOf punycode\n\t * @param {String} input The string of Unicode symbols.\n\t * @returns {String} The resulting Punycode string of ASCII-only symbols.\n\t */\n\tfunction encode(input) {\n\t\tvar n,\n\t\t    delta,\n\t\t    handledCPCount,\n\t\t    basicLength,\n\t\t    bias,\n\t\t    j,\n\t\t    m,\n\t\t    q,\n\t\t    k,\n\t\t    t,\n\t\t    currentValue,\n\t\t    output = [],\n\t\t    /** `inputLength` will hold the number of code points in `input`. */\n\t\t    inputLength,\n\t\t    /** Cached calculation results */\n\t\t    handledCPCountPlusOne,\n\t\t    baseMinusT,\n\t\t    qMinusT;\n\n\t\t// Convert the input in UCS-2 to Unicode\n\t\tinput = ucs2decode(input);\n\n\t\t// Cache the length\n\t\tinputLength = input.length;\n\n\t\t// Initialize the state\n\t\tn = initialN;\n\t\tdelta = 0;\n\t\tbias = initialBias;\n\n\t\t// Handle the basic code points\n\t\tfor (j = 0; j < inputLength; ++j) {\n\t\t\tcurrentValue = input[j];\n\t\t\tif (currentValue < 0x80) {\n\t\t\t\toutput.push(stringFromCharCode(currentValue));\n\t\t\t}\n\t\t}\n\n\t\thandledCPCount = basicLength = output.length;\n\n\t\t// `handledCPCount` is the number of code points that have been handled;\n\t\t// `basicLength` is the number of basic code points.\n\n\t\t// Finish the basic string - if it is not empty - with a delimiter\n\t\tif (basicLength) {\n\t\t\toutput.push(delimiter);\n\t\t}\n\n\t\t// Main encoding loop:\n\t\twhile (handledCPCount < inputLength) {\n\n\t\t\t// All non-basic code points < n have been handled already. Find the next\n\t\t\t// larger one:\n\t\t\tfor (m = maxInt, j = 0; j < inputLength; ++j) {\n\t\t\t\tcurrentValue = input[j];\n\t\t\t\tif (currentValue >= n && currentValue < m) {\n\t\t\t\t\tm = currentValue;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// Increase `delta` enough to advance the decoder's  state to ,\n\t\t\t// but guard against overflow\n\t\t\thandledCPCountPlusOne = handledCPCount + 1;\n\t\t\tif (m - n > floor((maxInt - delta) / handledCPCountPlusOne)) {\n\t\t\t\terror('overflow');\n\t\t\t}\n\n\t\t\tdelta += (m - n) * handledCPCountPlusOne;\n\t\t\tn = m;\n\n\t\t\tfor (j = 0; j < inputLength; ++j) {\n\t\t\t\tcurrentValue = input[j];\n\n\t\t\t\tif (currentValue < n && ++delta > maxInt) {\n\t\t\t\t\terror('overflow');\n\t\t\t\t}\n\n\t\t\t\tif (currentValue == n) {\n\t\t\t\t\t// Represent delta as a generalized variable-length integer\n\t\t\t\t\tfor (q = delta, k = base; /* no condition */; k += base) {\n\t\t\t\t\t\tt = k <= bias ? tMin : (k >= bias + tMax ? tMax : k - bias);\n\t\t\t\t\t\tif (q < t) {\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tqMinusT = q - t;\n\t\t\t\t\t\tbaseMinusT = base - t;\n\t\t\t\t\t\toutput.push(\n\t\t\t\t\t\t\tstringFromCharCode(digitToBasic(t + qMinusT % baseMinusT, 0))\n\t\t\t\t\t\t);\n\t\t\t\t\t\tq = floor(qMinusT / baseMinusT);\n\t\t\t\t\t}\n\n\t\t\t\t\toutput.push(stringFromCharCode(digitToBasic(q, 0)));\n\t\t\t\t\tbias = adapt(delta, handledCPCountPlusOne, handledCPCount == basicLength);\n\t\t\t\t\tdelta = 0;\n\t\t\t\t\t++handledCPCount;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t++delta;\n\t\t\t++n;\n\n\t\t}\n\t\treturn output.join('');\n\t}\n\n\t/**\n\t * Converts a Punycode string representing a domain name or an email address\n\t * to Unicode. Only the Punycoded parts of the input will be converted, i.e.\n\t * it doesn't matter if you call it on a string that has already been\n\t * converted to Unicode.\n\t * @memberOf punycode\n\t * @param {String} input The Punycoded domain name or email address to\n\t * convert to Unicode.\n\t * @returns {String} The Unicode representation of the given Punycode\n\t * string.\n\t */\n\tfunction toUnicode(input) {\n\t\treturn mapDomain(input, function(string) {\n\t\t\treturn regexPunycode.test(string)\n\t\t\t\t? decode(string.slice(4).toLowerCase())\n\t\t\t\t: string;\n\t\t});\n\t}\n\n\t/**\n\t * Converts a Unicode string representing a domain name or an email address to\n\t * Punycode. Only the non-ASCII parts of the domain name will be converted,\n\t * i.e. it doesn't matter if you call it with a domain that's already in\n\t * ASCII.\n\t * @memberOf punycode\n\t * @param {String} input The domain name or email address to convert, as a\n\t * Unicode string.\n\t * @returns {String} The Punycode representation of the given domain name or\n\t * email address.\n\t */\n\tfunction toASCII(input) {\n\t\treturn mapDomain(input, function(string) {\n\t\t\treturn regexNonASCII.test(string)\n\t\t\t\t? 'xn--' + encode(string)\n\t\t\t\t: string;\n\t\t});\n\t}\n\n\t/*--------------------------------------------------------------------------*/\n\n\t/** Define the public API */\n\tpunycode = {\n\t\t/**\n\t\t * A string representing the current Punycode.js version number.\n\t\t * @memberOf punycode\n\t\t * @type String\n\t\t */\n\t\t'version': '1.4.1',\n\t\t/**\n\t\t * An object of methods to convert from JavaScript's internal character\n\t\t * representation (UCS-2) to Unicode code points, and back.\n\t\t * @see \n\t\t * @memberOf punycode\n\t\t * @type Object\n\t\t */\n\t\t'ucs2': {\n\t\t\t'decode': ucs2decode,\n\t\t\t'encode': ucs2encode\n\t\t},\n\t\t'decode': decode,\n\t\t'encode': encode,\n\t\t'toASCII': toASCII,\n\t\t'toUnicode': toUnicode\n\t};\n\n\t/** Expose `punycode` */\n\t// Some AMD build optimizers, like r.js, check for specific condition patterns\n\t// like the following:\n\tif (\n\t\ttypeof define == 'function' &&\n\t\ttypeof define.amd == 'object' &&\n\t\tdefine.amd\n\t) {\n\t\tdefine('punycode', function() {\n\t\t\treturn punycode;\n\t\t});\n\t} else if (freeExports && freeModule) {\n\t\tif (module.exports == freeExports) {\n\t\t\t// in Node.js, io.js, or RingoJS v0.8.0+\n\t\t\tfreeModule.exports = punycode;\n\t\t} else {\n\t\t\t// in Narwhal or RingoJS v0.7.0-\n\t\t\tfor (key in punycode) {\n\t\t\t\tpunycode.hasOwnProperty(key) && (freeExports[key] = punycode[key]);\n\t\t\t}\n\t\t}\n\t} else {\n\t\t// in Rhino or a web browser\n\t\troot.punycode = punycode;\n\t}\n\n}(this));\n","'use strict';\n\nvar replace = String.prototype.replace;\nvar percentTwenties = /%20/g;\n\nvar Format = {\n    RFC1738: 'RFC1738',\n    RFC3986: 'RFC3986'\n};\n\nmodule.exports = {\n    'default': Format.RFC3986,\n    formatters: {\n        RFC1738: function (value) {\n            return replace.call(value, percentTwenties, '+');\n        },\n        RFC3986: function (value) {\n            return String(value);\n        }\n    },\n    RFC1738: Format.RFC1738,\n    RFC3986: Format.RFC3986\n};\n","'use strict';\n\nvar stringify = require('./stringify');\nvar parse = require('./parse');\nvar formats = require('./formats');\n\nmodule.exports = {\n    formats: formats,\n    parse: parse,\n    stringify: stringify\n};\n","'use strict';\n\nvar utils = require('./utils');\n\nvar has = Object.prototype.hasOwnProperty;\nvar isArray = Array.isArray;\n\nvar defaults = {\n    allowDots: false,\n    allowEmptyArrays: false,\n    allowPrototypes: false,\n    allowSparse: false,\n    arrayLimit: 20,\n    charset: 'utf-8',\n    charsetSentinel: false,\n    comma: false,\n    decodeDotInKeys: false,\n    decoder: utils.decode,\n    delimiter: '&',\n    depth: 5,\n    duplicates: 'combine',\n    ignoreQueryPrefix: false,\n    interpretNumericEntities: false,\n    parameterLimit: 1000,\n    parseArrays: true,\n    plainObjects: false,\n    strictDepth: false,\n    strictNullHandling: false,\n    throwOnLimitExceeded: false\n};\n\nvar interpretNumericEntities = function (str) {\n    return str.replace(/&#(\\d+);/g, function ($0, numberStr) {\n        return String.fromCharCode(parseInt(numberStr, 10));\n    });\n};\n\nvar parseArrayValue = function (val, options, currentArrayLength) {\n    if (val && typeof val === 'string' && options.comma && val.indexOf(',') > -1) {\n        return val.split(',');\n    }\n\n    if (options.throwOnLimitExceeded && currentArrayLength >= options.arrayLimit) {\n        throw new RangeError('Array limit exceeded. Only ' + options.arrayLimit + ' element' + (options.arrayLimit === 1 ? '' : 's') + ' allowed in an array.');\n    }\n\n    return val;\n};\n\n// This is what browsers will submit when the ✓ character occurs in an\n// application/x-www-form-urlencoded body and the encoding of the page containing\n// the form is iso-8859-1, or when the submitted form has an accept-charset\n// attribute of iso-8859-1. Presumably also with other charsets that do not contain\n// the ✓ character, such as us-ascii.\nvar isoSentinel = 'utf8=%26%2310003%3B'; // encodeURIComponent('✓')\n\n// These are the percent-encoded utf-8 octets representing a checkmark, indicating that the request actually is utf-8 encoded.\nvar charsetSentinel = 'utf8=%E2%9C%93'; // encodeURIComponent('✓')\n\nvar parseValues = function parseQueryStringValues(str, options) {\n    var obj = { __proto__: null };\n\n    var cleanStr = options.ignoreQueryPrefix ? str.replace(/^\\?/, '') : str;\n    cleanStr = cleanStr.replace(/%5B/gi, '[').replace(/%5D/gi, ']');\n\n    var limit = options.parameterLimit === Infinity ? undefined : options.parameterLimit;\n    var parts = cleanStr.split(\n        options.delimiter,\n        options.throwOnLimitExceeded ? limit + 1 : limit\n    );\n\n    if (options.throwOnLimitExceeded && parts.length > limit) {\n        throw new RangeError('Parameter limit exceeded. Only ' + limit + ' parameter' + (limit === 1 ? '' : 's') + ' allowed.');\n    }\n\n    var skipIndex = -1; // Keep track of where the utf8 sentinel was found\n    var i;\n\n    var charset = options.charset;\n    if (options.charsetSentinel) {\n        for (i = 0; i < parts.length; ++i) {\n            if (parts[i].indexOf('utf8=') === 0) {\n                if (parts[i] === charsetSentinel) {\n                    charset = 'utf-8';\n                } else if (parts[i] === isoSentinel) {\n                    charset = 'iso-8859-1';\n                }\n                skipIndex = i;\n                i = parts.length; // The eslint settings do not allow break;\n            }\n        }\n    }\n\n    for (i = 0; i < parts.length; ++i) {\n        if (i === skipIndex) {\n            continue;\n        }\n        var part = parts[i];\n\n        var bracketEqualsPos = part.indexOf(']=');\n        var pos = bracketEqualsPos === -1 ? part.indexOf('=') : bracketEqualsPos + 1;\n\n        var key;\n        var val;\n        if (pos === -1) {\n            key = options.decoder(part, defaults.decoder, charset, 'key');\n            val = options.strictNullHandling ? null : '';\n        } else {\n            key = options.decoder(part.slice(0, pos), defaults.decoder, charset, 'key');\n\n            if (key !== null) {\n                val = utils.maybeMap(\n                    parseArrayValue(\n                        part.slice(pos + 1),\n                        options,\n                        isArray(obj[key]) ? obj[key].length : 0\n                    ),\n                    function (encodedVal) {\n                        return options.decoder(encodedVal, defaults.decoder, charset, 'value');\n                    }\n                );\n            }\n        }\n\n        if (val && options.interpretNumericEntities && charset === 'iso-8859-1') {\n            val = interpretNumericEntities(String(val));\n        }\n\n        if (part.indexOf('[]=') > -1) {\n            val = isArray(val) ? [val] : val;\n        }\n\n        if (key !== null) {\n            var existing = has.call(obj, key);\n            if (existing && options.duplicates === 'combine') {\n                obj[key] = utils.combine(\n                    obj[key],\n                    val,\n                    options.arrayLimit,\n                    options.plainObjects\n                );\n            } else if (!existing || options.duplicates === 'last') {\n                obj[key] = val;\n            }\n        }\n    }\n\n    return obj;\n};\n\nvar parseObject = function (chain, val, options, valuesParsed) {\n    var currentArrayLength = 0;\n    if (chain.length > 0 && chain[chain.length - 1] === '[]') {\n        var parentKey = chain.slice(0, -1).join('');\n        currentArrayLength = Array.isArray(val) && val[parentKey] ? val[parentKey].length : 0;\n    }\n\n    var leaf = valuesParsed ? val : parseArrayValue(val, options, currentArrayLength);\n\n    for (var i = chain.length - 1; i >= 0; --i) {\n        var obj;\n        var root = chain[i];\n\n        if (root === '[]' && options.parseArrays) {\n            if (utils.isOverflow(leaf)) {\n                // leaf is already an overflow object, preserve it\n                obj = leaf;\n            } else {\n                obj = options.allowEmptyArrays && (leaf === '' || (options.strictNullHandling && leaf === null))\n                    ? []\n                    : utils.combine(\n                        [],\n                        leaf,\n                        options.arrayLimit,\n                        options.plainObjects\n                    );\n            }\n        } else {\n            obj = options.plainObjects ? { __proto__: null } : {};\n            var cleanRoot = root.charAt(0) === '[' && root.charAt(root.length - 1) === ']' ? root.slice(1, -1) : root;\n            var decodedRoot = options.decodeDotInKeys ? cleanRoot.replace(/%2E/g, '.') : cleanRoot;\n            var index = parseInt(decodedRoot, 10);\n            if (!options.parseArrays && decodedRoot === '') {\n                obj = { 0: leaf };\n            } else if (\n                !isNaN(index)\n                && root !== decodedRoot\n                && String(index) === decodedRoot\n                && index >= 0\n                && (options.parseArrays && index <= options.arrayLimit)\n            ) {\n                obj = [];\n                obj[index] = leaf;\n            } else if (decodedRoot !== '__proto__') {\n                obj[decodedRoot] = leaf;\n            }\n        }\n\n        leaf = obj;\n    }\n\n    return leaf;\n};\n\nvar splitKeyIntoSegments = function splitKeyIntoSegments(givenKey, options) {\n    var key = options.allowDots ? givenKey.replace(/\\.([^.[]+)/g, '[$1]') : givenKey;\n\n    if (options.depth <= 0) {\n        if (!options.plainObjects && has.call(Object.prototype, key)) {\n            if (!options.allowPrototypes) {\n                return;\n            }\n        }\n\n        return [key];\n    }\n\n    var brackets = /(\\[[^[\\]]*])/;\n    var child = /(\\[[^[\\]]*])/g;\n\n    var segment = brackets.exec(key);\n    var parent = segment ? key.slice(0, segment.index) : key;\n\n    var keys = [];\n\n    if (parent) {\n        if (!options.plainObjects && has.call(Object.prototype, parent)) {\n            if (!options.allowPrototypes) {\n                return;\n            }\n        }\n\n        keys.push(parent);\n    }\n\n    var i = 0;\n    while ((segment = child.exec(key)) !== null && i < options.depth) {\n        i += 1;\n\n        var segmentContent = segment[1].slice(1, -1);\n        if (!options.plainObjects && has.call(Object.prototype, segmentContent)) {\n            if (!options.allowPrototypes) {\n                return;\n            }\n        }\n\n        keys.push(segment[1]);\n    }\n\n    if (segment) {\n        if (options.strictDepth === true) {\n            throw new RangeError('Input depth exceeded depth option of ' + options.depth + ' and strictDepth is true');\n        }\n\n        keys.push('[' + key.slice(segment.index) + ']');\n    }\n\n    return keys;\n};\n\nvar parseKeys = function parseQueryStringKeys(givenKey, val, options, valuesParsed) {\n    if (!givenKey) {\n        return;\n    }\n\n    var keys = splitKeyIntoSegments(givenKey, options);\n\n    if (!keys) {\n        return;\n    }\n\n    return parseObject(keys, val, options, valuesParsed);\n};\n\nvar normalizeParseOptions = function normalizeParseOptions(opts) {\n    if (!opts) {\n        return defaults;\n    }\n\n    if (typeof opts.allowEmptyArrays !== 'undefined' && typeof opts.allowEmptyArrays !== 'boolean') {\n        throw new TypeError('`allowEmptyArrays` option can only be `true` or `false`, when provided');\n    }\n\n    if (typeof opts.decodeDotInKeys !== 'undefined' && typeof opts.decodeDotInKeys !== 'boolean') {\n        throw new TypeError('`decodeDotInKeys` option can only be `true` or `false`, when provided');\n    }\n\n    if (opts.decoder !== null && typeof opts.decoder !== 'undefined' && typeof opts.decoder !== 'function') {\n        throw new TypeError('Decoder has to be a function.');\n    }\n\n    if (typeof opts.charset !== 'undefined' && opts.charset !== 'utf-8' && opts.charset !== 'iso-8859-1') {\n        throw new TypeError('The charset option must be either utf-8, iso-8859-1, or undefined');\n    }\n\n    if (typeof opts.throwOnLimitExceeded !== 'undefined' && typeof opts.throwOnLimitExceeded !== 'boolean') {\n        throw new TypeError('`throwOnLimitExceeded` option must be a boolean');\n    }\n\n    var charset = typeof opts.charset === 'undefined' ? defaults.charset : opts.charset;\n\n    var duplicates = typeof opts.duplicates === 'undefined' ? defaults.duplicates : opts.duplicates;\n\n    if (duplicates !== 'combine' && duplicates !== 'first' && duplicates !== 'last') {\n        throw new TypeError('The duplicates option must be either combine, first, or last');\n    }\n\n    var allowDots = typeof opts.allowDots === 'undefined' ? opts.decodeDotInKeys === true ? true : defaults.allowDots : !!opts.allowDots;\n\n    return {\n        allowDots: allowDots,\n        allowEmptyArrays: typeof opts.allowEmptyArrays === 'boolean' ? !!opts.allowEmptyArrays : defaults.allowEmptyArrays,\n        allowPrototypes: typeof opts.allowPrototypes === 'boolean' ? opts.allowPrototypes : defaults.allowPrototypes,\n        allowSparse: typeof opts.allowSparse === 'boolean' ? opts.allowSparse : defaults.allowSparse,\n        arrayLimit: typeof opts.arrayLimit === 'number' ? opts.arrayLimit : defaults.arrayLimit,\n        charset: charset,\n        charsetSentinel: typeof opts.charsetSentinel === 'boolean' ? opts.charsetSentinel : defaults.charsetSentinel,\n        comma: typeof opts.comma === 'boolean' ? opts.comma : defaults.comma,\n        decodeDotInKeys: typeof opts.decodeDotInKeys === 'boolean' ? opts.decodeDotInKeys : defaults.decodeDotInKeys,\n        decoder: typeof opts.decoder === 'function' ? opts.decoder : defaults.decoder,\n        delimiter: typeof opts.delimiter === 'string' || utils.isRegExp(opts.delimiter) ? opts.delimiter : defaults.delimiter,\n        // eslint-disable-next-line no-implicit-coercion, no-extra-parens\n        depth: (typeof opts.depth === 'number' || opts.depth === false) ? +opts.depth : defaults.depth,\n        duplicates: duplicates,\n        ignoreQueryPrefix: opts.ignoreQueryPrefix === true,\n        interpretNumericEntities: typeof opts.interpretNumericEntities === 'boolean' ? opts.interpretNumericEntities : defaults.interpretNumericEntities,\n        parameterLimit: typeof opts.parameterLimit === 'number' ? opts.parameterLimit : defaults.parameterLimit,\n        parseArrays: opts.parseArrays !== false,\n        plainObjects: typeof opts.plainObjects === 'boolean' ? opts.plainObjects : defaults.plainObjects,\n        strictDepth: typeof opts.strictDepth === 'boolean' ? !!opts.strictDepth : defaults.strictDepth,\n        strictNullHandling: typeof opts.strictNullHandling === 'boolean' ? opts.strictNullHandling : defaults.strictNullHandling,\n        throwOnLimitExceeded: typeof opts.throwOnLimitExceeded === 'boolean' ? opts.throwOnLimitExceeded : false\n    };\n};\n\nmodule.exports = function (str, opts) {\n    var options = normalizeParseOptions(opts);\n\n    if (str === '' || str === null || typeof str === 'undefined') {\n        return options.plainObjects ? { __proto__: null } : {};\n    }\n\n    var tempObj = typeof str === 'string' ? parseValues(str, options) : str;\n    var obj = options.plainObjects ? { __proto__: null } : {};\n\n    // Iterate over the keys and setup the new object\n\n    var keys = Object.keys(tempObj);\n    for (var i = 0; i < keys.length; ++i) {\n        var key = keys[i];\n        var newObj = parseKeys(key, tempObj[key], options, typeof str === 'string');\n        obj = utils.merge(obj, newObj, options);\n    }\n\n    if (options.allowSparse === true) {\n        return obj;\n    }\n\n    return utils.compact(obj);\n};\n","'use strict';\n\nvar getSideChannel = require('side-channel');\nvar utils = require('./utils');\nvar formats = require('./formats');\nvar has = Object.prototype.hasOwnProperty;\n\nvar arrayPrefixGenerators = {\n    brackets: function brackets(prefix) {\n        return prefix + '[]';\n    },\n    comma: 'comma',\n    indices: function indices(prefix, key) {\n        return prefix + '[' + key + ']';\n    },\n    repeat: function repeat(prefix) {\n        return prefix;\n    }\n};\n\nvar isArray = Array.isArray;\nvar push = Array.prototype.push;\nvar pushToArray = function (arr, valueOrArray) {\n    push.apply(arr, isArray(valueOrArray) ? valueOrArray : [valueOrArray]);\n};\n\nvar toISO = Date.prototype.toISOString;\n\nvar defaultFormat = formats['default'];\nvar defaults = {\n    addQueryPrefix: false,\n    allowDots: false,\n    allowEmptyArrays: false,\n    arrayFormat: 'indices',\n    charset: 'utf-8',\n    charsetSentinel: false,\n    commaRoundTrip: false,\n    delimiter: '&',\n    encode: true,\n    encodeDotInKeys: false,\n    encoder: utils.encode,\n    encodeValuesOnly: false,\n    filter: void undefined,\n    format: defaultFormat,\n    formatter: formats.formatters[defaultFormat],\n    // deprecated\n    indices: false,\n    serializeDate: function serializeDate(date) {\n        return toISO.call(date);\n    },\n    skipNulls: false,\n    strictNullHandling: false\n};\n\nvar isNonNullishPrimitive = function isNonNullishPrimitive(v) {\n    return typeof v === 'string'\n        || typeof v === 'number'\n        || typeof v === 'boolean'\n        || typeof v === 'symbol'\n        || typeof v === 'bigint';\n};\n\nvar sentinel = {};\n\nvar stringify = function stringify(\n    object,\n    prefix,\n    generateArrayPrefix,\n    commaRoundTrip,\n    allowEmptyArrays,\n    strictNullHandling,\n    skipNulls,\n    encodeDotInKeys,\n    encoder,\n    filter,\n    sort,\n    allowDots,\n    serializeDate,\n    format,\n    formatter,\n    encodeValuesOnly,\n    charset,\n    sideChannel\n) {\n    var obj = object;\n\n    var tmpSc = sideChannel;\n    var step = 0;\n    var findFlag = false;\n    while ((tmpSc = tmpSc.get(sentinel)) !== void undefined && !findFlag) {\n        // Where object last appeared in the ref tree\n        var pos = tmpSc.get(object);\n        step += 1;\n        if (typeof pos !== 'undefined') {\n            if (pos === step) {\n                throw new RangeError('Cyclic object value');\n            } else {\n                findFlag = true; // Break while\n            }\n        }\n        if (typeof tmpSc.get(sentinel) === 'undefined') {\n            step = 0;\n        }\n    }\n\n    if (typeof filter === 'function') {\n        obj = filter(prefix, obj);\n    } else if (obj instanceof Date) {\n        obj = serializeDate(obj);\n    } else if (generateArrayPrefix === 'comma' && isArray(obj)) {\n        obj = utils.maybeMap(obj, function (value) {\n            if (value instanceof Date) {\n                return serializeDate(value);\n            }\n            return value;\n        });\n    }\n\n    if (obj === null) {\n        if (strictNullHandling) {\n            return encoder && !encodeValuesOnly ? encoder(prefix, defaults.encoder, charset, 'key', format) : prefix;\n        }\n\n        obj = '';\n    }\n\n    if (isNonNullishPrimitive(obj) || utils.isBuffer(obj)) {\n        if (encoder) {\n            var keyValue = encodeValuesOnly ? prefix : encoder(prefix, defaults.encoder, charset, 'key', format);\n            return [formatter(keyValue) + '=' + formatter(encoder(obj, defaults.encoder, charset, 'value', format))];\n        }\n        return [formatter(prefix) + '=' + formatter(String(obj))];\n    }\n\n    var values = [];\n\n    if (typeof obj === 'undefined') {\n        return values;\n    }\n\n    var objKeys;\n    if (generateArrayPrefix === 'comma' && isArray(obj)) {\n        // we need to join elements in\n        if (encodeValuesOnly && encoder) {\n            obj = utils.maybeMap(obj, encoder);\n        }\n        objKeys = [{ value: obj.length > 0 ? obj.join(',') || null : void undefined }];\n    } else if (isArray(filter)) {\n        objKeys = filter;\n    } else {\n        var keys = Object.keys(obj);\n        objKeys = sort ? keys.sort(sort) : keys;\n    }\n\n    var encodedPrefix = encodeDotInKeys ? String(prefix).replace(/\\./g, '%2E') : String(prefix);\n\n    var adjustedPrefix = commaRoundTrip && isArray(obj) && obj.length === 1 ? encodedPrefix + '[]' : encodedPrefix;\n\n    if (allowEmptyArrays && isArray(obj) && obj.length === 0) {\n        return adjustedPrefix + '[]';\n    }\n\n    for (var j = 0; j < objKeys.length; ++j) {\n        var key = objKeys[j];\n        var value = typeof key === 'object' && key && typeof key.value !== 'undefined'\n            ? key.value\n            : obj[key];\n\n        if (skipNulls && value === null) {\n            continue;\n        }\n\n        var encodedKey = allowDots && encodeDotInKeys ? String(key).replace(/\\./g, '%2E') : String(key);\n        var keyPrefix = isArray(obj)\n            ? typeof generateArrayPrefix === 'function' ? generateArrayPrefix(adjustedPrefix, encodedKey) : adjustedPrefix\n            : adjustedPrefix + (allowDots ? '.' + encodedKey : '[' + encodedKey + ']');\n\n        sideChannel.set(object, step);\n        var valueSideChannel = getSideChannel();\n        valueSideChannel.set(sentinel, sideChannel);\n        pushToArray(values, stringify(\n            value,\n            keyPrefix,\n            generateArrayPrefix,\n            commaRoundTrip,\n            allowEmptyArrays,\n            strictNullHandling,\n            skipNulls,\n            encodeDotInKeys,\n            generateArrayPrefix === 'comma' && encodeValuesOnly && isArray(obj) ? null : encoder,\n            filter,\n            sort,\n            allowDots,\n            serializeDate,\n            format,\n            formatter,\n            encodeValuesOnly,\n            charset,\n            valueSideChannel\n        ));\n    }\n\n    return values;\n};\n\nvar normalizeStringifyOptions = function normalizeStringifyOptions(opts) {\n    if (!opts) {\n        return defaults;\n    }\n\n    if (typeof opts.allowEmptyArrays !== 'undefined' && typeof opts.allowEmptyArrays !== 'boolean') {\n        throw new TypeError('`allowEmptyArrays` option can only be `true` or `false`, when provided');\n    }\n\n    if (typeof opts.encodeDotInKeys !== 'undefined' && typeof opts.encodeDotInKeys !== 'boolean') {\n        throw new TypeError('`encodeDotInKeys` option can only be `true` or `false`, when provided');\n    }\n\n    if (opts.encoder !== null && typeof opts.encoder !== 'undefined' && typeof opts.encoder !== 'function') {\n        throw new TypeError('Encoder has to be a function.');\n    }\n\n    var charset = opts.charset || defaults.charset;\n    if (typeof opts.charset !== 'undefined' && opts.charset !== 'utf-8' && opts.charset !== 'iso-8859-1') {\n        throw new TypeError('The charset option must be either utf-8, iso-8859-1, or undefined');\n    }\n\n    var format = formats['default'];\n    if (typeof opts.format !== 'undefined') {\n        if (!has.call(formats.formatters, opts.format)) {\n            throw new TypeError('Unknown format option provided.');\n        }\n        format = opts.format;\n    }\n    var formatter = formats.formatters[format];\n\n    var filter = defaults.filter;\n    if (typeof opts.filter === 'function' || isArray(opts.filter)) {\n        filter = opts.filter;\n    }\n\n    var arrayFormat;\n    if (opts.arrayFormat in arrayPrefixGenerators) {\n        arrayFormat = opts.arrayFormat;\n    } else if ('indices' in opts) {\n        arrayFormat = opts.indices ? 'indices' : 'repeat';\n    } else {\n        arrayFormat = defaults.arrayFormat;\n    }\n\n    if ('commaRoundTrip' in opts && typeof opts.commaRoundTrip !== 'boolean') {\n        throw new TypeError('`commaRoundTrip` must be a boolean, or absent');\n    }\n\n    var allowDots = typeof opts.allowDots === 'undefined' ? opts.encodeDotInKeys === true ? true : defaults.allowDots : !!opts.allowDots;\n\n    return {\n        addQueryPrefix: typeof opts.addQueryPrefix === 'boolean' ? opts.addQueryPrefix : defaults.addQueryPrefix,\n        allowDots: allowDots,\n        allowEmptyArrays: typeof opts.allowEmptyArrays === 'boolean' ? !!opts.allowEmptyArrays : defaults.allowEmptyArrays,\n        arrayFormat: arrayFormat,\n        charset: charset,\n        charsetSentinel: typeof opts.charsetSentinel === 'boolean' ? opts.charsetSentinel : defaults.charsetSentinel,\n        commaRoundTrip: !!opts.commaRoundTrip,\n        delimiter: typeof opts.delimiter === 'undefined' ? defaults.delimiter : opts.delimiter,\n        encode: typeof opts.encode === 'boolean' ? opts.encode : defaults.encode,\n        encodeDotInKeys: typeof opts.encodeDotInKeys === 'boolean' ? opts.encodeDotInKeys : defaults.encodeDotInKeys,\n        encoder: typeof opts.encoder === 'function' ? opts.encoder : defaults.encoder,\n        encodeValuesOnly: typeof opts.encodeValuesOnly === 'boolean' ? opts.encodeValuesOnly : defaults.encodeValuesOnly,\n        filter: filter,\n        format: format,\n        formatter: formatter,\n        serializeDate: typeof opts.serializeDate === 'function' ? opts.serializeDate : defaults.serializeDate,\n        skipNulls: typeof opts.skipNulls === 'boolean' ? opts.skipNulls : defaults.skipNulls,\n        sort: typeof opts.sort === 'function' ? opts.sort : null,\n        strictNullHandling: typeof opts.strictNullHandling === 'boolean' ? opts.strictNullHandling : defaults.strictNullHandling\n    };\n};\n\nmodule.exports = function (object, opts) {\n    var obj = object;\n    var options = normalizeStringifyOptions(opts);\n\n    var objKeys;\n    var filter;\n\n    if (typeof options.filter === 'function') {\n        filter = options.filter;\n        obj = filter('', obj);\n    } else if (isArray(options.filter)) {\n        filter = options.filter;\n        objKeys = filter;\n    }\n\n    var keys = [];\n\n    if (typeof obj !== 'object' || obj === null) {\n        return '';\n    }\n\n    var generateArrayPrefix = arrayPrefixGenerators[options.arrayFormat];\n    var commaRoundTrip = generateArrayPrefix === 'comma' && options.commaRoundTrip;\n\n    if (!objKeys) {\n        objKeys = Object.keys(obj);\n    }\n\n    if (options.sort) {\n        objKeys.sort(options.sort);\n    }\n\n    var sideChannel = getSideChannel();\n    for (var i = 0; i < objKeys.length; ++i) {\n        var key = objKeys[i];\n        var value = obj[key];\n\n        if (options.skipNulls && value === null) {\n            continue;\n        }\n        pushToArray(keys, stringify(\n            value,\n            key,\n            generateArrayPrefix,\n            commaRoundTrip,\n            options.allowEmptyArrays,\n            options.strictNullHandling,\n            options.skipNulls,\n            options.encodeDotInKeys,\n            options.encode ? options.encoder : null,\n            options.filter,\n            options.sort,\n            options.allowDots,\n            options.serializeDate,\n            options.format,\n            options.formatter,\n            options.encodeValuesOnly,\n            options.charset,\n            sideChannel\n        ));\n    }\n\n    var joined = keys.join(options.delimiter);\n    var prefix = options.addQueryPrefix === true ? '?' : '';\n\n    if (options.charsetSentinel) {\n        if (options.charset === 'iso-8859-1') {\n            // encodeURIComponent('✓'), the \"numeric entity\" representation of a checkmark\n            prefix += 'utf8=%26%2310003%3B&';\n        } else {\n            // encodeURIComponent('✓')\n            prefix += 'utf8=%E2%9C%93&';\n        }\n    }\n\n    return joined.length > 0 ? prefix + joined : '';\n};\n","'use strict';\n\nvar formats = require('./formats');\nvar getSideChannel = require('side-channel');\n\nvar has = Object.prototype.hasOwnProperty;\nvar isArray = Array.isArray;\n\n// Track objects created from arrayLimit overflow using side-channel\n// Stores the current max numeric index for O(1) lookup\nvar overflowChannel = getSideChannel();\n\nvar markOverflow = function markOverflow(obj, maxIndex) {\n    overflowChannel.set(obj, maxIndex);\n    return obj;\n};\n\nvar isOverflow = function isOverflow(obj) {\n    return overflowChannel.has(obj);\n};\n\nvar getMaxIndex = function getMaxIndex(obj) {\n    return overflowChannel.get(obj);\n};\n\nvar setMaxIndex = function setMaxIndex(obj, maxIndex) {\n    overflowChannel.set(obj, maxIndex);\n};\n\nvar hexTable = (function () {\n    var array = [];\n    for (var i = 0; i < 256; ++i) {\n        array.push('%' + ((i < 16 ? '0' : '') + i.toString(16)).toUpperCase());\n    }\n\n    return array;\n}());\n\nvar compactQueue = function compactQueue(queue) {\n    while (queue.length > 1) {\n        var item = queue.pop();\n        var obj = item.obj[item.prop];\n\n        if (isArray(obj)) {\n            var compacted = [];\n\n            for (var j = 0; j < obj.length; ++j) {\n                if (typeof obj[j] !== 'undefined') {\n                    compacted.push(obj[j]);\n                }\n            }\n\n            item.obj[item.prop] = compacted;\n        }\n    }\n};\n\nvar arrayToObject = function arrayToObject(source, options) {\n    var obj = options && options.plainObjects ? { __proto__: null } : {};\n    for (var i = 0; i < source.length; ++i) {\n        if (typeof source[i] !== 'undefined') {\n            obj[i] = source[i];\n        }\n    }\n\n    return obj;\n};\n\nvar merge = function merge(target, source, options) {\n    /* eslint no-param-reassign: 0 */\n    if (!source) {\n        return target;\n    }\n\n    if (typeof source !== 'object' && typeof source !== 'function') {\n        if (isArray(target)) {\n            target.push(source);\n        } else if (target && typeof target === 'object') {\n            if (isOverflow(target)) {\n                // Add at next numeric index for overflow objects\n                var newIndex = getMaxIndex(target) + 1;\n                target[newIndex] = source;\n                setMaxIndex(target, newIndex);\n            } else if (\n                (options && (options.plainObjects || options.allowPrototypes))\n                || !has.call(Object.prototype, source)\n            ) {\n                target[source] = true;\n            }\n        } else {\n            return [target, source];\n        }\n\n        return target;\n    }\n\n    if (!target || typeof target !== 'object') {\n        if (isOverflow(source)) {\n            // Create new object with target at 0, source values shifted by 1\n            var sourceKeys = Object.keys(source);\n            var result = options && options.plainObjects\n                ? { __proto__: null, 0: target }\n                : { 0: target };\n            for (var m = 0; m < sourceKeys.length; m++) {\n                var oldKey = parseInt(sourceKeys[m], 10);\n                result[oldKey + 1] = source[sourceKeys[m]];\n            }\n            return markOverflow(result, getMaxIndex(source) + 1);\n        }\n        return [target].concat(source);\n    }\n\n    var mergeTarget = target;\n    if (isArray(target) && !isArray(source)) {\n        mergeTarget = arrayToObject(target, options);\n    }\n\n    if (isArray(target) && isArray(source)) {\n        source.forEach(function (item, i) {\n            if (has.call(target, i)) {\n                var targetItem = target[i];\n                if (targetItem && typeof targetItem === 'object' && item && typeof item === 'object') {\n                    target[i] = merge(targetItem, item, options);\n                } else {\n                    target.push(item);\n                }\n            } else {\n                target[i] = item;\n            }\n        });\n        return target;\n    }\n\n    return Object.keys(source).reduce(function (acc, key) {\n        var value = source[key];\n\n        if (has.call(acc, key)) {\n            acc[key] = merge(acc[key], value, options);\n        } else {\n            acc[key] = value;\n        }\n        return acc;\n    }, mergeTarget);\n};\n\nvar assign = function assignSingleSource(target, source) {\n    return Object.keys(source).reduce(function (acc, key) {\n        acc[key] = source[key];\n        return acc;\n    }, target);\n};\n\nvar decode = function (str, defaultDecoder, charset) {\n    var strWithoutPlus = str.replace(/\\+/g, ' ');\n    if (charset === 'iso-8859-1') {\n        // unescape never throws, no try...catch needed:\n        return strWithoutPlus.replace(/%[0-9a-f]{2}/gi, unescape);\n    }\n    // utf-8\n    try {\n        return decodeURIComponent(strWithoutPlus);\n    } catch (e) {\n        return strWithoutPlus;\n    }\n};\n\nvar limit = 1024;\n\n/* eslint operator-linebreak: [2, \"before\"] */\n\nvar encode = function encode(str, defaultEncoder, charset, kind, format) {\n    // This code was originally written by Brian White (mscdex) for the io.js core querystring library.\n    // It has been adapted here for stricter adherence to RFC 3986\n    if (str.length === 0) {\n        return str;\n    }\n\n    var string = str;\n    if (typeof str === 'symbol') {\n        string = Symbol.prototype.toString.call(str);\n    } else if (typeof str !== 'string') {\n        string = String(str);\n    }\n\n    if (charset === 'iso-8859-1') {\n        return escape(string).replace(/%u[0-9a-f]{4}/gi, function ($0) {\n            return '%26%23' + parseInt($0.slice(2), 16) + '%3B';\n        });\n    }\n\n    var out = '';\n    for (var j = 0; j < string.length; j += limit) {\n        var segment = string.length >= limit ? string.slice(j, j + limit) : string;\n        var arr = [];\n\n        for (var i = 0; i < segment.length; ++i) {\n            var c = segment.charCodeAt(i);\n            if (\n                c === 0x2D // -\n                || c === 0x2E // .\n                || c === 0x5F // _\n                || c === 0x7E // ~\n                || (c >= 0x30 && c <= 0x39) // 0-9\n                || (c >= 0x41 && c <= 0x5A) // a-z\n                || (c >= 0x61 && c <= 0x7A) // A-Z\n                || (format === formats.RFC1738 && (c === 0x28 || c === 0x29)) // ( )\n            ) {\n                arr[arr.length] = segment.charAt(i);\n                continue;\n            }\n\n            if (c < 0x80) {\n                arr[arr.length] = hexTable[c];\n                continue;\n            }\n\n            if (c < 0x800) {\n                arr[arr.length] = hexTable[0xC0 | (c >> 6)]\n                    + hexTable[0x80 | (c & 0x3F)];\n                continue;\n            }\n\n            if (c < 0xD800 || c >= 0xE000) {\n                arr[arr.length] = hexTable[0xE0 | (c >> 12)]\n                    + hexTable[0x80 | ((c >> 6) & 0x3F)]\n                    + hexTable[0x80 | (c & 0x3F)];\n                continue;\n            }\n\n            i += 1;\n            c = 0x10000 + (((c & 0x3FF) << 10) | (segment.charCodeAt(i) & 0x3FF));\n\n            arr[arr.length] = hexTable[0xF0 | (c >> 18)]\n                + hexTable[0x80 | ((c >> 12) & 0x3F)]\n                + hexTable[0x80 | ((c >> 6) & 0x3F)]\n                + hexTable[0x80 | (c & 0x3F)];\n        }\n\n        out += arr.join('');\n    }\n\n    return out;\n};\n\nvar compact = function compact(value) {\n    var queue = [{ obj: { o: value }, prop: 'o' }];\n    var refs = [];\n\n    for (var i = 0; i < queue.length; ++i) {\n        var item = queue[i];\n        var obj = item.obj[item.prop];\n\n        var keys = Object.keys(obj);\n        for (var j = 0; j < keys.length; ++j) {\n            var key = keys[j];\n            var val = obj[key];\n            if (typeof val === 'object' && val !== null && refs.indexOf(val) === -1) {\n                queue.push({ obj: obj, prop: key });\n                refs.push(val);\n            }\n        }\n    }\n\n    compactQueue(queue);\n\n    return value;\n};\n\nvar isRegExp = function isRegExp(obj) {\n    return Object.prototype.toString.call(obj) === '[object RegExp]';\n};\n\nvar isBuffer = function isBuffer(obj) {\n    if (!obj || typeof obj !== 'object') {\n        return false;\n    }\n\n    return !!(obj.constructor && obj.constructor.isBuffer && obj.constructor.isBuffer(obj));\n};\n\nvar combine = function combine(a, b, arrayLimit, plainObjects) {\n    // If 'a' is already an overflow object, add to it\n    if (isOverflow(a)) {\n        var newIndex = getMaxIndex(a) + 1;\n        a[newIndex] = b;\n        setMaxIndex(a, newIndex);\n        return a;\n    }\n\n    var result = [].concat(a, b);\n    if (result.length > arrayLimit) {\n        return markOverflow(arrayToObject(result, { plainObjects: plainObjects }), result.length - 1);\n    }\n    return result;\n};\n\nvar maybeMap = function maybeMap(val, fn) {\n    if (isArray(val)) {\n        var mapped = [];\n        for (var i = 0; i < val.length; i += 1) {\n            mapped.push(fn(val[i]));\n        }\n        return mapped;\n    }\n    return fn(val);\n};\n\nmodule.exports = {\n    arrayToObject: arrayToObject,\n    assign: assign,\n    combine: combine,\n    compact: compact,\n    decode: decode,\n    encode: encode,\n    isBuffer: isBuffer,\n    isOverflow: isOverflow,\n    isRegExp: isRegExp,\n    maybeMap: maybeMap,\n    merge: merge\n};\n","'use strict';\n\nvar has = Object.prototype.hasOwnProperty\n  , undef;\n\n/**\n * Decode a URI encoded string.\n *\n * @param {String} input The URI encoded string.\n * @returns {String|Null} The decoded string.\n * @api private\n */\nfunction decode(input) {\n  try {\n    return decodeURIComponent(input.replace(/\\+/g, ' '));\n  } catch (e) {\n    return null;\n  }\n}\n\n/**\n * Attempts to encode a given input.\n *\n * @param {String} input The string that needs to be encoded.\n * @returns {String|Null} The encoded string.\n * @api private\n */\nfunction encode(input) {\n  try {\n    return encodeURIComponent(input);\n  } catch (e) {\n    return null;\n  }\n}\n\n/**\n * Simple query string parser.\n *\n * @param {String} query The query string that needs to be parsed.\n * @returns {Object}\n * @api public\n */\nfunction querystring(query) {\n  var parser = /([^=?#&]+)=?([^&]*)/g\n    , result = {}\n    , part;\n\n  while (part = parser.exec(query)) {\n    var key = decode(part[1])\n      , value = decode(part[2]);\n\n    //\n    // Prevent overriding of existing properties. This ensures that build-in\n    // methods like `toString` or __proto__ are not overriden by malicious\n    // querystrings.\n    //\n    // In the case if failed decoding, we want to omit the key/value pairs\n    // from the result.\n    //\n    if (key === null || value === null || key in result) continue;\n    result[key] = value;\n  }\n\n  return result;\n}\n\n/**\n * Transform a query string to an object.\n *\n * @param {Object} obj Object that should be transformed.\n * @param {String} prefix Optional prefix.\n * @returns {String}\n * @api public\n */\nfunction querystringify(obj, prefix) {\n  prefix = prefix || '';\n\n  var pairs = []\n    , value\n    , key;\n\n  //\n  // Optionally prefix with a '?' if needed\n  //\n  if ('string' !== typeof prefix) prefix = '?';\n\n  for (key in obj) {\n    if (has.call(obj, key)) {\n      value = obj[key];\n\n      //\n      // Edge cases where we actually want to encode the value to an empty\n      // string instead of the stringified value.\n      //\n      if (!value && (value === null || value === undef || isNaN(value))) {\n        value = '';\n      }\n\n      key = encode(key);\n      value = encode(value);\n\n      //\n      // If we failed to encode the strings, we should bail out as we don't\n      // want to add invalid strings to the query.\n      //\n      if (key === null || value === null) continue;\n      pairs.push(key +'='+ value);\n    }\n  }\n\n  return pairs.length ? prefix + pairs.join('&') : '';\n}\n\n//\n// Expose the module.\n//\nexports.stringify = querystringify;\nexports.parse = querystring;\n","'use strict';\n\n/**\n * Check if we're required to add a port number.\n *\n * @see https://url.spec.whatwg.org/#default-port\n * @param {Number|String} port Port number we need to check\n * @param {String} protocol Protocol we need to check against.\n * @returns {Boolean} Is it a default port for the given protocol\n * @api private\n */\nmodule.exports = function required(port, protocol) {\n  protocol = protocol.split(':')[0];\n  port = +port;\n\n  if (!port) return false;\n\n  switch (protocol) {\n    case 'http':\n    case 'ws':\n    return port !== 80;\n\n    case 'https':\n    case 'wss':\n    return port !== 443;\n\n    case 'ftp':\n    return port !== 21;\n\n    case 'gopher':\n    return port !== 70;\n\n    case 'file':\n    return false;\n  }\n\n  return port !== 0;\n};\n","'use strict';\n\nvar callBound = require('call-bound');\nvar isRegex = require('is-regex');\n\nvar $exec = callBound('RegExp.prototype.exec');\nvar $TypeError = require('es-errors/type');\n\n/** @type {import('.')} */\nmodule.exports = function regexTester(regex) {\n\tif (!isRegex(regex)) {\n\t\tthrow new $TypeError('`regex` must be a RegExp');\n\t}\n\treturn function test(s) {\n\t\treturn $exec(regex, s) !== null;\n\t};\n};\n","'use strict';\n\nvar inspect = require('object-inspect');\n\nvar $TypeError = require('es-errors/type');\n\n/*\n* This function traverses the list returning the node corresponding to the given key.\n*\n* That node is also moved to the head of the list, so that if it's accessed again we don't need to traverse the whole list.\n* By doing so, all the recently used nodes can be accessed relatively quickly.\n*/\n/** @type {import('./list.d.ts').listGetNode} */\n// eslint-disable-next-line consistent-return\nvar listGetNode = function (list, key, isDelete) {\n\t/** @type {typeof list | NonNullable<(typeof list)['next']>} */\n\tvar prev = list;\n\t/** @type {(typeof list)['next']} */\n\tvar curr;\n\t// eslint-disable-next-line eqeqeq\n\tfor (; (curr = prev.next) != null; prev = curr) {\n\t\tif (curr.key === key) {\n\t\t\tprev.next = curr.next;\n\t\t\tif (!isDelete) {\n\t\t\t\t// eslint-disable-next-line no-extra-parens\n\t\t\t\tcurr.next = /** @type {NonNullable} */ (list.next);\n\t\t\t\tlist.next = curr; // eslint-disable-line no-param-reassign\n\t\t\t}\n\t\t\treturn curr;\n\t\t}\n\t}\n};\n\n/** @type {import('./list.d.ts').listGet} */\nvar listGet = function (objects, key) {\n\tif (!objects) {\n\t\treturn void undefined;\n\t}\n\tvar node = listGetNode(objects, key);\n\treturn node && node.value;\n};\n/** @type {import('./list.d.ts').listSet} */\nvar listSet = function (objects, key, value) {\n\tvar node = listGetNode(objects, key);\n\tif (node) {\n\t\tnode.value = value;\n\t} else {\n\t\t// Prepend the new node to the beginning of the list\n\t\tobjects.next = /** @type {import('./list.d.ts').ListNode} */ ({ // eslint-disable-line no-param-reassign, no-extra-parens\n\t\t\tkey: key,\n\t\t\tnext: objects.next,\n\t\t\tvalue: value\n\t\t});\n\t}\n};\n/** @type {import('./list.d.ts').listHas} */\nvar listHas = function (objects, key) {\n\tif (!objects) {\n\t\treturn false;\n\t}\n\treturn !!listGetNode(objects, key);\n};\n/** @type {import('./list.d.ts').listDelete} */\n// eslint-disable-next-line consistent-return\nvar listDelete = function (objects, key) {\n\tif (objects) {\n\t\treturn listGetNode(objects, key, true);\n\t}\n};\n\n/** @type {import('.')} */\nmodule.exports = function getSideChannelList() {\n\t/** @typedef {ReturnType} Channel */\n\t/** @typedef {Parameters[0]} K */\n\t/** @typedef {Parameters[1]} V */\n\n\t/** @type {import('./list.d.ts').RootNode | undefined} */ var $o;\n\n\t/** @type {Channel} */\n\tvar channel = {\n\t\tassert: function (key) {\n\t\t\tif (!channel.has(key)) {\n\t\t\t\tthrow new $TypeError('Side channel does not contain ' + inspect(key));\n\t\t\t}\n\t\t},\n\t\t'delete': function (key) {\n\t\t\tvar root = $o && $o.next;\n\t\t\tvar deletedNode = listDelete($o, key);\n\t\t\tif (deletedNode && root && root === deletedNode) {\n\t\t\t\t$o = void undefined;\n\t\t\t}\n\t\t\treturn !!deletedNode;\n\t\t},\n\t\tget: function (key) {\n\t\t\treturn listGet($o, key);\n\t\t},\n\t\thas: function (key) {\n\t\t\treturn listHas($o, key);\n\t\t},\n\t\tset: function (key, value) {\n\t\t\tif (!$o) {\n\t\t\t\t// Initialize the linked list as an empty node, so that we don't have to special-case handling of the first node: we can always refer to it as (previous node).next, instead of something like (list).head\n\t\t\t\t$o = {\n\t\t\t\t\tnext: void undefined\n\t\t\t\t};\n\t\t\t}\n\t\t\t// eslint-disable-next-line no-extra-parens\n\t\t\tlistSet(/** @type {NonNullable} */ ($o), key, value);\n\t\t}\n\t};\n\t// @ts-expect-error TODO: figure out why this is erroring\n\treturn channel;\n};\n","'use strict';\n\nvar GetIntrinsic = require('get-intrinsic');\nvar callBound = require('call-bound');\nvar inspect = require('object-inspect');\n\nvar $TypeError = require('es-errors/type');\nvar $Map = GetIntrinsic('%Map%', true);\n\n/** @type {(thisArg: Map, key: K) => V} */\nvar $mapGet = callBound('Map.prototype.get', true);\n/** @type {(thisArg: Map, key: K, value: V) => void} */\nvar $mapSet = callBound('Map.prototype.set', true);\n/** @type {(thisArg: Map, key: K) => boolean} */\nvar $mapHas = callBound('Map.prototype.has', true);\n/** @type {(thisArg: Map, key: K) => boolean} */\nvar $mapDelete = callBound('Map.prototype.delete', true);\n/** @type {(thisArg: Map) => number} */\nvar $mapSize = callBound('Map.prototype.size', true);\n\n/** @type {import('.')} */\nmodule.exports = !!$Map && /** @type {Exclude} */ function getSideChannelMap() {\n\t/** @typedef {ReturnType} Channel */\n\t/** @typedef {Parameters[0]} K */\n\t/** @typedef {Parameters[1]} V */\n\n\t/** @type {Map | undefined} */ var $m;\n\n\t/** @type {Channel} */\n\tvar channel = {\n\t\tassert: function (key) {\n\t\t\tif (!channel.has(key)) {\n\t\t\t\tthrow new $TypeError('Side channel does not contain ' + inspect(key));\n\t\t\t}\n\t\t},\n\t\t'delete': function (key) {\n\t\t\tif ($m) {\n\t\t\t\tvar result = $mapDelete($m, key);\n\t\t\t\tif ($mapSize($m) === 0) {\n\t\t\t\t\t$m = void undefined;\n\t\t\t\t}\n\t\t\t\treturn result;\n\t\t\t}\n\t\t\treturn false;\n\t\t},\n\t\tget: function (key) { // eslint-disable-line consistent-return\n\t\t\tif ($m) {\n\t\t\t\treturn $mapGet($m, key);\n\t\t\t}\n\t\t},\n\t\thas: function (key) {\n\t\t\tif ($m) {\n\t\t\t\treturn $mapHas($m, key);\n\t\t\t}\n\t\t\treturn false;\n\t\t},\n\t\tset: function (key, value) {\n\t\t\tif (!$m) {\n\t\t\t\t// @ts-expect-error TS can't handle narrowing a variable inside a closure\n\t\t\t\t$m = new $Map();\n\t\t\t}\n\t\t\t$mapSet($m, key, value);\n\t\t}\n\t};\n\n\t// @ts-expect-error TODO: figure out why TS is erroring here\n\treturn channel;\n};\n","'use strict';\n\nvar GetIntrinsic = require('get-intrinsic');\nvar callBound = require('call-bound');\nvar inspect = require('object-inspect');\nvar getSideChannelMap = require('side-channel-map');\n\nvar $TypeError = require('es-errors/type');\nvar $WeakMap = GetIntrinsic('%WeakMap%', true);\n\n/** @type {(thisArg: WeakMap, key: K) => V} */\nvar $weakMapGet = callBound('WeakMap.prototype.get', true);\n/** @type {(thisArg: WeakMap, key: K, value: V) => void} */\nvar $weakMapSet = callBound('WeakMap.prototype.set', true);\n/** @type {(thisArg: WeakMap, key: K) => boolean} */\nvar $weakMapHas = callBound('WeakMap.prototype.has', true);\n/** @type {(thisArg: WeakMap, key: K) => boolean} */\nvar $weakMapDelete = callBound('WeakMap.prototype.delete', true);\n\n/** @type {import('.')} */\nmodule.exports = $WeakMap\n\t? /** @type {Exclude} */ function getSideChannelWeakMap() {\n\t\t/** @typedef {ReturnType} Channel */\n\t\t/** @typedef {Parameters[0]} K */\n\t\t/** @typedef {Parameters[1]} V */\n\n\t\t/** @type {WeakMap | undefined} */ var $wm;\n\t\t/** @type {Channel | undefined} */ var $m;\n\n\t\t/** @type {Channel} */\n\t\tvar channel = {\n\t\t\tassert: function (key) {\n\t\t\t\tif (!channel.has(key)) {\n\t\t\t\t\tthrow new $TypeError('Side channel does not contain ' + inspect(key));\n\t\t\t\t}\n\t\t\t},\n\t\t\t'delete': function (key) {\n\t\t\t\tif ($WeakMap && key && (typeof key === 'object' || typeof key === 'function')) {\n\t\t\t\t\tif ($wm) {\n\t\t\t\t\t\treturn $weakMapDelete($wm, key);\n\t\t\t\t\t}\n\t\t\t\t} else if (getSideChannelMap) {\n\t\t\t\t\tif ($m) {\n\t\t\t\t\t\treturn $m['delete'](key);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\treturn false;\n\t\t\t},\n\t\t\tget: function (key) {\n\t\t\t\tif ($WeakMap && key && (typeof key === 'object' || typeof key === 'function')) {\n\t\t\t\t\tif ($wm) {\n\t\t\t\t\t\treturn $weakMapGet($wm, key);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\treturn $m && $m.get(key);\n\t\t\t},\n\t\t\thas: function (key) {\n\t\t\t\tif ($WeakMap && key && (typeof key === 'object' || typeof key === 'function')) {\n\t\t\t\t\tif ($wm) {\n\t\t\t\t\t\treturn $weakMapHas($wm, key);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\treturn !!$m && $m.has(key);\n\t\t\t},\n\t\t\tset: function (key, value) {\n\t\t\t\tif ($WeakMap && key && (typeof key === 'object' || typeof key === 'function')) {\n\t\t\t\t\tif (!$wm) {\n\t\t\t\t\t\t$wm = new $WeakMap();\n\t\t\t\t\t}\n\t\t\t\t\t$weakMapSet($wm, key, value);\n\t\t\t\t} else if (getSideChannelMap) {\n\t\t\t\t\tif (!$m) {\n\t\t\t\t\t\t$m = getSideChannelMap();\n\t\t\t\t\t}\n\t\t\t\t\t// eslint-disable-next-line no-extra-parens\n\t\t\t\t\t/** @type {NonNullable} */ ($m).set(key, value);\n\t\t\t\t}\n\t\t\t}\n\t\t};\n\n\t\t// @ts-expect-error TODO: figure out why this is erroring\n\t\treturn channel;\n\t}\n\t: getSideChannelMap;\n","'use strict';\n\nvar $TypeError = require('es-errors/type');\nvar inspect = require('object-inspect');\nvar getSideChannelList = require('side-channel-list');\nvar getSideChannelMap = require('side-channel-map');\nvar getSideChannelWeakMap = require('side-channel-weakmap');\n\nvar makeChannel = getSideChannelWeakMap || getSideChannelMap || getSideChannelList;\n\n/** @type {import('.')} */\nmodule.exports = function getSideChannel() {\n\t/** @typedef {ReturnType} Channel */\n\n\t/** @type {Channel | undefined} */ var $channelData;\n\n\t/** @type {Channel} */\n\tvar channel = {\n\t\tassert: function (key) {\n\t\t\tif (!channel.has(key)) {\n\t\t\t\tthrow new $TypeError('Side channel does not contain ' + inspect(key));\n\t\t\t}\n\t\t},\n\t\t'delete': function (key) {\n\t\t\treturn !!$channelData && $channelData['delete'](key);\n\t\t},\n\t\tget: function (key) {\n\t\t\treturn $channelData && $channelData.get(key);\n\t\t},\n\t\thas: function (key) {\n\t\t\treturn !!$channelData && $channelData.has(key);\n\t\t},\n\t\tset: function (key, value) {\n\t\t\tif (!$channelData) {\n\t\t\t\t$channelData = makeChannel();\n\t\t\t}\n\n\t\t\t$channelData.set(key, value);\n\t\t}\n\t};\n\t// @ts-expect-error TODO: figure out why this is erroring\n\treturn channel;\n};\n","var ClientRequest = require('./lib/request')\nvar response = require('./lib/response')\nvar extend = require('xtend')\nvar statusCodes = require('builtin-status-codes')\nvar url = require('url')\n\nvar http = exports\n\nhttp.request = function (opts, cb) {\n\tif (typeof opts === 'string')\n\t\topts = url.parse(opts)\n\telse\n\t\topts = extend(opts)\n\n\t// Normally, the page is loaded from http or https, so not specifying a protocol\n\t// will result in a (valid) protocol-relative url. However, this won't work if\n\t// the protocol is something else, like 'file:'\n\tvar defaultProtocol = global.location.protocol.search(/^https?:$/) === -1 ? 'http:' : ''\n\n\tvar protocol = opts.protocol || defaultProtocol\n\tvar host = opts.hostname || opts.host\n\tvar port = opts.port\n\tvar path = opts.path || '/'\n\n\t// Necessary for IPv6 addresses\n\tif (host && host.indexOf(':') !== -1)\n\t\thost = '[' + host + ']'\n\n\t// This may be a relative url. The browser should always be able to interpret it correctly.\n\topts.url = (host ? (protocol + '//' + host) : '') + (port ? ':' + port : '') + path\n\topts.method = (opts.method || 'GET').toUpperCase()\n\topts.headers = opts.headers || {}\n\n\t// Also valid opts.auth, opts.mode\n\n\tvar req = new ClientRequest(opts)\n\tif (cb)\n\t\treq.on('response', cb)\n\treturn req\n}\n\nhttp.get = function get (opts, cb) {\n\tvar req = http.request(opts, cb)\n\treq.end()\n\treturn req\n}\n\nhttp.ClientRequest = ClientRequest\nhttp.IncomingMessage = response.IncomingMessage\n\nhttp.Agent = function () {}\nhttp.Agent.defaultMaxSockets = 4\n\nhttp.globalAgent = new http.Agent()\n\nhttp.STATUS_CODES = statusCodes\n\nhttp.METHODS = [\n\t'CHECKOUT',\n\t'CONNECT',\n\t'COPY',\n\t'DELETE',\n\t'GET',\n\t'HEAD',\n\t'LOCK',\n\t'M-SEARCH',\n\t'MERGE',\n\t'MKACTIVITY',\n\t'MKCOL',\n\t'MOVE',\n\t'NOTIFY',\n\t'OPTIONS',\n\t'PATCH',\n\t'POST',\n\t'PROPFIND',\n\t'PROPPATCH',\n\t'PURGE',\n\t'PUT',\n\t'REPORT',\n\t'SEARCH',\n\t'SUBSCRIBE',\n\t'TRACE',\n\t'UNLOCK',\n\t'UNSUBSCRIBE'\n]","exports.fetch = isFunction(global.fetch) && isFunction(global.ReadableStream)\n\nexports.writableStream = isFunction(global.WritableStream)\n\nexports.abortController = isFunction(global.AbortController)\n\n// The xhr request to example.com may violate some restrictive CSP configurations,\n// so if we're running in a browser that supports `fetch`, avoid calling getXHR()\n// and assume support for certain features below.\nvar xhr\nfunction getXHR () {\n\t// Cache the xhr value\n\tif (xhr !== undefined) return xhr\n\n\tif (global.XMLHttpRequest) {\n\t\txhr = new global.XMLHttpRequest()\n\t\t// If XDomainRequest is available (ie only, where xhr might not work\n\t\t// cross domain), use the page location. Otherwise use example.com\n\t\t// Note: this doesn't actually make an http request.\n\t\ttry {\n\t\t\txhr.open('GET', global.XDomainRequest ? '/' : 'https://example.com')\n\t\t} catch(e) {\n\t\t\txhr = null\n\t\t}\n\t} else {\n\t\t// Service workers don't have XHR\n\t\txhr = null\n\t}\n\treturn xhr\n}\n\nfunction checkTypeSupport (type) {\n\tvar xhr = getXHR()\n\tif (!xhr) return false\n\ttry {\n\t\txhr.responseType = type\n\t\treturn xhr.responseType === type\n\t} catch (e) {}\n\treturn false\n}\n\n// If fetch is supported, then arraybuffer will be supported too. Skip calling\n// checkTypeSupport(), since that calls getXHR().\nexports.arraybuffer = exports.fetch || checkTypeSupport('arraybuffer')\n\n// These next two tests unavoidably show warnings in Chrome. Since fetch will always\n// be used if it's available, just return false for these to avoid the warnings.\nexports.msstream = !exports.fetch && checkTypeSupport('ms-stream')\nexports.mozchunkedarraybuffer = !exports.fetch && checkTypeSupport('moz-chunked-arraybuffer')\n\n// If fetch is supported, then overrideMimeType will be supported too. Skip calling\n// getXHR().\nexports.overrideMimeType = exports.fetch || (getXHR() ? isFunction(getXHR().overrideMimeType) : false)\n\nfunction isFunction (value) {\n\treturn typeof value === 'function'\n}\n\nxhr = null // Help gc\n","var capability = require('./capability')\nvar inherits = require('inherits')\nvar response = require('./response')\nvar stream = require('readable-stream')\n\nvar IncomingMessage = response.IncomingMessage\nvar rStates = response.readyStates\n\nfunction decideMode (preferBinary, useFetch) {\n\tif (capability.fetch && useFetch) {\n\t\treturn 'fetch'\n\t} else if (capability.mozchunkedarraybuffer) {\n\t\treturn 'moz-chunked-arraybuffer'\n\t} else if (capability.msstream) {\n\t\treturn 'ms-stream'\n\t} else if (capability.arraybuffer && preferBinary) {\n\t\treturn 'arraybuffer'\n\t} else {\n\t\treturn 'text'\n\t}\n}\n\nvar ClientRequest = module.exports = function (opts) {\n\tvar self = this\n\tstream.Writable.call(self)\n\n\tself._opts = opts\n\tself._body = []\n\tself._headers = {}\n\tif (opts.auth)\n\t\tself.setHeader('Authorization', 'Basic ' + Buffer.from(opts.auth).toString('base64'))\n\tObject.keys(opts.headers).forEach(function (name) {\n\t\tself.setHeader(name, opts.headers[name])\n\t})\n\n\tvar preferBinary\n\tvar useFetch = true\n\tif (opts.mode === 'disable-fetch' || ('requestTimeout' in opts && !capability.abortController)) {\n\t\t// If the use of XHR should be preferred. Not typically needed.\n\t\tuseFetch = false\n\t\tpreferBinary = true\n\t} else if (opts.mode === 'prefer-streaming') {\n\t\t// If streaming is a high priority but binary compatibility and\n\t\t// the accuracy of the 'content-type' header aren't\n\t\tpreferBinary = false\n\t} else if (opts.mode === 'allow-wrong-content-type') {\n\t\t// If streaming is more important than preserving the 'content-type' header\n\t\tpreferBinary = !capability.overrideMimeType\n\t} else if (!opts.mode || opts.mode === 'default' || opts.mode === 'prefer-fast') {\n\t\t// Use binary if text streaming may corrupt data or the content-type header, or for speed\n\t\tpreferBinary = true\n\t} else {\n\t\tthrow new Error('Invalid value for opts.mode')\n\t}\n\tself._mode = decideMode(preferBinary, useFetch)\n\tself._fetchTimer = null\n\tself._socketTimeout = null\n\tself._socketTimer = null\n\n\tself.on('finish', function () {\n\t\tself._onFinish()\n\t})\n}\n\ninherits(ClientRequest, stream.Writable)\n\nClientRequest.prototype.setHeader = function (name, value) {\n\tvar self = this\n\tvar lowerName = name.toLowerCase()\n\t// This check is not necessary, but it prevents warnings from browsers about setting unsafe\n\t// headers. To be honest I'm not entirely sure hiding these warnings is a good thing, but\n\t// http-browserify did it, so I will too.\n\tif (unsafeHeaders.indexOf(lowerName) !== -1)\n\t\treturn\n\n\tself._headers[lowerName] = {\n\t\tname: name,\n\t\tvalue: value\n\t}\n}\n\nClientRequest.prototype.getHeader = function (name) {\n\tvar header = this._headers[name.toLowerCase()]\n\tif (header)\n\t\treturn header.value\n\treturn null\n}\n\nClientRequest.prototype.removeHeader = function (name) {\n\tvar self = this\n\tdelete self._headers[name.toLowerCase()]\n}\n\nClientRequest.prototype._onFinish = function () {\n\tvar self = this\n\n\tif (self._destroyed)\n\t\treturn\n\tvar opts = self._opts\n\n\tif ('timeout' in opts && opts.timeout !== 0) {\n\t\tself.setTimeout(opts.timeout)\n\t}\n\n\tvar headersObj = self._headers\n\tvar body = null\n\tif (opts.method !== 'GET' && opts.method !== 'HEAD') {\n        body = new Blob(self._body, {\n            type: (headersObj['content-type'] || {}).value || ''\n        });\n    }\n\n\t// create flattened list of headers\n\tvar headersList = []\n\tObject.keys(headersObj).forEach(function (keyName) {\n\t\tvar name = headersObj[keyName].name\n\t\tvar value = headersObj[keyName].value\n\t\tif (Array.isArray(value)) {\n\t\t\tvalue.forEach(function (v) {\n\t\t\t\theadersList.push([name, v])\n\t\t\t})\n\t\t} else {\n\t\t\theadersList.push([name, value])\n\t\t}\n\t})\n\n\tif (self._mode === 'fetch') {\n\t\tvar signal = null\n\t\tif (capability.abortController) {\n\t\t\tvar controller = new AbortController()\n\t\t\tsignal = controller.signal\n\t\t\tself._fetchAbortController = controller\n\n\t\t\tif ('requestTimeout' in opts && opts.requestTimeout !== 0) {\n\t\t\t\tself._fetchTimer = global.setTimeout(function () {\n\t\t\t\t\tself.emit('requestTimeout')\n\t\t\t\t\tif (self._fetchAbortController)\n\t\t\t\t\t\tself._fetchAbortController.abort()\n\t\t\t\t}, opts.requestTimeout)\n\t\t\t}\n\t\t}\n\n\t\tglobal.fetch(self._opts.url, {\n\t\t\tmethod: self._opts.method,\n\t\t\theaders: headersList,\n\t\t\tbody: body || undefined,\n\t\t\tmode: 'cors',\n\t\t\tcredentials: opts.withCredentials ? 'include' : 'same-origin',\n\t\t\tsignal: signal\n\t\t}).then(function (response) {\n\t\t\tself._fetchResponse = response\n\t\t\tself._resetTimers(false)\n\t\t\tself._connect()\n\t\t}, function (reason) {\n\t\t\tself._resetTimers(true)\n\t\t\tif (!self._destroyed)\n\t\t\t\tself.emit('error', reason)\n\t\t})\n\t} else {\n\t\tvar xhr = self._xhr = new global.XMLHttpRequest()\n\t\ttry {\n\t\t\txhr.open(self._opts.method, self._opts.url, true)\n\t\t} catch (err) {\n\t\t\tprocess.nextTick(function () {\n\t\t\t\tself.emit('error', err)\n\t\t\t})\n\t\t\treturn\n\t\t}\n\n\t\t// Can't set responseType on really old browsers\n\t\tif ('responseType' in xhr)\n\t\t\txhr.responseType = self._mode\n\n\t\tif ('withCredentials' in xhr)\n\t\t\txhr.withCredentials = !!opts.withCredentials\n\n\t\tif (self._mode === 'text' && 'overrideMimeType' in xhr)\n\t\t\txhr.overrideMimeType('text/plain; charset=x-user-defined')\n\n\t\tif ('requestTimeout' in opts) {\n\t\t\txhr.timeout = opts.requestTimeout\n\t\t\txhr.ontimeout = function () {\n\t\t\t\tself.emit('requestTimeout')\n\t\t\t}\n\t\t}\n\n\t\theadersList.forEach(function (header) {\n\t\t\txhr.setRequestHeader(header[0], header[1])\n\t\t})\n\n\t\tself._response = null\n\t\txhr.onreadystatechange = function () {\n\t\t\tswitch (xhr.readyState) {\n\t\t\t\tcase rStates.LOADING:\n\t\t\t\tcase rStates.DONE:\n\t\t\t\t\tself._onXHRProgress()\n\t\t\t\t\tbreak\n\t\t\t}\n\t\t}\n\t\t// Necessary for streaming in Firefox, since xhr.response is ONLY defined\n\t\t// in onprogress, not in onreadystatechange with xhr.readyState = 3\n\t\tif (self._mode === 'moz-chunked-arraybuffer') {\n\t\t\txhr.onprogress = function () {\n\t\t\t\tself._onXHRProgress()\n\t\t\t}\n\t\t}\n\n\t\txhr.onerror = function () {\n\t\t\tif (self._destroyed)\n\t\t\t\treturn\n\t\t\tself._resetTimers(true)\n\t\t\tself.emit('error', new Error('XHR error'))\n\t\t}\n\n\t\ttry {\n\t\t\txhr.send(body)\n\t\t} catch (err) {\n\t\t\tprocess.nextTick(function () {\n\t\t\t\tself.emit('error', err)\n\t\t\t})\n\t\t\treturn\n\t\t}\n\t}\n}\n\n/**\n * Checks if xhr.status is readable and non-zero, indicating no error.\n * Even though the spec says it should be available in readyState 3,\n * accessing it throws an exception in IE8\n */\nfunction statusValid (xhr) {\n\ttry {\n\t\tvar status = xhr.status\n\t\treturn (status !== null && status !== 0)\n\t} catch (e) {\n\t\treturn false\n\t}\n}\n\nClientRequest.prototype._onXHRProgress = function () {\n\tvar self = this\n\n\tself._resetTimers(false)\n\n\tif (!statusValid(self._xhr) || self._destroyed)\n\t\treturn\n\n\tif (!self._response)\n\t\tself._connect()\n\n\tself._response._onXHRProgress(self._resetTimers.bind(self))\n}\n\nClientRequest.prototype._connect = function () {\n\tvar self = this\n\n\tif (self._destroyed)\n\t\treturn\n\n\tself._response = new IncomingMessage(self._xhr, self._fetchResponse, self._mode, self._resetTimers.bind(self))\n\tself._response.on('error', function(err) {\n\t\tself.emit('error', err)\n\t})\n\n\tself.emit('response', self._response)\n}\n\nClientRequest.prototype._write = function (chunk, encoding, cb) {\n\tvar self = this\n\n\tself._body.push(chunk)\n\tcb()\n}\n\nClientRequest.prototype._resetTimers = function (done) {\n\tvar self = this\n\n\tglobal.clearTimeout(self._socketTimer)\n\tself._socketTimer = null\n\n\tif (done) {\n\t\tglobal.clearTimeout(self._fetchTimer)\n\t\tself._fetchTimer = null\n\t} else if (self._socketTimeout) {\n\t\tself._socketTimer = global.setTimeout(function () {\n\t\t\tself.emit('timeout')\n\t\t}, self._socketTimeout)\n\t}\n}\n\nClientRequest.prototype.abort = ClientRequest.prototype.destroy = function (err) {\n\tvar self = this\n\tself._destroyed = true\n\tself._resetTimers(true)\n\tif (self._response)\n\t\tself._response._destroyed = true\n\tif (self._xhr)\n\t\tself._xhr.abort()\n\telse if (self._fetchAbortController)\n\t\tself._fetchAbortController.abort()\n\n\tif (err)\n\t\tself.emit('error', err)\n}\n\nClientRequest.prototype.end = function (data, encoding, cb) {\n\tvar self = this\n\tif (typeof data === 'function') {\n\t\tcb = data\n\t\tdata = undefined\n\t}\n\n\tstream.Writable.prototype.end.call(self, data, encoding, cb)\n}\n\nClientRequest.prototype.setTimeout = function (timeout, cb) {\n\tvar self = this\n\n\tif (cb)\n\t\tself.once('timeout', cb)\n\n\tself._socketTimeout = timeout\n\tself._resetTimers(false)\n}\n\nClientRequest.prototype.flushHeaders = function () {}\nClientRequest.prototype.setNoDelay = function () {}\nClientRequest.prototype.setSocketKeepAlive = function () {}\n\n// Taken from http://www.w3.org/TR/XMLHttpRequest/#the-setrequestheader%28%29-method\nvar unsafeHeaders = [\n\t'accept-charset',\n\t'accept-encoding',\n\t'access-control-request-headers',\n\t'access-control-request-method',\n\t'connection',\n\t'content-length',\n\t'cookie',\n\t'cookie2',\n\t'date',\n\t'dnt',\n\t'expect',\n\t'host',\n\t'keep-alive',\n\t'origin',\n\t'referer',\n\t'te',\n\t'trailer',\n\t'transfer-encoding',\n\t'upgrade',\n\t'via'\n]\n","var capability = require('./capability')\nvar inherits = require('inherits')\nvar stream = require('readable-stream')\n\nvar rStates = exports.readyStates = {\n\tUNSENT: 0,\n\tOPENED: 1,\n\tHEADERS_RECEIVED: 2,\n\tLOADING: 3,\n\tDONE: 4\n}\n\nvar IncomingMessage = exports.IncomingMessage = function (xhr, response, mode, resetTimers) {\n\tvar self = this\n\tstream.Readable.call(self)\n\n\tself._mode = mode\n\tself.headers = {}\n\tself.rawHeaders = []\n\tself.trailers = {}\n\tself.rawTrailers = []\n\n\t// Fake the 'close' event, but only once 'end' fires\n\tself.on('end', function () {\n\t\t// The nextTick is necessary to prevent the 'request' module from causing an infinite loop\n\t\tprocess.nextTick(function () {\n\t\t\tself.emit('close')\n\t\t})\n\t})\n\n\tif (mode === 'fetch') {\n\t\tself._fetchResponse = response\n\n\t\tself.url = response.url\n\t\tself.statusCode = response.status\n\t\tself.statusMessage = response.statusText\n\t\t\n\t\tresponse.headers.forEach(function (header, key){\n\t\t\tself.headers[key.toLowerCase()] = header\n\t\t\tself.rawHeaders.push(key, header)\n\t\t})\n\n\t\tif (capability.writableStream) {\n\t\t\tvar writable = new WritableStream({\n\t\t\t\twrite: function (chunk) {\n\t\t\t\t\tresetTimers(false)\n\t\t\t\t\treturn new Promise(function (resolve, reject) {\n\t\t\t\t\t\tif (self._destroyed) {\n\t\t\t\t\t\t\treject()\n\t\t\t\t\t\t} else if(self.push(Buffer.from(chunk))) {\n\t\t\t\t\t\t\tresolve()\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tself._resumeFetch = resolve\n\t\t\t\t\t\t}\n\t\t\t\t\t})\n\t\t\t\t},\n\t\t\t\tclose: function () {\n\t\t\t\t\tresetTimers(true)\n\t\t\t\t\tif (!self._destroyed)\n\t\t\t\t\t\tself.push(null)\n\t\t\t\t},\n\t\t\t\tabort: function (err) {\n\t\t\t\t\tresetTimers(true)\n\t\t\t\t\tif (!self._destroyed)\n\t\t\t\t\t\tself.emit('error', err)\n\t\t\t\t}\n\t\t\t})\n\n\t\t\ttry {\n\t\t\t\tresponse.body.pipeTo(writable).catch(function (err) {\n\t\t\t\t\tresetTimers(true)\n\t\t\t\t\tif (!self._destroyed)\n\t\t\t\t\t\tself.emit('error', err)\n\t\t\t\t})\n\t\t\t\treturn\n\t\t\t} catch (e) {} // pipeTo method isn't defined. Can't find a better way to feature test this\n\t\t}\n\t\t// fallback for when writableStream or pipeTo aren't available\n\t\tvar reader = response.body.getReader()\n\t\tfunction read () {\n\t\t\treader.read().then(function (result) {\n\t\t\t\tif (self._destroyed)\n\t\t\t\t\treturn\n\t\t\t\tresetTimers(result.done)\n\t\t\t\tif (result.done) {\n\t\t\t\t\tself.push(null)\n\t\t\t\t\treturn\n\t\t\t\t}\n\t\t\t\tself.push(Buffer.from(result.value))\n\t\t\t\tread()\n\t\t\t}).catch(function (err) {\n\t\t\t\tresetTimers(true)\n\t\t\t\tif (!self._destroyed)\n\t\t\t\t\tself.emit('error', err)\n\t\t\t})\n\t\t}\n\t\tread()\n\t} else {\n\t\tself._xhr = xhr\n\t\tself._pos = 0\n\n\t\tself.url = xhr.responseURL\n\t\tself.statusCode = xhr.status\n\t\tself.statusMessage = xhr.statusText\n\t\tvar headers = xhr.getAllResponseHeaders().split(/\\r?\\n/)\n\t\theaders.forEach(function (header) {\n\t\t\tvar matches = header.match(/^([^:]+):\\s*(.*)/)\n\t\t\tif (matches) {\n\t\t\t\tvar key = matches[1].toLowerCase()\n\t\t\t\tif (key === 'set-cookie') {\n\t\t\t\t\tif (self.headers[key] === undefined) {\n\t\t\t\t\t\tself.headers[key] = []\n\t\t\t\t\t}\n\t\t\t\t\tself.headers[key].push(matches[2])\n\t\t\t\t} else if (self.headers[key] !== undefined) {\n\t\t\t\t\tself.headers[key] += ', ' + matches[2]\n\t\t\t\t} else {\n\t\t\t\t\tself.headers[key] = matches[2]\n\t\t\t\t}\n\t\t\t\tself.rawHeaders.push(matches[1], matches[2])\n\t\t\t}\n\t\t})\n\n\t\tself._charset = 'x-user-defined'\n\t\tif (!capability.overrideMimeType) {\n\t\t\tvar mimeType = self.rawHeaders['mime-type']\n\t\t\tif (mimeType) {\n\t\t\t\tvar charsetMatch = mimeType.match(/;\\s*charset=([^;])(;|$)/)\n\t\t\t\tif (charsetMatch) {\n\t\t\t\t\tself._charset = charsetMatch[1].toLowerCase()\n\t\t\t\t}\n\t\t\t}\n\t\t\tif (!self._charset)\n\t\t\t\tself._charset = 'utf-8' // best guess\n\t\t}\n\t}\n}\n\ninherits(IncomingMessage, stream.Readable)\n\nIncomingMessage.prototype._read = function () {\n\tvar self = this\n\n\tvar resolve = self._resumeFetch\n\tif (resolve) {\n\t\tself._resumeFetch = null\n\t\tresolve()\n\t}\n}\n\nIncomingMessage.prototype._onXHRProgress = function (resetTimers) {\n\tvar self = this\n\n\tvar xhr = self._xhr\n\n\tvar response = null\n\tswitch (self._mode) {\n\t\tcase 'text':\n\t\t\tresponse = xhr.responseText\n\t\t\tif (response.length > self._pos) {\n\t\t\t\tvar newData = response.substr(self._pos)\n\t\t\t\tif (self._charset === 'x-user-defined') {\n\t\t\t\t\tvar buffer = Buffer.alloc(newData.length)\n\t\t\t\t\tfor (var i = 0; i < newData.length; i++)\n\t\t\t\t\t\tbuffer[i] = newData.charCodeAt(i) & 0xff\n\n\t\t\t\t\tself.push(buffer)\n\t\t\t\t} else {\n\t\t\t\t\tself.push(newData, self._charset)\n\t\t\t\t}\n\t\t\t\tself._pos = response.length\n\t\t\t}\n\t\t\tbreak\n\t\tcase 'arraybuffer':\n\t\t\tif (xhr.readyState !== rStates.DONE || !xhr.response)\n\t\t\t\tbreak\n\t\t\tresponse = xhr.response\n\t\t\tself.push(Buffer.from(new Uint8Array(response)))\n\t\t\tbreak\n\t\tcase 'moz-chunked-arraybuffer': // take whole\n\t\t\tresponse = xhr.response\n\t\t\tif (xhr.readyState !== rStates.LOADING || !response)\n\t\t\t\tbreak\n\t\t\tself.push(Buffer.from(new Uint8Array(response)))\n\t\t\tbreak\n\t\tcase 'ms-stream':\n\t\t\tresponse = xhr.response\n\t\t\tif (xhr.readyState !== rStates.LOADING)\n\t\t\t\tbreak\n\t\t\tvar reader = new global.MSStreamReader()\n\t\t\treader.onprogress = function () {\n\t\t\t\tif (reader.result.byteLength > self._pos) {\n\t\t\t\t\tself.push(Buffer.from(new Uint8Array(reader.result.slice(self._pos))))\n\t\t\t\t\tself._pos = reader.result.byteLength\n\t\t\t\t}\n\t\t\t}\n\t\t\treader.onload = function () {\n\t\t\t\tresetTimers(true)\n\t\t\t\tself.push(null)\n\t\t\t}\n\t\t\t// reader.onerror = ??? // TODO: this\n\t\t\treader.readAsArrayBuffer(response)\n\t\t\tbreak\n\t}\n\n\t// The ms-stream case handles end separately in reader.onload()\n\tif (self._xhr.readyState === rStates.DONE && self._mode !== 'ms-stream') {\n\t\tresetTimers(true)\n\t\tself.push(null)\n\t}\n}\n","'use strict';\n\nfunction _inheritsLoose(subClass, superClass) { subClass.prototype = Object.create(superClass.prototype); subClass.prototype.constructor = subClass; subClass.__proto__ = superClass; }\n\nvar codes = {};\n\nfunction createErrorType(code, message, Base) {\n  if (!Base) {\n    Base = Error;\n  }\n\n  function getMessage(arg1, arg2, arg3) {\n    if (typeof message === 'string') {\n      return message;\n    } else {\n      return message(arg1, arg2, arg3);\n    }\n  }\n\n  var NodeError =\n  /*#__PURE__*/\n  function (_Base) {\n    _inheritsLoose(NodeError, _Base);\n\n    function NodeError(arg1, arg2, arg3) {\n      return _Base.call(this, getMessage(arg1, arg2, arg3)) || this;\n    }\n\n    return NodeError;\n  }(Base);\n\n  NodeError.prototype.name = Base.name;\n  NodeError.prototype.code = code;\n  codes[code] = NodeError;\n} // https://github.com/nodejs/node/blob/v10.8.0/lib/internal/errors.js\n\n\nfunction oneOf(expected, thing) {\n  if (Array.isArray(expected)) {\n    var len = expected.length;\n    expected = expected.map(function (i) {\n      return String(i);\n    });\n\n    if (len > 2) {\n      return \"one of \".concat(thing, \" \").concat(expected.slice(0, len - 1).join(', '), \", or \") + expected[len - 1];\n    } else if (len === 2) {\n      return \"one of \".concat(thing, \" \").concat(expected[0], \" or \").concat(expected[1]);\n    } else {\n      return \"of \".concat(thing, \" \").concat(expected[0]);\n    }\n  } else {\n    return \"of \".concat(thing, \" \").concat(String(expected));\n  }\n} // https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/startsWith\n\n\nfunction startsWith(str, search, pos) {\n  return str.substr(!pos || pos < 0 ? 0 : +pos, search.length) === search;\n} // https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/endsWith\n\n\nfunction endsWith(str, search, this_len) {\n  if (this_len === undefined || this_len > str.length) {\n    this_len = str.length;\n  }\n\n  return str.substring(this_len - search.length, this_len) === search;\n} // https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/includes\n\n\nfunction includes(str, search, start) {\n  if (typeof start !== 'number') {\n    start = 0;\n  }\n\n  if (start + search.length > str.length) {\n    return false;\n  } else {\n    return str.indexOf(search, start) !== -1;\n  }\n}\n\ncreateErrorType('ERR_INVALID_OPT_VALUE', function (name, value) {\n  return 'The value \"' + value + '\" is invalid for option \"' + name + '\"';\n}, TypeError);\ncreateErrorType('ERR_INVALID_ARG_TYPE', function (name, expected, actual) {\n  // determiner: 'must be' or 'must not be'\n  var determiner;\n\n  if (typeof expected === 'string' && startsWith(expected, 'not ')) {\n    determiner = 'must not be';\n    expected = expected.replace(/^not /, '');\n  } else {\n    determiner = 'must be';\n  }\n\n  var msg;\n\n  if (endsWith(name, ' argument')) {\n    // For cases like 'first argument'\n    msg = \"The \".concat(name, \" \").concat(determiner, \" \").concat(oneOf(expected, 'type'));\n  } else {\n    var type = includes(name, '.') ? 'property' : 'argument';\n    msg = \"The \\\"\".concat(name, \"\\\" \").concat(type, \" \").concat(determiner, \" \").concat(oneOf(expected, 'type'));\n  }\n\n  msg += \". Received type \".concat(typeof actual);\n  return msg;\n}, TypeError);\ncreateErrorType('ERR_STREAM_PUSH_AFTER_EOF', 'stream.push() after EOF');\ncreateErrorType('ERR_METHOD_NOT_IMPLEMENTED', function (name) {\n  return 'The ' + name + ' method is not implemented';\n});\ncreateErrorType('ERR_STREAM_PREMATURE_CLOSE', 'Premature close');\ncreateErrorType('ERR_STREAM_DESTROYED', function (name) {\n  return 'Cannot call ' + name + ' after a stream was destroyed';\n});\ncreateErrorType('ERR_MULTIPLE_CALLBACK', 'Callback called multiple times');\ncreateErrorType('ERR_STREAM_CANNOT_PIPE', 'Cannot pipe, not readable');\ncreateErrorType('ERR_STREAM_WRITE_AFTER_END', 'write after end');\ncreateErrorType('ERR_STREAM_NULL_VALUES', 'May not write null values to stream', TypeError);\ncreateErrorType('ERR_UNKNOWN_ENCODING', function (arg) {\n  return 'Unknown encoding: ' + arg;\n}, TypeError);\ncreateErrorType('ERR_STREAM_UNSHIFT_AFTER_END_EVENT', 'stream.unshift() after end event');\nmodule.exports.codes = codes;\n","// Copyright Joyent, Inc. and other Node contributors.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a\n// copy of this software and associated documentation files (the\n// \"Software\"), to deal in the Software without restriction, including\n// without limitation the rights to use, copy, modify, merge, publish,\n// distribute, sublicense, and/or sell copies of the Software, and to permit\n// persons to whom the Software is furnished to do so, subject to the\n// following conditions:\n//\n// The above copyright notice and this permission notice shall be included\n// in all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN\n// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR\n// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\n// USE OR OTHER DEALINGS IN THE SOFTWARE.\n\n// a duplex stream is just a stream that is both readable and writable.\n// Since JS doesn't have multiple prototypal inheritance, this class\n// prototypally inherits from Readable, and then parasitically from\n// Writable.\n\n'use strict';\n\n/**/\nvar objectKeys = Object.keys || function (obj) {\n  var keys = [];\n  for (var key in obj) keys.push(key);\n  return keys;\n};\n/**/\n\nmodule.exports = Duplex;\nvar Readable = require('./_stream_readable');\nvar Writable = require('./_stream_writable');\nrequire('inherits')(Duplex, Readable);\n{\n  // Allow the keys array to be GC'ed.\n  var keys = objectKeys(Writable.prototype);\n  for (var v = 0; v < keys.length; v++) {\n    var method = keys[v];\n    if (!Duplex.prototype[method]) Duplex.prototype[method] = Writable.prototype[method];\n  }\n}\nfunction Duplex(options) {\n  if (!(this instanceof Duplex)) return new Duplex(options);\n  Readable.call(this, options);\n  Writable.call(this, options);\n  this.allowHalfOpen = true;\n  if (options) {\n    if (options.readable === false) this.readable = false;\n    if (options.writable === false) this.writable = false;\n    if (options.allowHalfOpen === false) {\n      this.allowHalfOpen = false;\n      this.once('end', onend);\n    }\n  }\n}\nObject.defineProperty(Duplex.prototype, 'writableHighWaterMark', {\n  // making it explicit this property is not enumerable\n  // because otherwise some prototype manipulation in\n  // userland will fail\n  enumerable: false,\n  get: function get() {\n    return this._writableState.highWaterMark;\n  }\n});\nObject.defineProperty(Duplex.prototype, 'writableBuffer', {\n  // making it explicit this property is not enumerable\n  // because otherwise some prototype manipulation in\n  // userland will fail\n  enumerable: false,\n  get: function get() {\n    return this._writableState && this._writableState.getBuffer();\n  }\n});\nObject.defineProperty(Duplex.prototype, 'writableLength', {\n  // making it explicit this property is not enumerable\n  // because otherwise some prototype manipulation in\n  // userland will fail\n  enumerable: false,\n  get: function get() {\n    return this._writableState.length;\n  }\n});\n\n// the no-half-open enforcer\nfunction onend() {\n  // If the writable side ended, then we're ok.\n  if (this._writableState.ended) return;\n\n  // no more data can be written.\n  // But allow more writes to happen in this tick.\n  process.nextTick(onEndNT, this);\n}\nfunction onEndNT(self) {\n  self.end();\n}\nObject.defineProperty(Duplex.prototype, 'destroyed', {\n  // making it explicit this property is not enumerable\n  // because otherwise some prototype manipulation in\n  // userland will fail\n  enumerable: false,\n  get: function get() {\n    if (this._readableState === undefined || this._writableState === undefined) {\n      return false;\n    }\n    return this._readableState.destroyed && this._writableState.destroyed;\n  },\n  set: function set(value) {\n    // we ignore the value if the stream\n    // has not been initialized yet\n    if (this._readableState === undefined || this._writableState === undefined) {\n      return;\n    }\n\n    // backward compatibility, the user is explicitly\n    // managing destroyed\n    this._readableState.destroyed = value;\n    this._writableState.destroyed = value;\n  }\n});","// Copyright Joyent, Inc. and other Node contributors.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a\n// copy of this software and associated documentation files (the\n// \"Software\"), to deal in the Software without restriction, including\n// without limitation the rights to use, copy, modify, merge, publish,\n// distribute, sublicense, and/or sell copies of the Software, and to permit\n// persons to whom the Software is furnished to do so, subject to the\n// following conditions:\n//\n// The above copyright notice and this permission notice shall be included\n// in all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN\n// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR\n// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\n// USE OR OTHER DEALINGS IN THE SOFTWARE.\n\n// a passthrough stream.\n// basically just the most minimal sort of Transform stream.\n// Every written chunk gets output as-is.\n\n'use strict';\n\nmodule.exports = PassThrough;\nvar Transform = require('./_stream_transform');\nrequire('inherits')(PassThrough, Transform);\nfunction PassThrough(options) {\n  if (!(this instanceof PassThrough)) return new PassThrough(options);\n  Transform.call(this, options);\n}\nPassThrough.prototype._transform = function (chunk, encoding, cb) {\n  cb(null, chunk);\n};","// Copyright Joyent, Inc. and other Node contributors.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a\n// copy of this software and associated documentation files (the\n// \"Software\"), to deal in the Software without restriction, including\n// without limitation the rights to use, copy, modify, merge, publish,\n// distribute, sublicense, and/or sell copies of the Software, and to permit\n// persons to whom the Software is furnished to do so, subject to the\n// following conditions:\n//\n// The above copyright notice and this permission notice shall be included\n// in all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN\n// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR\n// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\n// USE OR OTHER DEALINGS IN THE SOFTWARE.\n\n'use strict';\n\nmodule.exports = Readable;\n\n/**/\nvar Duplex;\n/**/\n\nReadable.ReadableState = ReadableState;\n\n/**/\nvar EE = require('events').EventEmitter;\nvar EElistenerCount = function EElistenerCount(emitter, type) {\n  return emitter.listeners(type).length;\n};\n/**/\n\n/**/\nvar Stream = require('./internal/streams/stream');\n/**/\n\nvar Buffer = require('buffer').Buffer;\nvar OurUint8Array = (typeof global !== 'undefined' ? global : typeof window !== 'undefined' ? window : typeof self !== 'undefined' ? self : {}).Uint8Array || function () {};\nfunction _uint8ArrayToBuffer(chunk) {\n  return Buffer.from(chunk);\n}\nfunction _isUint8Array(obj) {\n  return Buffer.isBuffer(obj) || obj instanceof OurUint8Array;\n}\n\n/**/\nvar debugUtil = require('util');\nvar debug;\nif (debugUtil && debugUtil.debuglog) {\n  debug = debugUtil.debuglog('stream');\n} else {\n  debug = function debug() {};\n}\n/**/\n\nvar BufferList = require('./internal/streams/buffer_list');\nvar destroyImpl = require('./internal/streams/destroy');\nvar _require = require('./internal/streams/state'),\n  getHighWaterMark = _require.getHighWaterMark;\nvar _require$codes = require('../errors').codes,\n  ERR_INVALID_ARG_TYPE = _require$codes.ERR_INVALID_ARG_TYPE,\n  ERR_STREAM_PUSH_AFTER_EOF = _require$codes.ERR_STREAM_PUSH_AFTER_EOF,\n  ERR_METHOD_NOT_IMPLEMENTED = _require$codes.ERR_METHOD_NOT_IMPLEMENTED,\n  ERR_STREAM_UNSHIFT_AFTER_END_EVENT = _require$codes.ERR_STREAM_UNSHIFT_AFTER_END_EVENT;\n\n// Lazy loaded to improve the startup performance.\nvar StringDecoder;\nvar createReadableStreamAsyncIterator;\nvar from;\nrequire('inherits')(Readable, Stream);\nvar errorOrDestroy = destroyImpl.errorOrDestroy;\nvar kProxyEvents = ['error', 'close', 'destroy', 'pause', 'resume'];\nfunction prependListener(emitter, event, fn) {\n  // Sadly this is not cacheable as some libraries bundle their own\n  // event emitter implementation with them.\n  if (typeof emitter.prependListener === 'function') return emitter.prependListener(event, fn);\n\n  // This is a hack to make sure that our error handler is attached before any\n  // userland ones.  NEVER DO THIS. This is here only because this code needs\n  // to continue to work with older versions of Node.js that do not include\n  // the prependListener() method. The goal is to eventually remove this hack.\n  if (!emitter._events || !emitter._events[event]) emitter.on(event, fn);else if (Array.isArray(emitter._events[event])) emitter._events[event].unshift(fn);else emitter._events[event] = [fn, emitter._events[event]];\n}\nfunction ReadableState(options, stream, isDuplex) {\n  Duplex = Duplex || require('./_stream_duplex');\n  options = options || {};\n\n  // Duplex streams are both readable and writable, but share\n  // the same options object.\n  // However, some cases require setting options to different\n  // values for the readable and the writable sides of the duplex stream.\n  // These options can be provided separately as readableXXX and writableXXX.\n  if (typeof isDuplex !== 'boolean') isDuplex = stream instanceof Duplex;\n\n  // object stream flag. Used to make read(n) ignore n and to\n  // make all the buffer merging and length checks go away\n  this.objectMode = !!options.objectMode;\n  if (isDuplex) this.objectMode = this.objectMode || !!options.readableObjectMode;\n\n  // the point at which it stops calling _read() to fill the buffer\n  // Note: 0 is a valid value, means \"don't call _read preemptively ever\"\n  this.highWaterMark = getHighWaterMark(this, options, 'readableHighWaterMark', isDuplex);\n\n  // A linked list is used to store data chunks instead of an array because the\n  // linked list can remove elements from the beginning faster than\n  // array.shift()\n  this.buffer = new BufferList();\n  this.length = 0;\n  this.pipes = null;\n  this.pipesCount = 0;\n  this.flowing = null;\n  this.ended = false;\n  this.endEmitted = false;\n  this.reading = false;\n\n  // a flag to be able to tell if the event 'readable'/'data' is emitted\n  // immediately, or on a later tick.  We set this to true at first, because\n  // any actions that shouldn't happen until \"later\" should generally also\n  // not happen before the first read call.\n  this.sync = true;\n\n  // whenever we return null, then we set a flag to say\n  // that we're awaiting a 'readable' event emission.\n  this.needReadable = false;\n  this.emittedReadable = false;\n  this.readableListening = false;\n  this.resumeScheduled = false;\n  this.paused = true;\n\n  // Should close be emitted on destroy. Defaults to true.\n  this.emitClose = options.emitClose !== false;\n\n  // Should .destroy() be called after 'end' (and potentially 'finish')\n  this.autoDestroy = !!options.autoDestroy;\n\n  // has it been destroyed\n  this.destroyed = false;\n\n  // Crypto is kind of old and crusty.  Historically, its default string\n  // encoding is 'binary' so we have to make this configurable.\n  // Everything else in the universe uses 'utf8', though.\n  this.defaultEncoding = options.defaultEncoding || 'utf8';\n\n  // the number of writers that are awaiting a drain event in .pipe()s\n  this.awaitDrain = 0;\n\n  // if true, a maybeReadMore has been scheduled\n  this.readingMore = false;\n  this.decoder = null;\n  this.encoding = null;\n  if (options.encoding) {\n    if (!StringDecoder) StringDecoder = require('string_decoder/').StringDecoder;\n    this.decoder = new StringDecoder(options.encoding);\n    this.encoding = options.encoding;\n  }\n}\nfunction Readable(options) {\n  Duplex = Duplex || require('./_stream_duplex');\n  if (!(this instanceof Readable)) return new Readable(options);\n\n  // Checking for a Stream.Duplex instance is faster here instead of inside\n  // the ReadableState constructor, at least with V8 6.5\n  var isDuplex = this instanceof Duplex;\n  this._readableState = new ReadableState(options, this, isDuplex);\n\n  // legacy\n  this.readable = true;\n  if (options) {\n    if (typeof options.read === 'function') this._read = options.read;\n    if (typeof options.destroy === 'function') this._destroy = options.destroy;\n  }\n  Stream.call(this);\n}\nObject.defineProperty(Readable.prototype, 'destroyed', {\n  // making it explicit this property is not enumerable\n  // because otherwise some prototype manipulation in\n  // userland will fail\n  enumerable: false,\n  get: function get() {\n    if (this._readableState === undefined) {\n      return false;\n    }\n    return this._readableState.destroyed;\n  },\n  set: function set(value) {\n    // we ignore the value if the stream\n    // has not been initialized yet\n    if (!this._readableState) {\n      return;\n    }\n\n    // backward compatibility, the user is explicitly\n    // managing destroyed\n    this._readableState.destroyed = value;\n  }\n});\nReadable.prototype.destroy = destroyImpl.destroy;\nReadable.prototype._undestroy = destroyImpl.undestroy;\nReadable.prototype._destroy = function (err, cb) {\n  cb(err);\n};\n\n// Manually shove something into the read() buffer.\n// This returns true if the highWaterMark has not been hit yet,\n// similar to how Writable.write() returns true if you should\n// write() some more.\nReadable.prototype.push = function (chunk, encoding) {\n  var state = this._readableState;\n  var skipChunkCheck;\n  if (!state.objectMode) {\n    if (typeof chunk === 'string') {\n      encoding = encoding || state.defaultEncoding;\n      if (encoding !== state.encoding) {\n        chunk = Buffer.from(chunk, encoding);\n        encoding = '';\n      }\n      skipChunkCheck = true;\n    }\n  } else {\n    skipChunkCheck = true;\n  }\n  return readableAddChunk(this, chunk, encoding, false, skipChunkCheck);\n};\n\n// Unshift should *always* be something directly out of read()\nReadable.prototype.unshift = function (chunk) {\n  return readableAddChunk(this, chunk, null, true, false);\n};\nfunction readableAddChunk(stream, chunk, encoding, addToFront, skipChunkCheck) {\n  debug('readableAddChunk', chunk);\n  var state = stream._readableState;\n  if (chunk === null) {\n    state.reading = false;\n    onEofChunk(stream, state);\n  } else {\n    var er;\n    if (!skipChunkCheck) er = chunkInvalid(state, chunk);\n    if (er) {\n      errorOrDestroy(stream, er);\n    } else if (state.objectMode || chunk && chunk.length > 0) {\n      if (typeof chunk !== 'string' && !state.objectMode && Object.getPrototypeOf(chunk) !== Buffer.prototype) {\n        chunk = _uint8ArrayToBuffer(chunk);\n      }\n      if (addToFront) {\n        if (state.endEmitted) errorOrDestroy(stream, new ERR_STREAM_UNSHIFT_AFTER_END_EVENT());else addChunk(stream, state, chunk, true);\n      } else if (state.ended) {\n        errorOrDestroy(stream, new ERR_STREAM_PUSH_AFTER_EOF());\n      } else if (state.destroyed) {\n        return false;\n      } else {\n        state.reading = false;\n        if (state.decoder && !encoding) {\n          chunk = state.decoder.write(chunk);\n          if (state.objectMode || chunk.length !== 0) addChunk(stream, state, chunk, false);else maybeReadMore(stream, state);\n        } else {\n          addChunk(stream, state, chunk, false);\n        }\n      }\n    } else if (!addToFront) {\n      state.reading = false;\n      maybeReadMore(stream, state);\n    }\n  }\n\n  // We can push more data if we are below the highWaterMark.\n  // Also, if we have no data yet, we can stand some more bytes.\n  // This is to work around cases where hwm=0, such as the repl.\n  return !state.ended && (state.length < state.highWaterMark || state.length === 0);\n}\nfunction addChunk(stream, state, chunk, addToFront) {\n  if (state.flowing && state.length === 0 && !state.sync) {\n    state.awaitDrain = 0;\n    stream.emit('data', chunk);\n  } else {\n    // update the buffer info.\n    state.length += state.objectMode ? 1 : chunk.length;\n    if (addToFront) state.buffer.unshift(chunk);else state.buffer.push(chunk);\n    if (state.needReadable) emitReadable(stream);\n  }\n  maybeReadMore(stream, state);\n}\nfunction chunkInvalid(state, chunk) {\n  var er;\n  if (!_isUint8Array(chunk) && typeof chunk !== 'string' && chunk !== undefined && !state.objectMode) {\n    er = new ERR_INVALID_ARG_TYPE('chunk', ['string', 'Buffer', 'Uint8Array'], chunk);\n  }\n  return er;\n}\nReadable.prototype.isPaused = function () {\n  return this._readableState.flowing === false;\n};\n\n// backwards compatibility.\nReadable.prototype.setEncoding = function (enc) {\n  if (!StringDecoder) StringDecoder = require('string_decoder/').StringDecoder;\n  var decoder = new StringDecoder(enc);\n  this._readableState.decoder = decoder;\n  // If setEncoding(null), decoder.encoding equals utf8\n  this._readableState.encoding = this._readableState.decoder.encoding;\n\n  // Iterate over current buffer to convert already stored Buffers:\n  var p = this._readableState.buffer.head;\n  var content = '';\n  while (p !== null) {\n    content += decoder.write(p.data);\n    p = p.next;\n  }\n  this._readableState.buffer.clear();\n  if (content !== '') this._readableState.buffer.push(content);\n  this._readableState.length = content.length;\n  return this;\n};\n\n// Don't raise the hwm > 1GB\nvar MAX_HWM = 0x40000000;\nfunction computeNewHighWaterMark(n) {\n  if (n >= MAX_HWM) {\n    // TODO(ronag): Throw ERR_VALUE_OUT_OF_RANGE.\n    n = MAX_HWM;\n  } else {\n    // Get the next highest power of 2 to prevent increasing hwm excessively in\n    // tiny amounts\n    n--;\n    n |= n >>> 1;\n    n |= n >>> 2;\n    n |= n >>> 4;\n    n |= n >>> 8;\n    n |= n >>> 16;\n    n++;\n  }\n  return n;\n}\n\n// This function is designed to be inlinable, so please take care when making\n// changes to the function body.\nfunction howMuchToRead(n, state) {\n  if (n <= 0 || state.length === 0 && state.ended) return 0;\n  if (state.objectMode) return 1;\n  if (n !== n) {\n    // Only flow one buffer at a time\n    if (state.flowing && state.length) return state.buffer.head.data.length;else return state.length;\n  }\n  // If we're asking for more than the current hwm, then raise the hwm.\n  if (n > state.highWaterMark) state.highWaterMark = computeNewHighWaterMark(n);\n  if (n <= state.length) return n;\n  // Don't have enough\n  if (!state.ended) {\n    state.needReadable = true;\n    return 0;\n  }\n  return state.length;\n}\n\n// you can override either this method, or the async _read(n) below.\nReadable.prototype.read = function (n) {\n  debug('read', n);\n  n = parseInt(n, 10);\n  var state = this._readableState;\n  var nOrig = n;\n  if (n !== 0) state.emittedReadable = false;\n\n  // if we're doing read(0) to trigger a readable event, but we\n  // already have a bunch of data in the buffer, then just trigger\n  // the 'readable' event and move on.\n  if (n === 0 && state.needReadable && ((state.highWaterMark !== 0 ? state.length >= state.highWaterMark : state.length > 0) || state.ended)) {\n    debug('read: emitReadable', state.length, state.ended);\n    if (state.length === 0 && state.ended) endReadable(this);else emitReadable(this);\n    return null;\n  }\n  n = howMuchToRead(n, state);\n\n  // if we've ended, and we're now clear, then finish it up.\n  if (n === 0 && state.ended) {\n    if (state.length === 0) endReadable(this);\n    return null;\n  }\n\n  // All the actual chunk generation logic needs to be\n  // *below* the call to _read.  The reason is that in certain\n  // synthetic stream cases, such as passthrough streams, _read\n  // may be a completely synchronous operation which may change\n  // the state of the read buffer, providing enough data when\n  // before there was *not* enough.\n  //\n  // So, the steps are:\n  // 1. Figure out what the state of things will be after we do\n  // a read from the buffer.\n  //\n  // 2. If that resulting state will trigger a _read, then call _read.\n  // Note that this may be asynchronous, or synchronous.  Yes, it is\n  // deeply ugly to write APIs this way, but that still doesn't mean\n  // that the Readable class should behave improperly, as streams are\n  // designed to be sync/async agnostic.\n  // Take note if the _read call is sync or async (ie, if the read call\n  // has returned yet), so that we know whether or not it's safe to emit\n  // 'readable' etc.\n  //\n  // 3. Actually pull the requested chunks out of the buffer and return.\n\n  // if we need a readable event, then we need to do some reading.\n  var doRead = state.needReadable;\n  debug('need readable', doRead);\n\n  // if we currently have less than the highWaterMark, then also read some\n  if (state.length === 0 || state.length - n < state.highWaterMark) {\n    doRead = true;\n    debug('length less than watermark', doRead);\n  }\n\n  // however, if we've ended, then there's no point, and if we're already\n  // reading, then it's unnecessary.\n  if (state.ended || state.reading) {\n    doRead = false;\n    debug('reading or ended', doRead);\n  } else if (doRead) {\n    debug('do read');\n    state.reading = true;\n    state.sync = true;\n    // if the length is currently zero, then we *need* a readable event.\n    if (state.length === 0) state.needReadable = true;\n    // call internal read method\n    this._read(state.highWaterMark);\n    state.sync = false;\n    // If _read pushed data synchronously, then `reading` will be false,\n    // and we need to re-evaluate how much data we can return to the user.\n    if (!state.reading) n = howMuchToRead(nOrig, state);\n  }\n  var ret;\n  if (n > 0) ret = fromList(n, state);else ret = null;\n  if (ret === null) {\n    state.needReadable = state.length <= state.highWaterMark;\n    n = 0;\n  } else {\n    state.length -= n;\n    state.awaitDrain = 0;\n  }\n  if (state.length === 0) {\n    // If we have nothing in the buffer, then we want to know\n    // as soon as we *do* get something into the buffer.\n    if (!state.ended) state.needReadable = true;\n\n    // If we tried to read() past the EOF, then emit end on the next tick.\n    if (nOrig !== n && state.ended) endReadable(this);\n  }\n  if (ret !== null) this.emit('data', ret);\n  return ret;\n};\nfunction onEofChunk(stream, state) {\n  debug('onEofChunk');\n  if (state.ended) return;\n  if (state.decoder) {\n    var chunk = state.decoder.end();\n    if (chunk && chunk.length) {\n      state.buffer.push(chunk);\n      state.length += state.objectMode ? 1 : chunk.length;\n    }\n  }\n  state.ended = true;\n  if (state.sync) {\n    // if we are sync, wait until next tick to emit the data.\n    // Otherwise we risk emitting data in the flow()\n    // the readable code triggers during a read() call\n    emitReadable(stream);\n  } else {\n    // emit 'readable' now to make sure it gets picked up.\n    state.needReadable = false;\n    if (!state.emittedReadable) {\n      state.emittedReadable = true;\n      emitReadable_(stream);\n    }\n  }\n}\n\n// Don't emit readable right away in sync mode, because this can trigger\n// another read() call => stack overflow.  This way, it might trigger\n// a nextTick recursion warning, but that's not so bad.\nfunction emitReadable(stream) {\n  var state = stream._readableState;\n  debug('emitReadable', state.needReadable, state.emittedReadable);\n  state.needReadable = false;\n  if (!state.emittedReadable) {\n    debug('emitReadable', state.flowing);\n    state.emittedReadable = true;\n    process.nextTick(emitReadable_, stream);\n  }\n}\nfunction emitReadable_(stream) {\n  var state = stream._readableState;\n  debug('emitReadable_', state.destroyed, state.length, state.ended);\n  if (!state.destroyed && (state.length || state.ended)) {\n    stream.emit('readable');\n    state.emittedReadable = false;\n  }\n\n  // The stream needs another readable event if\n  // 1. It is not flowing, as the flow mechanism will take\n  //    care of it.\n  // 2. It is not ended.\n  // 3. It is below the highWaterMark, so we can schedule\n  //    another readable later.\n  state.needReadable = !state.flowing && !state.ended && state.length <= state.highWaterMark;\n  flow(stream);\n}\n\n// at this point, the user has presumably seen the 'readable' event,\n// and called read() to consume some data.  that may have triggered\n// in turn another _read(n) call, in which case reading = true if\n// it's in progress.\n// However, if we're not ended, or reading, and the length < hwm,\n// then go ahead and try to read some more preemptively.\nfunction maybeReadMore(stream, state) {\n  if (!state.readingMore) {\n    state.readingMore = true;\n    process.nextTick(maybeReadMore_, stream, state);\n  }\n}\nfunction maybeReadMore_(stream, state) {\n  // Attempt to read more data if we should.\n  //\n  // The conditions for reading more data are (one of):\n  // - Not enough data buffered (state.length < state.highWaterMark). The loop\n  //   is responsible for filling the buffer with enough data if such data\n  //   is available. If highWaterMark is 0 and we are not in the flowing mode\n  //   we should _not_ attempt to buffer any extra data. We'll get more data\n  //   when the stream consumer calls read() instead.\n  // - No data in the buffer, and the stream is in flowing mode. In this mode\n  //   the loop below is responsible for ensuring read() is called. Failing to\n  //   call read here would abort the flow and there's no other mechanism for\n  //   continuing the flow if the stream consumer has just subscribed to the\n  //   'data' event.\n  //\n  // In addition to the above conditions to keep reading data, the following\n  // conditions prevent the data from being read:\n  // - The stream has ended (state.ended).\n  // - There is already a pending 'read' operation (state.reading). This is a\n  //   case where the the stream has called the implementation defined _read()\n  //   method, but they are processing the call asynchronously and have _not_\n  //   called push() with new data. In this case we skip performing more\n  //   read()s. The execution ends in this method again after the _read() ends\n  //   up calling push() with more data.\n  while (!state.reading && !state.ended && (state.length < state.highWaterMark || state.flowing && state.length === 0)) {\n    var len = state.length;\n    debug('maybeReadMore read 0');\n    stream.read(0);\n    if (len === state.length)\n      // didn't get any data, stop spinning.\n      break;\n  }\n  state.readingMore = false;\n}\n\n// abstract method.  to be overridden in specific implementation classes.\n// call cb(er, data) where data is <= n in length.\n// for virtual (non-string, non-buffer) streams, \"length\" is somewhat\n// arbitrary, and perhaps not very meaningful.\nReadable.prototype._read = function (n) {\n  errorOrDestroy(this, new ERR_METHOD_NOT_IMPLEMENTED('_read()'));\n};\nReadable.prototype.pipe = function (dest, pipeOpts) {\n  var src = this;\n  var state = this._readableState;\n  switch (state.pipesCount) {\n    case 0:\n      state.pipes = dest;\n      break;\n    case 1:\n      state.pipes = [state.pipes, dest];\n      break;\n    default:\n      state.pipes.push(dest);\n      break;\n  }\n  state.pipesCount += 1;\n  debug('pipe count=%d opts=%j', state.pipesCount, pipeOpts);\n  var doEnd = (!pipeOpts || pipeOpts.end !== false) && dest !== process.stdout && dest !== process.stderr;\n  var endFn = doEnd ? onend : unpipe;\n  if (state.endEmitted) process.nextTick(endFn);else src.once('end', endFn);\n  dest.on('unpipe', onunpipe);\n  function onunpipe(readable, unpipeInfo) {\n    debug('onunpipe');\n    if (readable === src) {\n      if (unpipeInfo && unpipeInfo.hasUnpiped === false) {\n        unpipeInfo.hasUnpiped = true;\n        cleanup();\n      }\n    }\n  }\n  function onend() {\n    debug('onend');\n    dest.end();\n  }\n\n  // when the dest drains, it reduces the awaitDrain counter\n  // on the source.  This would be more elegant with a .once()\n  // handler in flow(), but adding and removing repeatedly is\n  // too slow.\n  var ondrain = pipeOnDrain(src);\n  dest.on('drain', ondrain);\n  var cleanedUp = false;\n  function cleanup() {\n    debug('cleanup');\n    // cleanup event handlers once the pipe is broken\n    dest.removeListener('close', onclose);\n    dest.removeListener('finish', onfinish);\n    dest.removeListener('drain', ondrain);\n    dest.removeListener('error', onerror);\n    dest.removeListener('unpipe', onunpipe);\n    src.removeListener('end', onend);\n    src.removeListener('end', unpipe);\n    src.removeListener('data', ondata);\n    cleanedUp = true;\n\n    // if the reader is waiting for a drain event from this\n    // specific writer, then it would cause it to never start\n    // flowing again.\n    // So, if this is awaiting a drain, then we just call it now.\n    // If we don't know, then assume that we are waiting for one.\n    if (state.awaitDrain && (!dest._writableState || dest._writableState.needDrain)) ondrain();\n  }\n  src.on('data', ondata);\n  function ondata(chunk) {\n    debug('ondata');\n    var ret = dest.write(chunk);\n    debug('dest.write', ret);\n    if (ret === false) {\n      // If the user unpiped during `dest.write()`, it is possible\n      // to get stuck in a permanently paused state if that write\n      // also returned false.\n      // => Check whether `dest` is still a piping destination.\n      if ((state.pipesCount === 1 && state.pipes === dest || state.pipesCount > 1 && indexOf(state.pipes, dest) !== -1) && !cleanedUp) {\n        debug('false write response, pause', state.awaitDrain);\n        state.awaitDrain++;\n      }\n      src.pause();\n    }\n  }\n\n  // if the dest has an error, then stop piping into it.\n  // however, don't suppress the throwing behavior for this.\n  function onerror(er) {\n    debug('onerror', er);\n    unpipe();\n    dest.removeListener('error', onerror);\n    if (EElistenerCount(dest, 'error') === 0) errorOrDestroy(dest, er);\n  }\n\n  // Make sure our error handler is attached before userland ones.\n  prependListener(dest, 'error', onerror);\n\n  // Both close and finish should trigger unpipe, but only once.\n  function onclose() {\n    dest.removeListener('finish', onfinish);\n    unpipe();\n  }\n  dest.once('close', onclose);\n  function onfinish() {\n    debug('onfinish');\n    dest.removeListener('close', onclose);\n    unpipe();\n  }\n  dest.once('finish', onfinish);\n  function unpipe() {\n    debug('unpipe');\n    src.unpipe(dest);\n  }\n\n  // tell the dest that it's being piped to\n  dest.emit('pipe', src);\n\n  // start the flow if it hasn't been started already.\n  if (!state.flowing) {\n    debug('pipe resume');\n    src.resume();\n  }\n  return dest;\n};\nfunction pipeOnDrain(src) {\n  return function pipeOnDrainFunctionResult() {\n    var state = src._readableState;\n    debug('pipeOnDrain', state.awaitDrain);\n    if (state.awaitDrain) state.awaitDrain--;\n    if (state.awaitDrain === 0 && EElistenerCount(src, 'data')) {\n      state.flowing = true;\n      flow(src);\n    }\n  };\n}\nReadable.prototype.unpipe = function (dest) {\n  var state = this._readableState;\n  var unpipeInfo = {\n    hasUnpiped: false\n  };\n\n  // if we're not piping anywhere, then do nothing.\n  if (state.pipesCount === 0) return this;\n\n  // just one destination.  most common case.\n  if (state.pipesCount === 1) {\n    // passed in one, but it's not the right one.\n    if (dest && dest !== state.pipes) return this;\n    if (!dest) dest = state.pipes;\n\n    // got a match.\n    state.pipes = null;\n    state.pipesCount = 0;\n    state.flowing = false;\n    if (dest) dest.emit('unpipe', this, unpipeInfo);\n    return this;\n  }\n\n  // slow case. multiple pipe destinations.\n\n  if (!dest) {\n    // remove all.\n    var dests = state.pipes;\n    var len = state.pipesCount;\n    state.pipes = null;\n    state.pipesCount = 0;\n    state.flowing = false;\n    for (var i = 0; i < len; i++) dests[i].emit('unpipe', this, {\n      hasUnpiped: false\n    });\n    return this;\n  }\n\n  // try to find the right one.\n  var index = indexOf(state.pipes, dest);\n  if (index === -1) return this;\n  state.pipes.splice(index, 1);\n  state.pipesCount -= 1;\n  if (state.pipesCount === 1) state.pipes = state.pipes[0];\n  dest.emit('unpipe', this, unpipeInfo);\n  return this;\n};\n\n// set up data events if they are asked for\n// Ensure readable listeners eventually get something\nReadable.prototype.on = function (ev, fn) {\n  var res = Stream.prototype.on.call(this, ev, fn);\n  var state = this._readableState;\n  if (ev === 'data') {\n    // update readableListening so that resume() may be a no-op\n    // a few lines down. This is needed to support once('readable').\n    state.readableListening = this.listenerCount('readable') > 0;\n\n    // Try start flowing on next tick if stream isn't explicitly paused\n    if (state.flowing !== false) this.resume();\n  } else if (ev === 'readable') {\n    if (!state.endEmitted && !state.readableListening) {\n      state.readableListening = state.needReadable = true;\n      state.flowing = false;\n      state.emittedReadable = false;\n      debug('on readable', state.length, state.reading);\n      if (state.length) {\n        emitReadable(this);\n      } else if (!state.reading) {\n        process.nextTick(nReadingNextTick, this);\n      }\n    }\n  }\n  return res;\n};\nReadable.prototype.addListener = Readable.prototype.on;\nReadable.prototype.removeListener = function (ev, fn) {\n  var res = Stream.prototype.removeListener.call(this, ev, fn);\n  if (ev === 'readable') {\n    // We need to check if there is someone still listening to\n    // readable and reset the state. However this needs to happen\n    // after readable has been emitted but before I/O (nextTick) to\n    // support once('readable', fn) cycles. This means that calling\n    // resume within the same tick will have no\n    // effect.\n    process.nextTick(updateReadableListening, this);\n  }\n  return res;\n};\nReadable.prototype.removeAllListeners = function (ev) {\n  var res = Stream.prototype.removeAllListeners.apply(this, arguments);\n  if (ev === 'readable' || ev === undefined) {\n    // We need to check if there is someone still listening to\n    // readable and reset the state. However this needs to happen\n    // after readable has been emitted but before I/O (nextTick) to\n    // support once('readable', fn) cycles. This means that calling\n    // resume within the same tick will have no\n    // effect.\n    process.nextTick(updateReadableListening, this);\n  }\n  return res;\n};\nfunction updateReadableListening(self) {\n  var state = self._readableState;\n  state.readableListening = self.listenerCount('readable') > 0;\n  if (state.resumeScheduled && !state.paused) {\n    // flowing needs to be set to true now, otherwise\n    // the upcoming resume will not flow.\n    state.flowing = true;\n\n    // crude way to check if we should resume\n  } else if (self.listenerCount('data') > 0) {\n    self.resume();\n  }\n}\nfunction nReadingNextTick(self) {\n  debug('readable nexttick read 0');\n  self.read(0);\n}\n\n// pause() and resume() are remnants of the legacy readable stream API\n// If the user uses them, then switch into old mode.\nReadable.prototype.resume = function () {\n  var state = this._readableState;\n  if (!state.flowing) {\n    debug('resume');\n    // we flow only if there is no one listening\n    // for readable, but we still have to call\n    // resume()\n    state.flowing = !state.readableListening;\n    resume(this, state);\n  }\n  state.paused = false;\n  return this;\n};\nfunction resume(stream, state) {\n  if (!state.resumeScheduled) {\n    state.resumeScheduled = true;\n    process.nextTick(resume_, stream, state);\n  }\n}\nfunction resume_(stream, state) {\n  debug('resume', state.reading);\n  if (!state.reading) {\n    stream.read(0);\n  }\n  state.resumeScheduled = false;\n  stream.emit('resume');\n  flow(stream);\n  if (state.flowing && !state.reading) stream.read(0);\n}\nReadable.prototype.pause = function () {\n  debug('call pause flowing=%j', this._readableState.flowing);\n  if (this._readableState.flowing !== false) {\n    debug('pause');\n    this._readableState.flowing = false;\n    this.emit('pause');\n  }\n  this._readableState.paused = true;\n  return this;\n};\nfunction flow(stream) {\n  var state = stream._readableState;\n  debug('flow', state.flowing);\n  while (state.flowing && stream.read() !== null);\n}\n\n// wrap an old-style stream as the async data source.\n// This is *not* part of the readable stream interface.\n// It is an ugly unfortunate mess of history.\nReadable.prototype.wrap = function (stream) {\n  var _this = this;\n  var state = this._readableState;\n  var paused = false;\n  stream.on('end', function () {\n    debug('wrapped end');\n    if (state.decoder && !state.ended) {\n      var chunk = state.decoder.end();\n      if (chunk && chunk.length) _this.push(chunk);\n    }\n    _this.push(null);\n  });\n  stream.on('data', function (chunk) {\n    debug('wrapped data');\n    if (state.decoder) chunk = state.decoder.write(chunk);\n\n    // don't skip over falsy values in objectMode\n    if (state.objectMode && (chunk === null || chunk === undefined)) return;else if (!state.objectMode && (!chunk || !chunk.length)) return;\n    var ret = _this.push(chunk);\n    if (!ret) {\n      paused = true;\n      stream.pause();\n    }\n  });\n\n  // proxy all the other methods.\n  // important when wrapping filters and duplexes.\n  for (var i in stream) {\n    if (this[i] === undefined && typeof stream[i] === 'function') {\n      this[i] = function methodWrap(method) {\n        return function methodWrapReturnFunction() {\n          return stream[method].apply(stream, arguments);\n        };\n      }(i);\n    }\n  }\n\n  // proxy certain important events.\n  for (var n = 0; n < kProxyEvents.length; n++) {\n    stream.on(kProxyEvents[n], this.emit.bind(this, kProxyEvents[n]));\n  }\n\n  // when we try to consume some more bytes, simply unpause the\n  // underlying stream.\n  this._read = function (n) {\n    debug('wrapped _read', n);\n    if (paused) {\n      paused = false;\n      stream.resume();\n    }\n  };\n  return this;\n};\nif (typeof Symbol === 'function') {\n  Readable.prototype[Symbol.asyncIterator] = function () {\n    if (createReadableStreamAsyncIterator === undefined) {\n      createReadableStreamAsyncIterator = require('./internal/streams/async_iterator');\n    }\n    return createReadableStreamAsyncIterator(this);\n  };\n}\nObject.defineProperty(Readable.prototype, 'readableHighWaterMark', {\n  // making it explicit this property is not enumerable\n  // because otherwise some prototype manipulation in\n  // userland will fail\n  enumerable: false,\n  get: function get() {\n    return this._readableState.highWaterMark;\n  }\n});\nObject.defineProperty(Readable.prototype, 'readableBuffer', {\n  // making it explicit this property is not enumerable\n  // because otherwise some prototype manipulation in\n  // userland will fail\n  enumerable: false,\n  get: function get() {\n    return this._readableState && this._readableState.buffer;\n  }\n});\nObject.defineProperty(Readable.prototype, 'readableFlowing', {\n  // making it explicit this property is not enumerable\n  // because otherwise some prototype manipulation in\n  // userland will fail\n  enumerable: false,\n  get: function get() {\n    return this._readableState.flowing;\n  },\n  set: function set(state) {\n    if (this._readableState) {\n      this._readableState.flowing = state;\n    }\n  }\n});\n\n// exposed for testing purposes only.\nReadable._fromList = fromList;\nObject.defineProperty(Readable.prototype, 'readableLength', {\n  // making it explicit this property is not enumerable\n  // because otherwise some prototype manipulation in\n  // userland will fail\n  enumerable: false,\n  get: function get() {\n    return this._readableState.length;\n  }\n});\n\n// Pluck off n bytes from an array of buffers.\n// Length is the combined lengths of all the buffers in the list.\n// This function is designed to be inlinable, so please take care when making\n// changes to the function body.\nfunction fromList(n, state) {\n  // nothing buffered\n  if (state.length === 0) return null;\n  var ret;\n  if (state.objectMode) ret = state.buffer.shift();else if (!n || n >= state.length) {\n    // read it all, truncate the list\n    if (state.decoder) ret = state.buffer.join('');else if (state.buffer.length === 1) ret = state.buffer.first();else ret = state.buffer.concat(state.length);\n    state.buffer.clear();\n  } else {\n    // read part of list\n    ret = state.buffer.consume(n, state.decoder);\n  }\n  return ret;\n}\nfunction endReadable(stream) {\n  var state = stream._readableState;\n  debug('endReadable', state.endEmitted);\n  if (!state.endEmitted) {\n    state.ended = true;\n    process.nextTick(endReadableNT, state, stream);\n  }\n}\nfunction endReadableNT(state, stream) {\n  debug('endReadableNT', state.endEmitted, state.length);\n\n  // Check that we didn't get one last unshift.\n  if (!state.endEmitted && state.length === 0) {\n    state.endEmitted = true;\n    stream.readable = false;\n    stream.emit('end');\n    if (state.autoDestroy) {\n      // In case of duplex streams we need a way to detect\n      // if the writable side is ready for autoDestroy as well\n      var wState = stream._writableState;\n      if (!wState || wState.autoDestroy && wState.finished) {\n        stream.destroy();\n      }\n    }\n  }\n}\nif (typeof Symbol === 'function') {\n  Readable.from = function (iterable, opts) {\n    if (from === undefined) {\n      from = require('./internal/streams/from');\n    }\n    return from(Readable, iterable, opts);\n  };\n}\nfunction indexOf(xs, x) {\n  for (var i = 0, l = xs.length; i < l; i++) {\n    if (xs[i] === x) return i;\n  }\n  return -1;\n}","// Copyright Joyent, Inc. and other Node contributors.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a\n// copy of this software and associated documentation files (the\n// \"Software\"), to deal in the Software without restriction, including\n// without limitation the rights to use, copy, modify, merge, publish,\n// distribute, sublicense, and/or sell copies of the Software, and to permit\n// persons to whom the Software is furnished to do so, subject to the\n// following conditions:\n//\n// The above copyright notice and this permission notice shall be included\n// in all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN\n// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR\n// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\n// USE OR OTHER DEALINGS IN THE SOFTWARE.\n\n// a transform stream is a readable/writable stream where you do\n// something with the data.  Sometimes it's called a \"filter\",\n// but that's not a great name for it, since that implies a thing where\n// some bits pass through, and others are simply ignored.  (That would\n// be a valid example of a transform, of course.)\n//\n// While the output is causally related to the input, it's not a\n// necessarily symmetric or synchronous transformation.  For example,\n// a zlib stream might take multiple plain-text writes(), and then\n// emit a single compressed chunk some time in the future.\n//\n// Here's how this works:\n//\n// The Transform stream has all the aspects of the readable and writable\n// stream classes.  When you write(chunk), that calls _write(chunk,cb)\n// internally, and returns false if there's a lot of pending writes\n// buffered up.  When you call read(), that calls _read(n) until\n// there's enough pending readable data buffered up.\n//\n// In a transform stream, the written data is placed in a buffer.  When\n// _read(n) is called, it transforms the queued up data, calling the\n// buffered _write cb's as it consumes chunks.  If consuming a single\n// written chunk would result in multiple output chunks, then the first\n// outputted bit calls the readcb, and subsequent chunks just go into\n// the read buffer, and will cause it to emit 'readable' if necessary.\n//\n// This way, back-pressure is actually determined by the reading side,\n// since _read has to be called to start processing a new chunk.  However,\n// a pathological inflate type of transform can cause excessive buffering\n// here.  For example, imagine a stream where every byte of input is\n// interpreted as an integer from 0-255, and then results in that many\n// bytes of output.  Writing the 4 bytes {ff,ff,ff,ff} would result in\n// 1kb of data being output.  In this case, you could write a very small\n// amount of input, and end up with a very large amount of output.  In\n// such a pathological inflating mechanism, there'd be no way to tell\n// the system to stop doing the transform.  A single 4MB write could\n// cause the system to run out of memory.\n//\n// However, even in such a pathological case, only a single written chunk\n// would be consumed, and then the rest would wait (un-transformed) until\n// the results of the previous transformed chunk were consumed.\n\n'use strict';\n\nmodule.exports = Transform;\nvar _require$codes = require('../errors').codes,\n  ERR_METHOD_NOT_IMPLEMENTED = _require$codes.ERR_METHOD_NOT_IMPLEMENTED,\n  ERR_MULTIPLE_CALLBACK = _require$codes.ERR_MULTIPLE_CALLBACK,\n  ERR_TRANSFORM_ALREADY_TRANSFORMING = _require$codes.ERR_TRANSFORM_ALREADY_TRANSFORMING,\n  ERR_TRANSFORM_WITH_LENGTH_0 = _require$codes.ERR_TRANSFORM_WITH_LENGTH_0;\nvar Duplex = require('./_stream_duplex');\nrequire('inherits')(Transform, Duplex);\nfunction afterTransform(er, data) {\n  var ts = this._transformState;\n  ts.transforming = false;\n  var cb = ts.writecb;\n  if (cb === null) {\n    return this.emit('error', new ERR_MULTIPLE_CALLBACK());\n  }\n  ts.writechunk = null;\n  ts.writecb = null;\n  if (data != null)\n    // single equals check for both `null` and `undefined`\n    this.push(data);\n  cb(er);\n  var rs = this._readableState;\n  rs.reading = false;\n  if (rs.needReadable || rs.length < rs.highWaterMark) {\n    this._read(rs.highWaterMark);\n  }\n}\nfunction Transform(options) {\n  if (!(this instanceof Transform)) return new Transform(options);\n  Duplex.call(this, options);\n  this._transformState = {\n    afterTransform: afterTransform.bind(this),\n    needTransform: false,\n    transforming: false,\n    writecb: null,\n    writechunk: null,\n    writeencoding: null\n  };\n\n  // start out asking for a readable event once data is transformed.\n  this._readableState.needReadable = true;\n\n  // we have implemented the _read method, and done the other things\n  // that Readable wants before the first _read call, so unset the\n  // sync guard flag.\n  this._readableState.sync = false;\n  if (options) {\n    if (typeof options.transform === 'function') this._transform = options.transform;\n    if (typeof options.flush === 'function') this._flush = options.flush;\n  }\n\n  // When the writable side finishes, then flush out anything remaining.\n  this.on('prefinish', prefinish);\n}\nfunction prefinish() {\n  var _this = this;\n  if (typeof this._flush === 'function' && !this._readableState.destroyed) {\n    this._flush(function (er, data) {\n      done(_this, er, data);\n    });\n  } else {\n    done(this, null, null);\n  }\n}\nTransform.prototype.push = function (chunk, encoding) {\n  this._transformState.needTransform = false;\n  return Duplex.prototype.push.call(this, chunk, encoding);\n};\n\n// This is the part where you do stuff!\n// override this function in implementation classes.\n// 'chunk' is an input chunk.\n//\n// Call `push(newChunk)` to pass along transformed output\n// to the readable side.  You may call 'push' zero or more times.\n//\n// Call `cb(err)` when you are done with this chunk.  If you pass\n// an error, then that'll put the hurt on the whole operation.  If you\n// never call cb(), then you'll never get another chunk.\nTransform.prototype._transform = function (chunk, encoding, cb) {\n  cb(new ERR_METHOD_NOT_IMPLEMENTED('_transform()'));\n};\nTransform.prototype._write = function (chunk, encoding, cb) {\n  var ts = this._transformState;\n  ts.writecb = cb;\n  ts.writechunk = chunk;\n  ts.writeencoding = encoding;\n  if (!ts.transforming) {\n    var rs = this._readableState;\n    if (ts.needTransform || rs.needReadable || rs.length < rs.highWaterMark) this._read(rs.highWaterMark);\n  }\n};\n\n// Doesn't matter what the args are here.\n// _transform does all the work.\n// That we got here means that the readable side wants more data.\nTransform.prototype._read = function (n) {\n  var ts = this._transformState;\n  if (ts.writechunk !== null && !ts.transforming) {\n    ts.transforming = true;\n    this._transform(ts.writechunk, ts.writeencoding, ts.afterTransform);\n  } else {\n    // mark that we need a transform, so that any data that comes in\n    // will get processed, now that we've asked for it.\n    ts.needTransform = true;\n  }\n};\nTransform.prototype._destroy = function (err, cb) {\n  Duplex.prototype._destroy.call(this, err, function (err2) {\n    cb(err2);\n  });\n};\nfunction done(stream, er, data) {\n  if (er) return stream.emit('error', er);\n  if (data != null)\n    // single equals check for both `null` and `undefined`\n    stream.push(data);\n\n  // TODO(BridgeAR): Write a test for these two error cases\n  // if there's nothing in the write buffer, then that means\n  // that nothing more will ever be provided\n  if (stream._writableState.length) throw new ERR_TRANSFORM_WITH_LENGTH_0();\n  if (stream._transformState.transforming) throw new ERR_TRANSFORM_ALREADY_TRANSFORMING();\n  return stream.push(null);\n}","// Copyright Joyent, Inc. and other Node contributors.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a\n// copy of this software and associated documentation files (the\n// \"Software\"), to deal in the Software without restriction, including\n// without limitation the rights to use, copy, modify, merge, publish,\n// distribute, sublicense, and/or sell copies of the Software, and to permit\n// persons to whom the Software is furnished to do so, subject to the\n// following conditions:\n//\n// The above copyright notice and this permission notice shall be included\n// in all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN\n// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR\n// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\n// USE OR OTHER DEALINGS IN THE SOFTWARE.\n\n// A bit simpler than readable streams.\n// Implement an async ._write(chunk, encoding, cb), and it'll handle all\n// the drain event emission and buffering.\n\n'use strict';\n\nmodule.exports = Writable;\n\n/*  */\nfunction WriteReq(chunk, encoding, cb) {\n  this.chunk = chunk;\n  this.encoding = encoding;\n  this.callback = cb;\n  this.next = null;\n}\n\n// It seems a linked list but it is not\n// there will be only 2 of these for each stream\nfunction CorkedRequest(state) {\n  var _this = this;\n  this.next = null;\n  this.entry = null;\n  this.finish = function () {\n    onCorkedFinish(_this, state);\n  };\n}\n/*  */\n\n/**/\nvar Duplex;\n/**/\n\nWritable.WritableState = WritableState;\n\n/**/\nvar internalUtil = {\n  deprecate: require('util-deprecate')\n};\n/**/\n\n/**/\nvar Stream = require('./internal/streams/stream');\n/**/\n\nvar Buffer = require('buffer').Buffer;\nvar OurUint8Array = (typeof global !== 'undefined' ? global : typeof window !== 'undefined' ? window : typeof self !== 'undefined' ? self : {}).Uint8Array || function () {};\nfunction _uint8ArrayToBuffer(chunk) {\n  return Buffer.from(chunk);\n}\nfunction _isUint8Array(obj) {\n  return Buffer.isBuffer(obj) || obj instanceof OurUint8Array;\n}\nvar destroyImpl = require('./internal/streams/destroy');\nvar _require = require('./internal/streams/state'),\n  getHighWaterMark = _require.getHighWaterMark;\nvar _require$codes = require('../errors').codes,\n  ERR_INVALID_ARG_TYPE = _require$codes.ERR_INVALID_ARG_TYPE,\n  ERR_METHOD_NOT_IMPLEMENTED = _require$codes.ERR_METHOD_NOT_IMPLEMENTED,\n  ERR_MULTIPLE_CALLBACK = _require$codes.ERR_MULTIPLE_CALLBACK,\n  ERR_STREAM_CANNOT_PIPE = _require$codes.ERR_STREAM_CANNOT_PIPE,\n  ERR_STREAM_DESTROYED = _require$codes.ERR_STREAM_DESTROYED,\n  ERR_STREAM_NULL_VALUES = _require$codes.ERR_STREAM_NULL_VALUES,\n  ERR_STREAM_WRITE_AFTER_END = _require$codes.ERR_STREAM_WRITE_AFTER_END,\n  ERR_UNKNOWN_ENCODING = _require$codes.ERR_UNKNOWN_ENCODING;\nvar errorOrDestroy = destroyImpl.errorOrDestroy;\nrequire('inherits')(Writable, Stream);\nfunction nop() {}\nfunction WritableState(options, stream, isDuplex) {\n  Duplex = Duplex || require('./_stream_duplex');\n  options = options || {};\n\n  // Duplex streams are both readable and writable, but share\n  // the same options object.\n  // However, some cases require setting options to different\n  // values for the readable and the writable sides of the duplex stream,\n  // e.g. options.readableObjectMode vs. options.writableObjectMode, etc.\n  if (typeof isDuplex !== 'boolean') isDuplex = stream instanceof Duplex;\n\n  // object stream flag to indicate whether or not this stream\n  // contains buffers or objects.\n  this.objectMode = !!options.objectMode;\n  if (isDuplex) this.objectMode = this.objectMode || !!options.writableObjectMode;\n\n  // the point at which write() starts returning false\n  // Note: 0 is a valid value, means that we always return false if\n  // the entire buffer is not flushed immediately on write()\n  this.highWaterMark = getHighWaterMark(this, options, 'writableHighWaterMark', isDuplex);\n\n  // if _final has been called\n  this.finalCalled = false;\n\n  // drain event flag.\n  this.needDrain = false;\n  // at the start of calling end()\n  this.ending = false;\n  // when end() has been called, and returned\n  this.ended = false;\n  // when 'finish' is emitted\n  this.finished = false;\n\n  // has it been destroyed\n  this.destroyed = false;\n\n  // should we decode strings into buffers before passing to _write?\n  // this is here so that some node-core streams can optimize string\n  // handling at a lower level.\n  var noDecode = options.decodeStrings === false;\n  this.decodeStrings = !noDecode;\n\n  // Crypto is kind of old and crusty.  Historically, its default string\n  // encoding is 'binary' so we have to make this configurable.\n  // Everything else in the universe uses 'utf8', though.\n  this.defaultEncoding = options.defaultEncoding || 'utf8';\n\n  // not an actual buffer we keep track of, but a measurement\n  // of how much we're waiting to get pushed to some underlying\n  // socket or file.\n  this.length = 0;\n\n  // a flag to see when we're in the middle of a write.\n  this.writing = false;\n\n  // when true all writes will be buffered until .uncork() call\n  this.corked = 0;\n\n  // a flag to be able to tell if the onwrite cb is called immediately,\n  // or on a later tick.  We set this to true at first, because any\n  // actions that shouldn't happen until \"later\" should generally also\n  // not happen before the first write call.\n  this.sync = true;\n\n  // a flag to know if we're processing previously buffered items, which\n  // may call the _write() callback in the same tick, so that we don't\n  // end up in an overlapped onwrite situation.\n  this.bufferProcessing = false;\n\n  // the callback that's passed to _write(chunk,cb)\n  this.onwrite = function (er) {\n    onwrite(stream, er);\n  };\n\n  // the callback that the user supplies to write(chunk,encoding,cb)\n  this.writecb = null;\n\n  // the amount that is being written when _write is called.\n  this.writelen = 0;\n  this.bufferedRequest = null;\n  this.lastBufferedRequest = null;\n\n  // number of pending user-supplied write callbacks\n  // this must be 0 before 'finish' can be emitted\n  this.pendingcb = 0;\n\n  // emit prefinish if the only thing we're waiting for is _write cbs\n  // This is relevant for synchronous Transform streams\n  this.prefinished = false;\n\n  // True if the error was already emitted and should not be thrown again\n  this.errorEmitted = false;\n\n  // Should close be emitted on destroy. Defaults to true.\n  this.emitClose = options.emitClose !== false;\n\n  // Should .destroy() be called after 'finish' (and potentially 'end')\n  this.autoDestroy = !!options.autoDestroy;\n\n  // count buffered requests\n  this.bufferedRequestCount = 0;\n\n  // allocate the first CorkedRequest, there is always\n  // one allocated and free to use, and we maintain at most two\n  this.corkedRequestsFree = new CorkedRequest(this);\n}\nWritableState.prototype.getBuffer = function getBuffer() {\n  var current = this.bufferedRequest;\n  var out = [];\n  while (current) {\n    out.push(current);\n    current = current.next;\n  }\n  return out;\n};\n(function () {\n  try {\n    Object.defineProperty(WritableState.prototype, 'buffer', {\n      get: internalUtil.deprecate(function writableStateBufferGetter() {\n        return this.getBuffer();\n      }, '_writableState.buffer is deprecated. Use _writableState.getBuffer ' + 'instead.', 'DEP0003')\n    });\n  } catch (_) {}\n})();\n\n// Test _writableState for inheritance to account for Duplex streams,\n// whose prototype chain only points to Readable.\nvar realHasInstance;\nif (typeof Symbol === 'function' && Symbol.hasInstance && typeof Function.prototype[Symbol.hasInstance] === 'function') {\n  realHasInstance = Function.prototype[Symbol.hasInstance];\n  Object.defineProperty(Writable, Symbol.hasInstance, {\n    value: function value(object) {\n      if (realHasInstance.call(this, object)) return true;\n      if (this !== Writable) return false;\n      return object && object._writableState instanceof WritableState;\n    }\n  });\n} else {\n  realHasInstance = function realHasInstance(object) {\n    return object instanceof this;\n  };\n}\nfunction Writable(options) {\n  Duplex = Duplex || require('./_stream_duplex');\n\n  // Writable ctor is applied to Duplexes, too.\n  // `realHasInstance` is necessary because using plain `instanceof`\n  // would return false, as no `_writableState` property is attached.\n\n  // Trying to use the custom `instanceof` for Writable here will also break the\n  // Node.js LazyTransform implementation, which has a non-trivial getter for\n  // `_writableState` that would lead to infinite recursion.\n\n  // Checking for a Stream.Duplex instance is faster here instead of inside\n  // the WritableState constructor, at least with V8 6.5\n  var isDuplex = this instanceof Duplex;\n  if (!isDuplex && !realHasInstance.call(Writable, this)) return new Writable(options);\n  this._writableState = new WritableState(options, this, isDuplex);\n\n  // legacy.\n  this.writable = true;\n  if (options) {\n    if (typeof options.write === 'function') this._write = options.write;\n    if (typeof options.writev === 'function') this._writev = options.writev;\n    if (typeof options.destroy === 'function') this._destroy = options.destroy;\n    if (typeof options.final === 'function') this._final = options.final;\n  }\n  Stream.call(this);\n}\n\n// Otherwise people can pipe Writable streams, which is just wrong.\nWritable.prototype.pipe = function () {\n  errorOrDestroy(this, new ERR_STREAM_CANNOT_PIPE());\n};\nfunction writeAfterEnd(stream, cb) {\n  var er = new ERR_STREAM_WRITE_AFTER_END();\n  // TODO: defer error events consistently everywhere, not just the cb\n  errorOrDestroy(stream, er);\n  process.nextTick(cb, er);\n}\n\n// Checks that a user-supplied chunk is valid, especially for the particular\n// mode the stream is in. Currently this means that `null` is never accepted\n// and undefined/non-string values are only allowed in object mode.\nfunction validChunk(stream, state, chunk, cb) {\n  var er;\n  if (chunk === null) {\n    er = new ERR_STREAM_NULL_VALUES();\n  } else if (typeof chunk !== 'string' && !state.objectMode) {\n    er = new ERR_INVALID_ARG_TYPE('chunk', ['string', 'Buffer'], chunk);\n  }\n  if (er) {\n    errorOrDestroy(stream, er);\n    process.nextTick(cb, er);\n    return false;\n  }\n  return true;\n}\nWritable.prototype.write = function (chunk, encoding, cb) {\n  var state = this._writableState;\n  var ret = false;\n  var isBuf = !state.objectMode && _isUint8Array(chunk);\n  if (isBuf && !Buffer.isBuffer(chunk)) {\n    chunk = _uint8ArrayToBuffer(chunk);\n  }\n  if (typeof encoding === 'function') {\n    cb = encoding;\n    encoding = null;\n  }\n  if (isBuf) encoding = 'buffer';else if (!encoding) encoding = state.defaultEncoding;\n  if (typeof cb !== 'function') cb = nop;\n  if (state.ending) writeAfterEnd(this, cb);else if (isBuf || validChunk(this, state, chunk, cb)) {\n    state.pendingcb++;\n    ret = writeOrBuffer(this, state, isBuf, chunk, encoding, cb);\n  }\n  return ret;\n};\nWritable.prototype.cork = function () {\n  this._writableState.corked++;\n};\nWritable.prototype.uncork = function () {\n  var state = this._writableState;\n  if (state.corked) {\n    state.corked--;\n    if (!state.writing && !state.corked && !state.bufferProcessing && state.bufferedRequest) clearBuffer(this, state);\n  }\n};\nWritable.prototype.setDefaultEncoding = function setDefaultEncoding(encoding) {\n  // node::ParseEncoding() requires lower case.\n  if (typeof encoding === 'string') encoding = encoding.toLowerCase();\n  if (!(['hex', 'utf8', 'utf-8', 'ascii', 'binary', 'base64', 'ucs2', 'ucs-2', 'utf16le', 'utf-16le', 'raw'].indexOf((encoding + '').toLowerCase()) > -1)) throw new ERR_UNKNOWN_ENCODING(encoding);\n  this._writableState.defaultEncoding = encoding;\n  return this;\n};\nObject.defineProperty(Writable.prototype, 'writableBuffer', {\n  // making it explicit this property is not enumerable\n  // because otherwise some prototype manipulation in\n  // userland will fail\n  enumerable: false,\n  get: function get() {\n    return this._writableState && this._writableState.getBuffer();\n  }\n});\nfunction decodeChunk(state, chunk, encoding) {\n  if (!state.objectMode && state.decodeStrings !== false && typeof chunk === 'string') {\n    chunk = Buffer.from(chunk, encoding);\n  }\n  return chunk;\n}\nObject.defineProperty(Writable.prototype, 'writableHighWaterMark', {\n  // making it explicit this property is not enumerable\n  // because otherwise some prototype manipulation in\n  // userland will fail\n  enumerable: false,\n  get: function get() {\n    return this._writableState.highWaterMark;\n  }\n});\n\n// if we're already writing something, then just put this\n// in the queue, and wait our turn.  Otherwise, call _write\n// If we return false, then we need a drain event, so set that flag.\nfunction writeOrBuffer(stream, state, isBuf, chunk, encoding, cb) {\n  if (!isBuf) {\n    var newChunk = decodeChunk(state, chunk, encoding);\n    if (chunk !== newChunk) {\n      isBuf = true;\n      encoding = 'buffer';\n      chunk = newChunk;\n    }\n  }\n  var len = state.objectMode ? 1 : chunk.length;\n  state.length += len;\n  var ret = state.length < state.highWaterMark;\n  // we must ensure that previous needDrain will not be reset to false.\n  if (!ret) state.needDrain = true;\n  if (state.writing || state.corked) {\n    var last = state.lastBufferedRequest;\n    state.lastBufferedRequest = {\n      chunk: chunk,\n      encoding: encoding,\n      isBuf: isBuf,\n      callback: cb,\n      next: null\n    };\n    if (last) {\n      last.next = state.lastBufferedRequest;\n    } else {\n      state.bufferedRequest = state.lastBufferedRequest;\n    }\n    state.bufferedRequestCount += 1;\n  } else {\n    doWrite(stream, state, false, len, chunk, encoding, cb);\n  }\n  return ret;\n}\nfunction doWrite(stream, state, writev, len, chunk, encoding, cb) {\n  state.writelen = len;\n  state.writecb = cb;\n  state.writing = true;\n  state.sync = true;\n  if (state.destroyed) state.onwrite(new ERR_STREAM_DESTROYED('write'));else if (writev) stream._writev(chunk, state.onwrite);else stream._write(chunk, encoding, state.onwrite);\n  state.sync = false;\n}\nfunction onwriteError(stream, state, sync, er, cb) {\n  --state.pendingcb;\n  if (sync) {\n    // defer the callback if we are being called synchronously\n    // to avoid piling up things on the stack\n    process.nextTick(cb, er);\n    // this can emit finish, and it will always happen\n    // after error\n    process.nextTick(finishMaybe, stream, state);\n    stream._writableState.errorEmitted = true;\n    errorOrDestroy(stream, er);\n  } else {\n    // the caller expect this to happen before if\n    // it is async\n    cb(er);\n    stream._writableState.errorEmitted = true;\n    errorOrDestroy(stream, er);\n    // this can emit finish, but finish must\n    // always follow error\n    finishMaybe(stream, state);\n  }\n}\nfunction onwriteStateUpdate(state) {\n  state.writing = false;\n  state.writecb = null;\n  state.length -= state.writelen;\n  state.writelen = 0;\n}\nfunction onwrite(stream, er) {\n  var state = stream._writableState;\n  var sync = state.sync;\n  var cb = state.writecb;\n  if (typeof cb !== 'function') throw new ERR_MULTIPLE_CALLBACK();\n  onwriteStateUpdate(state);\n  if (er) onwriteError(stream, state, sync, er, cb);else {\n    // Check if we're actually ready to finish, but don't emit yet\n    var finished = needFinish(state) || stream.destroyed;\n    if (!finished && !state.corked && !state.bufferProcessing && state.bufferedRequest) {\n      clearBuffer(stream, state);\n    }\n    if (sync) {\n      process.nextTick(afterWrite, stream, state, finished, cb);\n    } else {\n      afterWrite(stream, state, finished, cb);\n    }\n  }\n}\nfunction afterWrite(stream, state, finished, cb) {\n  if (!finished) onwriteDrain(stream, state);\n  state.pendingcb--;\n  cb();\n  finishMaybe(stream, state);\n}\n\n// Must force callback to be called on nextTick, so that we don't\n// emit 'drain' before the write() consumer gets the 'false' return\n// value, and has a chance to attach a 'drain' listener.\nfunction onwriteDrain(stream, state) {\n  if (state.length === 0 && state.needDrain) {\n    state.needDrain = false;\n    stream.emit('drain');\n  }\n}\n\n// if there's something in the buffer waiting, then process it\nfunction clearBuffer(stream, state) {\n  state.bufferProcessing = true;\n  var entry = state.bufferedRequest;\n  if (stream._writev && entry && entry.next) {\n    // Fast case, write everything using _writev()\n    var l = state.bufferedRequestCount;\n    var buffer = new Array(l);\n    var holder = state.corkedRequestsFree;\n    holder.entry = entry;\n    var count = 0;\n    var allBuffers = true;\n    while (entry) {\n      buffer[count] = entry;\n      if (!entry.isBuf) allBuffers = false;\n      entry = entry.next;\n      count += 1;\n    }\n    buffer.allBuffers = allBuffers;\n    doWrite(stream, state, true, state.length, buffer, '', holder.finish);\n\n    // doWrite is almost always async, defer these to save a bit of time\n    // as the hot path ends with doWrite\n    state.pendingcb++;\n    state.lastBufferedRequest = null;\n    if (holder.next) {\n      state.corkedRequestsFree = holder.next;\n      holder.next = null;\n    } else {\n      state.corkedRequestsFree = new CorkedRequest(state);\n    }\n    state.bufferedRequestCount = 0;\n  } else {\n    // Slow case, write chunks one-by-one\n    while (entry) {\n      var chunk = entry.chunk;\n      var encoding = entry.encoding;\n      var cb = entry.callback;\n      var len = state.objectMode ? 1 : chunk.length;\n      doWrite(stream, state, false, len, chunk, encoding, cb);\n      entry = entry.next;\n      state.bufferedRequestCount--;\n      // if we didn't call the onwrite immediately, then\n      // it means that we need to wait until it does.\n      // also, that means that the chunk and cb are currently\n      // being processed, so move the buffer counter past them.\n      if (state.writing) {\n        break;\n      }\n    }\n    if (entry === null) state.lastBufferedRequest = null;\n  }\n  state.bufferedRequest = entry;\n  state.bufferProcessing = false;\n}\nWritable.prototype._write = function (chunk, encoding, cb) {\n  cb(new ERR_METHOD_NOT_IMPLEMENTED('_write()'));\n};\nWritable.prototype._writev = null;\nWritable.prototype.end = function (chunk, encoding, cb) {\n  var state = this._writableState;\n  if (typeof chunk === 'function') {\n    cb = chunk;\n    chunk = null;\n    encoding = null;\n  } else if (typeof encoding === 'function') {\n    cb = encoding;\n    encoding = null;\n  }\n  if (chunk !== null && chunk !== undefined) this.write(chunk, encoding);\n\n  // .end() fully uncorks\n  if (state.corked) {\n    state.corked = 1;\n    this.uncork();\n  }\n\n  // ignore unnecessary end() calls.\n  if (!state.ending) endWritable(this, state, cb);\n  return this;\n};\nObject.defineProperty(Writable.prototype, 'writableLength', {\n  // making it explicit this property is not enumerable\n  // because otherwise some prototype manipulation in\n  // userland will fail\n  enumerable: false,\n  get: function get() {\n    return this._writableState.length;\n  }\n});\nfunction needFinish(state) {\n  return state.ending && state.length === 0 && state.bufferedRequest === null && !state.finished && !state.writing;\n}\nfunction callFinal(stream, state) {\n  stream._final(function (err) {\n    state.pendingcb--;\n    if (err) {\n      errorOrDestroy(stream, err);\n    }\n    state.prefinished = true;\n    stream.emit('prefinish');\n    finishMaybe(stream, state);\n  });\n}\nfunction prefinish(stream, state) {\n  if (!state.prefinished && !state.finalCalled) {\n    if (typeof stream._final === 'function' && !state.destroyed) {\n      state.pendingcb++;\n      state.finalCalled = true;\n      process.nextTick(callFinal, stream, state);\n    } else {\n      state.prefinished = true;\n      stream.emit('prefinish');\n    }\n  }\n}\nfunction finishMaybe(stream, state) {\n  var need = needFinish(state);\n  if (need) {\n    prefinish(stream, state);\n    if (state.pendingcb === 0) {\n      state.finished = true;\n      stream.emit('finish');\n      if (state.autoDestroy) {\n        // In case of duplex streams we need a way to detect\n        // if the readable side is ready for autoDestroy as well\n        var rState = stream._readableState;\n        if (!rState || rState.autoDestroy && rState.endEmitted) {\n          stream.destroy();\n        }\n      }\n    }\n  }\n  return need;\n}\nfunction endWritable(stream, state, cb) {\n  state.ending = true;\n  finishMaybe(stream, state);\n  if (cb) {\n    if (state.finished) process.nextTick(cb);else stream.once('finish', cb);\n  }\n  state.ended = true;\n  stream.writable = false;\n}\nfunction onCorkedFinish(corkReq, state, err) {\n  var entry = corkReq.entry;\n  corkReq.entry = null;\n  while (entry) {\n    var cb = entry.callback;\n    state.pendingcb--;\n    cb(err);\n    entry = entry.next;\n  }\n\n  // reuse the free corkReq.\n  state.corkedRequestsFree.next = corkReq;\n}\nObject.defineProperty(Writable.prototype, 'destroyed', {\n  // making it explicit this property is not enumerable\n  // because otherwise some prototype manipulation in\n  // userland will fail\n  enumerable: false,\n  get: function get() {\n    if (this._writableState === undefined) {\n      return false;\n    }\n    return this._writableState.destroyed;\n  },\n  set: function set(value) {\n    // we ignore the value if the stream\n    // has not been initialized yet\n    if (!this._writableState) {\n      return;\n    }\n\n    // backward compatibility, the user is explicitly\n    // managing destroyed\n    this._writableState.destroyed = value;\n  }\n});\nWritable.prototype.destroy = destroyImpl.destroy;\nWritable.prototype._undestroy = destroyImpl.undestroy;\nWritable.prototype._destroy = function (err, cb) {\n  cb(err);\n};","'use strict';\n\nvar _Object$setPrototypeO;\nfunction _defineProperty(obj, key, value) { key = _toPropertyKey(key); if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\nfunction _toPropertyKey(arg) { var key = _toPrimitive(arg, \"string\"); return typeof key === \"symbol\" ? key : String(key); }\nfunction _toPrimitive(input, hint) { if (typeof input !== \"object\" || input === null) return input; var prim = input[Symbol.toPrimitive]; if (prim !== undefined) { var res = prim.call(input, hint || \"default\"); if (typeof res !== \"object\") return res; throw new TypeError(\"@@toPrimitive must return a primitive value.\"); } return (hint === \"string\" ? String : Number)(input); }\nvar finished = require('./end-of-stream');\nvar kLastResolve = Symbol('lastResolve');\nvar kLastReject = Symbol('lastReject');\nvar kError = Symbol('error');\nvar kEnded = Symbol('ended');\nvar kLastPromise = Symbol('lastPromise');\nvar kHandlePromise = Symbol('handlePromise');\nvar kStream = Symbol('stream');\nfunction createIterResult(value, done) {\n  return {\n    value: value,\n    done: done\n  };\n}\nfunction readAndResolve(iter) {\n  var resolve = iter[kLastResolve];\n  if (resolve !== null) {\n    var data = iter[kStream].read();\n    // we defer if data is null\n    // we can be expecting either 'end' or\n    // 'error'\n    if (data !== null) {\n      iter[kLastPromise] = null;\n      iter[kLastResolve] = null;\n      iter[kLastReject] = null;\n      resolve(createIterResult(data, false));\n    }\n  }\n}\nfunction onReadable(iter) {\n  // we wait for the next tick, because it might\n  // emit an error with process.nextTick\n  process.nextTick(readAndResolve, iter);\n}\nfunction wrapForNext(lastPromise, iter) {\n  return function (resolve, reject) {\n    lastPromise.then(function () {\n      if (iter[kEnded]) {\n        resolve(createIterResult(undefined, true));\n        return;\n      }\n      iter[kHandlePromise](resolve, reject);\n    }, reject);\n  };\n}\nvar AsyncIteratorPrototype = Object.getPrototypeOf(function () {});\nvar ReadableStreamAsyncIteratorPrototype = Object.setPrototypeOf((_Object$setPrototypeO = {\n  get stream() {\n    return this[kStream];\n  },\n  next: function next() {\n    var _this = this;\n    // if we have detected an error in the meanwhile\n    // reject straight away\n    var error = this[kError];\n    if (error !== null) {\n      return Promise.reject(error);\n    }\n    if (this[kEnded]) {\n      return Promise.resolve(createIterResult(undefined, true));\n    }\n    if (this[kStream].destroyed) {\n      // We need to defer via nextTick because if .destroy(err) is\n      // called, the error will be emitted via nextTick, and\n      // we cannot guarantee that there is no error lingering around\n      // waiting to be emitted.\n      return new Promise(function (resolve, reject) {\n        process.nextTick(function () {\n          if (_this[kError]) {\n            reject(_this[kError]);\n          } else {\n            resolve(createIterResult(undefined, true));\n          }\n        });\n      });\n    }\n\n    // if we have multiple next() calls\n    // we will wait for the previous Promise to finish\n    // this logic is optimized to support for await loops,\n    // where next() is only called once at a time\n    var lastPromise = this[kLastPromise];\n    var promise;\n    if (lastPromise) {\n      promise = new Promise(wrapForNext(lastPromise, this));\n    } else {\n      // fast path needed to support multiple this.push()\n      // without triggering the next() queue\n      var data = this[kStream].read();\n      if (data !== null) {\n        return Promise.resolve(createIterResult(data, false));\n      }\n      promise = new Promise(this[kHandlePromise]);\n    }\n    this[kLastPromise] = promise;\n    return promise;\n  }\n}, _defineProperty(_Object$setPrototypeO, Symbol.asyncIterator, function () {\n  return this;\n}), _defineProperty(_Object$setPrototypeO, \"return\", function _return() {\n  var _this2 = this;\n  // destroy(err, cb) is a private API\n  // we can guarantee we have that here, because we control the\n  // Readable class this is attached to\n  return new Promise(function (resolve, reject) {\n    _this2[kStream].destroy(null, function (err) {\n      if (err) {\n        reject(err);\n        return;\n      }\n      resolve(createIterResult(undefined, true));\n    });\n  });\n}), _Object$setPrototypeO), AsyncIteratorPrototype);\nvar createReadableStreamAsyncIterator = function createReadableStreamAsyncIterator(stream) {\n  var _Object$create;\n  var iterator = Object.create(ReadableStreamAsyncIteratorPrototype, (_Object$create = {}, _defineProperty(_Object$create, kStream, {\n    value: stream,\n    writable: true\n  }), _defineProperty(_Object$create, kLastResolve, {\n    value: null,\n    writable: true\n  }), _defineProperty(_Object$create, kLastReject, {\n    value: null,\n    writable: true\n  }), _defineProperty(_Object$create, kError, {\n    value: null,\n    writable: true\n  }), _defineProperty(_Object$create, kEnded, {\n    value: stream._readableState.endEmitted,\n    writable: true\n  }), _defineProperty(_Object$create, kHandlePromise, {\n    value: function value(resolve, reject) {\n      var data = iterator[kStream].read();\n      if (data) {\n        iterator[kLastPromise] = null;\n        iterator[kLastResolve] = null;\n        iterator[kLastReject] = null;\n        resolve(createIterResult(data, false));\n      } else {\n        iterator[kLastResolve] = resolve;\n        iterator[kLastReject] = reject;\n      }\n    },\n    writable: true\n  }), _Object$create));\n  iterator[kLastPromise] = null;\n  finished(stream, function (err) {\n    if (err && err.code !== 'ERR_STREAM_PREMATURE_CLOSE') {\n      var reject = iterator[kLastReject];\n      // reject if we are waiting for data in the Promise\n      // returned by next() and store the error\n      if (reject !== null) {\n        iterator[kLastPromise] = null;\n        iterator[kLastResolve] = null;\n        iterator[kLastReject] = null;\n        reject(err);\n      }\n      iterator[kError] = err;\n      return;\n    }\n    var resolve = iterator[kLastResolve];\n    if (resolve !== null) {\n      iterator[kLastPromise] = null;\n      iterator[kLastResolve] = null;\n      iterator[kLastReject] = null;\n      resolve(createIterResult(undefined, true));\n    }\n    iterator[kEnded] = true;\n  });\n  stream.on('readable', onReadable.bind(null, iterator));\n  return iterator;\n};\nmodule.exports = createReadableStreamAsyncIterator;","'use strict';\n\nfunction ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }\nfunction _defineProperty(obj, key, value) { key = _toPropertyKey(key); if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\nfunction _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, _toPropertyKey(descriptor.key), descriptor); } }\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); Object.defineProperty(Constructor, \"prototype\", { writable: false }); return Constructor; }\nfunction _toPropertyKey(arg) { var key = _toPrimitive(arg, \"string\"); return typeof key === \"symbol\" ? key : String(key); }\nfunction _toPrimitive(input, hint) { if (typeof input !== \"object\" || input === null) return input; var prim = input[Symbol.toPrimitive]; if (prim !== undefined) { var res = prim.call(input, hint || \"default\"); if (typeof res !== \"object\") return res; throw new TypeError(\"@@toPrimitive must return a primitive value.\"); } return (hint === \"string\" ? String : Number)(input); }\nvar _require = require('buffer'),\n  Buffer = _require.Buffer;\nvar _require2 = require('util'),\n  inspect = _require2.inspect;\nvar custom = inspect && inspect.custom || 'inspect';\nfunction copyBuffer(src, target, offset) {\n  Buffer.prototype.copy.call(src, target, offset);\n}\nmodule.exports = /*#__PURE__*/function () {\n  function BufferList() {\n    _classCallCheck(this, BufferList);\n    this.head = null;\n    this.tail = null;\n    this.length = 0;\n  }\n  _createClass(BufferList, [{\n    key: \"push\",\n    value: function push(v) {\n      var entry = {\n        data: v,\n        next: null\n      };\n      if (this.length > 0) this.tail.next = entry;else this.head = entry;\n      this.tail = entry;\n      ++this.length;\n    }\n  }, {\n    key: \"unshift\",\n    value: function unshift(v) {\n      var entry = {\n        data: v,\n        next: this.head\n      };\n      if (this.length === 0) this.tail = entry;\n      this.head = entry;\n      ++this.length;\n    }\n  }, {\n    key: \"shift\",\n    value: function shift() {\n      if (this.length === 0) return;\n      var ret = this.head.data;\n      if (this.length === 1) this.head = this.tail = null;else this.head = this.head.next;\n      --this.length;\n      return ret;\n    }\n  }, {\n    key: \"clear\",\n    value: function clear() {\n      this.head = this.tail = null;\n      this.length = 0;\n    }\n  }, {\n    key: \"join\",\n    value: function join(s) {\n      if (this.length === 0) return '';\n      var p = this.head;\n      var ret = '' + p.data;\n      while (p = p.next) ret += s + p.data;\n      return ret;\n    }\n  }, {\n    key: \"concat\",\n    value: function concat(n) {\n      if (this.length === 0) return Buffer.alloc(0);\n      var ret = Buffer.allocUnsafe(n >>> 0);\n      var p = this.head;\n      var i = 0;\n      while (p) {\n        copyBuffer(p.data, ret, i);\n        i += p.data.length;\n        p = p.next;\n      }\n      return ret;\n    }\n\n    // Consumes a specified amount of bytes or characters from the buffered data.\n  }, {\n    key: \"consume\",\n    value: function consume(n, hasStrings) {\n      var ret;\n      if (n < this.head.data.length) {\n        // `slice` is the same for buffers and strings.\n        ret = this.head.data.slice(0, n);\n        this.head.data = this.head.data.slice(n);\n      } else if (n === this.head.data.length) {\n        // First chunk is a perfect match.\n        ret = this.shift();\n      } else {\n        // Result spans more than one buffer.\n        ret = hasStrings ? this._getString(n) : this._getBuffer(n);\n      }\n      return ret;\n    }\n  }, {\n    key: \"first\",\n    value: function first() {\n      return this.head.data;\n    }\n\n    // Consumes a specified amount of characters from the buffered data.\n  }, {\n    key: \"_getString\",\n    value: function _getString(n) {\n      var p = this.head;\n      var c = 1;\n      var ret = p.data;\n      n -= ret.length;\n      while (p = p.next) {\n        var str = p.data;\n        var nb = n > str.length ? str.length : n;\n        if (nb === str.length) ret += str;else ret += str.slice(0, n);\n        n -= nb;\n        if (n === 0) {\n          if (nb === str.length) {\n            ++c;\n            if (p.next) this.head = p.next;else this.head = this.tail = null;\n          } else {\n            this.head = p;\n            p.data = str.slice(nb);\n          }\n          break;\n        }\n        ++c;\n      }\n      this.length -= c;\n      return ret;\n    }\n\n    // Consumes a specified amount of bytes from the buffered data.\n  }, {\n    key: \"_getBuffer\",\n    value: function _getBuffer(n) {\n      var ret = Buffer.allocUnsafe(n);\n      var p = this.head;\n      var c = 1;\n      p.data.copy(ret);\n      n -= p.data.length;\n      while (p = p.next) {\n        var buf = p.data;\n        var nb = n > buf.length ? buf.length : n;\n        buf.copy(ret, ret.length - n, 0, nb);\n        n -= nb;\n        if (n === 0) {\n          if (nb === buf.length) {\n            ++c;\n            if (p.next) this.head = p.next;else this.head = this.tail = null;\n          } else {\n            this.head = p;\n            p.data = buf.slice(nb);\n          }\n          break;\n        }\n        ++c;\n      }\n      this.length -= c;\n      return ret;\n    }\n\n    // Make sure the linked list only shows the minimal necessary information.\n  }, {\n    key: custom,\n    value: function value(_, options) {\n      return inspect(this, _objectSpread(_objectSpread({}, options), {}, {\n        // Only inspect one level.\n        depth: 0,\n        // It should not recurse.\n        customInspect: false\n      }));\n    }\n  }]);\n  return BufferList;\n}();","'use strict';\n\n// undocumented cb() API, needed for core, not for public API\nfunction destroy(err, cb) {\n  var _this = this;\n  var readableDestroyed = this._readableState && this._readableState.destroyed;\n  var writableDestroyed = this._writableState && this._writableState.destroyed;\n  if (readableDestroyed || writableDestroyed) {\n    if (cb) {\n      cb(err);\n    } else if (err) {\n      if (!this._writableState) {\n        process.nextTick(emitErrorNT, this, err);\n      } else if (!this._writableState.errorEmitted) {\n        this._writableState.errorEmitted = true;\n        process.nextTick(emitErrorNT, this, err);\n      }\n    }\n    return this;\n  }\n\n  // we set destroyed to true before firing error callbacks in order\n  // to make it re-entrance safe in case destroy() is called within callbacks\n\n  if (this._readableState) {\n    this._readableState.destroyed = true;\n  }\n\n  // if this is a duplex stream mark the writable part as destroyed as well\n  if (this._writableState) {\n    this._writableState.destroyed = true;\n  }\n  this._destroy(err || null, function (err) {\n    if (!cb && err) {\n      if (!_this._writableState) {\n        process.nextTick(emitErrorAndCloseNT, _this, err);\n      } else if (!_this._writableState.errorEmitted) {\n        _this._writableState.errorEmitted = true;\n        process.nextTick(emitErrorAndCloseNT, _this, err);\n      } else {\n        process.nextTick(emitCloseNT, _this);\n      }\n    } else if (cb) {\n      process.nextTick(emitCloseNT, _this);\n      cb(err);\n    } else {\n      process.nextTick(emitCloseNT, _this);\n    }\n  });\n  return this;\n}\nfunction emitErrorAndCloseNT(self, err) {\n  emitErrorNT(self, err);\n  emitCloseNT(self);\n}\nfunction emitCloseNT(self) {\n  if (self._writableState && !self._writableState.emitClose) return;\n  if (self._readableState && !self._readableState.emitClose) return;\n  self.emit('close');\n}\nfunction undestroy() {\n  if (this._readableState) {\n    this._readableState.destroyed = false;\n    this._readableState.reading = false;\n    this._readableState.ended = false;\n    this._readableState.endEmitted = false;\n  }\n  if (this._writableState) {\n    this._writableState.destroyed = false;\n    this._writableState.ended = false;\n    this._writableState.ending = false;\n    this._writableState.finalCalled = false;\n    this._writableState.prefinished = false;\n    this._writableState.finished = false;\n    this._writableState.errorEmitted = false;\n  }\n}\nfunction emitErrorNT(self, err) {\n  self.emit('error', err);\n}\nfunction errorOrDestroy(stream, err) {\n  // We have tests that rely on errors being emitted\n  // in the same tick, so changing this is semver major.\n  // For now when you opt-in to autoDestroy we allow\n  // the error to be emitted nextTick. In a future\n  // semver major update we should change the default to this.\n\n  var rState = stream._readableState;\n  var wState = stream._writableState;\n  if (rState && rState.autoDestroy || wState && wState.autoDestroy) stream.destroy(err);else stream.emit('error', err);\n}\nmodule.exports = {\n  destroy: destroy,\n  undestroy: undestroy,\n  errorOrDestroy: errorOrDestroy\n};","// Ported from https://github.com/mafintosh/end-of-stream with\n// permission from the author, Mathias Buus (@mafintosh).\n\n'use strict';\n\nvar ERR_STREAM_PREMATURE_CLOSE = require('../../../errors').codes.ERR_STREAM_PREMATURE_CLOSE;\nfunction once(callback) {\n  var called = false;\n  return function () {\n    if (called) return;\n    called = true;\n    for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n      args[_key] = arguments[_key];\n    }\n    callback.apply(this, args);\n  };\n}\nfunction noop() {}\nfunction isRequest(stream) {\n  return stream.setHeader && typeof stream.abort === 'function';\n}\nfunction eos(stream, opts, callback) {\n  if (typeof opts === 'function') return eos(stream, null, opts);\n  if (!opts) opts = {};\n  callback = once(callback || noop);\n  var readable = opts.readable || opts.readable !== false && stream.readable;\n  var writable = opts.writable || opts.writable !== false && stream.writable;\n  var onlegacyfinish = function onlegacyfinish() {\n    if (!stream.writable) onfinish();\n  };\n  var writableEnded = stream._writableState && stream._writableState.finished;\n  var onfinish = function onfinish() {\n    writable = false;\n    writableEnded = true;\n    if (!readable) callback.call(stream);\n  };\n  var readableEnded = stream._readableState && stream._readableState.endEmitted;\n  var onend = function onend() {\n    readable = false;\n    readableEnded = true;\n    if (!writable) callback.call(stream);\n  };\n  var onerror = function onerror(err) {\n    callback.call(stream, err);\n  };\n  var onclose = function onclose() {\n    var err;\n    if (readable && !readableEnded) {\n      if (!stream._readableState || !stream._readableState.ended) err = new ERR_STREAM_PREMATURE_CLOSE();\n      return callback.call(stream, err);\n    }\n    if (writable && !writableEnded) {\n      if (!stream._writableState || !stream._writableState.ended) err = new ERR_STREAM_PREMATURE_CLOSE();\n      return callback.call(stream, err);\n    }\n  };\n  var onrequest = function onrequest() {\n    stream.req.on('finish', onfinish);\n  };\n  if (isRequest(stream)) {\n    stream.on('complete', onfinish);\n    stream.on('abort', onclose);\n    if (stream.req) onrequest();else stream.on('request', onrequest);\n  } else if (writable && !stream._writableState) {\n    // legacy streams\n    stream.on('end', onlegacyfinish);\n    stream.on('close', onlegacyfinish);\n  }\n  stream.on('end', onend);\n  stream.on('finish', onfinish);\n  if (opts.error !== false) stream.on('error', onerror);\n  stream.on('close', onclose);\n  return function () {\n    stream.removeListener('complete', onfinish);\n    stream.removeListener('abort', onclose);\n    stream.removeListener('request', onrequest);\n    if (stream.req) stream.req.removeListener('finish', onfinish);\n    stream.removeListener('end', onlegacyfinish);\n    stream.removeListener('close', onlegacyfinish);\n    stream.removeListener('finish', onfinish);\n    stream.removeListener('end', onend);\n    stream.removeListener('error', onerror);\n    stream.removeListener('close', onclose);\n  };\n}\nmodule.exports = eos;","module.exports = function () {\n  throw new Error('Readable.from is not available in the browser')\n};\n","// Ported from https://github.com/mafintosh/pump with\n// permission from the author, Mathias Buus (@mafintosh).\n\n'use strict';\n\nvar eos;\nfunction once(callback) {\n  var called = false;\n  return function () {\n    if (called) return;\n    called = true;\n    callback.apply(void 0, arguments);\n  };\n}\nvar _require$codes = require('../../../errors').codes,\n  ERR_MISSING_ARGS = _require$codes.ERR_MISSING_ARGS,\n  ERR_STREAM_DESTROYED = _require$codes.ERR_STREAM_DESTROYED;\nfunction noop(err) {\n  // Rethrow the error if it exists to avoid swallowing it\n  if (err) throw err;\n}\nfunction isRequest(stream) {\n  return stream.setHeader && typeof stream.abort === 'function';\n}\nfunction destroyer(stream, reading, writing, callback) {\n  callback = once(callback);\n  var closed = false;\n  stream.on('close', function () {\n    closed = true;\n  });\n  if (eos === undefined) eos = require('./end-of-stream');\n  eos(stream, {\n    readable: reading,\n    writable: writing\n  }, function (err) {\n    if (err) return callback(err);\n    closed = true;\n    callback();\n  });\n  var destroyed = false;\n  return function (err) {\n    if (closed) return;\n    if (destroyed) return;\n    destroyed = true;\n\n    // request.destroy just do .end - .abort is what we want\n    if (isRequest(stream)) return stream.abort();\n    if (typeof stream.destroy === 'function') return stream.destroy();\n    callback(err || new ERR_STREAM_DESTROYED('pipe'));\n  };\n}\nfunction call(fn) {\n  fn();\n}\nfunction pipe(from, to) {\n  return from.pipe(to);\n}\nfunction popCallback(streams) {\n  if (!streams.length) return noop;\n  if (typeof streams[streams.length - 1] !== 'function') return noop;\n  return streams.pop();\n}\nfunction pipeline() {\n  for (var _len = arguments.length, streams = new Array(_len), _key = 0; _key < _len; _key++) {\n    streams[_key] = arguments[_key];\n  }\n  var callback = popCallback(streams);\n  if (Array.isArray(streams[0])) streams = streams[0];\n  if (streams.length < 2) {\n    throw new ERR_MISSING_ARGS('streams');\n  }\n  var error;\n  var destroys = streams.map(function (stream, i) {\n    var reading = i < streams.length - 1;\n    var writing = i > 0;\n    return destroyer(stream, reading, writing, function (err) {\n      if (!error) error = err;\n      if (err) destroys.forEach(call);\n      if (reading) return;\n      destroys.forEach(call);\n      callback(error);\n    });\n  });\n  return streams.reduce(pipe);\n}\nmodule.exports = pipeline;","'use strict';\n\nvar ERR_INVALID_OPT_VALUE = require('../../../errors').codes.ERR_INVALID_OPT_VALUE;\nfunction highWaterMarkFrom(options, isDuplex, duplexKey) {\n  return options.highWaterMark != null ? options.highWaterMark : isDuplex ? options[duplexKey] : null;\n}\nfunction getHighWaterMark(state, options, duplexKey, isDuplex) {\n  var hwm = highWaterMarkFrom(options, isDuplex, duplexKey);\n  if (hwm != null) {\n    if (!(isFinite(hwm) && Math.floor(hwm) === hwm) || hwm < 0) {\n      var name = isDuplex ? duplexKey : 'highWaterMark';\n      throw new ERR_INVALID_OPT_VALUE(name, hwm);\n    }\n    return Math.floor(hwm);\n  }\n\n  // Default value\n  return state.objectMode ? 16 : 16 * 1024;\n}\nmodule.exports = {\n  getHighWaterMark: getHighWaterMark\n};","module.exports = require('events').EventEmitter;\n","exports = module.exports = require('./lib/_stream_readable.js');\nexports.Stream = exports;\nexports.Readable = exports;\nexports.Writable = require('./lib/_stream_writable.js');\nexports.Duplex = require('./lib/_stream_duplex.js');\nexports.Transform = require('./lib/_stream_transform.js');\nexports.PassThrough = require('./lib/_stream_passthrough.js');\nexports.finished = require('./lib/internal/streams/end-of-stream.js');\nexports.pipeline = require('./lib/internal/streams/pipeline.js');\n","'use strict';\n\nvar required = require('requires-port')\n  , qs = require('querystringify')\n  , controlOrWhitespace = /^[\\x00-\\x20\\u00a0\\u1680\\u2000-\\u200a\\u2028\\u2029\\u202f\\u205f\\u3000\\ufeff]+/\n  , CRHTLF = /[\\n\\r\\t]/g\n  , slashes = /^[A-Za-z][A-Za-z0-9+-.]*:\\/\\//\n  , port = /:\\d+$/\n  , protocolre = /^([a-z][a-z0-9.+-]*:)?(\\/\\/)?([\\\\/]+)?([\\S\\s]*)/i\n  , windowsDriveLetter = /^[a-zA-Z]:/;\n\n/**\n * Remove control characters and whitespace from the beginning of a string.\n *\n * @param {Object|String} str String to trim.\n * @returns {String} A new string representing `str` stripped of control\n *     characters and whitespace from its beginning.\n * @public\n */\nfunction trimLeft(str) {\n  return (str ? str : '').toString().replace(controlOrWhitespace, '');\n}\n\n/**\n * These are the parse rules for the URL parser, it informs the parser\n * about:\n *\n * 0. The char it Needs to parse, if it's a string it should be done using\n *    indexOf, RegExp using exec and NaN means set as current value.\n * 1. The property we should set when parsing this value.\n * 2. Indication if it's backwards or forward parsing, when set as number it's\n *    the value of extra chars that should be split off.\n * 3. Inherit from location if non existing in the parser.\n * 4. `toLowerCase` the resulting value.\n */\nvar rules = [\n  ['#', 'hash'],                        // Extract from the back.\n  ['?', 'query'],                       // Extract from the back.\n  function sanitize(address, url) {     // Sanitize what is left of the address\n    return isSpecial(url.protocol) ? address.replace(/\\\\/g, '/') : address;\n  },\n  ['/', 'pathname'],                    // Extract from the back.\n  ['@', 'auth', 1],                     // Extract from the front.\n  [NaN, 'host', undefined, 1, 1],       // Set left over value.\n  [/:(\\d*)$/, 'port', undefined, 1],    // RegExp the back.\n  [NaN, 'hostname', undefined, 1, 1]    // Set left over.\n];\n\n/**\n * These properties should not be copied or inherited from. This is only needed\n * for all non blob URL's as a blob URL does not include a hash, only the\n * origin.\n *\n * @type {Object}\n * @private\n */\nvar ignore = { hash: 1, query: 1 };\n\n/**\n * The location object differs when your code is loaded through a normal page,\n * Worker or through a worker using a blob. And with the blobble begins the\n * trouble as the location object will contain the URL of the blob, not the\n * location of the page where our code is loaded in. The actual origin is\n * encoded in the `pathname` so we can thankfully generate a good \"default\"\n * location from it so we can generate proper relative URL's again.\n *\n * @param {Object|String} loc Optional default location object.\n * @returns {Object} lolcation object.\n * @public\n */\nfunction lolcation(loc) {\n  var globalVar;\n\n  if (typeof window !== 'undefined') globalVar = window;\n  else if (typeof global !== 'undefined') globalVar = global;\n  else if (typeof self !== 'undefined') globalVar = self;\n  else globalVar = {};\n\n  var location = globalVar.location || {};\n  loc = loc || location;\n\n  var finaldestination = {}\n    , type = typeof loc\n    , key;\n\n  if ('blob:' === loc.protocol) {\n    finaldestination = new Url(unescape(loc.pathname), {});\n  } else if ('string' === type) {\n    finaldestination = new Url(loc, {});\n    for (key in ignore) delete finaldestination[key];\n  } else if ('object' === type) {\n    for (key in loc) {\n      if (key in ignore) continue;\n      finaldestination[key] = loc[key];\n    }\n\n    if (finaldestination.slashes === undefined) {\n      finaldestination.slashes = slashes.test(loc.href);\n    }\n  }\n\n  return finaldestination;\n}\n\n/**\n * Check whether a protocol scheme is special.\n *\n * @param {String} The protocol scheme of the URL\n * @return {Boolean} `true` if the protocol scheme is special, else `false`\n * @private\n */\nfunction isSpecial(scheme) {\n  return (\n    scheme === 'file:' ||\n    scheme === 'ftp:' ||\n    scheme === 'http:' ||\n    scheme === 'https:' ||\n    scheme === 'ws:' ||\n    scheme === 'wss:'\n  );\n}\n\n/**\n * @typedef ProtocolExtract\n * @type Object\n * @property {String} protocol Protocol matched in the URL, in lowercase.\n * @property {Boolean} slashes `true` if protocol is followed by \"//\", else `false`.\n * @property {String} rest Rest of the URL that is not part of the protocol.\n */\n\n/**\n * Extract protocol information from a URL with/without double slash (\"//\").\n *\n * @param {String} address URL we want to extract from.\n * @param {Object} location\n * @return {ProtocolExtract} Extracted information.\n * @private\n */\nfunction extractProtocol(address, location) {\n  address = trimLeft(address);\n  address = address.replace(CRHTLF, '');\n  location = location || {};\n\n  var match = protocolre.exec(address);\n  var protocol = match[1] ? match[1].toLowerCase() : '';\n  var forwardSlashes = !!match[2];\n  var otherSlashes = !!match[3];\n  var slashesCount = 0;\n  var rest;\n\n  if (forwardSlashes) {\n    if (otherSlashes) {\n      rest = match[2] + match[3] + match[4];\n      slashesCount = match[2].length + match[3].length;\n    } else {\n      rest = match[2] + match[4];\n      slashesCount = match[2].length;\n    }\n  } else {\n    if (otherSlashes) {\n      rest = match[3] + match[4];\n      slashesCount = match[3].length;\n    } else {\n      rest = match[4]\n    }\n  }\n\n  if (protocol === 'file:') {\n    if (slashesCount >= 2) {\n      rest = rest.slice(2);\n    }\n  } else if (isSpecial(protocol)) {\n    rest = match[4];\n  } else if (protocol) {\n    if (forwardSlashes) {\n      rest = rest.slice(2);\n    }\n  } else if (slashesCount >= 2 && isSpecial(location.protocol)) {\n    rest = match[4];\n  }\n\n  return {\n    protocol: protocol,\n    slashes: forwardSlashes || isSpecial(protocol),\n    slashesCount: slashesCount,\n    rest: rest\n  };\n}\n\n/**\n * Resolve a relative URL pathname against a base URL pathname.\n *\n * @param {String} relative Pathname of the relative URL.\n * @param {String} base Pathname of the base URL.\n * @return {String} Resolved pathname.\n * @private\n */\nfunction resolve(relative, base) {\n  if (relative === '') return base;\n\n  var path = (base || '/').split('/').slice(0, -1).concat(relative.split('/'))\n    , i = path.length\n    , last = path[i - 1]\n    , unshift = false\n    , up = 0;\n\n  while (i--) {\n    if (path[i] === '.') {\n      path.splice(i, 1);\n    } else if (path[i] === '..') {\n      path.splice(i, 1);\n      up++;\n    } else if (up) {\n      if (i === 0) unshift = true;\n      path.splice(i, 1);\n      up--;\n    }\n  }\n\n  if (unshift) path.unshift('');\n  if (last === '.' || last === '..') path.push('');\n\n  return path.join('/');\n}\n\n/**\n * The actual URL instance. Instead of returning an object we've opted-in to\n * create an actual constructor as it's much more memory efficient and\n * faster and it pleases my OCD.\n *\n * It is worth noting that we should not use `URL` as class name to prevent\n * clashes with the global URL instance that got introduced in browsers.\n *\n * @constructor\n * @param {String} address URL we want to parse.\n * @param {Object|String} [location] Location defaults for relative paths.\n * @param {Boolean|Function} [parser] Parser for the query string.\n * @private\n */\nfunction Url(address, location, parser) {\n  address = trimLeft(address);\n  address = address.replace(CRHTLF, '');\n\n  if (!(this instanceof Url)) {\n    return new Url(address, location, parser);\n  }\n\n  var relative, extracted, parse, instruction, index, key\n    , instructions = rules.slice()\n    , type = typeof location\n    , url = this\n    , i = 0;\n\n  //\n  // The following if statements allows this module two have compatibility with\n  // 2 different API:\n  //\n  // 1. Node.js's `url.parse` api which accepts a URL, boolean as arguments\n  //    where the boolean indicates that the query string should also be parsed.\n  //\n  // 2. The `URL` interface of the browser which accepts a URL, object as\n  //    arguments. The supplied object will be used as default values / fall-back\n  //    for relative paths.\n  //\n  if ('object' !== type && 'string' !== type) {\n    parser = location;\n    location = null;\n  }\n\n  if (parser && 'function' !== typeof parser) parser = qs.parse;\n\n  location = lolcation(location);\n\n  //\n  // Extract protocol information before running the instructions.\n  //\n  extracted = extractProtocol(address || '', location);\n  relative = !extracted.protocol && !extracted.slashes;\n  url.slashes = extracted.slashes || relative && location.slashes;\n  url.protocol = extracted.protocol || location.protocol || '';\n  address = extracted.rest;\n\n  //\n  // When the authority component is absent the URL starts with a path\n  // component.\n  //\n  if (\n    extracted.protocol === 'file:' && (\n      extracted.slashesCount !== 2 || windowsDriveLetter.test(address)) ||\n    (!extracted.slashes &&\n      (extracted.protocol ||\n        extracted.slashesCount < 2 ||\n        !isSpecial(url.protocol)))\n  ) {\n    instructions[3] = [/(.*)/, 'pathname'];\n  }\n\n  for (; i < instructions.length; i++) {\n    instruction = instructions[i];\n\n    if (typeof instruction === 'function') {\n      address = instruction(address, url);\n      continue;\n    }\n\n    parse = instruction[0];\n    key = instruction[1];\n\n    if (parse !== parse) {\n      url[key] = address;\n    } else if ('string' === typeof parse) {\n      index = parse === '@'\n        ? address.lastIndexOf(parse)\n        : address.indexOf(parse);\n\n      if (~index) {\n        if ('number' === typeof instruction[2]) {\n          url[key] = address.slice(0, index);\n          address = address.slice(index + instruction[2]);\n        } else {\n          url[key] = address.slice(index);\n          address = address.slice(0, index);\n        }\n      }\n    } else if ((index = parse.exec(address))) {\n      url[key] = index[1];\n      address = address.slice(0, index.index);\n    }\n\n    url[key] = url[key] || (\n      relative && instruction[3] ? location[key] || '' : ''\n    );\n\n    //\n    // Hostname, host and protocol should be lowercased so they can be used to\n    // create a proper `origin`.\n    //\n    if (instruction[4]) url[key] = url[key].toLowerCase();\n  }\n\n  //\n  // Also parse the supplied query string in to an object. If we're supplied\n  // with a custom parser as function use that instead of the default build-in\n  // parser.\n  //\n  if (parser) url.query = parser(url.query);\n\n  //\n  // If the URL is relative, resolve the pathname against the base URL.\n  //\n  if (\n      relative\n    && location.slashes\n    && url.pathname.charAt(0) !== '/'\n    && (url.pathname !== '' || location.pathname !== '')\n  ) {\n    url.pathname = resolve(url.pathname, location.pathname);\n  }\n\n  //\n  // Default to a / for pathname if none exists. This normalizes the URL\n  // to always have a /\n  //\n  if (url.pathname.charAt(0) !== '/' && isSpecial(url.protocol)) {\n    url.pathname = '/' + url.pathname;\n  }\n\n  //\n  // We should not add port numbers if they are already the default port number\n  // for a given protocol. As the host also contains the port number we're going\n  // override it with the hostname which contains no port number.\n  //\n  if (!required(url.port, url.protocol)) {\n    url.host = url.hostname;\n    url.port = '';\n  }\n\n  //\n  // Parse down the `auth` for the username and password.\n  //\n  url.username = url.password = '';\n\n  if (url.auth) {\n    index = url.auth.indexOf(':');\n\n    if (~index) {\n      url.username = url.auth.slice(0, index);\n      url.username = encodeURIComponent(decodeURIComponent(url.username));\n\n      url.password = url.auth.slice(index + 1);\n      url.password = encodeURIComponent(decodeURIComponent(url.password))\n    } else {\n      url.username = encodeURIComponent(decodeURIComponent(url.auth));\n    }\n\n    url.auth = url.password ? url.username +':'+ url.password : url.username;\n  }\n\n  url.origin = url.protocol !== 'file:' && isSpecial(url.protocol) && url.host\n    ? url.protocol +'//'+ url.host\n    : 'null';\n\n  //\n  // The href is just the compiled result.\n  //\n  url.href = url.toString();\n}\n\n/**\n * This is convenience method for changing properties in the URL instance to\n * insure that they all propagate correctly.\n *\n * @param {String} part          Property we need to adjust.\n * @param {Mixed} value          The newly assigned value.\n * @param {Boolean|Function} fn  When setting the query, it will be the function\n *                               used to parse the query.\n *                               When setting the protocol, double slash will be\n *                               removed from the final url if it is true.\n * @returns {URL} URL instance for chaining.\n * @public\n */\nfunction set(part, value, fn) {\n  var url = this;\n\n  switch (part) {\n    case 'query':\n      if ('string' === typeof value && value.length) {\n        value = (fn || qs.parse)(value);\n      }\n\n      url[part] = value;\n      break;\n\n    case 'port':\n      url[part] = value;\n\n      if (!required(value, url.protocol)) {\n        url.host = url.hostname;\n        url[part] = '';\n      } else if (value) {\n        url.host = url.hostname +':'+ value;\n      }\n\n      break;\n\n    case 'hostname':\n      url[part] = value;\n\n      if (url.port) value += ':'+ url.port;\n      url.host = value;\n      break;\n\n    case 'host':\n      url[part] = value;\n\n      if (port.test(value)) {\n        value = value.split(':');\n        url.port = value.pop();\n        url.hostname = value.join(':');\n      } else {\n        url.hostname = value;\n        url.port = '';\n      }\n\n      break;\n\n    case 'protocol':\n      url.protocol = value.toLowerCase();\n      url.slashes = !fn;\n      break;\n\n    case 'pathname':\n    case 'hash':\n      if (value) {\n        var char = part === 'pathname' ? '/' : '#';\n        url[part] = value.charAt(0) !== char ? char + value : value;\n      } else {\n        url[part] = value;\n      }\n      break;\n\n    case 'username':\n    case 'password':\n      url[part] = encodeURIComponent(value);\n      break;\n\n    case 'auth':\n      var index = value.indexOf(':');\n\n      if (~index) {\n        url.username = value.slice(0, index);\n        url.username = encodeURIComponent(decodeURIComponent(url.username));\n\n        url.password = value.slice(index + 1);\n        url.password = encodeURIComponent(decodeURIComponent(url.password));\n      } else {\n        url.username = encodeURIComponent(decodeURIComponent(value));\n      }\n  }\n\n  for (var i = 0; i < rules.length; i++) {\n    var ins = rules[i];\n\n    if (ins[4]) url[ins[1]] = url[ins[1]].toLowerCase();\n  }\n\n  url.auth = url.password ? url.username +':'+ url.password : url.username;\n\n  url.origin = url.protocol !== 'file:' && isSpecial(url.protocol) && url.host\n    ? url.protocol +'//'+ url.host\n    : 'null';\n\n  url.href = url.toString();\n\n  return url;\n}\n\n/**\n * Transform the properties back in to a valid and full URL string.\n *\n * @param {Function} stringify Optional query stringify function.\n * @returns {String} Compiled version of the URL.\n * @public\n */\nfunction toString(stringify) {\n  if (!stringify || 'function' !== typeof stringify) stringify = qs.stringify;\n\n  var query\n    , url = this\n    , host = url.host\n    , protocol = url.protocol;\n\n  if (protocol && protocol.charAt(protocol.length - 1) !== ':') protocol += ':';\n\n  var result =\n    protocol +\n    ((url.protocol && url.slashes) || isSpecial(url.protocol) ? '//' : '');\n\n  if (url.username) {\n    result += url.username;\n    if (url.password) result += ':'+ url.password;\n    result += '@';\n  } else if (url.password) {\n    result += ':'+ url.password;\n    result += '@';\n  } else if (\n    url.protocol !== 'file:' &&\n    isSpecial(url.protocol) &&\n    !host &&\n    url.pathname !== '/'\n  ) {\n    //\n    // Add back the empty userinfo, otherwise the original invalid URL\n    // might be transformed into a valid one with `url.pathname` as host.\n    //\n    result += '@';\n  }\n\n  //\n  // Trailing colon is removed from `url.host` when it is parsed. If it still\n  // ends with a colon, then add back the trailing colon that was removed. This\n  // prevents an invalid URL from being transformed into a valid one.\n  //\n  if (host[host.length - 1] === ':' || (port.test(url.hostname) && !url.port)) {\n    host += ':';\n  }\n\n  result += host + url.pathname;\n\n  query = 'object' === typeof url.query ? stringify(url.query) : url.query;\n  if (query) result += '?' !== query.charAt(0) ? '?'+ query : query;\n\n  if (url.hash) result += url.hash;\n\n  return result;\n}\n\nUrl.prototype = { set: set, toString: toString };\n\n//\n// Expose the URL parser and some additional properties that might be useful for\n// others or testing.\n//\nUrl.extractProtocol = extractProtocol;\nUrl.location = lolcation;\nUrl.trimLeft = trimLeft;\nUrl.qs = qs;\n\nmodule.exports = Url;\n","/*\n * Copyright Joyent, Inc. and other Node contributors.\n *\n * Permission is hereby granted, free of charge, to any person obtaining a\n * copy of this software and associated documentation files (the\n * \"Software\"), to deal in the Software without restriction, including\n * without limitation the rights to use, copy, modify, merge, publish,\n * distribute, sublicense, and/or sell copies of the Software, and to permit\n * persons to whom the Software is furnished to do so, subject to the\n * following conditions:\n *\n * The above copyright notice and this permission notice shall be included\n * in all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN\n * NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n * DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR\n * OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\n * USE OR OTHER DEALINGS IN THE SOFTWARE.\n */\n\n'use strict';\n\nvar punycode = require('punycode/');\n\nfunction Url() {\n  this.protocol = null;\n  this.slashes = null;\n  this.auth = null;\n  this.host = null;\n  this.port = null;\n  this.hostname = null;\n  this.hash = null;\n  this.search = null;\n  this.query = null;\n  this.pathname = null;\n  this.path = null;\n  this.href = null;\n}\n\n// Reference: RFC 3986, RFC 1808, RFC 2396\n\n/*\n * define these here so at least they only have to be\n * compiled once on the first module load.\n */\nvar protocolPattern = /^([a-z0-9.+-]+:)/i,\n  portPattern = /:[0-9]*$/,\n\n  // Special case for a simple path URL\n  simplePathPattern = /^(\\/\\/?(?!\\/)[^?\\s]*)(\\?[^\\s]*)?$/,\n\n  /*\n   * RFC 2396: characters reserved for delimiting URLs.\n   * We actually just auto-escape these.\n   */\n  delims = [\n    '<', '>', '\"', '`', ' ', '\\r', '\\n', '\\t'\n  ],\n\n  // RFC 2396: characters not allowed for various reasons.\n  unwise = [\n    '{', '}', '|', '\\\\', '^', '`'\n  ].concat(delims),\n\n  // Allowed by RFCs, but cause of XSS attacks.  Always escape these.\n  autoEscape = ['\\''].concat(unwise),\n  /*\n   * Characters that are never ever allowed in a hostname.\n   * Note that any invalid chars are also handled, but these\n   * are the ones that are *expected* to be seen, so we fast-path\n   * them.\n   */\n  nonHostChars = [\n    '%', '/', '?', ';', '#'\n  ].concat(autoEscape),\n  hostEndingChars = [\n    '/', '?', '#'\n  ],\n  hostnameMaxLen = 255,\n  hostnamePartPattern = /^[+a-z0-9A-Z_-]{0,63}$/,\n  hostnamePartStart = /^([+a-z0-9A-Z_-]{0,63})(.*)$/,\n  // protocols that can allow \"unsafe\" and \"unwise\" chars.\n  unsafeProtocol = {\n    javascript: true,\n    'javascript:': true\n  },\n  // protocols that never have a hostname.\n  hostlessProtocol = {\n    javascript: true,\n    'javascript:': true\n  },\n  // protocols that always contain a // bit.\n  slashedProtocol = {\n    http: true,\n    https: true,\n    ftp: true,\n    gopher: true,\n    file: true,\n    'http:': true,\n    'https:': true,\n    'ftp:': true,\n    'gopher:': true,\n    'file:': true\n  },\n  querystring = require('qs');\n\nfunction urlParse(url, parseQueryString, slashesDenoteHost) {\n  if (url && typeof url === 'object' && url instanceof Url) { return url; }\n\n  var u = new Url();\n  u.parse(url, parseQueryString, slashesDenoteHost);\n  return u;\n}\n\nUrl.prototype.parse = function (url, parseQueryString, slashesDenoteHost) {\n  if (typeof url !== 'string') {\n    throw new TypeError(\"Parameter 'url' must be a string, not \" + typeof url);\n  }\n\n  /*\n   * Copy chrome, IE, opera backslash-handling behavior.\n   * Back slashes before the query string get converted to forward slashes\n   * See: https://code.google.com/p/chromium/issues/detail?id=25916\n   */\n  var queryIndex = url.indexOf('?'),\n    splitter = queryIndex !== -1 && queryIndex < url.indexOf('#') ? '?' : '#',\n    uSplit = url.split(splitter),\n    slashRegex = /\\\\/g;\n  uSplit[0] = uSplit[0].replace(slashRegex, '/');\n  url = uSplit.join(splitter);\n\n  var rest = url;\n\n  /*\n   * trim before proceeding.\n   * This is to support parse stuff like \"  http://foo.com  \\n\"\n   */\n  rest = rest.trim();\n\n  if (!slashesDenoteHost && url.split('#').length === 1) {\n    // Try fast path regexp\n    var simplePath = simplePathPattern.exec(rest);\n    if (simplePath) {\n      this.path = rest;\n      this.href = rest;\n      this.pathname = simplePath[1];\n      if (simplePath[2]) {\n        this.search = simplePath[2];\n        if (parseQueryString) {\n          this.query = querystring.parse(this.search.substr(1));\n        } else {\n          this.query = this.search.substr(1);\n        }\n      } else if (parseQueryString) {\n        this.search = '';\n        this.query = {};\n      }\n      return this;\n    }\n  }\n\n  var proto = protocolPattern.exec(rest);\n  if (proto) {\n    proto = proto[0];\n    var lowerProto = proto.toLowerCase();\n    this.protocol = lowerProto;\n    rest = rest.substr(proto.length);\n  }\n\n  /*\n   * figure out if it's got a host\n   * user@server is *always* interpreted as a hostname, and url\n   * resolution will treat //foo/bar as host=foo,path=bar because that's\n   * how the browser resolves relative URLs.\n   */\n  if (slashesDenoteHost || proto || rest.match(/^\\/\\/[^@/]+@[^@/]+/)) {\n    var slashes = rest.substr(0, 2) === '//';\n    if (slashes && !(proto && hostlessProtocol[proto])) {\n      rest = rest.substr(2);\n      this.slashes = true;\n    }\n  }\n\n  if (!hostlessProtocol[proto] && (slashes || (proto && !slashedProtocol[proto]))) {\n\n    /*\n     * there's a hostname.\n     * the first instance of /, ?, ;, or # ends the host.\n     *\n     * If there is an @ in the hostname, then non-host chars *are* allowed\n     * to the left of the last @ sign, unless some host-ending character\n     * comes *before* the @-sign.\n     * URLs are obnoxious.\n     *\n     * ex:\n     * http://a@b@c/ => user:a@b host:c\n     * http://a@b?@c => user:a host:c path:/?@c\n     */\n\n    /*\n     * v0.12 TODO(isaacs): This is not quite how Chrome does things.\n     * Review our test case against browsers more comprehensively.\n     */\n\n    // find the first instance of any hostEndingChars\n    var hostEnd = -1;\n    for (var i = 0; i < hostEndingChars.length; i++) {\n      var hec = rest.indexOf(hostEndingChars[i]);\n      if (hec !== -1 && (hostEnd === -1 || hec < hostEnd)) { hostEnd = hec; }\n    }\n\n    /*\n     * at this point, either we have an explicit point where the\n     * auth portion cannot go past, or the last @ char is the decider.\n     */\n    var auth, atSign;\n    if (hostEnd === -1) {\n      // atSign can be anywhere.\n      atSign = rest.lastIndexOf('@');\n    } else {\n      /*\n       * atSign must be in auth portion.\n       * http://a@b/c@d => host:b auth:a path:/c@d\n       */\n      atSign = rest.lastIndexOf('@', hostEnd);\n    }\n\n    /*\n     * Now we have a portion which is definitely the auth.\n     * Pull that off.\n     */\n    if (atSign !== -1) {\n      auth = rest.slice(0, atSign);\n      rest = rest.slice(atSign + 1);\n      this.auth = decodeURIComponent(auth);\n    }\n\n    // the host is the remaining to the left of the first non-host char\n    hostEnd = -1;\n    for (var i = 0; i < nonHostChars.length; i++) {\n      var hec = rest.indexOf(nonHostChars[i]);\n      if (hec !== -1 && (hostEnd === -1 || hec < hostEnd)) { hostEnd = hec; }\n    }\n    // if we still have not hit it, then the entire thing is a host.\n    if (hostEnd === -1) { hostEnd = rest.length; }\n\n    this.host = rest.slice(0, hostEnd);\n    rest = rest.slice(hostEnd);\n\n    // pull out port.\n    this.parseHost();\n\n    /*\n     * we've indicated that there is a hostname,\n     * so even if it's empty, it has to be present.\n     */\n    this.hostname = this.hostname || '';\n\n    /*\n     * if hostname begins with [ and ends with ]\n     * assume that it's an IPv6 address.\n     */\n    var ipv6Hostname = this.hostname[0] === '[' && this.hostname[this.hostname.length - 1] === ']';\n\n    // validate a little.\n    if (!ipv6Hostname) {\n      var hostparts = this.hostname.split(/\\./);\n      for (var i = 0, l = hostparts.length; i < l; i++) {\n        var part = hostparts[i];\n        if (!part) { continue; }\n        if (!part.match(hostnamePartPattern)) {\n          var newpart = '';\n          for (var j = 0, k = part.length; j < k; j++) {\n            if (part.charCodeAt(j) > 127) {\n              /*\n               * we replace non-ASCII char with a temporary placeholder\n               * we need this to make sure size of hostname is not\n               * broken by replacing non-ASCII by nothing\n               */\n              newpart += 'x';\n            } else {\n              newpart += part[j];\n            }\n          }\n          // we test again with ASCII char only\n          if (!newpart.match(hostnamePartPattern)) {\n            var validParts = hostparts.slice(0, i);\n            var notHost = hostparts.slice(i + 1);\n            var bit = part.match(hostnamePartStart);\n            if (bit) {\n              validParts.push(bit[1]);\n              notHost.unshift(bit[2]);\n            }\n            if (notHost.length) {\n              rest = '/' + notHost.join('.') + rest;\n            }\n            this.hostname = validParts.join('.');\n            break;\n          }\n        }\n      }\n    }\n\n    if (this.hostname.length > hostnameMaxLen) {\n      this.hostname = '';\n    } else {\n      // hostnames are always lower case.\n      this.hostname = this.hostname.toLowerCase();\n    }\n\n    if (!ipv6Hostname) {\n      /*\n       * IDNA Support: Returns a punycoded representation of \"domain\".\n       * It only converts parts of the domain name that\n       * have non-ASCII characters, i.e. it doesn't matter if\n       * you call it with a domain that already is ASCII-only.\n       */\n      this.hostname = punycode.toASCII(this.hostname);\n    }\n\n    var p = this.port ? ':' + this.port : '';\n    var h = this.hostname || '';\n    this.host = h + p;\n    this.href += this.host;\n\n    /*\n     * strip [ and ] from the hostname\n     * the host field still retains them, though\n     */\n    if (ipv6Hostname) {\n      this.hostname = this.hostname.substr(1, this.hostname.length - 2);\n      if (rest[0] !== '/') {\n        rest = '/' + rest;\n      }\n    }\n  }\n\n  /*\n   * now rest is set to the post-host stuff.\n   * chop off any delim chars.\n   */\n  if (!unsafeProtocol[lowerProto]) {\n\n    /*\n     * First, make 100% sure that any \"autoEscape\" chars get\n     * escaped, even if encodeURIComponent doesn't think they\n     * need to be.\n     */\n    for (var i = 0, l = autoEscape.length; i < l; i++) {\n      var ae = autoEscape[i];\n      if (rest.indexOf(ae) === -1) { continue; }\n      var esc = encodeURIComponent(ae);\n      if (esc === ae) {\n        esc = escape(ae);\n      }\n      rest = rest.split(ae).join(esc);\n    }\n  }\n\n  // chop off from the tail first.\n  var hash = rest.indexOf('#');\n  if (hash !== -1) {\n    // got a fragment string.\n    this.hash = rest.substr(hash);\n    rest = rest.slice(0, hash);\n  }\n  var qm = rest.indexOf('?');\n  if (qm !== -1) {\n    this.search = rest.substr(qm);\n    this.query = rest.substr(qm + 1);\n    if (parseQueryString) {\n      this.query = querystring.parse(this.query);\n    }\n    rest = rest.slice(0, qm);\n  } else if (parseQueryString) {\n    // no query string, but parseQueryString still requested\n    this.search = '';\n    this.query = {};\n  }\n  if (rest) { this.pathname = rest; }\n  if (slashedProtocol[lowerProto] && this.hostname && !this.pathname) {\n    this.pathname = '/';\n  }\n\n  // to support http.request\n  if (this.pathname || this.search) {\n    var p = this.pathname || '';\n    var s = this.search || '';\n    this.path = p + s;\n  }\n\n  // finally, reconstruct the href based on what has been validated.\n  this.href = this.format();\n  return this;\n};\n\n// format a parsed object into a url string\nfunction urlFormat(obj) {\n  /*\n   * ensure it's an object, and not a string url.\n   * If it's an obj, this is a no-op.\n   * this way, you can call url_format() on strings\n   * to clean up potentially wonky urls.\n   */\n  if (typeof obj === 'string') { obj = urlParse(obj); }\n  if (!(obj instanceof Url)) { return Url.prototype.format.call(obj); }\n  return obj.format();\n}\n\nUrl.prototype.format = function () {\n  var auth = this.auth || '';\n  if (auth) {\n    auth = encodeURIComponent(auth);\n    auth = auth.replace(/%3A/i, ':');\n    auth += '@';\n  }\n\n  var protocol = this.protocol || '',\n    pathname = this.pathname || '',\n    hash = this.hash || '',\n    host = false,\n    query = '';\n\n  if (this.host) {\n    host = auth + this.host;\n  } else if (this.hostname) {\n    host = auth + (this.hostname.indexOf(':') === -1 ? this.hostname : '[' + this.hostname + ']');\n    if (this.port) {\n      host += ':' + this.port;\n    }\n  }\n\n  if (this.query && typeof this.query === 'object' && Object.keys(this.query).length) {\n    query = querystring.stringify(this.query, {\n      arrayFormat: 'repeat',\n      addQueryPrefix: false\n    });\n  }\n\n  var search = this.search || (query && ('?' + query)) || '';\n\n  if (protocol && protocol.substr(-1) !== ':') { protocol += ':'; }\n\n  /*\n   * only the slashedProtocols get the //.  Not mailto:, xmpp:, etc.\n   * unless they had them to begin with.\n   */\n  if (this.slashes || (!protocol || slashedProtocol[protocol]) && host !== false) {\n    host = '//' + (host || '');\n    if (pathname && pathname.charAt(0) !== '/') { pathname = '/' + pathname; }\n  } else if (!host) {\n    host = '';\n  }\n\n  if (hash && hash.charAt(0) !== '#') { hash = '#' + hash; }\n  if (search && search.charAt(0) !== '?') { search = '?' + search; }\n\n  pathname = pathname.replace(/[?#]/g, function (match) {\n    return encodeURIComponent(match);\n  });\n  search = search.replace('#', '%23');\n\n  return protocol + host + pathname + search + hash;\n};\n\nfunction urlResolve(source, relative) {\n  return urlParse(source, false, true).resolve(relative);\n}\n\nUrl.prototype.resolve = function (relative) {\n  return this.resolveObject(urlParse(relative, false, true)).format();\n};\n\nfunction urlResolveObject(source, relative) {\n  if (!source) { return relative; }\n  return urlParse(source, false, true).resolveObject(relative);\n}\n\nUrl.prototype.resolveObject = function (relative) {\n  if (typeof relative === 'string') {\n    var rel = new Url();\n    rel.parse(relative, false, true);\n    relative = rel;\n  }\n\n  var result = new Url();\n  var tkeys = Object.keys(this);\n  for (var tk = 0; tk < tkeys.length; tk++) {\n    var tkey = tkeys[tk];\n    result[tkey] = this[tkey];\n  }\n\n  /*\n   * hash is always overridden, no matter what.\n   * even href=\"\" will remove it.\n   */\n  result.hash = relative.hash;\n\n  // if the relative url is empty, then there's nothing left to do here.\n  if (relative.href === '') {\n    result.href = result.format();\n    return result;\n  }\n\n  // hrefs like //foo/bar always cut to the protocol.\n  if (relative.slashes && !relative.protocol) {\n    // take everything except the protocol from relative\n    var rkeys = Object.keys(relative);\n    for (var rk = 0; rk < rkeys.length; rk++) {\n      var rkey = rkeys[rk];\n      if (rkey !== 'protocol') { result[rkey] = relative[rkey]; }\n    }\n\n    // urlParse appends trailing / to urls like http://www.example.com\n    if (slashedProtocol[result.protocol] && result.hostname && !result.pathname) {\n      result.pathname = '/';\n      result.path = result.pathname;\n    }\n\n    result.href = result.format();\n    return result;\n  }\n\n  if (relative.protocol && relative.protocol !== result.protocol) {\n    /*\n     * if it's a known url protocol, then changing\n     * the protocol does weird things\n     * first, if it's not file:, then we MUST have a host,\n     * and if there was a path\n     * to begin with, then we MUST have a path.\n     * if it is file:, then the host is dropped,\n     * because that's known to be hostless.\n     * anything else is assumed to be absolute.\n     */\n    if (!slashedProtocol[relative.protocol]) {\n      var keys = Object.keys(relative);\n      for (var v = 0; v < keys.length; v++) {\n        var k = keys[v];\n        result[k] = relative[k];\n      }\n      result.href = result.format();\n      return result;\n    }\n\n    result.protocol = relative.protocol;\n    if (!relative.host && !hostlessProtocol[relative.protocol]) {\n      var relPath = (relative.pathname || '').split('/');\n      while (relPath.length && !(relative.host = relPath.shift())) { }\n      if (!relative.host) { relative.host = ''; }\n      if (!relative.hostname) { relative.hostname = ''; }\n      if (relPath[0] !== '') { relPath.unshift(''); }\n      if (relPath.length < 2) { relPath.unshift(''); }\n      result.pathname = relPath.join('/');\n    } else {\n      result.pathname = relative.pathname;\n    }\n    result.search = relative.search;\n    result.query = relative.query;\n    result.host = relative.host || '';\n    result.auth = relative.auth;\n    result.hostname = relative.hostname || relative.host;\n    result.port = relative.port;\n    // to support http.request\n    if (result.pathname || result.search) {\n      var p = result.pathname || '';\n      var s = result.search || '';\n      result.path = p + s;\n    }\n    result.slashes = result.slashes || relative.slashes;\n    result.href = result.format();\n    return result;\n  }\n\n  var isSourceAbs = result.pathname && result.pathname.charAt(0) === '/',\n    isRelAbs = relative.host || relative.pathname && relative.pathname.charAt(0) === '/',\n    mustEndAbs = isRelAbs || isSourceAbs || (result.host && relative.pathname),\n    removeAllDots = mustEndAbs,\n    srcPath = result.pathname && result.pathname.split('/') || [],\n    relPath = relative.pathname && relative.pathname.split('/') || [],\n    psychotic = result.protocol && !slashedProtocol[result.protocol];\n\n  /*\n   * if the url is a non-slashed url, then relative\n   * links like ../.. should be able\n   * to crawl up to the hostname, as well.  This is strange.\n   * result.protocol has already been set by now.\n   * Later on, put the first path part into the host field.\n   */\n  if (psychotic) {\n    result.hostname = '';\n    result.port = null;\n    if (result.host) {\n      if (srcPath[0] === '') { srcPath[0] = result.host; } else { srcPath.unshift(result.host); }\n    }\n    result.host = '';\n    if (relative.protocol) {\n      relative.hostname = null;\n      relative.port = null;\n      if (relative.host) {\n        if (relPath[0] === '') { relPath[0] = relative.host; } else { relPath.unshift(relative.host); }\n      }\n      relative.host = null;\n    }\n    mustEndAbs = mustEndAbs && (relPath[0] === '' || srcPath[0] === '');\n  }\n\n  if (isRelAbs) {\n    // it's absolute.\n    result.host = relative.host || relative.host === '' ? relative.host : result.host;\n    result.hostname = relative.hostname || relative.hostname === '' ? relative.hostname : result.hostname;\n    result.search = relative.search;\n    result.query = relative.query;\n    srcPath = relPath;\n    // fall through to the dot-handling below.\n  } else if (relPath.length) {\n    /*\n     * it's relative\n     * throw away the existing file, and take the new path instead.\n     */\n    if (!srcPath) { srcPath = []; }\n    srcPath.pop();\n    srcPath = srcPath.concat(relPath);\n    result.search = relative.search;\n    result.query = relative.query;\n  } else if (relative.search != null) {\n    /*\n     * just pull out the search.\n     * like href='?foo'.\n     * Put this after the other two cases because it simplifies the booleans\n     */\n    if (psychotic) {\n      result.host = srcPath.shift();\n      result.hostname = result.host;\n      /*\n       * occationaly the auth can get stuck only in host\n       * this especially happens in cases like\n       * url.resolveObject('mailto:local1@domain1', 'local2@domain2')\n       */\n      var authInHost = result.host && result.host.indexOf('@') > 0 ? result.host.split('@') : false;\n      if (authInHost) {\n        result.auth = authInHost.shift();\n        result.hostname = authInHost.shift();\n        result.host = result.hostname;\n      }\n    }\n    result.search = relative.search;\n    result.query = relative.query;\n    // to support http.request\n    if (result.pathname !== null || result.search !== null) {\n      result.path = (result.pathname ? result.pathname : '') + (result.search ? result.search : '');\n    }\n    result.href = result.format();\n    return result;\n  }\n\n  if (!srcPath.length) {\n    /*\n     * no path at all.  easy.\n     * we've already handled the other stuff above.\n     */\n    result.pathname = null;\n    // to support http.request\n    if (result.search) {\n      result.path = '/' + result.search;\n    } else {\n      result.path = null;\n    }\n    result.href = result.format();\n    return result;\n  }\n\n  /*\n   * if a url ENDs in . or .., then it must get a trailing slash.\n   * however, if it ends in anything else non-slashy,\n   * then it must NOT get a trailing slash.\n   */\n  var last = srcPath.slice(-1)[0];\n  var hasTrailingSlash = (result.host || relative.host || srcPath.length > 1) && (last === '.' || last === '..') || last === '';\n\n  /*\n   * strip single dots, resolve double dots to parent dir\n   * if the path tries to go above the root, `up` ends up > 0\n   */\n  var up = 0;\n  for (var i = srcPath.length; i >= 0; i--) {\n    last = srcPath[i];\n    if (last === '.') {\n      srcPath.splice(i, 1);\n    } else if (last === '..') {\n      srcPath.splice(i, 1);\n      up++;\n    } else if (up) {\n      srcPath.splice(i, 1);\n      up--;\n    }\n  }\n\n  // if the path is allowed to go above the root, restore leading ..s\n  if (!mustEndAbs && !removeAllDots) {\n    for (; up--; up) {\n      srcPath.unshift('..');\n    }\n  }\n\n  if (mustEndAbs && srcPath[0] !== '' && (!srcPath[0] || srcPath[0].charAt(0) !== '/')) {\n    srcPath.unshift('');\n  }\n\n  if (hasTrailingSlash && (srcPath.join('/').substr(-1) !== '/')) {\n    srcPath.push('');\n  }\n\n  var isAbsolute = srcPath[0] === '' || (srcPath[0] && srcPath[0].charAt(0) === '/');\n\n  // put the host back\n  if (psychotic) {\n    result.hostname = isAbsolute ? '' : srcPath.length ? srcPath.shift() : '';\n    result.host = result.hostname;\n    /*\n     * occationaly the auth can get stuck only in host\n     * this especially happens in cases like\n     * url.resolveObject('mailto:local1@domain1', 'local2@domain2')\n     */\n    var authInHost = result.host && result.host.indexOf('@') > 0 ? result.host.split('@') : false;\n    if (authInHost) {\n      result.auth = authInHost.shift();\n      result.hostname = authInHost.shift();\n      result.host = result.hostname;\n    }\n  }\n\n  mustEndAbs = mustEndAbs || (result.host && srcPath.length);\n\n  if (mustEndAbs && !isAbsolute) {\n    srcPath.unshift('');\n  }\n\n  if (srcPath.length > 0) {\n    result.pathname = srcPath.join('/');\n  } else {\n    result.pathname = null;\n    result.path = null;\n  }\n\n  // to support request.http\n  if (result.pathname !== null || result.search !== null) {\n    result.path = (result.pathname ? result.pathname : '') + (result.search ? result.search : '');\n  }\n  result.auth = relative.auth || result.auth;\n  result.slashes = result.slashes || relative.slashes;\n  result.href = result.format();\n  return result;\n};\n\nUrl.prototype.parseHost = function () {\n  var host = this.host;\n  var port = portPattern.exec(host);\n  if (port) {\n    port = port[0];\n    if (port !== ':') {\n      this.port = port.substr(1);\n    }\n    host = host.substr(0, host.length - port.length);\n  }\n  if (host) { this.hostname = host; }\n};\n\nexports.parse = urlParse;\nexports.resolve = urlResolve;\nexports.resolveObject = urlResolveObject;\nexports.format = urlFormat;\n\nexports.Url = Url;\n","module.exports = function isBuffer(arg) {\n  return arg && typeof arg === 'object'\n    && typeof arg.copy === 'function'\n    && typeof arg.fill === 'function'\n    && typeof arg.readUInt8 === 'function';\n}","// Currently in sync with Node.js lib/internal/util/types.js\n// https://github.com/nodejs/node/commit/112cc7c27551254aa2b17098fb774867f05ed0d9\n\n'use strict';\n\nvar isArgumentsObject = require('is-arguments');\nvar isGeneratorFunction = require('is-generator-function');\nvar whichTypedArray = require('which-typed-array');\nvar isTypedArray = require('is-typed-array');\n\nfunction uncurryThis(f) {\n  return f.call.bind(f);\n}\n\nvar BigIntSupported = typeof BigInt !== 'undefined';\nvar SymbolSupported = typeof Symbol !== 'undefined';\n\nvar ObjectToString = uncurryThis(Object.prototype.toString);\n\nvar numberValue = uncurryThis(Number.prototype.valueOf);\nvar stringValue = uncurryThis(String.prototype.valueOf);\nvar booleanValue = uncurryThis(Boolean.prototype.valueOf);\n\nif (BigIntSupported) {\n  var bigIntValue = uncurryThis(BigInt.prototype.valueOf);\n}\n\nif (SymbolSupported) {\n  var symbolValue = uncurryThis(Symbol.prototype.valueOf);\n}\n\nfunction checkBoxedPrimitive(value, prototypeValueOf) {\n  if (typeof value !== 'object') {\n    return false;\n  }\n  try {\n    prototypeValueOf(value);\n    return true;\n  } catch(e) {\n    return false;\n  }\n}\n\nexports.isArgumentsObject = isArgumentsObject;\nexports.isGeneratorFunction = isGeneratorFunction;\nexports.isTypedArray = isTypedArray;\n\n// Taken from here and modified for better browser support\n// https://github.com/sindresorhus/p-is-promise/blob/cda35a513bda03f977ad5cde3a079d237e82d7ef/index.js\nfunction isPromise(input) {\n\treturn (\n\t\t(\n\t\t\ttypeof Promise !== 'undefined' &&\n\t\t\tinput instanceof Promise\n\t\t) ||\n\t\t(\n\t\t\tinput !== null &&\n\t\t\ttypeof input === 'object' &&\n\t\t\ttypeof input.then === 'function' &&\n\t\t\ttypeof input.catch === 'function'\n\t\t)\n\t);\n}\nexports.isPromise = isPromise;\n\nfunction isArrayBufferView(value) {\n  if (typeof ArrayBuffer !== 'undefined' && ArrayBuffer.isView) {\n    return ArrayBuffer.isView(value);\n  }\n\n  return (\n    isTypedArray(value) ||\n    isDataView(value)\n  );\n}\nexports.isArrayBufferView = isArrayBufferView;\n\n\nfunction isUint8Array(value) {\n  return whichTypedArray(value) === 'Uint8Array';\n}\nexports.isUint8Array = isUint8Array;\n\nfunction isUint8ClampedArray(value) {\n  return whichTypedArray(value) === 'Uint8ClampedArray';\n}\nexports.isUint8ClampedArray = isUint8ClampedArray;\n\nfunction isUint16Array(value) {\n  return whichTypedArray(value) === 'Uint16Array';\n}\nexports.isUint16Array = isUint16Array;\n\nfunction isUint32Array(value) {\n  return whichTypedArray(value) === 'Uint32Array';\n}\nexports.isUint32Array = isUint32Array;\n\nfunction isInt8Array(value) {\n  return whichTypedArray(value) === 'Int8Array';\n}\nexports.isInt8Array = isInt8Array;\n\nfunction isInt16Array(value) {\n  return whichTypedArray(value) === 'Int16Array';\n}\nexports.isInt16Array = isInt16Array;\n\nfunction isInt32Array(value) {\n  return whichTypedArray(value) === 'Int32Array';\n}\nexports.isInt32Array = isInt32Array;\n\nfunction isFloat32Array(value) {\n  return whichTypedArray(value) === 'Float32Array';\n}\nexports.isFloat32Array = isFloat32Array;\n\nfunction isFloat64Array(value) {\n  return whichTypedArray(value) === 'Float64Array';\n}\nexports.isFloat64Array = isFloat64Array;\n\nfunction isBigInt64Array(value) {\n  return whichTypedArray(value) === 'BigInt64Array';\n}\nexports.isBigInt64Array = isBigInt64Array;\n\nfunction isBigUint64Array(value) {\n  return whichTypedArray(value) === 'BigUint64Array';\n}\nexports.isBigUint64Array = isBigUint64Array;\n\nfunction isMapToString(value) {\n  return ObjectToString(value) === '[object Map]';\n}\nisMapToString.working = (\n  typeof Map !== 'undefined' &&\n  isMapToString(new Map())\n);\n\nfunction isMap(value) {\n  if (typeof Map === 'undefined') {\n    return false;\n  }\n\n  return isMapToString.working\n    ? isMapToString(value)\n    : value instanceof Map;\n}\nexports.isMap = isMap;\n\nfunction isSetToString(value) {\n  return ObjectToString(value) === '[object Set]';\n}\nisSetToString.working = (\n  typeof Set !== 'undefined' &&\n  isSetToString(new Set())\n);\nfunction isSet(value) {\n  if (typeof Set === 'undefined') {\n    return false;\n  }\n\n  return isSetToString.working\n    ? isSetToString(value)\n    : value instanceof Set;\n}\nexports.isSet = isSet;\n\nfunction isWeakMapToString(value) {\n  return ObjectToString(value) === '[object WeakMap]';\n}\nisWeakMapToString.working = (\n  typeof WeakMap !== 'undefined' &&\n  isWeakMapToString(new WeakMap())\n);\nfunction isWeakMap(value) {\n  if (typeof WeakMap === 'undefined') {\n    return false;\n  }\n\n  return isWeakMapToString.working\n    ? isWeakMapToString(value)\n    : value instanceof WeakMap;\n}\nexports.isWeakMap = isWeakMap;\n\nfunction isWeakSetToString(value) {\n  return ObjectToString(value) === '[object WeakSet]';\n}\nisWeakSetToString.working = (\n  typeof WeakSet !== 'undefined' &&\n  isWeakSetToString(new WeakSet())\n);\nfunction isWeakSet(value) {\n  return isWeakSetToString(value);\n}\nexports.isWeakSet = isWeakSet;\n\nfunction isArrayBufferToString(value) {\n  return ObjectToString(value) === '[object ArrayBuffer]';\n}\nisArrayBufferToString.working = (\n  typeof ArrayBuffer !== 'undefined' &&\n  isArrayBufferToString(new ArrayBuffer())\n);\nfunction isArrayBuffer(value) {\n  if (typeof ArrayBuffer === 'undefined') {\n    return false;\n  }\n\n  return isArrayBufferToString.working\n    ? isArrayBufferToString(value)\n    : value instanceof ArrayBuffer;\n}\nexports.isArrayBuffer = isArrayBuffer;\n\nfunction isDataViewToString(value) {\n  return ObjectToString(value) === '[object DataView]';\n}\nisDataViewToString.working = (\n  typeof ArrayBuffer !== 'undefined' &&\n  typeof DataView !== 'undefined' &&\n  isDataViewToString(new DataView(new ArrayBuffer(1), 0, 1))\n);\nfunction isDataView(value) {\n  if (typeof DataView === 'undefined') {\n    return false;\n  }\n\n  return isDataViewToString.working\n    ? isDataViewToString(value)\n    : value instanceof DataView;\n}\nexports.isDataView = isDataView;\n\n// Store a copy of SharedArrayBuffer in case it's deleted elsewhere\nvar SharedArrayBufferCopy = typeof SharedArrayBuffer !== 'undefined' ? SharedArrayBuffer : undefined;\nfunction isSharedArrayBufferToString(value) {\n  return ObjectToString(value) === '[object SharedArrayBuffer]';\n}\nfunction isSharedArrayBuffer(value) {\n  if (typeof SharedArrayBufferCopy === 'undefined') {\n    return false;\n  }\n\n  if (typeof isSharedArrayBufferToString.working === 'undefined') {\n    isSharedArrayBufferToString.working = isSharedArrayBufferToString(new SharedArrayBufferCopy());\n  }\n\n  return isSharedArrayBufferToString.working\n    ? isSharedArrayBufferToString(value)\n    : value instanceof SharedArrayBufferCopy;\n}\nexports.isSharedArrayBuffer = isSharedArrayBuffer;\n\nfunction isAsyncFunction(value) {\n  return ObjectToString(value) === '[object AsyncFunction]';\n}\nexports.isAsyncFunction = isAsyncFunction;\n\nfunction isMapIterator(value) {\n  return ObjectToString(value) === '[object Map Iterator]';\n}\nexports.isMapIterator = isMapIterator;\n\nfunction isSetIterator(value) {\n  return ObjectToString(value) === '[object Set Iterator]';\n}\nexports.isSetIterator = isSetIterator;\n\nfunction isGeneratorObject(value) {\n  return ObjectToString(value) === '[object Generator]';\n}\nexports.isGeneratorObject = isGeneratorObject;\n\nfunction isWebAssemblyCompiledModule(value) {\n  return ObjectToString(value) === '[object WebAssembly.Module]';\n}\nexports.isWebAssemblyCompiledModule = isWebAssemblyCompiledModule;\n\nfunction isNumberObject(value) {\n  return checkBoxedPrimitive(value, numberValue);\n}\nexports.isNumberObject = isNumberObject;\n\nfunction isStringObject(value) {\n  return checkBoxedPrimitive(value, stringValue);\n}\nexports.isStringObject = isStringObject;\n\nfunction isBooleanObject(value) {\n  return checkBoxedPrimitive(value, booleanValue);\n}\nexports.isBooleanObject = isBooleanObject;\n\nfunction isBigIntObject(value) {\n  return BigIntSupported && checkBoxedPrimitive(value, bigIntValue);\n}\nexports.isBigIntObject = isBigIntObject;\n\nfunction isSymbolObject(value) {\n  return SymbolSupported && checkBoxedPrimitive(value, symbolValue);\n}\nexports.isSymbolObject = isSymbolObject;\n\nfunction isBoxedPrimitive(value) {\n  return (\n    isNumberObject(value) ||\n    isStringObject(value) ||\n    isBooleanObject(value) ||\n    isBigIntObject(value) ||\n    isSymbolObject(value)\n  );\n}\nexports.isBoxedPrimitive = isBoxedPrimitive;\n\nfunction isAnyArrayBuffer(value) {\n  return typeof Uint8Array !== 'undefined' && (\n    isArrayBuffer(value) ||\n    isSharedArrayBuffer(value)\n  );\n}\nexports.isAnyArrayBuffer = isAnyArrayBuffer;\n\n['isProxy', 'isExternal', 'isModuleNamespaceObject'].forEach(function(method) {\n  Object.defineProperty(exports, method, {\n    enumerable: false,\n    value: function() {\n      throw new Error(method + ' is not supported in userland');\n    }\n  });\n});\n","// Copyright Joyent, Inc. and other Node contributors.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a\n// copy of this software and associated documentation files (the\n// \"Software\"), to deal in the Software without restriction, including\n// without limitation the rights to use, copy, modify, merge, publish,\n// distribute, sublicense, and/or sell copies of the Software, and to permit\n// persons to whom the Software is furnished to do so, subject to the\n// following conditions:\n//\n// The above copyright notice and this permission notice shall be included\n// in all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN\n// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR\n// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\n// USE OR OTHER DEALINGS IN THE SOFTWARE.\n\nvar getOwnPropertyDescriptors = Object.getOwnPropertyDescriptors ||\n  function getOwnPropertyDescriptors(obj) {\n    var keys = Object.keys(obj);\n    var descriptors = {};\n    for (var i = 0; i < keys.length; i++) {\n      descriptors[keys[i]] = Object.getOwnPropertyDescriptor(obj, keys[i]);\n    }\n    return descriptors;\n  };\n\nvar formatRegExp = /%[sdj%]/g;\nexports.format = function(f) {\n  if (!isString(f)) {\n    var objects = [];\n    for (var i = 0; i < arguments.length; i++) {\n      objects.push(inspect(arguments[i]));\n    }\n    return objects.join(' ');\n  }\n\n  var i = 1;\n  var args = arguments;\n  var len = args.length;\n  var str = String(f).replace(formatRegExp, function(x) {\n    if (x === '%%') return '%';\n    if (i >= len) return x;\n    switch (x) {\n      case '%s': return String(args[i++]);\n      case '%d': return Number(args[i++]);\n      case '%j':\n        try {\n          return JSON.stringify(args[i++]);\n        } catch (_) {\n          return '[Circular]';\n        }\n      default:\n        return x;\n    }\n  });\n  for (var x = args[i]; i < len; x = args[++i]) {\n    if (isNull(x) || !isObject(x)) {\n      str += ' ' + x;\n    } else {\n      str += ' ' + inspect(x);\n    }\n  }\n  return str;\n};\n\n\n// Mark that a method should not be used.\n// Returns a modified function which warns once by default.\n// If --no-deprecation is set, then it is a no-op.\nexports.deprecate = function(fn, msg) {\n  if (typeof process !== 'undefined' && process.noDeprecation === true) {\n    return fn;\n  }\n\n  // Allow for deprecating things in the process of starting up.\n  if (typeof process === 'undefined') {\n    return function() {\n      return exports.deprecate(fn, msg).apply(this, arguments);\n    };\n  }\n\n  var warned = false;\n  function deprecated() {\n    if (!warned) {\n      if (process.throwDeprecation) {\n        throw new Error(msg);\n      } else if (process.traceDeprecation) {\n        console.trace(msg);\n      } else {\n        console.error(msg);\n      }\n      warned = true;\n    }\n    return fn.apply(this, arguments);\n  }\n\n  return deprecated;\n};\n\n\nvar debugs = {};\nvar debugEnvRegex = /^$/;\n\nif (process.env.NODE_DEBUG) {\n  var debugEnv = process.env.NODE_DEBUG;\n  debugEnv = debugEnv.replace(/[|\\\\{}()[\\]^$+?.]/g, '\\\\$&')\n    .replace(/\\*/g, '.*')\n    .replace(/,/g, '$|^')\n    .toUpperCase();\n  debugEnvRegex = new RegExp('^' + debugEnv + '$', 'i');\n}\nexports.debuglog = function(set) {\n  set = set.toUpperCase();\n  if (!debugs[set]) {\n    if (debugEnvRegex.test(set)) {\n      var pid = process.pid;\n      debugs[set] = function() {\n        var msg = exports.format.apply(exports, arguments);\n        console.error('%s %d: %s', set, pid, msg);\n      };\n    } else {\n      debugs[set] = function() {};\n    }\n  }\n  return debugs[set];\n};\n\n\n/**\n * Echos the value of a value. Trys to print the value out\n * in the best way possible given the different types.\n *\n * @param {Object} obj The object to print out.\n * @param {Object} opts Optional options object that alters the output.\n */\n/* legacy: obj, showHidden, depth, colors*/\nfunction inspect(obj, opts) {\n  // default options\n  var ctx = {\n    seen: [],\n    stylize: stylizeNoColor\n  };\n  // legacy...\n  if (arguments.length >= 3) ctx.depth = arguments[2];\n  if (arguments.length >= 4) ctx.colors = arguments[3];\n  if (isBoolean(opts)) {\n    // legacy...\n    ctx.showHidden = opts;\n  } else if (opts) {\n    // got an \"options\" object\n    exports._extend(ctx, opts);\n  }\n  // set default options\n  if (isUndefined(ctx.showHidden)) ctx.showHidden = false;\n  if (isUndefined(ctx.depth)) ctx.depth = 2;\n  if (isUndefined(ctx.colors)) ctx.colors = false;\n  if (isUndefined(ctx.customInspect)) ctx.customInspect = true;\n  if (ctx.colors) ctx.stylize = stylizeWithColor;\n  return formatValue(ctx, obj, ctx.depth);\n}\nexports.inspect = inspect;\n\n\n// http://en.wikipedia.org/wiki/ANSI_escape_code#graphics\ninspect.colors = {\n  'bold' : [1, 22],\n  'italic' : [3, 23],\n  'underline' : [4, 24],\n  'inverse' : [7, 27],\n  'white' : [37, 39],\n  'grey' : [90, 39],\n  'black' : [30, 39],\n  'blue' : [34, 39],\n  'cyan' : [36, 39],\n  'green' : [32, 39],\n  'magenta' : [35, 39],\n  'red' : [31, 39],\n  'yellow' : [33, 39]\n};\n\n// Don't use 'blue' not visible on cmd.exe\ninspect.styles = {\n  'special': 'cyan',\n  'number': 'yellow',\n  'boolean': 'yellow',\n  'undefined': 'grey',\n  'null': 'bold',\n  'string': 'green',\n  'date': 'magenta',\n  // \"name\": intentionally not styling\n  'regexp': 'red'\n};\n\n\nfunction stylizeWithColor(str, styleType) {\n  var style = inspect.styles[styleType];\n\n  if (style) {\n    return '\\u001b[' + inspect.colors[style][0] + 'm' + str +\n           '\\u001b[' + inspect.colors[style][1] + 'm';\n  } else {\n    return str;\n  }\n}\n\n\nfunction stylizeNoColor(str, styleType) {\n  return str;\n}\n\n\nfunction arrayToHash(array) {\n  var hash = {};\n\n  array.forEach(function(val, idx) {\n    hash[val] = true;\n  });\n\n  return hash;\n}\n\n\nfunction formatValue(ctx, value, recurseTimes) {\n  // Provide a hook for user-specified inspect functions.\n  // Check that value is an object with an inspect function on it\n  if (ctx.customInspect &&\n      value &&\n      isFunction(value.inspect) &&\n      // Filter out the util module, it's inspect function is special\n      value.inspect !== exports.inspect &&\n      // Also filter out any prototype objects using the circular check.\n      !(value.constructor && value.constructor.prototype === value)) {\n    var ret = value.inspect(recurseTimes, ctx);\n    if (!isString(ret)) {\n      ret = formatValue(ctx, ret, recurseTimes);\n    }\n    return ret;\n  }\n\n  // Primitive types cannot have properties\n  var primitive = formatPrimitive(ctx, value);\n  if (primitive) {\n    return primitive;\n  }\n\n  // Look up the keys of the object.\n  var keys = Object.keys(value);\n  var visibleKeys = arrayToHash(keys);\n\n  if (ctx.showHidden) {\n    keys = Object.getOwnPropertyNames(value);\n  }\n\n  // IE doesn't make error fields non-enumerable\n  // http://msdn.microsoft.com/en-us/library/ie/dww52sbt(v=vs.94).aspx\n  if (isError(value)\n      && (keys.indexOf('message') >= 0 || keys.indexOf('description') >= 0)) {\n    return formatError(value);\n  }\n\n  // Some type of object without properties can be shortcutted.\n  if (keys.length === 0) {\n    if (isFunction(value)) {\n      var name = value.name ? ': ' + value.name : '';\n      return ctx.stylize('[Function' + name + ']', 'special');\n    }\n    if (isRegExp(value)) {\n      return ctx.stylize(RegExp.prototype.toString.call(value), 'regexp');\n    }\n    if (isDate(value)) {\n      return ctx.stylize(Date.prototype.toString.call(value), 'date');\n    }\n    if (isError(value)) {\n      return formatError(value);\n    }\n  }\n\n  var base = '', array = false, braces = ['{', '}'];\n\n  // Make Array say that they are Array\n  if (isArray(value)) {\n    array = true;\n    braces = ['[', ']'];\n  }\n\n  // Make functions say that they are functions\n  if (isFunction(value)) {\n    var n = value.name ? ': ' + value.name : '';\n    base = ' [Function' + n + ']';\n  }\n\n  // Make RegExps say that they are RegExps\n  if (isRegExp(value)) {\n    base = ' ' + RegExp.prototype.toString.call(value);\n  }\n\n  // Make dates with properties first say the date\n  if (isDate(value)) {\n    base = ' ' + Date.prototype.toUTCString.call(value);\n  }\n\n  // Make error with message first say the error\n  if (isError(value)) {\n    base = ' ' + formatError(value);\n  }\n\n  if (keys.length === 0 && (!array || value.length == 0)) {\n    return braces[0] + base + braces[1];\n  }\n\n  if (recurseTimes < 0) {\n    if (isRegExp(value)) {\n      return ctx.stylize(RegExp.prototype.toString.call(value), 'regexp');\n    } else {\n      return ctx.stylize('[Object]', 'special');\n    }\n  }\n\n  ctx.seen.push(value);\n\n  var output;\n  if (array) {\n    output = formatArray(ctx, value, recurseTimes, visibleKeys, keys);\n  } else {\n    output = keys.map(function(key) {\n      return formatProperty(ctx, value, recurseTimes, visibleKeys, key, array);\n    });\n  }\n\n  ctx.seen.pop();\n\n  return reduceToSingleString(output, base, braces);\n}\n\n\nfunction formatPrimitive(ctx, value) {\n  if (isUndefined(value))\n    return ctx.stylize('undefined', 'undefined');\n  if (isString(value)) {\n    var simple = '\\'' + JSON.stringify(value).replace(/^\"|\"$/g, '')\n                                             .replace(/'/g, \"\\\\'\")\n                                             .replace(/\\\\\"/g, '\"') + '\\'';\n    return ctx.stylize(simple, 'string');\n  }\n  if (isNumber(value))\n    return ctx.stylize('' + value, 'number');\n  if (isBoolean(value))\n    return ctx.stylize('' + value, 'boolean');\n  // For some reason typeof null is \"object\", so special case here.\n  if (isNull(value))\n    return ctx.stylize('null', 'null');\n}\n\n\nfunction formatError(value) {\n  return '[' + Error.prototype.toString.call(value) + ']';\n}\n\n\nfunction formatArray(ctx, value, recurseTimes, visibleKeys, keys) {\n  var output = [];\n  for (var i = 0, l = value.length; i < l; ++i) {\n    if (hasOwnProperty(value, String(i))) {\n      output.push(formatProperty(ctx, value, recurseTimes, visibleKeys,\n          String(i), true));\n    } else {\n      output.push('');\n    }\n  }\n  keys.forEach(function(key) {\n    if (!key.match(/^\\d+$/)) {\n      output.push(formatProperty(ctx, value, recurseTimes, visibleKeys,\n          key, true));\n    }\n  });\n  return output;\n}\n\n\nfunction formatProperty(ctx, value, recurseTimes, visibleKeys, key, array) {\n  var name, str, desc;\n  desc = Object.getOwnPropertyDescriptor(value, key) || { value: value[key] };\n  if (desc.get) {\n    if (desc.set) {\n      str = ctx.stylize('[Getter/Setter]', 'special');\n    } else {\n      str = ctx.stylize('[Getter]', 'special');\n    }\n  } else {\n    if (desc.set) {\n      str = ctx.stylize('[Setter]', 'special');\n    }\n  }\n  if (!hasOwnProperty(visibleKeys, key)) {\n    name = '[' + key + ']';\n  }\n  if (!str) {\n    if (ctx.seen.indexOf(desc.value) < 0) {\n      if (isNull(recurseTimes)) {\n        str = formatValue(ctx, desc.value, null);\n      } else {\n        str = formatValue(ctx, desc.value, recurseTimes - 1);\n      }\n      if (str.indexOf('\\n') > -1) {\n        if (array) {\n          str = str.split('\\n').map(function(line) {\n            return '  ' + line;\n          }).join('\\n').slice(2);\n        } else {\n          str = '\\n' + str.split('\\n').map(function(line) {\n            return '   ' + line;\n          }).join('\\n');\n        }\n      }\n    } else {\n      str = ctx.stylize('[Circular]', 'special');\n    }\n  }\n  if (isUndefined(name)) {\n    if (array && key.match(/^\\d+$/)) {\n      return str;\n    }\n    name = JSON.stringify('' + key);\n    if (name.match(/^\"([a-zA-Z_][a-zA-Z_0-9]*)\"$/)) {\n      name = name.slice(1, -1);\n      name = ctx.stylize(name, 'name');\n    } else {\n      name = name.replace(/'/g, \"\\\\'\")\n                 .replace(/\\\\\"/g, '\"')\n                 .replace(/(^\"|\"$)/g, \"'\");\n      name = ctx.stylize(name, 'string');\n    }\n  }\n\n  return name + ': ' + str;\n}\n\n\nfunction reduceToSingleString(output, base, braces) {\n  var numLinesEst = 0;\n  var length = output.reduce(function(prev, cur) {\n    numLinesEst++;\n    if (cur.indexOf('\\n') >= 0) numLinesEst++;\n    return prev + cur.replace(/\\u001b\\[\\d\\d?m/g, '').length + 1;\n  }, 0);\n\n  if (length > 60) {\n    return braces[0] +\n           (base === '' ? '' : base + '\\n ') +\n           ' ' +\n           output.join(',\\n  ') +\n           ' ' +\n           braces[1];\n  }\n\n  return braces[0] + base + ' ' + output.join(', ') + ' ' + braces[1];\n}\n\n\n// NOTE: These type checking functions intentionally don't use `instanceof`\n// because it is fragile and can be easily faked with `Object.create()`.\nexports.types = require('./support/types');\n\nfunction isArray(ar) {\n  return Array.isArray(ar);\n}\nexports.isArray = isArray;\n\nfunction isBoolean(arg) {\n  return typeof arg === 'boolean';\n}\nexports.isBoolean = isBoolean;\n\nfunction isNull(arg) {\n  return arg === null;\n}\nexports.isNull = isNull;\n\nfunction isNullOrUndefined(arg) {\n  return arg == null;\n}\nexports.isNullOrUndefined = isNullOrUndefined;\n\nfunction isNumber(arg) {\n  return typeof arg === 'number';\n}\nexports.isNumber = isNumber;\n\nfunction isString(arg) {\n  return typeof arg === 'string';\n}\nexports.isString = isString;\n\nfunction isSymbol(arg) {\n  return typeof arg === 'symbol';\n}\nexports.isSymbol = isSymbol;\n\nfunction isUndefined(arg) {\n  return arg === void 0;\n}\nexports.isUndefined = isUndefined;\n\nfunction isRegExp(re) {\n  return isObject(re) && objectToString(re) === '[object RegExp]';\n}\nexports.isRegExp = isRegExp;\nexports.types.isRegExp = isRegExp;\n\nfunction isObject(arg) {\n  return typeof arg === 'object' && arg !== null;\n}\nexports.isObject = isObject;\n\nfunction isDate(d) {\n  return isObject(d) && objectToString(d) === '[object Date]';\n}\nexports.isDate = isDate;\nexports.types.isDate = isDate;\n\nfunction isError(e) {\n  return isObject(e) &&\n      (objectToString(e) === '[object Error]' || e instanceof Error);\n}\nexports.isError = isError;\nexports.types.isNativeError = isError;\n\nfunction isFunction(arg) {\n  return typeof arg === 'function';\n}\nexports.isFunction = isFunction;\n\nfunction isPrimitive(arg) {\n  return arg === null ||\n         typeof arg === 'boolean' ||\n         typeof arg === 'number' ||\n         typeof arg === 'string' ||\n         typeof arg === 'symbol' ||  // ES6 symbol\n         typeof arg === 'undefined';\n}\nexports.isPrimitive = isPrimitive;\n\nexports.isBuffer = require('./support/isBuffer');\n\nfunction objectToString(o) {\n  return Object.prototype.toString.call(o);\n}\n\n\nfunction pad(n) {\n  return n < 10 ? '0' + n.toString(10) : n.toString(10);\n}\n\n\nvar months = ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep',\n              'Oct', 'Nov', 'Dec'];\n\n// 26 Feb 16:19:34\nfunction timestamp() {\n  var d = new Date();\n  var time = [pad(d.getHours()),\n              pad(d.getMinutes()),\n              pad(d.getSeconds())].join(':');\n  return [d.getDate(), months[d.getMonth()], time].join(' ');\n}\n\n\n// log is just a thin wrapper to console.log that prepends a timestamp\nexports.log = function() {\n  console.log('%s - %s', timestamp(), exports.format.apply(exports, arguments));\n};\n\n\n/**\n * Inherit the prototype methods from one constructor into another.\n *\n * The Function.prototype.inherits from lang.js rewritten as a standalone\n * function (not on Function.prototype). NOTE: If this file is to be loaded\n * during bootstrapping this function needs to be rewritten using some native\n * functions as prototype setup using normal JavaScript does not work as\n * expected during bootstrapping (see mirror.js in r114903).\n *\n * @param {function} ctor Constructor function which needs to inherit the\n *     prototype.\n * @param {function} superCtor Constructor function to inherit prototype from.\n */\nexports.inherits = require('inherits');\n\nexports._extend = function(origin, add) {\n  // Don't do anything if add isn't an object\n  if (!add || !isObject(add)) return origin;\n\n  var keys = Object.keys(add);\n  var i = keys.length;\n  while (i--) {\n    origin[keys[i]] = add[keys[i]];\n  }\n  return origin;\n};\n\nfunction hasOwnProperty(obj, prop) {\n  return Object.prototype.hasOwnProperty.call(obj, prop);\n}\n\nvar kCustomPromisifiedSymbol = typeof Symbol !== 'undefined' ? Symbol('util.promisify.custom') : undefined;\n\nexports.promisify = function promisify(original) {\n  if (typeof original !== 'function')\n    throw new TypeError('The \"original\" argument must be of type Function');\n\n  if (kCustomPromisifiedSymbol && original[kCustomPromisifiedSymbol]) {\n    var fn = original[kCustomPromisifiedSymbol];\n    if (typeof fn !== 'function') {\n      throw new TypeError('The \"util.promisify.custom\" argument must be of type Function');\n    }\n    Object.defineProperty(fn, kCustomPromisifiedSymbol, {\n      value: fn, enumerable: false, writable: false, configurable: true\n    });\n    return fn;\n  }\n\n  function fn() {\n    var promiseResolve, promiseReject;\n    var promise = new Promise(function (resolve, reject) {\n      promiseResolve = resolve;\n      promiseReject = reject;\n    });\n\n    var args = [];\n    for (var i = 0; i < arguments.length; i++) {\n      args.push(arguments[i]);\n    }\n    args.push(function (err, value) {\n      if (err) {\n        promiseReject(err);\n      } else {\n        promiseResolve(value);\n      }\n    });\n\n    try {\n      original.apply(this, args);\n    } catch (err) {\n      promiseReject(err);\n    }\n\n    return promise;\n  }\n\n  Object.setPrototypeOf(fn, Object.getPrototypeOf(original));\n\n  if (kCustomPromisifiedSymbol) Object.defineProperty(fn, kCustomPromisifiedSymbol, {\n    value: fn, enumerable: false, writable: false, configurable: true\n  });\n  return Object.defineProperties(\n    fn,\n    getOwnPropertyDescriptors(original)\n  );\n}\n\nexports.promisify.custom = kCustomPromisifiedSymbol\n\nfunction callbackifyOnRejected(reason, cb) {\n  // `!reason` guard inspired by bluebird (Ref: https://goo.gl/t5IS6M).\n  // Because `null` is a special error value in callbacks which means \"no error\n  // occurred\", we error-wrap so the callback consumer can distinguish between\n  // \"the promise rejected with null\" or \"the promise fulfilled with undefined\".\n  if (!reason) {\n    var newReason = new Error('Promise was rejected with a falsy value');\n    newReason.reason = reason;\n    reason = newReason;\n  }\n  return cb(reason);\n}\n\nfunction callbackify(original) {\n  if (typeof original !== 'function') {\n    throw new TypeError('The \"original\" argument must be of type Function');\n  }\n\n  // We DO NOT return the promise as it gives the user a false sense that\n  // the promise is actually somehow related to the callback's execution\n  // and that the callback throwing will reject the promise.\n  function callbackified() {\n    var args = [];\n    for (var i = 0; i < arguments.length; i++) {\n      args.push(arguments[i]);\n    }\n\n    var maybeCb = args.pop();\n    if (typeof maybeCb !== 'function') {\n      throw new TypeError('The last argument must be of type Function');\n    }\n    var self = this;\n    var cb = function() {\n      return maybeCb.apply(self, arguments);\n    };\n    // In true node style we process the callback on `nextTick` with all the\n    // implications (stack, `uncaughtException`, `async_hooks`)\n    original.apply(this, args)\n      .then(function(ret) { process.nextTick(cb.bind(null, null, ret)) },\n            function(rej) { process.nextTick(callbackifyOnRejected.bind(null, rej, cb)) });\n  }\n\n  Object.setPrototypeOf(callbackified, Object.getPrototypeOf(original));\n  Object.defineProperties(callbackified,\n                          getOwnPropertyDescriptors(original));\n  return callbackified;\n}\nexports.callbackify = callbackify;\n","module.exports = extend\n\nvar hasOwnProperty = Object.prototype.hasOwnProperty;\n\nfunction extend() {\n    var target = {}\n\n    for (var i = 0; i < arguments.length; i++) {\n        var source = arguments[i]\n\n        for (var key in source) {\n            if (hasOwnProperty.call(source, key)) {\n                target[key] = source[key]\n            }\n        }\n    }\n\n    return target\n}\n","const inWebWorker = typeof WorkerGlobalScope !== \"undefined\" &&\n    self instanceof WorkerGlobalScope;\nconst root = inWebWorker\n    ? self\n    : typeof window !== \"undefined\"\n        ? window\n        : globalThis;\nexport const fetch = root.fetch.bind(root);\nexport const Headers = root.Headers;\nexport const Request = root.Request;\nexport const Response = root.Response;\n","export default function getIgnoreAttributesFn(ignoreAttributes) {\n    if (typeof ignoreAttributes === 'function') {\n        return ignoreAttributes\n    }\n    if (Array.isArray(ignoreAttributes)) {\n        return (attrName) => {\n            for (const pattern of ignoreAttributes) {\n                if (typeof pattern === 'string' && attrName === pattern) {\n                    return true\n                }\n                if (pattern instanceof RegExp && pattern.test(attrName)) {\n                    return true\n                }\n            }\n        }\n    }\n    return () => false\n}","'use strict';\n\nconst nameStartChar = ':A-Za-z_\\\\u00C0-\\\\u00D6\\\\u00D8-\\\\u00F6\\\\u00F8-\\\\u02FF\\\\u0370-\\\\u037D\\\\u037F-\\\\u1FFF\\\\u200C-\\\\u200D\\\\u2070-\\\\u218F\\\\u2C00-\\\\u2FEF\\\\u3001-\\\\uD7FF\\\\uF900-\\\\uFDCF\\\\uFDF0-\\\\uFFFD';\nconst nameChar = nameStartChar + '\\\\-.\\\\d\\\\u00B7\\\\u0300-\\\\u036F\\\\u203F-\\\\u2040';\nexport const nameRegexp = '[' + nameStartChar + '][' + nameChar + ']*';\nconst regexName = new RegExp('^' + nameRegexp + '$');\n\nexport function getAllMatches(string, regex) {\n  const matches = [];\n  let match = regex.exec(string);\n  while (match) {\n    const allmatches = [];\n    allmatches.startIndex = regex.lastIndex - match[0].length;\n    const len = match.length;\n    for (let index = 0; index < len; index++) {\n      allmatches.push(match[index]);\n    }\n    matches.push(allmatches);\n    match = regex.exec(string);\n  }\n  return matches;\n}\n\nexport const isName = function(string) {\n  const match = regexName.exec(string);\n  return !(match === null || typeof match === 'undefined');\n}\n\nexport function isExist(v) {\n  return typeof v !== 'undefined';\n}\n\nexport function isEmptyObject(obj) {\n  return Object.keys(obj).length === 0;\n}\n\n/**\n * Copy all the properties of a into b.\n * @param {*} target\n * @param {*} a\n */\nexport function merge(target, a, arrayMode) {\n  if (a) {\n    const keys = Object.keys(a); // will return an array of own properties\n    const len = keys.length; //don't make it inline\n    for (let i = 0; i < len; i++) {\n      if (arrayMode === 'strict') {\n        target[keys[i]] = [ a[keys[i]] ];\n      } else {\n        target[keys[i]] = a[keys[i]];\n      }\n    }\n  }\n}\n/* exports.merge =function (b,a){\n  return Object.assign(b,a);\n} */\n\nexport function getValue(v) {\n  if (exports.isExist(v)) {\n    return v;\n  } else {\n    return '';\n  }\n}\n\n// const fakeCall = function(a) {return a;};\n// const fakeCallNoReturn = function() {};","'use strict';\n\nimport {getAllMatches, isName} from './util.js';\n\nconst defaultOptions = {\n  allowBooleanAttributes: false, //A tag can have attributes without any value\n  unpairedTags: []\n};\n\n//const tagsPattern = new RegExp(\"<\\\\/?([\\\\w:\\\\-_\\.]+)\\\\s*\\/?>\",\"g\");\nexport function validate(xmlData, options) {\n  options = Object.assign({}, defaultOptions, options);\n\n  //xmlData = xmlData.replace(/(\\r\\n|\\n|\\r)/gm,\"\");//make it single line\n  //xmlData = xmlData.replace(/(^\\s*<\\?xml.*?\\?>)/g,\"\");//Remove XML starting tag\n  //xmlData = xmlData.replace(/()/g,\"\");//Remove DOCTYPE\n  const tags = [];\n  let tagFound = false;\n\n  //indicates that the root tag has been closed (aka. depth 0 has been reached)\n  let reachedRoot = false;\n\n  if (xmlData[0] === '\\ufeff') {\n    // check for byte order mark (BOM)\n    xmlData = xmlData.substr(1);\n  }\n  \n  for (let i = 0; i < xmlData.length; i++) {\n\n    if (xmlData[i] === '<' && xmlData[i+1] === '?') {\n      i+=2;\n      i = readPI(xmlData,i);\n      if (i.err) return i;\n    }else if (xmlData[i] === '<') {\n      //starting of tag\n      //read until you reach to '>' avoiding any '>' in attribute value\n      let tagStartPos = i;\n      i++;\n      \n      if (xmlData[i] === '!') {\n        i = readCommentAndCDATA(xmlData, i);\n        continue;\n      } else {\n        let closingTag = false;\n        if (xmlData[i] === '/') {\n          //closing tag\n          closingTag = true;\n          i++;\n        }\n        //read tagname\n        let tagName = '';\n        for (; i < xmlData.length &&\n          xmlData[i] !== '>' &&\n          xmlData[i] !== ' ' &&\n          xmlData[i] !== '\\t' &&\n          xmlData[i] !== '\\n' &&\n          xmlData[i] !== '\\r'; i++\n        ) {\n          tagName += xmlData[i];\n        }\n        tagName = tagName.trim();\n        //console.log(tagName);\n\n        if (tagName[tagName.length - 1] === '/') {\n          //self closing tag without attributes\n          tagName = tagName.substring(0, tagName.length - 1);\n          //continue;\n          i--;\n        }\n        if (!validateTagName(tagName)) {\n          let msg;\n          if (tagName.trim().length === 0) {\n            msg = \"Invalid space after '<'.\";\n          } else {\n            msg = \"Tag '\"+tagName+\"' is an invalid name.\";\n          }\n          return getErrorObject('InvalidTag', msg, getLineNumberForPosition(xmlData, i));\n        }\n\n        const result = readAttributeStr(xmlData, i);\n        if (result === false) {\n          return getErrorObject('InvalidAttr', \"Attributes for '\"+tagName+\"' have open quote.\", getLineNumberForPosition(xmlData, i));\n        }\n        let attrStr = result.value;\n        i = result.index;\n\n        if (attrStr[attrStr.length - 1] === '/') {\n          //self closing tag\n          const attrStrStart = i - attrStr.length;\n          attrStr = attrStr.substring(0, attrStr.length - 1);\n          const isValid = validateAttributeString(attrStr, options);\n          if (isValid === true) {\n            tagFound = true;\n            //continue; //text may presents after self closing tag\n          } else {\n            //the result from the nested function returns the position of the error within the attribute\n            //in order to get the 'true' error line, we need to calculate the position where the attribute begins (i - attrStr.length) and then add the position within the attribute\n            //this gives us the absolute index in the entire xml, which we can use to find the line at last\n            return getErrorObject(isValid.err.code, isValid.err.msg, getLineNumberForPosition(xmlData, attrStrStart + isValid.err.line));\n          }\n        } else if (closingTag) {\n          if (!result.tagClosed) {\n            return getErrorObject('InvalidTag', \"Closing tag '\"+tagName+\"' doesn't have proper closing.\", getLineNumberForPosition(xmlData, i));\n          } else if (attrStr.trim().length > 0) {\n            return getErrorObject('InvalidTag', \"Closing tag '\"+tagName+\"' can't have attributes or invalid starting.\", getLineNumberForPosition(xmlData, tagStartPos));\n          } else if (tags.length === 0) {\n            return getErrorObject('InvalidTag', \"Closing tag '\"+tagName+\"' has not been opened.\", getLineNumberForPosition(xmlData, tagStartPos));\n          } else {\n            const otg = tags.pop();\n            if (tagName !== otg.tagName) {\n              let openPos = getLineNumberForPosition(xmlData, otg.tagStartPos);\n              return getErrorObject('InvalidTag',\n                \"Expected closing tag '\"+otg.tagName+\"' (opened in line \"+openPos.line+\", col \"+openPos.col+\") instead of closing tag '\"+tagName+\"'.\",\n                getLineNumberForPosition(xmlData, tagStartPos));\n            }\n\n            //when there are no more tags, we reached the root level.\n            if (tags.length == 0) {\n              reachedRoot = true;\n            }\n          }\n        } else {\n          const isValid = validateAttributeString(attrStr, options);\n          if (isValid !== true) {\n            //the result from the nested function returns the position of the error within the attribute\n            //in order to get the 'true' error line, we need to calculate the position where the attribute begins (i - attrStr.length) and then add the position within the attribute\n            //this gives us the absolute index in the entire xml, which we can use to find the line at last\n            return getErrorObject(isValid.err.code, isValid.err.msg, getLineNumberForPosition(xmlData, i - attrStr.length + isValid.err.line));\n          }\n\n          //if the root level has been reached before ...\n          if (reachedRoot === true) {\n            return getErrorObject('InvalidXml', 'Multiple possible root nodes found.', getLineNumberForPosition(xmlData, i));\n          } else if(options.unpairedTags.indexOf(tagName) !== -1){\n            //don't push into stack\n          } else {\n            tags.push({tagName, tagStartPos});\n          }\n          tagFound = true;\n        }\n\n        //skip tag text value\n        //It may include comments and CDATA value\n        for (i++; i < xmlData.length; i++) {\n          if (xmlData[i] === '<') {\n            if (xmlData[i + 1] === '!') {\n              //comment or CADATA\n              i++;\n              i = readCommentAndCDATA(xmlData, i);\n              continue;\n            } else if (xmlData[i+1] === '?') {\n              i = readPI(xmlData, ++i);\n              if (i.err) return i;\n            } else{\n              break;\n            }\n          } else if (xmlData[i] === '&') {\n            const afterAmp = validateAmpersand(xmlData, i);\n            if (afterAmp == -1)\n              return getErrorObject('InvalidChar', \"char '&' is not expected.\", getLineNumberForPosition(xmlData, i));\n            i = afterAmp;\n          }else{\n            if (reachedRoot === true && !isWhiteSpace(xmlData[i])) {\n              return getErrorObject('InvalidXml', \"Extra text at the end\", getLineNumberForPosition(xmlData, i));\n            }\n          }\n        } //end of reading tag text value\n        if (xmlData[i] === '<') {\n          i--;\n        }\n      }\n    } else {\n      if ( isWhiteSpace(xmlData[i])) {\n        continue;\n      }\n      return getErrorObject('InvalidChar', \"char '\"+xmlData[i]+\"' is not expected.\", getLineNumberForPosition(xmlData, i));\n    }\n  }\n\n  if (!tagFound) {\n    return getErrorObject('InvalidXml', 'Start tag expected.', 1);\n  }else if (tags.length == 1) {\n      return getErrorObject('InvalidTag', \"Unclosed tag '\"+tags[0].tagName+\"'.\", getLineNumberForPosition(xmlData, tags[0].tagStartPos));\n  }else if (tags.length > 0) {\n      return getErrorObject('InvalidXml', \"Invalid '\"+\n          JSON.stringify(tags.map(t => t.tagName), null, 4).replace(/\\r?\\n/g, '')+\n          \"' found.\", {line: 1, col: 1});\n  }\n\n  return true;\n};\n\nfunction isWhiteSpace(char){\n  return char === ' ' || char === '\\t' || char === '\\n'  || char === '\\r';\n}\n/**\n * Read Processing insstructions and skip\n * @param {*} xmlData\n * @param {*} i\n */\nfunction readPI(xmlData, i) {\n  const start = i;\n  for (; i < xmlData.length; i++) {\n    if (xmlData[i] == '?' || xmlData[i] == ' ') {\n      //tagname\n      const tagname = xmlData.substr(start, i - start);\n      if (i > 5 && tagname === 'xml') {\n        return getErrorObject('InvalidXml', 'XML declaration allowed only at the start of the document.', getLineNumberForPosition(xmlData, i));\n      } else if (xmlData[i] == '?' && xmlData[i + 1] == '>') {\n        //check if valid attribut string\n        i++;\n        break;\n      } else {\n        continue;\n      }\n    }\n  }\n  return i;\n}\n\nfunction readCommentAndCDATA(xmlData, i) {\n  if (xmlData.length > i + 5 && xmlData[i + 1] === '-' && xmlData[i + 2] === '-') {\n    //comment\n    for (i += 3; i < xmlData.length; i++) {\n      if (xmlData[i] === '-' && xmlData[i + 1] === '-' && xmlData[i + 2] === '>') {\n        i += 2;\n        break;\n      }\n    }\n  } else if (\n    xmlData.length > i + 8 &&\n    xmlData[i + 1] === 'D' &&\n    xmlData[i + 2] === 'O' &&\n    xmlData[i + 3] === 'C' &&\n    xmlData[i + 4] === 'T' &&\n    xmlData[i + 5] === 'Y' &&\n    xmlData[i + 6] === 'P' &&\n    xmlData[i + 7] === 'E'\n  ) {\n    let angleBracketsCount = 1;\n    for (i += 8; i < xmlData.length; i++) {\n      if (xmlData[i] === '<') {\n        angleBracketsCount++;\n      } else if (xmlData[i] === '>') {\n        angleBracketsCount--;\n        if (angleBracketsCount === 0) {\n          break;\n        }\n      }\n    }\n  } else if (\n    xmlData.length > i + 9 &&\n    xmlData[i + 1] === '[' &&\n    xmlData[i + 2] === 'C' &&\n    xmlData[i + 3] === 'D' &&\n    xmlData[i + 4] === 'A' &&\n    xmlData[i + 5] === 'T' &&\n    xmlData[i + 6] === 'A' &&\n    xmlData[i + 7] === '['\n  ) {\n    for (i += 8; i < xmlData.length; i++) {\n      if (xmlData[i] === ']' && xmlData[i + 1] === ']' && xmlData[i + 2] === '>') {\n        i += 2;\n        break;\n      }\n    }\n  }\n\n  return i;\n}\n\nconst doubleQuote = '\"';\nconst singleQuote = \"'\";\n\n/**\n * Keep reading xmlData until '<' is found outside the attribute value.\n * @param {string} xmlData\n * @param {number} i\n */\nfunction readAttributeStr(xmlData, i) {\n  let attrStr = '';\n  let startChar = '';\n  let tagClosed = false;\n  for (; i < xmlData.length; i++) {\n    if (xmlData[i] === doubleQuote || xmlData[i] === singleQuote) {\n      if (startChar === '') {\n        startChar = xmlData[i];\n      } else if (startChar !== xmlData[i]) {\n        //if vaue is enclosed with double quote then single quotes are allowed inside the value and vice versa\n      } else {\n        startChar = '';\n      }\n    } else if (xmlData[i] === '>') {\n      if (startChar === '') {\n        tagClosed = true;\n        break;\n      }\n    }\n    attrStr += xmlData[i];\n  }\n  if (startChar !== '') {\n    return false;\n  }\n\n  return {\n    value: attrStr,\n    index: i,\n    tagClosed: tagClosed\n  };\n}\n\n/**\n * Select all the attributes whether valid or invalid.\n */\nconst validAttrStrRegxp = new RegExp('(\\\\s*)([^\\\\s=]+)(\\\\s*=)?(\\\\s*([\\'\"])(([\\\\s\\\\S])*?)\\\\5)?', 'g');\n\n//attr, =\"sd\", a=\"amit's\", a=\"sd\"b=\"saf\", ab  cd=\"\"\n\nfunction validateAttributeString(attrStr, options) {\n  //console.log(\"start:\"+attrStr+\":end\");\n\n  //if(attrStr.trim().length === 0) return true; //empty string\n\n  const matches = getAllMatches(attrStr, validAttrStrRegxp);\n  const attrNames = {};\n\n  for (let i = 0; i < matches.length; i++) {\n    if (matches[i][1].length === 0) {\n      //nospace before attribute name: a=\"sd\"b=\"saf\"\n      return getErrorObject('InvalidAttr', \"Attribute '\"+matches[i][2]+\"' has no space in starting.\", getPositionFromMatch(matches[i]))\n    } else if (matches[i][3] !== undefined && matches[i][4] === undefined) {\n      return getErrorObject('InvalidAttr', \"Attribute '\"+matches[i][2]+\"' is without value.\", getPositionFromMatch(matches[i]));\n    } else if (matches[i][3] === undefined && !options.allowBooleanAttributes) {\n      //independent attribute: ab\n      return getErrorObject('InvalidAttr', \"boolean attribute '\"+matches[i][2]+\"' is not allowed.\", getPositionFromMatch(matches[i]));\n    }\n    /* else if(matches[i][6] === undefined){//attribute without value: ab=\n                    return { err: { code:\"InvalidAttr\",msg:\"attribute \" + matches[i][2] + \" has no value assigned.\"}};\n                } */\n    const attrName = matches[i][2];\n    if (!validateAttrName(attrName)) {\n      return getErrorObject('InvalidAttr', \"Attribute '\"+attrName+\"' is an invalid name.\", getPositionFromMatch(matches[i]));\n    }\n    if (!attrNames.hasOwnProperty(attrName)) {\n      //check for duplicate attribute.\n      attrNames[attrName] = 1;\n    } else {\n      return getErrorObject('InvalidAttr', \"Attribute '\"+attrName+\"' is repeated.\", getPositionFromMatch(matches[i]));\n    }\n  }\n\n  return true;\n}\n\nfunction validateNumberAmpersand(xmlData, i) {\n  let re = /\\d/;\n  if (xmlData[i] === 'x') {\n    i++;\n    re = /[\\da-fA-F]/;\n  }\n  for (; i < xmlData.length; i++) {\n    if (xmlData[i] === ';')\n      return i;\n    if (!xmlData[i].match(re))\n      break;\n  }\n  return -1;\n}\n\nfunction validateAmpersand(xmlData, i) {\n  // https://www.w3.org/TR/xml/#dt-charref\n  i++;\n  if (xmlData[i] === ';')\n    return -1;\n  if (xmlData[i] === '#') {\n    i++;\n    return validateNumberAmpersand(xmlData, i);\n  }\n  let count = 0;\n  for (; i < xmlData.length; i++, count++) {\n    if (xmlData[i].match(/\\w/) && count < 20)\n      continue;\n    if (xmlData[i] === ';')\n      break;\n    return -1;\n  }\n  return i;\n}\n\nfunction getErrorObject(code, message, lineNumber) {\n  return {\n    err: {\n      code: code,\n      msg: message,\n      line: lineNumber.line || lineNumber,\n      col: lineNumber.col,\n    },\n  };\n}\n\nfunction validateAttrName(attrName) {\n  return isName(attrName);\n}\n\n// const startsWithXML = /^xml/i;\n\nfunction validateTagName(tagname) {\n  return isName(tagname) /* && !tagname.match(startsWithXML) */;\n}\n\n//this function returns the line number for the character at the given index\nfunction getLineNumberForPosition(xmlData, index) {\n  const lines = xmlData.substring(0, index).split(/\\r?\\n/);\n  return {\n    line: lines.length,\n\n    // column number is last line's length + 1, because column numbering starts at 1:\n    col: lines[lines.length - 1].length + 1\n  };\n}\n\n//this function returns the position of the first character of match within attrStr\nfunction getPositionFromMatch(match) {\n  return match.startIndex + match[1].length;\n}\n","'use strict';\n//parse Empty Node as self closing node\nimport buildFromOrderedJs from './orderedJs2Xml.js';\nimport getIgnoreAttributesFn from \"../ignoreAttributes.js\";\n\nconst defaultOptions = {\n  attributeNamePrefix: '@_',\n  attributesGroupName: false,\n  textNodeName: '#text',\n  ignoreAttributes: true,\n  cdataPropName: false,\n  format: false,\n  indentBy: '  ',\n  suppressEmptyNode: false,\n  suppressUnpairedNode: true,\n  suppressBooleanAttributes: true,\n  tagValueProcessor: function(key, a) {\n    return a;\n  },\n  attributeValueProcessor: function(attrName, a) {\n    return a;\n  },\n  preserveOrder: false,\n  commentPropName: false,\n  unpairedTags: [],\n  entities: [\n    { regex: new RegExp(\"&\", \"g\"), val: \"&\" },//it must be on top\n    { regex: new RegExp(\">\", \"g\"), val: \">\" },\n    { regex: new RegExp(\"<\", \"g\"), val: \"<\" },\n    { regex: new RegExp(\"\\'\", \"g\"), val: \"'\" },\n    { regex: new RegExp(\"\\\"\", \"g\"), val: \""\" }\n  ],\n  processEntities: true,\n  stopNodes: [],\n  // transformTagName: false,\n  // transformAttributeName: false,\n  oneListGroup: false\n};\n\nexport default function Builder(options) {\n  this.options = Object.assign({}, defaultOptions, options);\n  if (this.options.ignoreAttributes === true || this.options.attributesGroupName) {\n    this.isAttribute = function(/*a*/) {\n      return false;\n    };\n  } else {\n    this.ignoreAttributesFn = getIgnoreAttributesFn(this.options.ignoreAttributes)\n    this.attrPrefixLen = this.options.attributeNamePrefix.length;\n    this.isAttribute = isAttribute;\n  }\n\n  this.processTextOrObjNode = processTextOrObjNode\n\n  if (this.options.format) {\n    this.indentate = indentate;\n    this.tagEndChar = '>\\n';\n    this.newLine = '\\n';\n  } else {\n    this.indentate = function() {\n      return '';\n    };\n    this.tagEndChar = '>';\n    this.newLine = '';\n  }\n}\n\nBuilder.prototype.build = function(jObj) {\n  if(this.options.preserveOrder){\n    return buildFromOrderedJs(jObj, this.options);\n  }else {\n    if(Array.isArray(jObj) && this.options.arrayNodeName && this.options.arrayNodeName.length > 1){\n      jObj = {\n        [this.options.arrayNodeName] : jObj\n      }\n    }\n    return this.j2x(jObj, 0, []).val;\n  }\n};\n\nBuilder.prototype.j2x = function(jObj, level, ajPath) {\n  let attrStr = '';\n  let val = '';\n  const jPath = ajPath.join('.')\n  for (let key in jObj) {\n    if(!Object.prototype.hasOwnProperty.call(jObj, key)) continue;\n    if (typeof jObj[key] === 'undefined') {\n      // supress undefined node only if it is not an attribute\n      if (this.isAttribute(key)) {\n        val += '';\n      }\n    } else if (jObj[key] === null) {\n      // null attribute should be ignored by the attribute list, but should not cause the tag closing\n      if (this.isAttribute(key)) {\n        val += '';\n      } else if (key === this.options.cdataPropName) {\n        val += '';\n      } else if (key[0] === '?') {\n        val += this.indentate(level) + '<' + key + '?' + this.tagEndChar;\n      } else {\n        val += this.indentate(level) + '<' + key + '/' + this.tagEndChar;\n      }\n      // val += this.indentate(level) + '<' + key + '/' + this.tagEndChar;\n    } else if (jObj[key] instanceof Date) {\n      val += this.buildTextValNode(jObj[key], key, '', level);\n    } else if (typeof jObj[key] !== 'object') {\n      //premitive type\n      const attr = this.isAttribute(key);\n      if (attr && !this.ignoreAttributesFn(attr, jPath)) {\n        attrStr += this.buildAttrPairStr(attr, '' + jObj[key]);\n      } else if (!attr) {\n        //tag value\n        if (key === this.options.textNodeName) {\n          let newval = this.options.tagValueProcessor(key, '' + jObj[key]);\n          val += this.replaceEntitiesValue(newval);\n        } else {\n          val += this.buildTextValNode(jObj[key], key, '', level);\n        }\n      }\n    } else if (Array.isArray(jObj[key])) {\n      //repeated nodes\n      const arrLen = jObj[key].length;\n      let listTagVal = \"\";\n      let listTagAttr = \"\";\n      for (let j = 0; j < arrLen; j++) {\n        const item = jObj[key][j];\n        if (typeof item === 'undefined') {\n          // supress undefined node\n        } else if (item === null) {\n          if(key[0] === \"?\") val += this.indentate(level) + '<' + key + '?' + this.tagEndChar;\n          else val += this.indentate(level) + '<' + key + '/' + this.tagEndChar;\n          // val += this.indentate(level) + '<' + key + '/' + this.tagEndChar;\n        } else if (typeof item === 'object') {\n          if(this.options.oneListGroup){\n            const result = this.j2x(item, level + 1, ajPath.concat(key));\n            listTagVal += result.val;\n            if (this.options.attributesGroupName && item.hasOwnProperty(this.options.attributesGroupName)) {\n              listTagAttr += result.attrStr\n            }\n          }else{\n            listTagVal += this.processTextOrObjNode(item, key, level, ajPath)\n          }\n        } else {\n          if (this.options.oneListGroup) {\n            let textValue = this.options.tagValueProcessor(key, item);\n            textValue = this.replaceEntitiesValue(textValue);\n            listTagVal += textValue;\n          } else {\n            listTagVal += this.buildTextValNode(item, key, '', level);\n          }\n        }\n      }\n      if(this.options.oneListGroup){\n        listTagVal = this.buildObjectNode(listTagVal, key, listTagAttr, level);\n      }\n      val += listTagVal;\n    } else {\n      //nested node\n      if (this.options.attributesGroupName && key === this.options.attributesGroupName) {\n        const Ks = Object.keys(jObj[key]);\n        const L = Ks.length;\n        for (let j = 0; j < L; j++) {\n          attrStr += this.buildAttrPairStr(Ks[j], '' + jObj[key][Ks[j]]);\n        }\n      } else {\n        val += this.processTextOrObjNode(jObj[key], key, level, ajPath)\n      }\n    }\n  }\n  return {attrStr: attrStr, val: val};\n};\n\nBuilder.prototype.buildAttrPairStr = function(attrName, val){\n  val = this.options.attributeValueProcessor(attrName, '' + val);\n  val = this.replaceEntitiesValue(val);\n  if (this.options.suppressBooleanAttributes && val === \"true\") {\n    return ' ' + attrName;\n  } else return ' ' + attrName + '=\"' + val + '\"';\n}\n\nfunction processTextOrObjNode (object, key, level, ajPath) {\n  const result = this.j2x(object, level + 1, ajPath.concat(key));\n  if (object[this.options.textNodeName] !== undefined && Object.keys(object).length === 1) {\n    return this.buildTextValNode(object[this.options.textNodeName], key, result.attrStr, level);\n  } else {\n    return this.buildObjectNode(result.val, key, result.attrStr, level);\n  }\n}\n\nBuilder.prototype.buildObjectNode = function(val, key, attrStr, level) {\n  if(val === \"\"){\n    if(key[0] === \"?\") return  this.indentate(level) + '<' + key + attrStr+ '?' + this.tagEndChar;\n    else {\n      return this.indentate(level) + '<' + key + attrStr + this.closeTag(key) + this.tagEndChar;\n    }\n  }else{\n\n    let tagEndExp = '' + val + tagEndExp );\n    } else if (this.options.commentPropName !== false && key === this.options.commentPropName && piClosingChar.length === 0) {\n      return this.indentate(level) + `` + this.newLine;\n    }else {\n      return (\n        this.indentate(level) + '<' + key + attrStr + piClosingChar + this.tagEndChar +\n        val +\n        this.indentate(level) + tagEndExp    );\n    }\n  }\n}\n\nBuilder.prototype.closeTag = function(key){\n  let closeTag = \"\";\n  if(this.options.unpairedTags.indexOf(key) !== -1){ //unpaired\n    if(!this.options.suppressUnpairedNode) closeTag = \"/\"\n  }else if(this.options.suppressEmptyNode){ //empty\n    closeTag = \"/\";\n  }else{\n    closeTag = `>` +  this.newLine;\n  }else if (this.options.commentPropName !== false && key === this.options.commentPropName) {\n    return this.indentate(level) + `` +  this.newLine;\n  }else if(key[0] === \"?\") {//PI tag\n    return  this.indentate(level) + '<' + key + attrStr+ '?' + this.tagEndChar; \n  }else{\n    let textValue = this.options.tagValueProcessor(key, val);\n    textValue = this.replaceEntitiesValue(textValue);\n  \n    if( textValue === ''){\n      return this.indentate(level) + '<' + key + attrStr + this.closeTag(key) + this.tagEndChar;\n    }else{\n      return this.indentate(level) + '<' + key + attrStr + '>' +\n         textValue +\n        ' 0 && this.options.processEntities){\n    for (let i=0; i 0) {\n        indentation = EOL;\n    }\n    return arrToStr(jArray, options, \"\", indentation);\n}\n\nfunction arrToStr(arr, options, jPath, indentation) {\n    let xmlStr = \"\";\n    let isPreviousElementTag = false;\n\n    for (let i = 0; i < arr.length; i++) {\n        const tagObj = arr[i];\n        const tagName = propName(tagObj);\n        if(tagName === undefined) continue;\n\n        let newJPath = \"\";\n        if (jPath.length === 0) newJPath = tagName\n        else newJPath = `${jPath}.${tagName}`;\n\n        if (tagName === options.textNodeName) {\n            let tagText = tagObj[tagName];\n            if (!isStopNode(newJPath, options)) {\n                tagText = options.tagValueProcessor(tagName, tagText);\n                tagText = replaceEntitiesValue(tagText, options);\n            }\n            if (isPreviousElementTag) {\n                xmlStr += indentation;\n            }\n            xmlStr += tagText;\n            isPreviousElementTag = false;\n            continue;\n        } else if (tagName === options.cdataPropName) {\n            if (isPreviousElementTag) {\n                xmlStr += indentation;\n            }\n            xmlStr += ``;\n            isPreviousElementTag = false;\n            continue;\n        } else if (tagName === options.commentPropName) {\n            xmlStr += indentation + ``;\n            isPreviousElementTag = true;\n            continue;\n        } else if (tagName[0] === \"?\") {\n            const attStr = attr_to_str(tagObj[\":@\"], options);\n            const tempInd = tagName === \"?xml\" ? \"\" : indentation;\n            let piTextNodeName = tagObj[tagName][0][options.textNodeName];\n            piTextNodeName = piTextNodeName.length !== 0 ? \" \" + piTextNodeName : \"\"; //remove extra spacing\n            xmlStr += tempInd + `<${tagName}${piTextNodeName}${attStr}?>`;\n            isPreviousElementTag = true;\n            continue;\n        }\n        let newIdentation = indentation;\n        if (newIdentation !== \"\") {\n            newIdentation += options.indentBy;\n        }\n        const attStr = attr_to_str(tagObj[\":@\"], options);\n        const tagStart = indentation + `<${tagName}${attStr}`;\n        const tagValue = arrToStr(tagObj[tagName], options, newJPath, newIdentation);\n        if (options.unpairedTags.indexOf(tagName) !== -1) {\n            if (options.suppressUnpairedNode) xmlStr += tagStart + \">\";\n            else xmlStr += tagStart + \"/>\";\n        } else if ((!tagValue || tagValue.length === 0) && options.suppressEmptyNode) {\n            xmlStr += tagStart + \"/>\";\n        } else if (tagValue && tagValue.endsWith(\">\")) {\n            xmlStr += tagStart + `>${tagValue}${indentation}`;\n        } else {\n            xmlStr += tagStart + \">\";\n            if (tagValue && indentation !== \"\" && (tagValue.includes(\"/>\") || tagValue.includes(\"`;\n        }\n        isPreviousElementTag = true;\n    }\n\n    return xmlStr;\n}\n\nfunction propName(obj) {\n    const keys = Object.keys(obj);\n    for (let i = 0; i < keys.length; i++) {\n        const key = keys[i];\n        if(!obj.hasOwnProperty(key)) continue;\n        if (key !== \":@\") return key;\n    }\n}\n\nfunction attr_to_str(attrMap, options) {\n    let attrStr = \"\";\n    if (attrMap && !options.ignoreAttributes) {\n        for (let attr in attrMap) {\n            if(!attrMap.hasOwnProperty(attr)) continue;\n            let attrVal = options.attributeValueProcessor(attr, attrMap[attr]);\n            attrVal = replaceEntitiesValue(attrVal, options);\n            if (attrVal === true && options.suppressBooleanAttributes) {\n                attrStr += ` ${attr.substr(options.attributeNamePrefix.length)}`;\n            } else {\n                attrStr += ` ${attr.substr(options.attributeNamePrefix.length)}=\"${attrVal}\"`;\n            }\n        }\n    }\n    return attrStr;\n}\n\nfunction isStopNode(jPath, options) {\n    jPath = jPath.substr(0, jPath.length - options.textNodeName.length - 1);\n    let tagName = jPath.substr(jPath.lastIndexOf(\".\") + 1);\n    for (let index in options.stopNodes) {\n        if (options.stopNodes[index] === jPath || options.stopNodes[index] === \"*.\" + tagName) return true;\n    }\n    return false;\n}\n\nfunction replaceEntitiesValue(textValue, options) {\n    if (textValue && textValue.length > 0 && options.processEntities) {\n        for (let i = 0; i < options.entities.length; i++) {\n            const entity = options.entities[i];\n            textValue = textValue.replace(entity.regex, entity.val);\n        }\n    }\n    return textValue;\n}\n","import {isName} from '../util.js';\n\nexport default class DocTypeReader{\n    constructor(processEntities){\n        this.suppressValidationErr = !processEntities;\n    }\n    \n    readDocType(xmlData, i){\n    \n        const entities = {};\n        if( xmlData[i + 3] === 'O' &&\n            xmlData[i + 4] === 'C' &&\n            xmlData[i + 5] === 'T' &&\n            xmlData[i + 6] === 'Y' &&\n            xmlData[i + 7] === 'P' &&\n            xmlData[i + 8] === 'E')\n        {    \n            i = i+9;\n            let angleBracketsCount = 1;\n            let hasBody = false, comment = false;\n            let exp = \"\";\n            for(;i') { //Read tag content\n                    if(comment){\n                        if( xmlData[i - 1] === \"-\" && xmlData[i - 2] === \"-\"){\n                            comment = false;\n                            angleBracketsCount--;\n                        }\n                    }else{\n                        angleBracketsCount--;\n                    }\n                    if (angleBracketsCount === 0) {\n                    break;\n                    }\n                }else if( xmlData[i] === '['){\n                    hasBody = true;\n                }else{\n                    exp += xmlData[i];\n                }\n            }\n            if(angleBracketsCount !== 0){\n                throw new Error(`Unclosed DOCTYPE`);\n            }\n        }else{\n            throw new Error(`Invalid Tag instead of DOCTYPE`);\n        }\n        return {entities, i};\n    }\n    readEntityExp(xmlData, i) {    \n        //External entities are not supported\n        //    \n\n        //Parameter entities are not supported\n        //    \n\n        //Internal entities are supported\n        //    \n\n        // Skip leading whitespace after \n        // \n        // \n        // \n        // \n        \n        // Skip leading whitespace after  {\n    while (index < data.length && /\\s/.test(data[index])) {\n        index++;\n    }\n    return index;\n};\n\n\n\nfunction hasSeq(data, seq,i){\n    for(let j=0;j false,\n    commentPropName: false,\n    unpairedTags: [],\n    processEntities: true,\n    htmlEntities: false,\n    ignoreDeclaration: false,\n    ignorePiTags: false,\n    transformTagName: false,\n    transformAttributeName: false,\n    updateTag: function(tagName, jPath, attrs){\n      return tagName\n    },\n    // skipEmptyListItem: false\n    captureMetaData: false,\n};\n   \nexport const buildOptions = function(options) {\n    return Object.assign({}, defaultOptions, options);\n};\n","'use strict';\n///@ts-check\n\nimport {getAllMatches, isExist} from '../util.js';\nimport xmlNode from './xmlNode.js';\nimport DocTypeReader from './DocTypeReader.js';\nimport toNumber from \"strnum\";\nimport getIgnoreAttributesFn from \"../ignoreAttributes.js\";\n\n// const regx =\n//   '<((!\\\\[CDATA\\\\[([\\\\s\\\\S]*?)(]]>))|((NAME:)?(NAME))([^>]*)>|((\\\\/)(NAME)\\\\s*>))([^<]*)'\n//   .replace(/NAME/g, util.nameRegexp);\n\n//const tagsRegx = new RegExp(\"<(\\\\/?[\\\\w:\\\\-\\._]+)([^>]*)>(\\\\s*\"+cdataRegx+\")*([^<]+)?\",\"g\");\n//const tagsRegx = new RegExp(\"<(\\\\/?)((\\\\w*:)?([\\\\w:\\\\-\\._]+))([^>]*)>([^<]*)(\"+cdataRegx+\"([^<]*))*([^<]+)?\",\"g\");\n\nexport default class OrderedObjParser{\n  constructor(options){\n    this.options = options;\n    this.currentNode = null;\n    this.tagsNodeStack = [];\n    this.docTypeEntities = {};\n    this.lastEntities = {\n      \"apos\" : { regex: /&(apos|#39|#x27);/g, val : \"'\"},\n      \"gt\" : { regex: /&(gt|#62|#x3E);/g, val : \">\"},\n      \"lt\" : { regex: /&(lt|#60|#x3C);/g, val : \"<\"},\n      \"quot\" : { regex: /&(quot|#34|#x22);/g, val : \"\\\"\"},\n    };\n    this.ampEntity = { regex: /&(amp|#38|#x26);/g, val : \"&\"};\n    this.htmlEntities = {\n      \"space\": { regex: /&(nbsp|#160);/g, val: \" \" },\n      // \"lt\" : { regex: /&(lt|#60);/g, val: \"<\" },\n      // \"gt\" : { regex: /&(gt|#62);/g, val: \">\" },\n      // \"amp\" : { regex: /&(amp|#38);/g, val: \"&\" },\n      // \"quot\" : { regex: /&(quot|#34);/g, val: \"\\\"\" },\n      // \"apos\" : { regex: /&(apos|#39);/g, val: \"'\" },\n      \"cent\" : { regex: /&(cent|#162);/g, val: \"¢\" },\n      \"pound\" : { regex: /&(pound|#163);/g, val: \"£\" },\n      \"yen\" : { regex: /&(yen|#165);/g, val: \"¥\" },\n      \"euro\" : { regex: /&(euro|#8364);/g, val: \"€\" },\n      \"copyright\" : { regex: /&(copy|#169);/g, val: \"©\" },\n      \"reg\" : { regex: /&(reg|#174);/g, val: \"®\" },\n      \"inr\" : { regex: /&(inr|#8377);/g, val: \"₹\" },\n      \"num_dec\": { regex: /&#([0-9]{1,7});/g, val : (_, str) => fromCodePoint(str, 10, \"&#\") },\n      \"num_hex\": { regex: /&#x([0-9a-fA-F]{1,6});/g, val : (_, str) => fromCodePoint(str, 16, \"&#x\") },\n    };\n    this.addExternalEntities = addExternalEntities;\n    this.parseXml = parseXml;\n    this.parseTextData = parseTextData;\n    this.resolveNameSpace = resolveNameSpace;\n    this.buildAttributesMap = buildAttributesMap;\n    this.isItStopNode = isItStopNode;\n    this.replaceEntitiesValue = replaceEntitiesValue;\n    this.readStopNodeData = readStopNodeData;\n    this.saveTextToParentTag = saveTextToParentTag;\n    this.addChild = addChild;\n    this.ignoreAttributesFn = getIgnoreAttributesFn(this.options.ignoreAttributes)\n\n    if(this.options.stopNodes && this.options.stopNodes.length > 0){\n      this.stopNodesExact = new Set();\n      this.stopNodesWildcard = new Set();\n      for(let i = 0; i < this.options.stopNodes.length; i++){\n        const stopNodeExp = this.options.stopNodes[i];\n        if(typeof stopNodeExp !== 'string') continue;\n        if(stopNodeExp.startsWith(\"*.\")){\n          this.stopNodesWildcard.add(stopNodeExp.substring(2));\n        }else{\n          this.stopNodesExact.add(stopNodeExp);\n        }\n      }\n    }\n  }\n\n}\n\nfunction addExternalEntities(externalEntities){\n  const entKeys = Object.keys(externalEntities);\n  for (let i = 0; i < entKeys.length; i++) {\n    const ent = entKeys[i];\n    this.lastEntities[ent] = {\n       regex: new RegExp(\"&\"+ent+\";\",\"g\"),\n       val : externalEntities[ent]\n    }\n  }\n}\n\n/**\n * @param {string} val\n * @param {string} tagName\n * @param {string} jPath\n * @param {boolean} dontTrim\n * @param {boolean} hasAttributes\n * @param {boolean} isLeafNode\n * @param {boolean} escapeEntities\n */\nfunction parseTextData(val, tagName, jPath, dontTrim, hasAttributes, isLeafNode, escapeEntities) {\n  if (val !== undefined) {\n    if (this.options.trimValues && !dontTrim) {\n      val = val.trim();\n    }\n    if(val.length > 0){\n      if(!escapeEntities) val = this.replaceEntitiesValue(val);\n      \n      const newval = this.options.tagValueProcessor(tagName, val, jPath, hasAttributes, isLeafNode);\n      if(newval === null || newval === undefined){\n        //don't parse\n        return val;\n      }else if(typeof newval !== typeof val || newval !== val){\n        //overwrite\n        return newval;\n      }else if(this.options.trimValues){\n        return parseValue(val, this.options.parseTagValue, this.options.numberParseOptions);\n      }else{\n        const trimmedVal = val.trim();\n        if(trimmedVal === val){\n          return parseValue(val, this.options.parseTagValue, this.options.numberParseOptions);\n        }else{\n          return val;\n        }\n      }\n    }\n  }\n}\n\nfunction resolveNameSpace(tagname) {\n  if (this.options.removeNSPrefix) {\n    const tags = tagname.split(':');\n    const prefix = tagname.charAt(0) === '/' ? '/' : '';\n    if (tags[0] === 'xmlns') {\n      return '';\n    }\n    if (tags.length === 2) {\n      tagname = prefix + tags[1];\n    }\n  }\n  return tagname;\n}\n\n//TODO: change regex to capture NS\n//const attrsRegx = new RegExp(\"([\\\\w\\\\-\\\\.\\\\:]+)\\\\s*=\\\\s*(['\\\"])((.|\\n)*?)\\\\2\",\"gm\");\nconst attrsRegx = new RegExp('([^\\\\s=]+)\\\\s*(=\\\\s*([\\'\"])([\\\\s\\\\S]*?)\\\\3)?', 'gm');\n\nfunction buildAttributesMap(attrStr, jPath) {\n  if (this.options.ignoreAttributes !== true && typeof attrStr === 'string') {\n    // attrStr = attrStr.replace(/\\r?\\n/g, ' ');\n    //attrStr = attrStr || attrStr.trim();\n\n    const matches = getAllMatches(attrStr, attrsRegx);\n    const len = matches.length; //don't make it inline\n    const attrs = {};\n    for (let i = 0; i < len; i++) {\n      const attrName = this.resolveNameSpace(matches[i][1]);\n      if (this.ignoreAttributesFn(attrName, jPath)) {\n        continue\n      }\n      let oldVal = matches[i][4];\n      let aName = this.options.attributeNamePrefix + attrName;\n      if (attrName.length) {\n        if (this.options.transformAttributeName) {\n          aName = this.options.transformAttributeName(aName);\n        }\n        if(aName === \"__proto__\") aName  = \"#__proto__\";\n        if (oldVal !== undefined) {\n          if (this.options.trimValues) {\n            oldVal = oldVal.trim();\n          }\n          oldVal = this.replaceEntitiesValue(oldVal);\n          const newVal = this.options.attributeValueProcessor(attrName, oldVal, jPath);\n          if(newVal === null || newVal === undefined){\n            //don't parse\n            attrs[aName] = oldVal;\n          }else if(typeof newVal !== typeof oldVal || newVal !== oldVal){\n            //overwrite\n            attrs[aName] = newVal;\n          }else{\n            //parse\n            attrs[aName] = parseValue(\n              oldVal,\n              this.options.parseAttributeValue,\n              this.options.numberParseOptions\n            );\n          }\n        } else if (this.options.allowBooleanAttributes) {\n          attrs[aName] = true;\n        }\n      }\n    }\n    if (!Object.keys(attrs).length) {\n      return;\n    }\n    if (this.options.attributesGroupName) {\n      const attrCollection = {};\n      attrCollection[this.options.attributesGroupName] = attrs;\n      return attrCollection;\n    }\n    return attrs\n  }\n}\n\nconst parseXml = function(xmlData) {\n  xmlData = xmlData.replace(/\\r\\n?/g, \"\\n\"); //TODO: remove this line\n  const xmlObj = new xmlNode('!xml');\n  let currentNode = xmlObj;\n  let textData = \"\";\n  let jPath = \"\";\n  const docTypeReader = new DocTypeReader(this.options.processEntities);\n  for(let i=0; i< xmlData.length; i++){//for each char in XML data\n    const ch = xmlData[i];\n    if(ch === '<'){\n      // const nextIndex = i+1;\n      // const _2ndChar = xmlData[nextIndex];\n      if( xmlData[i+1] === '/') {//Closing Tag\n        const closeIndex = findClosingIndex(xmlData, \">\", i, \"Closing Tag is not closed.\")\n        let tagName = xmlData.substring(i+2,closeIndex).trim();\n\n        if(this.options.removeNSPrefix){\n          const colonIndex = tagName.indexOf(\":\");\n          if(colonIndex !== -1){\n            tagName = tagName.substr(colonIndex+1);\n          }\n        }\n\n        if(this.options.transformTagName) {\n          tagName = this.options.transformTagName(tagName);\n        }\n\n        if(currentNode){\n          textData = this.saveTextToParentTag(textData, currentNode, jPath);\n        }\n\n        //check if last tag of nested tag was unpaired tag\n        const lastTagName = jPath.substring(jPath.lastIndexOf(\".\")+1);\n        if(tagName && this.options.unpairedTags.indexOf(tagName) !== -1 ){\n          throw new Error(`Unpaired tag can not be used as closing tag: `);\n        }\n        let propIndex = 0\n        if(lastTagName && this.options.unpairedTags.indexOf(lastTagName) !== -1 ){\n          propIndex = jPath.lastIndexOf('.', jPath.lastIndexOf('.')-1)\n          this.tagsNodeStack.pop();\n        }else{\n          propIndex = jPath.lastIndexOf(\".\");\n        }\n        jPath = jPath.substring(0, propIndex);\n\n        currentNode = this.tagsNodeStack.pop();//avoid recursion, set the parent tag scope\n        textData = \"\";\n        i = closeIndex;\n      } else if( xmlData[i+1] === '?') {\n\n        let tagData = readTagExp(xmlData,i, false, \"?>\");\n        if(!tagData) throw new Error(\"Pi Tag is not closed.\");\n\n        textData = this.saveTextToParentTag(textData, currentNode, jPath);\n        if( (this.options.ignoreDeclaration && tagData.tagName === \"?xml\") || this.options.ignorePiTags){\n          //do nothing\n        }else{\n  \n          const childNode = new xmlNode(tagData.tagName);\n          childNode.add(this.options.textNodeName, \"\");\n          \n          if(tagData.tagName !== tagData.tagExp && tagData.attrExpPresent){\n            childNode[\":@\"] = this.buildAttributesMap(tagData.tagExp, jPath);\n          }\n          this.addChild(currentNode, childNode, jPath, i);\n        }\n\n\n        i = tagData.closeIndex + 1;\n      } else if(xmlData.substr(i + 1, 3) === '!--') {\n        const endIndex = findClosingIndex(xmlData, \"-->\", i+4, \"Comment is not closed.\")\n        if(this.options.commentPropName){\n          const comment = xmlData.substring(i + 4, endIndex - 2);\n\n          textData = this.saveTextToParentTag(textData, currentNode, jPath);\n\n          currentNode.add(this.options.commentPropName, [ { [this.options.textNodeName] : comment } ]);\n        }\n        i = endIndex;\n      } else if( xmlData.substr(i + 1, 2) === '!D') {\n        const result = docTypeReader.readDocType(xmlData, i);\n        this.docTypeEntities = result.entities;\n        i = result.i;\n      }else if(xmlData.substr(i + 1, 2) === '![') {\n        const closeIndex = findClosingIndex(xmlData, \"]]>\", i, \"CDATA is not closed.\") - 2;\n        const tagExp = xmlData.substring(i + 9,closeIndex);\n\n        textData = this.saveTextToParentTag(textData, currentNode, jPath);\n\n        let val = this.parseTextData(tagExp, currentNode.tagname, jPath, true, false, true, true);\n        if(val == undefined) val = \"\";\n\n        //cdata should be set even if it is 0 length string\n        if(this.options.cdataPropName){\n          currentNode.add(this.options.cdataPropName, [ { [this.options.textNodeName] : tagExp } ]);\n        }else{\n          currentNode.add(this.options.textNodeName, val);\n        }\n        \n        i = closeIndex + 2;\n      }else {//Opening tag\n        let result = readTagExp(xmlData,i, this.options.removeNSPrefix);\n        let tagName= result.tagName;\n        const rawTagName = result.rawTagName;\n        let tagExp = result.tagExp;\n        let attrExpPresent = result.attrExpPresent;\n        let closeIndex = result.closeIndex;\n\n        if (this.options.transformTagName) {\n          //console.log(tagExp, tagName)\n          const newTagName = this.options.transformTagName(tagName);\n          if(tagExp === tagName) {\n            tagExp = newTagName\n          }\n          tagName = newTagName;\n        }\n        \n        //save text as child node\n        if (currentNode && textData) {\n          if(currentNode.tagname !== '!xml'){\n            //when nested tag is found\n            textData = this.saveTextToParentTag(textData, currentNode, jPath, false);\n          }\n        }\n\n        //check if last tag was unpaired tag\n        const lastTag = currentNode;\n        if(lastTag && this.options.unpairedTags.indexOf(lastTag.tagname) !== -1 ){\n          currentNode = this.tagsNodeStack.pop();\n          jPath = jPath.substring(0, jPath.lastIndexOf(\".\"));\n        }\n        if(tagName !== xmlObj.tagname){\n          jPath += jPath ? \".\" + tagName : tagName;\n        }\n        const startIndex = i;\n        if (this.isItStopNode(this.stopNodesExact, this.stopNodesWildcard, jPath, tagName)) {\n          let tagContent = \"\";\n          //self-closing tag\n          if(tagExp.length > 0 && tagExp.lastIndexOf(\"/\") === tagExp.length - 1){\n            if(tagName[tagName.length - 1] === \"/\"){ //remove trailing '/'\n              tagName = tagName.substr(0, tagName.length - 1);\n              jPath = jPath.substr(0, jPath.length - 1);\n              tagExp = tagName;\n            }else{\n              tagExp = tagExp.substr(0, tagExp.length - 1);\n            }\n            i = result.closeIndex;\n          }\n          //unpaired tag\n          else if(this.options.unpairedTags.indexOf(tagName) !== -1){\n            \n            i = result.closeIndex;\n          }\n          //normal tag\n          else{\n            //read until closing tag is found\n            const result = this.readStopNodeData(xmlData, rawTagName, closeIndex + 1);\n            if(!result) throw new Error(`Unexpected end of ${rawTagName}`);\n            i = result.i;\n            tagContent = result.tagContent;\n          }\n\n          const childNode = new xmlNode(tagName);\n\n          if(tagName !== tagExp && attrExpPresent){\n            childNode[\":@\"] = this.buildAttributesMap(tagExp, jPath\n            );\n          }\n          if(tagContent) {\n            tagContent = this.parseTextData(tagContent, tagName, jPath, true, attrExpPresent, true, true);\n          }\n          \n          jPath = jPath.substr(0, jPath.lastIndexOf(\".\"));\n          childNode.add(this.options.textNodeName, tagContent);\n          \n          this.addChild(currentNode, childNode, jPath, startIndex);\n        }else{\n  //selfClosing tag\n          if(tagExp.length > 0 && tagExp.lastIndexOf(\"/\") === tagExp.length - 1){\n            if(tagName[tagName.length - 1] === \"/\"){ //remove trailing '/'\n              tagName = tagName.substr(0, tagName.length - 1);\n              jPath = jPath.substr(0, jPath.length - 1);\n              tagExp = tagName;\n            }else{\n              tagExp = tagExp.substr(0, tagExp.length - 1);\n            }\n            \n            if(this.options.transformTagName) {\n              const newTagName = this.options.transformTagName(tagName);\n              if(tagExp === tagName) {\n                tagExp = newTagName\n              }\n              tagName = newTagName;\n            }\n\n            const childNode = new xmlNode(tagName);\n            if(tagName !== tagExp && attrExpPresent){\n              childNode[\":@\"] = this.buildAttributesMap(tagExp, jPath);\n            }\n            this.addChild(currentNode, childNode, jPath, startIndex);\n            jPath = jPath.substr(0, jPath.lastIndexOf(\".\"));\n          }\n    //opening tag\n          else{\n            const childNode = new xmlNode( tagName);\n            this.tagsNodeStack.push(currentNode);\n            \n            if(tagName !== tagExp && attrExpPresent){\n              childNode[\":@\"] = this.buildAttributesMap(tagExp, jPath);\n            }\n            this.addChild(currentNode, childNode, jPath, startIndex);\n            currentNode = childNode;\n          }\n          textData = \"\";\n          i = closeIndex;\n        }\n      }\n    }else{\n      textData += xmlData[i];\n    }\n  }\n  return xmlObj.child;\n}\n\nfunction addChild(currentNode, childNode, jPath, startIndex){\n  // unset startIndex if not requested\n  if (!this.options.captureMetaData) startIndex = undefined;\n  const result = this.options.updateTag(childNode.tagname, jPath, childNode[\":@\"])\n  if(result === false){\n    //do nothing\n  } else if(typeof result === \"string\"){\n    childNode.tagname = result\n    currentNode.addChild(childNode, startIndex);\n  }else{\n    currentNode.addChild(childNode, startIndex);\n  }\n}\n\nconst replaceEntitiesValue = function(val){\n\n  if(this.options.processEntities){\n    for(let entityName in this.docTypeEntities){\n      const entity = this.docTypeEntities[entityName];\n      val = val.replace( entity.regx, entity.val);\n    }\n    for(let entityName in this.lastEntities){\n      const entity = this.lastEntities[entityName];\n      val = val.replace( entity.regex, entity.val);\n    }\n    if(this.options.htmlEntities){\n      for(let entityName in this.htmlEntities){\n        const entity = this.htmlEntities[entityName];\n        val = val.replace( entity.regex, entity.val);\n      }\n    }\n    val = val.replace( this.ampEntity.regex, this.ampEntity.val);\n  }\n  return val;\n}\nfunction saveTextToParentTag(textData, currentNode, jPath, isLeafNode) {\n  if (textData) { //store previously collected data as textNode\n    if(isLeafNode === undefined) isLeafNode = currentNode.child.length === 0\n    \n    textData = this.parseTextData(textData,\n      currentNode.tagname,\n      jPath,\n      false,\n      currentNode[\":@\"] ? Object.keys(currentNode[\":@\"]).length !== 0 : false,\n      isLeafNode);\n\n    if (textData !== undefined && textData !== \"\")\n      currentNode.add(this.options.textNodeName, textData);\n    textData = \"\";\n  }\n  return textData;\n}\n\n//TODO: use jPath to simplify the logic\n/**\n * @param {Set} stopNodesExact\n * @param {Set} stopNodesWildcard\n * @param {string} jPath\n * @param {string} currentTagName\n */\nfunction isItStopNode(stopNodesExact, stopNodesWildcard, jPath, currentTagName){\n  if(stopNodesWildcard && stopNodesWildcard.has(currentTagName)) return true;\n  if(stopNodesExact && stopNodesExact.has(jPath)) return true;\n  return false;\n}\n\n/**\n * Returns the tag Expression and where it is ending handling single-double quotes situation\n * @param {string} xmlData \n * @param {number} i starting index\n * @returns \n */\nfunction tagExpWithClosingIndex(xmlData, i, closingChar = \">\"){\n  let attrBoundary;\n  let tagExp = \"\";\n  for (let index = i; index < xmlData.length; index++) {\n    let ch = xmlData[index];\n    if (attrBoundary) {\n        if (ch === attrBoundary) attrBoundary = \"\";//reset\n    } else if (ch === '\"' || ch === \"'\") {\n        attrBoundary = ch;\n    } else if (ch === closingChar[0]) {\n      if(closingChar[1]){\n        if(xmlData[index + 1] === closingChar[1]){\n          return {\n            data: tagExp,\n            index: index\n          }\n        }\n      }else{\n        return {\n          data: tagExp,\n          index: index\n        }\n      }\n    } else if (ch === '\\t') {\n      ch = \" \"\n    }\n    tagExp += ch;\n  }\n}\n\nfunction findClosingIndex(xmlData, str, i, errMsg){\n  const closingIndex = xmlData.indexOf(str, i);\n  if(closingIndex === -1){\n    throw new Error(errMsg)\n  }else{\n    return closingIndex + str.length - 1;\n  }\n}\n\nfunction readTagExp(xmlData,i, removeNSPrefix, closingChar = \">\"){\n  const result = tagExpWithClosingIndex(xmlData, i+1, closingChar);\n  if(!result) return;\n  let tagExp = result.data;\n  const closeIndex = result.index;\n  const separatorIndex = tagExp.search(/\\s/);\n  let tagName = tagExp;\n  let attrExpPresent = true;\n  if(separatorIndex !== -1){//separate tag name and attributes expression\n    tagName = tagExp.substring(0, separatorIndex);\n    tagExp = tagExp.substring(separatorIndex + 1).trimStart();\n  }\n\n  const rawTagName = tagName;\n  if(removeNSPrefix){\n    const colonIndex = tagName.indexOf(\":\");\n    if(colonIndex !== -1){\n      tagName = tagName.substr(colonIndex+1);\n      attrExpPresent = tagName !== result.data.substr(colonIndex + 1);\n    }\n  }\n\n  return {\n    tagName: tagName,\n    tagExp: tagExp,\n    closeIndex: closeIndex,\n    attrExpPresent: attrExpPresent,\n    rawTagName: rawTagName,\n  }\n}\n/**\n * find paired tag for a stop node\n * @param {string} xmlData \n * @param {string} tagName \n * @param {number} i \n */\nfunction readStopNodeData(xmlData, tagName, i){\n  const startIndex = i;\n  // Starting at 1 since we already have an open tag\n  let openTagCount = 1;\n\n  for (; i < xmlData.length; i++) {\n    if( xmlData[i] === \"<\"){ \n      if (xmlData[i+1] === \"/\") {//close tag\n          const closeIndex = findClosingIndex(xmlData, \">\", i, `${tagName} is not closed`);\n          let closeTagName = xmlData.substring(i+2,closeIndex).trim();\n          if(closeTagName === tagName){\n            openTagCount--;\n            if (openTagCount === 0) {\n              return {\n                tagContent: xmlData.substring(startIndex, i),\n                i : closeIndex\n              }\n            }\n          }\n          i=closeIndex;\n        } else if(xmlData[i+1] === '?') { \n          const closeIndex = findClosingIndex(xmlData, \"?>\", i+1, \"StopNode is not closed.\")\n          i=closeIndex;\n        } else if(xmlData.substr(i + 1, 3) === '!--') { \n          const closeIndex = findClosingIndex(xmlData, \"-->\", i+3, \"StopNode is not closed.\")\n          i=closeIndex;\n        } else if(xmlData.substr(i + 1, 2) === '![') { \n          const closeIndex = findClosingIndex(xmlData, \"]]>\", i, \"StopNode is not closed.\") - 2;\n          i=closeIndex;\n        } else {\n          const tagData = readTagExp(xmlData, i, '>')\n\n          if (tagData) {\n            const openTagName = tagData && tagData.tagName;\n            if (openTagName === tagName && tagData.tagExp[tagData.tagExp.length-1] !== \"/\") {\n              openTagCount++;\n            }\n            i=tagData.closeIndex;\n          }\n        }\n      }\n  }//end for loop\n}\n\nfunction parseValue(val, shouldParse, options) {\n  if (shouldParse && typeof val === 'string') {\n    //console.log(options)\n    const newval = val.trim();\n    if(newval === 'true' ) return true;\n    else if(newval === 'false' ) return false;\n    else return toNumber(val, options);\n  } else {\n    if (isExist(val)) {\n      return val;\n    } else {\n      return '';\n    }\n  }\n}\n\nfunction fromCodePoint(str, base, prefix){\n  const codePoint = Number.parseInt(str, base);\n\n  if (codePoint >= 0 && codePoint <= 0x10FFFF) {\n      return String.fromCodePoint(codePoint);\n  } else {\n      return prefix +str + \";\";\n  }\n}","import { buildOptions} from './OptionsBuilder.js';\nimport OrderedObjParser from './OrderedObjParser.js';\nimport prettify from './node2json.js';\nimport {validate} from \"../validator.js\";\nimport XmlNode from './xmlNode.js';\n\nexport default class XMLParser{\n    \n    constructor(options){\n        this.externalEntities = {};\n        this.options = buildOptions(options);\n        \n    }\n    /**\n     * Parse XML dats to JS object \n     * @param {string|Uint8Array} xmlData \n     * @param {boolean|Object} validationOption \n     */\n    parse(xmlData,validationOption){\n        if(typeof xmlData !== \"string\" && xmlData.toString){\n            xmlData = xmlData.toString();\n        }else if(typeof xmlData !== \"string\"){\n            throw new Error(\"XML data is accepted in String or Bytes[] form.\")\n        }\n        \n        if( validationOption){\n            if(validationOption === true) validationOption = {}; //validate with default options\n            \n            const result = validate(xmlData, validationOption);\n            if (result !== true) {\n              throw Error( `${result.err.msg}:${result.err.line}:${result.err.col}` )\n            }\n          }\n        const orderedObjParser = new OrderedObjParser(this.options);\n        orderedObjParser.addExternalEntities(this.externalEntities);\n        const orderedResult = orderedObjParser.parseXml(xmlData);\n        if(this.options.preserveOrder || orderedResult === undefined) return orderedResult;\n        else return prettify(orderedResult, this.options);\n    }\n\n    /**\n     * Add Entity which is not by default supported by this library\n     * @param {string} key \n     * @param {string} value \n     */\n    addEntity(key, value){\n        if(value.indexOf(\"&\") !== -1){\n            throw new Error(\"Entity value can't have '&'\")\n        }else if(key.indexOf(\"&\") !== -1 || key.indexOf(\";\") !== -1){\n            throw new Error(\"An entity must be set without '&' and ';'. Eg. use '#xD' for '
'\")\n        }else if(value === \"&\"){\n            throw new Error(\"An entity with value '&' is not permitted\");\n        }else{\n            this.externalEntities[key] = value;\n        }\n    }\n\n    /**\n     * Returns a Symbol that can be used to access the metadata\n     * property on a node.\n     * \n     * If Symbol is not available in the environment, an ordinary property is used\n     * and the name of the property is here returned.\n     * \n     * The XMLMetaData property is only present when `captureMetaData`\n     * is true in the options.\n     */\n    static getMetaDataSymbol() {\n        return XmlNode.getMetaDataSymbol();\n    }\n}\n","'use strict';\n\nimport XmlNode from './xmlNode.js';\n\nconst METADATA_SYMBOL = XmlNode.getMetaDataSymbol();\n\n/**\n * \n * @param {array} node \n * @param {any} options \n * @returns \n */\nexport default function prettify(node, options){\n  return compress( node, options);\n}\n\n/**\n * \n * @param {array} arr \n * @param {object} options \n * @param {string} jPath \n * @returns object\n */\nfunction compress(arr, options, jPath){\n  let text;\n  const compressedObj = {};\n  for (let i = 0; i < arr.length; i++) {\n    const tagObj = arr[i];\n    const property = propName(tagObj);\n    let newJpath = \"\";\n    if(jPath === undefined) newJpath = property;\n    else newJpath = jPath + \".\" + property;\n\n    if(property === options.textNodeName){\n      if(text === undefined) text = tagObj[property];\n      else text += \"\" + tagObj[property];\n    }else if(property === undefined){\n      continue;\n    }else if(tagObj[property]){\n      \n      let val = compress(tagObj[property], options, newJpath);\n      const isLeaf = isLeafTag(val, options);\n      if (tagObj[METADATA_SYMBOL] !== undefined) {\n        val[METADATA_SYMBOL] = tagObj[METADATA_SYMBOL]; // copy over metadata\n      }\n\n      if(tagObj[\":@\"]){\n        assignAttributes( val, tagObj[\":@\"], newJpath, options);\n      }else if(Object.keys(val).length === 1 && val[options.textNodeName] !== undefined && !options.alwaysCreateTextNode){\n        val = val[options.textNodeName];\n      }else if(Object.keys(val).length === 0){\n        if(options.alwaysCreateTextNode) val[options.textNodeName] = \"\";\n        else val = \"\";\n      }\n\n      if(compressedObj[property] !== undefined && compressedObj.hasOwnProperty(property)) {\n        if(!Array.isArray(compressedObj[property])) {\n            compressedObj[property] = [ compressedObj[property] ];\n        }\n        compressedObj[property].push(val);\n      }else{\n        //TODO: if a node is not an array, then check if it should be an array\n        //also determine if it is a leaf node\n        if (options.isArray(property, newJpath, isLeaf )) {\n          compressedObj[property] = [val];\n        }else{\n          compressedObj[property] = val;\n        }\n      }\n    }\n    \n  }\n  // if(text && text.length > 0) compressedObj[options.textNodeName] = text;\n  if(typeof text === \"string\"){\n    if(text.length > 0) compressedObj[options.textNodeName] = text;\n  }else if(text !== undefined) compressedObj[options.textNodeName] = text;\n  return compressedObj;\n}\n\nfunction propName(obj){\n  const keys = Object.keys(obj);\n  for (let i = 0; i < keys.length; i++) {\n    const key = keys[i];\n    if(key !== \":@\") return key;\n  }\n}\n\nfunction assignAttributes(obj, attrMap, jpath, options){\n  if (attrMap) {\n    const keys = Object.keys(attrMap);\n    const len = keys.length; //don't make it inline\n    for (let i = 0; i < len; i++) {\n      const atrrName = keys[i];\n      if (options.isArray(atrrName, jpath + \".\" + atrrName, true, true)) {\n        obj[atrrName] = [ attrMap[atrrName] ];\n      } else {\n        obj[atrrName] = attrMap[atrrName];\n      }\n    }\n  }\n}\n\nfunction isLeafTag(obj, options){\n  const { textNodeName } = options;\n  const propCount = Object.keys(obj).length;\n  \n  if (propCount === 0) {\n    return true;\n  }\n\n  if (\n    propCount === 1 &&\n    (obj[textNodeName] || typeof obj[textNodeName] === \"boolean\" || obj[textNodeName] === 0)\n  ) {\n    return true;\n  }\n\n  return false;\n}\n","'use strict';\n\nlet METADATA_SYMBOL;\n\nif (typeof Symbol !== \"function\") {\n  METADATA_SYMBOL = \"@@xmlMetadata\";\n} else {\n  METADATA_SYMBOL = Symbol(\"XML Node Metadata\");\n}\n\nexport default class XmlNode{\n  constructor(tagname) {\n    this.tagname = tagname;\n    this.child = []; //nested tags, text, cdata, comments in order\n    this[\":@\"] = {}; //attributes map\n  }\n  add(key,val){\n    // this.child.push( {name : key, val: val, isCdata: isCdata });\n    if(key === \"__proto__\") key = \"#__proto__\";\n    this.child.push( {[key]: val });\n  }\n  addChild(node, startIndex) {\n    if(node.tagname === \"__proto__\") node.tagname = \"#__proto__\";\n    if(node[\":@\"] && Object.keys(node[\":@\"]).length > 0){\n      this.child.push( { [node.tagname]: node.child, [\":@\"]: node[\":@\"] });\n    }else{\n      this.child.push( { [node.tagname]: node.child });\n    }\n    // if requested, add the startIndex\n    if (startIndex !== undefined) {\n      // Note: for now we just overwrite the metadata. If we had more complex metadata,\n      // we might need to do an object append here:  metadata = { ...metadata, startIndex }\n      this.child[this.child.length - 1][METADATA_SYMBOL] = { startIndex };\n    }\n  }\n  /** symbol used for metadata */\n  static getMetaDataSymbol() {\n    return METADATA_SYMBOL;\n  }\n}\n","export function sequence(...methods) {\n    if (methods.length === 0) {\n        throw new Error(\"Failed creating sequence: No functions provided\");\n    }\n    return function __executeSequence(...args) {\n        let result = args;\n        const _this = this;\n        while (methods.length > 0) {\n            const method = methods.shift();\n            result = [method.apply(_this, result)];\n        }\n        return result[0];\n    };\n}\n","import { sequence } from \"./functions.js\";\nconst HOT_PATCHER_TYPE = \"@@HOTPATCHER\";\nconst NOOP = () => { };\nfunction createNewItem(method) {\n    return {\n        original: method,\n        methods: [method],\n        final: false\n    };\n}\n/**\n * Hot patching manager class\n */\nexport class HotPatcher {\n    constructor() {\n        this._configuration = {\n            registry: {},\n            getEmptyAction: \"null\"\n        };\n        this.__type__ = HOT_PATCHER_TYPE;\n    }\n    /**\n     * Configuration object reference\n     * @readonly\n     */\n    get configuration() {\n        return this._configuration;\n    }\n    /**\n     * The action to take when a non-set method is requested\n     * Possible values: null/throw\n     */\n    get getEmptyAction() {\n        return this.configuration.getEmptyAction;\n    }\n    set getEmptyAction(newAction) {\n        this.configuration.getEmptyAction = newAction;\n    }\n    /**\n     * Control another hot-patcher instance\n     * Force the remote instance to use patched methods from calling instance\n     * @param target The target instance to control\n     * @param allowTargetOverrides Allow the target to override patched methods on\n     * the controller (default is false)\n     * @returns Returns self\n     * @throws {Error} Throws if the target is invalid\n     */\n    control(target, allowTargetOverrides = false) {\n        if (!target || target.__type__ !== HOT_PATCHER_TYPE) {\n            throw new Error(\"Failed taking control of target HotPatcher instance: Invalid type or object\");\n        }\n        Object.keys(target.configuration.registry).forEach(foreignKey => {\n            if (this.configuration.registry.hasOwnProperty(foreignKey)) {\n                if (allowTargetOverrides) {\n                    this.configuration.registry[foreignKey] = Object.assign({}, target.configuration.registry[foreignKey]);\n                }\n            }\n            else {\n                this.configuration.registry[foreignKey] = Object.assign({}, target.configuration.registry[foreignKey]);\n            }\n        });\n        target._configuration = this.configuration;\n        return this;\n    }\n    /**\n     * Execute a patched method\n     * @param key The method key\n     * @param args Arguments to pass to the method (optional)\n     * @see HotPatcher#get\n     * @returns The output of the called method\n     */\n    execute(key, ...args) {\n        const method = this.get(key) || NOOP;\n        return method(...args);\n    }\n    /**\n     * Get a method for a key\n     * @param key The method key\n     * @returns Returns the requested function or null if the function\n     * does not exist and the host is configured to return null (and not throw)\n     * @throws {Error} Throws if the configuration specifies to throw and the method\n     * does not exist\n     * @throws {Error} Throws if the `getEmptyAction` value is invalid\n     */\n    get(key) {\n        const item = this.configuration.registry[key];\n        if (!item) {\n            switch (this.getEmptyAction) {\n                case \"null\":\n                    return null;\n                case \"throw\":\n                    throw new Error(`Failed handling method request: No method provided for override: ${key}`);\n                default:\n                    throw new Error(`Failed handling request which resulted in an empty method: Invalid empty-action specified: ${this.getEmptyAction}`);\n            }\n        }\n        return sequence(...item.methods);\n    }\n    /**\n     * Check if a method has been patched\n     * @param key The function key\n     * @returns True if already patched\n     */\n    isPatched(key) {\n        return !!this.configuration.registry[key];\n    }\n    /**\n     * Patch a method name\n     * @param key The method key to patch\n     * @param method The function to set\n     * @param opts Patch options\n     * @returns Returns self\n     */\n    patch(key, method, opts = {}) {\n        const { chain = false } = opts;\n        if (this.configuration.registry[key] && this.configuration.registry[key].final) {\n            throw new Error(`Failed patching '${key}': Method marked as being final`);\n        }\n        if (typeof method !== \"function\") {\n            throw new Error(`Failed patching '${key}': Provided method is not a function`);\n        }\n        if (chain) {\n            // Add new method to the chain\n            if (!this.configuration.registry[key]) {\n                // New key, create item\n                this.configuration.registry[key] = createNewItem(method);\n            }\n            else {\n                // Existing, push the method\n                this.configuration.registry[key].methods.push(method);\n            }\n        }\n        else {\n            // Replace the original\n            if (this.isPatched(key)) {\n                const { original } = this.configuration.registry[key];\n                this.configuration.registry[key] = Object.assign(createNewItem(method), {\n                    original\n                });\n            }\n            else {\n                this.configuration.registry[key] = createNewItem(method);\n            }\n        }\n        return this;\n    }\n    /**\n     * Patch a method inline, execute it and return the value\n     * Used for patching contents of functions. This method will not apply a patched\n     * function if it has already been patched, allowing for external overrides to\n     * function. It also means that the function is cached so that it is not\n     * instantiated every time the outer function is invoked.\n     * @param key The function key to use\n     * @param method The function to patch (once, only if not patched)\n     * @param args Arguments to pass to the function\n     * @returns The output of the patched function\n     * @example\n     *  function mySpecialFunction(a, b) {\n     *      return hotPatcher.patchInline(\"func\", (a, b) => {\n     *          return a + b;\n     *      }, a, b);\n     *  }\n     */\n    patchInline(key, method, ...args) {\n        if (!this.isPatched(key)) {\n            this.patch(key, method);\n        }\n        return this.execute(key, ...args);\n    }\n    /**\n     * Patch a method (or methods) in sequential-mode\n     * See `patch()` with the option `chain: true`\n     * @see patch\n     * @param key The key to patch\n     * @param methods The methods to patch\n     * @returns Returns self\n     */\n    plugin(key, ...methods) {\n        methods.forEach(method => {\n            this.patch(key, method, { chain: true });\n        });\n        return this;\n    }\n    /**\n     * Restore a patched method if it has been overridden\n     * @param key The method key\n     * @returns Returns self\n     */\n    restore(key) {\n        if (!this.isPatched(key)) {\n            throw new Error(`Failed restoring method: No method present for key: ${key}`);\n        }\n        else if (typeof this.configuration.registry[key].original !== \"function\") {\n            throw new Error(`Failed restoring method: Original method not found or of invalid type for key: ${key}`);\n        }\n        this.configuration.registry[key].methods = [this.configuration.registry[key].original];\n        return this;\n    }\n    /**\n     * Set a method as being final\n     * This sets a method as having been finally overridden. Attempts at overriding\n     * again will fail with an error.\n     * @param key The key to make final\n     * @returns Returns self\n     */\n    setFinal(key) {\n        if (!this.configuration.registry.hasOwnProperty(key)) {\n            throw new Error(`Failed marking '${key}' as final: No method found for key`);\n        }\n        this.configuration.registry[key].final = true;\n        return this;\n    }\n}\n","export function assertError(err) {\n    if (!isError(err)) {\n        throw new Error(\"Parameter was not an error\");\n    }\n}\nexport function isError(err) {\n    return ((!!err &&\n        typeof err === \"object\" &&\n        objectToString(err) === \"[object Error]\") ||\n        err instanceof Error);\n}\nfunction objectToString(obj) {\n    return Object.prototype.toString.call(obj);\n}\n","const NAME = \"Layerr\";\nlet __name = NAME;\nexport function getGlobalName() {\n    return __name;\n}\nexport function setGlobalName(name = null) {\n    __name = name ?? NAME;\n}\n","import { assertError, isError } from \"./error.js\";\nimport { getGlobalName } from \"./global.js\";\nimport { parseArguments } from \"./tools.js\";\nexport class Layerr extends Error {\n    constructor(errorOptionsOrMessage, messageText) {\n        const args = [...arguments];\n        const { options, shortMessage } = parseArguments(args);\n        let message = shortMessage;\n        if (options.cause) {\n            message = `${message}: ${options.cause.message}`;\n        }\n        super(message);\n        this.message = message;\n        if (options.name && typeof options.name === \"string\") {\n            this.name = options.name;\n        }\n        else {\n            this.name = getGlobalName();\n        }\n        if (options.cause) {\n            Object.defineProperty(this, \"_cause\", { value: options.cause });\n        }\n        Object.defineProperty(this, \"_info\", { value: {} });\n        if (options.info && typeof options.info === \"object\") {\n            Object.assign(this._info, options.info);\n        }\n        if (Error.captureStackTrace) {\n            const ctor = options.constructorOpt || this.constructor;\n            Error.captureStackTrace(this, ctor);\n        }\n    }\n    static cause(err) {\n        assertError(err);\n        if (!err._cause)\n            return null;\n        return isError(err._cause)\n            ? err._cause\n            : null;\n    }\n    static fullStack(err) {\n        assertError(err);\n        const cause = Layerr.cause(err);\n        if (cause) {\n            return `${err.stack}\\ncaused by: ${Layerr.fullStack(cause)}`;\n        }\n        return err.stack ?? \"\";\n    }\n    static info(err) {\n        assertError(err);\n        const output = {};\n        const cause = Layerr.cause(err);\n        if (cause) {\n            Object.assign(output, Layerr.info(cause));\n        }\n        if (err._info) {\n            Object.assign(output, err._info);\n        }\n        return output;\n    }\n    toString() {\n        let output = this.name ||\n            this.constructor.name ||\n            this.constructor.prototype.name;\n        if (this.message) {\n            output = `${output}: ${this.message}`;\n        }\n        return output;\n    }\n}\n","import { isError } from \"./error.js\";\nexport function parseArguments(args) {\n    let options, shortMessage = \"\";\n    if (args.length === 0) {\n        options = {};\n    }\n    else if (isError(args[0])) {\n        options = {\n            cause: args[0],\n        };\n        shortMessage = args.slice(1).join(\" \") || \"\";\n    }\n    else if (args[0] && typeof args[0] === \"object\") {\n        options = Object.assign({}, args[0]);\n        shortMessage = args.slice(1).join(\" \") || \"\";\n    }\n    else if (typeof args[0] === \"string\") {\n        options = {};\n        shortMessage = shortMessage = args.join(\" \") || \"\";\n    }\n    else {\n        throw new Error(\"Invalid arguments passed to Layerr\");\n    }\n    return {\n        options,\n        shortMessage,\n    };\n}\n","const hexRegex = /^[-+]?0x[a-fA-F0-9]+$/;\nconst numRegex = /^([\\-\\+])?(0*)([0-9]*(\\.[0-9]*)?)$/;\n// const octRegex = /^0x[a-z0-9]+/;\n// const binRegex = /0x[a-z0-9]+/;\n\n \nconst consider = {\n    hex :  true,\n    // oct: false,\n    leadingZeros: true,\n    decimalPoint: \"\\.\",\n    eNotation: true,\n    //skipLike: /regex/\n};\n\nexport default function toNumber(str, options = {}){\n    options = Object.assign({}, consider, options );\n    if(!str || typeof str !== \"string\" ) return str;\n    \n    let trimmedStr  = str.trim();\n    \n    if(options.skipLike !== undefined && options.skipLike.test(trimmedStr)) return str;\n    else if(str===\"0\") return 0;\n    else if (options.hex && hexRegex.test(trimmedStr)) {\n        return parse_int(trimmedStr, 16);\n    // }else if (options.oct && octRegex.test(str)) {\n    //     return Number.parseInt(val, 8);\n    }else if (trimmedStr.includes('e') || trimmedStr.includes('E')) { //eNotation\n        return resolveEnotation(str,trimmedStr,options);\n    // }else if (options.parseBin && binRegex.test(str)) {\n    //     return Number.parseInt(val, 2);\n    }else{\n        //separate negative sign, leading zeros, and rest number\n        const match = numRegex.exec(trimmedStr);\n        // +00.123 => [ , '+', '00', '.123', ..\n        if(match){\n            const sign = match[1] || \"\";\n            const leadingZeros = match[2];\n            let numTrimmedByZeros = trimZeros(match[3]); //complete num without leading zeros\n            const decimalAdjacentToLeadingZeros = sign ? // 0., -00., 000.\n                str[leadingZeros.length+1] === \".\" \n                : str[leadingZeros.length] === \".\";\n\n            //trim ending zeros for floating number\n            if(!options.leadingZeros //leading zeros are not allowed\n                && (leadingZeros.length > 1 \n                    || (leadingZeros.length === 1 && !decimalAdjacentToLeadingZeros))){\n                // 00, 00.3, +03.24, 03, 03.24\n                return str;\n            }\n            else{//no leading zeros or leading zeros are allowed\n                const num = Number(trimmedStr);\n                const parsedStr = String(num);\n\n                if( num === 0) return num;\n                if(parsedStr.search(/[eE]/) !== -1){ //given number is long and parsed to eNotation\n                    if(options.eNotation) return num;\n                    else return str;\n                }else if(trimmedStr.indexOf(\".\") !== -1){ //floating number\n                    if(parsedStr === \"0\") return num; //0.0\n                    else if(parsedStr === numTrimmedByZeros) return num; //0.456. 0.79000\n                    else if( parsedStr === `${sign}${numTrimmedByZeros}`) return num;\n                    else return str;\n                }\n                \n                let n = leadingZeros? numTrimmedByZeros : trimmedStr;\n                if(leadingZeros){\n                    // -009 => -9\n                    return (n === parsedStr) || (sign+n === parsedStr) ? num : str\n                }else  {\n                    // +9\n                    return (n === parsedStr) || (n === sign+parsedStr) ? num : str\n                }\n            }\n        }else{ //non-numeric string\n            return str;\n        }\n    }\n}\n\nconst eNotationRegx = /^([-+])?(0*)(\\d*(\\.\\d*)?[eE][-\\+]?\\d+)$/;\nfunction resolveEnotation(str,trimmedStr,options){\n    if(!options.eNotation) return str;\n    const notation = trimmedStr.match(eNotationRegx); \n    if(notation){\n        let sign = notation[1] || \"\";\n        const eChar = notation[3].indexOf(\"e\") === -1 ? \"E\" : \"e\";\n        const leadingZeros = notation[2];\n        const eAdjacentToLeadingZeros = sign ? // 0E.\n            str[leadingZeros.length+1] === eChar \n            : str[leadingZeros.length] === eChar;\n\n        if(leadingZeros.length > 1 && eAdjacentToLeadingZeros) return str;\n        else if(leadingZeros.length === 1 \n            && (notation[3].startsWith(`.${eChar}`) || notation[3][0] === eChar)){\n                return Number(trimmedStr);\n        }else if(options.leadingZeros && !eAdjacentToLeadingZeros){ //accept with leading zeros\n            //remove leading 0s\n            trimmedStr = (notation[1] || \"\") + notation[3];\n            return Number(trimmedStr);\n        }else return str;\n    }else{\n        return str;\n    }\n}\n\n/**\n * \n * @param {string} numStr without leading zeros\n * @returns \n */\nfunction trimZeros(numStr){\n    if(numStr && numStr.indexOf(\".\") !== -1){//float\n        numStr = numStr.replace(/0+$/, \"\"); //remove ending zeros\n        if(numStr === \".\")  numStr = \"0\";\n        else if(numStr[0] === \".\")  numStr = \"0\"+numStr;\n        else if(numStr[numStr.length-1] === \".\")  numStr = numStr.substring(0,numStr.length-1);\n        return numStr;\n    }\n    return numStr;\n}\n\nfunction parse_int(numStr, base){\n    //polyfill\n    if(parseInt) return parseInt(numStr, base);\n    else if(Number.parseInt) return Number.parseInt(numStr, base);\n    else if(window && window.parseInt) return window.parseInt(numStr, base);\n    else throw new Error(\"parseInt, Number.parseInt, window.parseInt are not supported\")\n}","function normalize (strArray) {\n  var resultArray = [];\n  if (strArray.length === 0) { return ''; }\n\n  if (typeof strArray[0] !== 'string') {\n    throw new TypeError('Url must be a string. Received ' + strArray[0]);\n  }\n\n  // If the first part is a plain protocol, we combine it with the next part.\n  if (strArray[0].match(/^[^/:]+:\\/*$/) && strArray.length > 1) {\n    var first = strArray.shift();\n    strArray[0] = first + strArray[0];\n  }\n\n  // There must be two or three slashes in the file protocol, two slashes in anything else.\n  if (strArray[0].match(/^file:\\/\\/\\//)) {\n    strArray[0] = strArray[0].replace(/^([^/:]+):\\/*/, '$1:///');\n  } else {\n    strArray[0] = strArray[0].replace(/^([^/:]+):\\/*/, '$1://');\n  }\n\n  for (var i = 0; i < strArray.length; i++) {\n    var component = strArray[i];\n\n    if (typeof component !== 'string') {\n      throw new TypeError('Url must be a string. Received ' + component);\n    }\n\n    if (component === '') { continue; }\n\n    if (i > 0) {\n      // Removing the starting slashes for each component but the first.\n      component = component.replace(/^[\\/]+/, '');\n    }\n    if (i < strArray.length - 1) {\n      // Removing the ending slashes for each component but the last.\n      component = component.replace(/[\\/]+$/, '');\n    } else {\n      // For the last component we will combine multiple slashes to a single one.\n      component = component.replace(/[\\/]+$/, '/');\n    }\n\n    resultArray.push(component);\n\n  }\n\n  var str = resultArray.join('/');\n  // Each input component is now separated by a single slash except the possible first plain protocol part.\n\n  // remove trailing slash before parameters or hash\n  str = str.replace(/\\/(\\?|&|#[^!])/g, '$1');\n\n  // replace ? in parameters with &\n  var parts = str.split('?');\n  str = parts.shift() + (parts.length > 0 ? '?': '') + parts.join('&');\n\n  return str;\n}\n\nexport default function urlJoin() {\n  var input;\n\n  if (typeof arguments[0] === 'object') {\n    input = arguments[0];\n  } else {\n    input = [].slice.call(arguments);\n  }\n\n  return normalize(input);\n}\n","import { toBase64 } from \"../tools/encode.js\";\nexport function generateBasicAuthHeader(username, password) {\n    const encoded = toBase64(`${username}:${password}`);\n    return `Basic ${encoded}`;\n}\n","import md5 from \"md5\";\nimport { ha1Compute } from \"../tools/crypto.js\";\nconst NONCE_CHARS = \"abcdef0123456789\";\nconst NONCE_SIZE = 32;\nexport function createDigestContext(username, password, ha1) {\n    return { username, password, ha1, nc: 0, algorithm: \"md5\", hasDigestAuth: false };\n}\nexport function generateDigestAuthHeader(options, digest) {\n    const url = options.url.replace(\"//\", \"\");\n    const uri = url.indexOf(\"/\") == -1 ? \"/\" : url.slice(url.indexOf(\"/\"));\n    const method = options.method ? options.method.toUpperCase() : \"GET\";\n    const qop = /(^|,)\\s*auth\\s*($|,)/.test(digest.qop) ? \"auth\" : false;\n    const ncString = `00000000${digest.nc}`.slice(-8);\n    const ha1 = ha1Compute(digest.algorithm, digest.username, digest.realm, digest.password, digest.nonce, digest.cnonce, digest.ha1);\n    const ha2 = md5(`${method}:${uri}`);\n    const digestResponse = qop\n        ? md5(`${ha1}:${digest.nonce}:${ncString}:${digest.cnonce}:${qop}:${ha2}`)\n        : md5(`${ha1}:${digest.nonce}:${ha2}`);\n    const authValues = {\n        username: digest.username,\n        realm: digest.realm,\n        nonce: digest.nonce,\n        uri,\n        qop,\n        response: digestResponse,\n        nc: ncString,\n        cnonce: digest.cnonce,\n        algorithm: digest.algorithm,\n        opaque: digest.opaque\n    };\n    const authHeader = [];\n    for (const k in authValues) {\n        if (authValues[k]) {\n            if (k === \"qop\" || k === \"nc\" || k === \"algorithm\") {\n                authHeader.push(`${k}=${authValues[k]}`);\n            }\n            else {\n                authHeader.push(`${k}=\"${authValues[k]}\"`);\n            }\n        }\n    }\n    return `Digest ${authHeader.join(\", \")}`;\n}\nfunction makeNonce() {\n    let uid = \"\";\n    for (let i = 0; i < NONCE_SIZE; ++i) {\n        uid = `${uid}${NONCE_CHARS[Math.floor(Math.random() * NONCE_CHARS.length)]}`;\n    }\n    return uid;\n}\nexport function parseDigestAuth(response, _digest) {\n    const isDigest = responseIndicatesDigestAuth(response);\n    if (!isDigest) {\n        return false;\n    }\n    const re = /([a-z0-9_-]+)=(?:\"([^\"]+)\"|([a-z0-9_-]+))/gi;\n    for (;;) {\n        const authHeader = (response.headers && response.headers.get(\"www-authenticate\")) || \"\";\n        const match = re.exec(authHeader);\n        if (!match) {\n            break;\n        }\n        _digest[match[1]] = match[2] || match[3];\n    }\n    _digest.nc += 1;\n    _digest.cnonce = makeNonce();\n    return true;\n}\nexport function responseIndicatesDigestAuth(response) {\n    const authHeader = (response.headers && response.headers.get(\"www-authenticate\")) || \"\";\n    return authHeader.split(/\\s/)[0].toLowerCase() === \"digest\";\n}\n","import { Layerr } from \"layerr\";\nimport { createDigestContext } from \"./digest.js\";\nimport { generateBasicAuthHeader } from \"./basic.js\";\nimport { generateTokenAuthHeader } from \"./oauth.js\";\nimport { AuthType, ErrorCode } from \"../types.js\";\nexport function setupAuth(context, username, password, oauthToken, ha1) {\n    switch (context.authType) {\n        case AuthType.Auto:\n            if (username && password) {\n                context.headers.Authorization = generateBasicAuthHeader(username, password);\n            }\n            break;\n        case AuthType.Digest:\n            context.digest = createDigestContext(username, password, ha1);\n            break;\n        case AuthType.None:\n            // Do nothing\n            break;\n        case AuthType.Password:\n            context.headers.Authorization = generateBasicAuthHeader(username, password);\n            break;\n        case AuthType.Token:\n            context.headers.Authorization = generateTokenAuthHeader(oauthToken);\n            break;\n        default:\n            throw new Layerr({\n                info: {\n                    code: ErrorCode.InvalidAuthType\n                }\n            }, `Invalid auth type: ${context.authType}`);\n    }\n}\n","export function generateTokenAuthHeader(token) {\n    return `${token.token_type} ${token.access_token}`;\n}\n","const hasArrayBuffer = typeof ArrayBuffer === \"function\";\nconst { toString: objToString } = Object.prototype;\n// Taken from: https://github.com/fengyuanchen/is-array-buffer/blob/master/src/index.js\nexport function isArrayBuffer(value) {\n    return (hasArrayBuffer &&\n        (value instanceof ArrayBuffer || objToString.call(value) === \"[object ArrayBuffer]\"));\n}\n","export function isBuffer(value) {\n    return (value != null &&\n        value.constructor != null &&\n        typeof value.constructor.isBuffer === \"function\" &&\n        value.constructor.isBuffer(value));\n}\n","export function isReactNative() {\n    return typeof TARGET === \"string\" && TARGET === \"react-native\";\n}\nexport function isWeb() {\n    return typeof TARGET === \"string\" && TARGET === \"web\";\n}\n","import { HotPatcher } from \"hot-patcher\";\nlet __patcher = null;\nexport function getPatcher() {\n    if (!__patcher) {\n        __patcher = new HotPatcher();\n    }\n    return __patcher;\n}\n","import { extractURLPath } from \"./tools/url.js\";\nimport { setupAuth } from \"./auth/index.js\";\nimport { copyFile } from \"./operations/copyFile.js\";\nimport { createDirectory } from \"./operations/createDirectory.js\";\nimport { createReadStream, createWriteStream } from \"./operations/createStream.js\";\nimport { customRequest } from \"./operations/customRequest.js\";\nimport { deleteFile } from \"./operations/deleteFile.js\";\nimport { exists } from \"./operations/exists.js\";\nimport { getDirectoryContents } from \"./operations/directoryContents.js\";\nimport { getFileContents, getFileDownloadLink } from \"./operations/getFileContents.js\";\nimport { lock, unlock } from \"./operations/lock.js\";\nimport { getQuota } from \"./operations/getQuota.js\";\nimport { getStat } from \"./operations/stat.js\";\nimport { getSearch } from \"./operations/search.js\";\nimport { moveFile } from \"./operations/moveFile.js\";\nimport { getFileUploadLink, putFileContents } from \"./operations/putFileContents.js\";\nimport { partialUpdateFileContents } from \"./operations/partialUpdateFileContents.js\";\nimport { getDAVCompliance } from \"./operations/getDAVCompliance.js\";\nimport { displaynameTagParser } from \"./tools/dav.js\";\nimport { AuthType } from \"./types.js\";\nconst DEFAULT_CONTACT_HREF = \"https://github.com/perry-mitchell/webdav-client/blob/master/LOCK_CONTACT.md\";\nexport function createClient(remoteURL, options = {}) {\n    const { authType: authTypeRaw = null, remoteBasePath, contactHref = DEFAULT_CONTACT_HREF, ha1, headers = {}, httpAgent, httpsAgent, password, token, username, withCredentials } = options;\n    let authType = authTypeRaw;\n    if (!authType) {\n        authType = username || password ? AuthType.Password : AuthType.None;\n    }\n    const context = {\n        authType,\n        remoteBasePath,\n        contactHref,\n        ha1,\n        headers: Object.assign({}, headers),\n        httpAgent,\n        httpsAgent,\n        password,\n        parsing: {\n            attributeNamePrefix: options.attributeNamePrefix ?? \"@\",\n            attributeParsers: [],\n            tagParsers: [displaynameTagParser]\n        },\n        remotePath: extractURLPath(remoteURL),\n        remoteURL,\n        token,\n        username,\n        withCredentials\n    };\n    setupAuth(context, username, password, token, ha1);\n    return {\n        copyFile: (filename, destination, options) => copyFile(context, filename, destination, options),\n        createDirectory: (path, options) => createDirectory(context, path, options),\n        createReadStream: (filename, options) => createReadStream(context, filename, options),\n        createWriteStream: (filename, options, callback) => createWriteStream(context, filename, options, callback),\n        customRequest: (path, requestOptions) => customRequest(context, path, requestOptions),\n        deleteFile: (filename, options) => deleteFile(context, filename, options),\n        exists: (path, options) => exists(context, path, options),\n        getDirectoryContents: (path, options\n        // @ts-ignore\n        ) => getDirectoryContents(context, path, options),\n        getFileContents: (filename, options) => getFileContents(context, filename, options),\n        getFileDownloadLink: (filename) => getFileDownloadLink(context, filename),\n        getFileUploadLink: (filename) => getFileUploadLink(context, filename),\n        getHeaders: () => Object.assign({}, context.headers),\n        getQuota: (options) => getQuota(context, options),\n        lock: (path, options) => lock(context, path, options),\n        moveFile: (filename, destinationFilename, options) => moveFile(context, filename, destinationFilename, options),\n        putFileContents: (filename, data, options) => putFileContents(context, filename, data, options),\n        partialUpdateFileContents: (filePath, start, end, data, options) => partialUpdateFileContents(context, filePath, start, end, data, options),\n        getDAVCompliance: (path) => getDAVCompliance(context, path),\n        search: (path, options) => getSearch(context, path, options),\n        setHeaders: (headers) => {\n            context.headers = Object.assign({}, headers);\n        },\n        stat: (path, options) => getStat(context, path, options),\n        unlock: (path, token, options) => unlock(context, path, token, options),\n        registerAttributeParser: (parser) => {\n            context.parsing.attributeParsers.push(parser);\n        },\n        registerTagParser: (parser) => {\n            context.parsing.tagParsers.push(parser);\n        }\n    };\n}\n","import { joinURL } from \"../tools/url.js\";\nimport { encodePath } from \"../tools/path.js\";\nimport { request, prepareRequestOptions } from \"../request.js\";\nimport { handleResponseCode } from \"../response.js\";\nexport async function copyFile(context, filename, destination, options = {}) {\n    const requestOptions = prepareRequestOptions({\n        url: joinURL(context.remoteURL, encodePath(filename)),\n        method: \"COPY\",\n        headers: {\n            Destination: joinURL(context.remoteURL, encodePath(destination)),\n            /**\n             * From RFC4918 section 10.6: If the overwrite header is not included in a COPY or MOVE request,\n             * then the resource MUST treat the request as if it has an overwrite header of value \"T\".\n             *\n             * Meaning the overwrite header is always set to \"T\" EXCEPT the option is explicitly set to false.\n             */\n            Overwrite: options.overwrite === false ? \"F\" : \"T\",\n            /**\n             * From RFC4918 section 9.8.3: A client may submit a Depth header on a COPY on a collection with a value of \"0\"\n             * or \"infinity\". The COPY method on a collection without a Depth header MUST act as if\n             * a Depth header with value \"infinity\" was included.\n             */\n            Depth: options.shallow ? \"0\" : \"infinity\"\n        }\n    }, context, options);\n    const response = await request(requestOptions, context);\n    handleResponseCode(context, response);\n}\n","import { joinURL } from \"../tools/url.js\";\nimport { encodePath, getAllDirectories, normalisePath } from \"../tools/path.js\";\nimport { request, prepareRequestOptions } from \"../request.js\";\nimport { handleResponseCode } from \"../response.js\";\nimport { getStat } from \"./stat.js\";\nexport async function createDirectory(context, dirPath, options = {}) {\n    if (options.recursive === true)\n        return createDirectoryRecursively(context, dirPath, options);\n    const requestOptions = prepareRequestOptions({\n        url: joinURL(context.remoteURL, ensureCollectionPath(encodePath(dirPath))),\n        method: \"MKCOL\"\n    }, context, options);\n    const response = await request(requestOptions, context);\n    handleResponseCode(context, response);\n}\n/**\n * Ensure the path is a proper \"collection\" path by ensuring it has a trailing \"/\".\n * The proper format of collection according to the specification does contain the trailing slash.\n * http://www.webdav.org/specs/rfc4918.html#rfc.section.5.2\n * @param path Path of the collection\n * @return string Path of the collection with appended trailing \"/\" in case the `path` does not have it.\n */\nfunction ensureCollectionPath(path) {\n    if (!path.endsWith(\"/\")) {\n        return path + \"/\";\n    }\n    return path;\n}\nasync function createDirectoryRecursively(context, dirPath, options = {}) {\n    const paths = getAllDirectories(normalisePath(dirPath));\n    paths.sort((a, b) => {\n        if (a.length > b.length) {\n            return 1;\n        }\n        else if (b.length > a.length) {\n            return -1;\n        }\n        return 0;\n    });\n    let creating = false;\n    for (const testPath of paths) {\n        if (creating) {\n            await createDirectory(context, testPath, {\n                ...options,\n                recursive: false\n            });\n            continue;\n        }\n        try {\n            const testStat = (await getStat(context, testPath));\n            if (testStat.type !== \"directory\") {\n                throw new Error(`Path includes a file: ${dirPath}`);\n            }\n        }\n        catch (err) {\n            const error = err;\n            if (error.status === 404) {\n                creating = true;\n                await createDirectory(context, testPath, {\n                    ...options,\n                    recursive: false\n                });\n            }\n            else {\n                throw err;\n            }\n        }\n    }\n}\n","import Stream from \"stream\";\nimport { joinURL } from \"../tools/url.js\";\nimport { encodePath } from \"../tools/path.js\";\nimport { request, prepareRequestOptions } from \"../request.js\";\nimport { handleResponseCode } from \"../response.js\";\nconst NOOP = () => { };\nexport function createReadStream(context, filePath, options = {}) {\n    const PassThroughStream = Stream.PassThrough;\n    const outStream = new PassThroughStream();\n    getFileStream(context, filePath, options)\n        .then(stream => {\n        stream.pipe(outStream);\n    })\n        .catch(err => {\n        outStream.emit(\"error\", err);\n    });\n    return outStream;\n}\nexport function createWriteStream(context, filePath, options = {}, callback = NOOP) {\n    const PassThroughStream = Stream.PassThrough;\n    const writeStream = new PassThroughStream();\n    const headers = {};\n    if (options.overwrite === false) {\n        headers[\"If-None-Match\"] = \"*\";\n    }\n    const requestOptions = prepareRequestOptions({\n        url: joinURL(context.remoteURL, encodePath(filePath)),\n        method: \"PUT\",\n        headers,\n        data: writeStream,\n        maxRedirects: 0\n    }, context, options);\n    request(requestOptions, context)\n        .then(response => handleResponseCode(context, response))\n        .then(response => {\n        // Fire callback asynchronously to avoid errors\n        setTimeout(() => {\n            callback(response);\n        }, 0);\n    })\n        .catch(err => {\n        writeStream.emit(\"error\", err);\n    });\n    return writeStream;\n}\nasync function getFileStream(context, filePath, options = {}) {\n    const headers = {};\n    if (typeof options.range === \"object\" && typeof options.range.start === \"number\") {\n        let rangeHeader = `bytes=${options.range.start}-`;\n        if (typeof options.range.end === \"number\") {\n            rangeHeader = `${rangeHeader}${options.range.end}`;\n        }\n        headers.Range = rangeHeader;\n    }\n    const requestOptions = prepareRequestOptions({\n        url: joinURL(context.remoteURL, encodePath(filePath)),\n        method: \"GET\",\n        headers\n    }, context, options);\n    const response = await request(requestOptions, context);\n    handleResponseCode(context, response);\n    if (headers.Range && response.status !== 206) {\n        const responseError = new Error(`Invalid response code for partial request: ${response.status}`);\n        responseError.status = response.status;\n        throw responseError;\n    }\n    if (options.callback) {\n        setTimeout(() => {\n            options.callback(response);\n        }, 0);\n    }\n    // @ts-ignore\n    return response.body;\n}\n","import { joinURL } from \"../tools/url.js\";\nimport { encodePath } from \"../tools/path.js\";\nimport { request, prepareRequestOptions } from \"../request.js\";\nimport { handleResponseCode } from \"../response.js\";\nexport async function customRequest(context, remotePath, requestOptions) {\n    if (!requestOptions.url) {\n        requestOptions.url = joinURL(context.remoteURL, encodePath(remotePath));\n    }\n    const finalOptions = prepareRequestOptions(requestOptions, context, {});\n    const response = await request(finalOptions, context);\n    handleResponseCode(context, response);\n    return response;\n}\n","import { joinURL } from \"../tools/url.js\";\nimport { encodePath } from \"../tools/path.js\";\nimport { request, prepareRequestOptions } from \"../request.js\";\nimport { handleResponseCode } from \"../response.js\";\nexport async function deleteFile(context, filename, options = {}) {\n    const requestOptions = prepareRequestOptions({\n        url: joinURL(context.remoteURL, encodePath(filename)),\n        method: \"DELETE\"\n    }, context, options);\n    const response = await request(requestOptions, context);\n    handleResponseCode(context, response);\n}\n","import pathPosix from \"path-posix\";\nimport { joinURL, normaliseHREF } from \"../tools/url.js\";\nimport { encodePath, makePathAbsolute, normalisePath } from \"../tools/path.js\";\nimport { parseXML, prepareFileFromProps } from \"../tools/dav.js\";\nimport { request, prepareRequestOptions } from \"../request.js\";\nimport { handleResponseCode, processGlobFilter, processResponsePayload } from \"../response.js\";\nexport async function getDirectoryContents(context, remotePath, options = {}) {\n    const requestOptions = prepareRequestOptions({\n        url: joinURL(context.remoteURL, encodePath(remotePath), \"/\"),\n        method: \"PROPFIND\",\n        headers: {\n            Accept: \"text/plain,application/xml\",\n            Depth: options.deep ? \"infinity\" : \"1\"\n        }\n    }, context, options);\n    const response = await request(requestOptions, context);\n    handleResponseCode(context, response);\n    const responseData = await response.text();\n    if (!responseData) {\n        throw new Error(\"Failed parsing directory contents: Empty response\");\n    }\n    const davResp = await parseXML(responseData, context.parsing);\n    const _remotePath = makePathAbsolute(remotePath);\n    const remoteBasePath = makePathAbsolute(context.remoteBasePath || context.remotePath);\n    let files = getDirectoryFiles(davResp, remoteBasePath, _remotePath, options.details, options.includeSelf);\n    if (options.glob) {\n        files = processGlobFilter(files, options.glob);\n    }\n    return processResponsePayload(response, files, options.details);\n}\nfunction getDirectoryFiles(result, serverremoteBasePath, requestPath, isDetailed = false, includeSelf = false) {\n    const serverBase = pathPosix.join(serverremoteBasePath, \"/\");\n    // Extract the response items (directory contents)\n    const { multistatus: { response: responseItems } } = result;\n    // Map all items to a consistent output structure (results)\n    const nodes = responseItems.map(item => {\n        // HREF is the file path (in full) - The href is already XML entities decoded (e.g. foo&bar is reverted to foo&bar)\n        const href = normaliseHREF(item.href);\n        // Each item should contain a stat object\n        const { propstat: { prop: props } } = item;\n        // Process the true full filename (minus the base server path)\n        const filename = serverBase === \"/\"\n            ? decodeURIComponent(normalisePath(href))\n            : normalisePath(pathPosix.relative(decodeURIComponent(serverBase), decodeURIComponent(href)));\n        return prepareFileFromProps(props, filename, isDetailed);\n    });\n    // If specified, also return the current directory\n    if (includeSelf) {\n        return nodes;\n    }\n    // Else, filter out the item pointing to the current directory (not needed)\n    return nodes.filter(item => item.basename &&\n        (item.type === \"file\" || item.filename !== requestPath.replace(/\\/$/, \"\")));\n}\n","import { getStat } from \"./stat.js\";\nexport async function exists(context, remotePath, options = {}) {\n    try {\n        await getStat(context, remotePath, options);\n        return true;\n    }\n    catch (err) {\n        if (err.status === 404) {\n            return false;\n        }\n        throw err;\n    }\n}\n","import { joinURL } from \"../tools/url.js\";\nimport { encodePath } from \"../tools/path.js\";\nimport { request, prepareRequestOptions } from \"../request.js\";\nimport { handleResponseCode } from \"../response.js\";\nexport async function getDAVCompliance(context, filePath, options = {}) {\n    const requestOptions = prepareRequestOptions({\n        url: joinURL(context.remoteURL, encodePath(filePath)),\n        method: \"OPTIONS\"\n    }, context, options);\n    const response = await request(requestOptions, context);\n    try {\n        handleResponseCode(context, response);\n    }\n    catch (err) {\n        const error = err;\n        throw error;\n    }\n    const davHeader = response.headers.get(\"DAV\") ?? \"\";\n    const compliance = davHeader.split(\",\").map(item => item.trim());\n    const server = response.headers.get(\"Server\") ?? \"\";\n    return {\n        compliance,\n        server\n    };\n}\n","import { Layerr } from \"layerr\";\nimport { joinURL } from \"../tools/url.js\";\nimport { encodePath } from \"../tools/path.js\";\nimport { fromBase64 } from \"../tools/encode.js\";\nimport { isReactNative, isWeb } from \"../compat/env.js\";\nimport { request, prepareRequestOptions } from \"../request.js\";\nimport { handleResponseCode, processResponsePayload } from \"../response.js\";\nimport { AuthType, ErrorCode } from \"../types.js\";\nconst TRANSFORM_RETAIN_FORMAT = (v) => v;\nexport async function getFileContents(context, filePath, options = {}) {\n    const { format = \"binary\" } = options;\n    if (format !== \"binary\" && format !== \"text\") {\n        throw new Layerr({\n            info: {\n                code: ErrorCode.InvalidOutputFormat\n            }\n        }, `Invalid output format: ${format}`);\n    }\n    return format === \"text\"\n        ? getFileContentsString(context, filePath, options)\n        : getFileContentsBuffer(context, filePath, options);\n}\nasync function getFileContentsBuffer(context, filePath, options = {}) {\n    const requestOptions = prepareRequestOptions({\n        url: joinURL(context.remoteURL, encodePath(filePath)),\n        method: \"GET\"\n    }, context, options);\n    const response = await request(requestOptions, context);\n    handleResponseCode(context, response);\n    let body;\n    if (isWeb() || isReactNative()) {\n        body = await response.arrayBuffer();\n    }\n    else {\n        body = Buffer.from(await response.arrayBuffer());\n    }\n    return processResponsePayload(response, body, options.details);\n}\nasync function getFileContentsString(context, filePath, options = {}) {\n    const requestOptions = prepareRequestOptions({\n        url: joinURL(context.remoteURL, encodePath(filePath)),\n        method: \"GET\",\n        headers: {\n            Accept: \"text/plain\"\n        },\n        transformResponse: [TRANSFORM_RETAIN_FORMAT]\n    }, context, options);\n    const response = await request(requestOptions, context);\n    handleResponseCode(context, response);\n    const body = await response.text();\n    return processResponsePayload(response, body, options.details);\n}\nexport function getFileDownloadLink(context, filePath) {\n    let url = joinURL(context.remoteURL, encodePath(filePath));\n    const protocol = /^https:/i.test(url) ? \"https\" : \"http\";\n    switch (context.authType) {\n        case AuthType.None:\n            // Do nothing\n            break;\n        case AuthType.Password: {\n            const authPart = context.headers.Authorization.replace(/^Basic /i, \"\").trim();\n            const authContents = fromBase64(authPart);\n            url = url.replace(/^https?:\\/\\//, `${protocol}://${authContents}@`);\n            break;\n        }\n        default:\n            throw new Layerr({\n                info: {\n                    code: ErrorCode.LinkUnsupportedAuthType\n                }\n            }, `Unsupported auth type for file link: ${context.authType}`);\n    }\n    return url;\n}\n","import { prepareRequestOptions, request } from \"../request.js\";\nimport { handleResponseCode, processResponsePayload } from \"../response.js\";\nimport { parseXML } from \"../tools/dav.js\";\nimport { joinURL } from \"../tools/url.js\";\nimport { parseQuota } from \"../tools/quota.js\";\nexport async function getQuota(context, options = {}) {\n    const path = options.path || \"/\";\n    const requestOptions = prepareRequestOptions({\n        url: joinURL(context.remoteURL, path),\n        method: \"PROPFIND\",\n        headers: {\n            Accept: \"text/plain,application/xml\",\n            Depth: \"0\"\n        }\n    }, context, options);\n    const response = await request(requestOptions, context);\n    handleResponseCode(context, response);\n    const responseData = await response.text();\n    const result = await parseXML(responseData, context.parsing);\n    const quota = parseQuota(result);\n    return processResponsePayload(response, quota, options.details);\n}\n","import nestedProp from \"nested-property\";\nimport { joinURL } from \"../tools/url.js\";\nimport { encodePath } from \"../tools/path.js\";\nimport { generateLockXML, parseGenericResponse } from \"../tools/xml.js\";\nimport { request, prepareRequestOptions } from \"../request.js\";\nimport { createErrorFromResponse, handleResponseCode } from \"../response.js\";\nconst DEFAULT_TIMEOUT = \"Infinite, Second-4100000000\";\nexport async function lock(context, path, options = {}) {\n    const { refreshToken, timeout = DEFAULT_TIMEOUT } = options;\n    const headers = {\n        Accept: \"text/plain,application/xml\",\n        Timeout: timeout\n    };\n    if (refreshToken) {\n        headers.If = refreshToken;\n    }\n    const requestOptions = prepareRequestOptions({\n        url: joinURL(context.remoteURL, encodePath(path)),\n        method: \"LOCK\",\n        headers,\n        data: generateLockXML(context.contactHref)\n    }, context, options);\n    const response = await request(requestOptions, context);\n    handleResponseCode(context, response);\n    const responseData = await response.text();\n    const lockPayload = parseGenericResponse(responseData);\n    const token = nestedProp.get(lockPayload, \"prop.lockdiscovery.activelock.locktoken.href\");\n    const serverTimeout = nestedProp.get(lockPayload, \"prop.lockdiscovery.activelock.timeout\");\n    if (!token) {\n        const err = createErrorFromResponse(response, \"No lock token received: \");\n        throw err;\n    }\n    return {\n        token,\n        serverTimeout\n    };\n}\nexport async function unlock(context, path, token, options = {}) {\n    const requestOptions = prepareRequestOptions({\n        url: joinURL(context.remoteURL, encodePath(path)),\n        method: \"UNLOCK\",\n        headers: {\n            \"Lock-Token\": token\n        }\n    }, context, options);\n    const response = await request(requestOptions, context);\n    handleResponseCode(context, response);\n    if (response.status !== 204 && response.status !== 200) {\n        const err = createErrorFromResponse(response);\n        throw err;\n    }\n}\n","import { joinURL } from \"../tools/url.js\";\nimport { encodePath } from \"../tools/path.js\";\nimport { request, prepareRequestOptions } from \"../request.js\";\nimport { handleResponseCode } from \"../response.js\";\nexport async function moveFile(context, filename, destination, options = {}) {\n    const requestOptions = prepareRequestOptions({\n        url: joinURL(context.remoteURL, encodePath(filename)),\n        method: \"MOVE\",\n        headers: {\n            Destination: joinURL(context.remoteURL, encodePath(destination)),\n            /**\n             * From RFC4918 section 10.6: If the overwrite header is not included in a COPY or MOVE request,\n             * then the resource MUST treat the request as if it has an overwrite header of value \"T\".\n             *\n             * Meaning the overwrite header is always set to \"T\" EXCEPT the option is explicitly set to false.\n             */\n            Overwrite: options.overwrite === false ? \"F\" : \"T\"\n        }\n    }, context, options);\n    const response = await request(requestOptions, context);\n    handleResponseCode(context, response);\n}\n","import { Layerr } from \"layerr\";\nimport { joinURL } from \"../tools/url.js\";\nimport { encodePath } from \"../tools/path.js\";\nimport { request, prepareRequestOptions } from \"../request.js\";\nimport { handleResponseCode } from \"../response.js\";\nimport { getDAVCompliance } from \"./getDAVCompliance.js\";\nimport { ErrorCode } from \"../types.js\";\nexport async function partialUpdateFileContents(context, filePath, start, end, data, options = {}) {\n    const compliance = await getDAVCompliance(context, filePath, options);\n    if (compliance.compliance.includes(\"sabredav-partialupdate\")) {\n        return await partialUpdateFileContentsSabredav(context, filePath, start, end, data, options);\n    }\n    if (compliance.server.includes(\"Apache\") &&\n        compliance.compliance.includes(\"\")) {\n        return await partialUpdateFileContentsApache(context, filePath, start, end, data, options);\n    }\n    throw new Layerr({\n        info: {\n            code: ErrorCode.NotSupported\n        }\n    }, \"Not supported\");\n}\nasync function partialUpdateFileContentsSabredav(context, filePath, start, end, data, options = {}) {\n    if (start > end || start < 0) {\n        // Actually, SabreDAV support negative start value,\n        // Do not support here for compatibility with Apache-style way\n        throw new Layerr({\n            info: {\n                code: ErrorCode.InvalidUpdateRange\n            }\n        }, `Invalid update range ${start} for partial update`);\n    }\n    const headers = {\n        \"Content-Type\": \"application/x-sabredav-partialupdate\",\n        \"Content-Length\": `${end - start + 1}`,\n        \"X-Update-Range\": `bytes=${start}-${end}`\n    };\n    const requestOptions = prepareRequestOptions({\n        url: joinURL(context.remoteURL, encodePath(filePath)),\n        method: \"PATCH\",\n        headers,\n        data\n    }, context, options);\n    const response = await request(requestOptions, context);\n    handleResponseCode(context, response);\n}\nasync function partialUpdateFileContentsApache(context, filePath, start, end, data, options = {}) {\n    if (start > end || start < 0) {\n        throw new Layerr({\n            info: {\n                code: ErrorCode.InvalidUpdateRange\n            }\n        }, `Invalid update range ${start} for partial update`);\n    }\n    const headers = {\n        \"Content-Type\": \"application/octet-stream\",\n        \"Content-Length\": `${end - start + 1}`,\n        \"Content-Range\": `bytes ${start}-${end}/*`\n    };\n    const requestOptions = prepareRequestOptions({\n        url: joinURL(context.remoteURL, encodePath(filePath)),\n        method: \"PUT\",\n        headers,\n        data\n    }, context, options);\n    const response = await request(requestOptions, context);\n    handleResponseCode(context, response);\n}\n","import { Layerr } from \"layerr\";\nimport Stream from \"stream\";\nimport { fromBase64 } from \"../tools/encode.js\";\nimport { joinURL } from \"../tools/url.js\";\nimport { encodePath } from \"../tools/path.js\";\nimport { calculateDataLength } from \"../tools/size.js\";\nimport { isReactNative, isWeb } from \"../compat/env.js\";\nimport { request, prepareRequestOptions } from \"../request.js\";\nimport { handleResponseCode } from \"../response.js\";\nimport { AuthType, ErrorCode } from \"../types.js\";\nexport async function putFileContents(context, filePath, data, options = {}) {\n    const { contentLength = true, overwrite = true } = options;\n    const headers = {\n        \"Content-Type\": \"application/octet-stream\"\n    };\n    if (!isWeb() &&\n        !isReactNative() &&\n        typeof Stream !== \"undefined\" &&\n        typeof Stream?.Readable !== \"undefined\" &&\n        data instanceof Stream.Readable) {\n        // Skip, no content-length\n    }\n    else if (contentLength === false) {\n        // Skip, disabled\n    }\n    else if (typeof contentLength === \"number\") {\n        headers[\"Content-Length\"] = `${contentLength}`;\n    }\n    else {\n        headers[\"Content-Length\"] = `${calculateDataLength(data)}`;\n    }\n    if (!overwrite) {\n        headers[\"If-None-Match\"] = \"*\";\n    }\n    const requestOptions = prepareRequestOptions({\n        url: joinURL(context.remoteURL, encodePath(filePath)),\n        method: \"PUT\",\n        headers,\n        data\n    }, context, options);\n    const response = await request(requestOptions, context);\n    try {\n        handleResponseCode(context, response);\n    }\n    catch (err) {\n        const error = err;\n        if (error.status === 412 && !overwrite) {\n            return false;\n        }\n        else {\n            throw error;\n        }\n    }\n    return true;\n}\nexport function getFileUploadLink(context, filePath) {\n    let url = `${joinURL(context.remoteURL, encodePath(filePath))}?Content-Type=application/octet-stream`;\n    const protocol = /^https:/i.test(url) ? \"https\" : \"http\";\n    switch (context.authType) {\n        case AuthType.None:\n            // Do nothing\n            break;\n        case AuthType.Password: {\n            const authPart = context.headers.Authorization.replace(/^Basic /i, \"\").trim();\n            const authContents = fromBase64(authPart);\n            url = url.replace(/^https?:\\/\\//, `${protocol}://${authContents}@`);\n            break;\n        }\n        default:\n            throw new Layerr({\n                info: {\n                    code: ErrorCode.LinkUnsupportedAuthType\n                }\n            }, `Unsupported auth type for file link: ${context.authType}`);\n    }\n    return url;\n}\n","import { parseSearch, parseXML } from \"../tools/dav.js\";\nimport { joinURL } from \"../tools/url.js\";\nimport { encodePath } from \"../tools/path.js\";\nimport { request, prepareRequestOptions } from \"../request.js\";\nimport { handleResponseCode, processResponsePayload } from \"../response.js\";\nexport async function getSearch(context, searchArbiter, options = {}) {\n    const { details: isDetailed = false } = options;\n    const requestOptions = prepareRequestOptions({\n        url: joinURL(context.remoteURL, encodePath(searchArbiter)),\n        method: \"SEARCH\",\n        headers: {\n            Accept: \"text/plain,application/xml\",\n            // Ensure a Content-Type header is set was this is required by e.g. sabre/dav\n            \"Content-Type\": context.headers[\"Content-Type\"] || \"application/xml; charset=utf-8\"\n        }\n    }, context, options);\n    const response = await request(requestOptions, context);\n    handleResponseCode(context, response);\n    const responseText = await response.text();\n    const responseData = await parseXML(responseText, context.parsing);\n    const results = parseSearch(responseData, searchArbiter, isDetailed);\n    return processResponsePayload(response, results, isDetailed);\n}\n","import { parseStat, parseXML } from \"../tools/dav.js\";\nimport { joinURL } from \"../tools/url.js\";\nimport { encodePath } from \"../tools/path.js\";\nimport { request, prepareRequestOptions } from \"../request.js\";\nimport { handleResponseCode, processResponsePayload } from \"../response.js\";\nexport async function getStat(context, filename, options = {}) {\n    const { details: isDetailed = false } = options;\n    const requestOptions = prepareRequestOptions({\n        url: joinURL(context.remoteURL, encodePath(filename)),\n        method: \"PROPFIND\",\n        headers: {\n            Accept: \"text/plain,application/xml\",\n            Depth: \"0\"\n        }\n    }, context, options);\n    const response = await request(requestOptions, context);\n    handleResponseCode(context, response);\n    const responseData = await response.text();\n    const result = await parseXML(responseData, context.parsing);\n    const stat = parseStat(result, filename, isDetailed);\n    return processResponsePayload(response, stat, isDetailed);\n}\n","import { Agent as HTTPAgent } from \"http\";\nimport { Agent as HTTPSAgent } from \"https\";\nimport { fetch } from \"@buttercup/fetch\";\nimport { getPatcher } from \"./compat/patcher.js\";\nimport { isReactNative, isWeb } from \"./compat/env.js\";\nimport { generateDigestAuthHeader, parseDigestAuth, responseIndicatesDigestAuth } from \"./auth/digest.js\";\nimport { cloneShallow, merge } from \"./tools/merge.js\";\nimport { mergeHeaders } from \"./tools/headers.js\";\nimport { requestDataToFetchBody } from \"./tools/body.js\";\nimport { AuthType } from \"./types.js\";\nimport { setupAuth } from \"./auth/index.js\";\nfunction getFetchOptions(requestOptions) {\n    let headers = {};\n    // Handle standard options\n    const opts = {\n        method: requestOptions.method\n    };\n    if (requestOptions.headers) {\n        headers = mergeHeaders(headers, requestOptions.headers);\n    }\n    if (typeof requestOptions.data !== \"undefined\") {\n        const [body, newHeaders] = requestDataToFetchBody(requestOptions.data);\n        opts.body = body;\n        headers = mergeHeaders(headers, newHeaders);\n    }\n    if (requestOptions.signal) {\n        opts.signal = requestOptions.signal;\n    }\n    if (requestOptions.withCredentials) {\n        opts.credentials = \"include\";\n    }\n    // Check for node-specific options\n    if (!isWeb() && !isReactNative()) {\n        if (requestOptions.httpAgent || requestOptions.httpsAgent) {\n            opts.agent = (parsedURL) => {\n                if (parsedURL.protocol === \"http:\") {\n                    return requestOptions.httpAgent || new HTTPAgent();\n                }\n                return requestOptions.httpsAgent || new HTTPSAgent();\n            };\n        }\n    }\n    // Attach headers\n    opts.headers = headers;\n    return opts;\n}\nexport function prepareRequestOptions(requestOptions, context, userOptions) {\n    const finalOptions = cloneShallow(requestOptions);\n    finalOptions.headers = mergeHeaders(context.headers, finalOptions.headers || {}, userOptions.headers || {});\n    if (typeof userOptions.data !== \"undefined\") {\n        finalOptions.data = userOptions.data;\n    }\n    if (userOptions.signal) {\n        finalOptions.signal = userOptions.signal;\n    }\n    if (context.httpAgent) {\n        finalOptions.httpAgent = context.httpAgent;\n    }\n    if (context.httpsAgent) {\n        finalOptions.httpsAgent = context.httpsAgent;\n    }\n    if (context.digest) {\n        finalOptions._digest = context.digest;\n    }\n    if (typeof context.withCredentials === \"boolean\") {\n        finalOptions.withCredentials = context.withCredentials;\n    }\n    return finalOptions;\n}\nexport async function request(requestOptions, context) {\n    if (context.authType === AuthType.Auto) {\n        return requestAuto(requestOptions, context);\n    }\n    if (requestOptions._digest) {\n        return requestDigest(requestOptions);\n    }\n    return requestStandard(requestOptions);\n}\nasync function requestAuto(requestOptions, context) {\n    const response = await requestStandard(requestOptions);\n    if (response.ok) {\n        context.authType = AuthType.Password;\n        return response;\n    }\n    if (response.status == 401 && responseIndicatesDigestAuth(response)) {\n        context.authType = AuthType.Digest;\n        setupAuth(context, context.username, context.password, undefined, undefined);\n        requestOptions._digest = context.digest;\n        return requestDigest(requestOptions);\n    }\n    return response;\n}\nasync function requestDigest(requestOptions) {\n    // Remove client's digest authentication object from request options\n    const _digest = requestOptions._digest;\n    delete requestOptions._digest;\n    // If client is already using digest authentication, include the digest authorization header\n    if (_digest.hasDigestAuth) {\n        requestOptions = merge(requestOptions, {\n            headers: {\n                Authorization: generateDigestAuthHeader(requestOptions, _digest)\n            }\n        });\n    }\n    // Perform digest request + check\n    const response = await requestStandard(requestOptions);\n    if (response.status == 401) {\n        _digest.hasDigestAuth = parseDigestAuth(response, _digest);\n        if (_digest.hasDigestAuth) {\n            requestOptions = merge(requestOptions, {\n                headers: {\n                    Authorization: generateDigestAuthHeader(requestOptions, _digest)\n                }\n            });\n            const response2 = await requestStandard(requestOptions);\n            if (response2.status == 401) {\n                _digest.hasDigestAuth = false;\n            }\n            else {\n                _digest.nc++;\n            }\n            return response2;\n        }\n    }\n    else {\n        _digest.nc++;\n    }\n    return response;\n}\nfunction requestStandard(requestOptions) {\n    const patcher = getPatcher();\n    return patcher.patchInline(\"request\", (options) => patcher.patchInline(\"fetch\", fetch, options.url, getFetchOptions(options)), requestOptions);\n}\n","import { minimatch } from \"minimatch\";\nimport { convertResponseHeaders } from \"./tools/headers.js\";\nexport function createErrorFromResponse(response, prefix = \"\") {\n    const err = new Error(`${prefix}Invalid response: ${response.status} ${response.statusText}`);\n    err.status = response.status;\n    err.response = response;\n    return err;\n}\nexport function handleResponseCode(context, response) {\n    const { status } = response;\n    if (status === 401 && context.digest)\n        return response;\n    if (status >= 400) {\n        const err = createErrorFromResponse(response);\n        throw err;\n    }\n    return response;\n}\nexport function processGlobFilter(files, glob) {\n    return files.filter(file => minimatch(file.filename, glob, { matchBase: true }));\n}\n/**\n * Process a response payload (eg. from `customRequest`) and\n *  prepare it for further processing. Exposed for custom\n *  request handling.\n * @param response The response for a request\n * @param data The data returned\n * @param isDetailed Whether or not a detailed result is\n *  requested\n * @returns The response data, or a detailed response object\n *  if required\n */\nexport function processResponsePayload(response, data, isDetailed = false) {\n    return isDetailed\n        ? {\n            data,\n            headers: response.headers ? convertResponseHeaders(response.headers) : {},\n            status: response.status,\n            statusText: response.statusText\n        }\n        : data;\n}\n","import Stream from \"stream\";\nimport { isArrayBuffer } from \"../compat/arrayBuffer.js\";\nimport { isBuffer } from \"../compat/buffer.js\";\nimport { isReactNative, isWeb } from \"../compat/env.js\";\nexport function requestDataToFetchBody(data) {\n    if (!isWeb() && !isReactNative() && data instanceof Stream.Readable) {\n        // @ts-ignore\n        return [data, {}];\n    }\n    if (typeof data === \"string\") {\n        return [data, {}];\n    }\n    else if (isBuffer(data)) {\n        return [data, {}];\n    }\n    else if (isArrayBuffer(data)) {\n        return [data, {}];\n    }\n    else if (data && typeof data === \"object\") {\n        return [\n            JSON.stringify(data),\n            {\n                \"content-type\": \"application/json\"\n            }\n        ];\n    }\n    throw new Error(`Unable to convert request body: Unexpected body type: ${typeof data}`);\n}\n","import md5 from \"md5\";\nexport function ha1Compute(algorithm, user, realm, pass, nonce, cnonce, ha1) {\n    const ha1Hash = ha1 || md5(`${user}:${realm}:${pass}`);\n    if (algorithm && algorithm.toLowerCase() === \"md5-sess\") {\n        return md5(`${ha1Hash}:${nonce}:${cnonce}`);\n    }\n    return ha1Hash;\n}\n","import path from \"path-posix\";\nimport { XMLParser } from \"fast-xml-parser\";\nimport nestedProp from \"nested-property\";\nimport { encodePath, normalisePath } from \"./path.js\";\nvar PropertyType;\n(function (PropertyType) {\n    PropertyType[\"Array\"] = \"array\";\n    PropertyType[\"Object\"] = \"object\";\n    PropertyType[\"Original\"] = \"original\";\n})(PropertyType || (PropertyType = {}));\nfunction getParser({ attributeNamePrefix, attributeParsers, tagParsers }) {\n    return new XMLParser({\n        allowBooleanAttributes: true,\n        attributeNamePrefix,\n        textNodeName: \"text\",\n        ignoreAttributes: false,\n        removeNSPrefix: true,\n        numberParseOptions: {\n            hex: true,\n            leadingZeros: false\n        },\n        attributeValueProcessor(_, attrValue, jPath) {\n            for (const processor of attributeParsers) {\n                try {\n                    const value = processor(jPath, attrValue);\n                    if (value !== attrValue) {\n                        return value;\n                    }\n                }\n                catch (error) {\n                    // skipping this invalid parser\n                }\n            }\n            return attrValue;\n        },\n        tagValueProcessor(tagName, tagValue, jPath) {\n            for (const processor of tagParsers) {\n                try {\n                    const value = processor(jPath, tagValue);\n                    if (value !== tagValue) {\n                        return value;\n                    }\n                }\n                catch (error) {\n                    // skipping this invalid parser\n                }\n            }\n            return tagValue;\n        }\n    });\n}\n/**\n * Tag parser for the displayname prop.\n * Ensure that the displayname is not parsed and always handled as is.\n * @param path The jPath of the tag\n * @param value The text value of the tag\n */\nexport function displaynameTagParser(path, value) {\n    if (path.endsWith(\"propstat.prop.displayname\")) {\n        // Do not parse the displayname, because this causes e.g. '2024.10' to result in number 2024.1\n        return;\n    }\n    return value;\n}\nfunction getPropertyOfType(obj, prop, type = PropertyType.Original) {\n    const val = nestedProp.get(obj, prop);\n    if (type === \"array\" && Array.isArray(val) === false) {\n        return [val];\n    }\n    else if (type === \"object\" && Array.isArray(val)) {\n        return val[0];\n    }\n    return val;\n}\nfunction normaliseResponse(response) {\n    const output = Object.assign({}, response);\n    // Only either status OR propstat is allowed\n    if (output.status) {\n        nestedProp.set(output, \"status\", getPropertyOfType(output, \"status\", PropertyType.Object));\n    }\n    else {\n        nestedProp.set(output, \"propstat\", getPropertyOfType(output, \"propstat\", PropertyType.Object));\n        nestedProp.set(output, \"propstat.prop\", getPropertyOfType(output, \"propstat.prop\", PropertyType.Object));\n    }\n    return output;\n}\nfunction normaliseResult(result) {\n    const { multistatus } = result;\n    if (multistatus === \"\") {\n        return {\n            multistatus: {\n                response: []\n            }\n        };\n    }\n    if (!multistatus) {\n        throw new Error(\"Invalid response: No root multistatus found\");\n    }\n    const output = {\n        multistatus: Array.isArray(multistatus) ? multistatus[0] : multistatus\n    };\n    nestedProp.set(output, \"multistatus.response\", getPropertyOfType(output, \"multistatus.response\", PropertyType.Array));\n    nestedProp.set(output, \"multistatus.response\", nestedProp.get(output, \"multistatus.response\").map(response => normaliseResponse(response)));\n    return output;\n}\n/**\n * Parse an XML response from a WebDAV service,\n *  converting it to an internal DAV result\n * @param xml The raw XML string\n * @param context The current client context\n * @returns A parsed and processed DAV result\n */\nexport function parseXML(xml, context) {\n    // backwards compatibility as this method is exported from the package\n    context = context ?? {\n        attributeNamePrefix: \"@\",\n        attributeParsers: [],\n        tagParsers: [displaynameTagParser]\n    };\n    return new Promise(resolve => {\n        const result = getParser(context).parse(xml);\n        resolve(normaliseResult(result));\n    });\n}\n/**\n * Get a file stat result from given DAV properties\n * @param props DAV properties\n * @param filename The filename for the file stat\n * @param isDetailed Whether or not the raw props of the resource should be returned\n * @returns A file stat result\n */\nexport function prepareFileFromProps(props, filename, isDetailed = false) {\n    // Last modified time, raw size, item type and mime\n    const { getlastmodified: lastMod = null, getcontentlength: rawSize = \"0\", resourcetype: resourceType = null, getcontenttype: mimeType = null, getetag: etag = null } = props;\n    const type = resourceType &&\n        typeof resourceType === \"object\" &&\n        typeof resourceType.collection !== \"undefined\"\n        ? \"directory\"\n        : \"file\";\n    const stat = {\n        filename,\n        basename: path.basename(filename),\n        lastmod: lastMod,\n        size: parseInt(rawSize, 10),\n        type,\n        etag: typeof etag === \"string\" ? etag.replace(/\"/g, \"\") : null\n    };\n    if (type === \"file\") {\n        stat.mime = mimeType && typeof mimeType === \"string\" ? mimeType.split(\";\")[0] : \"\";\n    }\n    if (isDetailed) {\n        // The XML parser tries to interpret values, but the display name is required to be a string\n        if (typeof props.displayname !== \"undefined\") {\n            props.displayname = String(props.displayname);\n        }\n        stat.props = props;\n    }\n    return stat;\n}\n/**\n * Parse a DAV result for file stats\n * @param result The resulting DAV response\n * @param filename The filename that was stat'd\n * @param isDetailed Whether or not the raw props of\n *  the resource should be returned\n * @returns A file stat result\n */\nexport function parseStat(result, filename, isDetailed = false) {\n    let responseItem = null;\n    try {\n        // should be a propstat response, if not the if below will throw an error\n        if (result.multistatus.response[0].propstat) {\n            responseItem = result.multistatus.response[0];\n        }\n    }\n    catch (e) {\n        /* ignore */\n    }\n    if (!responseItem) {\n        throw new Error(\"Failed getting item stat: bad response\");\n    }\n    const { propstat: { prop: props, status: statusLine } } = responseItem;\n    // As defined in https://tools.ietf.org/html/rfc2068#section-6.1\n    const [_, statusCodeStr, statusText] = statusLine.split(\" \", 3);\n    const statusCode = parseInt(statusCodeStr, 10);\n    if (statusCode >= 400) {\n        const err = new Error(`Invalid response: ${statusCode} ${statusText}`);\n        err.status = statusCode;\n        throw err;\n    }\n    const filePath = normalisePath(filename);\n    return prepareFileFromProps(props, filePath, isDetailed);\n}\n/**\n * Parse a DAV result for a search request\n *\n * @param result The resulting DAV response\n * @param searchArbiter The collection path that was searched\n * @param isDetailed Whether or not the raw props of the resource should be returned\n */\nexport function parseSearch(result, searchArbiter, isDetailed) {\n    const response = {\n        truncated: false,\n        results: []\n    };\n    response.truncated = result.multistatus.response.some(v => {\n        return ((v.status || v.propstat?.status).split(\" \", 3)?.[1] === \"507\" &&\n            v.href.replace(/\\/$/, \"\").endsWith(encodePath(searchArbiter).replace(/\\/$/, \"\")));\n    });\n    result.multistatus.response.forEach(result => {\n        if (result.propstat === undefined) {\n            return;\n        }\n        const filename = result.href.split(\"/\").map(decodeURIComponent).join(\"/\");\n        response.results.push(prepareFileFromProps(result.propstat.prop, filename, isDetailed));\n    });\n    return response;\n}\n/**\n * Translate a disk quota indicator to a recognised\n *  value (includes \"unlimited\" and \"unknown\")\n * @param value The quota indicator, eg. \"-3\"\n * @returns The value in bytes, or another indicator\n */\nexport function translateDiskSpace(value) {\n    switch (String(value)) {\n        case \"-3\":\n            return \"unlimited\";\n        case \"-2\":\n        /* falls-through */\n        case \"-1\":\n            // -1 is non-computed\n            return \"unknown\";\n        default:\n            return parseInt(String(value), 10);\n    }\n}\n","import base64 from \"base-64\";\nimport { decodeHTML } from \"entities\";\nimport { isWeb } from \"../compat/env.js\";\nexport function decodeHTMLEntities(text) {\n    if (isWeb()) {\n        const txt = document.createElement(\"textarea\");\n        txt.innerHTML = text;\n        return txt.value;\n    }\n    return decodeHTML(text);\n}\nexport function fromBase64(text) {\n    return base64.decode(text);\n}\nexport function toBase64(text) {\n    return base64.encode(text);\n}\n","export function convertResponseHeaders(headers) {\n    const output = {};\n    for (const key of headers.keys()) {\n        output[key] = headers.get(key);\n    }\n    return output;\n}\nexport function mergeHeaders(...headerPayloads) {\n    if (headerPayloads.length === 0)\n        return {};\n    const headerKeys = {};\n    return headerPayloads.reduce((output, headers) => {\n        Object.keys(headers).forEach(header => {\n            const lowerHeader = header.toLowerCase();\n            if (headerKeys.hasOwnProperty(lowerHeader)) {\n                output[headerKeys[lowerHeader]] = headers[header];\n            }\n            else {\n                headerKeys[lowerHeader] = header;\n                output[header] = headers[header];\n            }\n        });\n        return output;\n    }, {});\n}\n","export function cloneShallow(obj) {\n    return isPlainObject(obj)\n        ? Object.assign({}, obj)\n        : Object.setPrototypeOf(Object.assign({}, obj), Object.getPrototypeOf(obj));\n}\nfunction isPlainObject(obj) {\n    if (typeof obj !== \"object\" ||\n        obj === null ||\n        Object.prototype.toString.call(obj) != \"[object Object]\") {\n        // Not an object\n        return false;\n    }\n    if (Object.getPrototypeOf(obj) === null) {\n        return true;\n    }\n    let proto = obj;\n    // Find the prototype\n    while (Object.getPrototypeOf(proto) !== null) {\n        proto = Object.getPrototypeOf(proto);\n    }\n    return Object.getPrototypeOf(obj) === proto;\n}\nexport function merge(...args) {\n    let output = null, items = [...args];\n    while (items.length > 0) {\n        const nextItem = items.shift();\n        if (!output) {\n            output = cloneShallow(nextItem);\n        }\n        else {\n            output = mergeObjects(output, nextItem);\n        }\n    }\n    return output;\n}\nfunction mergeObjects(obj1, obj2) {\n    const output = cloneShallow(obj1);\n    Object.keys(obj2).forEach(key => {\n        if (!output.hasOwnProperty(key)) {\n            output[key] = obj2[key];\n            return;\n        }\n        if (Array.isArray(obj2[key])) {\n            output[key] = Array.isArray(output[key])\n                ? [...output[key], ...obj2[key]]\n                : [...obj2[key]];\n        }\n        else if (typeof obj2[key] === \"object\" && !!obj2[key]) {\n            output[key] =\n                typeof output[key] === \"object\" && !!output[key]\n                    ? mergeObjects(output[key], obj2[key])\n                    : cloneShallow(obj2[key]);\n        }\n        else {\n            output[key] = obj2[key];\n        }\n    });\n    return output;\n}\n","import { Layerr } from \"layerr\";\nimport path from \"path-posix\";\nconst SEP_PATH_POSIX = \"__PATH_SEPARATOR_POSIX__\";\nconst SEP_PATH_WINDOWS = \"__PATH_SEPARATOR_WINDOWS__\";\nexport function encodePath(filePath) {\n    try {\n        const replaced = filePath.replace(/\\//g, SEP_PATH_POSIX).replace(/\\\\\\\\/g, SEP_PATH_WINDOWS);\n        const formatted = encodeURIComponent(replaced);\n        return formatted.split(SEP_PATH_WINDOWS).join(\"\\\\\\\\\").split(SEP_PATH_POSIX).join(\"/\");\n    }\n    catch (err) {\n        throw new Layerr(err, \"Failed encoding path\");\n    }\n}\nexport function getAllDirectories(directory) {\n    if (!directory || directory === \"/\")\n        return [];\n    let currentPath = directory;\n    const output = [];\n    do {\n        output.push(currentPath);\n        currentPath = path.dirname(currentPath);\n    } while (currentPath && currentPath !== \"/\");\n    return output;\n}\nexport function makePathAbsolute(pathStr) {\n    return pathStr.startsWith(\"/\") ? pathStr : \"/\" + pathStr;\n}\nexport function normalisePath(pathStr) {\n    let normalisedPath = pathStr;\n    if (normalisedPath[0] !== \"/\") {\n        normalisedPath = \"/\" + normalisedPath;\n    }\n    if (/^.+\\/$/.test(normalisedPath)) {\n        normalisedPath = normalisedPath.substr(0, normalisedPath.length - 1);\n    }\n    return normalisedPath;\n}\n","import { translateDiskSpace } from \"./dav.js\";\nexport function parseQuota(result) {\n    try {\n        const [responseItem] = result.multistatus.response;\n        const { propstat: { prop: { \"quota-used-bytes\": quotaUsed, \"quota-available-bytes\": quotaAvail } } } = responseItem;\n        return typeof quotaUsed !== \"undefined\" && typeof quotaAvail !== \"undefined\"\n            ? {\n                // As it could be both a string or a number ensure we are working with a number\n                used: parseInt(String(quotaUsed), 10),\n                available: translateDiskSpace(quotaAvail)\n            }\n            : null;\n    }\n    catch (err) {\n        /* ignore */\n    }\n    return null;\n}\n","import { Layerr } from \"layerr\";\nimport { byteLength } from \"byte-length\";\nimport { isArrayBuffer } from \"../compat/arrayBuffer.js\";\nimport { isBuffer } from \"../compat/buffer.js\";\nimport { ErrorCode } from \"../types.js\";\nexport function calculateDataLength(data) {\n    if (isArrayBuffer(data)) {\n        return data.byteLength;\n    }\n    else if (isBuffer(data)) {\n        return data.length;\n    }\n    else if (typeof data === \"string\") {\n        return byteLength(data);\n    }\n    throw new Layerr({\n        info: {\n            code: ErrorCode.DataTypeNoLength\n        }\n    }, \"Cannot calculate data length: Invalid type\");\n}\n","import URL from \"url-parse\";\nimport { Layerr } from \"layerr\";\nimport _joinURL from \"url-join\";\nimport { normalisePath } from \"./path.js\";\nexport function extractURLPath(fullURL) {\n    const url = new URL(fullURL);\n    let urlPath = url.pathname;\n    if (urlPath.length <= 0) {\n        urlPath = \"/\";\n    }\n    return normalisePath(urlPath);\n}\nexport function joinURL(...parts) {\n    return _joinURL(parts.reduce((output, nextPart, partIndex) => {\n        if (partIndex === 0 ||\n            nextPart !== \"/\" ||\n            (nextPart === \"/\" && output[output.length - 1] !== \"/\")) {\n            output.push(nextPart);\n        }\n        return output;\n    }, []));\n}\nexport function normaliseHREF(href) {\n    try {\n        const normalisedHref = href.replace(/^https?:\\/\\/[^\\/]+/, \"\");\n        return normalisedHref;\n    }\n    catch (err) {\n        throw new Layerr(err, \"Failed normalising HREF\");\n    }\n}\n","import { XMLParser, XMLBuilder } from \"fast-xml-parser\";\nexport function generateLockXML(ownerHREF) {\n    return getBuilder().build(namespace({\n        lockinfo: {\n            \"@_xmlns:d\": \"DAV:\",\n            lockscope: {\n                exclusive: {}\n            },\n            locktype: {\n                write: {}\n            },\n            owner: {\n                href: ownerHREF\n            }\n        }\n    }, \"d\"));\n}\nfunction getBuilder() {\n    return new XMLBuilder({\n        attributeNamePrefix: \"@_\",\n        format: true,\n        ignoreAttributes: false,\n        suppressEmptyNode: true\n    });\n}\nfunction getParser() {\n    return new XMLParser({\n        removeNSPrefix: true,\n        parseAttributeValue: true,\n        parseTagValue: true\n    });\n}\nfunction namespace(obj, ns) {\n    const copy = { ...obj };\n    for (const key in copy) {\n        if (!copy.hasOwnProperty(key)) {\n            continue;\n        }\n        if (copy[key] && typeof copy[key] === \"object\" && key.indexOf(\":\") === -1) {\n            copy[`${ns}:${key}`] = namespace(copy[key], ns);\n            delete copy[key];\n        }\n        else if (/^@_/.test(key) === false) {\n            copy[`${ns}:${key}`] = copy[key];\n            delete copy[key];\n        }\n    }\n    return copy;\n}\nexport function parseGenericResponse(xml) {\n    return getParser().parse(xml);\n}\n","export { Request, Response } from \"@buttercup/fetch\";\nexport var AuthType;\n(function (AuthType) {\n    AuthType[\"Auto\"] = \"auto\";\n    AuthType[\"Digest\"] = \"digest\";\n    AuthType[\"None\"] = \"none\";\n    AuthType[\"Password\"] = \"password\";\n    AuthType[\"Token\"] = \"token\";\n})(AuthType || (AuthType = {}));\nexport var ErrorCode;\n(function (ErrorCode) {\n    ErrorCode[\"DataTypeNoLength\"] = \"data-type-no-length\";\n    ErrorCode[\"InvalidAuthType\"] = \"invalid-auth-type\";\n    ErrorCode[\"InvalidOutputFormat\"] = \"invalid-output-format\";\n    ErrorCode[\"LinkUnsupportedAuthType\"] = \"link-unsupported-auth\";\n    ErrorCode[\"InvalidUpdateRange\"] = \"invalid-update-range\";\n    ErrorCode[\"NotSupported\"] = \"not-supported\";\n})(ErrorCode || (ErrorCode = {}));\n","// Adapted from https://github.com/mathiasbynens/he/blob/36afe179392226cf1b6ccdb16ebbb7a5a844d93a/src/he.js#L106-L134\nvar _a;\nconst decodeMap = new Map([\n    [0, 65533],\n    // C1 Unicode control character reference replacements\n    [128, 8364],\n    [130, 8218],\n    [131, 402],\n    [132, 8222],\n    [133, 8230],\n    [134, 8224],\n    [135, 8225],\n    [136, 710],\n    [137, 8240],\n    [138, 352],\n    [139, 8249],\n    [140, 338],\n    [142, 381],\n    [145, 8216],\n    [146, 8217],\n    [147, 8220],\n    [148, 8221],\n    [149, 8226],\n    [150, 8211],\n    [151, 8212],\n    [152, 732],\n    [153, 8482],\n    [154, 353],\n    [155, 8250],\n    [156, 339],\n    [158, 382],\n    [159, 376],\n]);\n/**\n * Polyfill for `String.fromCodePoint`. It is used to create a string from a Unicode code point.\n */\nexport const fromCodePoint = \n// eslint-disable-next-line @typescript-eslint/no-unnecessary-condition, n/no-unsupported-features/es-builtins\n(_a = String.fromCodePoint) !== null && _a !== void 0 ? _a : function (codePoint) {\n    let output = \"\";\n    if (codePoint > 65535) {\n        codePoint -= 65536;\n        output += String.fromCharCode(((codePoint >>> 10) & 1023) | 55296);\n        codePoint = 56320 | (codePoint & 1023);\n    }\n    output += String.fromCharCode(codePoint);\n    return output;\n};\n/**\n * Replace the given code point with a replacement character if it is a\n * surrogate or is outside the valid range. Otherwise return the code\n * point unchanged.\n */\nexport function replaceCodePoint(codePoint) {\n    var _a;\n    if ((codePoint >= 55296 && codePoint <= 57343) ||\n        codePoint > 1114111) {\n        return 65533;\n    }\n    return (_a = decodeMap.get(codePoint)) !== null && _a !== void 0 ? _a : codePoint;\n}\n/**\n * Replace the code point if relevant, then convert it to a string.\n *\n * @deprecated Use `fromCodePoint(replaceCodePoint(codePoint))` instead.\n * @param codePoint The code point to decode.\n * @returns The decoded code point.\n */\nexport function decodeCodePoint(codePoint) {\n    return fromCodePoint(replaceCodePoint(codePoint));\n}\n//# sourceMappingURL=decode-codepoint.js.map","import { htmlDecodeTree } from \"./generated/decode-data-html.js\";\nimport { xmlDecodeTree } from \"./generated/decode-data-xml.js\";\nimport { replaceCodePoint, fromCodePoint } from \"./decode-codepoint.js\";\nvar CharCodes;\n(function (CharCodes) {\n    CharCodes[CharCodes[\"NUM\"] = 35] = \"NUM\";\n    CharCodes[CharCodes[\"SEMI\"] = 59] = \"SEMI\";\n    CharCodes[CharCodes[\"EQUALS\"] = 61] = \"EQUALS\";\n    CharCodes[CharCodes[\"ZERO\"] = 48] = \"ZERO\";\n    CharCodes[CharCodes[\"NINE\"] = 57] = \"NINE\";\n    CharCodes[CharCodes[\"LOWER_A\"] = 97] = \"LOWER_A\";\n    CharCodes[CharCodes[\"LOWER_F\"] = 102] = \"LOWER_F\";\n    CharCodes[CharCodes[\"LOWER_X\"] = 120] = \"LOWER_X\";\n    CharCodes[CharCodes[\"LOWER_Z\"] = 122] = \"LOWER_Z\";\n    CharCodes[CharCodes[\"UPPER_A\"] = 65] = \"UPPER_A\";\n    CharCodes[CharCodes[\"UPPER_F\"] = 70] = \"UPPER_F\";\n    CharCodes[CharCodes[\"UPPER_Z\"] = 90] = \"UPPER_Z\";\n})(CharCodes || (CharCodes = {}));\n/** Bit that needs to be set to convert an upper case ASCII character to lower case */\nconst TO_LOWER_BIT = 32;\nexport var BinTrieFlags;\n(function (BinTrieFlags) {\n    BinTrieFlags[BinTrieFlags[\"VALUE_LENGTH\"] = 49152] = \"VALUE_LENGTH\";\n    BinTrieFlags[BinTrieFlags[\"BRANCH_LENGTH\"] = 16256] = \"BRANCH_LENGTH\";\n    BinTrieFlags[BinTrieFlags[\"JUMP_TABLE\"] = 127] = \"JUMP_TABLE\";\n})(BinTrieFlags || (BinTrieFlags = {}));\nfunction isNumber(code) {\n    return code >= CharCodes.ZERO && code <= CharCodes.NINE;\n}\nfunction isHexadecimalCharacter(code) {\n    return ((code >= CharCodes.UPPER_A && code <= CharCodes.UPPER_F) ||\n        (code >= CharCodes.LOWER_A && code <= CharCodes.LOWER_F));\n}\nfunction isAsciiAlphaNumeric(code) {\n    return ((code >= CharCodes.UPPER_A && code <= CharCodes.UPPER_Z) ||\n        (code >= CharCodes.LOWER_A && code <= CharCodes.LOWER_Z) ||\n        isNumber(code));\n}\n/**\n * Checks if the given character is a valid end character for an entity in an attribute.\n *\n * Attribute values that aren't terminated properly aren't parsed, and shouldn't lead to a parser error.\n * See the example in https://html.spec.whatwg.org/multipage/parsing.html#named-character-reference-state\n */\nfunction isEntityInAttributeInvalidEnd(code) {\n    return code === CharCodes.EQUALS || isAsciiAlphaNumeric(code);\n}\nvar EntityDecoderState;\n(function (EntityDecoderState) {\n    EntityDecoderState[EntityDecoderState[\"EntityStart\"] = 0] = \"EntityStart\";\n    EntityDecoderState[EntityDecoderState[\"NumericStart\"] = 1] = \"NumericStart\";\n    EntityDecoderState[EntityDecoderState[\"NumericDecimal\"] = 2] = \"NumericDecimal\";\n    EntityDecoderState[EntityDecoderState[\"NumericHex\"] = 3] = \"NumericHex\";\n    EntityDecoderState[EntityDecoderState[\"NamedEntity\"] = 4] = \"NamedEntity\";\n})(EntityDecoderState || (EntityDecoderState = {}));\nexport var DecodingMode;\n(function (DecodingMode) {\n    /** Entities in text nodes that can end with any character. */\n    DecodingMode[DecodingMode[\"Legacy\"] = 0] = \"Legacy\";\n    /** Only allow entities terminated with a semicolon. */\n    DecodingMode[DecodingMode[\"Strict\"] = 1] = \"Strict\";\n    /** Entities in attributes have limitations on ending characters. */\n    DecodingMode[DecodingMode[\"Attribute\"] = 2] = \"Attribute\";\n})(DecodingMode || (DecodingMode = {}));\n/**\n * Token decoder with support of writing partial entities.\n */\nexport class EntityDecoder {\n    constructor(\n    /** The tree used to decode entities. */\n    decodeTree, \n    /**\n     * The function that is called when a codepoint is decoded.\n     *\n     * For multi-byte named entities, this will be called multiple times,\n     * with the second codepoint, and the same `consumed` value.\n     *\n     * @param codepoint The decoded codepoint.\n     * @param consumed The number of bytes consumed by the decoder.\n     */\n    emitCodePoint, \n    /** An object that is used to produce errors. */\n    errors) {\n        this.decodeTree = decodeTree;\n        this.emitCodePoint = emitCodePoint;\n        this.errors = errors;\n        /** The current state of the decoder. */\n        this.state = EntityDecoderState.EntityStart;\n        /** Characters that were consumed while parsing an entity. */\n        this.consumed = 1;\n        /**\n         * The result of the entity.\n         *\n         * Either the result index of a numeric entity, or the codepoint of a\n         * numeric entity.\n         */\n        this.result = 0;\n        /** The current index in the decode tree. */\n        this.treeIndex = 0;\n        /** The number of characters that were consumed in excess. */\n        this.excess = 1;\n        /** The mode in which the decoder is operating. */\n        this.decodeMode = DecodingMode.Strict;\n    }\n    /** Resets the instance to make it reusable. */\n    startEntity(decodeMode) {\n        this.decodeMode = decodeMode;\n        this.state = EntityDecoderState.EntityStart;\n        this.result = 0;\n        this.treeIndex = 0;\n        this.excess = 1;\n        this.consumed = 1;\n    }\n    /**\n     * Write an entity to the decoder. This can be called multiple times with partial entities.\n     * If the entity is incomplete, the decoder will return -1.\n     *\n     * Mirrors the implementation of `getDecoder`, but with the ability to stop decoding if the\n     * entity is incomplete, and resume when the next string is written.\n     *\n     * @param input The string containing the entity (or a continuation of the entity).\n     * @param offset The offset at which the entity begins. Should be 0 if this is not the first call.\n     * @returns The number of characters that were consumed, or -1 if the entity is incomplete.\n     */\n    write(input, offset) {\n        switch (this.state) {\n            case EntityDecoderState.EntityStart: {\n                if (input.charCodeAt(offset) === CharCodes.NUM) {\n                    this.state = EntityDecoderState.NumericStart;\n                    this.consumed += 1;\n                    return this.stateNumericStart(input, offset + 1);\n                }\n                this.state = EntityDecoderState.NamedEntity;\n                return this.stateNamedEntity(input, offset);\n            }\n            case EntityDecoderState.NumericStart: {\n                return this.stateNumericStart(input, offset);\n            }\n            case EntityDecoderState.NumericDecimal: {\n                return this.stateNumericDecimal(input, offset);\n            }\n            case EntityDecoderState.NumericHex: {\n                return this.stateNumericHex(input, offset);\n            }\n            case EntityDecoderState.NamedEntity: {\n                return this.stateNamedEntity(input, offset);\n            }\n        }\n    }\n    /**\n     * Switches between the numeric decimal and hexadecimal states.\n     *\n     * Equivalent to the `Numeric character reference state` in the HTML spec.\n     *\n     * @param input The string containing the entity (or a continuation of the entity).\n     * @param offset The current offset.\n     * @returns The number of characters that were consumed, or -1 if the entity is incomplete.\n     */\n    stateNumericStart(input, offset) {\n        if (offset >= input.length) {\n            return -1;\n        }\n        if ((input.charCodeAt(offset) | TO_LOWER_BIT) === CharCodes.LOWER_X) {\n            this.state = EntityDecoderState.NumericHex;\n            this.consumed += 1;\n            return this.stateNumericHex(input, offset + 1);\n        }\n        this.state = EntityDecoderState.NumericDecimal;\n        return this.stateNumericDecimal(input, offset);\n    }\n    addToNumericResult(input, start, end, base) {\n        if (start !== end) {\n            const digitCount = end - start;\n            this.result =\n                this.result * Math.pow(base, digitCount) +\n                    Number.parseInt(input.substr(start, digitCount), base);\n            this.consumed += digitCount;\n        }\n    }\n    /**\n     * Parses a hexadecimal numeric entity.\n     *\n     * Equivalent to the `Hexademical character reference state` in the HTML spec.\n     *\n     * @param input The string containing the entity (or a continuation of the entity).\n     * @param offset The current offset.\n     * @returns The number of characters that were consumed, or -1 if the entity is incomplete.\n     */\n    stateNumericHex(input, offset) {\n        const startIndex = offset;\n        while (offset < input.length) {\n            const char = input.charCodeAt(offset);\n            if (isNumber(char) || isHexadecimalCharacter(char)) {\n                offset += 1;\n            }\n            else {\n                this.addToNumericResult(input, startIndex, offset, 16);\n                return this.emitNumericEntity(char, 3);\n            }\n        }\n        this.addToNumericResult(input, startIndex, offset, 16);\n        return -1;\n    }\n    /**\n     * Parses a decimal numeric entity.\n     *\n     * Equivalent to the `Decimal character reference state` in the HTML spec.\n     *\n     * @param input The string containing the entity (or a continuation of the entity).\n     * @param offset The current offset.\n     * @returns The number of characters that were consumed, or -1 if the entity is incomplete.\n     */\n    stateNumericDecimal(input, offset) {\n        const startIndex = offset;\n        while (offset < input.length) {\n            const char = input.charCodeAt(offset);\n            if (isNumber(char)) {\n                offset += 1;\n            }\n            else {\n                this.addToNumericResult(input, startIndex, offset, 10);\n                return this.emitNumericEntity(char, 2);\n            }\n        }\n        this.addToNumericResult(input, startIndex, offset, 10);\n        return -1;\n    }\n    /**\n     * Validate and emit a numeric entity.\n     *\n     * Implements the logic from the `Hexademical character reference start\n     * state` and `Numeric character reference end state` in the HTML spec.\n     *\n     * @param lastCp The last code point of the entity. Used to see if the\n     *               entity was terminated with a semicolon.\n     * @param expectedLength The minimum number of characters that should be\n     *                       consumed. Used to validate that at least one digit\n     *                       was consumed.\n     * @returns The number of characters that were consumed.\n     */\n    emitNumericEntity(lastCp, expectedLength) {\n        var _a;\n        // Ensure we consumed at least one digit.\n        if (this.consumed <= expectedLength) {\n            (_a = this.errors) === null || _a === void 0 ? void 0 : _a.absenceOfDigitsInNumericCharacterReference(this.consumed);\n            return 0;\n        }\n        // Figure out if this is a legit end of the entity\n        if (lastCp === CharCodes.SEMI) {\n            this.consumed += 1;\n        }\n        else if (this.decodeMode === DecodingMode.Strict) {\n            return 0;\n        }\n        this.emitCodePoint(replaceCodePoint(this.result), this.consumed);\n        if (this.errors) {\n            if (lastCp !== CharCodes.SEMI) {\n                this.errors.missingSemicolonAfterCharacterReference();\n            }\n            this.errors.validateNumericCharacterReference(this.result);\n        }\n        return this.consumed;\n    }\n    /**\n     * Parses a named entity.\n     *\n     * Equivalent to the `Named character reference state` in the HTML spec.\n     *\n     * @param input The string containing the entity (or a continuation of the entity).\n     * @param offset The current offset.\n     * @returns The number of characters that were consumed, or -1 if the entity is incomplete.\n     */\n    stateNamedEntity(input, offset) {\n        const { decodeTree } = this;\n        let current = decodeTree[this.treeIndex];\n        // The mask is the number of bytes of the value, including the current byte.\n        let valueLength = (current & BinTrieFlags.VALUE_LENGTH) >> 14;\n        for (; offset < input.length; offset++, this.excess++) {\n            const char = input.charCodeAt(offset);\n            this.treeIndex = determineBranch(decodeTree, current, this.treeIndex + Math.max(1, valueLength), char);\n            if (this.treeIndex < 0) {\n                return this.result === 0 ||\n                    // If we are parsing an attribute\n                    (this.decodeMode === DecodingMode.Attribute &&\n                        // We shouldn't have consumed any characters after the entity,\n                        (valueLength === 0 ||\n                            // And there should be no invalid characters.\n                            isEntityInAttributeInvalidEnd(char)))\n                    ? 0\n                    : this.emitNotTerminatedNamedEntity();\n            }\n            current = decodeTree[this.treeIndex];\n            valueLength = (current & BinTrieFlags.VALUE_LENGTH) >> 14;\n            // If the branch is a value, store it and continue\n            if (valueLength !== 0) {\n                // If the entity is terminated by a semicolon, we are done.\n                if (char === CharCodes.SEMI) {\n                    return this.emitNamedEntityData(this.treeIndex, valueLength, this.consumed + this.excess);\n                }\n                // If we encounter a non-terminated (legacy) entity while parsing strictly, then ignore it.\n                if (this.decodeMode !== DecodingMode.Strict) {\n                    this.result = this.treeIndex;\n                    this.consumed += this.excess;\n                    this.excess = 0;\n                }\n            }\n        }\n        return -1;\n    }\n    /**\n     * Emit a named entity that was not terminated with a semicolon.\n     *\n     * @returns The number of characters consumed.\n     */\n    emitNotTerminatedNamedEntity() {\n        var _a;\n        const { result, decodeTree } = this;\n        const valueLength = (decodeTree[result] & BinTrieFlags.VALUE_LENGTH) >> 14;\n        this.emitNamedEntityData(result, valueLength, this.consumed);\n        (_a = this.errors) === null || _a === void 0 ? void 0 : _a.missingSemicolonAfterCharacterReference();\n        return this.consumed;\n    }\n    /**\n     * Emit a named entity.\n     *\n     * @param result The index of the entity in the decode tree.\n     * @param valueLength The number of bytes in the entity.\n     * @param consumed The number of characters consumed.\n     *\n     * @returns The number of characters consumed.\n     */\n    emitNamedEntityData(result, valueLength, consumed) {\n        const { decodeTree } = this;\n        this.emitCodePoint(valueLength === 1\n            ? decodeTree[result] & ~BinTrieFlags.VALUE_LENGTH\n            : decodeTree[result + 1], consumed);\n        if (valueLength === 3) {\n            // For multi-byte values, we need to emit the second byte.\n            this.emitCodePoint(decodeTree[result + 2], consumed);\n        }\n        return consumed;\n    }\n    /**\n     * Signal to the parser that the end of the input was reached.\n     *\n     * Remaining data will be emitted and relevant errors will be produced.\n     *\n     * @returns The number of characters consumed.\n     */\n    end() {\n        var _a;\n        switch (this.state) {\n            case EntityDecoderState.NamedEntity: {\n                // Emit a named entity if we have one.\n                return this.result !== 0 &&\n                    (this.decodeMode !== DecodingMode.Attribute ||\n                        this.result === this.treeIndex)\n                    ? this.emitNotTerminatedNamedEntity()\n                    : 0;\n            }\n            // Otherwise, emit a numeric entity if we have one.\n            case EntityDecoderState.NumericDecimal: {\n                return this.emitNumericEntity(0, 2);\n            }\n            case EntityDecoderState.NumericHex: {\n                return this.emitNumericEntity(0, 3);\n            }\n            case EntityDecoderState.NumericStart: {\n                (_a = this.errors) === null || _a === void 0 ? void 0 : _a.absenceOfDigitsInNumericCharacterReference(this.consumed);\n                return 0;\n            }\n            case EntityDecoderState.EntityStart: {\n                // Return 0 if we have no entity.\n                return 0;\n            }\n        }\n    }\n}\n/**\n * Creates a function that decodes entities in a string.\n *\n * @param decodeTree The decode tree.\n * @returns A function that decodes entities in a string.\n */\nfunction getDecoder(decodeTree) {\n    let returnValue = \"\";\n    const decoder = new EntityDecoder(decodeTree, (data) => (returnValue += fromCodePoint(data)));\n    return function decodeWithTrie(input, decodeMode) {\n        let lastIndex = 0;\n        let offset = 0;\n        while ((offset = input.indexOf(\"&\", offset)) >= 0) {\n            returnValue += input.slice(lastIndex, offset);\n            decoder.startEntity(decodeMode);\n            const length = decoder.write(input, \n            // Skip the \"&\"\n            offset + 1);\n            if (length < 0) {\n                lastIndex = offset + decoder.end();\n                break;\n            }\n            lastIndex = offset + length;\n            // If `length` is 0, skip the current `&` and continue.\n            offset = length === 0 ? lastIndex + 1 : lastIndex;\n        }\n        const result = returnValue + input.slice(lastIndex);\n        // Make sure we don't keep a reference to the final string.\n        returnValue = \"\";\n        return result;\n    };\n}\n/**\n * Determines the branch of the current node that is taken given the current\n * character. This function is used to traverse the trie.\n *\n * @param decodeTree The trie.\n * @param current The current node.\n * @param nodeIdx The index right after the current node and its value.\n * @param char The current character.\n * @returns The index of the next node, or -1 if no branch is taken.\n */\nexport function determineBranch(decodeTree, current, nodeIndex, char) {\n    const branchCount = (current & BinTrieFlags.BRANCH_LENGTH) >> 7;\n    const jumpOffset = current & BinTrieFlags.JUMP_TABLE;\n    // Case 1: Single branch encoded in jump offset\n    if (branchCount === 0) {\n        return jumpOffset !== 0 && char === jumpOffset ? nodeIndex : -1;\n    }\n    // Case 2: Multiple branches encoded in jump table\n    if (jumpOffset) {\n        const value = char - jumpOffset;\n        return value < 0 || value >= branchCount\n            ? -1\n            : decodeTree[nodeIndex + value] - 1;\n    }\n    // Case 3: Multiple branches encoded in dictionary\n    // Binary search for the character.\n    let lo = nodeIndex;\n    let hi = lo + branchCount - 1;\n    while (lo <= hi) {\n        const mid = (lo + hi) >>> 1;\n        const midValue = decodeTree[mid];\n        if (midValue < char) {\n            lo = mid + 1;\n        }\n        else if (midValue > char) {\n            hi = mid - 1;\n        }\n        else {\n            return decodeTree[mid + branchCount];\n        }\n    }\n    return -1;\n}\nconst htmlDecoder = /* #__PURE__ */ getDecoder(htmlDecodeTree);\nconst xmlDecoder = /* #__PURE__ */ getDecoder(xmlDecodeTree);\n/**\n * Decodes an HTML string.\n *\n * @param htmlString The string to decode.\n * @param mode The decoding mode.\n * @returns The decoded string.\n */\nexport function decodeHTML(htmlString, mode = DecodingMode.Legacy) {\n    return htmlDecoder(htmlString, mode);\n}\n/**\n * Decodes an HTML string in an attribute.\n *\n * @param htmlAttribute The string to decode.\n * @returns The decoded string.\n */\nexport function decodeHTMLAttribute(htmlAttribute) {\n    return htmlDecoder(htmlAttribute, DecodingMode.Attribute);\n}\n/**\n * Decodes an HTML string, requiring all entities to be terminated by a semicolon.\n *\n * @param htmlString The string to decode.\n * @returns The decoded string.\n */\nexport function decodeHTMLStrict(htmlString) {\n    return htmlDecoder(htmlString, DecodingMode.Strict);\n}\n/**\n * Decodes an XML string, requiring all entities to be terminated by a semicolon.\n *\n * @param xmlString The string to decode.\n * @returns The decoded string.\n */\nexport function decodeXML(xmlString) {\n    return xmlDecoder(xmlString, DecodingMode.Strict);\n}\n// Re-export for use by eg. htmlparser2\nexport { htmlDecodeTree } from \"./generated/decode-data-html.js\";\nexport { xmlDecodeTree } from \"./generated/decode-data-xml.js\";\nexport { decodeCodePoint, replaceCodePoint, fromCodePoint, } from \"./decode-codepoint.js\";\n//# sourceMappingURL=decode.js.map","export const xmlReplacer = /[\"$&'<>\\u0080-\\uFFFF]/g;\nconst xmlCodeMap = new Map([\n    [34, \""\"],\n    [38, \"&\"],\n    [39, \"'\"],\n    [60, \"<\"],\n    [62, \">\"],\n]);\n// For compatibility with node < 4, we wrap `codePointAt`\nexport const getCodePoint = \n// eslint-disable-next-line @typescript-eslint/no-unnecessary-condition\nString.prototype.codePointAt == null\n    ? (c, index) => (c.charCodeAt(index) & 64512) === 55296\n        ? (c.charCodeAt(index) - 55296) * 1024 +\n            c.charCodeAt(index + 1) -\n            56320 +\n            65536\n        : c.charCodeAt(index)\n    : // http://mathiasbynens.be/notes/javascript-encoding#surrogate-formulae\n        (input, index) => input.codePointAt(index);\n/**\n * Encodes all non-ASCII characters, as well as characters not valid in XML\n * documents using XML entities.\n *\n * If a character has no equivalent entity, a\n * numeric hexadecimal reference (eg. `ü`) will be used.\n */\nexport function encodeXML(input) {\n    let returnValue = \"\";\n    let lastIndex = 0;\n    let match;\n    while ((match = xmlReplacer.exec(input)) !== null) {\n        const { index } = match;\n        const char = input.charCodeAt(index);\n        const next = xmlCodeMap.get(char);\n        if (next === undefined) {\n            returnValue += `${input.substring(lastIndex, index)}&#x${getCodePoint(input, index).toString(16)};`;\n            // Increase by 1 if we have a surrogate pair\n            lastIndex = xmlReplacer.lastIndex += Number((char & 64512) === 55296);\n        }\n        else {\n            returnValue += input.substring(lastIndex, index) + next;\n            lastIndex = index + 1;\n        }\n    }\n    return returnValue + input.substr(lastIndex);\n}\n/**\n * Encodes all non-ASCII characters, as well as characters not valid in XML\n * documents using numeric hexadecimal reference (eg. `ü`).\n *\n * Have a look at `escapeUTF8` if you want a more concise output at the expense\n * of reduced transportability.\n *\n * @param data String to escape.\n */\nexport const escape = encodeXML;\n/**\n * Creates a function that escapes all characters matched by the given regular\n * expression using the given map of characters to escape to their entities.\n *\n * @param regex Regular expression to match characters to escape.\n * @param map Map of characters to escape to their entities.\n *\n * @returns Function that escapes all characters matched by the given regular\n * expression using the given map of characters to escape to their entities.\n */\nfunction getEscaper(regex, map) {\n    return function escape(data) {\n        let match;\n        let lastIndex = 0;\n        let result = \"\";\n        while ((match = regex.exec(data))) {\n            if (lastIndex !== match.index) {\n                result += data.substring(lastIndex, match.index);\n            }\n            // We know that this character will be in the map.\n            result += map.get(match[0].charCodeAt(0));\n            // Every match will be of length 1\n            lastIndex = match.index + 1;\n        }\n        return result + data.substring(lastIndex);\n    };\n}\n/**\n * Encodes all characters not valid in XML documents using XML entities.\n *\n * Note that the output will be character-set dependent.\n *\n * @param data String to escape.\n */\nexport const escapeUTF8 = /* #__PURE__ */ getEscaper(/[\"&'<>]/g, xmlCodeMap);\n/**\n * Encodes all characters that have to be escaped in HTML attributes,\n * following {@link https://html.spec.whatwg.org/multipage/parsing.html#escapingString}.\n *\n * @param data String to escape.\n */\nexport const escapeAttribute = \n/* #__PURE__ */ getEscaper(/[\"&\\u00A0]/g, new Map([\n    [34, \""\"],\n    [38, \"&\"],\n    [160, \" \"],\n]));\n/**\n * Encodes all characters that have to be escaped in HTML text,\n * following {@link https://html.spec.whatwg.org/multipage/parsing.html#escapingString}.\n *\n * @param data String to escape.\n */\nexport const escapeText = /* #__PURE__ */ getEscaper(/[&<>\\u00A0]/g, new Map([\n    [38, \"&\"],\n    [60, \"<\"],\n    [62, \">\"],\n    [160, \" \"],\n]));\n//# sourceMappingURL=escape.js.map","import { decodeXML, decodeHTML, DecodingMode } from \"./decode.js\";\nimport { encodeHTML, encodeNonAsciiHTML } from \"./encode.js\";\nimport { encodeXML, escapeUTF8, escapeAttribute, escapeText, } from \"./escape.js\";\n/** The level of entities to support. */\nexport var EntityLevel;\n(function (EntityLevel) {\n    /** Support only XML entities. */\n    EntityLevel[EntityLevel[\"XML\"] = 0] = \"XML\";\n    /** Support HTML entities, which are a superset of XML entities. */\n    EntityLevel[EntityLevel[\"HTML\"] = 1] = \"HTML\";\n})(EntityLevel || (EntityLevel = {}));\nexport var EncodingMode;\n(function (EncodingMode) {\n    /**\n     * The output is UTF-8 encoded. Only characters that need escaping within\n     * XML will be escaped.\n     */\n    EncodingMode[EncodingMode[\"UTF8\"] = 0] = \"UTF8\";\n    /**\n     * The output consists only of ASCII characters. Characters that need\n     * escaping within HTML, and characters that aren't ASCII characters will\n     * be escaped.\n     */\n    EncodingMode[EncodingMode[\"ASCII\"] = 1] = \"ASCII\";\n    /**\n     * Encode all characters that have an equivalent entity, as well as all\n     * characters that are not ASCII characters.\n     */\n    EncodingMode[EncodingMode[\"Extensive\"] = 2] = \"Extensive\";\n    /**\n     * Encode all characters that have to be escaped in HTML attributes,\n     * following {@link https://html.spec.whatwg.org/multipage/parsing.html#escapingString}.\n     */\n    EncodingMode[EncodingMode[\"Attribute\"] = 3] = \"Attribute\";\n    /**\n     * Encode all characters that have to be escaped in HTML text,\n     * following {@link https://html.spec.whatwg.org/multipage/parsing.html#escapingString}.\n     */\n    EncodingMode[EncodingMode[\"Text\"] = 4] = \"Text\";\n})(EncodingMode || (EncodingMode = {}));\n/**\n * Decodes a string with entities.\n *\n * @param input String to decode.\n * @param options Decoding options.\n */\nexport function decode(input, options = EntityLevel.XML) {\n    const level = typeof options === \"number\" ? options : options.level;\n    if (level === EntityLevel.HTML) {\n        const mode = typeof options === \"object\" ? options.mode : undefined;\n        return decodeHTML(input, mode);\n    }\n    return decodeXML(input);\n}\n/**\n * Decodes a string with entities. Does not allow missing trailing semicolons for entities.\n *\n * @param input String to decode.\n * @param options Decoding options.\n * @deprecated Use `decode` with the `mode` set to `Strict`.\n */\nexport function decodeStrict(input, options = EntityLevel.XML) {\n    var _a;\n    const normalizedOptions = typeof options === \"number\" ? { level: options } : options;\n    (_a = normalizedOptions.mode) !== null && _a !== void 0 ? _a : (normalizedOptions.mode = DecodingMode.Strict);\n    return decode(input, normalizedOptions);\n}\n/**\n * Encodes a string with entities.\n *\n * @param input String to encode.\n * @param options Encoding options.\n */\nexport function encode(input, options = EntityLevel.XML) {\n    const { mode = EncodingMode.Extensive, level = EntityLevel.XML } = typeof options === \"number\" ? { level: options } : options;\n    switch (mode) {\n        case EncodingMode.UTF8: {\n            return escapeUTF8(input);\n        }\n        case EncodingMode.Attribute: {\n            return escapeAttribute(input);\n        }\n        case EncodingMode.Text: {\n            return escapeText(input);\n        }\n        case EncodingMode.ASCII: {\n            return level === EntityLevel.HTML\n                ? encodeNonAsciiHTML(input)\n                : encodeXML(input);\n        }\n        // eslint-disable-next-line unicorn/no-useless-switch-case\n        case EncodingMode.Extensive:\n        default: {\n            return level === EntityLevel.HTML\n                ? encodeHTML(input)\n                : encodeXML(input);\n        }\n    }\n}\nexport { encodeXML, escape, escapeUTF8, escapeAttribute, escapeText, } from \"./escape.js\";\nexport { encodeHTML, encodeNonAsciiHTML, \n// Legacy aliases (deprecated)\nencodeHTML as encodeHTML4, encodeHTML as encodeHTML5, } from \"./encode.js\";\nexport { EntityDecoder, DecodingMode, decodeXML, decodeHTML, decodeHTMLStrict, decodeHTMLAttribute, \n// Legacy aliases (deprecated)\ndecodeHTML as decodeHTML4, decodeHTML as decodeHTML5, decodeHTMLStrict as decodeHTML4Strict, decodeHTMLStrict as decodeHTML5Strict, decodeXML as decodeXMLStrict, } from \"./decode.js\";\n//# sourceMappingURL=index.js.map","const MAX_PATTERN_LENGTH = 1024 * 64;\nexport const assertValidPattern = (pattern) => {\n    if (typeof pattern !== 'string') {\n        throw new TypeError('invalid pattern');\n    }\n    if (pattern.length > MAX_PATTERN_LENGTH) {\n        throw new TypeError('pattern is too long');\n    }\n};\n//# sourceMappingURL=assert-valid-pattern.js.map","// parse a single path portion\nimport { parseClass } from './brace-expressions.js';\nimport { unescape } from './unescape.js';\nconst types = new Set(['!', '?', '+', '*', '@']);\nconst isExtglobType = (c) => types.has(c);\n// Patterns that get prepended to bind to the start of either the\n// entire string, or just a single path portion, to prevent dots\n// and/or traversal patterns, when needed.\n// Exts don't need the ^ or / bit, because the root binds that already.\nconst startNoTraversal = '(?!(?:^|/)\\\\.\\\\.?(?:$|/))';\nconst startNoDot = '(?!\\\\.)';\n// characters that indicate a start of pattern needs the \"no dots\" bit,\n// because a dot *might* be matched. ( is not in the list, because in\n// the case of a child extglob, it will handle the prevention itself.\nconst addPatternStart = new Set(['[', '.']);\n// cases where traversal is A-OK, no dot prevention needed\nconst justDots = new Set(['..', '.']);\nconst reSpecials = new Set('().*{}+?[]^$\\\\!');\nconst regExpEscape = (s) => s.replace(/[-[\\]{}()*+?.,\\\\^$|#\\s]/g, '\\\\$&');\n// any single thing other than /\nconst qmark = '[^/]';\n// * => any number of characters\nconst star = qmark + '*?';\n// use + when we need to ensure that *something* matches, because the * is\n// the only thing in the path portion.\nconst starNoEmpty = qmark + '+?';\n// remove the \\ chars that we added if we end up doing a nonmagic compare\n// const deslash = (s: string) => s.replace(/\\\\(.)/g, '$1')\nexport class AST {\n    type;\n    #root;\n    #hasMagic;\n    #uflag = false;\n    #parts = [];\n    #parent;\n    #parentIndex;\n    #negs;\n    #filledNegs = false;\n    #options;\n    #toString;\n    // set to true if it's an extglob with no children\n    // (which really means one child of '')\n    #emptyExt = false;\n    constructor(type, parent, options = {}) {\n        this.type = type;\n        // extglobs are inherently magical\n        if (type)\n            this.#hasMagic = true;\n        this.#parent = parent;\n        this.#root = this.#parent ? this.#parent.#root : this;\n        this.#options = this.#root === this ? options : this.#root.#options;\n        this.#negs = this.#root === this ? [] : this.#root.#negs;\n        if (type === '!' && !this.#root.#filledNegs)\n            this.#negs.push(this);\n        this.#parentIndex = this.#parent ? this.#parent.#parts.length : 0;\n    }\n    get hasMagic() {\n        /* c8 ignore start */\n        if (this.#hasMagic !== undefined)\n            return this.#hasMagic;\n        /* c8 ignore stop */\n        for (const p of this.#parts) {\n            if (typeof p === 'string')\n                continue;\n            if (p.type || p.hasMagic)\n                return (this.#hasMagic = true);\n        }\n        // note: will be undefined until we generate the regexp src and find out\n        return this.#hasMagic;\n    }\n    // reconstructs the pattern\n    toString() {\n        if (this.#toString !== undefined)\n            return this.#toString;\n        if (!this.type) {\n            return (this.#toString = this.#parts.map(p => String(p)).join(''));\n        }\n        else {\n            return (this.#toString =\n                this.type + '(' + this.#parts.map(p => String(p)).join('|') + ')');\n        }\n    }\n    #fillNegs() {\n        /* c8 ignore start */\n        if (this !== this.#root)\n            throw new Error('should only call on root');\n        if (this.#filledNegs)\n            return this;\n        /* c8 ignore stop */\n        // call toString() once to fill this out\n        this.toString();\n        this.#filledNegs = true;\n        let n;\n        while ((n = this.#negs.pop())) {\n            if (n.type !== '!')\n                continue;\n            // walk up the tree, appending everthing that comes AFTER parentIndex\n            let p = n;\n            let pp = p.#parent;\n            while (pp) {\n                for (let i = p.#parentIndex + 1; !pp.type && i < pp.#parts.length; i++) {\n                    for (const part of n.#parts) {\n                        /* c8 ignore start */\n                        if (typeof part === 'string') {\n                            throw new Error('string part in extglob AST??');\n                        }\n                        /* c8 ignore stop */\n                        part.copyIn(pp.#parts[i]);\n                    }\n                }\n                p = pp;\n                pp = p.#parent;\n            }\n        }\n        return this;\n    }\n    push(...parts) {\n        for (const p of parts) {\n            if (p === '')\n                continue;\n            /* c8 ignore start */\n            if (typeof p !== 'string' && !(p instanceof AST && p.#parent === this)) {\n                throw new Error('invalid part: ' + p);\n            }\n            /* c8 ignore stop */\n            this.#parts.push(p);\n        }\n    }\n    toJSON() {\n        const ret = this.type === null\n            ? this.#parts.slice().map(p => (typeof p === 'string' ? p : p.toJSON()))\n            : [this.type, ...this.#parts.map(p => p.toJSON())];\n        if (this.isStart() && !this.type)\n            ret.unshift([]);\n        if (this.isEnd() &&\n            (this === this.#root ||\n                (this.#root.#filledNegs && this.#parent?.type === '!'))) {\n            ret.push({});\n        }\n        return ret;\n    }\n    isStart() {\n        if (this.#root === this)\n            return true;\n        // if (this.type) return !!this.#parent?.isStart()\n        if (!this.#parent?.isStart())\n            return false;\n        if (this.#parentIndex === 0)\n            return true;\n        // if everything AHEAD of this is a negation, then it's still the \"start\"\n        const p = this.#parent;\n        for (let i = 0; i < this.#parentIndex; i++) {\n            const pp = p.#parts[i];\n            if (!(pp instanceof AST && pp.type === '!')) {\n                return false;\n            }\n        }\n        return true;\n    }\n    isEnd() {\n        if (this.#root === this)\n            return true;\n        if (this.#parent?.type === '!')\n            return true;\n        if (!this.#parent?.isEnd())\n            return false;\n        if (!this.type)\n            return this.#parent?.isEnd();\n        // if not root, it'll always have a parent\n        /* c8 ignore start */\n        const pl = this.#parent ? this.#parent.#parts.length : 0;\n        /* c8 ignore stop */\n        return this.#parentIndex === pl - 1;\n    }\n    copyIn(part) {\n        if (typeof part === 'string')\n            this.push(part);\n        else\n            this.push(part.clone(this));\n    }\n    clone(parent) {\n        const c = new AST(this.type, parent);\n        for (const p of this.#parts) {\n            c.copyIn(p);\n        }\n        return c;\n    }\n    static #parseAST(str, ast, pos, opt) {\n        let escaping = false;\n        let inBrace = false;\n        let braceStart = -1;\n        let braceNeg = false;\n        if (ast.type === null) {\n            // outside of a extglob, append until we find a start\n            let i = pos;\n            let acc = '';\n            while (i < str.length) {\n                const c = str.charAt(i++);\n                // still accumulate escapes at this point, but we do ignore\n                // starts that are escaped\n                if (escaping || c === '\\\\') {\n                    escaping = !escaping;\n                    acc += c;\n                    continue;\n                }\n                if (inBrace) {\n                    if (i === braceStart + 1) {\n                        if (c === '^' || c === '!') {\n                            braceNeg = true;\n                        }\n                    }\n                    else if (c === ']' && !(i === braceStart + 2 && braceNeg)) {\n                        inBrace = false;\n                    }\n                    acc += c;\n                    continue;\n                }\n                else if (c === '[') {\n                    inBrace = true;\n                    braceStart = i;\n                    braceNeg = false;\n                    acc += c;\n                    continue;\n                }\n                if (!opt.noext && isExtglobType(c) && str.charAt(i) === '(') {\n                    ast.push(acc);\n                    acc = '';\n                    const ext = new AST(c, ast);\n                    i = AST.#parseAST(str, ext, i, opt);\n                    ast.push(ext);\n                    continue;\n                }\n                acc += c;\n            }\n            ast.push(acc);\n            return i;\n        }\n        // some kind of extglob, pos is at the (\n        // find the next | or )\n        let i = pos + 1;\n        let part = new AST(null, ast);\n        const parts = [];\n        let acc = '';\n        while (i < str.length) {\n            const c = str.charAt(i++);\n            // still accumulate escapes at this point, but we do ignore\n            // starts that are escaped\n            if (escaping || c === '\\\\') {\n                escaping = !escaping;\n                acc += c;\n                continue;\n            }\n            if (inBrace) {\n                if (i === braceStart + 1) {\n                    if (c === '^' || c === '!') {\n                        braceNeg = true;\n                    }\n                }\n                else if (c === ']' && !(i === braceStart + 2 && braceNeg)) {\n                    inBrace = false;\n                }\n                acc += c;\n                continue;\n            }\n            else if (c === '[') {\n                inBrace = true;\n                braceStart = i;\n                braceNeg = false;\n                acc += c;\n                continue;\n            }\n            if (isExtglobType(c) && str.charAt(i) === '(') {\n                part.push(acc);\n                acc = '';\n                const ext = new AST(c, part);\n                part.push(ext);\n                i = AST.#parseAST(str, ext, i, opt);\n                continue;\n            }\n            if (c === '|') {\n                part.push(acc);\n                acc = '';\n                parts.push(part);\n                part = new AST(null, ast);\n                continue;\n            }\n            if (c === ')') {\n                if (acc === '' && ast.#parts.length === 0) {\n                    ast.#emptyExt = true;\n                }\n                part.push(acc);\n                acc = '';\n                ast.push(...parts, part);\n                return i;\n            }\n            acc += c;\n        }\n        // unfinished extglob\n        // if we got here, it was a malformed extglob! not an extglob, but\n        // maybe something else in there.\n        ast.type = null;\n        ast.#hasMagic = undefined;\n        ast.#parts = [str.substring(pos - 1)];\n        return i;\n    }\n    static fromGlob(pattern, options = {}) {\n        const ast = new AST(null, undefined, options);\n        AST.#parseAST(pattern, ast, 0, options);\n        return ast;\n    }\n    // returns the regular expression if there's magic, or the unescaped\n    // string if not.\n    toMMPattern() {\n        // should only be called on root\n        /* c8 ignore start */\n        if (this !== this.#root)\n            return this.#root.toMMPattern();\n        /* c8 ignore stop */\n        const glob = this.toString();\n        const [re, body, hasMagic, uflag] = this.toRegExpSource();\n        // if we're in nocase mode, and not nocaseMagicOnly, then we do\n        // still need a regular expression if we have to case-insensitively\n        // match capital/lowercase characters.\n        const anyMagic = hasMagic ||\n            this.#hasMagic ||\n            (this.#options.nocase &&\n                !this.#options.nocaseMagicOnly &&\n                glob.toUpperCase() !== glob.toLowerCase());\n        if (!anyMagic) {\n            return body;\n        }\n        const flags = (this.#options.nocase ? 'i' : '') + (uflag ? 'u' : '');\n        return Object.assign(new RegExp(`^${re}$`, flags), {\n            _src: re,\n            _glob: glob,\n        });\n    }\n    get options() {\n        return this.#options;\n    }\n    // returns the string match, the regexp source, whether there's magic\n    // in the regexp (so a regular expression is required) and whether or\n    // not the uflag is needed for the regular expression (for posix classes)\n    // TODO: instead of injecting the start/end at this point, just return\n    // the BODY of the regexp, along with the start/end portions suitable\n    // for binding the start/end in either a joined full-path makeRe context\n    // (where we bind to (^|/), or a standalone matchPart context (where\n    // we bind to ^, and not /).  Otherwise slashes get duped!\n    //\n    // In part-matching mode, the start is:\n    // - if not isStart: nothing\n    // - if traversal possible, but not allowed: ^(?!\\.\\.?$)\n    // - if dots allowed or not possible: ^\n    // - if dots possible and not allowed: ^(?!\\.)\n    // end is:\n    // - if not isEnd(): nothing\n    // - else: $\n    //\n    // In full-path matching mode, we put the slash at the START of the\n    // pattern, so start is:\n    // - if first pattern: same as part-matching mode\n    // - if not isStart(): nothing\n    // - if traversal possible, but not allowed: /(?!\\.\\.?(?:$|/))\n    // - if dots allowed or not possible: /\n    // - if dots possible and not allowed: /(?!\\.)\n    // end is:\n    // - if last pattern, same as part-matching mode\n    // - else nothing\n    //\n    // Always put the (?:$|/) on negated tails, though, because that has to be\n    // there to bind the end of the negated pattern portion, and it's easier to\n    // just stick it in now rather than try to inject it later in the middle of\n    // the pattern.\n    //\n    // We can just always return the same end, and leave it up to the caller\n    // to know whether it's going to be used joined or in parts.\n    // And, if the start is adjusted slightly, can do the same there:\n    // - if not isStart: nothing\n    // - if traversal possible, but not allowed: (?:/|^)(?!\\.\\.?$)\n    // - if dots allowed or not possible: (?:/|^)\n    // - if dots possible and not allowed: (?:/|^)(?!\\.)\n    //\n    // But it's better to have a simpler binding without a conditional, for\n    // performance, so probably better to return both start options.\n    //\n    // Then the caller just ignores the end if it's not the first pattern,\n    // and the start always gets applied.\n    //\n    // But that's always going to be $ if it's the ending pattern, or nothing,\n    // so the caller can just attach $ at the end of the pattern when building.\n    //\n    // So the todo is:\n    // - better detect what kind of start is needed\n    // - return both flavors of starting pattern\n    // - attach $ at the end of the pattern when creating the actual RegExp\n    //\n    // Ah, but wait, no, that all only applies to the root when the first pattern\n    // is not an extglob. If the first pattern IS an extglob, then we need all\n    // that dot prevention biz to live in the extglob portions, because eg\n    // +(*|.x*) can match .xy but not .yx.\n    //\n    // So, return the two flavors if it's #root and the first child is not an\n    // AST, otherwise leave it to the child AST to handle it, and there,\n    // use the (?:^|/) style of start binding.\n    //\n    // Even simplified further:\n    // - Since the start for a join is eg /(?!\\.) and the start for a part\n    // is ^(?!\\.), we can just prepend (?!\\.) to the pattern (either root\n    // or start or whatever) and prepend ^ or / at the Regexp construction.\n    toRegExpSource(allowDot) {\n        const dot = allowDot ?? !!this.#options.dot;\n        if (this.#root === this)\n            this.#fillNegs();\n        if (!this.type) {\n            const noEmpty = this.isStart() && this.isEnd();\n            const src = this.#parts\n                .map(p => {\n                const [re, _, hasMagic, uflag] = typeof p === 'string'\n                    ? AST.#parseGlob(p, this.#hasMagic, noEmpty)\n                    : p.toRegExpSource(allowDot);\n                this.#hasMagic = this.#hasMagic || hasMagic;\n                this.#uflag = this.#uflag || uflag;\n                return re;\n            })\n                .join('');\n            let start = '';\n            if (this.isStart()) {\n                if (typeof this.#parts[0] === 'string') {\n                    // this is the string that will match the start of the pattern,\n                    // so we need to protect against dots and such.\n                    // '.' and '..' cannot match unless the pattern is that exactly,\n                    // even if it starts with . or dot:true is set.\n                    const dotTravAllowed = this.#parts.length === 1 && justDots.has(this.#parts[0]);\n                    if (!dotTravAllowed) {\n                        const aps = addPatternStart;\n                        // check if we have a possibility of matching . or ..,\n                        // and prevent that.\n                        const needNoTrav = \n                        // dots are allowed, and the pattern starts with [ or .\n                        (dot && aps.has(src.charAt(0))) ||\n                            // the pattern starts with \\., and then [ or .\n                            (src.startsWith('\\\\.') && aps.has(src.charAt(2))) ||\n                            // the pattern starts with \\.\\., and then [ or .\n                            (src.startsWith('\\\\.\\\\.') && aps.has(src.charAt(4)));\n                        // no need to prevent dots if it can't match a dot, or if a\n                        // sub-pattern will be preventing it anyway.\n                        const needNoDot = !dot && !allowDot && aps.has(src.charAt(0));\n                        start = needNoTrav ? startNoTraversal : needNoDot ? startNoDot : '';\n                    }\n                }\n            }\n            // append the \"end of path portion\" pattern to negation tails\n            let end = '';\n            if (this.isEnd() &&\n                this.#root.#filledNegs &&\n                this.#parent?.type === '!') {\n                end = '(?:$|\\\\/)';\n            }\n            const final = start + src + end;\n            return [\n                final,\n                unescape(src),\n                (this.#hasMagic = !!this.#hasMagic),\n                this.#uflag,\n            ];\n        }\n        // We need to calculate the body *twice* if it's a repeat pattern\n        // at the start, once in nodot mode, then again in dot mode, so a\n        // pattern like *(?) can match 'x.y'\n        const repeated = this.type === '*' || this.type === '+';\n        // some kind of extglob\n        const start = this.type === '!' ? '(?:(?!(?:' : '(?:';\n        let body = this.#partsToRegExp(dot);\n        if (this.isStart() && this.isEnd() && !body && this.type !== '!') {\n            // invalid extglob, has to at least be *something* present, if it's\n            // the entire path portion.\n            const s = this.toString();\n            this.#parts = [s];\n            this.type = null;\n            this.#hasMagic = undefined;\n            return [s, unescape(this.toString()), false, false];\n        }\n        // XXX abstract out this map method\n        let bodyDotAllowed = !repeated || allowDot || dot || !startNoDot\n            ? ''\n            : this.#partsToRegExp(true);\n        if (bodyDotAllowed === body) {\n            bodyDotAllowed = '';\n        }\n        if (bodyDotAllowed) {\n            body = `(?:${body})(?:${bodyDotAllowed})*?`;\n        }\n        // an empty !() is exactly equivalent to a starNoEmpty\n        let final = '';\n        if (this.type === '!' && this.#emptyExt) {\n            final = (this.isStart() && !dot ? startNoDot : '') + starNoEmpty;\n        }\n        else {\n            const close = this.type === '!'\n                ? // !() must match something,but !(x) can match ''\n                    '))' +\n                        (this.isStart() && !dot && !allowDot ? startNoDot : '') +\n                        star +\n                        ')'\n                : this.type === '@'\n                    ? ')'\n                    : this.type === '?'\n                        ? ')?'\n                        : this.type === '+' && bodyDotAllowed\n                            ? ')'\n                            : this.type === '*' && bodyDotAllowed\n                                ? `)?`\n                                : `)${this.type}`;\n            final = start + body + close;\n        }\n        return [\n            final,\n            unescape(body),\n            (this.#hasMagic = !!this.#hasMagic),\n            this.#uflag,\n        ];\n    }\n    #partsToRegExp(dot) {\n        return this.#parts\n            .map(p => {\n            // extglob ASTs should only contain parent ASTs\n            /* c8 ignore start */\n            if (typeof p === 'string') {\n                throw new Error('string type in extglob ast??');\n            }\n            /* c8 ignore stop */\n            // can ignore hasMagic, because extglobs are already always magic\n            const [re, _, _hasMagic, uflag] = p.toRegExpSource(dot);\n            this.#uflag = this.#uflag || uflag;\n            return re;\n        })\n            .filter(p => !(this.isStart() && this.isEnd()) || !!p)\n            .join('|');\n    }\n    static #parseGlob(glob, hasMagic, noEmpty = false) {\n        let escaping = false;\n        let re = '';\n        let uflag = false;\n        for (let i = 0; i < glob.length; i++) {\n            const c = glob.charAt(i);\n            if (escaping) {\n                escaping = false;\n                re += (reSpecials.has(c) ? '\\\\' : '') + c;\n                continue;\n            }\n            if (c === '\\\\') {\n                if (i === glob.length - 1) {\n                    re += '\\\\\\\\';\n                }\n                else {\n                    escaping = true;\n                }\n                continue;\n            }\n            if (c === '[') {\n                const [src, needUflag, consumed, magic] = parseClass(glob, i);\n                if (consumed) {\n                    re += src;\n                    uflag = uflag || needUflag;\n                    i += consumed - 1;\n                    hasMagic = hasMagic || magic;\n                    continue;\n                }\n            }\n            if (c === '*') {\n                if (noEmpty && glob === '*')\n                    re += starNoEmpty;\n                else\n                    re += star;\n                hasMagic = true;\n                continue;\n            }\n            if (c === '?') {\n                re += qmark;\n                hasMagic = true;\n                continue;\n            }\n            re += regExpEscape(c);\n        }\n        return [re, unescape(glob), !!hasMagic, uflag];\n    }\n}\n//# sourceMappingURL=ast.js.map","// translate the various posix character classes into unicode properties\n// this works across all unicode locales\n// { : [, /u flag required, negated]\nconst posixClasses = {\n    '[:alnum:]': ['\\\\p{L}\\\\p{Nl}\\\\p{Nd}', true],\n    '[:alpha:]': ['\\\\p{L}\\\\p{Nl}', true],\n    '[:ascii:]': ['\\\\x' + '00-\\\\x' + '7f', false],\n    '[:blank:]': ['\\\\p{Zs}\\\\t', true],\n    '[:cntrl:]': ['\\\\p{Cc}', true],\n    '[:digit:]': ['\\\\p{Nd}', true],\n    '[:graph:]': ['\\\\p{Z}\\\\p{C}', true, true],\n    '[:lower:]': ['\\\\p{Ll}', true],\n    '[:print:]': ['\\\\p{C}', true],\n    '[:punct:]': ['\\\\p{P}', true],\n    '[:space:]': ['\\\\p{Z}\\\\t\\\\r\\\\n\\\\v\\\\f', true],\n    '[:upper:]': ['\\\\p{Lu}', true],\n    '[:word:]': ['\\\\p{L}\\\\p{Nl}\\\\p{Nd}\\\\p{Pc}', true],\n    '[:xdigit:]': ['A-Fa-f0-9', false],\n};\n// only need to escape a few things inside of brace expressions\n// escapes: [ \\ ] -\nconst braceEscape = (s) => s.replace(/[[\\]\\\\-]/g, '\\\\$&');\n// escape all regexp magic characters\nconst regexpEscape = (s) => s.replace(/[-[\\]{}()*+?.,\\\\^$|#\\s]/g, '\\\\$&');\n// everything has already been escaped, we just have to join\nconst rangesToString = (ranges) => ranges.join('');\n// takes a glob string at a posix brace expression, and returns\n// an equivalent regular expression source, and boolean indicating\n// whether the /u flag needs to be applied, and the number of chars\n// consumed to parse the character class.\n// This also removes out of order ranges, and returns ($.) if the\n// entire class just no good.\nexport const parseClass = (glob, position) => {\n    const pos = position;\n    /* c8 ignore start */\n    if (glob.charAt(pos) !== '[') {\n        throw new Error('not in a brace expression');\n    }\n    /* c8 ignore stop */\n    const ranges = [];\n    const negs = [];\n    let i = pos + 1;\n    let sawStart = false;\n    let uflag = false;\n    let escaping = false;\n    let negate = false;\n    let endPos = pos;\n    let rangeStart = '';\n    WHILE: while (i < glob.length) {\n        const c = glob.charAt(i);\n        if ((c === '!' || c === '^') && i === pos + 1) {\n            negate = true;\n            i++;\n            continue;\n        }\n        if (c === ']' && sawStart && !escaping) {\n            endPos = i + 1;\n            break;\n        }\n        sawStart = true;\n        if (c === '\\\\') {\n            if (!escaping) {\n                escaping = true;\n                i++;\n                continue;\n            }\n            // escaped \\ char, fall through and treat like normal char\n        }\n        if (c === '[' && !escaping) {\n            // either a posix class, a collation equivalent, or just a [\n            for (const [cls, [unip, u, neg]] of Object.entries(posixClasses)) {\n                if (glob.startsWith(cls, i)) {\n                    // invalid, [a-[] is fine, but not [a-[:alpha]]\n                    if (rangeStart) {\n                        return ['$.', false, glob.length - pos, true];\n                    }\n                    i += cls.length;\n                    if (neg)\n                        negs.push(unip);\n                    else\n                        ranges.push(unip);\n                    uflag = uflag || u;\n                    continue WHILE;\n                }\n            }\n        }\n        // now it's just a normal character, effectively\n        escaping = false;\n        if (rangeStart) {\n            // throw this range away if it's not valid, but others\n            // can still match.\n            if (c > rangeStart) {\n                ranges.push(braceEscape(rangeStart) + '-' + braceEscape(c));\n            }\n            else if (c === rangeStart) {\n                ranges.push(braceEscape(c));\n            }\n            rangeStart = '';\n            i++;\n            continue;\n        }\n        // now might be the start of a range.\n        // can be either c-d or c-] or c] or c] at this point\n        if (glob.startsWith('-]', i + 1)) {\n            ranges.push(braceEscape(c + '-'));\n            i += 2;\n            continue;\n        }\n        if (glob.startsWith('-', i + 1)) {\n            rangeStart = c;\n            i += 2;\n            continue;\n        }\n        // not the start of a range, just a single character\n        ranges.push(braceEscape(c));\n        i++;\n    }\n    if (endPos < i) {\n        // didn't see the end of the class, not a valid class,\n        // but might still be valid as a literal match.\n        return ['', false, 0, false];\n    }\n    // if we got no ranges and no negates, then we have a range that\n    // cannot possibly match anything, and that poisons the whole glob\n    if (!ranges.length && !negs.length) {\n        return ['$.', false, glob.length - pos, true];\n    }\n    // if we got one positive range, and it's a single character, then that's\n    // not actually a magic pattern, it's just that one literal character.\n    // we should not treat that as \"magic\", we should just return the literal\n    // character. [_] is a perfectly valid way to escape glob magic chars.\n    if (negs.length === 0 &&\n        ranges.length === 1 &&\n        /^\\\\?.$/.test(ranges[0]) &&\n        !negate) {\n        const r = ranges[0].length === 2 ? ranges[0].slice(-1) : ranges[0];\n        return [regexpEscape(r), false, endPos - pos, false];\n    }\n    const sranges = '[' + (negate ? '^' : '') + rangesToString(ranges) + ']';\n    const snegs = '[' + (negate ? '' : '^') + rangesToString(negs) + ']';\n    const comb = ranges.length && negs.length\n        ? '(' + sranges + '|' + snegs + ')'\n        : ranges.length\n            ? sranges\n            : snegs;\n    return [comb, uflag, endPos - pos, true];\n};\n//# sourceMappingURL=brace-expressions.js.map","/**\n * Escape all magic characters in a glob pattern.\n *\n * If the {@link windowsPathsNoEscape | GlobOptions.windowsPathsNoEscape}\n * option is used, then characters are escaped by wrapping in `[]`, because\n * a magic character wrapped in a character class can only be satisfied by\n * that exact character.  In this mode, `\\` is _not_ escaped, because it is\n * not interpreted as a magic character, but instead as a path separator.\n */\nexport const escape = (s, { windowsPathsNoEscape = false, } = {}) => {\n    // don't need to escape +@! because we escape the parens\n    // that make those magic, and escaping ! as [!] isn't valid,\n    // because [!]] is a valid glob class meaning not ']'.\n    return windowsPathsNoEscape\n        ? s.replace(/[?*()[\\]]/g, '[$&]')\n        : s.replace(/[?*()[\\]\\\\]/g, '\\\\$&');\n};\n//# sourceMappingURL=escape.js.map","import expand from 'brace-expansion';\nimport { assertValidPattern } from './assert-valid-pattern.js';\nimport { AST } from './ast.js';\nimport { escape } from './escape.js';\nimport { unescape } from './unescape.js';\nexport const minimatch = (p, pattern, options = {}) => {\n    assertValidPattern(pattern);\n    // shortcut: comments match nothing.\n    if (!options.nocomment && pattern.charAt(0) === '#') {\n        return false;\n    }\n    return new Minimatch(pattern, options).match(p);\n};\n// Optimized checking for the most common glob patterns.\nconst starDotExtRE = /^\\*+([^+@!?\\*\\[\\(]*)$/;\nconst starDotExtTest = (ext) => (f) => !f.startsWith('.') && f.endsWith(ext);\nconst starDotExtTestDot = (ext) => (f) => f.endsWith(ext);\nconst starDotExtTestNocase = (ext) => {\n    ext = ext.toLowerCase();\n    return (f) => !f.startsWith('.') && f.toLowerCase().endsWith(ext);\n};\nconst starDotExtTestNocaseDot = (ext) => {\n    ext = ext.toLowerCase();\n    return (f) => f.toLowerCase().endsWith(ext);\n};\nconst starDotStarRE = /^\\*+\\.\\*+$/;\nconst starDotStarTest = (f) => !f.startsWith('.') && f.includes('.');\nconst starDotStarTestDot = (f) => f !== '.' && f !== '..' && f.includes('.');\nconst dotStarRE = /^\\.\\*+$/;\nconst dotStarTest = (f) => f !== '.' && f !== '..' && f.startsWith('.');\nconst starRE = /^\\*+$/;\nconst starTest = (f) => f.length !== 0 && !f.startsWith('.');\nconst starTestDot = (f) => f.length !== 0 && f !== '.' && f !== '..';\nconst qmarksRE = /^\\?+([^+@!?\\*\\[\\(]*)?$/;\nconst qmarksTestNocase = ([$0, ext = '']) => {\n    const noext = qmarksTestNoExt([$0]);\n    if (!ext)\n        return noext;\n    ext = ext.toLowerCase();\n    return (f) => noext(f) && f.toLowerCase().endsWith(ext);\n};\nconst qmarksTestNocaseDot = ([$0, ext = '']) => {\n    const noext = qmarksTestNoExtDot([$0]);\n    if (!ext)\n        return noext;\n    ext = ext.toLowerCase();\n    return (f) => noext(f) && f.toLowerCase().endsWith(ext);\n};\nconst qmarksTestDot = ([$0, ext = '']) => {\n    const noext = qmarksTestNoExtDot([$0]);\n    return !ext ? noext : (f) => noext(f) && f.endsWith(ext);\n};\nconst qmarksTest = ([$0, ext = '']) => {\n    const noext = qmarksTestNoExt([$0]);\n    return !ext ? noext : (f) => noext(f) && f.endsWith(ext);\n};\nconst qmarksTestNoExt = ([$0]) => {\n    const len = $0.length;\n    return (f) => f.length === len && !f.startsWith('.');\n};\nconst qmarksTestNoExtDot = ([$0]) => {\n    const len = $0.length;\n    return (f) => f.length === len && f !== '.' && f !== '..';\n};\n/* c8 ignore start */\nconst defaultPlatform = (typeof process === 'object' && process\n    ? (typeof process.env === 'object' &&\n        process.env &&\n        process.env.__MINIMATCH_TESTING_PLATFORM__) ||\n        process.platform\n    : 'posix');\nconst path = {\n    win32: { sep: '\\\\' },\n    posix: { sep: '/' },\n};\n/* c8 ignore stop */\nexport const sep = defaultPlatform === 'win32' ? path.win32.sep : path.posix.sep;\nminimatch.sep = sep;\nexport const GLOBSTAR = Symbol('globstar **');\nminimatch.GLOBSTAR = GLOBSTAR;\n// any single thing other than /\n// don't need to escape / when using new RegExp()\nconst qmark = '[^/]';\n// * => any number of characters\nconst star = qmark + '*?';\n// ** when dots are allowed.  Anything goes, except .. and .\n// not (^ or / followed by one or two dots followed by $ or /),\n// followed by anything, any number of times.\nconst twoStarDot = '(?:(?!(?:\\\\/|^)(?:\\\\.{1,2})($|\\\\/)).)*?';\n// not a ^ or / followed by a dot,\n// followed by anything, any number of times.\nconst twoStarNoDot = '(?:(?!(?:\\\\/|^)\\\\.).)*?';\nexport const filter = (pattern, options = {}) => (p) => minimatch(p, pattern, options);\nminimatch.filter = filter;\nconst ext = (a, b = {}) => Object.assign({}, a, b);\nexport const defaults = (def) => {\n    if (!def || typeof def !== 'object' || !Object.keys(def).length) {\n        return minimatch;\n    }\n    const orig = minimatch;\n    const m = (p, pattern, options = {}) => orig(p, pattern, ext(def, options));\n    return Object.assign(m, {\n        Minimatch: class Minimatch extends orig.Minimatch {\n            constructor(pattern, options = {}) {\n                super(pattern, ext(def, options));\n            }\n            static defaults(options) {\n                return orig.defaults(ext(def, options)).Minimatch;\n            }\n        },\n        AST: class AST extends orig.AST {\n            /* c8 ignore start */\n            constructor(type, parent, options = {}) {\n                super(type, parent, ext(def, options));\n            }\n            /* c8 ignore stop */\n            static fromGlob(pattern, options = {}) {\n                return orig.AST.fromGlob(pattern, ext(def, options));\n            }\n        },\n        unescape: (s, options = {}) => orig.unescape(s, ext(def, options)),\n        escape: (s, options = {}) => orig.escape(s, ext(def, options)),\n        filter: (pattern, options = {}) => orig.filter(pattern, ext(def, options)),\n        defaults: (options) => orig.defaults(ext(def, options)),\n        makeRe: (pattern, options = {}) => orig.makeRe(pattern, ext(def, options)),\n        braceExpand: (pattern, options = {}) => orig.braceExpand(pattern, ext(def, options)),\n        match: (list, pattern, options = {}) => orig.match(list, pattern, ext(def, options)),\n        sep: orig.sep,\n        GLOBSTAR: GLOBSTAR,\n    });\n};\nminimatch.defaults = defaults;\n// Brace expansion:\n// a{b,c}d -> abd acd\n// a{b,}c -> abc ac\n// a{0..3}d -> a0d a1d a2d a3d\n// a{b,c{d,e}f}g -> abg acdfg acefg\n// a{b,c}d{e,f}g -> abdeg acdeg abdeg abdfg\n//\n// Invalid sets are not expanded.\n// a{2..}b -> a{2..}b\n// a{b}c -> a{b}c\nexport const braceExpand = (pattern, options = {}) => {\n    assertValidPattern(pattern);\n    // Thanks to Yeting Li  for\n    // improving this regexp to avoid a ReDOS vulnerability.\n    if (options.nobrace || !/\\{(?:(?!\\{).)*\\}/.test(pattern)) {\n        // shortcut. no need to expand.\n        return [pattern];\n    }\n    return expand(pattern);\n};\nminimatch.braceExpand = braceExpand;\n// parse a component of the expanded set.\n// At this point, no pattern may contain \"/\" in it\n// so we're going to return a 2d array, where each entry is the full\n// pattern, split on '/', and then turned into a regular expression.\n// A regexp is made at the end which joins each array with an\n// escaped /, and another full one which joins each regexp with |.\n//\n// Following the lead of Bash 4.1, note that \"**\" only has special meaning\n// when it is the *only* thing in a path portion.  Otherwise, any series\n// of * is equivalent to a single *.  Globstar behavior is enabled by\n// default, and can be disabled by setting options.noglobstar.\nexport const makeRe = (pattern, options = {}) => new Minimatch(pattern, options).makeRe();\nminimatch.makeRe = makeRe;\nexport const match = (list, pattern, options = {}) => {\n    const mm = new Minimatch(pattern, options);\n    list = list.filter(f => mm.match(f));\n    if (mm.options.nonull && !list.length) {\n        list.push(pattern);\n    }\n    return list;\n};\nminimatch.match = match;\n// replace stuff like \\* with *\nconst globMagic = /[?*]|[+@!]\\(.*?\\)|\\[|\\]/;\nconst regExpEscape = (s) => s.replace(/[-[\\]{}()*+?.,\\\\^$|#\\s]/g, '\\\\$&');\nexport class Minimatch {\n    options;\n    set;\n    pattern;\n    windowsPathsNoEscape;\n    nonegate;\n    negate;\n    comment;\n    empty;\n    preserveMultipleSlashes;\n    partial;\n    globSet;\n    globParts;\n    nocase;\n    isWindows;\n    platform;\n    windowsNoMagicRoot;\n    regexp;\n    constructor(pattern, options = {}) {\n        assertValidPattern(pattern);\n        options = options || {};\n        this.options = options;\n        this.pattern = pattern;\n        this.platform = options.platform || defaultPlatform;\n        this.isWindows = this.platform === 'win32';\n        this.windowsPathsNoEscape =\n            !!options.windowsPathsNoEscape || options.allowWindowsEscape === false;\n        if (this.windowsPathsNoEscape) {\n            this.pattern = this.pattern.replace(/\\\\/g, '/');\n        }\n        this.preserveMultipleSlashes = !!options.preserveMultipleSlashes;\n        this.regexp = null;\n        this.negate = false;\n        this.nonegate = !!options.nonegate;\n        this.comment = false;\n        this.empty = false;\n        this.partial = !!options.partial;\n        this.nocase = !!this.options.nocase;\n        this.windowsNoMagicRoot =\n            options.windowsNoMagicRoot !== undefined\n                ? options.windowsNoMagicRoot\n                : !!(this.isWindows && this.nocase);\n        this.globSet = [];\n        this.globParts = [];\n        this.set = [];\n        // make the set of regexps etc.\n        this.make();\n    }\n    hasMagic() {\n        if (this.options.magicalBraces && this.set.length > 1) {\n            return true;\n        }\n        for (const pattern of this.set) {\n            for (const part of pattern) {\n                if (typeof part !== 'string')\n                    return true;\n            }\n        }\n        return false;\n    }\n    debug(..._) { }\n    make() {\n        const pattern = this.pattern;\n        const options = this.options;\n        // empty patterns and comments match nothing.\n        if (!options.nocomment && pattern.charAt(0) === '#') {\n            this.comment = true;\n            return;\n        }\n        if (!pattern) {\n            this.empty = true;\n            return;\n        }\n        // step 1: figure out negation, etc.\n        this.parseNegate();\n        // step 2: expand braces\n        this.globSet = [...new Set(this.braceExpand())];\n        if (options.debug) {\n            this.debug = (...args) => console.error(...args);\n        }\n        this.debug(this.pattern, this.globSet);\n        // step 3: now we have a set, so turn each one into a series of\n        // path-portion matching patterns.\n        // These will be regexps, except in the case of \"**\", which is\n        // set to the GLOBSTAR object for globstar behavior,\n        // and will not contain any / characters\n        //\n        // First, we preprocess to make the glob pattern sets a bit simpler\n        // and deduped.  There are some perf-killing patterns that can cause\n        // problems with a glob walk, but we can simplify them down a bit.\n        const rawGlobParts = this.globSet.map(s => this.slashSplit(s));\n        this.globParts = this.preprocess(rawGlobParts);\n        this.debug(this.pattern, this.globParts);\n        // glob --> regexps\n        let set = this.globParts.map((s, _, __) => {\n            if (this.isWindows && this.windowsNoMagicRoot) {\n                // check if it's a drive or unc path.\n                const isUNC = s[0] === '' &&\n                    s[1] === '' &&\n                    (s[2] === '?' || !globMagic.test(s[2])) &&\n                    !globMagic.test(s[3]);\n                const isDrive = /^[a-z]:/i.test(s[0]);\n                if (isUNC) {\n                    return [...s.slice(0, 4), ...s.slice(4).map(ss => this.parse(ss))];\n                }\n                else if (isDrive) {\n                    return [s[0], ...s.slice(1).map(ss => this.parse(ss))];\n                }\n            }\n            return s.map(ss => this.parse(ss));\n        });\n        this.debug(this.pattern, set);\n        // filter out everything that didn't compile properly.\n        this.set = set.filter(s => s.indexOf(false) === -1);\n        // do not treat the ? in UNC paths as magic\n        if (this.isWindows) {\n            for (let i = 0; i < this.set.length; i++) {\n                const p = this.set[i];\n                if (p[0] === '' &&\n                    p[1] === '' &&\n                    this.globParts[i][2] === '?' &&\n                    typeof p[3] === 'string' &&\n                    /^[a-z]:$/i.test(p[3])) {\n                    p[2] = '?';\n                }\n            }\n        }\n        this.debug(this.pattern, this.set);\n    }\n    // various transforms to equivalent pattern sets that are\n    // faster to process in a filesystem walk.  The goal is to\n    // eliminate what we can, and push all ** patterns as far\n    // to the right as possible, even if it increases the number\n    // of patterns that we have to process.\n    preprocess(globParts) {\n        // if we're not in globstar mode, then turn all ** into *\n        if (this.options.noglobstar) {\n            for (let i = 0; i < globParts.length; i++) {\n                for (let j = 0; j < globParts[i].length; j++) {\n                    if (globParts[i][j] === '**') {\n                        globParts[i][j] = '*';\n                    }\n                }\n            }\n        }\n        const { optimizationLevel = 1 } = this.options;\n        if (optimizationLevel >= 2) {\n            // aggressive optimization for the purpose of fs walking\n            globParts = this.firstPhasePreProcess(globParts);\n            globParts = this.secondPhasePreProcess(globParts);\n        }\n        else if (optimizationLevel >= 1) {\n            // just basic optimizations to remove some .. parts\n            globParts = this.levelOneOptimize(globParts);\n        }\n        else {\n            // just collapse multiple ** portions into one\n            globParts = this.adjascentGlobstarOptimize(globParts);\n        }\n        return globParts;\n    }\n    // just get rid of adjascent ** portions\n    adjascentGlobstarOptimize(globParts) {\n        return globParts.map(parts => {\n            let gs = -1;\n            while (-1 !== (gs = parts.indexOf('**', gs + 1))) {\n                let i = gs;\n                while (parts[i + 1] === '**') {\n                    i++;\n                }\n                if (i !== gs) {\n                    parts.splice(gs, i - gs);\n                }\n            }\n            return parts;\n        });\n    }\n    // get rid of adjascent ** and resolve .. portions\n    levelOneOptimize(globParts) {\n        return globParts.map(parts => {\n            parts = parts.reduce((set, part) => {\n                const prev = set[set.length - 1];\n                if (part === '**' && prev === '**') {\n                    return set;\n                }\n                if (part === '..') {\n                    if (prev && prev !== '..' && prev !== '.' && prev !== '**') {\n                        set.pop();\n                        return set;\n                    }\n                }\n                set.push(part);\n                return set;\n            }, []);\n            return parts.length === 0 ? [''] : parts;\n        });\n    }\n    levelTwoFileOptimize(parts) {\n        if (!Array.isArray(parts)) {\n            parts = this.slashSplit(parts);\n        }\n        let didSomething = false;\n        do {\n            didSomething = false;\n            // 
// -> 
/\n            if (!this.preserveMultipleSlashes) {\n                for (let i = 1; i < parts.length - 1; i++) {\n                    const p = parts[i];\n                    // don't squeeze out UNC patterns\n                    if (i === 1 && p === '' && parts[0] === '')\n                        continue;\n                    if (p === '.' || p === '') {\n                        didSomething = true;\n                        parts.splice(i, 1);\n                        i--;\n                    }\n                }\n                if (parts[0] === '.' &&\n                    parts.length === 2 &&\n                    (parts[1] === '.' || parts[1] === '')) {\n                    didSomething = true;\n                    parts.pop();\n                }\n            }\n            // 
/

/../ ->

/\n            let dd = 0;\n            while (-1 !== (dd = parts.indexOf('..', dd + 1))) {\n                const p = parts[dd - 1];\n                if (p && p !== '.' && p !== '..' && p !== '**') {\n                    didSomething = true;\n                    parts.splice(dd - 1, 2);\n                    dd -= 2;\n                }\n            }\n        } while (didSomething);\n        return parts.length === 0 ? [''] : parts;\n    }\n    // First phase: single-pattern processing\n    // 
 is 1 or more portions\n    //  is 1 or more portions\n    // 

is any portion other than ., .., '', or **\n // is . or ''\n //\n // **/.. is *brutal* for filesystem walking performance, because\n // it effectively resets the recursive walk each time it occurs,\n // and ** cannot be reduced out by a .. pattern part like a regexp\n // or most strings (other than .., ., and '') can be.\n //\n //

/**/../

/

/ -> {

/../

/

/,

/**/

/

/}\n //

// -> 
/\n    // 
/

/../ ->

/\n    // **/**/ -> **/\n    //\n    // **/*/ -> */**/ <== not valid because ** doesn't follow\n    // this WOULD be allowed if ** did follow symlinks, or * didn't\n    firstPhasePreProcess(globParts) {\n        let didSomething = false;\n        do {\n            didSomething = false;\n            // 
/**/../

/

/ -> {

/../

/

/,

/**/

/

/}\n for (let parts of globParts) {\n let gs = -1;\n while (-1 !== (gs = parts.indexOf('**', gs + 1))) {\n let gss = gs;\n while (parts[gss + 1] === '**') {\n //

/**/**/ -> 
/**/\n                        gss++;\n                    }\n                    // eg, if gs is 2 and gss is 4, that means we have 3 **\n                    // parts, and can remove 2 of them.\n                    if (gss > gs) {\n                        parts.splice(gs + 1, gss - gs);\n                    }\n                    let next = parts[gs + 1];\n                    const p = parts[gs + 2];\n                    const p2 = parts[gs + 3];\n                    if (next !== '..')\n                        continue;\n                    if (!p ||\n                        p === '.' ||\n                        p === '..' ||\n                        !p2 ||\n                        p2 === '.' ||\n                        p2 === '..') {\n                        continue;\n                    }\n                    didSomething = true;\n                    // edit parts in place, and push the new one\n                    parts.splice(gs, 1);\n                    const other = parts.slice(0);\n                    other[gs] = '**';\n                    globParts.push(other);\n                    gs--;\n                }\n                // 
// -> 
/\n                if (!this.preserveMultipleSlashes) {\n                    for (let i = 1; i < parts.length - 1; i++) {\n                        const p = parts[i];\n                        // don't squeeze out UNC patterns\n                        if (i === 1 && p === '' && parts[0] === '')\n                            continue;\n                        if (p === '.' || p === '') {\n                            didSomething = true;\n                            parts.splice(i, 1);\n                            i--;\n                        }\n                    }\n                    if (parts[0] === '.' &&\n                        parts.length === 2 &&\n                        (parts[1] === '.' || parts[1] === '')) {\n                        didSomething = true;\n                        parts.pop();\n                    }\n                }\n                // 
/

/../ ->

/\n                let dd = 0;\n                while (-1 !== (dd = parts.indexOf('..', dd + 1))) {\n                    const p = parts[dd - 1];\n                    if (p && p !== '.' && p !== '..' && p !== '**') {\n                        didSomething = true;\n                        const needDot = dd === 1 && parts[dd + 1] === '**';\n                        const splin = needDot ? ['.'] : [];\n                        parts.splice(dd - 1, 2, ...splin);\n                        if (parts.length === 0)\n                            parts.push('');\n                        dd -= 2;\n                    }\n                }\n            }\n        } while (didSomething);\n        return globParts;\n    }\n    // second phase: multi-pattern dedupes\n    // {
/*/,
/

/} ->

/*/\n    // {
/,
/} -> 
/\n    // {
/**/,
/} -> 
/**/\n    //\n    // {
/**/,
/**/

/} ->

/**/\n    // ^-- not valid because ** doens't follow symlinks\n    secondPhasePreProcess(globParts) {\n        for (let i = 0; i < globParts.length - 1; i++) {\n            for (let j = i + 1; j < globParts.length; j++) {\n                const matched = this.partsMatch(globParts[i], globParts[j], !this.preserveMultipleSlashes);\n                if (matched) {\n                    globParts[i] = [];\n                    globParts[j] = matched;\n                    break;\n                }\n            }\n        }\n        return globParts.filter(gs => gs.length);\n    }\n    partsMatch(a, b, emptyGSMatch = false) {\n        let ai = 0;\n        let bi = 0;\n        let result = [];\n        let which = '';\n        while (ai < a.length && bi < b.length) {\n            if (a[ai] === b[bi]) {\n                result.push(which === 'b' ? b[bi] : a[ai]);\n                ai++;\n                bi++;\n            }\n            else if (emptyGSMatch && a[ai] === '**' && b[bi] === a[ai + 1]) {\n                result.push(a[ai]);\n                ai++;\n            }\n            else if (emptyGSMatch && b[bi] === '**' && a[ai] === b[bi + 1]) {\n                result.push(b[bi]);\n                bi++;\n            }\n            else if (a[ai] === '*' &&\n                b[bi] &&\n                (this.options.dot || !b[bi].startsWith('.')) &&\n                b[bi] !== '**') {\n                if (which === 'b')\n                    return false;\n                which = 'a';\n                result.push(a[ai]);\n                ai++;\n                bi++;\n            }\n            else if (b[bi] === '*' &&\n                a[ai] &&\n                (this.options.dot || !a[ai].startsWith('.')) &&\n                a[ai] !== '**') {\n                if (which === 'a')\n                    return false;\n                which = 'b';\n                result.push(b[bi]);\n                ai++;\n                bi++;\n            }\n            else {\n                return false;\n            }\n        }\n        // if we fall out of the loop, it means they two are identical\n        // as long as their lengths match\n        return a.length === b.length && result;\n    }\n    parseNegate() {\n        if (this.nonegate)\n            return;\n        const pattern = this.pattern;\n        let negate = false;\n        let negateOffset = 0;\n        for (let i = 0; i < pattern.length && pattern.charAt(i) === '!'; i++) {\n            negate = !negate;\n            negateOffset++;\n        }\n        if (negateOffset)\n            this.pattern = pattern.slice(negateOffset);\n        this.negate = negate;\n    }\n    // set partial to true to test if, for example,\n    // \"/a/b\" matches the start of \"/*/b/*/d\"\n    // Partial means, if you run out of file before you run\n    // out of pattern, then that's fine, as long as all\n    // the parts match.\n    matchOne(file, pattern, partial = false) {\n        const options = this.options;\n        // UNC paths like //?/X:/... can match X:/... and vice versa\n        // Drive letters in absolute drive or unc paths are always compared\n        // case-insensitively.\n        if (this.isWindows) {\n            const fileDrive = typeof file[0] === 'string' && /^[a-z]:$/i.test(file[0]);\n            const fileUNC = !fileDrive &&\n                file[0] === '' &&\n                file[1] === '' &&\n                file[2] === '?' &&\n                /^[a-z]:$/i.test(file[3]);\n            const patternDrive = typeof pattern[0] === 'string' && /^[a-z]:$/i.test(pattern[0]);\n            const patternUNC = !patternDrive &&\n                pattern[0] === '' &&\n                pattern[1] === '' &&\n                pattern[2] === '?' &&\n                typeof pattern[3] === 'string' &&\n                /^[a-z]:$/i.test(pattern[3]);\n            const fdi = fileUNC ? 3 : fileDrive ? 0 : undefined;\n            const pdi = patternUNC ? 3 : patternDrive ? 0 : undefined;\n            if (typeof fdi === 'number' && typeof pdi === 'number') {\n                const [fd, pd] = [file[fdi], pattern[pdi]];\n                if (fd.toLowerCase() === pd.toLowerCase()) {\n                    pattern[pdi] = fd;\n                    if (pdi > fdi) {\n                        pattern = pattern.slice(pdi);\n                    }\n                    else if (fdi > pdi) {\n                        file = file.slice(fdi);\n                    }\n                }\n            }\n        }\n        // resolve and reduce . and .. portions in the file as well.\n        // dont' need to do the second phase, because it's only one string[]\n        const { optimizationLevel = 1 } = this.options;\n        if (optimizationLevel >= 2) {\n            file = this.levelTwoFileOptimize(file);\n        }\n        this.debug('matchOne', this, { file, pattern });\n        this.debug('matchOne', file.length, pattern.length);\n        for (var fi = 0, pi = 0, fl = file.length, pl = pattern.length; fi < fl && pi < pl; fi++, pi++) {\n            this.debug('matchOne loop');\n            var p = pattern[pi];\n            var f = file[fi];\n            this.debug(pattern, p, f);\n            // should be impossible.\n            // some invalid regexp stuff in the set.\n            /* c8 ignore start */\n            if (p === false) {\n                return false;\n            }\n            /* c8 ignore stop */\n            if (p === GLOBSTAR) {\n                this.debug('GLOBSTAR', [pattern, p, f]);\n                // \"**\"\n                // a/**/b/**/c would match the following:\n                // a/b/x/y/z/c\n                // a/x/y/z/b/c\n                // a/b/x/b/x/c\n                // a/b/c\n                // To do this, take the rest of the pattern after\n                // the **, and see if it would match the file remainder.\n                // If so, return success.\n                // If not, the ** \"swallows\" a segment, and try again.\n                // This is recursively awful.\n                //\n                // a/**/b/**/c matching a/b/x/y/z/c\n                // - a matches a\n                // - doublestar\n                //   - matchOne(b/x/y/z/c, b/**/c)\n                //     - b matches b\n                //     - doublestar\n                //       - matchOne(x/y/z/c, c) -> no\n                //       - matchOne(y/z/c, c) -> no\n                //       - matchOne(z/c, c) -> no\n                //       - matchOne(c, c) yes, hit\n                var fr = fi;\n                var pr = pi + 1;\n                if (pr === pl) {\n                    this.debug('** at the end');\n                    // a ** at the end will just swallow the rest.\n                    // We have found a match.\n                    // however, it will not swallow /.x, unless\n                    // options.dot is set.\n                    // . and .. are *never* matched by **, for explosively\n                    // exponential reasons.\n                    for (; fi < fl; fi++) {\n                        if (file[fi] === '.' ||\n                            file[fi] === '..' ||\n                            (!options.dot && file[fi].charAt(0) === '.'))\n                            return false;\n                    }\n                    return true;\n                }\n                // ok, let's see if we can swallow whatever we can.\n                while (fr < fl) {\n                    var swallowee = file[fr];\n                    this.debug('\\nglobstar while', file, fr, pattern, pr, swallowee);\n                    // XXX remove this slice.  Just pass the start index.\n                    if (this.matchOne(file.slice(fr), pattern.slice(pr), partial)) {\n                        this.debug('globstar found match!', fr, fl, swallowee);\n                        // found a match.\n                        return true;\n                    }\n                    else {\n                        // can't swallow \".\" or \"..\" ever.\n                        // can only swallow \".foo\" when explicitly asked.\n                        if (swallowee === '.' ||\n                            swallowee === '..' ||\n                            (!options.dot && swallowee.charAt(0) === '.')) {\n                            this.debug('dot detected!', file, fr, pattern, pr);\n                            break;\n                        }\n                        // ** swallows a segment, and continue.\n                        this.debug('globstar swallow a segment, and continue');\n                        fr++;\n                    }\n                }\n                // no match was found.\n                // However, in partial mode, we can't say this is necessarily over.\n                /* c8 ignore start */\n                if (partial) {\n                    // ran out of file\n                    this.debug('\\n>>> no match, partial?', file, fr, pattern, pr);\n                    if (fr === fl) {\n                        return true;\n                    }\n                }\n                /* c8 ignore stop */\n                return false;\n            }\n            // something other than **\n            // non-magic patterns just have to match exactly\n            // patterns with magic have been turned into regexps.\n            let hit;\n            if (typeof p === 'string') {\n                hit = f === p;\n                this.debug('string match', p, f, hit);\n            }\n            else {\n                hit = p.test(f);\n                this.debug('pattern match', p, f, hit);\n            }\n            if (!hit)\n                return false;\n        }\n        // Note: ending in / means that we'll get a final \"\"\n        // at the end of the pattern.  This can only match a\n        // corresponding \"\" at the end of the file.\n        // If the file ends in /, then it can only match a\n        // a pattern that ends in /, unless the pattern just\n        // doesn't have any more for it. But, a/b/ should *not*\n        // match \"a/b/*\", even though \"\" matches against the\n        // [^/]*? pattern, except in partial mode, where it might\n        // simply not be reached yet.\n        // However, a/b/ should still satisfy a/*\n        // now either we fell off the end of the pattern, or we're done.\n        if (fi === fl && pi === pl) {\n            // ran out of pattern and filename at the same time.\n            // an exact hit!\n            return true;\n        }\n        else if (fi === fl) {\n            // ran out of file, but still had pattern left.\n            // this is ok if we're doing the match as part of\n            // a glob fs traversal.\n            return partial;\n        }\n        else if (pi === pl) {\n            // ran out of pattern, still have file left.\n            // this is only acceptable if we're on the very last\n            // empty segment of a file with a trailing slash.\n            // a/* should match a/b/\n            return fi === fl - 1 && file[fi] === '';\n            /* c8 ignore start */\n        }\n        else {\n            // should be unreachable.\n            throw new Error('wtf?');\n        }\n        /* c8 ignore stop */\n    }\n    braceExpand() {\n        return braceExpand(this.pattern, this.options);\n    }\n    parse(pattern) {\n        assertValidPattern(pattern);\n        const options = this.options;\n        // shortcuts\n        if (pattern === '**')\n            return GLOBSTAR;\n        if (pattern === '')\n            return '';\n        // far and away, the most common glob pattern parts are\n        // *, *.*, and *.  Add a fast check method for those.\n        let m;\n        let fastTest = null;\n        if ((m = pattern.match(starRE))) {\n            fastTest = options.dot ? starTestDot : starTest;\n        }\n        else if ((m = pattern.match(starDotExtRE))) {\n            fastTest = (options.nocase\n                ? options.dot\n                    ? starDotExtTestNocaseDot\n                    : starDotExtTestNocase\n                : options.dot\n                    ? starDotExtTestDot\n                    : starDotExtTest)(m[1]);\n        }\n        else if ((m = pattern.match(qmarksRE))) {\n            fastTest = (options.nocase\n                ? options.dot\n                    ? qmarksTestNocaseDot\n                    : qmarksTestNocase\n                : options.dot\n                    ? qmarksTestDot\n                    : qmarksTest)(m);\n        }\n        else if ((m = pattern.match(starDotStarRE))) {\n            fastTest = options.dot ? starDotStarTestDot : starDotStarTest;\n        }\n        else if ((m = pattern.match(dotStarRE))) {\n            fastTest = dotStarTest;\n        }\n        const re = AST.fromGlob(pattern, this.options).toMMPattern();\n        if (fastTest && typeof re === 'object') {\n            // Avoids overriding in frozen environments\n            Reflect.defineProperty(re, 'test', { value: fastTest });\n        }\n        return re;\n    }\n    makeRe() {\n        if (this.regexp || this.regexp === false)\n            return this.regexp;\n        // at this point, this.set is a 2d array of partial\n        // pattern strings, or \"**\".\n        //\n        // It's better to use .match().  This function shouldn't\n        // be used, really, but it's pretty convenient sometimes,\n        // when you just want to work with a regex.\n        const set = this.set;\n        if (!set.length) {\n            this.regexp = false;\n            return this.regexp;\n        }\n        const options = this.options;\n        const twoStar = options.noglobstar\n            ? star\n            : options.dot\n                ? twoStarDot\n                : twoStarNoDot;\n        const flags = new Set(options.nocase ? ['i'] : []);\n        // regexpify non-globstar patterns\n        // if ** is only item, then we just do one twoStar\n        // if ** is first, and there are more, prepend (\\/|twoStar\\/)? to next\n        // if ** is last, append (\\/twoStar|) to previous\n        // if ** is in the middle, append (\\/|\\/twoStar\\/) to previous\n        // then filter out GLOBSTAR symbols\n        let re = set\n            .map(pattern => {\n            const pp = pattern.map(p => {\n                if (p instanceof RegExp) {\n                    for (const f of p.flags.split(''))\n                        flags.add(f);\n                }\n                return typeof p === 'string'\n                    ? regExpEscape(p)\n                    : p === GLOBSTAR\n                        ? GLOBSTAR\n                        : p._src;\n            });\n            pp.forEach((p, i) => {\n                const next = pp[i + 1];\n                const prev = pp[i - 1];\n                if (p !== GLOBSTAR || prev === GLOBSTAR) {\n                    return;\n                }\n                if (prev === undefined) {\n                    if (next !== undefined && next !== GLOBSTAR) {\n                        pp[i + 1] = '(?:\\\\/|' + twoStar + '\\\\/)?' + next;\n                    }\n                    else {\n                        pp[i] = twoStar;\n                    }\n                }\n                else if (next === undefined) {\n                    pp[i - 1] = prev + '(?:\\\\/|' + twoStar + ')?';\n                }\n                else if (next !== GLOBSTAR) {\n                    pp[i - 1] = prev + '(?:\\\\/|\\\\/' + twoStar + '\\\\/)' + next;\n                    pp[i + 1] = GLOBSTAR;\n                }\n            });\n            return pp.filter(p => p !== GLOBSTAR).join('/');\n        })\n            .join('|');\n        // need to wrap in parens if we had more than one thing with |,\n        // otherwise only the first will be anchored to ^ and the last to $\n        const [open, close] = set.length > 1 ? ['(?:', ')'] : ['', ''];\n        // must match entire pattern\n        // ending in a * or ** will make it less strict.\n        re = '^' + open + re + close + '$';\n        // can match anything, as long as it's not this.\n        if (this.negate)\n            re = '^(?!' + re + ').+$';\n        try {\n            this.regexp = new RegExp(re, [...flags].join(''));\n            /* c8 ignore start */\n        }\n        catch (ex) {\n            // should be impossible\n            this.regexp = false;\n        }\n        /* c8 ignore stop */\n        return this.regexp;\n    }\n    slashSplit(p) {\n        // if p starts with // on windows, we preserve that\n        // so that UNC paths aren't broken.  Otherwise, any number of\n        // / characters are coalesced into one, unless\n        // preserveMultipleSlashes is set to true.\n        if (this.preserveMultipleSlashes) {\n            return p.split('/');\n        }\n        else if (this.isWindows && /^\\/\\/[^\\/]+/.test(p)) {\n            // add an extra '' for the one we lose\n            return ['', ...p.split(/\\/+/)];\n        }\n        else {\n            return p.split(/\\/+/);\n        }\n    }\n    match(f, partial = this.partial) {\n        this.debug('match', f, this.pattern);\n        // short-circuit in the case of busted things.\n        // comments, etc.\n        if (this.comment) {\n            return false;\n        }\n        if (this.empty) {\n            return f === '';\n        }\n        if (f === '/' && partial) {\n            return true;\n        }\n        const options = this.options;\n        // windows: need to use /, not \\\n        if (this.isWindows) {\n            f = f.split('\\\\').join('/');\n        }\n        // treat the test path as a set of pathparts.\n        const ff = this.slashSplit(f);\n        this.debug(this.pattern, 'split', ff);\n        // just ONE of the pattern sets in this.set needs to match\n        // in order for it to be valid.  If negating, then just one\n        // match means that we have failed.\n        // Either way, return on the first hit.\n        const set = this.set;\n        this.debug(this.pattern, 'set', set);\n        // Find the basename of the path by looking for the last non-empty segment\n        let filename = ff[ff.length - 1];\n        if (!filename) {\n            for (let i = ff.length - 2; !filename && i >= 0; i--) {\n                filename = ff[i];\n            }\n        }\n        for (let i = 0; i < set.length; i++) {\n            const pattern = set[i];\n            let file = ff;\n            if (options.matchBase && pattern.length === 1) {\n                file = [filename];\n            }\n            const hit = this.matchOne(file, pattern, partial);\n            if (hit) {\n                if (options.flipNegate) {\n                    return true;\n                }\n                return !this.negate;\n            }\n        }\n        // didn't get any hits.  this is success if it's a negative\n        // pattern, failure otherwise.\n        if (options.flipNegate) {\n            return false;\n        }\n        return this.negate;\n    }\n    static defaults(def) {\n        return minimatch.defaults(def).Minimatch;\n    }\n}\n/* c8 ignore start */\nexport { AST } from './ast.js';\nexport { escape } from './escape.js';\nexport { unescape } from './unescape.js';\n/* c8 ignore stop */\nminimatch.AST = AST;\nminimatch.Minimatch = Minimatch;\nminimatch.escape = escape;\nminimatch.unescape = unescape;\n//# sourceMappingURL=index.js.map","/**\n * Un-escape a string that has been escaped with {@link escape}.\n *\n * If the {@link windowsPathsNoEscape} option is used, then square-brace\n * escapes are removed, but not backslash escapes.  For example, it will turn\n * the string `'[*]'` into `*`, but it will not turn `'\\\\*'` into `'*'`,\n * becuase `\\` is a path separator in `windowsPathsNoEscape` mode.\n *\n * When `windowsPathsNoEscape` is not set, then both brace escapes and\n * backslash escapes are removed.\n *\n * Slashes (and backslashes in `windowsPathsNoEscape` mode) cannot be escaped\n * or unescaped.\n */\nexport const unescape = (s, { windowsPathsNoEscape = false, } = {}) => {\n    return windowsPathsNoEscape\n        ? s.replace(/\\[([^\\/\\\\])\\]/g, '$1')\n        : s.replace(/((?!\\\\).|^)\\[([^\\/\\\\])\\]/g, '$1$2').replace(/\\\\([^\\/])/g, '$1');\n};\n//# sourceMappingURL=unescape.js.map","// The module cache\nvar __webpack_module_cache__ = {};\n\n// The require function\nfunction __webpack_require__(moduleId) {\n\t// Check if module is in cache\n\tvar cachedModule = __webpack_module_cache__[moduleId];\n\tif (cachedModule !== undefined) {\n\t\treturn cachedModule.exports;\n\t}\n\t// Create a new module (and put it into the cache)\n\tvar module = __webpack_module_cache__[moduleId] = {\n\t\tid: moduleId,\n\t\tloaded: false,\n\t\texports: {}\n\t};\n\n\t// Execute the module function\n\t__webpack_modules__[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n\t// Flag the module as loaded\n\tmodule.loaded = true;\n\n\t// Return the exports of the module\n\treturn module.exports;\n}\n\n// expose the modules object (__webpack_modules__)\n__webpack_require__.m = __webpack_modules__;\n\n","// getDefaultExport function for compatibility with non-harmony modules\n__webpack_require__.n = (module) => {\n\tvar getter = module && module.__esModule ?\n\t\t() => (module['default']) :\n\t\t() => (module);\n\t__webpack_require__.d(getter, { a: getter });\n\treturn getter;\n};","// define getter functions for harmony exports\n__webpack_require__.d = (exports, definition) => {\n\tfor(var key in definition) {\n\t\tif(__webpack_require__.o(definition, key) && !__webpack_require__.o(exports, key)) {\n\t\t\tObject.defineProperty(exports, key, { enumerable: true, get: definition[key] });\n\t\t}\n\t}\n};","__webpack_require__.f = {};\n// This file contains only the entry chunk.\n// The chunk loading function for additional chunks\n__webpack_require__.e = (chunkId) => {\n\treturn Promise.all(Object.keys(__webpack_require__.f).reduce((promises, key) => {\n\t\t__webpack_require__.f[key](chunkId, promises);\n\t\treturn promises;\n\t}, []));\n};","// This function allow to reference async chunks\n__webpack_require__.u = (chunkId) => {\n\t// return url for filenames based on template\n\treturn \"\" + chunkId + \"-\" + chunkId + \".js?v=\" + {\"1140\":\"dd55e1cf2dab9870eea9\",\"2221\":\"2dad9baace69cfd4a3be\",\"3556\":\"57d00a12b4953e229068\",\"4508\":\"04b1afd183e5ecdd9cae\",\"4906\":\"75718b28aced26adc4af\",\"5448\":\"71cfe268d6f1213c4735\",\"5528\":\"1445efe9cbaf4e4cbcb8\",\"5862\":\"580b9c2e231a9169a12f\",\"6015\":\"8ac07126adf0759a3464\",\"7039\":\"be7eefcb933f99fc5b1f\",\"7859\":\"5bcb1bbacda3204063dd\",\"7910\":\"de857920f8beb5205bbc\",\"8124\":\"75a422293ae2add34a10\",\"8815\":\"0f63c2eb085d7b08be1b\"}[chunkId] + \"\";\n};","__webpack_require__.o = (obj, prop) => (Object.prototype.hasOwnProperty.call(obj, prop))","// define __esModule on exports\n__webpack_require__.r = (exports) => {\n\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n\t}\n\tObject.defineProperty(exports, '__esModule', { value: true });\n};","__webpack_require__.nmd = (module) => {\n\tmodule.paths = [];\n\tif (!module.children) module.children = [];\n\treturn module;\n};","__webpack_require__.j = 2122;","var scriptUrl;\nif (globalThis.importScripts) scriptUrl = globalThis.location + \"\";\nvar document = globalThis.document;\nif (!scriptUrl && document) {\n\tif (document.currentScript && document.currentScript.tagName.toUpperCase() === 'SCRIPT')\n\t\tscriptUrl = document.currentScript.src;\n\tif (!scriptUrl) {\n\t\tvar scripts = document.getElementsByTagName(\"script\");\n\t\tif(scripts.length) {\n\t\t\tvar i = scripts.length - 1;\n\t\t\twhile (i > -1 && (!scriptUrl || !/^http(s?):/.test(scriptUrl))) scriptUrl = scripts[i--].src;\n\t\t}\n\t}\n}\n// When supporting browsers where an automatic publicPath is not supported you must specify an output.publicPath manually via configuration\n// or pass an empty string (\"\") and set the __webpack_public_path__ variable from your code to use your own logic.\nif (!scriptUrl) throw new Error(\"Automatic publicPath is not supported in this browser\");\nscriptUrl = scriptUrl.replace(/^blob:/, \"\").replace(/#.*$/, \"\").replace(/\\?.*$/, \"\").replace(/\\/[^\\/]+$/, \"/\");\n__webpack_require__.p = scriptUrl;","__webpack_require__.b = (typeof document !== 'undefined' && document.baseURI) || self.location.href;\n\n// object to store loaded and loading chunks\n// undefined = chunk not loaded, null = chunk preloaded/prefetched\n// [resolve, reject, Promise] = chunk loading, 0 = chunk loaded\nvar installedChunks = {\n\t2122: 0\n};\n\n__webpack_require__.f.j = (chunkId, promises) => {\n\t\t// JSONP chunk loading for javascript\n\t\tvar installedChunkData = __webpack_require__.o(installedChunks, chunkId) ? installedChunks[chunkId] : undefined;\n\t\tif(installedChunkData !== 0) { // 0 means \"already installed\".\n\n\t\t\t// a Promise means \"currently loading\".\n\t\t\tif(installedChunkData) {\n\t\t\t\tpromises.push(installedChunkData[2]);\n\t\t\t} else {\n\t\t\t\tif(true) { // all chunks have JS\n\t\t\t\t\t// setup Promise in chunk cache\n\t\t\t\t\tvar promise = new Promise((resolve, reject) => (installedChunkData = installedChunks[chunkId] = [resolve, reject]));\n\t\t\t\t\tpromises.push(installedChunkData[2] = promise);\n\n\t\t\t\t\t// start chunk loading\n\t\t\t\t\tvar url = __webpack_require__.p + __webpack_require__.u(chunkId);\n\t\t\t\t\t// create error before stack unwound to get useful stacktrace later\n\t\t\t\t\tvar error = new Error();\n\t\t\t\t\tvar loadingEnded = (event) => {\n\t\t\t\t\t\tif(__webpack_require__.o(installedChunks, chunkId)) {\n\t\t\t\t\t\t\tinstalledChunkData = installedChunks[chunkId];\n\t\t\t\t\t\t\tif(installedChunkData !== 0) installedChunks[chunkId] = undefined;\n\t\t\t\t\t\t\tif(installedChunkData) {\n\t\t\t\t\t\t\t\tvar errorType = event && (event.type === 'load' ? 'missing' : event.type);\n\t\t\t\t\t\t\t\tvar realSrc = event && event.target && event.target.src;\n\t\t\t\t\t\t\t\terror.message = 'Loading chunk ' + chunkId + ' failed.\\n(' + errorType + ': ' + realSrc + ')';\n\t\t\t\t\t\t\t\terror.name = 'ChunkLoadError';\n\t\t\t\t\t\t\t\terror.type = errorType;\n\t\t\t\t\t\t\t\terror.request = realSrc;\n\t\t\t\t\t\t\t\tinstalledChunkData[1](error);\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t};\n\t\t\t\t\t__webpack_require__.l(url, loadingEnded, \"chunk-\" + chunkId, chunkId);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n};\n\n// no prefetching\n\n// no preloaded\n\n// no HMR\n\n// no HMR manifest\n\n__webpack_require__.O.j = (chunkId) => (installedChunks[chunkId] === 0);\n\n// install a JSONP callback for chunk loading\nvar webpackJsonpCallback = (parentChunkLoadingFunction, data) => {\n\tvar [chunkIds, moreModules, runtime] = data;\n\t// add \"moreModules\" to the modules object,\n\t// then flag all \"chunkIds\" as loaded and fire callback\n\tvar moduleId, chunkId, i = 0;\n\tif(chunkIds.some((id) => (installedChunks[id] !== 0))) {\n\t\tfor(moduleId in moreModules) {\n\t\t\tif(__webpack_require__.o(moreModules, moduleId)) {\n\t\t\t\t__webpack_require__.m[moduleId] = moreModules[moduleId];\n\t\t\t}\n\t\t}\n\t\tif(runtime) var result = runtime(__webpack_require__);\n\t}\n\tif(parentChunkLoadingFunction) parentChunkLoadingFunction(data);\n\tfor(;i < chunkIds.length; i++) {\n\t\tchunkId = chunkIds[i];\n\t\tif(__webpack_require__.o(installedChunks, chunkId) && installedChunks[chunkId]) {\n\t\t\tinstalledChunks[chunkId][0]();\n\t\t}\n\t\tinstalledChunks[chunkId] = 0;\n\t}\n\treturn __webpack_require__.O(result);\n}\n\nvar chunkLoadingGlobal = globalThis[\"webpackChunknextcloud_ui_legacy\"] = globalThis[\"webpackChunknextcloud_ui_legacy\"] || [];\nchunkLoadingGlobal.forEach(webpackJsonpCallback.bind(null, 0));\nchunkLoadingGlobal.push = webpackJsonpCallback.bind(null, chunkLoadingGlobal.push.bind(chunkLoadingGlobal));","__webpack_require__.nc = undefined;","// startup\n// Load entry module and return exports\n// This entry module depends on other loaded chunks and execution need to be delayed\nvar __webpack_exports__ = __webpack_require__.O(undefined, [4208], () => (__webpack_require__(80609)))\n__webpack_exports__ = __webpack_require__.O(__webpack_exports__);\n"],"names":["deferred","inProgress","dataWebpackPrefix","getLoggerBuilder","setApp","detectUser","build","client","createClient","getRootPath","setHeaders","token","requesttoken","onRequestTokenUpdate","getRequestToken","generateRemoteUrl","ActivityTabPluginView","ActivityTabPluginInstance","Vue","use","PiniaVuePlugin","__webpack_nonce__","getCSPNonce","tagName","loadState","undefined","window","OCA","Activity","registerSidebarAction","addEventListener","mount","async","el","node","reload","pinia","createPinia","default","ActivityCommentAction","extend","propsData","reloadCallback","resourceId","fileid","logger","info","unmount","$destroy","registerSidebarEntries","limit","offset","data","comments","getComments","resourceType","debug","CommentView","CommentsViewObject","map","comment","_CommentsViewInstance","timestamp","moment","props","creationDateTime","toDate","getTime","element","this","registerSidebarFilter","activity","type","registerSidebarTab","id","displayName","t","iconSvgInline","order","onInit","FilesSidebarTab","mixin","webComponent","wrap","Object","defineProperty","prototype","value","get","customElements","define","DEFAULT_LIMIT","options","resourcePath","join","datetime","toISOString","response","customRequest","method","responseData","text","stat","result","isDetailed","multistatus","responseItems","item","propstat","prop","prepareFileFromProps","toString","getDirectoryFiles","parseXML","processResponsePayload","balanced","a","b","str","RegExp","maybeMatch","r","range","start","end","pre","slice","body","length","post","reg","m","match","begs","beg","left","right","ai","indexOf","bi","i","push","pop","module","exports","freeGlobal","global","InvalidCharacterError","message","Error","name","error","TABLE","REGEX_SPACE_CHARACTERS","base64","input","String","test","c","buffer","padding","output","position","charCodeAt","charAt","replace","bitStorage","bitCounter","fromCharCode","substr","expand","split","escSlash","escOpen","escClose","escComma","escPeriod","escapeBraces","unescapeBraces","Math","random","numeric","parseInt","parseCommaParts","parts","p","postParts","shift","apply","embrace","isPadded","lte","y","gte","isTop","expansions","k","expansion","n","N","isNumericSequence","isAlphaSequence","isSequence","isOptions","x","width","max","incr","abs","pad","some","need","z","Array","j","len","code","cached","http","url","https","key","hasOwnProperty","validateParams","params","parse","protocol","request","cb","call","hasToStringTag","$toString","callBound","isStandardArguments","Symbol","toStringTag","isLegacyArguments","callee","supportsStandardArguments","arguments","isFnRegex","safeRegexTest","getProto","toStr","fnToStr","getGeneratorFunction","fn","GeneratorFunction","hasOwn","gOPD","$exec","isRegexMarker","throwRegexMarker","badStringifier","valueOf","toPrimitive","descriptor","e","_typeof","obj","iterator","constructor","_wrapNativeSuper","Class","_cache","Map","Function","TypeError","has","set","Wrapper","_construct","_getPrototypeOf","create","enumerable","writable","configurable","_setPrototypeOf","Parent","args","Reflect","construct","sham","Proxy","Date","_isNativeReflectConstruct","instance","bind","o","setPrototypeOf","__proto__","getPrototypeOf","ObjectPrototypeMutationError","_Error","_this","Constructor","_classCallCheck","self","ReferenceError","_assertThisInitialized","_possibleConstructorReturn","subClass","superClass","_inherits","traverse","object","path","callback","segments","_loop","idx","currentSegment","v","isArray","index","remainingSegments","pathToHere","concat","_ret","isLastSegment","property","currentObject","currentProperty","nextPropIsNumber","Number","isInteger","nextPropIsArrayWildcard","err","own","isIn","objectInPath","pathExists","validPath","hasMap","mapSizeDescriptor","getOwnPropertyDescriptor","mapSize","mapForEach","forEach","hasSet","Set","setSizeDescriptor","setSize","setForEach","weakMapHas","WeakMap","weakSetHas","WeakSet","weakRefDeref","WeakRef","deref","booleanValueOf","Boolean","objectToString","functionToString","$match","$slice","$replace","$toUpperCase","toUpperCase","$toLowerCase","toLowerCase","$test","$concat","$join","$arrSlice","$floor","floor","bigIntValueOf","BigInt","gOPS","getOwnPropertySymbols","symToString","hasShammedSymbols","isEnumerable","propertyIsEnumerable","gPO","O","addNumericSeparator","num","Infinity","sepRegex","int","intStr","dec","utilInspect","inspectCustom","custom","inspectSymbol","isSymbol","quotes","single","quoteREs","wrapQuotes","s","defaultStyle","opts","style","quoteStyle","quoteChar","quote","canTrustToString","isRegExp","inspect_","depth","seen","maxStringLength","customInspect","indent","numericSeparator","inspectString","bigIntStr","maxDepth","baseIndent","base","prev","getIndent","inspect","from","noIndent","newOpts","f","nameOf","keys","arrObjKeys","symString","markBoxed","HTMLElement","nodeName","getAttribute","attrs","attributes","childNodes","xs","singleLineValues","indentedJoin","isError","cause","isMap","mapParts","collectionOf","isSet","setParts","isWeakMap","weakCollectionOf","isWeakSet","isWeakRef","isNumber","isBigInt","isBoolean","isString","globalThis","isDate","ys","isPlainObject","protoTag","stringTag","tag","l","remaining","trailer","quoteRE","lastIndex","lowbyte","size","entries","lineJoiner","isArr","symMap","syms","util","normalizeArray","allowAboveRoot","res","splitPathRe","posix","posixSplitPath","filename","exec","resolve","resolvedPath","resolvedAbsolute","process","cwd","normalize","isAbsolute","trailingSlash","segment","relative","to","trim","arr","fromParts","toParts","min","samePartsLength","outputParts","_makeLong","dirname","root","dir","basename","ext","extname","format","pathObject","isObject","sep","pathString","allParts","delimiter","nodeType","punycode","maxInt","regexPunycode","regexNonASCII","regexSeparators","errors","stringFromCharCode","RangeError","array","mapDomain","string","ucs2decode","extra","counter","ucs2encode","basicToDigit","codePoint","digitToBasic","digit","flag","adapt","delta","numPoints","firstTime","baseMinusTMin","decode","out","basic","oldi","w","baseMinusT","inputLength","bias","lastIndexOf","splice","encode","handledCPCount","basicLength","q","currentValue","handledCPCountPlusOne","qMinusT","percentTwenties","Format","formatters","RFC1738","RFC3986","stringify","formats","utils","defaults","allowDots","allowEmptyArrays","allowPrototypes","allowSparse","arrayLimit","charset","charsetSentinel","comma","decodeDotInKeys","decoder","duplicates","ignoreQueryPrefix","interpretNumericEntities","parameterLimit","parseArrays","plainObjects","strictDepth","strictNullHandling","throwOnLimitExceeded","$0","numberStr","parseArrayValue","val","currentArrayLength","parseKeys","givenKey","valuesParsed","child","parent","segmentContent","splitKeyIntoSegments","chain","parentKey","leaf","isOverflow","combine","cleanRoot","decodedRoot","isNaN","parseObject","normalizeParseOptions","tempObj","cleanStr","skipIndex","part","bracketEqualsPos","pos","maybeMap","encodedVal","existing","parseValues","newObj","merge","compact","getSideChannel","arrayPrefixGenerators","brackets","prefix","indices","repeat","pushToArray","valueOrArray","toISO","defaultFormat","addQueryPrefix","arrayFormat","commaRoundTrip","encodeDotInKeys","encoder","encodeValuesOnly","filter","formatter","serializeDate","date","skipNulls","sentinel","generateArrayPrefix","sort","sideChannel","tmpSc","step","findFlag","isBuffer","objKeys","values","encodedPrefix","adjustedPrefix","encodedKey","keyPrefix","valueSideChannel","normalizeStringifyOptions","joined","overflowChannel","markOverflow","maxIndex","getMaxIndex","setMaxIndex","hexTable","arrayToObject","source","assign","target","reduce","acc","newIndex","queue","refs","compacted","compactQueue","defaultDecoder","strWithoutPlus","unescape","decodeURIComponent","defaultEncoder","kind","escape","mapped","sourceKeys","mergeTarget","targetItem","encodeURIComponent","pairs","query","parser","port","isRegex","$TypeError","regex","listGetNode","list","isDelete","curr","next","$o","channel","assert","deletedNode","objects","listDelete","listGet","listHas","listSet","GetIntrinsic","$Map","$mapGet","$mapSet","$mapHas","$mapDelete","$mapSize","$m","getSideChannelMap","$WeakMap","$weakMapGet","$weakMapSet","$weakMapHas","$weakMapDelete","$wm","getSideChannelList","makeChannel","$channelData","ClientRequest","statusCodes","defaultProtocol","location","search","host","hostname","headers","req","on","IncomingMessage","Agent","defaultMaxSockets","globalAgent","STATUS_CODES","METHODS","xhr","getXHR","XMLHttpRequest","open","XDomainRequest","checkTypeSupport","responseType","isFunction","fetch","ReadableStream","writableStream","WritableStream","abortController","AbortController","arraybuffer","msstream","mozchunkedarraybuffer","overrideMimeType","capability","inherits","stream","rStates","readyStates","preferBinary","Writable","_opts","_body","_headers","auth","setHeader","Buffer","useFetch","mode","_mode","decideMode","_fetchTimer","_socketTimeout","_socketTimer","_onFinish","lowerName","unsafeHeaders","getHeader","header","removeHeader","_destroyed","timeout","setTimeout","headersObj","Blob","headersList","keyName","signal","controller","_fetchAbortController","requestTimeout","emit","abort","credentials","withCredentials","then","_fetchResponse","_resetTimers","_connect","reason","_xhr","nextTick","ontimeout","setRequestHeader","_response","onreadystatechange","readyState","LOADING","DONE","_onXHRProgress","onprogress","onerror","send","status","statusValid","_write","chunk","encoding","done","clearTimeout","destroy","once","flushHeaders","setNoDelay","setSocketKeepAlive","UNSENT","OPENED","HEADERS_RECEIVED","resetTimers","Readable","rawHeaders","trailers","rawTrailers","statusCode","statusMessage","statusText","write","Promise","reject","_resumeFetch","close","pipeTo","catch","reader","getReader","read","_pos","responseURL","getAllResponseHeaders","matches","_charset","mimeType","charsetMatch","_read","responseText","newData","alloc","Uint8Array","MSStreamReader","byteLength","onload","readAsArrayBuffer","codes","createErrorType","Base","NodeError","_Base","arg1","arg2","arg3","getMessage","oneOf","expected","thing","actual","determiner","msg","this_len","substring","endsWith","arg","objectKeys","Duplex","allowHalfOpen","readable","onend","_writableState","ended","onEndNT","highWaterMark","getBuffer","_readableState","destroyed","PassThrough","Transform","_transform","ReadableState","EElistenerCount","emitter","listeners","Stream","OurUint8Array","debugUtil","debuglog","StringDecoder","createReadableStreamAsyncIterator","BufferList","destroyImpl","getHighWaterMark","_require$codes","ERR_INVALID_ARG_TYPE","ERR_STREAM_PUSH_AFTER_EOF","ERR_METHOD_NOT_IMPLEMENTED","ERR_STREAM_UNSHIFT_AFTER_END_EVENT","errorOrDestroy","kProxyEvents","isDuplex","objectMode","readableObjectMode","pipes","pipesCount","flowing","endEmitted","reading","sync","needReadable","emittedReadable","readableListening","resumeScheduled","paused","emitClose","autoDestroy","defaultEncoding","awaitDrain","readingMore","_destroy","readableAddChunk","addToFront","skipChunkCheck","er","state","emitReadable","emitReadable_","onEofChunk","chunkInvalid","_uint8ArrayToBuffer","addChunk","maybeReadMore","unshift","_undestroy","undestroy","isPaused","setEncoding","enc","head","content","clear","MAX_HWM","howMuchToRead","computeNewHighWaterMark","flow","maybeReadMore_","updateReadableListening","listenerCount","resume","nReadingNextTick","resume_","fromList","ret","first","consume","endReadable","endReadableNT","wState","finished","nOrig","doRead","pipe","dest","pipeOpts","src","endFn","stdout","stderr","unpipe","onunpipe","unpipeInfo","hasUnpiped","removeListener","onclose","onfinish","ondrain","ondata","cleanedUp","needDrain","pipeOnDrain","pause","event","prependListener","_events","dests","ev","addListener","removeAllListeners","asyncIterator","_fromList","iterable","ERR_MULTIPLE_CALLBACK","ERR_TRANSFORM_ALREADY_TRANSFORMING","ERR_TRANSFORM_WITH_LENGTH_0","afterTransform","ts","_transformState","transforming","writecb","writechunk","rs","needTransform","writeencoding","transform","flush","_flush","prefinish","err2","CorkedRequest","entry","finish","corkReq","pendingcb","onCorkedFinish","corkedRequestsFree","WritableState","realHasInstance","internalUtil","deprecate","ERR_STREAM_CANNOT_PIPE","ERR_STREAM_DESTROYED","ERR_STREAM_NULL_VALUES","ERR_STREAM_WRITE_AFTER_END","ERR_UNKNOWN_ENCODING","nop","writableObjectMode","finalCalled","ending","noDecode","decodeStrings","writing","corked","bufferProcessing","onwrite","writelen","onwriteStateUpdate","finishMaybe","errorEmitted","onwriteError","needFinish","bufferedRequest","clearBuffer","afterWrite","lastBufferedRequest","prefinished","bufferedRequestCount","writev","_writev","final","_final","doWrite","onwriteDrain","holder","count","allBuffers","isBuf","callFinal","rState","current","_","hasInstance","writeAfterEnd","validChunk","newChunk","decodeChunk","last","writeOrBuffer","cork","uncork","setDefaultEncoding","endWritable","_Object$setPrototypeO","_defineProperty","prim","hint","_toPrimitive","_toPropertyKey","kLastResolve","kLastReject","kError","kEnded","kLastPromise","kHandlePromise","kStream","createIterResult","readAndResolve","iter","onReadable","AsyncIteratorPrototype","ReadableStreamAsyncIteratorPrototype","promise","lastPromise","wrapForNext","_this2","_Object$create","ownKeys","enumerableOnly","symbols","sym","_objectSpread","getOwnPropertyDescriptors","defineProperties","_defineProperties","copyBuffer","copy","tail","protoProps","allocUnsafe","hasStrings","_getString","_getBuffer","nb","buf","emitErrorAndCloseNT","emitErrorNT","emitCloseNT","readableDestroyed","writableDestroyed","ERR_STREAM_PREMATURE_CLOSE","noop","eos","called","_len","_key","onlegacyfinish","writableEnded","readableEnded","onrequest","isRequest","ERR_MISSING_ARGS","streams","popCallback","destroys","closed","destroyer","ERR_INVALID_OPT_VALUE","duplexKey","hwm","highWaterMarkFrom","isFinite","pipeline","required","qs","controlOrWhitespace","CRHTLF","slashes","protocolre","windowsDriveLetter","trimLeft","rules","address","isSpecial","NaN","ignore","hash","lolcation","loc","finaldestination","Url","pathname","href","scheme","extractProtocol","rest","forwardSlashes","otherSlashes","slashesCount","extracted","instruction","instructions","up","username","password","origin","char","ins","protocolPattern","portPattern","simplePathPattern","unwise","autoEscape","nonHostChars","hostEndingChars","hostnamePartPattern","hostnamePartStart","unsafeProtocol","javascript","hostlessProtocol","slashedProtocol","ftp","gopher","file","querystring","urlParse","parseQueryString","slashesDenoteHost","u","queryIndex","splitter","uSplit","simplePath","proto","lowerProto","atSign","hostEnd","hec","parseHost","ipv6Hostname","hostparts","newpart","validParts","notHost","bit","toASCII","h","ae","esc","qm","resolveObject","rel","tkeys","tk","tkey","rkeys","rk","rkey","relPath","isSourceAbs","isRelAbs","mustEndAbs","removeAllDots","srcPath","psychotic","authInHost","hasTrailingSlash","fill","readUInt8","isArgumentsObject","isGeneratorFunction","whichTypedArray","isTypedArray","uncurryThis","BigIntSupported","SymbolSupported","ObjectToString","numberValue","stringValue","booleanValue","bigIntValue","symbolValue","checkBoxedPrimitive","prototypeValueOf","isMapToString","isSetToString","isWeakMapToString","isWeakSetToString","isArrayBufferToString","isArrayBuffer","ArrayBuffer","working","isDataViewToString","isDataView","DataView","isPromise","isArrayBufferView","isView","isUint8Array","isUint8ClampedArray","isUint16Array","isUint32Array","isInt8Array","isInt16Array","isInt32Array","isFloat32Array","isFloat64Array","isBigInt64Array","isBigUint64Array","SharedArrayBufferCopy","SharedArrayBuffer","isSharedArrayBufferToString","isSharedArrayBuffer","isNumberObject","isStringObject","isBooleanObject","isBigIntObject","isSymbolObject","isAsyncFunction","isMapIterator","isSetIterator","isGeneratorObject","isWebAssemblyCompiledModule","isBoxedPrimitive","isAnyArrayBuffer","descriptors","formatRegExp","JSON","isNull","noDeprecation","warned","throwDeprecation","traceDeprecation","console","trace","debugs","debugEnvRegex","env","NODE_DEBUG","debugEnv","ctx","stylize","stylizeNoColor","colors","showHidden","_extend","isUndefined","stylizeWithColor","formatValue","styleType","styles","recurseTimes","primitive","simple","formatPrimitive","visibleKeys","arrayToHash","getOwnPropertyNames","formatError","braces","toUTCString","formatProperty","formatArray","cur","reduceToSingleString","desc","line","ar","re","d","pid","types","isNullOrUndefined","isNativeError","isPrimitive","months","log","time","getHours","getMinutes","getSeconds","getDate","getMonth","add","kCustomPromisifiedSymbol","callbackifyOnRejected","newReason","promisify","original","promiseResolve","promiseReject","callbackify","callbackified","maybeCb","rej","WorkerGlobalScope","Headers","Request","Response","getIgnoreAttributesFn","ignoreAttributes","attrName","pattern","nameStartChar","regexName","getAllMatches","allmatches","startIndex","isName","isExist","defaultOptions","allowBooleanAttributes","unpairedTags","validate","xmlData","tags","tagFound","reachedRoot","readPI","isWhiteSpace","getErrorObject","getLineNumberForPosition","tagStartPos","readCommentAndCDATA","closingTag","validateTagName","readAttributeStr","attrStr","attrStrStart","isValid","validateAttributeString","tagClosed","otg","openPos","col","afterAmp","validateAmpersand","tagname","angleBracketsCount","startChar","validAttrStrRegxp","attrNames","getPositionFromMatch","validateAttrName","validateNumberAmpersand","lineNumber","lines","attributeNamePrefix","attributesGroupName","textNodeName","cdataPropName","indentBy","suppressEmptyNode","suppressUnpairedNode","suppressBooleanAttributes","tagValueProcessor","attributeValueProcessor","preserveOrder","commentPropName","entities","processEntities","stopNodes","oneListGroup","Builder","isAttribute","ignoreAttributesFn","attrPrefixLen","processTextOrObjNode","indentate","tagEndChar","newLine","level","ajPath","j2x","buildTextValNode","buildObjectNode","startsWith","jObj","arrayNodeName","jPath","attr","buildAttrPairStr","newval","replaceEntitiesValue","arrLen","listTagVal","listTagAttr","textValue","Ks","L","closeTag","tagEndExp","piClosingChar","entity","toXml","jArray","indentation","arrToStr","xmlStr","isPreviousElementTag","tagObj","propName","newJPath","tagText","isStopNode","attStr","attr_to_str","tempInd","piTextNodeName","newIdentation","tagStart","tagValue","includes","attrMap","attrVal","DocTypeReader","suppressValidationErr","readDocType","hasBody","exp","hasSeq","entityName","readEntityExp","regx","readElementExp","readNotationExp","skipWhitespace","validateEntityName","entityValue","readIdentifierVal","notationName","identifierType","publicIdentifier","systemIdentifier","identifierVal","elementName","contentModel","readAttlistExp","attributeName","attributeType","allowedNotations","notation","validTypes","defaultValue","seq","removeNSPrefix","parseTagValue","parseAttributeValue","trimValues","numberParseOptions","hex","leadingZeros","eNotation","alwaysCreateTextNode","htmlEntities","ignoreDeclaration","ignorePiTags","transformTagName","transformAttributeName","updateTag","captureMetaData","buildOptions","OrderedObjParser","currentNode","tagsNodeStack","docTypeEntities","lastEntities","ampEntity","fromCodePoint","addExternalEntities","parseXml","parseTextData","resolveNameSpace","buildAttributesMap","isItStopNode","readStopNodeData","saveTextToParentTag","addChild","stopNodesExact","stopNodesWildcard","stopNodeExp","externalEntities","entKeys","ent","dontTrim","hasAttributes","isLeafNode","escapeEntities","parseValue","attrsRegx","oldVal","aName","newVal","attrCollection","xmlObj","textData","docTypeReader","closeIndex","findClosingIndex","colonIndex","lastTagName","propIndex","tagData","readTagExp","childNode","tagExp","attrExpPresent","endIndex","rawTagName","newTagName","lastTag","tagContent","currentTagName","errMsg","closingIndex","closingChar","attrBoundary","ch","tagExpWithClosingIndex","separatorIndex","trimStart","openTagCount","shouldParse","XMLParser","validationOption","orderedObjParser","orderedResult","addEntity","getMetaDataSymbol","METADATA_SYMBOL","prettify","compress","compressedObj","newJpath","isLeaf","isLeafTag","assignAttributes","jpath","atrrName","propCount","XmlNode","sequence","methods","HOT_PATCHER_TYPE","NOOP","createNewItem","HotPatcher","_configuration","registry","getEmptyAction","__type__","configuration","newAction","control","allowTargetOverrides","foreignKey","execute","isPatched","patch","patchInline","plugin","restore","setFinal","assertError","getGlobalName","Layerr","errorOptionsOrMessage","messageText","shortMessage","super","_info","captureStackTrace","ctor","constructorOpt","_cause","fullStack","stack","parseArguments","hexRegex","numRegex","consider","decimalPoint","toNumber","trimmedStr","skipLike","numStr","parse_int","eNotationRegx","sign","eChar","eAdjacentToLeadingZeros","resolveEnotation","numTrimmedByZeros","decimalAdjacentToLeadingZeros","parsedStr","urlJoin","strArray","resultArray","component","generateBasicAuthHeader","createDigestContext","ha1","nc","algorithm","hasDigestAuth","generateDigestAuthHeader","digest","uri","qop","ncString","realm","nonce","cnonce","ha2","digestResponse","authValues","opaque","authHeader","parseDigestAuth","_digest","responseIndicatesDigestAuth","uid","NONCE_CHARS","makeNonce","setupAuth","context","oauthToken","authType","Auto","Authorization","Digest","None","Password","Token","InvalidAuthType","generateTokenAuthHeader","token_type","access_token","hasArrayBuffer","objToString","isReactNative","TARGET","isWeb","__patcher","getPatcher","DEFAULT_CONTACT_HREF","remoteURL","authTypeRaw","remoteBasePath","contactHref","httpAgent","httpsAgent","parsing","attributeParsers","tagParsers","remotePath","copyFile","destination","createDirectory","createReadStream","createWriteStream","requestOptions","deleteFile","exists","getDirectoryContents","getFileContents","getFileDownloadLink","getFileUploadLink","getHeaders","getQuota","lock","moveFile","destinationFilename","putFileContents","partialUpdateFileContents","filePath","getDAVCompliance","unlock","registerAttributeParser","registerTagParser","Destination","Overwrite","overwrite","Depth","shallow","dirPath","recursive","paths","creating","testPath","createDirectoryRecursively","outStream","PassThroughStream","rangeHeader","Range","responseError","getFileStream","writeStream","maxRedirects","finalOptions","Accept","deep","davResp","_remotePath","files","serverremoteBasePath","requestPath","includeSelf","serverBase","nodes","details","glob","compliance","server","TRANSFORM_RETAIN_FORMAT","InvalidOutputFormat","transformResponse","getFileContentsString","arrayBuffer","getFileContentsBuffer","authPart","authContents","LinkUnsupportedAuthType","quota","DEFAULT_TIMEOUT","refreshToken","Timeout","If","lockPayload","serverTimeout","InvalidUpdateRange","partialUpdateFileContentsSabredav","partialUpdateFileContentsApache","NotSupported","contentLength","getSearch","searchArbiter","results","getStat","prepareRequestOptions","userOptions","requestStandard","ok","requestDigest","requestAuto","response2","patcher","newHeaders","agent","parsedURL","getFetchOptions","createErrorFromResponse","handleResponseCode","processGlobFilter","matchBase","requestDataToFetchBody","ha1Compute","user","pass","ha1Hash","PropertyType","displaynameTagParser","getPropertyOfType","Original","xml","normaliseResponse","normaliseResult","attrValue","processor","getParser","getlastmodified","lastMod","getcontentlength","rawSize","resourcetype","getcontenttype","getetag","etag","collection","lastmod","mime","displayname","parseStat","responseItem","statusLine","statusCodeStr","parseSearch","truncated","translateDiskSpace","fromBase64","toBase64","convertResponseHeaders","mergeHeaders","headerPayloads","headerKeys","lowerHeader","cloneShallow","items","nextItem","mergeObjects","obj1","obj2","SEP_PATH_POSIX","SEP_PATH_WINDOWS","encodePath","replaced","getAllDirectories","directory","currentPath","makePathAbsolute","pathStr","normalisePath","normalisedPath","parseQuota","quotaUsed","quotaAvail","used","available","calculateDataLength","DataTypeNoLength","extractURLPath","fullURL","urlPath","joinURL","nextPart","partIndex","normaliseHREF","generateLockXML","ownerHREF","namespace","lockinfo","lockscope","exclusive","locktype","owner","ns","parseGenericResponse","AuthType","ErrorCode","CharCodes","BinTrieFlags","EntityDecoderState","DecodingMode","codePointAt","EntityLevel","EncodingMode","assertValidPattern","isExtglobType","startNoDot","addPatternStart","justDots","reSpecials","regExpEscape","qmark","star","starNoEmpty","AST","hasMagic","pp","copyIn","toJSON","isStart","isEnd","pl","clone","ast","opt","escaping","inBrace","braceStart","braceNeg","noext","fromGlob","toMMPattern","uflag","toRegExpSource","nocase","nocaseMagicOnly","flags","_src","_glob","allowDot","dot","noEmpty","aps","needNoTrav","needNoDot","repeated","bodyDotAllowed","_hasMagic","needUflag","consumed","magic","posixClasses","braceEscape","rangesToString","ranges","parseClass","negs","sawStart","negate","endPos","rangeStart","WHILE","cls","unip","neg","sranges","snegs","windowsPathsNoEscape","minimatch","nocomment","Minimatch","starDotExtRE","starDotExtTest","starDotExtTestDot","starDotExtTestNocase","starDotExtTestNocaseDot","starDotStarRE","starDotStarTest","starDotStarTestDot","dotStarRE","dotStarTest","starRE","starTest","starTestDot","qmarksRE","qmarksTestNocase","qmarksTestNoExt","qmarksTestNocaseDot","qmarksTestNoExtDot","qmarksTestDot","qmarksTest","defaultPlatform","__MINIMATCH_TESTING_PLATFORM__","platform","GLOBSTAR","def","orig","makeRe","braceExpand","nobrace","mm","nonull","globMagic","nonegate","empty","preserveMultipleSlashes","partial","globSet","globParts","isWindows","windowsNoMagicRoot","regexp","allowWindowsEscape","make","magicalBraces","parseNegate","rawGlobParts","slashSplit","preprocess","__","isUNC","isDrive","ss","noglobstar","optimizationLevel","firstPhasePreProcess","secondPhasePreProcess","levelOneOptimize","adjascentGlobstarOptimize","gs","levelTwoFileOptimize","didSomething","dd","gss","p2","other","splin","matched","partsMatch","emptyGSMatch","which","negateOffset","matchOne","fileDrive","fileUNC","patternDrive","fdi","pdi","fd","pd","fi","pi","fl","fr","pr","swallowee","hit","fastTest","twoStar","ex","ff","flipNegate","__webpack_module_cache__","__webpack_require__","moduleId","cachedModule","loaded","__webpack_modules__","chunkIds","priority","notFulfilled","fulfilled","every","getter","__esModule","definition","chunkId","all","promises","script","needAttach","scripts","document","getElementsByTagName","createElement","setAttribute","onScriptComplete","doneFns","parentNode","removeChild","appendChild","nmd","children","scriptUrl","importScripts","currentScript","baseURI","installedChunks","installedChunkData","errorType","realSrc","webpackJsonpCallback","parentChunkLoadingFunction","moreModules","runtime","chunkLoadingGlobal","__webpack_exports__"],"sourceRoot":""}
\ No newline at end of file
diff --git a/dist/comments-init.js b/dist/comments-init.js
index f3787e3d1a93c..b7ce789a85076 100644
--- a/dist/comments-init.js
+++ b/dist/comments-init.js
@@ -1,2 +1,2 @@
-(()=>{var e,r={10946(e,r,n){"use strict";var t=n(35810),o=n(53334);const i=(0,n(35947).YK)().setApp("comments").detectUser().build(),a={id:"comments-unread",title({nodes:e}){const r=e[0]?.attributes["comments-unread"];return"number"==typeof r&&r>=0?(0,o.n)("comments","1 new comment","{unread} new comments",r,{unread:r}):(0,o.t)("comments","Comment")},displayName:()=>"",iconSvgInline:()=>'',enabled({nodes:e}){const r=e[0]?.attributes?.["comments-unread"];return"number"==typeof r&&r>0},async exec({nodes:e}){if(1!==e.length||!e[0])return!1;try{return(0,t.dC)().open(e[0],"comments"),null}catch(e){return i.error("Error while opening sidebar",{error:e}),!1}},inline:()=>!0,order:-140};(0,t.Gg)(a)},63779(){},77199(){}},n={};function t(e){var o=n[e];if(void 0!==o)return o.exports;var i=n[e]={id:e,loaded:!1,exports:{}};return r[e].call(i.exports,i,i.exports,t),i.loaded=!0,i.exports}t.m=r,e=[],t.O=(r,n,o,i)=>{if(!n){var a=1/0;for(c=0;c=i)&&Object.keys(t.O).every(e=>t.O[e](n[l]))?n.splice(l--,1):(d=!1,i0&&e[c-1][2]>i;c--)e[c]=e[c-1];e[c]=[n,o,i]},t.n=e=>{var r=e&&e.__esModule?()=>e.default:()=>e;return t.d(r,{a:r}),r},t.d=(e,r)=>{for(var n in r)t.o(r,n)&&!t.o(e,n)&&Object.defineProperty(e,n,{enumerable:!0,get:r[n]})},t.e=()=>Promise.resolve(),t.o=(e,r)=>Object.prototype.hasOwnProperty.call(e,r),t.r=e=>{"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},t.nmd=e=>(e.paths=[],e.children||(e.children=[]),e),t.j=3260,(()=>{t.b="undefined"!=typeof document&&document.baseURI||self.location.href;var e={3260:0};t.O.j=r=>0===e[r];var r=(r,n)=>{var o,i,[a,d,l]=n,s=0;if(a.some(r=>0!==e[r])){for(o in d)t.o(d,o)&&(t.m[o]=d[o]);if(l)var c=l(t)}for(r&&r(n);st(10946));o=t.O(o)})();
-//# sourceMappingURL=comments-init.js.map?v=0e97afdbb21bcf1f0d69
\ No newline at end of file
+(()=>{var e,r={34698(e,r,n){"use strict";var t=n(35810),o=n(53334);const i=(0,n(35947).YK)().setApp("comments").detectUser().build();var a=n(81222);const s={id:"comments-unread",title({nodes:e}){const r=e[0]?.attributes["comments-unread"];return"number"==typeof r&&r>=0?(0,o.n)("comments","1 new comment","{unread} new comments",r,{unread:r}):(0,o.t)("comments","Comment")},displayName:()=>"",iconSvgInline:()=>'',enabled({nodes:e}){const r=e[0]?.attributes?.["comments-unread"];return"number"==typeof r&&r>0},async exec({nodes:e}){if(1!==e.length||!e[0])return!1;try{const r=(0,t.dC)(),n=(0,a.C)("comments","activityEnabled",!1)&&void 0!==window.OCA?.Activity?.registerSidebarAction?"activity":"comments";return r.isOpen&&r.node?.source===e[0].source?(i.debug("Sidebar already open for this node, just activating comments tab"),r.setActiveTab(n),null):(r.open(e[0],n),null)}catch(e){return i.error("Error while opening sidebar",{error:e}),!1}},inline:()=>!0,order:-140};(0,t.Gg)(s)},63779(){},77199(){}},n={};function t(e){var o=n[e];if(void 0!==o)return o.exports;var i=n[e]={id:e,loaded:!1,exports:{}};return r[e].call(i.exports,i,i.exports,t),i.loaded=!0,i.exports}t.m=r,e=[],t.O=(r,n,o,i)=>{if(!n){var a=1/0;for(l=0;l=i)&&Object.keys(t.O).every(e=>t.O[e](n[d]))?n.splice(d--,1):(s=!1,i0&&e[l-1][2]>i;l--)e[l]=e[l-1];e[l]=[n,o,i]},t.n=e=>{var r=e&&e.__esModule?()=>e.default:()=>e;return t.d(r,{a:r}),r},t.d=(e,r)=>{for(var n in r)t.o(r,n)&&!t.o(e,n)&&Object.defineProperty(e,n,{enumerable:!0,get:r[n]})},t.e=()=>Promise.resolve(),t.o=(e,r)=>Object.prototype.hasOwnProperty.call(e,r),t.r=e=>{"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},t.nmd=e=>(e.paths=[],e.children||(e.children=[]),e),t.j=3260,(()=>{t.b="undefined"!=typeof document&&document.baseURI||self.location.href;var e={3260:0};t.O.j=r=>0===e[r];var r=(r,n)=>{var o,i,[a,s,d]=n,c=0;if(a.some(r=>0!==e[r])){for(o in s)t.o(s,o)&&(t.m[o]=s[o]);if(d)var l=d(t)}for(r&&r(n);ct(34698));o=t.O(o)})();
+//# sourceMappingURL=comments-init.js.map?v=5e85e8d92f865f81c97f
\ No newline at end of file
diff --git a/dist/comments-init.js.map b/dist/comments-init.js.map
index 802d6ed54fb03..49ad8e4e82863 100644
--- a/dist/comments-init.js.map
+++ b/dist/comments-init.js.map
@@ -1 +1 @@
-{"version":3,"file":"comments-init.js?v=0e97afdbb21bcf1f0d69","mappings":"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","sources":["webpack:///nextcloud/webpack/runtime/chunk loaded","webpack:///nextcloud/apps/comments/src/logger.js","webpack:///nextcloud/apps/comments/src/actions/inlineUnreadCommentsAction.ts","webpack:///nextcloud/apps/comments/src/init.ts","webpack:///nextcloud/webpack/bootstrap","webpack:///nextcloud/webpack/runtime/compat get default export","webpack:///nextcloud/webpack/runtime/define property getters","webpack:///nextcloud/webpack/runtime/ensure chunk","webpack:///nextcloud/webpack/runtime/hasOwnProperty shorthand","webpack:///nextcloud/webpack/runtime/make namespace object","webpack:///nextcloud/webpack/runtime/node module decorator","webpack:///nextcloud/webpack/runtime/runtimeId","webpack:///nextcloud/webpack/runtime/jsonp chunk loading","webpack:///nextcloud/webpack/runtime/nonce","webpack:///nextcloud/webpack/startup"],"sourcesContent":["var deferred = [];\n__webpack_require__.O = (result, chunkIds, fn, priority) => {\n\tif(chunkIds) {\n\t\tpriority = priority || 0;\n\t\tfor(var i = deferred.length; i > 0 && deferred[i - 1][2] > priority; i--) deferred[i] = deferred[i - 1];\n\t\tdeferred[i] = [chunkIds, fn, priority];\n\t\treturn;\n\t}\n\tvar notFulfilled = Infinity;\n\tfor (var i = 0; i < deferred.length; i++) {\n\t\tvar [chunkIds, fn, priority] = deferred[i];\n\t\tvar fulfilled = true;\n\t\tfor (var j = 0; j < chunkIds.length; j++) {\n\t\t\tif ((priority & 1 === 0 || notFulfilled >= priority) && Object.keys(__webpack_require__.O).every((key) => (__webpack_require__.O[key](chunkIds[j])))) {\n\t\t\t\tchunkIds.splice(j--, 1);\n\t\t\t} else {\n\t\t\t\tfulfilled = false;\n\t\t\t\tif(priority < notFulfilled) notFulfilled = priority;\n\t\t\t}\n\t\t}\n\t\tif(fulfilled) {\n\t\t\tdeferred.splice(i--, 1)\n\t\t\tvar r = fn();\n\t\t\tif (r !== undefined) result = r;\n\t\t}\n\t}\n\treturn result;\n};","/**\n * SPDX-FileCopyrightText: 2023 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\n\nimport { getLoggerBuilder } from '@nextcloud/logger'\n\nexport default getLoggerBuilder()\n\t.setApp('comments')\n\t.detectUser()\n\t.build()\n","/*!\n * SPDX-FileCopyrightText: 2023 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\nimport CommentProcessingSvg from '@mdi/svg/svg/comment-processing.svg?raw';\nimport { getSidebar } from '@nextcloud/files';\nimport { n, t } from '@nextcloud/l10n';\nimport logger from '../logger.js';\nexport const action = {\n    id: 'comments-unread',\n    title({ nodes }) {\n        const unread = nodes[0]?.attributes['comments-unread'];\n        if (typeof unread === 'number' && unread >= 0) {\n            return n('comments', '1 new comment', '{unread} new comments', unread, { unread });\n        }\n        return t('comments', 'Comment');\n    },\n    // Empty string when rendered inline\n    displayName: () => '',\n    iconSvgInline: () => CommentProcessingSvg,\n    enabled({ nodes }) {\n        const unread = nodes[0]?.attributes?.['comments-unread'];\n        return typeof unread === 'number' && unread > 0;\n    },\n    async exec({ nodes }) {\n        if (nodes.length !== 1 || !nodes[0]) {\n            return false;\n        }\n        try {\n            const sidebar = getSidebar();\n            sidebar.open(nodes[0], 'comments');\n            return null;\n        }\n        catch (error) {\n            logger.error('Error while opening sidebar', { error });\n            return false;\n        }\n    },\n    inline: () => true,\n    order: -140,\n};\n","/**\n * SPDX-FileCopyrightText: 2023 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\nimport { registerFileAction } from '@nextcloud/files';\nimport { action } from './actions/inlineUnreadCommentsAction.ts';\nregisterFileAction(action);\n","// The module cache\nvar __webpack_module_cache__ = {};\n\n// The require function\nfunction __webpack_require__(moduleId) {\n\t// Check if module is in cache\n\tvar cachedModule = __webpack_module_cache__[moduleId];\n\tif (cachedModule !== undefined) {\n\t\treturn cachedModule.exports;\n\t}\n\t// Create a new module (and put it into the cache)\n\tvar module = __webpack_module_cache__[moduleId] = {\n\t\tid: moduleId,\n\t\tloaded: false,\n\t\texports: {}\n\t};\n\n\t// Execute the module function\n\t__webpack_modules__[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n\t// Flag the module as loaded\n\tmodule.loaded = true;\n\n\t// Return the exports of the module\n\treturn module.exports;\n}\n\n// expose the modules object (__webpack_modules__)\n__webpack_require__.m = __webpack_modules__;\n\n","// getDefaultExport function for compatibility with non-harmony modules\n__webpack_require__.n = (module) => {\n\tvar getter = module && module.__esModule ?\n\t\t() => (module['default']) :\n\t\t() => (module);\n\t__webpack_require__.d(getter, { a: getter });\n\treturn getter;\n};","// define getter functions for harmony exports\n__webpack_require__.d = (exports, definition) => {\n\tfor(var key in definition) {\n\t\tif(__webpack_require__.o(definition, key) && !__webpack_require__.o(exports, key)) {\n\t\t\tObject.defineProperty(exports, key, { enumerable: true, get: definition[key] });\n\t\t}\n\t}\n};","// The chunk loading function for additional chunks\n// Since all referenced chunks are already included\n// in this file, this function is empty here.\n__webpack_require__.e = () => (Promise.resolve());","__webpack_require__.o = (obj, prop) => (Object.prototype.hasOwnProperty.call(obj, prop))","// define __esModule on exports\n__webpack_require__.r = (exports) => {\n\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n\t}\n\tObject.defineProperty(exports, '__esModule', { value: true });\n};","__webpack_require__.nmd = (module) => {\n\tmodule.paths = [];\n\tif (!module.children) module.children = [];\n\treturn module;\n};","__webpack_require__.j = 3260;","__webpack_require__.b = (typeof document !== 'undefined' && document.baseURI) || self.location.href;\n\n// object to store loaded and loading chunks\n// undefined = chunk not loaded, null = chunk preloaded/prefetched\n// [resolve, reject, Promise] = chunk loading, 0 = chunk loaded\nvar installedChunks = {\n\t3260: 0\n};\n\n// no chunk on demand loading\n\n// no prefetching\n\n// no preloaded\n\n// no HMR\n\n// no HMR manifest\n\n__webpack_require__.O.j = (chunkId) => (installedChunks[chunkId] === 0);\n\n// install a JSONP callback for chunk loading\nvar webpackJsonpCallback = (parentChunkLoadingFunction, data) => {\n\tvar [chunkIds, moreModules, runtime] = data;\n\t// add \"moreModules\" to the modules object,\n\t// then flag all \"chunkIds\" as loaded and fire callback\n\tvar moduleId, chunkId, i = 0;\n\tif(chunkIds.some((id) => (installedChunks[id] !== 0))) {\n\t\tfor(moduleId in moreModules) {\n\t\t\tif(__webpack_require__.o(moreModules, moduleId)) {\n\t\t\t\t__webpack_require__.m[moduleId] = moreModules[moduleId];\n\t\t\t}\n\t\t}\n\t\tif(runtime) var result = runtime(__webpack_require__);\n\t}\n\tif(parentChunkLoadingFunction) parentChunkLoadingFunction(data);\n\tfor(;i < chunkIds.length; i++) {\n\t\tchunkId = chunkIds[i];\n\t\tif(__webpack_require__.o(installedChunks, chunkId) && installedChunks[chunkId]) {\n\t\t\tinstalledChunks[chunkId][0]();\n\t\t}\n\t\tinstalledChunks[chunkId] = 0;\n\t}\n\treturn __webpack_require__.O(result);\n}\n\nvar chunkLoadingGlobal = globalThis[\"webpackChunknextcloud_ui_legacy\"] = globalThis[\"webpackChunknextcloud_ui_legacy\"] || [];\nchunkLoadingGlobal.forEach(webpackJsonpCallback.bind(null, 0));\nchunkLoadingGlobal.push = webpackJsonpCallback.bind(null, chunkLoadingGlobal.push.bind(chunkLoadingGlobal));","__webpack_require__.nc = undefined;","// startup\n// Load entry module and return exports\n// This entry module depends on other loaded chunks and execution need to be delayed\nvar __webpack_exports__ = __webpack_require__.O(undefined, [4208], () => (__webpack_require__(10946)))\n__webpack_exports__ = __webpack_require__.O(__webpack_exports__);\n"],"names":["deferred","getLoggerBuilder","setApp","detectUser","build","action","id","title","nodes","unread","attributes","n","t","displayName","iconSvgInline","enabled","exec","length","getSidebar","open","error","logger","inline","order","registerFileAction","__webpack_module_cache__","__webpack_require__","moduleId","cachedModule","undefined","exports","module","loaded","__webpack_modules__","call","m","O","result","chunkIds","fn","priority","notFulfilled","Infinity","i","fulfilled","j","Object","keys","every","key","splice","r","getter","__esModule","d","a","definition","o","defineProperty","enumerable","get","e","Promise","resolve","obj","prop","prototype","hasOwnProperty","Symbol","toStringTag","value","nmd","paths","children","b","document","baseURI","self","location","href","installedChunks","chunkId","webpackJsonpCallback","parentChunkLoadingFunction","data","moreModules","runtime","some","chunkLoadingGlobal","globalThis","forEach","bind","push","nc","__webpack_exports__"],"sourceRoot":""}
\ No newline at end of file
+{"version":3,"file":"comments-init.js?v=5e85e8d92f865f81c97f","mappings":"UAAIA,E,uDCOJ,SAAeC,E,SAAAA,MACbC,OAAO,YACPC,aACAC,Q,eCDK,MAAMC,EAAS,CAClBC,GAAI,kBACJC,KAAAA,EAAM,MAAEC,IACJ,MAAMC,EAASD,EAAM,IAAIE,WAAW,mBACpC,MAAsB,iBAAXD,GAAuBA,GAAU,GACjCE,EAAAA,EAAAA,GAAE,WAAY,gBAAiB,wBAAyBF,EAAQ,CAAEA,YAEtEG,EAAAA,EAAAA,GAAE,WAAY,UACzB,EAEAC,YAAaA,IAAM,GACnBC,cAAeA,I,2SACfC,OAAAA,EAAQ,MAAEP,IACN,MAAMC,EAASD,EAAM,IAAIE,aAAa,mBACtC,MAAyB,iBAAXD,GAAuBA,EAAS,CAClD,EACA,UAAMO,EAAK,MAAER,IACT,GAAqB,IAAjBA,EAAMS,SAAiBT,EAAM,GAC7B,OAAO,EAEX,IACI,MAAMU,GAAUC,EAAAA,EAAAA,MACVC,GCtBPC,EAAAA,EAAAA,GAAU,WAAY,mBAAmB,SAA0DC,IAAhDC,OAAOC,KAAKC,UAAUC,sBDsBpB,WAAa,WACjE,OAAIR,EAAQS,QAAUT,EAAQU,MAAMC,SAAWrB,EAAM,GAAGqB,QACpDC,EAAOC,MAAM,oEACbb,EAAQc,aAAaZ,GACd,OAEXF,EAAQe,KAAKzB,EAAM,GAAIY,GAChB,KACX,CACA,MAAOc,GAEH,OADAJ,EAAOI,MAAM,8BAA+B,CAAEA,WACvC,CACX,CACJ,EACAC,OAAQA,KAAM,EACdC,OAAQ,MExCZC,EAAAA,EAAAA,IAAmBhC,E,uBCLfiC,EAA2B,CAAC,EAGhC,SAASC,EAAoBC,GAE5B,IAAIC,EAAeH,EAAyBE,GAC5C,QAAqBlB,IAAjBmB,EACH,OAAOA,EAAaC,QAGrB,IAAIC,EAASL,EAAyBE,GAAY,CACjDlC,GAAIkC,EACJI,QAAQ,EACRF,QAAS,CAAC,GAUX,OANAG,EAAoBL,GAAUM,KAAKH,EAAOD,QAASC,EAAQA,EAAOD,QAASH,GAG3EI,EAAOC,QAAS,EAGTD,EAAOD,OACf,CAGAH,EAAoBQ,EAAIF,EL5BpB7C,EAAW,GACfuC,EAAoBS,EAAI,CAACC,EAAQC,EAAUC,EAAIC,KAC9C,IAAGF,EAAH,CAMA,IAAIG,EAAeC,IACnB,IAASC,EAAI,EAAGA,EAAIvD,EAASiB,OAAQsC,IAAK,CAGzC,IAFA,IAAKL,EAAUC,EAAIC,GAAYpD,EAASuD,GACpCC,GAAY,EACPC,EAAI,EAAGA,EAAIP,EAASjC,OAAQwC,MACpB,EAAXL,GAAsBC,GAAgBD,IAAaM,OAAOC,KAAKpB,EAAoBS,GAAGY,MAAOC,GAAStB,EAAoBS,EAAEa,GAAKX,EAASO,KAC9IP,EAASY,OAAOL,IAAK,IAErBD,GAAY,EACTJ,EAAWC,IAAcA,EAAeD,IAG7C,GAAGI,EAAW,CACbxD,EAAS8D,OAAOP,IAAK,GACrB,IAAIQ,EAAIZ,SACE7B,IAANyC,IAAiBd,EAASc,EAC/B,CACD,CACA,OAAOd,CAnBP,CAJCG,EAAWA,GAAY,EACvB,IAAI,IAAIG,EAAIvD,EAASiB,OAAQsC,EAAI,GAAKvD,EAASuD,EAAI,GAAG,GAAKH,EAAUG,IAAKvD,EAASuD,GAAKvD,EAASuD,EAAI,GACrGvD,EAASuD,GAAK,CAACL,EAAUC,EAAIC,IMJ/Bb,EAAoB5B,EAAKgC,IACxB,IAAIqB,EAASrB,GAAUA,EAAOsB,WAC7B,IAAOtB,EAAiB,QACxB,IAAM,EAEP,OADAJ,EAAoB2B,EAAEF,EAAQ,CAAEG,EAAGH,IAC5BA,GCLRzB,EAAoB2B,EAAI,CAACxB,EAAS0B,KACjC,IAAI,IAAIP,KAAOO,EACX7B,EAAoB8B,EAAED,EAAYP,KAAStB,EAAoB8B,EAAE3B,EAASmB,IAC5EH,OAAOY,eAAe5B,EAASmB,EAAK,CAAEU,YAAY,EAAMC,IAAKJ,EAAWP,MCD3EtB,EAAoBkC,EAAI,IAAOC,QAAQC,UCHvCpC,EAAoB8B,EAAI,CAACO,EAAKC,IAAUnB,OAAOoB,UAAUC,eAAejC,KAAK8B,EAAKC,GCClFtC,EAAoBwB,EAAKrB,IACH,oBAAXsC,QAA0BA,OAAOC,aAC1CvB,OAAOY,eAAe5B,EAASsC,OAAOC,YAAa,CAAEC,MAAO,WAE7DxB,OAAOY,eAAe5B,EAAS,aAAc,CAAEwC,OAAO,KCLvD3C,EAAoB4C,IAAOxC,IAC1BA,EAAOyC,MAAQ,GACVzC,EAAO0C,WAAU1C,EAAO0C,SAAW,IACjC1C,GCHRJ,EAAoBkB,EAAI,K,MCAxBlB,EAAoB+C,EAAyB,oBAAbC,UAA4BA,SAASC,SAAYC,KAAKC,SAASC,KAK/F,IAAIC,EAAkB,CACrB,KAAM,GAaPrD,EAAoBS,EAAES,EAAKoC,GAA0C,IAA7BD,EAAgBC,GAGxD,IAAIC,EAAuB,CAACC,EAA4BC,KACvD,IAGIxD,EAAUqD,GAHT3C,EAAU+C,EAAaC,GAAWF,EAGhBzC,EAAI,EAC3B,GAAGL,EAASiD,KAAM7F,GAAgC,IAAxBsF,EAAgBtF,IAAa,CACtD,IAAIkC,KAAYyD,EACZ1D,EAAoB8B,EAAE4B,EAAazD,KACrCD,EAAoBQ,EAAEP,GAAYyD,EAAYzD,IAGhD,GAAG0D,EAAS,IAAIjD,EAASiD,EAAQ3D,EAClC,CAEA,IADGwD,GAA4BA,EAA2BC,GACrDzC,EAAIL,EAASjC,OAAQsC,IACzBsC,EAAU3C,EAASK,GAChBhB,EAAoB8B,EAAEuB,EAAiBC,IAAYD,EAAgBC,IACrED,EAAgBC,GAAS,KAE1BD,EAAgBC,GAAW,EAE5B,OAAOtD,EAAoBS,EAAEC,IAG1BmD,EAAqBC,WAA4C,gCAAIA,WAA4C,iCAAK,GAC1HD,EAAmBE,QAAQR,EAAqBS,KAAK,KAAM,IAC3DH,EAAmBI,KAAOV,EAAqBS,KAAK,KAAMH,EAAmBI,KAAKD,KAAKH,G,KChDvF7D,EAAoBkE,QAAKnF,ECGzB,IAAIoF,EAAsBnE,EAAoBS,OAAE1B,EAAW,CAAC,MAAO,IAAOiB,EAAoB,QAC9FmE,EAAsBnE,EAAoBS,EAAE0D,E","sources":["webpack:///nextcloud/webpack/runtime/chunk loaded","webpack:///nextcloud/apps/comments/src/logger.js","webpack:///nextcloud/apps/comments/src/actions/inlineUnreadCommentsAction.ts","webpack:///nextcloud/apps/comments/src/utils/activity.ts","webpack:///nextcloud/apps/comments/src/init.ts","webpack:///nextcloud/webpack/bootstrap","webpack:///nextcloud/webpack/runtime/compat get default export","webpack:///nextcloud/webpack/runtime/define property getters","webpack:///nextcloud/webpack/runtime/ensure chunk","webpack:///nextcloud/webpack/runtime/hasOwnProperty shorthand","webpack:///nextcloud/webpack/runtime/make namespace object","webpack:///nextcloud/webpack/runtime/node module decorator","webpack:///nextcloud/webpack/runtime/runtimeId","webpack:///nextcloud/webpack/runtime/jsonp chunk loading","webpack:///nextcloud/webpack/runtime/nonce","webpack:///nextcloud/webpack/startup"],"sourcesContent":["var deferred = [];\n__webpack_require__.O = (result, chunkIds, fn, priority) => {\n\tif(chunkIds) {\n\t\tpriority = priority || 0;\n\t\tfor(var i = deferred.length; i > 0 && deferred[i - 1][2] > priority; i--) deferred[i] = deferred[i - 1];\n\t\tdeferred[i] = [chunkIds, fn, priority];\n\t\treturn;\n\t}\n\tvar notFulfilled = Infinity;\n\tfor (var i = 0; i < deferred.length; i++) {\n\t\tvar [chunkIds, fn, priority] = deferred[i];\n\t\tvar fulfilled = true;\n\t\tfor (var j = 0; j < chunkIds.length; j++) {\n\t\t\tif ((priority & 1 === 0 || notFulfilled >= priority) && Object.keys(__webpack_require__.O).every((key) => (__webpack_require__.O[key](chunkIds[j])))) {\n\t\t\t\tchunkIds.splice(j--, 1);\n\t\t\t} else {\n\t\t\t\tfulfilled = false;\n\t\t\t\tif(priority < notFulfilled) notFulfilled = priority;\n\t\t\t}\n\t\t}\n\t\tif(fulfilled) {\n\t\t\tdeferred.splice(i--, 1)\n\t\t\tvar r = fn();\n\t\t\tif (r !== undefined) result = r;\n\t\t}\n\t}\n\treturn result;\n};","/**\n * SPDX-FileCopyrightText: 2023 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\n\nimport { getLoggerBuilder } from '@nextcloud/logger'\n\nexport default getLoggerBuilder()\n\t.setApp('comments')\n\t.detectUser()\n\t.build()\n","/*!\n * SPDX-FileCopyrightText: 2023 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\nimport CommentProcessingSvg from '@mdi/svg/svg/comment-processing.svg?raw';\nimport { getSidebar } from '@nextcloud/files';\nimport { n, t } from '@nextcloud/l10n';\nimport logger from '../logger.js';\nimport { isUsingActivityIntegration } from '../utils/activity.js';\nexport const action = {\n    id: 'comments-unread',\n    title({ nodes }) {\n        const unread = nodes[0]?.attributes['comments-unread'];\n        if (typeof unread === 'number' && unread >= 0) {\n            return n('comments', '1 new comment', '{unread} new comments', unread, { unread });\n        }\n        return t('comments', 'Comment');\n    },\n    // Empty string when rendered inline\n    displayName: () => '',\n    iconSvgInline: () => CommentProcessingSvg,\n    enabled({ nodes }) {\n        const unread = nodes[0]?.attributes?.['comments-unread'];\n        return typeof unread === 'number' && unread > 0;\n    },\n    async exec({ nodes }) {\n        if (nodes.length !== 1 || !nodes[0]) {\n            return false;\n        }\n        try {\n            const sidebar = getSidebar();\n            const sidebarTabId = isUsingActivityIntegration() ? 'activity' : 'comments';\n            if (sidebar.isOpen && sidebar.node?.source === nodes[0].source) {\n                logger.debug('Sidebar already open for this node, just activating comments tab');\n                sidebar.setActiveTab(sidebarTabId);\n                return null;\n            }\n            sidebar.open(nodes[0], sidebarTabId);\n            return null;\n        }\n        catch (error) {\n            logger.error('Error while opening sidebar', { error });\n            return false;\n        }\n    },\n    inline: () => true,\n    order: -140,\n};\n","/*!\n * SPDX-FileCopyrightText: 2026 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\nimport { loadState } from '@nextcloud/initial-state';\n/**\n * Check if the comments app is using the Activity app integration for the sidebar.\n */\nexport function isUsingActivityIntegration() {\n    return loadState('comments', 'activityEnabled', false) && window.OCA?.Activity?.registerSidebarAction !== undefined;\n}\n","/**\n * SPDX-FileCopyrightText: 2023 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\nimport { registerFileAction } from '@nextcloud/files';\nimport { action } from './actions/inlineUnreadCommentsAction.ts';\nregisterFileAction(action);\n","// The module cache\nvar __webpack_module_cache__ = {};\n\n// The require function\nfunction __webpack_require__(moduleId) {\n\t// Check if module is in cache\n\tvar cachedModule = __webpack_module_cache__[moduleId];\n\tif (cachedModule !== undefined) {\n\t\treturn cachedModule.exports;\n\t}\n\t// Create a new module (and put it into the cache)\n\tvar module = __webpack_module_cache__[moduleId] = {\n\t\tid: moduleId,\n\t\tloaded: false,\n\t\texports: {}\n\t};\n\n\t// Execute the module function\n\t__webpack_modules__[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n\t// Flag the module as loaded\n\tmodule.loaded = true;\n\n\t// Return the exports of the module\n\treturn module.exports;\n}\n\n// expose the modules object (__webpack_modules__)\n__webpack_require__.m = __webpack_modules__;\n\n","// getDefaultExport function for compatibility with non-harmony modules\n__webpack_require__.n = (module) => {\n\tvar getter = module && module.__esModule ?\n\t\t() => (module['default']) :\n\t\t() => (module);\n\t__webpack_require__.d(getter, { a: getter });\n\treturn getter;\n};","// define getter functions for harmony exports\n__webpack_require__.d = (exports, definition) => {\n\tfor(var key in definition) {\n\t\tif(__webpack_require__.o(definition, key) && !__webpack_require__.o(exports, key)) {\n\t\t\tObject.defineProperty(exports, key, { enumerable: true, get: definition[key] });\n\t\t}\n\t}\n};","// The chunk loading function for additional chunks\n// Since all referenced chunks are already included\n// in this file, this function is empty here.\n__webpack_require__.e = () => (Promise.resolve());","__webpack_require__.o = (obj, prop) => (Object.prototype.hasOwnProperty.call(obj, prop))","// define __esModule on exports\n__webpack_require__.r = (exports) => {\n\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n\t}\n\tObject.defineProperty(exports, '__esModule', { value: true });\n};","__webpack_require__.nmd = (module) => {\n\tmodule.paths = [];\n\tif (!module.children) module.children = [];\n\treturn module;\n};","__webpack_require__.j = 3260;","__webpack_require__.b = (typeof document !== 'undefined' && document.baseURI) || self.location.href;\n\n// object to store loaded and loading chunks\n// undefined = chunk not loaded, null = chunk preloaded/prefetched\n// [resolve, reject, Promise] = chunk loading, 0 = chunk loaded\nvar installedChunks = {\n\t3260: 0\n};\n\n// no chunk on demand loading\n\n// no prefetching\n\n// no preloaded\n\n// no HMR\n\n// no HMR manifest\n\n__webpack_require__.O.j = (chunkId) => (installedChunks[chunkId] === 0);\n\n// install a JSONP callback for chunk loading\nvar webpackJsonpCallback = (parentChunkLoadingFunction, data) => {\n\tvar [chunkIds, moreModules, runtime] = data;\n\t// add \"moreModules\" to the modules object,\n\t// then flag all \"chunkIds\" as loaded and fire callback\n\tvar moduleId, chunkId, i = 0;\n\tif(chunkIds.some((id) => (installedChunks[id] !== 0))) {\n\t\tfor(moduleId in moreModules) {\n\t\t\tif(__webpack_require__.o(moreModules, moduleId)) {\n\t\t\t\t__webpack_require__.m[moduleId] = moreModules[moduleId];\n\t\t\t}\n\t\t}\n\t\tif(runtime) var result = runtime(__webpack_require__);\n\t}\n\tif(parentChunkLoadingFunction) parentChunkLoadingFunction(data);\n\tfor(;i < chunkIds.length; i++) {\n\t\tchunkId = chunkIds[i];\n\t\tif(__webpack_require__.o(installedChunks, chunkId) && installedChunks[chunkId]) {\n\t\t\tinstalledChunks[chunkId][0]();\n\t\t}\n\t\tinstalledChunks[chunkId] = 0;\n\t}\n\treturn __webpack_require__.O(result);\n}\n\nvar chunkLoadingGlobal = globalThis[\"webpackChunknextcloud_ui_legacy\"] = globalThis[\"webpackChunknextcloud_ui_legacy\"] || [];\nchunkLoadingGlobal.forEach(webpackJsonpCallback.bind(null, 0));\nchunkLoadingGlobal.push = webpackJsonpCallback.bind(null, chunkLoadingGlobal.push.bind(chunkLoadingGlobal));","__webpack_require__.nc = undefined;","// startup\n// Load entry module and return exports\n// This entry module depends on other loaded chunks and execution need to be delayed\nvar __webpack_exports__ = __webpack_require__.O(undefined, [4208], () => (__webpack_require__(34698)))\n__webpack_exports__ = __webpack_require__.O(__webpack_exports__);\n"],"names":["deferred","getLoggerBuilder","setApp","detectUser","build","action","id","title","nodes","unread","attributes","n","t","displayName","iconSvgInline","enabled","exec","length","sidebar","getSidebar","sidebarTabId","loadState","undefined","window","OCA","Activity","registerSidebarAction","isOpen","node","source","logger","debug","setActiveTab","open","error","inline","order","registerFileAction","__webpack_module_cache__","__webpack_require__","moduleId","cachedModule","exports","module","loaded","__webpack_modules__","call","m","O","result","chunkIds","fn","priority","notFulfilled","Infinity","i","fulfilled","j","Object","keys","every","key","splice","r","getter","__esModule","d","a","definition","o","defineProperty","enumerable","get","e","Promise","resolve","obj","prop","prototype","hasOwnProperty","Symbol","toStringTag","value","nmd","paths","children","b","document","baseURI","self","location","href","installedChunks","chunkId","webpackJsonpCallback","parentChunkLoadingFunction","data","moreModules","runtime","some","chunkLoadingGlobal","globalThis","forEach","bind","push","nc","__webpack_exports__"],"sourceRoot":""}
\ No newline at end of file
diff --git a/dist/files-main.js b/dist/files-main.js
index 37e8cc351c2fb..d21baca332b01 100644
--- a/dist/files-main.js
+++ b/dist/files-main.js
@@ -1,2 +1,2 @@
-(()=>{var e,s,i,n={84560(e,t,s){"use strict";s.d(t,{A:()=>i});const i=(0,s(35947).YK)().setApp("files").detectUser().build()},65832(e,s,i){"use strict";var n=i(21777),a=i(10810),o=i(85471),r=i(32505),l=i(22378),d=i(85168),c=i(61338),m=i(35810),g=i(81222),u=i(53334),f=i(71225),p=i(40715),h=i(66860),v=i(22720),w=i(43627),A={name:"teleport",props:{to:{type:String,required:!0},where:{type:String,default:"after"},disabled:Boolean},data:function(){return{nodes:[],waiting:!1,observer:null,parent:null}},watch:{to:"maybeMove",where:"maybeMove",disabled:function(e){var t=this;e?(this.disable(),this.$nextTick(function(){t.teardownObserver()})):(this.bootObserver(),this.move())}},mounted:function(){this.nodes=Array.from(this.$el.childNodes),this.disabled||this.bootObserver(),this.maybeMove()},beforeDestroy:function(){this.nodes=this.getComponentChildrenNode(),this.disable(),this.teardownObserver()},computed:{classes:function(){return this.disabled?["teleporter"]:["teleporter","hidden"]}},methods:{maybeMove:function(){this.disabled||this.move()},move:function(){if(this.waiting=!1,this.parent=document.querySelector(this.to),!this.parent)return this.disable(),void(this.waiting=!0);"before"===this.where?this.parent.prepend(this.getFragment()):this.parent.appendChild(this.getFragment())},disable:function(){this.$el.appendChild(this.getFragment()),this.parent=null},getFragment:function(){var e=document.createDocumentFragment();return this.nodes.forEach(function(t){return e.appendChild(t)}),e},onMutations:function(e){for(var t=this,s=!1,i=0;i0&&(s=!0)}s&&this.move()},bootObserver:function(){var e=this;this.observer||(this.observer=new MutationObserver(function(t){return e.onMutations(t)}),this.observer.observe(document.body,{childList:!0,subtree:!0,attributes:!1,characterData:!1}),this.childObserver||(this.childObserver=new MutationObserver(function(t){t.find(function(t){return t.target===e.$el})&&(e.nodes.forEach(function(e){return e.parentNode&&e.parentNode.removeChild(e)}),e.nodes=e.getComponentChildrenNode(),e.maybeMove())}),this.childObserver.observe(this.$el,{childList:!0,subtree:!1,attributes:!1,characterData:!1})))},teardownObserver:function(){this.observer&&(this.observer.disconnect(),this.observer=null),this.childObserver&&(this.childObserver.disconnect(),this.childObserver=null)},getComponentChildrenNode:function(){return this.$vnode.componentOptions.children.map(function(e){return e.elm}).filter(function(e){return e})}}};function b(e,t,s,i,n,a,o,r,l,d){"boolean"!=typeof o&&(l=r,r=o,o=!1);var c,m="function"==typeof s?s.options:s;if(e&&e.render&&(m.render=e.render,m.staticRenderFns=e.staticRenderFns,m._compiled=!0,n&&(m.functional=!0)),i&&(m._scopeId=i),a?(c=function(e){(e=e||this.$vnode&&this.$vnode.ssrContext||this.parent&&this.parent.$vnode&&this.parent.$vnode.ssrContext)||"undefined"==typeof __VUE_SSR_CONTEXT__||(e=__VUE_SSR_CONTEXT__),t&&t.call(this,l(e)),e&&e._registeredComponents&&e._registeredComponents.add(a)},m._ssrRegister=c):t&&(c=o?function(e){t.call(this,d(e,this.$root.$options.shadowRoot))}:function(e){t.call(this,r(e))}),c)if(m.functional){var g=m.render;m.render=function(e,t){return c.call(t),g(e,t)}}else{var u=m.beforeCreate;m.beforeCreate=u?[].concat(u,c):[c]}return s}var C,y="undefined"!=typeof navigator&&/msie [6-9]\\b/.test(navigator.userAgent.toLowerCase());function k(e){return function(e,t){return function(e,t){var s=y?t.media||"default":e,i=_[s]||(_[s]={ids:new Set,styles:[]});if(!i.ids.has(e)){i.ids.add(e);var n=t.source;if(t.map&&(n+="\n/*# sourceURL="+t.map.sources[0]+" */",n+="\n/*# sourceMappingURL=data:application/json;base64,"+btoa(unescape(encodeURIComponent(JSON.stringify(t.map))))+" */"),i.element||(i.element=document.createElement("style"),i.element.type="text/css",t.media&&i.element.setAttribute("media",t.media),void 0===C&&(C=document.head||document.getElementsByTagName("head")[0]),C.appendChild(i.element)),"styleSheet"in i.element)i.styles.push(n),i.element.styleSheet.cssText=i.styles.filter(Boolean).join("\n");else{var a=i.ids.size-1,o=document.createTextNode(n),r=i.element.childNodes;r[a]&&i.element.removeChild(r[a]),r.length?i.element.insertBefore(o,r[a]):i.element.appendChild(o)}}}(e,t)}}var _={},x=A,S=function(){var e=this,t=e.$createElement;return(e._self._c||t)("div",{class:e.classes},[e._t("default")],2)};S._withStripped=!0;var T=b({render:S,staticRenderFns:[]},function(e){e&&e("data-v-50f4b45b_0",{source:".hidden[data-v-50f4b45b] {\n  visibility: hidden;\n  display: none;\n}\n\n/*# sourceMappingURL=Teleport.vue.map */",map:{version:3,sources:["/home/shodan/Projects/vue2-teleport/src/Teleport.vue","Teleport.vue"],names:[],mappings:"AA2LA;EACA,kBAAA;EACA,aAAA;AC1LA;;AAEA,uCAAuC",file:"Teleport.vue",sourcesContent:["\n\n\\n\\n\\n\",\".hidden {\\n  visibility: hidden;\\n  display: none;\\n}\\n\\n/*# sourceMappingURL=Teleport.vue.map */\"]}, media: undefined });\n\n  };\n  /* scoped */\n  var __vue_scope_id__ = \"data-v-50f4b45b\";\n  /* module identifier */\n  var __vue_module_identifier__ = undefined;\n  /* functional template */\n  var __vue_is_functional_template__ = false;\n  /* style inject SSR */\n  \n  /* style inject shadow dom */\n  \n\n  \n  var __vue_component__ = /*#__PURE__*/normalizeComponent(\n    { render: __vue_render__, staticRenderFns: __vue_staticRenderFns__ },\n    __vue_inject_styles__,\n    __vue_script__,\n    __vue_scope_id__,\n    __vue_is_functional_template__,\n    __vue_module_identifier__,\n    false,\n    createInjector,\n    undefined,\n    undefined\n  );\n\n// Taken from https://vuejs.org/v2/cookbook/packaging-sfc-for-npm.html\n\n// Declare install function executed by Vue.use()\nfunction install (Vue) {\n  if (install.installed) { return; }\n\n  install.installed = true;\n  Vue.component('Teleport', __vue_component__);\n}\n\n// Create module definition for Vue.use()\nvar plugin = {\n  install: install,\n};\n\n// Auto-install when vue is found (eg. in browser via ","import mod from \"-!../vue-loader/lib/index.js??vue-loader-options!./FormatListBulletedSquare.vue?vue&type=script&lang=js\"; export default mod; export * from \"-!../vue-loader/lib/index.js??vue-loader-options!./FormatListBulletedSquare.vue?vue&type=script&lang=js\"","import { render, staticRenderFns } from \"./FormatListBulletedSquare.vue?vue&type=template&id=64cece03\"\nimport script from \"./FormatListBulletedSquare.vue?vue&type=script&lang=js\"\nexport * from \"./FormatListBulletedSquare.vue?vue&type=script&lang=js\"\n\n\n/* normalize component */\nimport normalizer from \"!../vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n  script,\n  render,\n  staticRenderFns,\n  false,\n  null,\n  null,\n  null\n  \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('span',_vm._b({staticClass:\"material-design-icon format-list-bulleted-square-icon\",attrs:{\"aria-hidden\":_vm.title ? null : 'true',\"aria-label\":_vm.title,\"role\":\"img\"},on:{\"click\":function($event){return _vm.$emit('click', $event)}}},'span',_vm.$attrs,false),[_c('svg',{staticClass:\"material-design-icon__svg\",attrs:{\"fill\":_vm.fillColor,\"width\":_vm.size,\"height\":_vm.size,\"viewBox\":\"0 0 24 24\"}},[_c('path',{attrs:{\"d\":\"M3,4H7V8H3V4M9,5V7H21V5H9M3,10H7V14H3V10M9,11V13H21V11H9M3,16H7V20H3V16M9,17V19H21V17H9\"}},[(_vm.title)?_c('title',[_vm._v(_vm._s(_vm.title))]):_vm._e()])])])\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import mod from \"-!../vue-loader/lib/index.js??vue-loader-options!./Reload.vue?vue&type=script&lang=js\"; export default mod; export * from \"-!../vue-loader/lib/index.js??vue-loader-options!./Reload.vue?vue&type=script&lang=js\"","\n\n","import { render, staticRenderFns } from \"./Reload.vue?vue&type=template&id=39a07256\"\nimport script from \"./Reload.vue?vue&type=script&lang=js\"\nexport * from \"./Reload.vue?vue&type=script&lang=js\"\n\n\n/* normalize component */\nimport normalizer from \"!../vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n  script,\n  render,\n  staticRenderFns,\n  false,\n  null,\n  null,\n  null\n  \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('span',_vm._b({staticClass:\"material-design-icon reload-icon\",attrs:{\"aria-hidden\":_vm.title ? null : 'true',\"aria-label\":_vm.title,\"role\":\"img\"},on:{\"click\":function($event){return _vm.$emit('click', $event)}}},'span',_vm.$attrs,false),[_c('svg',{staticClass:\"material-design-icon__svg\",attrs:{\"fill\":_vm.fillColor,\"width\":_vm.size,\"height\":_vm.size,\"viewBox\":\"0 0 24 24\"}},[_c('path',{attrs:{\"d\":\"M2 12C2 16.97 6.03 21 11 21C13.39 21 15.68 20.06 17.4 18.4L15.9 16.9C14.63 18.25 12.86 19 11 19C4.76 19 1.64 11.46 6.05 7.05C10.46 2.64 18 5.77 18 12H15L19 16H19.1L23 12H20C20 7.03 15.97 3 11 3C6.03 3 2 7.03 2 12Z\"}},[(_vm.title)?_c('title',[_vm._v(_vm._s(_vm.title))]):_vm._e()])])])\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import mod from \"-!../vue-loader/lib/index.js??vue-loader-options!./ViewGridOutline.vue?vue&type=script&lang=js\"; export default mod; export * from \"-!../vue-loader/lib/index.js??vue-loader-options!./ViewGridOutline.vue?vue&type=script&lang=js\"","\n\n","import { render, staticRenderFns } from \"./ViewGridOutline.vue?vue&type=template&id=0c2dec16\"\nimport script from \"./ViewGridOutline.vue?vue&type=script&lang=js\"\nexport * from \"./ViewGridOutline.vue?vue&type=script&lang=js\"\n\n\n/* normalize component */\nimport normalizer from \"!../vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n  script,\n  render,\n  staticRenderFns,\n  false,\n  null,\n  null,\n  null\n  \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('span',_vm._b({staticClass:\"material-design-icon view-grid-outline-icon\",attrs:{\"aria-hidden\":_vm.title ? null : 'true',\"aria-label\":_vm.title,\"role\":\"img\"},on:{\"click\":function($event){return _vm.$emit('click', $event)}}},'span',_vm.$attrs,false),[_c('svg',{staticClass:\"material-design-icon__svg\",attrs:{\"fill\":_vm.fillColor,\"width\":_vm.size,\"height\":_vm.size,\"viewBox\":\"0 0 24 24\"}},[_c('path',{attrs:{\"d\":\"M3 11H11V3H3M5 5H9V9H5M13 21H21V13H13M15 15H19V19H15M3 21H11V13H3M5 15H9V19H5M13 3V11H21V3M19 9H15V5H19Z\"}},[(_vm.title)?_c('title',[_vm._v(_vm._s(_vm.title))]):_vm._e()])])])\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","var render = function render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return _c('NcBreadcrumbs',{staticClass:\"files-list__breadcrumbs\",class:{ 'files-list__breadcrumbs--with-progress': _vm.wrapUploadProgressBar },attrs:{\"data-cy-files-content-breadcrumbs\":\"\",\"aria-label\":_vm.t('files', 'Current directory path')},scopedSlots:_vm._u([{key:\"actions\",fn:function(){return [_vm._t(\"actions\")]},proxy:true}],null,true)},_vm._l((_vm.sections),function(section,index){return _c('NcBreadcrumb',_vm._b({key:section.dir,attrs:{\"dir\":\"auto\",\"to\":section.to,\"force-icon-text\":index === 0 && !_vm.isNarrow,\"force-menu\":\"\",\"open\":_vm.isMenuOpen,\"title\":_vm.titleForSection(index, section),\"aria-description\":_vm.ariaForSection(section)},on:{\"update:open\":function($event){_vm.isMenuOpen=$event},\"drop\":function($event){return _vm.onDrop($event, section.dir)}},nativeOn:{\"dragover\":function($event){return _vm.onDragOver($event, section.dir)}},scopedSlots:_vm._u([(index === 0)?{key:\"icon\",fn:function(){return [_c('NcIconSvgWrapper',{attrs:{\"size\":20,\"svg\":_vm.viewIcon}})]},proxy:true}:null,(index === _vm.sections.length - 1)?{key:\"menu-icon\",fn:function(){return [_c('NcIconSvgWrapper',{attrs:{\"path\":_vm.isMenuOpen ? _vm.mdiChevronUp : _vm.mdiChevronDown}})]},proxy:true}:null,(index === _vm.sections.length - 1)?{key:\"default\",fn:function(){return [(_vm.canShare)?_c('NcActionButton',{attrs:{\"close-after-click\":\"\"},on:{\"click\":_vm.openSharingSidebar},scopedSlots:_vm._u([{key:\"icon\",fn:function(){return [_c('NcIconSvgWrapper',{attrs:{\"path\":_vm.mdiAccountPlus}})]},proxy:true}],null,true)},[_vm._v(\"\\n\\t\\t\\t\\t\"+_vm._s(_vm.t('files', 'Share'))+\"\\n\\t\\t\\t\")]):_vm._e(),_vm._v(\" \"),_c('NcActionButton',{attrs:{\"close-after-click\":\"\"},on:{\"click\":function($event){return _vm.$emit('reload')}},scopedSlots:_vm._u([{key:\"icon\",fn:function(){return [_c('NcIconSvgWrapper',{attrs:{\"path\":_vm.mdiReload}})]},proxy:true}],null,true)},[_vm._v(\"\\n\\t\\t\\t\\t\"+_vm._s(_vm.t('files', 'Reload content'))+\"\\n\\t\\t\\t\")])]},proxy:true}:null],null,true)},'NcBreadcrumb',section,false))}),1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","/*!\n * SPDX-FileCopyrightText: 2024 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\nimport { computed, onMounted, readonly, ref } from 'vue';\n/** The element we observe */\nlet element;\n/** The current width of the element */\nconst width = ref(0);\nconst isWide = computed(() => width.value >= 1024);\nconst isMedium = computed(() => width.value >= 512 && width.value < 1024);\nconst isNarrow = computed(() => width.value < 512);\nconst observer = new ResizeObserver(([element]) => {\n    if (!element) {\n        return;\n    }\n    const contentBoxSize = element.contentBoxSize?.[0];\n    if (contentBoxSize) {\n        // use the newer `contentBoxSize` property if available\n        width.value = contentBoxSize.inlineSize;\n    }\n    else {\n        // fall back to `contentRect`\n        width.value = element.contentRect.width;\n    }\n});\n/**\n * Update the observed element if needed and reconfigure the observer\n */\nfunction updateObserver() {\n    const el = document.querySelector('#app-content-vue') ?? document.body;\n    if (el !== element) {\n        // if already observing: stop observing the old element\n        if (element) {\n            observer.unobserve(element);\n        }\n        // observe the new element if needed\n        observer.observe(el);\n        element = el;\n    }\n}\n/**\n * Get the reactive width of the file list\n */\nexport function useFileListWidth() {\n    // Update the observer when the component is mounted (e.g. because this is the files app)\n    onMounted(updateObserver);\n    // Update the observer also in setup context, so we already have an initial value\n    updateObserver();\n    return {\n        width: readonly(width),\n        isWide,\n        isMedium,\n        isNarrow,\n    };\n}\n","/*!\n * SPDX-FileCopyrightText: 2026 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\nimport { getNavigation } from '@nextcloud/files';\nimport { computed, shallowRef } from 'vue';\nconst allViews = shallowRef([]);\nconst visibleViews = computed(() => allViews.value?.filter((view) => !view.hidden) ?? []);\nlet initialized = false;\n/**\n * Get all currently registered views.\n * Unline `Navigation.views` this is reactive and will update when new views are added or existing views are removed.\n */\nexport function useViews() {\n    if (!initialized) {\n        const navigation = getNavigation();\n        navigation.addEventListener('update', () => {\n            allViews.value = [...navigation.views];\n        });\n        allViews.value = [...navigation.views];\n        initialized = true;\n    }\n    return allViews;\n}\n/**\n * Get all non-hidden views.\n */\nexport function useVisibleViews() {\n    useViews();\n    return visibleViews;\n}\n","/*!\n * SPDX-FileCopyrightText: 2023 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\nimport { Permission } from '@nextcloud/files';\nimport { loadState } from '@nextcloud/initial-state';\nimport { isPublicShare } from '@nextcloud/sharing/public';\nimport PQueue from 'p-queue';\nconst sharePermissions = loadState('files_sharing', 'sharePermissions', Permission.NONE);\n// This is the processing queue. We only want to allow 3 concurrent requests\nlet queue;\n// Maximum number of concurrent operations\nconst MAX_CONCURRENCY = 5;\n/**\n * Get the processing queue\n */\nexport function getQueue() {\n    if (!queue) {\n        queue = new PQueue({ concurrency: MAX_CONCURRENCY });\n    }\n    return queue;\n}\nexport var MoveCopyAction;\n(function (MoveCopyAction) {\n    MoveCopyAction[\"MOVE\"] = \"Move\";\n    MoveCopyAction[\"COPY\"] = \"Copy\";\n    MoveCopyAction[\"MOVE_OR_COPY\"] = \"move-or-copy\";\n})(MoveCopyAction || (MoveCopyAction = {}));\n/**\n * Check if the given nodes can be moved\n *\n * @param nodes - The nodes to check\n */\nexport function canMove(nodes) {\n    const minPermission = nodes.reduce((min, node) => Math.min(min, node.permissions), Permission.ALL);\n    return Boolean(minPermission & Permission.DELETE);\n}\n/**\n * Check if the given nodes can be downloaded\n *\n * @param nodes - The nodes to check\n */\nexport function canDownload(nodes) {\n    return nodes.every((node) => {\n        const shareAttributes = JSON.parse(node.attributes?.['share-attributes'] ?? '[]');\n        return !shareAttributes.some((attribute) => attribute.scope === 'permissions' && attribute.value === false && attribute.key === 'download');\n    });\n}\n/**\n * Check if the given nodes can be copied\n *\n * @param nodes - The nodes to check\n */\nexport function canCopy(nodes) {\n    // a shared file cannot be copied if the download is disabled\n    if (!canDownload(nodes)) {\n        return false;\n    }\n    // it cannot be copied if the user has only view permissions\n    if (nodes.some((node) => node.permissions === Permission.NONE)) {\n        return false;\n    }\n    // on public shares all files have the same permission so copy is only possible if write permission is granted\n    if (isPublicShare()) {\n        return Boolean(sharePermissions & Permission.CREATE);\n    }\n    // otherwise permission is granted\n    return true;\n}\n","/*!\n * SPDX-FileCopyrightText: 2023 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\nimport FolderMoveSvg from '@mdi/svg/svg/folder-move-outline.svg?raw';\nimport CopyIconSvg from '@mdi/svg/svg/folder-multiple-outline.svg?raw';\nimport { isAxiosError } from '@nextcloud/axios';\nimport { FilePickerClosed, getFilePickerBuilder, openConflictPicker, showError, showLoading } from '@nextcloud/dialogs';\nimport { emit } from '@nextcloud/event-bus';\nimport { FileType, getUniqueName, NodeStatus, Permission } from '@nextcloud/files';\nimport { defaultRootPath, getClient, getDefaultPropfind, resultToNode } from '@nextcloud/files/dav';\nimport { t } from '@nextcloud/l10n';\nimport { getConflicts } from '@nextcloud/upload';\nimport { basename, join } from 'path';\nimport Vue from 'vue';\nimport logger from '../logger.ts';\nimport { getContents } from '../services/Files.ts';\nimport { canCopy, canMove, getQueue, MoveCopyAction } from './moveOrCopyActionUtils.ts';\n/**\n * Exception to hint the user about something.\n * The message is intended to be shown to the user.\n */\nexport class HintException extends Error {\n}\nexport const ACTION_COPY_MOVE = 'move-copy';\nexport const action = {\n    id: ACTION_COPY_MOVE,\n    order: 15,\n    displayName({ nodes }) {\n        switch (getActionForNodes(nodes)) {\n            case MoveCopyAction.MOVE:\n                return t('files', 'Move');\n            case MoveCopyAction.COPY:\n                return t('files', 'Copy');\n            case MoveCopyAction.MOVE_OR_COPY:\n                return t('files', 'Move or copy');\n        }\n    },\n    iconSvgInline: () => FolderMoveSvg,\n    enabled({ nodes, view }) {\n        // We can not copy or move in single file shares\n        if (view.id === 'public-file-share') {\n            return false;\n        }\n        // We only support moving/copying files within the user folder\n        if (!nodes.every((node) => node.root?.startsWith('/files/'))) {\n            return false;\n        }\n        return nodes.length > 0 && (canMove(nodes) || canCopy(nodes));\n    },\n    async exec(context) {\n        return this.execBatch(context)[0];\n    },\n    async execBatch({ nodes, folder }) {\n        const action = getActionForNodes(nodes);\n        const target = await openFilePickerForAction(action, folder.path, nodes);\n        // Handle cancellation silently\n        if (target === false) {\n            return nodes.map(() => null);\n        }\n        try {\n            const result = await Array.fromAsync(handleCopyMoveNodesTo(nodes, target.destination, target.action));\n            return result.map(() => true);\n        }\n        catch (error) {\n            logger.error(`Failed to ${target.action} node`, { nodes, error });\n            if (error instanceof HintException && !!error.message) {\n                showError(error.message);\n                // Silent action as we handle the toast\n                return nodes.map(() => null);\n            }\n            // We need to keep the selection on error!\n            // So we do not return null, and for batch action\n            return nodes.map(() => false);\n        }\n    },\n};\n/**\n * Handle the copy/move of a node to a destination\n * This can be imported and used by other scripts/components on server\n *\n * @param nodes The nodes to copy/move\n * @param destination The destination to copy/move the nodes to\n * @param method The method to use for the copy/move\n * @param overwrite Whether to overwrite the destination if it exists\n * @yields {AsyncGenerator} A promise that resolves when the copy/move is done\n */\nexport async function* handleCopyMoveNodesTo(nodes, destination, method, overwrite = false) {\n    if (!destination) {\n        return;\n    }\n    if (destination.type !== FileType.Folder) {\n        throw new Error(t('files', 'Destination is not a folder'));\n    }\n    // Do not allow to MOVE a node to the same folder it is already located\n    if (method === MoveCopyAction.MOVE && nodes.some((node) => node.dirname === destination.path)) {\n        throw new Error(t('files', 'This file/folder is already in that directory'));\n    }\n    /**\n     * Example:\n     * - node: /foo/bar/file.txt -> path = /foo/bar/file.txt, destination: /foo\n     *   Allow move of /foo does not start with /foo/bar/file.txt so allow\n     * - node: /foo , destination: /foo/bar\n     *   Do not allow as it would copy foo within itself\n     * - node: /foo/bar.txt, destination: /foo\n     *   Allow copy a file to the same directory\n     * - node: \"/foo/bar\", destination: \"/foo/bar 1\"\n     *   Allow to move or copy but we need to check with trailing / otherwise it would report false positive\n     */\n    if (nodes.some((node) => `${destination.path}/`.startsWith(`${node.path}/`))) {\n        throw new Error(t('files', 'You cannot move a file/folder onto itself or into a subfolder of itself'));\n    }\n    const nameMapping = new Map();\n    // Check for conflicts if we do not want to overwrite\n    if (!overwrite) {\n        const otherNodes = (await getContents(destination.path)).contents;\n        const conflicts = getConflicts(nodes, otherNodes);\n        const nodesToRename = [];\n        if (conflicts.length > 0) {\n            if (method === MoveCopyAction.MOVE) {\n                // Let the user choose what to do with the conflicting files\n                const content = otherNodes.filter((n) => conflicts.some((c) => c.basename === n.basename));\n                const result = await openConflictPicker(destination.path, conflicts, content);\n                if (!result) {\n                    // User cancelled\n                    return;\n                }\n                nodes = nodes.filter((n) => !result.skipped.includes(n));\n                nodesToRename.push(...result.renamed);\n            }\n            else {\n                // for COPY we always rename conflicting files\n                nodesToRename.push(...conflicts);\n            }\n            const usedNames = [...otherNodes, ...nodes.filter((n) => !conflicts.includes(n))].map((n) => n.basename);\n            for (const node of nodesToRename) {\n                const newName = getUniqueName(node.basename, usedNames, { ignoreFileExtension: node.type === FileType.Folder });\n                nameMapping.set(node.source, newName);\n                usedNames.push(newName); // add the new name to avoid duplicates for following re-namimgs\n            }\n        }\n    }\n    const actionFinished = createLoadingNotification(method, nodes.map((node) => node.basename), destination.path);\n    const queue = getQueue();\n    try {\n        for (const node of nodes) {\n            // Set loading state\n            Vue.set(node, 'status', NodeStatus.LOADING);\n            yield queue.add(async () => {\n                try {\n                    const client = getClient();\n                    const currentPath = join(defaultRootPath, node.path);\n                    const destinationPath = join(defaultRootPath, destination.path, nameMapping.get(node.source) ?? node.basename);\n                    if (method === MoveCopyAction.COPY) {\n                        await client.copyFile(currentPath, destinationPath);\n                        // If the node is copied into current directory the view needs to be updated\n                        if (node.dirname === destination.path) {\n                            const { data } = await client.stat(destinationPath, {\n                                details: true,\n                                data: getDefaultPropfind(),\n                            });\n                            emit('files:node:created', resultToNode(data));\n                        }\n                    }\n                    else {\n                        await client.moveFile(currentPath, destinationPath);\n                        // Delete the node as it will be fetched again\n                        // when navigating to the destination folder\n                        emit('files:node:deleted', node);\n                    }\n                }\n                catch (error) {\n                    logger.debug(`Error while trying to ${method === MoveCopyAction.COPY ? 'copy' : 'move'} node`, { node, error });\n                    if (isAxiosError(error)) {\n                        if (error.response?.status === 412) {\n                            throw new HintException(t('files', 'A file or folder with that name already exists in this folder'));\n                        }\n                        else if (error.response?.status === 423) {\n                            throw new HintException(t('files', 'The files are locked'));\n                        }\n                        else if (error.response?.status === 404) {\n                            throw new HintException(t('files', 'The file does not exist anymore'));\n                        }\n                        else if ('response' in error && error.response) {\n                            const parser = new DOMParser();\n                            const text = await error.response.text();\n                            const message = parser.parseFromString(text ?? '', 'text/xml')\n                                .querySelector('message')?.textContent;\n                            if (message) {\n                                throw new HintException(message);\n                            }\n                        }\n                    }\n                    throw error;\n                }\n                finally {\n                    Vue.set(node, 'status', undefined);\n                }\n            });\n        }\n    }\n    finally {\n        actionFinished();\n    }\n}\n/**\n * Return the action that is possible for the given nodes\n *\n * @param nodes The nodes to check against\n * @return The action that is possible for the given nodes\n */\nfunction getActionForNodes(nodes) {\n    if (canMove(nodes)) {\n        if (canCopy(nodes)) {\n            return MoveCopyAction.MOVE_OR_COPY;\n        }\n        return MoveCopyAction.MOVE;\n    }\n    // Assuming we can copy as the enabled checks for copy permissions\n    return MoveCopyAction.COPY;\n}\n/**\n * Create a loading notification toast\n *\n * @param mode The move or copy mode\n * @param sources Names of the nodes that are copied / moved\n * @param destination Destination path\n * @return Function to hide the notification\n */\nfunction createLoadingNotification(mode, sources, destination) {\n    const text = mode === MoveCopyAction.MOVE\n        ? (sources.length === 1\n            ? t('files', 'Moving \"{source}\" to \"{destination}\" …', { source: sources[0], destination })\n            : t('files', 'Moving {count} files to \"{destination}\" …', { count: sources.length, destination }))\n        : (sources.length === 1\n            ? t('files', 'Copying \"{source}\" to \"{destination}\" …', { source: sources[0], destination })\n            : t('files', 'Copying {count} files to \"{destination}\" …', { count: sources.length, destination }));\n    const toast = showLoading(text);\n    return () => toast && toast.hideToast();\n}\n/**\n * Open a file picker for the given action\n *\n * @param action The action to open the file picker for\n * @param dir The directory to start the file picker in\n * @param nodes The nodes to move/copy\n * @return The picked destination or false if cancelled by user\n */\nasync function openFilePickerForAction(action, dir = '/', nodes) {\n    const { resolve, reject, promise } = Promise.withResolvers();\n    const fileIDs = nodes.map((node) => node.fileid).filter(Boolean);\n    const filePicker = getFilePickerBuilder(t('files', 'Choose destination'))\n        .allowDirectories(true)\n        .setFilter((n) => {\n        // We don't want to show the current nodes in the file picker\n        return !fileIDs.includes(n.fileid);\n    })\n        .setCanPick((n) => {\n        const hasCreatePermissions = (n.permissions & Permission.CREATE) === Permission.CREATE;\n        return hasCreatePermissions;\n    })\n        .setMimeTypeFilter([])\n        .setMultiSelect(false)\n        .startAt(dir)\n        .setButtonFactory((selection, path) => {\n        const buttons = [];\n        const target = basename(path);\n        const dirnames = nodes.map((node) => node.dirname);\n        const paths = nodes.map((node) => node.path);\n        if (action === MoveCopyAction.COPY || action === MoveCopyAction.MOVE_OR_COPY) {\n            buttons.push({\n                label: target ? t('files', 'Copy to {target}', { target }, { escape: false, sanitize: false }) : t('files', 'Copy'),\n                variant: 'primary',\n                icon: CopyIconSvg,\n                async callback(destination) {\n                    resolve({\n                        destination: destination[0],\n                        action: MoveCopyAction.COPY,\n                    });\n                },\n            });\n        }\n        // Invalid MOVE targets (but valid copy targets)\n        if (dirnames.includes(path)) {\n            // This file/folder is already in that directory\n            return buttons;\n        }\n        if (paths.includes(path)) {\n            // You cannot move a file/folder onto itself\n            return buttons;\n        }\n        if (selection.some((node) => (node.permissions & Permission.CREATE) === 0)) {\n            // Missing 'CREATE' permissions for selected destination\n            return buttons;\n        }\n        if (action === MoveCopyAction.MOVE || action === MoveCopyAction.MOVE_OR_COPY) {\n            buttons.push({\n                label: target ? t('files', 'Move to {target}', { target }, undefined, { escape: false, sanitize: false }) : t('files', 'Move'),\n                variant: action === MoveCopyAction.MOVE ? 'primary' : 'secondary',\n                icon: FolderMoveSvg,\n                async callback(destination) {\n                    resolve({\n                        destination: destination[0],\n                        action: MoveCopyAction.MOVE,\n                    });\n                },\n            });\n        }\n        return buttons;\n    })\n        .build();\n    filePicker.pick()\n        .catch((error) => {\n        logger.debug(error);\n        if (error instanceof FilePickerClosed) {\n            resolve(false);\n        }\n        else {\n            reject(new Error(t('files', 'Move or copy operation failed')));\n        }\n    });\n    return promise;\n}\n","/*!\n * SPDX-FileCopyrightText: 2024 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\nimport { showInfo, showWarning } from '@nextcloud/dialogs';\nimport { emit } from '@nextcloud/event-bus';\nimport { defaultRemoteURL, defaultRootPath, getClient, getDefaultPropfind, resultToNode } from '@nextcloud/files/dav';\nimport { t } from '@nextcloud/l10n';\nimport { join } from '@nextcloud/paths';\nimport { openConflictPicker } from '@nextcloud/upload';\nimport logger from '../logger.ts';\n/**\n * This represents a Directory in the file tree\n * We extend the File class to better handling uploading\n * and stay as close as possible as the Filesystem API.\n * This also allow us to hijack the size or lastModified\n * properties to compute them dynamically.\n */\nexport class Directory extends File {\n    _contents;\n    constructor(name, contents = []) {\n        super([], name, { type: 'httpd/unix-directory' });\n        this._contents = contents;\n    }\n    set contents(contents) {\n        this._contents = contents;\n    }\n    get contents() {\n        return this._contents;\n    }\n    get size() {\n        return this._computeDirectorySize(this);\n    }\n    get lastModified() {\n        if (this._contents.length === 0) {\n            return Date.now();\n        }\n        return this._computeDirectoryMtime(this);\n    }\n    /**\n     * Get the last modification time of a file tree\n     * This is not perfect, but will get us a pretty good approximation\n     *\n     * @param directory the directory to traverse\n     */\n    _computeDirectoryMtime(directory) {\n        return directory.contents.reduce((acc, file) => {\n            return file.lastModified > acc\n                // If the file is a directory, the lastModified will\n                // also return the results of its _computeDirectoryMtime method\n                // Fancy recursion, huh?\n                ? file.lastModified\n                : acc;\n        }, 0);\n    }\n    /**\n     * Get the size of a file tree\n     *\n     * @param directory the directory to traverse\n     */\n    _computeDirectorySize(directory) {\n        return directory.contents.reduce((acc, entry) => {\n            // If the file is a directory, the size will\n            // also return the results of its _computeDirectorySize method\n            // Fancy recursion, huh?\n            return acc + entry.size;\n        }, 0);\n    }\n}\n/**\n * Traverse a file tree using the Filesystem API\n *\n * @param entry the entry to traverse\n */\nexport async function traverseTree(entry) {\n    // Handle file\n    if (entry.isFile) {\n        return new Promise((resolve, reject) => {\n            entry.file(resolve, reject);\n        });\n    }\n    // Handle directory\n    logger.debug('Handling recursive file tree', { entry: entry.name });\n    const directory = entry;\n    const entries = await readDirectory(directory);\n    const contents = (await Promise.all(entries.map(traverseTree))).flat();\n    return new Directory(directory.name, contents);\n}\n/**\n * Read a directory using Filesystem API\n *\n * @param directory the directory to read\n */\nfunction readDirectory(directory) {\n    const dirReader = directory.createReader();\n    return new Promise((resolve, reject) => {\n        const entries = [];\n        const getEntries = () => {\n            dirReader.readEntries((results) => {\n                if (results.length) {\n                    entries.push(...results);\n                    getEntries();\n                }\n                else {\n                    resolve(entries);\n                }\n            }, (error) => {\n                reject(error);\n            });\n        };\n        getEntries();\n    });\n}\n/**\n * @param path - The path relative to the dav root\n */\nexport async function createDirectoryIfNotExists(path) {\n    const davUrl = join(defaultRemoteURL, defaultRootPath);\n    const davClient = getClient(davUrl);\n    const dirExists = await davClient.exists(path);\n    if (!dirExists) {\n        logger.debug('Directory does not exist, creating it', { path });\n        await davClient.createDirectory(path, { recursive: true });\n        const stat = await davClient.stat(path, { details: true, data: getDefaultPropfind() });\n        emit('files:node:created', resultToNode(stat.data, defaultRootPath, davUrl));\n    }\n}\n/**\n * Resolve conflicts between existing files and incoming files\n *\n * @param files - incoming files\n * @param destination - destination folder\n * @param contents - existing contents of the destination folder\n */\nexport async function resolveConflict(files, destination, contents) {\n    try {\n        // List all conflicting files\n        const conflicts = files.filter((file) => {\n            return contents.find((node) => node.basename === (file instanceof File ? file.name : file.basename));\n        }).filter(Boolean);\n        // List of incoming files that are NOT in conflict\n        const uploads = files.filter((file) => {\n            return !conflicts.includes(file);\n        });\n        // Let the user choose what to do with the conflicting files\n        const { selected, renamed } = await openConflictPicker(destination.path, conflicts, contents);\n        logger.debug('Conflict resolution', { uploads, selected, renamed });\n        // If the user selected nothing, we cancel the upload\n        if (selected.length === 0 && renamed.length === 0 && uploads.length === 0) {\n            // User skipped\n            showInfo(t('files', 'Conflicts resolution skipped'));\n            logger.info('User skipped the conflict resolution');\n            return [];\n        }\n        // Update the list of files to upload\n        return [...uploads, ...selected, ...renamed];\n    }\n    catch (error) {\n        // User cancelled\n        logger.warn('User cancelled the upload', { error });\n        showWarning(t('files', 'Upload cancelled'));\n    }\n    return [];\n}\n","/*!\n * SPDX-FileCopyrightText: 2023 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\nimport { showError, showInfo, showSuccess, showWarning } from '@nextcloud/dialogs';\nimport { t } from '@nextcloud/l10n';\nimport { join } from '@nextcloud/paths';\nimport { getUploader, hasConflict } from '@nextcloud/upload';\nimport { handleCopyMoveNodesTo, HintException } from '../actions/moveOrCopyAction.ts';\nimport { MoveCopyAction } from '../actions/moveOrCopyActionUtils.ts';\nimport logger from '../logger.ts';\nimport { createDirectoryIfNotExists, Directory, resolveConflict, traverseTree } from './DropServiceUtils.ts';\n/**\n * This function converts a list of DataTransferItems to a file tree.\n * It uses the Filesystem API if available, otherwise it falls back to the File API.\n * The File API will NOT be available if the browser is not in a secure context (e.g. HTTP).\n * ⚠️ When using this method, you need to use it as fast as possible, as the DataTransferItems\n * will be cleared after the first access to the props of one of the entries.\n *\n * @param items the list of DataTransferItems\n */\nexport async function dataTransferToFileTree(items) {\n    // Check if the browser supports the Filesystem API\n    // We need to cache the entries to prevent Blink engine bug that clears\n    // the list (`data.items`) after first access props of one of the entries\n    const entries = items\n        .filter((item) => {\n        if (item.kind !== 'file') {\n            logger.debug('Skipping dropped item', { kind: item.kind, type: item.type });\n            return false;\n        }\n        return true;\n    }).map((item) => {\n        // MDN recommends to try both, as it might be renamed in the future\n        return item?.getAsEntry?.()\n            ?? item?.webkitGetAsEntry?.()\n            ?? item;\n    });\n    let warned = false;\n    const fileTree = new Directory('root');\n    // Traverse the file tree\n    for (const entry of entries) {\n        // Handle browser issues if Filesystem API is not available. Fallback to File API\n        if (entry instanceof DataTransferItem) {\n            logger.warn('Could not get FilesystemEntry of item, falling back to file');\n            const file = entry.getAsFile();\n            if (file === null) {\n                logger.warn('Could not process DataTransferItem', { type: entry.type, kind: entry.kind });\n                showError(t('files', 'One of the dropped files could not be processed'));\n                continue;\n            }\n            // Warn the user that the browser does not support the Filesystem API\n            // we therefore cannot upload directories recursively.\n            if (file.type === 'httpd/unix-directory' || !file.type) {\n                if (!warned) {\n                    logger.warn('Browser does not support Filesystem API. Directories will not be uploaded');\n                    showWarning(t('files', 'Your browser does not support the Filesystem API. Directories will not be uploaded'));\n                    warned = true;\n                }\n                continue;\n            }\n            fileTree.contents.push(file);\n            continue;\n        }\n        // Use Filesystem API\n        try {\n            fileTree.contents.push(await traverseTree(entry));\n        }\n        catch (error) {\n            // Do not throw, as we want to continue with the other files\n            logger.error('Error while traversing file tree', { error });\n        }\n    }\n    return fileTree;\n}\n/**\n * Handle dropping external files\n *\n * @param root - The root directory which should be uploaded\n * @param destination - The destination folder\n * @param contents - The contents of the destination folder\n */\nexport async function onDropExternalFiles(root, destination, contents) {\n    const uploader = getUploader();\n    // Check for conflicts on root elements\n    if (await hasConflict(root.contents, contents)) {\n        root.contents = await resolveConflict(root.contents, destination, contents);\n        if (root.contents.length === 0) {\n            // user cancelled the upload\n            return [];\n        }\n    }\n    else if (root.contents.length === 0) {\n        logger.info('No files to upload', { root });\n        showInfo(t('files', 'No files to upload'));\n        return [];\n    }\n    // Let's process the files\n    logger.debug(`Uploading files to ${destination.path}`, { root, contents: root.contents });\n    const queue = [];\n    const uploadDirectoryContents = async (directory, path) => {\n        for (const file of directory.contents) {\n            // This is the relative path to the resource\n            // from the current uploader destination\n            const relativePath = join(path, file.name);\n            // If the file is a directory, we need to create it first\n            // then browse its tree and upload its contents.\n            if (file instanceof Directory) {\n                try {\n                    logger.debug('Processing directory', { relativePath });\n                    await createDirectoryIfNotExists(relativePath);\n                    await uploadDirectoryContents(file, relativePath);\n                }\n                catch (error) {\n                    showError(t('files', 'Unable to create the directory {directory}', { directory: file.name }));\n                    logger.error('Unable to create the directory', { error, relativePath, directory: file });\n                }\n                continue;\n            }\n            // If we've reached a file, we can upload it\n            logger.debug('Uploading file to ' + join(destination.path, relativePath), { file });\n            // Overriding the root to avoid changing the current uploader context\n            queue.push(uploader.upload(relativePath, file, destination.source));\n        }\n    };\n    // Pause the uploader to prevent it from starting\n    // while we compute the queue\n    uploader.pause();\n    // Upload the files. Using '/' as the starting point\n    // as we already adjusted the uploader destination\n    await uploadDirectoryContents(root, '/');\n    uploader.start();\n    // Wait for all promises to settle\n    const results = await Promise.allSettled(queue);\n    // Check for errors\n    const errors = results.filter((result) => result.status === 'rejected');\n    if (errors.length > 0) {\n        logger.error('Error while uploading files', { errors });\n        showError(t('files', 'Some files could not be uploaded'));\n        return [];\n    }\n    logger.debug('Files uploaded successfully');\n    showSuccess(t('files', 'Files uploaded successfully'));\n    return Promise.all(queue);\n}\n/**\n * Handle dropping internal files\n *\n * @param nodes - The nodes being dropped\n * @param destination - The destination folder\n * @param contents - The contents of the destination folder\n * @param isCopy - Whether the operation is a copy\n */\nexport async function onDropInternalFiles(nodes, destination, contents, isCopy = false) {\n    // Check for conflicts on root elements\n    if (await hasConflict(nodes, contents)) {\n        nodes = await resolveConflict(nodes, destination, contents);\n    }\n    if (nodes.length === 0) {\n        logger.info('No files to process', { nodes });\n        showInfo(t('files', 'No files to process'));\n        return;\n    }\n    try {\n        const promises = Array.fromAsync(handleCopyMoveNodesTo(nodes, destination, isCopy ? MoveCopyAction.COPY : MoveCopyAction.MOVE));\n        await promises;\n        logger.debug('Files copy/move successful');\n        showSuccess(isCopy ? t('files', 'Files copied successfully') : t('files', 'Files moved successfully'));\n    }\n    catch (error) {\n        logger.error('Error while processing dropped files', { error });\n        if (error instanceof HintException) {\n            showError(error.message);\n        }\n        else {\n            showError(isCopy ? t('files', 'Some files could not be copied') : t('files', 'Some files could not be moved'));\n        }\n    }\n}\n","/**\n * SPDX-FileCopyrightText: 2023 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\nimport { defineStore } from 'pinia';\nimport Vue from 'vue';\nexport const useDragAndDropStore = defineStore('dragging', {\n    state: () => ({\n        dragging: [],\n    }),\n    actions: {\n        /**\n         * Set the selection of files being dragged currently\n         *\n         * @param selection array of node sources\n         */\n        set(selection = []) {\n            Vue.set(this, 'dragging', selection);\n        },\n        /**\n         * Reset the selection\n         */\n        reset() {\n            Vue.set(this, 'dragging', []);\n        },\n    },\n});\n","/**\n * SPDX-FileCopyrightText: 2023 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\nimport { defineStore } from 'pinia';\nimport Vue from 'vue';\nexport const useSelectionStore = defineStore('selection', {\n    state: () => ({\n        selected: [],\n        lastSelection: [],\n        lastSelectedIndex: null,\n    }),\n    actions: {\n        /**\n         * Set the selection of fileIds\n         *\n         * @param selection\n         */\n        set(selection = []) {\n            Vue.set(this, 'selected', [...new Set(selection)]);\n        },\n        /**\n         * Set the last selected index\n         *\n         * @param lastSelectedIndex\n         */\n        setLastIndex(lastSelectedIndex = null) {\n            // Update the last selection if we provided a new selection starting point\n            Vue.set(this, 'lastSelection', lastSelectedIndex ? this.selected : []);\n            Vue.set(this, 'lastSelectedIndex', lastSelectedIndex);\n        },\n        /**\n         * Reset the selection\n         */\n        reset() {\n            Vue.set(this, 'selected', []);\n            Vue.set(this, 'lastSelection', []);\n            Vue.set(this, 'lastSelectedIndex', null);\n        },\n    },\n});\n","/**\n * SPDX-FileCopyrightText: 2023 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\nimport { getUploader } from '@nextcloud/upload';\nimport { defineStore } from 'pinia';\nlet uploader;\n/**\n *\n * @param args\n */\nexport function useUploaderStore(...args) {\n    // Only init on runtime\n    uploader = getUploader();\n    const store = defineStore('uploader', {\n        state: () => ({\n            queue: uploader.queue,\n        }),\n    });\n    return store(...args);\n}\n","import mod from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/ts-loader/index.js??clonedRuleSet-6.use[1]!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./BreadCrumbs.vue?vue&type=script&lang=ts\"; export default mod; export * from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/ts-loader/index.js??clonedRuleSet-6.use[1]!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./BreadCrumbs.vue?vue&type=script&lang=ts\"","\n      import API from \"!../../../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\";\n      import domAPI from \"!../../../../node_modules/style-loader/dist/runtime/styleDomAPI.js\";\n      import insertFn from \"!../../../../node_modules/style-loader/dist/runtime/insertBySelector.js\";\n      import setAttributes from \"!../../../../node_modules/style-loader/dist/runtime/setAttributesWithoutAttributes.js\";\n      import insertStyleElement from \"!../../../../node_modules/style-loader/dist/runtime/insertStyleElement.js\";\n      import styleTagTransformFn from \"!../../../../node_modules/style-loader/dist/runtime/styleTagTransform.js\";\n      import content, * as namedExport from \"!!../../../../node_modules/css-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/sass-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./BreadCrumbs.vue?vue&type=style&index=0&id=86e9be62&prod&lang=scss&scoped=true\";\n      \n      \n\nvar options = {};\n\noptions.styleTagTransform = styleTagTransformFn;\noptions.setAttributes = setAttributes;\noptions.insert = insertFn.bind(null, \"head\");\noptions.domAPI = domAPI;\noptions.insertStyleElement = insertStyleElement;\n\nvar update = API(content, options);\n\n\n\nexport * from \"!!../../../../node_modules/css-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/sass-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./BreadCrumbs.vue?vue&type=style&index=0&id=86e9be62&prod&lang=scss&scoped=true\";\n       export default content && content.locals ? content.locals : undefined;\n","import { render, staticRenderFns } from \"./BreadCrumbs.vue?vue&type=template&id=86e9be62&scoped=true\"\nimport script from \"./BreadCrumbs.vue?vue&type=script&lang=ts\"\nexport * from \"./BreadCrumbs.vue?vue&type=script&lang=ts\"\nimport style0 from \"./BreadCrumbs.vue?vue&type=style&index=0&id=86e9be62&prod&lang=scss&scoped=true\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n  script,\n  render,\n  staticRenderFns,\n  false,\n  null,\n  \"86e9be62\",\n  null\n  \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return _c('div',{directives:[{name:\"show\",rawName:\"v-show\",value:(_vm.dragover),expression:\"dragover\"}],staticClass:\"files-list__drag-drop-notice\",attrs:{\"data-cy-files-drag-drop-area\":\"\"},on:{\"drop\":_vm.onDrop}},[_c('div',{staticClass:\"files-list__drag-drop-notice-wrapper\"},[(_vm.canUpload && !_vm.isQuotaExceeded)?[_c('TrayArrowDownIcon',{attrs:{\"size\":48}}),_vm._v(\" \"),_c('h3',{staticClass:\"files-list-drag-drop-notice__title\"},[_vm._v(\"\\n\\t\\t\\t\\t\"+_vm._s(_vm.t('files', 'Drag and drop files here to upload'))+\"\\n\\t\\t\\t\")])]:[_c('h3',{staticClass:\"files-list-drag-drop-notice__title\"},[_vm._v(\"\\n\\t\\t\\t\\t\"+_vm._s(_vm.cantUploadLabel)+\"\\n\\t\\t\\t\")])]],2)])\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n\n","import mod from \"-!../vue-loader/lib/index.js??vue-loader-options!./TrayArrowDown.vue?vue&type=script&lang=js\"; export default mod; export * from \"-!../vue-loader/lib/index.js??vue-loader-options!./TrayArrowDown.vue?vue&type=script&lang=js\"","import { render, staticRenderFns } from \"./TrayArrowDown.vue?vue&type=template&id=5dbf2618\"\nimport script from \"./TrayArrowDown.vue?vue&type=script&lang=js\"\nexport * from \"./TrayArrowDown.vue?vue&type=script&lang=js\"\n\n\n/* normalize component */\nimport normalizer from \"!../vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n  script,\n  render,\n  staticRenderFns,\n  false,\n  null,\n  null,\n  null\n  \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('span',_vm._b({staticClass:\"material-design-icon tray-arrow-down-icon\",attrs:{\"aria-hidden\":_vm.title ? null : 'true',\"aria-label\":_vm.title,\"role\":\"img\"},on:{\"click\":function($event){return _vm.$emit('click', $event)}}},'span',_vm.$attrs,false),[_c('svg',{staticClass:\"material-design-icon__svg\",attrs:{\"fill\":_vm.fillColor,\"width\":_vm.size,\"height\":_vm.size,\"viewBox\":\"0 0 24 24\"}},[_c('path',{attrs:{\"d\":\"M2 12H4V17H20V12H22V17C22 18.11 21.11 19 20 19H4C2.9 19 2 18.11 2 17V12M12 15L17.55 9.54L16.13 8.13L13 11.25V2H11V11.25L7.88 8.13L6.46 9.55L12 15Z\"}},[(_vm.title)?_c('title',[_vm._v(_vm._s(_vm.title))]):_vm._e()])])])\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import mod from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/ts-loader/index.js??clonedRuleSet-6.use[1]!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./DragAndDropNotice.vue?vue&type=script&lang=ts\"; export default mod; export * from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/ts-loader/index.js??clonedRuleSet-6.use[1]!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./DragAndDropNotice.vue?vue&type=script&lang=ts\"","\n      import API from \"!../../../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\";\n      import domAPI from \"!../../../../node_modules/style-loader/dist/runtime/styleDomAPI.js\";\n      import insertFn from \"!../../../../node_modules/style-loader/dist/runtime/insertBySelector.js\";\n      import setAttributes from \"!../../../../node_modules/style-loader/dist/runtime/setAttributesWithoutAttributes.js\";\n      import insertStyleElement from \"!../../../../node_modules/style-loader/dist/runtime/insertStyleElement.js\";\n      import styleTagTransformFn from \"!../../../../node_modules/style-loader/dist/runtime/styleTagTransform.js\";\n      import content, * as namedExport from \"!!../../../../node_modules/css-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/sass-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./DragAndDropNotice.vue?vue&type=style&index=0&id=1e2b9696&prod&lang=scss&scoped=true\";\n      \n      \n\nvar options = {};\n\noptions.styleTagTransform = styleTagTransformFn;\noptions.setAttributes = setAttributes;\noptions.insert = insertFn.bind(null, \"head\");\noptions.domAPI = domAPI;\noptions.insertStyleElement = insertStyleElement;\n\nvar update = API(content, options);\n\n\n\nexport * from \"!!../../../../node_modules/css-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/sass-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./DragAndDropNotice.vue?vue&type=style&index=0&id=1e2b9696&prod&lang=scss&scoped=true\";\n       export default content && content.locals ? content.locals : undefined;\n","import { render, staticRenderFns } from \"./DragAndDropNotice.vue?vue&type=template&id=1e2b9696&scoped=true\"\nimport script from \"./DragAndDropNotice.vue?vue&type=script&lang=ts\"\nexport * from \"./DragAndDropNotice.vue?vue&type=script&lang=ts\"\nimport style0 from \"./DragAndDropNotice.vue?vue&type=style&index=0&id=1e2b9696&prod&lang=scss&scoped=true\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n  script,\n  render,\n  staticRenderFns,\n  false,\n  null,\n  \"1e2b9696\",\n  null\n  \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return _c('div',{class:_vm.$style.fileListFilters,attrs:{\"data-test-id\":\"files-list-filters\"}},[(_setup.isWide)?_vm._l((_setup.visualFilters),function(filter){return _c(_setup.NcPopover,{key:filter.id,attrs:{\"boundary\":_setup.boundary},scopedSlots:_vm._u([{key:\"trigger\",fn:function(){return [_c(_setup.NcButton,{attrs:{\"variant\":\"tertiary\"},scopedSlots:_vm._u([{key:\"icon\",fn:function(){return [_c(_setup.NcIconSvgWrapper,{attrs:{\"svg\":filter.iconSvgInline}})]},proxy:true}],null,true)},[_vm._v(\"\\n\\t\\t\\t\\t\\t\"+_vm._s(filter.displayName)+\"\\n\\t\\t\\t\\t\")])]},proxy:true},{key:\"default\",fn:function(){return [_c('div',{class:_vm.$style.fileListFilters__popoverContainer},[_c(filter.tagName,{tag:\"component\",domProps:{\"filter\":filter}})],1)]},proxy:true}],null,true)})}):_c(_setup.NcPopover,{attrs:{\"boundary\":_setup.boundary,\"popup-role\":_setup.selectedFilter ? 'dialog' : 'menu'},on:{\"update:shown\":function($event){_setup.selectedFilter = undefined}},scopedSlots:_vm._u([{key:\"trigger\",fn:function(){return [_c(_setup.NcButton,{attrs:{\"id\":_setup.menuTriggerId,\"aria-label\":_setup.t('files', 'Filters'),\"pressed\":_setup.hasActiveFilters,\"variant\":\"tertiary\"},scopedSlots:_vm._u([{key:\"icon\",fn:function(){return [_c(_setup.NcIconSvgWrapper,{attrs:{\"path\":_setup.mdiFilterVariant}})]},proxy:true}])})]},proxy:true},{key:\"default\",fn:function(){return [(_setup.selectedFilter)?_c('div',{class:_vm.$style.fileListFilters__popoverFilterView},[_c(_setup.NcButton,{attrs:{\"wide\":\"\",\"variant\":\"tertiary\"},on:{\"click\":function($event){_setup.selectedFilter = undefined}},scopedSlots:_vm._u([{key:\"icon\",fn:function(){return [_c(_setup.NcIconSvgWrapper,{attrs:{\"directional\":\"\",\"path\":_setup.mdiArrowLeft}})]},proxy:true}],null,false,1066031977)},[_vm._v(\"\\n\\t\\t\\t\\t\\t\"+_vm._s(_setup.t('files', 'Back to filters'))+\"\\n\\t\\t\\t\\t\")]),_vm._v(\" \"),_c(_setup.selectedFilter.tagName,{tag:\"component\",domProps:{\"filter\":_setup.selectedFilter}})],1):[_c('ul',{class:_vm.$style.fileListFilters__popoverContainer,attrs:{\"aria-labelledby\":_setup.menuTriggerId,\"role\":\"menu\"}},_vm._l((_setup.visualFilters),function(filter){return _c('li',{key:filter.id,attrs:{\"role\":\"presentation\"}},[_c(_setup.NcButton,{attrs:{\"role\":\"menuitem\",\"alignment\":\"start\",\"variant\":\"tertiary\",\"wide\":\"\"},on:{\"click\":function($event){_setup.selectedFilter = filter}},scopedSlots:_vm._u([{key:\"icon\",fn:function(){return [_c(_setup.NcIconSvgWrapper,{attrs:{\"svg\":filter.iconSvgInline}})]},proxy:true}],null,true)},[_vm._v(\"\\n\\t\\t\\t\\t\\t\\t\\t\"+_vm._s(filter.displayName)+\"\\n\\t\\t\\t\\t\\t\\t\")])],1)}),0)]]},proxy:true}])})],2)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","/*!\n * SPDX-FileCopyrightText: 2024 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\nimport { emit, subscribe } from '@nextcloud/event-bus';\nimport { getFileListFilters, getFilesRegistry } from '@nextcloud/files';\nimport { defineStore } from 'pinia';\nimport { computed, ref } from 'vue';\nimport logger from '../logger.ts';\n/**\n * Check if the given value is an instance file list filter with mount function\n *\n * @param value The filter to check\n */\nfunction isFileListFilterWithUi(value) {\n    return 'tagName' in value;\n}\nexport const useFiltersStore = defineStore('filters', () => {\n    const chips = ref({});\n    const filters = ref([]);\n    /**\n     * Currently active filter chips\n     */\n    const activeChips = computed(() => Object.values(chips.value).flat());\n    /**\n     * Filters sorted by order\n     */\n    const sortedFilters = computed(() => filters.value.sort((a, b) => a.order - b.order));\n    /**\n     * All filters that provide a UI for visual controlling the filter state\n     */\n    const filtersWithUI = computed(() => sortedFilters.value.filter(isFileListFilterWithUi));\n    /**\n     * Register a new filter on the store.\n     * This will subscribe the store to the filters events.\n     *\n     * @param filter The filter to add\n     */\n    function addFilter(filter) {\n        filter.addEventListener('update:chips', onFilterUpdateChips);\n        filter.addEventListener('update:filter', onFilterUpdate);\n        filters.value.push(filter);\n        logger.debug('New file list filter registered', { id: filter.id });\n    }\n    /**\n     * Unregister a filter from the store.\n     * This will remove the filter from the store and unsubscribe the store from the filer events.\n     *\n     * @param filterId Id of the filter to remove\n     */\n    function removeFilter(filterId) {\n        const index = filters.value.findIndex(({ id }) => id === filterId);\n        if (index > -1) {\n            const [filter] = filters.value.splice(index, 1);\n            filter.removeEventListener('update:chips', onFilterUpdateChips);\n            filter.removeEventListener('update:filter', onFilterUpdate);\n            logger.debug('Files list filter unregistered', { id: filterId });\n        }\n    }\n    /**\n     * Event handler for filter update events\n     *\n     */\n    function onFilterUpdate() {\n        emit('files:filters:changed');\n    }\n    /**\n     * Event handler for filter chips updates\n     *\n     * @param event The update event\n     */\n    function onFilterUpdateChips(event) {\n        const id = event.target.id;\n        chips.value = {\n            ...chips.value,\n            [id]: [...event.detail],\n        };\n        logger.debug('File list filter chips updated', { filter: id, chips: event.detail });\n    }\n    initialize();\n    return {\n        // state\n        chips,\n        filters,\n        filtersWithUI,\n        // getters / computed\n        activeChips,\n        sortedFilters,\n    };\n    /**\n     * Initialize the store by registering event listeners and loading initial filters.\n     *\n     * @internal\n     */\n    function initialize() {\n        const registry = getFilesRegistry();\n        const initialFilters = getFileListFilters();\n        // handle adding and removing filters after initialization\n        registry.addEventListener('register:listFilter', (event) => {\n            addFilter(event.detail);\n        });\n        registry.addEventListener('unregister:listFilter', (event) => {\n            removeFilter(event.detail);\n        });\n        // register the initial filters\n        for (const filter of initialFilters) {\n            addFilter(filter);\n        }\n        // subscribe to file list view changes to reset the filters\n        subscribe('files:navigation:changed', onViewChanged);\n    }\n    /**\n     * Event handler that resets all filters if the file list view was changed.\n     *\n     * @internal\n     */\n    function onViewChanged() {\n        logger.debug('Reset all file list filters - view changed');\n        for (const filter of filters.value) {\n            if (filter.reset !== undefined) {\n                filter.reset();\n            }\n        }\n    }\n});\n","import mod from \"-!../../../../../node_modules/babel-loader/lib/index.js!../../../../../node_modules/ts-loader/index.js??clonedRuleSet-6.use[1]!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./FileListFilters.vue?vue&type=script&setup=true&lang=ts\"; export default mod; export * from \"-!../../../../../node_modules/babel-loader/lib/index.js!../../../../../node_modules/ts-loader/index.js??clonedRuleSet-6.use[1]!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./FileListFilters.vue?vue&type=script&setup=true&lang=ts\"","\n      import API from \"!../../../../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\";\n      import domAPI from \"!../../../../../node_modules/style-loader/dist/runtime/styleDomAPI.js\";\n      import insertFn from \"!../../../../../node_modules/style-loader/dist/runtime/insertBySelector.js\";\n      import setAttributes from \"!../../../../../node_modules/style-loader/dist/runtime/setAttributesWithoutAttributes.js\";\n      import insertStyleElement from \"!../../../../../node_modules/style-loader/dist/runtime/insertStyleElement.js\";\n      import styleTagTransformFn from \"!../../../../../node_modules/style-loader/dist/runtime/styleTagTransform.js\";\n      import content, * as namedExport from \"!!../../../../../node_modules/css-loader/dist/cjs.js??clonedRuleSet-3.use[1]!../../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./FileListFilters.vue?vue&type=style&index=0&id=4b9fd4ac&prod&module=true&lang=css\";\n      \n      \n\nvar options = {};\n\noptions.styleTagTransform = styleTagTransformFn;\noptions.setAttributes = setAttributes;\noptions.insert = insertFn.bind(null, \"head\");\noptions.domAPI = domAPI;\noptions.insertStyleElement = insertStyleElement;\n\nvar update = API(content, options);\n\n\n\nexport * from \"!!../../../../../node_modules/css-loader/dist/cjs.js??clonedRuleSet-3.use[1]!../../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./FileListFilters.vue?vue&type=style&index=0&id=4b9fd4ac&prod&module=true&lang=css\";\n       export default content && content.locals ? content.locals : undefined;\n","import { render, staticRenderFns } from \"./FileListFilters.vue?vue&type=template&id=4b9fd4ac\"\nimport script from \"./FileListFilters.vue?vue&type=script&setup=true&lang=ts\"\nexport * from \"./FileListFilters.vue?vue&type=script&setup=true&lang=ts\"\nimport style0 from \"./FileListFilters.vue?vue&type=style&index=0&id=4b9fd4ac&prod&module=true&lang=css\"\n\n\n\n\nfunction injectStyles (context) {\n  \n  this[\"$style\"] = (style0.locals || style0)\n\n}\n\n/* normalize component */\nimport normalizer from \"!../../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n  script,\n  render,\n  staticRenderFns,\n  false,\n  injectStyles,\n  null,\n  null\n  \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return _c('VirtualList',{ref:\"table\",attrs:{\"data-component\":_vm.userConfig.grid_view ? _vm.FileEntryGrid : _vm.FileEntry,\"data-key\":\"source\",\"data-sources\":_vm.nodes,\"grid-mode\":_vm.userConfig.grid_view,\"extra-props\":{\n\t\tisMimeAvailable: _vm.isMimeAvailable,\n\t\tisMtimeAvailable: _vm.isMtimeAvailable,\n\t\tisSizeAvailable: _vm.isSizeAvailable,\n\t\tnodes: _vm.nodes,\n\t},\"scroll-to-index\":_vm.scrollToIndex,\"caption\":_vm.caption},scopedSlots:_vm._u([{key:\"filters\",fn:function(){return [_c('FileListFilterToSearch'),_c('FileListFilterChips')]},proxy:true},(!_vm.isNoneSelected)?{key:\"header-overlay\",fn:function(){return [_c('span',{staticClass:\"files-list__selected\"},[_vm._v(\"\\n\\t\\t\\t\"+_vm._s(_vm.n('files', '{count} selected', '{count} selected', _vm.selectedNodes.length, { count: _vm.selectedNodes.length }))+\"\\n\\t\\t\")]),_vm._v(\" \"),_c('FilesListTableHeaderActions',{attrs:{\"current-view\":_vm.currentView,\"selected-nodes\":_vm.selectedNodes}})]},proxy:true}:null,{key:\"before\",fn:function(){return _vm._l((_vm.headers),function(header){return _c('FilesListHeader',{key:header.id,attrs:{\"current-folder\":_vm.currentFolder,\"current-view\":_vm.currentView,\"header\":header}})})},proxy:true},{key:\"header\",fn:function(){return [_c('FilesListTableHeader',{ref:\"thead\",attrs:{\"is-mime-available\":_vm.isMimeAvailable,\"is-mtime-available\":_vm.isMtimeAvailable,\"is-size-available\":_vm.isSizeAvailable,\"nodes\":_vm.nodes}})]},proxy:true},{key:\"empty\",fn:function(){return [_vm._t(\"empty\")]},proxy:true},{key:\"footer\",fn:function(){return [_c('FilesListTableFooter',{attrs:{\"current-view\":_vm.currentView,\"is-mime-available\":_vm.isMimeAvailable,\"is-mtime-available\":_vm.isMtimeAvailable,\"is-size-available\":_vm.isSizeAvailable,\"nodes\":_vm.nodes,\"summary\":_vm.summary}})]},proxy:true}],null,true)})\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('span')\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import mod from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/ts-loader/index.js??clonedRuleSet-6.use[1]!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./CustomElementRender.vue?vue&type=script&lang=ts\"; export default mod; export * from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/ts-loader/index.js??clonedRuleSet-6.use[1]!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./CustomElementRender.vue?vue&type=script&lang=ts\"","import { render, staticRenderFns } from \"./CustomElementRender.vue?vue&type=template&id=5eb63caa\"\nimport script from \"./CustomElementRender.vue?vue&type=script&lang=ts\"\nexport * from \"./CustomElementRender.vue?vue&type=script&lang=ts\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n  script,\n  render,\n  staticRenderFns,\n  false,\n  null,\n  null,\n  null\n  \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return _c('td',{staticClass:\"files-list__row-actions\",attrs:{\"data-cy-files-list-row-actions\":\"\"}},[_vm._l((_vm.enabledRenderActions),function(action){return _c('CustomElementRender',{key:action.id,staticClass:\"files-list__row-action--inline\",class:'files-list__row-action-' + action.id,attrs:{\"active-folder\":_vm.activeStore.activeFolder,\"active-view\":_vm.activeStore.activeView,\"render\":action.renderInline,\"source\":_vm.source}})}),_vm._v(\" \"),_c('NcActions',{ref:\"actionsMenu\",attrs:{\"boundaries-element\":_vm.getBoundariesElement,\"container\":_vm.getBoundariesElement,\"force-name\":true,\"variant\":\"tertiary\",\"force-menu\":_vm.enabledInlineActions.length === 0 /* forceMenu only if no inline actions */,\"inline\":_vm.enabledInlineActions.length,\"open\":_vm.openedMenu},on:{\"close\":_vm.onMenuClose,\"closed\":_vm.onMenuClosed}},[_vm._l((_vm.renderedNonDestructiveActions),function(action,index){return _c('NcActionButton',{key:action.id,ref:`action-${action.id}`,refInFor:true,staticClass:\"files-list__row-action\",class:{\n\t\t\t\t[`files-list__row-action-${action.id}`]: true,\n\t\t\t\t'files-list__row-action--inline': index < _vm.enabledInlineActions.length,\n\t\t\t\t'files-list__row-action--menu': _vm.isValidMenu(action),\n\t\t\t},attrs:{\"close-after-click\":!_vm.isValidMenu(action),\"data-cy-files-list-row-action\":action.id,\"is-menu\":_vm.isValidMenu(action),\"aria-label\":action.title?.(_vm.actionContext),\"title\":action.title?.(_vm.actionContext)},on:{\"click\":function($event){return _vm.onActionClick(action)}},scopedSlots:_vm._u([{key:\"icon\",fn:function(){return [(_vm.isLoadingAction(action))?_c('NcLoadingIcon'):_c('NcIconSvgWrapper',{staticClass:\"files-list__row-action-icon\",attrs:{\"svg\":action.iconSvgInline(_vm.actionContext)}})]},proxy:true}],null,true)},[_vm._v(\"\\n\\t\\t\\t\"+_vm._s(_vm.actionDisplayName(action))+\"\\n\\t\\t\")])}),_vm._v(\" \"),(_vm.renderedDestructiveActions.length > 0)?[_c('NcActionSeparator'),_vm._v(\" \"),_vm._l((_vm.renderedDestructiveActions),function(action,index){return _c('NcActionButton',{key:action.id,ref:`action-${action.id}`,refInFor:true,staticClass:\"files-list__row-action files-list__row-action--destructive\",class:{\n\t\t\t\t\t[`files-list__row-action-${action.id}`]: true,\n\t\t\t\t\t'files-list__row-action--inline': index < _vm.enabledInlineActions.length,\n\t\t\t\t\t'files-list__row-action--menu': _vm.isValidMenu(action),\n\t\t\t\t},attrs:{\"close-after-click\":!_vm.isValidMenu(action),\"data-cy-files-list-row-action\":action.id,\"is-menu\":_vm.isValidMenu(action),\"aria-label\":action.title?.(_vm.actionContext),\"title\":action.title?.(_vm.actionContext)},on:{\"click\":function($event){return _vm.onActionClick(action)}},scopedSlots:_vm._u([{key:\"icon\",fn:function(){return [(_vm.isLoadingAction(action))?_c('NcLoadingIcon'):_c('NcIconSvgWrapper',{staticClass:\"files-list__row-action-icon\",attrs:{\"svg\":action.iconSvgInline(_vm.actionContext)}})]},proxy:true}],null,true)},[_vm._v(\"\\n\\t\\t\\t\\t\"+_vm._s(_vm.actionDisplayName(action))+\"\\n\\t\\t\\t\")])})]:_vm._e(),_vm._v(\" \"),(_vm.openedSubmenu && _vm.enabledSubmenuActions[_vm.openedSubmenu?.id])?[_c('NcActionButton',{staticClass:\"files-list__row-action-back\",attrs:{\"data-cy-files-list-row-action\":\"menu-back\"},on:{\"click\":function($event){return _vm.onBackToMenuClick(_vm.openedSubmenu)}},scopedSlots:_vm._u([{key:\"icon\",fn:function(){return [_c('ArrowLeftIcon')]},proxy:true}],null,false,3001860362)},[_vm._v(\"\\n\\t\\t\\t\\t\"+_vm._s(_vm.t('files', 'Back'))+\"\\n\\t\\t\\t\")]),_vm._v(\" \"),_c('NcActionSeparator'),_vm._v(\" \"),_vm._l((_vm.enabledSubmenuActions[_vm.openedSubmenu?.id]),function(action){return _c('NcActionButton',{key:action.id,staticClass:\"files-list__row-action--submenu\",class:`files-list__row-action-${action.id}`,attrs:{\"close-after-click\":\"\",\"data-cy-files-list-row-action\":action.id,\"aria-label\":action.title?.(_vm.actionContext),\"title\":action.title?.(_vm.actionContext)},on:{\"click\":function($event){return _vm.onActionClick(action)}},scopedSlots:_vm._u([{key:\"icon\",fn:function(){return [(_vm.isLoadingAction(action))?_c('NcLoadingIcon'):_c('NcIconSvgWrapper',{attrs:{\"svg\":action.iconSvgInline(_vm.actionContext)}})]},proxy:true}],null,true)},[_vm._v(\"\\n\\t\\t\\t\\t\"+_vm._s(_vm.actionDisplayName(action))+\"\\n\\t\\t\\t\")])})]:_vm._e()],2)],2)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n\n","import mod from \"-!../vue-loader/lib/index.js??vue-loader-options!./ArrowLeft.vue?vue&type=script&lang=js\"; export default mod; export * from \"-!../vue-loader/lib/index.js??vue-loader-options!./ArrowLeft.vue?vue&type=script&lang=js\"","import { render, staticRenderFns } from \"./ArrowLeft.vue?vue&type=template&id=16833c02\"\nimport script from \"./ArrowLeft.vue?vue&type=script&lang=js\"\nexport * from \"./ArrowLeft.vue?vue&type=script&lang=js\"\n\n\n/* normalize component */\nimport normalizer from \"!../vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n  script,\n  render,\n  staticRenderFns,\n  false,\n  null,\n  null,\n  null\n  \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('span',_vm._b({staticClass:\"material-design-icon arrow-left-icon\",attrs:{\"aria-hidden\":_vm.title ? null : 'true',\"aria-label\":_vm.title,\"role\":\"img\"},on:{\"click\":function($event){return _vm.$emit('click', $event)}}},'span',_vm.$attrs,false),[_c('svg',{staticClass:\"material-design-icon__svg\",attrs:{\"fill\":_vm.fillColor,\"width\":_vm.size,\"height\":_vm.size,\"viewBox\":\"0 0 24 24\"}},[_c('path',{attrs:{\"d\":\"M20,11V13H8L13.5,18.5L12.08,19.92L4.16,12L12.08,4.08L13.5,5.5L8,11H20Z\"}},[(_vm.title)?_c('title',[_vm._v(_vm._s(_vm.title))]):_vm._e()])])])\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","/**\n * SPDX-FileCopyrightText: 2025 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\nimport { defineComponent } from 'vue';\nexport default defineComponent({\n    data() {\n        return {\n            openedSubmenu: null,\n        };\n    },\n    computed: {\n        enabledSubmenuActions() {\n            return this.enabledFileActions\n                .reduce((record, action) => {\n                if (action.parent !== undefined) {\n                    if (!record[action.parent]) {\n                        record[action.parent] = [];\n                    }\n                    record[action.parent].push(action);\n                }\n                return record;\n            }, {});\n        },\n    },\n    methods: {\n        /**\n         * Check if a menu is valid, meaning it is\n         * defined and has at least one action\n         *\n         * @param action The action to check\n         */\n        isValidMenu(action) {\n            return this.enabledSubmenuActions[action.id]?.length > 0;\n        },\n        async onBackToMenuClick(action) {\n            if (!action) {\n                return;\n            }\n            this.openedSubmenu = null;\n            // Wait for first render\n            await this.$nextTick();\n            // Focus the previous menu action button\n            this.$nextTick(() => {\n                // Focus the action button, test both batch and single action references\n                // as this mixin is used in both single and batch actions.\n                const menuAction = this.$refs[`action-batch-${action.id}`]?.[0]\n                    || this.$refs[`action-${action.id}`]?.[0];\n                if (menuAction) {\n                    menuAction.$el.querySelector('button')?.focus();\n                }\n            });\n        },\n    },\n});\n","import { showError, showSuccess } from '@nextcloud/dialogs';\nimport { NodeStatus } from '@nextcloud/files';\nimport { t } from '@nextcloud/l10n';\nimport Vue from 'vue';\nimport logger from '../logger.ts';\nimport { useActiveStore } from '../store/active.ts';\n/**\n * Execute an action on the current active node\n *\n * @param action The action to execute\n */\nexport async function executeAction(action) {\n    const activeStore = useActiveStore();\n    const currentFolder = activeStore.activeFolder;\n    const currentNode = activeStore.activeNode;\n    const currentView = activeStore.activeView;\n    if (!currentFolder || !currentNode || !currentView) {\n        logger.error('No active folder, node or view', { folder: currentFolder, node: currentNode, view: currentView });\n        return;\n    }\n    if (currentNode.status === NodeStatus.LOADING) {\n        logger.debug('Node is already loading', { node: currentNode });\n        return;\n    }\n    // @ts-expect-error _children is private\n    const contents = currentFolder?._children || [];\n    const context = {\n        nodes: [currentNode],\n        view: currentView,\n        folder: currentFolder,\n        contents,\n    };\n    if (!action.enabled(context)) {\n        logger.debug('Action is not not available for the current context', { action, node: currentNode, view: currentView });\n        return;\n    }\n    let displayName = action.id;\n    try {\n        displayName = action.displayName(context);\n    }\n    catch (error) {\n        logger.error('Error while getting action display name', { action, error });\n    }\n    try {\n        // Set the loading marker\n        Vue.set(currentNode, 'status', NodeStatus.LOADING);\n        activeStore.activeAction = action;\n        const success = await action.exec(context);\n        // If the action returns null, we stay silent\n        if (success === null || success === undefined) {\n            return;\n        }\n        if (success) {\n            showSuccess(t('files', '{displayName}: done', { displayName }));\n            return;\n        }\n        showError(t('files', '{displayName}: failed', { displayName }));\n    }\n    catch (error) {\n        logger.error('Error while executing action', { action, error });\n        showError(t('files', '{displayName}: failed', { displayName }));\n    }\n    finally {\n        // Reset the loading marker\n        Vue.set(currentNode, 'status', undefined);\n        activeStore.activeAction = undefined;\n    }\n}\n","import mod from \"-!../../../../../node_modules/babel-loader/lib/index.js!../../../../../node_modules/ts-loader/index.js??clonedRuleSet-6.use[1]!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./FileEntryActions.vue?vue&type=script&lang=ts\"; export default mod; export * from \"-!../../../../../node_modules/babel-loader/lib/index.js!../../../../../node_modules/ts-loader/index.js??clonedRuleSet-6.use[1]!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./FileEntryActions.vue?vue&type=script&lang=ts\"","\n      import API from \"!../../../../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\";\n      import domAPI from \"!../../../../../node_modules/style-loader/dist/runtime/styleDomAPI.js\";\n      import insertFn from \"!../../../../../node_modules/style-loader/dist/runtime/insertBySelector.js\";\n      import setAttributes from \"!../../../../../node_modules/style-loader/dist/runtime/setAttributesWithoutAttributes.js\";\n      import insertStyleElement from \"!../../../../../node_modules/style-loader/dist/runtime/insertStyleElement.js\";\n      import styleTagTransformFn from \"!../../../../../node_modules/style-loader/dist/runtime/styleTagTransform.js\";\n      import content, * as namedExport from \"!!../../../../../node_modules/css-loader/dist/cjs.js!../../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../../node_modules/sass-loader/dist/cjs.js!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./FileEntryActions.vue?vue&type=style&index=0&id=5f3391ea&prod&lang=scss\";\n      \n      \n\nvar options = {};\n\noptions.styleTagTransform = styleTagTransformFn;\noptions.setAttributes = setAttributes;\noptions.insert = insertFn.bind(null, \"head\");\noptions.domAPI = domAPI;\noptions.insertStyleElement = insertStyleElement;\n\nvar update = API(content, options);\n\n\n\nexport * from \"!!../../../../../node_modules/css-loader/dist/cjs.js!../../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../../node_modules/sass-loader/dist/cjs.js!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./FileEntryActions.vue?vue&type=style&index=0&id=5f3391ea&prod&lang=scss\";\n       export default content && content.locals ? content.locals : undefined;\n","\n      import API from \"!../../../../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\";\n      import domAPI from \"!../../../../../node_modules/style-loader/dist/runtime/styleDomAPI.js\";\n      import insertFn from \"!../../../../../node_modules/style-loader/dist/runtime/insertBySelector.js\";\n      import setAttributes from \"!../../../../../node_modules/style-loader/dist/runtime/setAttributesWithoutAttributes.js\";\n      import insertStyleElement from \"!../../../../../node_modules/style-loader/dist/runtime/insertStyleElement.js\";\n      import styleTagTransformFn from \"!../../../../../node_modules/style-loader/dist/runtime/styleTagTransform.js\";\n      import content, * as namedExport from \"!!../../../../../node_modules/css-loader/dist/cjs.js!../../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../../node_modules/sass-loader/dist/cjs.js!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./FileEntryActions.vue?vue&type=style&index=1&id=5f3391ea&prod&scoped=true&lang=scss\";\n      \n      \n\nvar options = {};\n\noptions.styleTagTransform = styleTagTransformFn;\noptions.setAttributes = setAttributes;\noptions.insert = insertFn.bind(null, \"head\");\noptions.domAPI = domAPI;\noptions.insertStyleElement = insertStyleElement;\n\nvar update = API(content, options);\n\n\n\nexport * from \"!!../../../../../node_modules/css-loader/dist/cjs.js!../../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../../node_modules/sass-loader/dist/cjs.js!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./FileEntryActions.vue?vue&type=style&index=1&id=5f3391ea&prod&scoped=true&lang=scss\";\n       export default content && content.locals ? content.locals : undefined;\n","import { render, staticRenderFns } from \"./FileEntryActions.vue?vue&type=template&id=5f3391ea&scoped=true\"\nimport script from \"./FileEntryActions.vue?vue&type=script&lang=ts\"\nexport * from \"./FileEntryActions.vue?vue&type=script&lang=ts\"\nimport style0 from \"./FileEntryActions.vue?vue&type=style&index=0&id=5f3391ea&prod&lang=scss\"\nimport style1 from \"./FileEntryActions.vue?vue&type=style&index=1&id=5f3391ea&prod&scoped=true&lang=scss\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n  script,\n  render,\n  staticRenderFns,\n  false,\n  null,\n  \"5f3391ea\",\n  null\n  \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return _c('td',{staticClass:\"files-list__row-checkbox\",on:{\"keyup\":function($event){if(!$event.type.indexOf('key')&&_vm._k($event.keyCode,\"esc\",27,$event.key,[\"Esc\",\"Escape\"]))return null;if($event.ctrlKey||$event.shiftKey||$event.altKey||$event.metaKey)return null;return _vm.resetSelection.apply(null, arguments)}}},[(_vm.isLoading)?_c('NcLoadingIcon',{attrs:{\"name\":_vm.loadingLabel}}):_c('NcCheckboxRadioSwitch',{attrs:{\"aria-label\":_vm.ariaLabel,\"model-value\":_vm.isSelected,\"data-cy-files-list-row-checkbox\":\"\"},on:{\"update:modelValue\":_vm.onSelectionChange}})],1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import mod from \"-!../../../../../node_modules/babel-loader/lib/index.js!../../../../../node_modules/ts-loader/index.js??clonedRuleSet-6.use[1]!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./FileEntryCheckbox.vue?vue&type=script&lang=ts\"; export default mod; export * from \"-!../../../../../node_modules/babel-loader/lib/index.js!../../../../../node_modules/ts-loader/index.js??clonedRuleSet-6.use[1]!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./FileEntryCheckbox.vue?vue&type=script&lang=ts\"","/**\n * SPDX-FileCopyrightText: 2023 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\nimport { defineStore } from 'pinia';\nimport Vue from 'vue';\n/**\n * Observe various events and save the current\n * special keys states. Useful for checking the\n * current status of a key when executing a method.\n *\n * @param args\n */\nexport function useKeyboardStore(...args) {\n    const store = defineStore('keyboard', {\n        state: () => ({\n            altKey: false,\n            ctrlKey: false,\n            metaKey: false,\n            shiftKey: false,\n        }),\n        actions: {\n            onEvent(event) {\n                if (!event) {\n                    event = window.event;\n                }\n                Vue.set(this, 'altKey', !!event.altKey);\n                Vue.set(this, 'ctrlKey', !!event.ctrlKey);\n                Vue.set(this, 'metaKey', !!event.metaKey);\n                Vue.set(this, 'shiftKey', !!event.shiftKey);\n            },\n        },\n    });\n    const keyboardStore = store(...args);\n    // Make sure we only register the listeners once\n    if (!keyboardStore._initialized) {\n        window.addEventListener('keydown', keyboardStore.onEvent);\n        window.addEventListener('keyup', keyboardStore.onEvent);\n        window.addEventListener('mousemove', keyboardStore.onEvent);\n        keyboardStore._initialized = true;\n    }\n    return keyboardStore;\n}\n","import { render, staticRenderFns } from \"./FileEntryCheckbox.vue?vue&type=template&id=b10e52a2\"\nimport script from \"./FileEntryCheckbox.vue?vue&type=script&lang=ts\"\nexport * from \"./FileEntryCheckbox.vue?vue&type=script&lang=ts\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n  script,\n  render,\n  staticRenderFns,\n  false,\n  null,\n  null,\n  null\n  \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return (_vm.isRenaming)?_c('form',{directives:[{name:\"on-click-outside\",rawName:\"v-on-click-outside\",value:(_vm.onRename),expression:\"onRename\"}],ref:\"renameForm\",staticClass:\"files-list__row-rename\",attrs:{\"aria-label\":_vm.t('files', 'Rename file')},on:{\"submit\":function($event){$event.preventDefault();$event.stopPropagation();return _vm.onRename.apply(null, arguments)}}},[_c('NcTextField',{ref:\"renameInput\",attrs:{\"label\":_vm.renameLabel,\"autofocus\":\"\",\"required\":\"\",\"minlength\":1,\"enterkeyhint\":\"done\"},on:{\"keyup\":function($event){if(!$event.type.indexOf('key')&&_vm._k($event.keyCode,\"esc\",27,$event.key,[\"Esc\",\"Escape\"]))return null;return _vm.stopRenaming.apply(null, arguments)}},model:{value:(_vm.newName),callback:function ($$v) {_vm.newName=$$v},expression:\"newName\"}})],1):_c(_vm.linkTo.is,_vm._b({ref:\"basename\",tag:\"component\",staticClass:\"files-list__row-name-link\",attrs:{\"data-cy-files-list-row-name-link\":\"\"}},'component',_vm.linkTo.params,false),[_c('span',{staticClass:\"files-list__row-name-text\",attrs:{\"dir\":\"auto\"}},[_c('span',{staticClass:\"files-list__row-name-\",domProps:{\"textContent\":_vm._s(_vm.basename)}}),_vm._v(\" \"),(_vm.userConfigStore.userConfig.show_files_extensions)?_c('span',{staticClass:\"files-list__row-name-ext\",domProps:{\"textContent\":_vm._s(_vm.extension)}}):_vm._e()])])\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","/**\n * SPDX-FileCopyrightText: 2023 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\nimport axios, { isAxiosError } from '@nextcloud/axios';\nimport { emit, subscribe } from '@nextcloud/event-bus';\nimport { FileType, NodeStatus } from '@nextcloud/files';\nimport { t } from '@nextcloud/l10n';\nimport { basename, dirname, extname } from '@nextcloud/paths';\nimport { spawnDialog } from '@nextcloud/vue/functions/dialog';\nimport { defineStore } from 'pinia';\nimport Vue, { defineAsyncComponent, ref } from 'vue';\nimport logger from '../logger.ts';\nimport { fetchNode } from '../services/WebdavClient.ts';\nimport { useUserConfigStore } from './userconfig.ts';\nexport const useRenamingStore = defineStore('renaming', () => {\n    /**\n     * The currently renamed node\n     */\n    const renamingNode = ref();\n    /**\n     * The new name of the currently renamed node\n     */\n    const newNodeName = ref('');\n    /**\n     * Internal flag to only allow calling `rename` once.\n     */\n    const isRenaming = ref(false);\n    /**\n     * Execute the renaming.\n     * This will rename the node set as `renamingNode` to the configured new name `newName`.\n     *\n     * @return true if success, false if skipped (e.g. new and old name are the same)\n     * @throws {Error} if renaming fails, details are set in the error message\n     */\n    async function rename() {\n        if (renamingNode.value === undefined) {\n            throw new Error('No node is currently being renamed');\n        }\n        const oldName = renamingNode.value.basename;\n        let newName = newNodeName.value.trim();\n        if (newName === oldName) {\n            return false;\n        }\n        // Only rename once so we use this as some kind of mutex\n        if (isRenaming.value) {\n            return false;\n        }\n        isRenaming.value = true;\n        const userConfig = useUserConfigStore();\n        let node = renamingNode.value;\n        Vue.set(node, 'status', NodeStatus.LOADING);\n        try {\n            if (userConfig.userConfig.show_dialog_file_extension) {\n                const oldExtension = extname(oldName);\n                const newExtension = extname(newName);\n                // Check for extension change for files\n                if (node.type === FileType.File\n                    && oldExtension !== newExtension\n                    && !(await showFileExtensionDialog(oldExtension, newExtension))) {\n                    // user selected to use the old extension\n                    newName = basename(newName, newExtension) + oldExtension;\n                    if (oldName === newName) {\n                        return false;\n                    }\n                }\n                if (!userConfig.userConfig.show_hidden\n                    && newName.startsWith('.')\n                    && !oldName.startsWith('.')\n                    && !(await showHiddenFileDialog(newName))) {\n                    return false;\n                }\n            }\n            const oldEncodedSource = node.encodedSource;\n            // rename the node\n            node.rename(newName);\n            logger.debug('Moving file to', { destination: node.encodedSource, oldEncodedSource });\n            // create MOVE request\n            await axios({\n                method: 'MOVE',\n                url: oldEncodedSource,\n                headers: {\n                    Destination: node.encodedSource,\n                    Overwrite: 'F',\n                },\n            });\n            // Update mime type if extension changed\n            // as other related informations might have changed\n            // on the backend but it is really hard to know on the front\n            if (extname(oldName) !== extname(newName)) {\n                node = await fetchNode(node.path);\n            }\n            // Success 🎉\n            emit('files:node:updated', node);\n            emit('files:node:renamed', node);\n            emit('files:node:moved', {\n                node,\n                oldSource: `${dirname(node.source)}/${oldName}`,\n            });\n            // Reset the state not changed\n            if (renamingNode.value === node) {\n                $reset();\n            }\n            return true;\n        }\n        catch (error) {\n            logger.error('Error while renaming file', { error });\n            // Rename back as it failed\n            node.rename(oldName);\n            if (isAxiosError(error)) {\n                // TODO: 409 means current folder does not exist, redirect ?\n                if (error?.response?.status === 404) {\n                    throw new Error(t('files', 'Could not rename \"{oldName}\", it does not exist any more', { oldName }));\n                }\n                else if (error?.response?.status === 412) {\n                    throw new Error(t('files', 'The name \"{newName}\" is already used in the folder \"{dir}\". Please choose a different name.', {\n                        newName,\n                        dir: basename(renamingNode.value.dirname),\n                    }));\n                }\n            }\n            // Unknown error\n            throw new Error(t('files', 'Could not rename \"{oldName}\"', { oldName }));\n        }\n        finally {\n            Vue.set(node, 'status', undefined);\n            isRenaming.value = false;\n        }\n    }\n    /**\n     * Reset the store state\n     */\n    function $reset() {\n        newNodeName.value = '';\n        renamingNode.value = undefined;\n    }\n    // Make sure we only register the listeners once\n    subscribe('files:node:rename', (node) => {\n        renamingNode.value = node;\n        newNodeName.value = node.basename;\n    });\n    return {\n        $reset,\n        newNodeName,\n        rename,\n        renamingNode,\n    };\n});\n/**\n * Show a dialog asking user for confirmation about changing the file extension.\n *\n * @param oldExtension the old file name extension\n * @param newExtension the new file name extension\n */\nasync function showFileExtensionDialog(oldExtension, newExtension) {\n    const { promise, resolve } = Promise.withResolvers();\n    await spawnDialog(defineAsyncComponent(() => import('../views/DialogConfirmFileExtension.vue')), { oldExtension, newExtension }, resolve);\n    return promise;\n}\n/**\n * Show a dialog asking user for confirmation about renaming a file to a hidden file.\n *\n * @param filename - The new filename\n */\nasync function showHiddenFileDialog(filename) {\n    const { promise, resolve } = Promise.withResolvers();\n    await spawnDialog(defineAsyncComponent(() => import('../views/DialogConfirmFileHidden.vue')), { filename }, resolve);\n    return promise;\n}\n","/*!\n * SPDX-FileCopyrightText: 2024 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\nimport { InvalidFilenameError, InvalidFilenameErrorReason, validateFilename } from '@nextcloud/files';\nimport { t } from '@nextcloud/l10n';\n/**\n * Get the validity of a filename (empty if valid).\n * This can be used for `setCustomValidity` on input elements\n *\n * @param name The filename\n * @param escape Escape the matched string in the error (only set when used in HTML)\n */\nexport function getFilenameValidity(name, escape = false) {\n    if (name.trim() === '') {\n        return t('files', 'Filename must not be empty.');\n    }\n    try {\n        validateFilename(name);\n        return '';\n    }\n    catch (error) {\n        if (!(error instanceof InvalidFilenameError)) {\n            throw error;\n        }\n        switch (error.reason) {\n            case InvalidFilenameErrorReason.Character:\n                return t('files', '\"{char}\" is not allowed inside a filename.', { char: error.segment }, undefined, { escape });\n            case InvalidFilenameErrorReason.ReservedName:\n                return t('files', '\"{segment}\" is a reserved name and not allowed for filenames.', { segment: error.segment }, undefined, { escape: false });\n            case InvalidFilenameErrorReason.Extension:\n                if (error.segment.match(/\\.[a-z]/i)) {\n                    return t('files', '\"{extension}\" is not an allowed filetype.', { extension: error.segment }, undefined, { escape: false });\n                }\n                return t('files', 'Filenames must not end with \"{extension}\".', { extension: error.segment }, undefined, { escape: false });\n            default:\n                return t('files', 'Invalid filename.');\n        }\n    }\n}\n","import mod from \"-!../../../../../node_modules/babel-loader/lib/index.js!../../../../../node_modules/ts-loader/index.js??clonedRuleSet-6.use[1]!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./FileEntryName.vue?vue&type=script&lang=ts\"; export default mod; export * from \"-!../../../../../node_modules/babel-loader/lib/index.js!../../../../../node_modules/ts-loader/index.js??clonedRuleSet-6.use[1]!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./FileEntryName.vue?vue&type=script&lang=ts\"","\n      import API from \"!../../../../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\";\n      import domAPI from \"!../../../../../node_modules/style-loader/dist/runtime/styleDomAPI.js\";\n      import insertFn from \"!../../../../../node_modules/style-loader/dist/runtime/insertBySelector.js\";\n      import setAttributes from \"!../../../../../node_modules/style-loader/dist/runtime/setAttributesWithoutAttributes.js\";\n      import insertStyleElement from \"!../../../../../node_modules/style-loader/dist/runtime/insertStyleElement.js\";\n      import styleTagTransformFn from \"!../../../../../node_modules/style-loader/dist/runtime/styleTagTransform.js\";\n      import content, * as namedExport from \"!!../../../../../node_modules/css-loader/dist/cjs.js!../../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../../node_modules/sass-loader/dist/cjs.js!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./FileEntryName.vue?vue&type=style&index=0&id=3e8ca2b0&prod&scoped=true&lang=scss\";\n      \n      \n\nvar options = {};\n\noptions.styleTagTransform = styleTagTransformFn;\noptions.setAttributes = setAttributes;\noptions.insert = insertFn.bind(null, \"head\");\noptions.domAPI = domAPI;\noptions.insertStyleElement = insertStyleElement;\n\nvar update = API(content, options);\n\n\n\nexport * from \"!!../../../../../node_modules/css-loader/dist/cjs.js!../../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../../node_modules/sass-loader/dist/cjs.js!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./FileEntryName.vue?vue&type=style&index=0&id=3e8ca2b0&prod&scoped=true&lang=scss\";\n       export default content && content.locals ? content.locals : undefined;\n","import { render, staticRenderFns } from \"./FileEntryName.vue?vue&type=template&id=3e8ca2b0&scoped=true\"\nimport script from \"./FileEntryName.vue?vue&type=script&lang=ts\"\nexport * from \"./FileEntryName.vue?vue&type=script&lang=ts\"\nimport style0 from \"./FileEntryName.vue?vue&type=style&index=0&id=3e8ca2b0&prod&scoped=true&lang=scss\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n  script,\n  render,\n  staticRenderFns,\n  false,\n  null,\n  \"3e8ca2b0\",\n  null\n  \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return _c('span',{staticClass:\"files-list__row-icon\"},[(_vm.source.type === 'folder')?[(_vm.dragover)?_vm._m(0):[_vm._m(1),_vm._v(\" \"),(_vm.folderOverlay)?_c(_vm.folderOverlay,{tag:\"component\",staticClass:\"files-list__row-icon-overlay\"}):_vm._e()]]:(_vm.previewUrl)?_c('span',{staticClass:\"files-list__row-icon-preview-container\"},[(_vm.hasBlurhash && (_vm.backgroundFailed === true || !_vm.backgroundLoaded))?_c('canvas',{ref:\"canvas\",staticClass:\"files-list__row-icon-blurhash\",attrs:{\"aria-hidden\":\"true\"}}):_vm._e(),_vm._v(\" \"),(_vm.backgroundFailed !== true)?_c('img',{key:_vm.source.fileid,ref:\"previewImg\",staticClass:\"files-list__row-icon-preview\",class:{ 'files-list__row-icon-preview--loaded': _vm.backgroundFailed === false },attrs:{\"alt\":\"\",\"loading\":\"lazy\",\"src\":_vm.previewUrl},on:{\"error\":_vm.onBackgroundError,\"load\":_vm.onBackgroundLoad}}):_vm._e()]):_vm._m(2),_vm._v(\" \"),(_vm.isFavorite)?_c('span',{staticClass:\"files-list__row-icon-favorite\"},[_vm._m(3)],1):_vm._e(),_vm._v(\" \"),(_vm.fileOverlay)?_c(_vm.fileOverlay,{tag:\"component\",staticClass:\"files-list__row-icon-overlay files-list__row-icon-overlay--file\"}):_vm._e()],2)\n}\nvar staticRenderFns = [function (){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return _c('FolderOpenIcon')\n},function (){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return _c('FolderIcon')\n},function (){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return _c('FileIcon')\n},function (){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return _c('FavoriteIcon')\n}]\n\nexport { render, staticRenderFns }","\n\n","import mod from \"-!../vue-loader/lib/index.js??vue-loader-options!./AccountGroup.vue?vue&type=script&lang=js\"; export default mod; export * from \"-!../vue-loader/lib/index.js??vue-loader-options!./AccountGroup.vue?vue&type=script&lang=js\"","import { render, staticRenderFns } from \"./AccountGroup.vue?vue&type=template&id=fa2b1464\"\nimport script from \"./AccountGroup.vue?vue&type=script&lang=js\"\nexport * from \"./AccountGroup.vue?vue&type=script&lang=js\"\n\n\n/* normalize component */\nimport normalizer from \"!../vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n  script,\n  render,\n  staticRenderFns,\n  false,\n  null,\n  null,\n  null\n  \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('span',_vm._b({staticClass:\"material-design-icon account-group-icon\",attrs:{\"aria-hidden\":_vm.title ? null : 'true',\"aria-label\":_vm.title,\"role\":\"img\"},on:{\"click\":function($event){return _vm.$emit('click', $event)}}},'span',_vm.$attrs,false),[_c('svg',{staticClass:\"material-design-icon__svg\",attrs:{\"fill\":_vm.fillColor,\"width\":_vm.size,\"height\":_vm.size,\"viewBox\":\"0 0 24 24\"}},[_c('path',{attrs:{\"d\":\"M12,5.5A3.5,3.5 0 0,1 15.5,9A3.5,3.5 0 0,1 12,12.5A3.5,3.5 0 0,1 8.5,9A3.5,3.5 0 0,1 12,5.5M5,8C5.56,8 6.08,8.15 6.53,8.42C6.38,9.85 6.8,11.27 7.66,12.38C7.16,13.34 6.16,14 5,14A3,3 0 0,1 2,11A3,3 0 0,1 5,8M19,8A3,3 0 0,1 22,11A3,3 0 0,1 19,14C17.84,14 16.84,13.34 16.34,12.38C17.2,11.27 17.62,9.85 17.47,8.42C17.92,8.15 18.44,8 19,8M5.5,18.25C5.5,16.18 8.41,14.5 12,14.5C15.59,14.5 18.5,16.18 18.5,18.25V20H5.5V18.25M0,20V18.5C0,17.11 1.89,15.94 4.45,15.6C3.86,16.28 3.5,17.22 3.5,18.25V20H0M24,20H20.5V18.25C20.5,17.22 20.14,16.28 19.55,15.6C22.11,15.94 24,17.11 24,18.5V20Z\"}},[(_vm.title)?_c('title',[_vm._v(_vm._s(_vm.title))]):_vm._e()])])])\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import mod from \"-!../vue-loader/lib/index.js??vue-loader-options!./AccountPlus.vue?vue&type=script&lang=js\"; export default mod; export * from \"-!../vue-loader/lib/index.js??vue-loader-options!./AccountPlus.vue?vue&type=script&lang=js\"","\n\n","import { render, staticRenderFns } from \"./AccountPlus.vue?vue&type=template&id=53a26aa0\"\nimport script from \"./AccountPlus.vue?vue&type=script&lang=js\"\nexport * from \"./AccountPlus.vue?vue&type=script&lang=js\"\n\n\n/* normalize component */\nimport normalizer from \"!../vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n  script,\n  render,\n  staticRenderFns,\n  false,\n  null,\n  null,\n  null\n  \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('span',_vm._b({staticClass:\"material-design-icon account-plus-icon\",attrs:{\"aria-hidden\":_vm.title ? null : 'true',\"aria-label\":_vm.title,\"role\":\"img\"},on:{\"click\":function($event){return _vm.$emit('click', $event)}}},'span',_vm.$attrs,false),[_c('svg',{staticClass:\"material-design-icon__svg\",attrs:{\"fill\":_vm.fillColor,\"width\":_vm.size,\"height\":_vm.size,\"viewBox\":\"0 0 24 24\"}},[_c('path',{attrs:{\"d\":\"M15,14C12.33,14 7,15.33 7,18V20H23V18C23,15.33 17.67,14 15,14M6,10V7H4V10H1V12H4V15H6V12H9V10M15,12A4,4 0 0,0 19,8A4,4 0 0,0 15,4A4,4 0 0,0 11,8A4,4 0 0,0 15,12Z\"}},[(_vm.title)?_c('title',[_vm._v(_vm._s(_vm.title))]):_vm._e()])])])\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n\n","import mod from \"-!../vue-loader/lib/index.js??vue-loader-options!./FolderOpen.vue?vue&type=script&lang=js\"; export default mod; export * from \"-!../vue-loader/lib/index.js??vue-loader-options!./FolderOpen.vue?vue&type=script&lang=js\"","import { render, staticRenderFns } from \"./FolderOpen.vue?vue&type=template&id=ae0c5fc0\"\nimport script from \"./FolderOpen.vue?vue&type=script&lang=js\"\nexport * from \"./FolderOpen.vue?vue&type=script&lang=js\"\n\n\n/* normalize component */\nimport normalizer from \"!../vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n  script,\n  render,\n  staticRenderFns,\n  false,\n  null,\n  null,\n  null\n  \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('span',_vm._b({staticClass:\"material-design-icon folder-open-icon\",attrs:{\"aria-hidden\":_vm.title ? null : 'true',\"aria-label\":_vm.title,\"role\":\"img\"},on:{\"click\":function($event){return _vm.$emit('click', $event)}}},'span',_vm.$attrs,false),[_c('svg',{staticClass:\"material-design-icon__svg\",attrs:{\"fill\":_vm.fillColor,\"width\":_vm.size,\"height\":_vm.size,\"viewBox\":\"0 0 24 24\"}},[_c('path',{attrs:{\"d\":\"M19,20H4C2.89,20 2,19.1 2,18V6C2,4.89 2.89,4 4,4H10L12,6H19A2,2 0 0,1 21,8H21L4,8V18L6.14,10H23.21L20.93,18.5C20.7,19.37 19.92,20 19,20Z\"}},[(_vm.title)?_c('title',[_vm._v(_vm._s(_vm.title))]):_vm._e()])])])\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import mod from \"-!../vue-loader/lib/index.js??vue-loader-options!./Key.vue?vue&type=script&lang=js\"; export default mod; export * from \"-!../vue-loader/lib/index.js??vue-loader-options!./Key.vue?vue&type=script&lang=js\"","\n\n","import { render, staticRenderFns } from \"./Key.vue?vue&type=template&id=499b3412\"\nimport script from \"./Key.vue?vue&type=script&lang=js\"\nexport * from \"./Key.vue?vue&type=script&lang=js\"\n\n\n/* normalize component */\nimport normalizer from \"!../vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n  script,\n  render,\n  staticRenderFns,\n  false,\n  null,\n  null,\n  null\n  \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('span',_vm._b({staticClass:\"material-design-icon key-icon\",attrs:{\"aria-hidden\":_vm.title ? null : 'true',\"aria-label\":_vm.title,\"role\":\"img\"},on:{\"click\":function($event){return _vm.$emit('click', $event)}}},'span',_vm.$attrs,false),[_c('svg',{staticClass:\"material-design-icon__svg\",attrs:{\"fill\":_vm.fillColor,\"width\":_vm.size,\"height\":_vm.size,\"viewBox\":\"0 0 24 24\"}},[_c('path',{attrs:{\"d\":\"M7 14C5.9 14 5 13.1 5 12S5.9 10 7 10 9 10.9 9 12 8.1 14 7 14M12.6 10C11.8 7.7 9.6 6 7 6C3.7 6 1 8.7 1 12S3.7 18 7 18C9.6 18 11.8 16.3 12.6 14H16V18H20V14H23V10H12.6Z\"}},[(_vm.title)?_c('title',[_vm._v(_vm._s(_vm.title))]):_vm._e()])])])\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n\n","import mod from \"-!../vue-loader/lib/index.js??vue-loader-options!./NetworkOutline.vue?vue&type=script&lang=js\"; export default mod; export * from \"-!../vue-loader/lib/index.js??vue-loader-options!./NetworkOutline.vue?vue&type=script&lang=js\"","import { render, staticRenderFns } from \"./NetworkOutline.vue?vue&type=template&id=8f00cb50\"\nimport script from \"./NetworkOutline.vue?vue&type=script&lang=js\"\nexport * from \"./NetworkOutline.vue?vue&type=script&lang=js\"\n\n\n/* normalize component */\nimport normalizer from \"!../vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n  script,\n  render,\n  staticRenderFns,\n  false,\n  null,\n  null,\n  null\n  \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('span',_vm._b({staticClass:\"material-design-icon network-outline-icon\",attrs:{\"aria-hidden\":_vm.title ? null : 'true',\"aria-label\":_vm.title,\"role\":\"img\"},on:{\"click\":function($event){return _vm.$emit('click', $event)}}},'span',_vm.$attrs,false),[_c('svg',{staticClass:\"material-design-icon__svg\",attrs:{\"fill\":_vm.fillColor,\"width\":_vm.size,\"height\":_vm.size,\"viewBox\":\"0 0 24 24\"}},[_c('path',{attrs:{\"d\":\"M15,20A1,1 0 0,0 14,19H13V17H17A2,2 0 0,0 19,15V5A2,2 0 0,0 17,3H7A2,2 0 0,0 5,5V15A2,2 0 0,0 7,17H11V19H10A1,1 0 0,0 9,20H2V22H9A1,1 0 0,0 10,23H14A1,1 0 0,0 15,22H22V20H15M7,15V5H17V15H7Z\"}},[(_vm.title)?_c('title',[_vm._v(_vm._s(_vm.title))]):_vm._e()])])])\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import mod from \"-!../vue-loader/lib/index.js??vue-loader-options!./PlayCircle.vue?vue&type=script&lang=js\"; export default mod; export * from \"-!../vue-loader/lib/index.js??vue-loader-options!./PlayCircle.vue?vue&type=script&lang=js\"","\n\n","import { render, staticRenderFns } from \"./PlayCircle.vue?vue&type=template&id=3cc1493c\"\nimport script from \"./PlayCircle.vue?vue&type=script&lang=js\"\nexport * from \"./PlayCircle.vue?vue&type=script&lang=js\"\n\n\n/* normalize component */\nimport normalizer from \"!../vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n  script,\n  render,\n  staticRenderFns,\n  false,\n  null,\n  null,\n  null\n  \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('span',_vm._b({staticClass:\"material-design-icon play-circle-icon\",attrs:{\"aria-hidden\":_vm.title ? null : 'true',\"aria-label\":_vm.title,\"role\":\"img\"},on:{\"click\":function($event){return _vm.$emit('click', $event)}}},'span',_vm.$attrs,false),[_c('svg',{staticClass:\"material-design-icon__svg\",attrs:{\"fill\":_vm.fillColor,\"width\":_vm.size,\"height\":_vm.size,\"viewBox\":\"0 0 24 24\"}},[_c('path',{attrs:{\"d\":\"M10,16.5V7.5L16,12M12,2A10,10 0 0,0 2,12A10,10 0 0,0 12,22A10,10 0 0,0 22,12A10,10 0 0,0 12,2Z\"}},[(_vm.title)?_c('title',[_vm._v(_vm._s(_vm.title))]):_vm._e()])])])\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import mod from \"-!../vue-loader/lib/index.js??vue-loader-options!./Tag.vue?vue&type=script&lang=js\"; export default mod; export * from \"-!../vue-loader/lib/index.js??vue-loader-options!./Tag.vue?vue&type=script&lang=js\"","\n\n","import { render, staticRenderFns } from \"./Tag.vue?vue&type=template&id=356230e0\"\nimport script from \"./Tag.vue?vue&type=script&lang=js\"\nexport * from \"./Tag.vue?vue&type=script&lang=js\"\n\n\n/* normalize component */\nimport normalizer from \"!../vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n  script,\n  render,\n  staticRenderFns,\n  false,\n  null,\n  null,\n  null\n  \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('span',_vm._b({staticClass:\"material-design-icon tag-icon\",attrs:{\"aria-hidden\":_vm.title ? null : 'true',\"aria-label\":_vm.title,\"role\":\"img\"},on:{\"click\":function($event){return _vm.$emit('click', $event)}}},'span',_vm.$attrs,false),[_c('svg',{staticClass:\"material-design-icon__svg\",attrs:{\"fill\":_vm.fillColor,\"width\":_vm.size,\"height\":_vm.size,\"viewBox\":\"0 0 24 24\"}},[_c('path',{attrs:{\"d\":\"M5.5,7A1.5,1.5 0 0,1 4,5.5A1.5,1.5 0 0,1 5.5,4A1.5,1.5 0 0,1 7,5.5A1.5,1.5 0 0,1 5.5,7M21.41,11.58L12.41,2.58C12.05,2.22 11.55,2 11,2H4C2.89,2 2,2.89 2,4V11C2,11.55 2.22,12.05 2.59,12.41L11.58,21.41C11.95,21.77 12.45,22 13,22C13.55,22 14.05,21.77 14.41,21.41L21.41,14.41C21.78,14.05 22,13.55 22,13C22,12.44 21.77,11.94 21.41,11.58Z\"}},[(_vm.title)?_c('title',[_vm._v(_vm._s(_vm.title))]):_vm._e()])])])\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import mod from \"-!../../../../../node_modules/babel-loader/lib/index.js!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./CollectivesIcon.vue?vue&type=script&lang=js\"; export default mod; export * from \"-!../../../../../node_modules/babel-loader/lib/index.js!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./CollectivesIcon.vue?vue&type=script&lang=js\"","\n\n\n\n","import { render, staticRenderFns } from \"./CollectivesIcon.vue?vue&type=template&id=dc7ddfee\"\nimport script from \"./CollectivesIcon.vue?vue&type=script&lang=js\"\nexport * from \"./CollectivesIcon.vue?vue&type=script&lang=js\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n  script,\n  render,\n  staticRenderFns,\n  false,\n  null,\n  null,\n  null\n  \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('span',_vm._b({staticClass:\"material-design-icon collectives-icon\",attrs:{\"aria-hidden\":!_vm.title,\"aria-label\":_vm.title,\"role\":\"img\"},on:{\"click\":function($event){return _vm.$emit('click', $event)}}},'span',_vm.$attrs,false),[_c('svg',{staticClass:\"material-design-icon__svg\",attrs:{\"fill\":_vm.fillColor,\"width\":_vm.size,\"height\":_vm.size,\"viewBox\":\"0 0 16 16\"}},[_c('path',{attrs:{\"d\":\"M2.9,8.8c0-1.2,0.4-2.4,1.2-3.3L0.3,6c-0.2,0-0.3,0.3-0.1,0.4l2.7,2.6C2.9,9,2.9,8.9,2.9,8.8z\"}}),_vm._v(\" \"),_c('path',{attrs:{\"d\":\"M8,3.7c0.7,0,1.3,0.1,1.9,0.4L8.2,0.6c-0.1-0.2-0.3-0.2-0.4,0L6.1,4C6.7,3.8,7.3,3.7,8,3.7z\"}}),_vm._v(\" \"),_c('path',{attrs:{\"d\":\"M3.7,11.5L3,15.2c0,0.2,0.2,0.4,0.4,0.3l3.3-1.7C5.4,13.4,4.4,12.6,3.7,11.5z\"}}),_vm._v(\" \"),_c('path',{attrs:{\"d\":\"M15.7,6l-3.7-0.5c0.7,0.9,1.2,2,1.2,3.3c0,0.1,0,0.2,0,0.3l2.7-2.6C15.9,6.3,15.9,6.1,15.7,6z\"}}),_vm._v(\" \"),_c('path',{attrs:{\"d\":\"M12.3,11.5c-0.7,1.1-1.8,1.9-3,2.2l3.3,1.7c0.2,0.1,0.4-0.1,0.4-0.3L12.3,11.5z\"}}),_vm._v(\" \"),_c('path',{attrs:{\"d\":\"M9.6,10.1c-0.4,0.5-1,0.8-1.6,0.8c-1.1,0-2-0.9-2.1-2C5.9,7.7,6.8,6.7,8,6.7c0.6,0,1.1,0.3,1.5,0.7 c0.1,0.1,0.1,0.1,0.2,0.1h1.4c0.2,0,0.4-0.2,0.3-0.5c-0.7-1.3-2.1-2.2-3.8-2.1C5.8,5,4.3,6.6,4.1,8.5C4,10.8,5.8,12.7,8,12.7 c1.6,0,2.9-0.9,3.5-2.3c0.1-0.2-0.1-0.4-0.3-0.4H9.9C9.8,10,9.7,10,9.6,10.1z\"}})])])\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","var render = function render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return _c('NcIconSvgWrapper',{staticClass:\"favorite-marker-icon\",attrs:{\"name\":_vm.t('files', 'Favorite'),\"svg\":_vm.StarSvg}})\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import mod from \"-!../../../../../node_modules/babel-loader/lib/index.js!../../../../../node_modules/ts-loader/index.js??clonedRuleSet-6.use[1]!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./FavoriteIcon.vue?vue&type=script&lang=ts\"; export default mod; export * from \"-!../../../../../node_modules/babel-loader/lib/index.js!../../../../../node_modules/ts-loader/index.js??clonedRuleSet-6.use[1]!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./FavoriteIcon.vue?vue&type=script&lang=ts\"","\n      import API from \"!../../../../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\";\n      import domAPI from \"!../../../../../node_modules/style-loader/dist/runtime/styleDomAPI.js\";\n      import insertFn from \"!../../../../../node_modules/style-loader/dist/runtime/insertBySelector.js\";\n      import setAttributes from \"!../../../../../node_modules/style-loader/dist/runtime/setAttributesWithoutAttributes.js\";\n      import insertStyleElement from \"!../../../../../node_modules/style-loader/dist/runtime/insertStyleElement.js\";\n      import styleTagTransformFn from \"!../../../../../node_modules/style-loader/dist/runtime/styleTagTransform.js\";\n      import content, * as namedExport from \"!!../../../../../node_modules/css-loader/dist/cjs.js!../../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../../node_modules/sass-loader/dist/cjs.js!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./FavoriteIcon.vue?vue&type=style&index=0&id=4505d262&prod&lang=scss&scoped=true\";\n      \n      \n\nvar options = {};\n\noptions.styleTagTransform = styleTagTransformFn;\noptions.setAttributes = setAttributes;\noptions.insert = insertFn.bind(null, \"head\");\noptions.domAPI = domAPI;\noptions.insertStyleElement = insertStyleElement;\n\nvar update = API(content, options);\n\n\n\nexport * from \"!!../../../../../node_modules/css-loader/dist/cjs.js!../../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../../node_modules/sass-loader/dist/cjs.js!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./FavoriteIcon.vue?vue&type=style&index=0&id=4505d262&prod&lang=scss&scoped=true\";\n       export default content && content.locals ? content.locals : undefined;\n","import { render, staticRenderFns } from \"./FavoriteIcon.vue?vue&type=template&id=4505d262&scoped=true\"\nimport script from \"./FavoriteIcon.vue?vue&type=script&lang=ts\"\nexport * from \"./FavoriteIcon.vue?vue&type=script&lang=ts\"\nimport style0 from \"./FavoriteIcon.vue?vue&type=style&index=0&id=4505d262&prod&lang=scss&scoped=true\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n  script,\n  render,\n  staticRenderFns,\n  false,\n  null,\n  \"4505d262\",\n  null\n  \n)\n\nexport default component.exports","/*!\n * SPDX-FileCopyrightText: 2025 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\nimport { FileType } from '@nextcloud/files';\nimport { generateUrl } from '@nextcloud/router';\nimport { getSharingToken, isPublicShare } from '@nextcloud/sharing/public';\nimport { toValue } from '@vueuse/core';\nimport { computed } from 'vue';\n/**\n * Get the preview URL for a given node.\n *\n * @param node - The node to get the preview for\n * @param options - The preview options\n * @param options.crop - Whether to crop the preview (default: true)\n * @param options.fallback - Whether to use a mime type icon as fallback (default: true)\n * @param options.size - The size of the preview in pixels (default: 128). Can be a number or a tuple [width, height]\n */\nexport function usePreviewImage(node, options = {}) {\n    return computed(() => {\n        const source = toValue(node);\n        if (!source) {\n            return;\n        }\n        if (source.type === FileType.Folder) {\n            return;\n        }\n        const fallback = toValue(options).fallback ?? true;\n        if (source.attributes['has-preview'] !== true\n            && source.mime !== undefined\n            && source.mime !== 'application/octet-stream') {\n            if (!fallback) {\n                return;\n            }\n            const previewUrl = generateUrl('/core/mimeicon?mime={mime}', {\n                mime: source.mime,\n            });\n            const url = new URL(window.location.origin + previewUrl);\n            return url.href;\n        }\n        const crop = toValue(options).crop ?? true;\n        const [sizeX, sizeY] = [toValue(options).size ?? 128].flat();\n        try {\n            const previewUrl = source.attributes.previewUrl\n                || (isPublicShare()\n                    ? generateUrl('/apps/files_sharing/publicpreview/{token}?file={file}', {\n                        token: getSharingToken(),\n                        file: source.path,\n                    })\n                    : generateUrl('/core/preview?fileId={fileid}', {\n                        fileid: String(source.fileid),\n                    }));\n            const url = new URL(window.location.origin + previewUrl);\n            // Request tiny previews\n            url.searchParams.set('x', sizeX.toString());\n            url.searchParams.set('y', (sizeY ?? sizeX).toString());\n            url.searchParams.set('mimeFallback', fallback.toString());\n            // Etag to force refresh preview on change\n            const etag = source.attributes.etag || source.mtime?.getTime() || '';\n            url.searchParams.set('v', etag.slice(0, 6));\n            // Handle cropping\n            url.searchParams.set('a', crop ? '0' : '1');\n            return url.href;\n        }\n        catch {\n            return;\n        }\n    });\n}\n","import { registerDavProperty } from '@nextcloud/files/dav';\n/**\n *\n */\nexport function initLivePhotos() {\n    registerDavProperty('nc:metadata-files-live-photo', { nc: 'http://nextcloud.org/ns' });\n}\n/**\n * @param node - The node\n */\nexport function isLivePhoto(node) {\n    return node.attributes['metadata-files-live-photo'] !== undefined;\n}\n","import mod from \"-!../../../../../node_modules/babel-loader/lib/index.js!../../../../../node_modules/ts-loader/index.js??clonedRuleSet-6.use[1]!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./FileEntryPreview.vue?vue&type=script&lang=ts\"; export default mod; export * from \"-!../../../../../node_modules/babel-loader/lib/index.js!../../../../../node_modules/ts-loader/index.js??clonedRuleSet-6.use[1]!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./FileEntryPreview.vue?vue&type=script&lang=ts\"","import { render, staticRenderFns } from \"./FileEntryPreview.vue?vue&type=template&id=88cf63a4\"\nimport script from \"./FileEntryPreview.vue?vue&type=script&lang=ts\"\nexport * from \"./FileEntryPreview.vue?vue&type=script&lang=ts\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n  script,\n  render,\n  staticRenderFns,\n  false,\n  null,\n  null,\n  null\n  \n)\n\nexport default component.exports","/*!\n * SPDX-FileCopyrightText: 2026 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\nimport { getFileActions, getFilesRegistry } from '@nextcloud/files';\nimport { toValue } from '@vueuse/core';\nimport { computed, readonly, ref } from 'vue';\nconst actions = ref();\n/**\n * Get the registered and sorted file actions.\n */\nexport function useFileActions() {\n    if (!actions.value) {\n        // if not initialized by other component yet, initialize and subscribe to registry changes\n        actions.value = getFileActions();\n        getFilesRegistry().addEventListener('register:action', () => {\n            actions.value = getFileActions();\n        });\n    }\n    return readonly(actions);\n}\n/**\n * Get the enabled file actions for the given context.\n *\n * @param context - The context to check the enabled state of the actions against\n */\nexport function useEnabledFileActions(context) {\n    const actions = useFileActions();\n    return computed(() => actions.value\n        .filter((action) => action.enabled === undefined\n        || action.enabled(toValue(context)))\n        .sort((a, b) => (a.order ?? 0) - (b.order ?? 0)));\n}\n","/*!\n * SPDX-FileCopyrightText: 2024 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\nimport { computed } from 'vue';\nimport { useRoute } from 'vue-router/composables';\n/**\n * Get information about the current route\n */\nexport function useRouteParameters() {\n    const route = useRoute();\n    /**\n     * Get the path of the current active directory\n     */\n    const directory = computed(() => String(route.query.dir || '/')\n        // Remove any trailing slash but leave root slash\n        .replace(/^(.+)\\/$/, '$1'));\n    /**\n     * Get the current fileId used on the route\n     */\n    const fileId = computed(() => {\n        const fileId = Number.parseInt(route.params.fileid ?? '0') || null;\n        return Number.isNaN(fileId) ? null : fileId;\n    });\n    /**\n     * State of `openFile` route param\n     */\n    const openFile = computed(() => 'openfile' in route.query\n        && (typeof route.query.openfile !== 'string'\n            || route.query.openfile.toLocaleLowerCase() !== 'false'));\n    // if `opendetails` is set it is considered truthy, but allow to explicitly set it to 'false'\n    const openDetails = computed(() => 'opendetails' in route.query\n        && (typeof route.query.opendetails !== 'string'\n            || route.query.opendetails.toLocaleLowerCase() !== 'false'));\n    return {\n        /** Path of currently open directory */\n        directory,\n        /** Current active fileId */\n        fileId,\n        /** Should the active node should be opened (`openFile` route param) */\n        openFile,\n        /** Should the details sidebar be shown (`openDetails` route param) */\n        openDetails,\n    };\n}\n","/**\n * SPDX-FileCopyrightText: 2023 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\nimport { defineStore } from 'pinia';\nexport const useActionsMenuStore = defineStore('actionsmenu', {\n    state: () => ({\n        opened: null,\n    }),\n});\n","/*!\n * SPDX-FileCopyrightText: 2023 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\nimport InformationSvg from '@mdi/svg/svg/information-outline.svg?raw';\nimport { getSidebar, Permission } from '@nextcloud/files';\nimport { t } from '@nextcloud/l10n';\nimport { isPublicShare } from '@nextcloud/sharing/public';\nimport logger from '../logger.ts';\nexport const ACTION_DETAILS = 'details';\nexport const action = {\n    id: ACTION_DETAILS,\n    displayName: () => t('files', 'Details'),\n    iconSvgInline: () => InformationSvg,\n    // Sidebar currently supports user folder only, /files/USER\n    enabled: ({ nodes }) => {\n        const node = nodes[0];\n        if (nodes.length !== 1 || !node) {\n            return false;\n        }\n        const sidebar = getSidebar();\n        if (!sidebar.available) {\n            return false;\n        }\n        if (isPublicShare()) {\n            return false;\n        }\n        return node.root.startsWith('/files/') && node.permissions !== Permission.NONE;\n    },\n    async exec({ nodes }) {\n        const sidebar = getSidebar();\n        const [node] = nodes;\n        try {\n            // If the sidebar is already open for the current file, do nothing\n            if (sidebar.node?.source === node.source) {\n                logger.debug('Sidebar already open for this file', { node });\n                return null;\n            }\n            sidebar.open(node, 'sharing');\n            return null;\n        }\n        catch (error) {\n            logger.error('Error while opening sidebar', { error });\n            return false;\n        }\n    },\n    order: -50,\n    hotkey: {\n        key: 'D',\n        description: t('files', 'Open the details sidebar'),\n    },\n};\n","import mod from \"-!../vue-loader/lib/index.js??vue-loader-options!./FileMultiple.vue?vue&type=script&lang=js\"; export default mod; export * from \"-!../vue-loader/lib/index.js??vue-loader-options!./FileMultiple.vue?vue&type=script&lang=js\"","\n\n","import { render, staticRenderFns } from \"./FileMultiple.vue?vue&type=template&id=15fca808\"\nimport script from \"./FileMultiple.vue?vue&type=script&lang=js\"\nexport * from \"./FileMultiple.vue?vue&type=script&lang=js\"\n\n\n/* normalize component */\nimport normalizer from \"!../vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n  script,\n  render,\n  staticRenderFns,\n  false,\n  null,\n  null,\n  null\n  \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('span',_vm._b({staticClass:\"material-design-icon file-multiple-icon\",attrs:{\"aria-hidden\":_vm.title ? null : 'true',\"aria-label\":_vm.title,\"role\":\"img\"},on:{\"click\":function($event){return _vm.$emit('click', $event)}}},'span',_vm.$attrs,false),[_c('svg',{staticClass:\"material-design-icon__svg\",attrs:{\"fill\":_vm.fillColor,\"width\":_vm.size,\"height\":_vm.size,\"viewBox\":\"0 0 24 24\"}},[_c('path',{attrs:{\"d\":\"M15,7H20.5L15,1.5V7M8,0H16L22,6V18A2,2 0 0,1 20,20H8C6.89,20 6,19.1 6,18V2A2,2 0 0,1 8,0M4,4V22H20V24H4A2,2 0 0,1 2,22V4H4Z\"}},[(_vm.title)?_c('title',[_vm._v(_vm._s(_vm.title))]):_vm._e()])])])\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","/**\n * SPDX-FileCopyrightText: 2021 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\nimport { FileType, } from '@nextcloud/files';\nimport { n } from '@nextcloud/l10n';\n/**\n * Extract dir and name from file path\n *\n * @param path - The full path\n * @return [dirPath, fileName]\n */\nexport function extractFilePaths(path) {\n    const pathSections = path.split('/');\n    const fileName = pathSections[pathSections.length - 1];\n    const dirPath = pathSections.slice(0, pathSections.length - 1).join('/');\n    return [dirPath, fileName];\n}\n/**\n * Generate a translated summary of an array of nodes\n *\n * @param nodes - The nodes to summarize\n * @param hidden - The number of hidden nodes\n */\nexport function getSummaryFor(nodes, hidden = 0) {\n    const fileCount = nodes.filter((node) => node.type === FileType.File).length;\n    const folderCount = nodes.filter((node) => node.type === FileType.Folder).length;\n    const summary = [];\n    if (fileCount > 0 || folderCount === 0) {\n        const fileSummary = n('files', '%n file', '%n files', fileCount);\n        summary.push(fileSummary);\n    }\n    if (folderCount > 0) {\n        const folderSummary = n('files', '%n folder', '%n folders', folderCount);\n        summary.push(folderSummary);\n    }\n    if (hidden > 0) {\n        // TRANSLATORS: This is the number of hidden files or folders\n        const hiddenSummary = n('files', '%n hidden', '%n hidden', hidden);\n        summary.push(hiddenSummary);\n    }\n    return summary.join(' · ');\n}\n","var render = function render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return _c('div',{staticClass:\"files-list-drag-image\"},[_c('span',{staticClass:\"files-list-drag-image__icon\"},[_c('span',{ref:\"previewImg\"}),_vm._v(\" \"),(_vm.isSingleFolder)?_c('FolderIcon'):_c('FileMultipleIcon')],1),_vm._v(\" \"),_c('span',{staticClass:\"files-list-drag-image__name\"},[_vm._v(_vm._s(_vm.name))])])\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import mod from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/ts-loader/index.js??clonedRuleSet-6.use[1]!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./DragAndDropPreview.vue?vue&type=script&lang=ts\"; export default mod; export * from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/ts-loader/index.js??clonedRuleSet-6.use[1]!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./DragAndDropPreview.vue?vue&type=script&lang=ts\"","\n      import API from \"!../../../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\";\n      import domAPI from \"!../../../../node_modules/style-loader/dist/runtime/styleDomAPI.js\";\n      import insertFn from \"!../../../../node_modules/style-loader/dist/runtime/insertBySelector.js\";\n      import setAttributes from \"!../../../../node_modules/style-loader/dist/runtime/setAttributesWithoutAttributes.js\";\n      import insertStyleElement from \"!../../../../node_modules/style-loader/dist/runtime/insertStyleElement.js\";\n      import styleTagTransformFn from \"!../../../../node_modules/style-loader/dist/runtime/styleTagTransform.js\";\n      import content, * as namedExport from \"!!../../../../node_modules/css-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/sass-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./DragAndDropPreview.vue?vue&type=style&index=0&id=6c14765c&prod&lang=scss\";\n      \n      \n\nvar options = {};\n\noptions.styleTagTransform = styleTagTransformFn;\noptions.setAttributes = setAttributes;\noptions.insert = insertFn.bind(null, \"head\");\noptions.domAPI = domAPI;\noptions.insertStyleElement = insertStyleElement;\n\nvar update = API(content, options);\n\n\n\nexport * from \"!!../../../../node_modules/css-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/sass-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./DragAndDropPreview.vue?vue&type=style&index=0&id=6c14765c&prod&lang=scss\";\n       export default content && content.locals ? content.locals : undefined;\n","import { render, staticRenderFns } from \"./DragAndDropPreview.vue?vue&type=template&id=6c14765c\"\nimport script from \"./DragAndDropPreview.vue?vue&type=script&lang=ts\"\nexport * from \"./DragAndDropPreview.vue?vue&type=script&lang=ts\"\nimport style0 from \"./DragAndDropPreview.vue?vue&type=style&index=0&id=6c14765c&prod&lang=scss\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n  script,\n  render,\n  staticRenderFns,\n  false,\n  null,\n  null,\n  null\n  \n)\n\nexport default component.exports","import Vue from 'vue';\nimport DragAndDropPreview from '../components/DragAndDropPreview.vue';\nconst Preview = Vue.extend(DragAndDropPreview);\nlet preview;\n/**\n *\n * @param nodes\n */\nexport async function getDragAndDropPreview(nodes) {\n    return new Promise((resolve) => {\n        if (!preview) {\n            preview = new Preview().$mount();\n            document.body.appendChild(preview.$el);\n        }\n        preview.update(nodes);\n        preview.$on('loaded', () => {\n            resolve(preview.$el);\n            preview.$off('loaded');\n        });\n    });\n}\n","/**\n * SPDX-FileCopyrightText: 2024 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\nimport { showError } from '@nextcloud/dialogs';\nimport { FileType, Folder, File as NcFile, Node, NodeStatus, Permission } from '@nextcloud/files';\nimport { t } from '@nextcloud/l10n';\nimport { generateUrl } from '@nextcloud/router';\nimport { isPublicShare } from '@nextcloud/sharing/public';\nimport { vOnClickOutside } from '@vueuse/components';\nimport { extname } from 'path';\nimport Vue, { computed, defineComponent } from 'vue';\nimport { action as sidebarAction } from '../actions/sidebarAction.ts';\nimport logger from '../logger.ts';\nimport { dataTransferToFileTree, onDropExternalFiles, onDropInternalFiles } from '../services/DropService.ts';\nimport { getDragAndDropPreview } from '../utils/dragUtils.ts';\nimport { hashCode } from '../utils/hashUtils.ts';\nimport { isDownloadable } from '../utils/permissions.ts';\nVue.directive('onClickOutside', vOnClickOutside);\nexport default defineComponent({\n    props: {\n        source: {\n            type: [Folder, NcFile, Node],\n            required: true,\n        },\n        nodes: {\n            type: Array,\n            required: true,\n        },\n        isMtimeAvailable: {\n            type: Boolean,\n            default: false,\n        },\n        compact: {\n            type: Boolean,\n            default: false,\n        },\n    },\n    provide() {\n        return {\n            defaultFileAction: computed(() => this.defaultFileAction),\n            enabledFileActions: computed(() => this.enabledFileActions),\n        };\n    },\n    data() {\n        return {\n            dragover: false,\n            gridMode: false,\n        };\n    },\n    computed: {\n        fileid() {\n            return this.source.fileid ?? 0;\n        },\n        uniqueId() {\n            return hashCode(this.source.source);\n        },\n        isLoading() {\n            return this.source.status === NodeStatus.LOADING;\n        },\n        /**\n         * The display name of the current node\n         * Either the nodes filename or a custom display name (e.g. for shares)\n         */\n        displayName() {\n            // basename fallback needed for apps using old `@nextcloud/files` prior 3.6.0\n            return this.source.displayname || this.source.basename;\n        },\n        /**\n         * The display name without extension\n         */\n        basename() {\n            if (this.extension === '') {\n                return this.displayName;\n            }\n            return this.displayName.slice(0, 0 - this.extension.length);\n        },\n        /**\n         * The extension of the file\n         */\n        extension() {\n            if (this.source.type === FileType.Folder) {\n                return '';\n            }\n            return extname(this.displayName);\n        },\n        draggingFiles() {\n            return this.draggingStore.dragging;\n        },\n        selectedFiles() {\n            return this.selectionStore.selected;\n        },\n        isSelected() {\n            return this.selectedFiles.includes(this.source.source);\n        },\n        isRenaming() {\n            return this.renamingStore.renamingNode === this.source;\n        },\n        isRenamingSmallScreen() {\n            return this.isRenaming && this.isNarrow;\n        },\n        isActive() {\n            // Not using activeNode here because we want to\n            // be reactive to the url change directly\n            return String(this.fileid) === String(this.currentRouteFileId);\n        },\n        /**\n         * Check if the source is in a failed state after an API request\n         */\n        isFailedSource() {\n            return this.source.status === NodeStatus.FAILED;\n        },\n        canDrag() {\n            if (this.isRenaming) {\n                return false;\n            }\n            // Ignore if the node is not available\n            if (this.isFailedSource) {\n                return false;\n            }\n            const canDrag = (node) => {\n                return (node?.permissions & Permission.UPDATE) !== 0;\n            };\n            // If we're dragging a selection, we need to check all files\n            if (this.selectedFiles.length > 0) {\n                const nodes = this.selectedFiles.map((source) => this.filesStore.getNode(source));\n                return nodes.every(canDrag);\n            }\n            return canDrag(this.source);\n        },\n        canDrop() {\n            if (this.source.type !== FileType.Folder) {\n                return false;\n            }\n            // Ignore if the node is not available\n            if (this.isFailedSource) {\n                return false;\n            }\n            // If the current folder is also being dragged, we can't drop it on itself\n            if (this.draggingFiles.includes(this.source.source)) {\n                return false;\n            }\n            return (this.source.permissions & Permission.CREATE) !== 0;\n        },\n        openedMenu: {\n            get() {\n                return this.actionsMenuStore.opened === this.uniqueId.toString();\n            },\n            set(opened) {\n                // If the menu is opened on another file entry, we ignore closed events\n                if (opened === false && this.actionsMenuStore.opened !== this.uniqueId.toString()) {\n                    return;\n                }\n                // If opened, we specify the current file id\n                // else we set it to null to close the menu\n                this.actionsMenuStore.opened = opened\n                    ? this.uniqueId.toString()\n                    : null;\n            },\n        },\n        mtime() {\n            // If the mtime is not a valid date, return it as is\n            if (this.source.mtime && !isNaN(this.source.mtime.getDate())) {\n                return this.source.mtime;\n            }\n            if (this.source.crtime && !isNaN(this.source.crtime.getDate())) {\n                return this.source.crtime;\n            }\n            return null;\n        },\n        mtimeOpacity() {\n            if (!this.mtime) {\n                return {};\n            }\n            // The time when we start reducing the opacity\n            const maxOpacityTime = 31 * 24 * 60 * 60 * 1000; // 31 days\n            // everything older than the maxOpacityTime will have the same value\n            const timeDiff = Date.now() - this.mtime.getTime();\n            if (timeDiff < 0) {\n                // this means we have an invalid mtime which is in the future!\n                return {};\n            }\n            // inversed time difference from 0 to maxOpacityTime (which would mean today)\n            const opacityTime = Math.max(0, maxOpacityTime - timeDiff);\n            // 100 = today, 0 = 31 days ago or older\n            const percentage = Math.round(opacityTime * 100 / maxOpacityTime);\n            return {\n                color: `color-mix(in srgb, var(--color-main-text) ${percentage}%, var(--color-text-maxcontrast))`,\n            };\n        },\n        /**\n         * Sorted actions that are enabled for this node\n         */\n        enabledFileActions() {\n            if (this.source.status === NodeStatus.FAILED) {\n                return [];\n            }\n            return this.actions\n                .filter((action) => {\n                if (!action.enabled) {\n                    return true;\n                }\n                // In case something goes wrong, since we don't want to break\n                // the entire list, we filter out actions that throw an error.\n                try {\n                    return action.enabled({\n                        nodes: [this.source],\n                        view: this.activeView,\n                        folder: this.activeFolder,\n                        contents: this.nodes,\n                    });\n                }\n                catch (error) {\n                    logger.error('Error while checking action', { action, error });\n                    return false;\n                }\n            })\n                .sort((a, b) => (a.order || 0) - (b.order || 0));\n        },\n        defaultFileAction() {\n            return this.enabledFileActions.find((action) => action.default !== undefined);\n        },\n    },\n    watch: {\n        /**\n         * When the source changes, reset the preview\n         * and fetch the new one.\n         *\n         * @param newSource The new value of the source prop\n         * @param oldSource The previous value\n         */\n        source(newSource, oldSource) {\n            if (newSource.source !== oldSource.source) {\n                this.resetState();\n            }\n        },\n        openedMenu() {\n            // Checking if the menu is really closed and not\n            // just a change in the open state to another file entry.\n            if (this.actionsMenuStore.opened === null) {\n                // Reset any right menu position potentially set\n                logger.debug('All actions menu closed, resetting right menu position...');\n                const root = this.$el?.closest('main.app-content');\n                if (root !== null) {\n                    root.style.removeProperty('--mouse-pos-x');\n                    root.style.removeProperty('--mouse-pos-y');\n                }\n            }\n        },\n    },\n    beforeDestroy() {\n        this.resetState();\n    },\n    methods: {\n        resetState() {\n            // Reset the preview state\n            this.$refs?.preview?.reset?.();\n            // Close menu\n            this.openedMenu = false;\n        },\n        // Open the actions menu on right click\n        onRightClick(event) {\n            // If already opened, fallback to default browser\n            if (this.openedMenu) {\n                return;\n            }\n            // Ignore right click if the node is not available\n            if (this.isFailedSource) {\n                return;\n            }\n            // The grid mode is compact enough to not care about\n            // the actions menu mouse position\n            if (!this.gridMode) {\n                // Actions menu is contained within the app content\n                const root = this.$el?.closest('main.app-content');\n                const contentRect = root.getBoundingClientRect();\n                // Using Math.min/max to prevent the menu from going out of the AppContent\n                // 200 = max width of the menu\n                logger.debug('Setting actions menu position...');\n                root.style.setProperty('--mouse-pos-x', Math.max(0, event.clientX - contentRect.left - 200) + 'px');\n                root.style.setProperty('--mouse-pos-y', Math.max(0, event.clientY - contentRect.top) + 'px');\n            }\n            else {\n                // Reset any right menu position potentially set\n                const root = this.$el?.closest('main.app-content');\n                root.style.removeProperty('--mouse-pos-x');\n                root.style.removeProperty('--mouse-pos-y');\n            }\n            // If the clicked row is in the selection, open global menu\n            const isMoreThanOneSelected = this.selectedFiles.length > 1;\n            this.actionsMenuStore.opened = this.isSelected && isMoreThanOneSelected ? 'global' : this.uniqueId.toString();\n            // Prevent any browser defaults\n            event.preventDefault();\n            event.stopPropagation();\n        },\n        execDefaultAction(event) {\n            // Ignore click if we are renaming\n            if (this.isRenaming) {\n                return;\n            }\n            // Ignore right click (button & 2) and any auxiliary button expect mouse-wheel (button & 4)\n            if (Boolean(event.button & 2) || event.button > 4) {\n                return;\n            }\n            // Ignore if the node is not available\n            if (this.isFailedSource) {\n                return;\n            }\n            // if ctrl+click / cmd+click (MacOS uses the meta key) or middle mouse button (button & 4), open in new tab\n            // also if there is no default action use this as a fallback\n            const metaKeyPressed = event.ctrlKey || event.metaKey || event.button === 1;\n            if (metaKeyPressed || !this.defaultFileAction) {\n                // If no download permission, then we can not allow to download (direct link) the files\n                if (!isDownloadable(this.source)) {\n                    return;\n                }\n                const url = isPublicShare()\n                    ? this.source.encodedSource\n                    : generateUrl('/f/{fileId}', { fileId: this.fileid });\n                event.preventDefault();\n                event.stopPropagation();\n                // Open the file in a new tab if the meta key or the middle mouse button is clicked\n                window.open(url, metaKeyPressed ? '_blank' : '_self');\n                return;\n            }\n            // every special case handled so just execute the default action\n            event.preventDefault();\n            event.stopPropagation();\n            // Execute the first default action if any\n            this.defaultFileAction.exec({\n                nodes: [this.source],\n                folder: this.activeFolder,\n                contents: this.nodes,\n                view: this.activeView,\n            });\n        },\n        openDetailsIfAvailable(event) {\n            event.preventDefault();\n            event.stopPropagation();\n            if (sidebarAction?.enabled?.({\n                nodes: [this.source],\n                folder: this.activeFolder,\n                contents: this.nodes,\n                view: this.activeView,\n            })) {\n                sidebarAction.exec({\n                    nodes: [this.source],\n                    folder: this.activeFolder,\n                    contents: this.nodes,\n                    view: this.activeView,\n                });\n            }\n        },\n        onDragOver(event) {\n            this.dragover = this.canDrop;\n            if (!this.canDrop) {\n                event.dataTransfer.dropEffect = 'none';\n                return;\n            }\n            // Handle copy/move drag and drop\n            if (event.ctrlKey) {\n                event.dataTransfer.dropEffect = 'copy';\n            }\n            else {\n                event.dataTransfer.dropEffect = 'move';\n            }\n        },\n        onDragLeave(event) {\n            // Counter bubbling, make sure we're ending the drag\n            // only when we're leaving the current element\n            const currentTarget = event.currentTarget;\n            if (currentTarget?.contains(event.relatedTarget)) {\n                return;\n            }\n            this.dragover = false;\n        },\n        async onDragStart(event) {\n            event.stopPropagation();\n            if (!this.canDrag || !this.fileid) {\n                event.preventDefault();\n                event.stopPropagation();\n                return;\n            }\n            logger.debug('Drag started', { event });\n            // Make sure that we're not dragging a file like the preview\n            event.dataTransfer?.clearData?.();\n            // Reset any renaming\n            this.renamingStore.$reset();\n            // Dragging set of files, if we're dragging a file\n            // that is already selected, we use the entire selection\n            if (this.selectedFiles.includes(this.source.source)) {\n                this.draggingStore.set(this.selectedFiles);\n            }\n            else {\n                this.draggingStore.set([this.source.source]);\n            }\n            const nodes = this.draggingStore.dragging\n                .map((source) => this.filesStore.getNode(source));\n            const image = await getDragAndDropPreview(nodes);\n            event.dataTransfer?.setDragImage(image, -10, -10);\n        },\n        onDragEnd() {\n            this.draggingStore.reset();\n            this.dragover = false;\n            logger.debug('Drag ended');\n        },\n        async onDrop(event) {\n            // skip if native drop like text drag and drop from files names\n            if (!this.draggingFiles && !event.dataTransfer?.items?.length) {\n                return;\n            }\n            event.preventDefault();\n            event.stopPropagation();\n            // Caching the selection\n            const selection = this.draggingFiles;\n            const items = [...event.dataTransfer?.items || []];\n            // We need to process the dataTransfer ASAP before the\n            // browser clears it. This is why we cache the items too.\n            const fileTree = await dataTransferToFileTree(items);\n            // We might not have the target directory fetched yet\n            const contents = await this.activeView?.getContents(this.source.path);\n            const folder = contents?.folder;\n            if (!folder) {\n                showError(this.t('files', 'Target folder does not exist any more'));\n                return;\n            }\n            // If another button is pressed, cancel it. This\n            // allows cancelling the drag with the right click.\n            if (!this.canDrop || event.button) {\n                return;\n            }\n            const isCopy = event.ctrlKey;\n            this.dragover = false;\n            logger.debug('Dropped', { event, folder, selection, fileTree });\n            // Check whether we're uploading files\n            if (selection.length === 0 && fileTree.contents.length > 0) {\n                await onDropExternalFiles(fileTree, folder, contents.contents);\n                return;\n            }\n            // Else we're moving/copying files\n            const nodes = selection.map((source) => this.filesStore.getNode(source));\n            await onDropInternalFiles(nodes, folder, contents.contents, isCopy);\n            // Reset selection after we dropped the files\n            // if the dropped files are within the selection\n            if (selection.some((source) => this.selectedFiles.includes(source))) {\n                logger.debug('Dropped selection, resetting select store...');\n                this.selectionStore.reset();\n            }\n        },\n        t,\n    },\n});\n","/**\n * SPDX-FileCopyrightText: 2023 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\n/**\n * Simple non-secure hashing function similar to Java's `hashCode`\n *\n * @param str The string to hash\n * @return a non secure hash of the string\n */\nexport function hashCode(str) {\n    let hash = 0;\n    for (let i = 0; i < str.length; i++) {\n        hash = ((hash << 5) - hash + str.charCodeAt(i)) | 0;\n    }\n    return (hash >>> 0);\n}\n","/*!\n * SPDX-FileCopyrightText: 2024 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\nimport { Permission } from '@nextcloud/files';\n/**\n * Check permissions on the node if it can be downloaded\n *\n * @param node The node to check\n * @return True if downloadable, false otherwise\n */\nexport function isDownloadable(node) {\n    if ((node.permissions & Permission.READ) === 0) {\n        return false;\n    }\n    // check hide-download property of shares\n    if (node.attributes['hide-download'] === true\n        || node.attributes['hide-download'] === 'true') {\n        return false;\n    }\n    // If the mount type is a share, ensure it got download permissions.\n    if (node.attributes['share-attributes']) {\n        const shareAttributes = JSON.parse(node.attributes['share-attributes'] || '[]');\n        const downloadAttribute = shareAttributes.find(({ scope, key }) => scope === 'permissions' && key === 'download');\n        if (downloadAttribute !== undefined) {\n            return downloadAttribute.value === true;\n        }\n    }\n    return true;\n}\n/**\n * Check permissions on the node if it can be synced/open locally\n *\n * @param node The node to check\n * @return True if syncable, false otherwise\n */\nexport function isSyncable(node) {\n    if (!node.isDavResource) {\n        return false;\n    }\n    if ((node.permissions & Permission.WRITE) === 0) {\n        return false;\n    }\n    // Syncable has the same permissions as downloadable for now\n    return isDownloadable(node);\n}\n","var render = function render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return _c('tr',_vm._g({staticClass:\"files-list__row\",class:{\n\t\t'files-list__row--dragover': _vm.dragover,\n\t\t'files-list__row--loading': _vm.isLoading,\n\t\t'files-list__row--active': _vm.isActive,\n\t},attrs:{\"data-cy-files-list-row\":\"\",\"data-cy-files-list-row-fileid\":_vm.fileid,\"data-cy-files-list-row-name\":_vm.source.basename,\"draggable\":_vm.canDrag}},_vm.rowListeners),[(_vm.isFailedSource)?_c('span',{staticClass:\"files-list__row--failed\"}):_vm._e(),_vm._v(\" \"),_c('FileEntryCheckbox',{attrs:{\"fileid\":_vm.fileid,\"is-loading\":_vm.isLoading,\"nodes\":_vm.nodes,\"source\":_vm.source}}),_vm._v(\" \"),_c('td',{staticClass:\"files-list__row-name\",attrs:{\"data-cy-files-list-row-name\":\"\"}},[_c('FileEntryPreview',{ref:\"preview\",attrs:{\"source\":_vm.source,\"dragover\":_vm.dragover},nativeOn:{\"auxclick\":function($event){return _vm.execDefaultAction.apply(null, arguments)},\"click\":function($event){return _vm.execDefaultAction.apply(null, arguments)}}}),_vm._v(\" \"),_c('FileEntryName',{ref:\"name\",attrs:{\"basename\":_vm.basename,\"extension\":_vm.extension,\"source\":_vm.source},nativeOn:{\"auxclick\":function($event){return _vm.execDefaultAction.apply(null, arguments)},\"click\":function($event){return _vm.execDefaultAction.apply(null, arguments)}}})],1),_vm._v(\" \"),_c('FileEntryActions',{directives:[{name:\"show\",rawName:\"v-show\",value:(!_vm.isRenamingSmallScreen),expression:\"!isRenamingSmallScreen\"}],ref:\"actions\",class:`files-list__row-actions-${_vm.uniqueId}`,attrs:{\"opened\":_vm.openedMenu,\"source\":_vm.source},on:{\"update:opened\":function($event){_vm.openedMenu=$event}}}),_vm._v(\" \"),(_vm.isMimeAvailable)?_c('td',{staticClass:\"files-list__row-mime\",attrs:{\"title\":_vm.mime,\"data-cy-files-list-row-mime\":\"\"},on:{\"click\":_vm.openDetailsIfAvailable}},[_c('span',[_vm._v(_vm._s(_vm.mime))])]):_vm._e(),_vm._v(\" \"),(!_vm.compact && _vm.isSizeAvailable)?_c('td',{staticClass:\"files-list__row-size\",style:(_vm.sizeOpacity),attrs:{\"data-cy-files-list-row-size\":\"\"},on:{\"click\":_vm.openDetailsIfAvailable}},[_c('span',[_vm._v(_vm._s(_vm.size))])]):_vm._e(),_vm._v(\" \"),(!_vm.compact && _vm.isMtimeAvailable)?_c('td',{staticClass:\"files-list__row-mtime\",style:(_vm.mtimeOpacity),attrs:{\"data-cy-files-list-row-mtime\":\"\"},on:{\"click\":_vm.openDetailsIfAvailable}},[(_vm.mtime)?_c('NcDateTime',{attrs:{\"ignore-seconds\":\"\",\"timestamp\":_vm.mtime}}):_c('span',[_vm._v(_vm._s(_vm.t('files', 'Unknown date')))])],1):_vm._e(),_vm._v(\" \"),_vm._l((_vm.columns),function(column){return _c('td',{key:column.id,staticClass:\"files-list__row-column-custom\",class:`files-list__row-${_vm.activeView.id}-${column.id}`,attrs:{\"data-cy-files-list-row-column-custom\":column.id},on:{\"click\":_vm.openDetailsIfAvailable}},[_c('CustomElementRender',{attrs:{\"active-folder\":_vm.activeFolder,\"active-view\":_vm.activeView,\"render\":column.render,\"source\":_vm.source}})],1)})],2)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import mod from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/ts-loader/index.js??clonedRuleSet-6.use[1]!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./FileEntry.vue?vue&type=script&lang=ts\"; export default mod; export * from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/ts-loader/index.js??clonedRuleSet-6.use[1]!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./FileEntry.vue?vue&type=script&lang=ts\"","import { render, staticRenderFns } from \"./FileEntry.vue?vue&type=template&id=4f64df34\"\nimport script from \"./FileEntry.vue?vue&type=script&lang=ts\"\nexport * from \"./FileEntry.vue?vue&type=script&lang=ts\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n  script,\n  render,\n  staticRenderFns,\n  false,\n  null,\n  null,\n  null\n  \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return _c('tr',{staticClass:\"files-list__row\",class:{ 'files-list__row--active': _vm.isActive, 'files-list__row--dragover': _vm.dragover, 'files-list__row--loading': _vm.isLoading },attrs:{\"data-cy-files-list-row\":\"\",\"data-cy-files-list-row-fileid\":_vm.fileid,\"data-cy-files-list-row-name\":_vm.source.basename,\"draggable\":_vm.canDrag},on:{\"contextmenu\":_vm.onRightClick,\"dragover\":_vm.onDragOver,\"dragleave\":_vm.onDragLeave,\"dragstart\":_vm.onDragStart,\"dragend\":_vm.onDragEnd,\"drop\":_vm.onDrop}},[(_vm.isFailedSource)?_c('span',{staticClass:\"files-list__row--failed\"}):_vm._e(),_vm._v(\" \"),_c('FileEntryCheckbox',{attrs:{\"fileid\":_vm.fileid,\"is-loading\":_vm.isLoading,\"nodes\":_vm.nodes,\"source\":_vm.source}}),_vm._v(\" \"),_c('td',{staticClass:\"files-list__row-name\",attrs:{\"data-cy-files-list-row-name\":\"\"}},[_c('FileEntryPreview',{ref:\"preview\",attrs:{\"dragover\":_vm.dragover,\"grid-mode\":true,\"source\":_vm.source},nativeOn:{\"auxclick\":function($event){return _vm.execDefaultAction.apply(null, arguments)},\"click\":function($event){return _vm.execDefaultAction.apply(null, arguments)}}}),_vm._v(\" \"),_c('FileEntryName',{ref:\"name\",attrs:{\"basename\":_vm.basename,\"extension\":_vm.extension,\"source\":_vm.source},nativeOn:{\"auxclick\":function($event){return _vm.execDefaultAction.apply(null, arguments)},\"click\":function($event){return _vm.execDefaultAction.apply(null, arguments)}}})],1),_vm._v(\" \"),(!_vm.compact && _vm.isMtimeAvailable)?_c('td',{staticClass:\"files-list__row-mtime\",style:(_vm.mtimeOpacity),attrs:{\"data-cy-files-list-row-mtime\":\"\"},on:{\"click\":_vm.openDetailsIfAvailable}},[(_vm.mtime)?_c('NcDateTime',{attrs:{\"ignore-seconds\":\"\",\"timestamp\":_vm.mtime}}):_vm._e()],1):_vm._e(),_vm._v(\" \"),_c('FileEntryActions',{ref:\"actions\",class:`files-list__row-actions-${_vm.uniqueId}`,attrs:{\"opened\":_vm.openedMenu,\"grid-mode\":true,\"source\":_vm.source},on:{\"update:opened\":function($event){_vm.openedMenu=$event}}})],1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import mod from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/ts-loader/index.js??clonedRuleSet-6.use[1]!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./FileEntryGrid.vue?vue&type=script&lang=ts\"; export default mod; export * from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/ts-loader/index.js??clonedRuleSet-6.use[1]!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./FileEntryGrid.vue?vue&type=script&lang=ts\"","import { render, staticRenderFns } from \"./FileEntryGrid.vue?vue&type=template&id=c13970d8\"\nimport script from \"./FileEntryGrid.vue?vue&type=script&lang=ts\"\nexport * from \"./FileEntryGrid.vue?vue&type=script&lang=ts\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n  script,\n  render,\n  staticRenderFns,\n  false,\n  null,\n  null,\n  null\n  \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return (_setup.activeChips.length > 0)?_c('ul',{class:_vm.$style.fileListFilterChips,attrs:{\"aria-label\":_setup.t('files', 'Active filters')}},_vm._l((_setup.activeChips),function(chip,index){return _c('li',{key:index},[_c(_setup.NcChip,{attrs:{\"aria-label-close\":_setup.t('files', 'Remove filter'),\"icon-svg\":chip.icon,\"text\":chip.text},on:{\"close\":chip.onclick},scopedSlots:_vm._u([(chip.user)?{key:\"icon\",fn:function(){return [_c(_setup.NcAvatar,{attrs:{\"disable-menu\":\"\",\"hide-status\":\"\",\"size\":24,\"user\":chip.user}})]},proxy:true}:null],null,true)})],1)}),0):_vm._e()\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n      import API from \"!../../../../style-loader/dist/runtime/injectStylesIntoStyleTag.js\";\n      import domAPI from \"!../../../../style-loader/dist/runtime/styleDomAPI.js\";\n      import insertFn from \"!../../../../style-loader/dist/runtime/insertBySelector.js\";\n      import setAttributes from \"!../../../../style-loader/dist/runtime/setAttributesWithoutAttributes.js\";\n      import insertStyleElement from \"!../../../../style-loader/dist/runtime/insertStyleElement.js\";\n      import styleTagTransformFn from \"!../../../../style-loader/dist/runtime/styleTagTransform.js\";\n      import content, * as namedExport from \"!!../../../../css-loader/dist/cjs.js!./NcChip-DLfUzq07.css\";\n      \n      \n\nvar options = {};\n\noptions.styleTagTransform = styleTagTransformFn;\noptions.setAttributes = setAttributes;\noptions.insert = insertFn.bind(null, \"head\");\noptions.domAPI = domAPI;\noptions.insertStyleElement = insertStyleElement;\n\nvar update = API(content, options);\n\n\n\nexport * from \"!!../../../../css-loader/dist/cjs.js!./NcChip-DLfUzq07.css\";\n       export default content && content.locals ? content.locals : undefined;\n","import '../assets/NcChip-DLfUzq07.css';\nimport { c as mdiClose } from \"../chunks/mdi-DkJglNiS.mjs\";\nimport { useSlots, computed } from \"vue\";\nimport { N as NcActionButton } from \"../chunks/NcActionButton-1gSJfFUC.mjs\";\nimport { N as NcActions } from \"../chunks/NcActions-B7LKaVy0.mjs\";\nimport { N as NcIconSvgWrapper } from \"../chunks/NcIconSvgWrapper-Bui9PhAS.mjs\";\nimport { r as register, m as t18, a as t } from \"../chunks/_l10n-Dpecfv0B.mjs\";\nimport { n as normalizeComponent } from \"../chunks/_plugin-vue2_normalizer-DU4iP6Vu.mjs\";\nregister(t18);\nconst _sfc_main = {\n  __name: \"NcChip\",\n  props: {\n    /**\n     * aria label to set on the close button\n     *\n     * @default 'Close'\n     */\n    ariaLabelClose: {\n      type: String,\n      default: t(\"Close\")\n    },\n    /**\n     * Container for the actions\n     */\n    actionsContainer: {\n      type: String,\n      default: \"body\"\n    },\n    /**\n     * Main text of the chip.\n     */\n    text: {\n      type: String,\n      default: \"\"\n    },\n    /**\n     * Set the chips design variant-\n     *\n     * This sets the background style of the chip, similar to NcButton's `variant`.\n     *\n     * @deprecated will be removed with v9 - use `variant` instead.\n     */\n    type: {\n      type: String,\n      default: \"secondary\",\n      validator: (value) => [\"primary\", \"secondary\", \"tertiary\", \"error\", \"warning\", \"success\"].includes(value)\n    },\n    /**\n     * SVG path of the icon to use, this takes precedence over `iconSVG`.\n     * For example icon paths from `@mdi/js` can be used.\n     */\n    iconPath: {\n      type: String,\n      default: null\n    },\n    /**\n     * Inline SVG to use as the icon\n     */\n    iconSvg: {\n      type: String,\n      default: null\n    },\n    /**\n     * Set to true to prevent the close button to be shown\n     */\n    noClose: {\n      type: Boolean,\n      default: false\n    },\n    /**\n     * Set the chips design variant-\n     *\n     * This sets the background style of the chip, similar to NcButton's `variant`.\n     *\n     * @since 8.24.0\n     */\n    variant: {\n      type: String,\n      default: \"secondary\",\n      validator: (value) => [\"primary\", \"secondary\", \"tertiary\", \"error\", \"warning\", \"success\"].includes(value)\n    }\n  },\n  emits: [\"close\"],\n  setup(__props, { emit }) {\n    const props = __props;\n    const slots = useSlots();\n    const realVariant = computed(() => props.type !== \"secondary\" ? props.type : props.variant);\n    const canClose = computed(() => !props.noClose);\n    const hasActions = () => Boolean(slots.actions?.());\n    const hasIcon = () => Boolean(props.iconPath || props.iconSvg || !!slots.icon?.());\n    return { __sfc: true, props, emit, slots, realVariant, canClose, hasActions, hasIcon, mdiClose, NcActionButton, NcActions, NcIconSvgWrapper };\n  }\n};\nvar _sfc_render = function render() {\n  var _vm = this, _c = _vm._self._c, _setup = _vm._self._setupProxy;\n  return _c(\"div\", { staticClass: \"nc-chip\", class: {\n    [`nc-chip--${_setup.realVariant}`]: true,\n    \"nc-chip--no-actions\": _vm.noClose && !_setup.hasActions(),\n    \"nc-chip--no-icon\": !_setup.hasIcon()\n  } }, [_setup.hasIcon() ? _c(\"span\", { staticClass: \"nc-chip__icon\" }, [_vm._t(\"icon\", function() {\n    return [_vm.iconPath || _vm.iconSvg ? _c(_setup.NcIconSvgWrapper, { attrs: { \"inline\": \"\", \"path\": _vm.iconPath, \"svg\": _vm.iconPath ? void 0 : _vm.iconSvg, \"size\": 18 } }) : _vm._e()];\n  })], 2) : _vm._e(), _c(\"span\", { staticClass: \"nc-chip__text\" }, [_vm._t(\"default\", function() {\n    return [_vm._v(_vm._s(_vm.text))];\n  })], 2), _setup.canClose || _setup.hasActions() ? _c(_setup.NcActions, { staticClass: \"nc-chip__actions\", attrs: { \"container\": _vm.actionsContainer, \"force-menu\": !_setup.canClose, \"variant\": \"tertiary-no-background\" } }, [_setup.canClose ? _c(_setup.NcActionButton, { attrs: { \"close-after-click\": \"\" }, on: { \"click\": function($event) {\n    return _setup.emit(\"close\");\n  } }, scopedSlots: _vm._u([{ key: \"icon\", fn: function() {\n    return [_c(_setup.NcIconSvgWrapper, { attrs: { \"path\": _setup.mdiClose, \"size\": 20 } })];\n  }, proxy: true }], null, false, 2547223506) }, [_vm._v(\" \" + _vm._s(_vm.ariaLabelClose) + \" \")]) : _vm._e(), _vm._t(\"actions\")], 2) : _vm._e()], 1);\n};\nvar _sfc_staticRenderFns = [];\nvar __component__ = /* @__PURE__ */ normalizeComponent(\n  _sfc_main,\n  _sfc_render,\n  _sfc_staticRenderFns,\n  false,\n  null,\n  \"c8e429a5\"\n);\nconst NcChip = __component__.exports;\nexport {\n  NcChip as default\n};\n//# sourceMappingURL=NcChip.mjs.map\n","import mod from \"-!../../../../../node_modules/babel-loader/lib/index.js!../../../../../node_modules/ts-loader/index.js??clonedRuleSet-6.use[1]!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./FileListFilterChips.vue?vue&type=script&setup=true&lang=ts\"; export default mod; export * from \"-!../../../../../node_modules/babel-loader/lib/index.js!../../../../../node_modules/ts-loader/index.js??clonedRuleSet-6.use[1]!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./FileListFilterChips.vue?vue&type=script&setup=true&lang=ts\"","\n      import API from \"!../../../../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\";\n      import domAPI from \"!../../../../../node_modules/style-loader/dist/runtime/styleDomAPI.js\";\n      import insertFn from \"!../../../../../node_modules/style-loader/dist/runtime/insertBySelector.js\";\n      import setAttributes from \"!../../../../../node_modules/style-loader/dist/runtime/setAttributesWithoutAttributes.js\";\n      import insertStyleElement from \"!../../../../../node_modules/style-loader/dist/runtime/insertStyleElement.js\";\n      import styleTagTransformFn from \"!../../../../../node_modules/style-loader/dist/runtime/styleTagTransform.js\";\n      import content, * as namedExport from \"!!../../../../../node_modules/css-loader/dist/cjs.js??clonedRuleSet-3.use[1]!../../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./FileListFilterChips.vue?vue&type=style&index=0&id=690b69f8&prod&module=true&lang=css\";\n      \n      \n\nvar options = {};\n\noptions.styleTagTransform = styleTagTransformFn;\noptions.setAttributes = setAttributes;\noptions.insert = insertFn.bind(null, \"head\");\noptions.domAPI = domAPI;\noptions.insertStyleElement = insertStyleElement;\n\nvar update = API(content, options);\n\n\n\nexport * from \"!!../../../../../node_modules/css-loader/dist/cjs.js??clonedRuleSet-3.use[1]!../../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./FileListFilterChips.vue?vue&type=style&index=0&id=690b69f8&prod&module=true&lang=css\";\n       export default content && content.locals ? content.locals : undefined;\n","import { render, staticRenderFns } from \"./FileListFilterChips.vue?vue&type=template&id=690b69f8\"\nimport script from \"./FileListFilterChips.vue?vue&type=script&setup=true&lang=ts\"\nexport * from \"./FileListFilterChips.vue?vue&type=script&setup=true&lang=ts\"\nimport style0 from \"./FileListFilterChips.vue?vue&type=style&index=0&id=690b69f8&prod&module=true&lang=css\"\n\n\n\n\nfunction injectStyles (context) {\n  \n  this[\"$style\"] = (style0.locals || style0)\n\n}\n\n/* normalize component */\nimport normalizer from \"!../../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n  script,\n  render,\n  staticRenderFns,\n  false,\n  injectStyles,\n  null,\n  null\n  \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return (_setup.isVisible)?_c(_setup.NcButton,{attrs:{\"size\":\"small\"},on:{\"click\":_setup.onClick}},[_vm._v(\"\\n\\t\"+_vm._s(_setup.t('files', 'Search everywhere'))+\"\\n\")]):_vm._e()\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import mod from \"-!../../../../../node_modules/babel-loader/lib/index.js!../../../../../node_modules/ts-loader/index.js??clonedRuleSet-6.use[1]!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./FileListFilterToSearch.vue?vue&type=script&setup=true&lang=ts\"; export default mod; export * from \"-!../../../../../node_modules/babel-loader/lib/index.js!../../../../../node_modules/ts-loader/index.js??clonedRuleSet-6.use[1]!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./FileListFilterToSearch.vue?vue&type=script&setup=true&lang=ts\"","import { render, staticRenderFns } from \"./FileListFilterToSearch.vue?vue&type=template&id=f1a11948\"\nimport script from \"./FileListFilterToSearch.vue?vue&type=script&setup=true&lang=ts\"\nexport * from \"./FileListFilterToSearch.vue?vue&type=script&setup=true&lang=ts\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n  script,\n  render,\n  staticRenderFns,\n  false,\n  null,\n  null,\n  null\n  \n)\n\nexport default component.exports","import mod from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/ts-loader/index.js??clonedRuleSet-6.use[1]!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./FilesListHeader.vue?vue&type=script&lang=ts\"; export default mod; export * from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/ts-loader/index.js??clonedRuleSet-6.use[1]!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./FilesListHeader.vue?vue&type=script&lang=ts\"","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('div',{directives:[{name:\"show\",rawName:\"v-show\",value:(_vm.enabled),expression:\"enabled\"}],class:`files-list__header-${_vm.header.id}`},[_c('span',{ref:\"mount\"})])\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import { render, staticRenderFns } from \"./FilesListHeader.vue?vue&type=template&id=272fbca3\"\nimport script from \"./FilesListHeader.vue?vue&type=script&lang=ts\"\nexport * from \"./FilesListHeader.vue?vue&type=script&lang=ts\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n  script,\n  render,\n  staticRenderFns,\n  false,\n  null,\n  null,\n  null\n  \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return _c('tr',[_c('th',{staticClass:\"files-list__row-checkbox\"},[_c('span',{staticClass:\"hidden-visually\"},[_vm._v(_vm._s(_setup.t('files', 'Total rows summary')))])]),_vm._v(\" \"),_c('td',{staticClass:\"files-list__row-name\"},[_c('span',{staticClass:\"files-list__row-icon\"}),_vm._v(\" \"),_c('span',[_vm._v(_vm._s(_vm.summary))])]),_vm._v(\" \"),_c('td',{staticClass:\"files-list__row-actions\"}),_vm._v(\" \"),(_vm.isMimeAvailable)?_c('td',{staticClass:\"files-list__column files-list__row-mime\"}):_vm._e(),_vm._v(\" \"),(_vm.isSizeAvailable)?_c('td',{staticClass:\"files-list__column files-list__row-size\"},[_c('span',[_vm._v(_vm._s(_setup.totalSize))])]):_vm._e(),_vm._v(\" \"),(_vm.isMtimeAvailable)?_c('td',{staticClass:\"files-list__column files-list__row-mtime\"}):_vm._e(),_vm._v(\" \"),_vm._l((_setup.columns),function(column){return _c('th',{key:column.id,class:_setup.classForColumn(column)},[_c('span',[_vm._v(_vm._s(column.summary?.(_vm.nodes, _vm.currentView)))])])})],2)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import mod from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/ts-loader/index.js??clonedRuleSet-6.use[1]!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./FilesListTableFooter.vue?vue&type=script&setup=true&lang=ts\"; export default mod; export * from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/ts-loader/index.js??clonedRuleSet-6.use[1]!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./FilesListTableFooter.vue?vue&type=script&setup=true&lang=ts\"","\n      import API from \"!../../../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\";\n      import domAPI from \"!../../../../node_modules/style-loader/dist/runtime/styleDomAPI.js\";\n      import insertFn from \"!../../../../node_modules/style-loader/dist/runtime/insertBySelector.js\";\n      import setAttributes from \"!../../../../node_modules/style-loader/dist/runtime/setAttributesWithoutAttributes.js\";\n      import insertStyleElement from \"!../../../../node_modules/style-loader/dist/runtime/insertStyleElement.js\";\n      import styleTagTransformFn from \"!../../../../node_modules/style-loader/dist/runtime/styleTagTransform.js\";\n      import content, * as namedExport from \"!!../../../../node_modules/css-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/sass-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./FilesListTableFooter.vue?vue&type=style&index=0&id=378a6e4a&prod&scoped=true&lang=scss\";\n      \n      \n\nvar options = {};\n\noptions.styleTagTransform = styleTagTransformFn;\noptions.setAttributes = setAttributes;\noptions.insert = insertFn.bind(null, \"head\");\noptions.domAPI = domAPI;\noptions.insertStyleElement = insertStyleElement;\n\nvar update = API(content, options);\n\n\n\nexport * from \"!!../../../../node_modules/css-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/sass-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./FilesListTableFooter.vue?vue&type=style&index=0&id=378a6e4a&prod&scoped=true&lang=scss\";\n       export default content && content.locals ? content.locals : undefined;\n","import { render, staticRenderFns } from \"./FilesListTableFooter.vue?vue&type=template&id=378a6e4a&scoped=true\"\nimport script from \"./FilesListTableFooter.vue?vue&type=script&setup=true&lang=ts\"\nexport * from \"./FilesListTableFooter.vue?vue&type=script&setup=true&lang=ts\"\nimport style0 from \"./FilesListTableFooter.vue?vue&type=style&index=0&id=378a6e4a&prod&scoped=true&lang=scss\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n  script,\n  render,\n  staticRenderFns,\n  false,\n  null,\n  \"378a6e4a\",\n  null\n  \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return _c('tr',{staticClass:\"files-list__row-head\"},[_c('th',{staticClass:\"files-list__column files-list__row-checkbox\",on:{\"keyup\":function($event){if(!$event.type.indexOf('key')&&_vm._k($event.keyCode,\"esc\",27,$event.key,[\"Esc\",\"Escape\"]))return null;if($event.ctrlKey||$event.shiftKey||$event.altKey||$event.metaKey)return null;return _vm.resetSelection.apply(null, arguments)}}},[_c('NcCheckboxRadioSwitch',_vm._b({attrs:{\"data-cy-files-list-selection-checkbox\":\"\"},on:{\"update:model-value\":_vm.onToggleAll}},'NcCheckboxRadioSwitch',_vm.selectAllBind,false))],1),_vm._v(\" \"),_c('th',{staticClass:\"files-list__column files-list__row-name files-list__column--sortable\",attrs:{\"aria-sort\":_vm.ariaSortForMode('basename')}},[_c('span',{staticClass:\"files-list__row-icon\"}),_vm._v(\" \"),_c('FilesListTableHeaderButton',{attrs:{\"name\":_vm.t('files', 'Name'),\"mode\":\"basename\"}})],1),_vm._v(\" \"),_c('th',{staticClass:\"files-list__row-actions\"}),_vm._v(\" \"),(_vm.isMimeAvailable)?_c('th',{staticClass:\"files-list__column files-list__row-mime\",class:{ 'files-list__column--sortable': _vm.isMimeAvailable },attrs:{\"aria-sort\":_vm.ariaSortForMode('mime')}},[_c('FilesListTableHeaderButton',{attrs:{\"name\":_vm.t('files', 'File type'),\"mode\":\"mime\"}})],1):_vm._e(),_vm._v(\" \"),(_vm.isSizeAvailable)?_c('th',{staticClass:\"files-list__column files-list__row-size\",class:{ 'files-list__column--sortable': _vm.isSizeAvailable },attrs:{\"aria-sort\":_vm.ariaSortForMode('size')}},[_c('FilesListTableHeaderButton',{attrs:{\"name\":_vm.t('files', 'Size'),\"mode\":\"size\"}})],1):_vm._e(),_vm._v(\" \"),(_vm.isMtimeAvailable)?_c('th',{staticClass:\"files-list__column files-list__row-mtime\",class:{ 'files-list__column--sortable': _vm.isMtimeAvailable },attrs:{\"aria-sort\":_vm.ariaSortForMode('mtime')}},[_c('FilesListTableHeaderButton',{attrs:{\"name\":_vm.t('files', 'Modified'),\"mode\":\"mtime\"}})],1):_vm._e(),_vm._v(\" \"),_vm._l((_vm.columns),function(column){return _c('th',{key:column.id,class:_vm.classForColumn(column),attrs:{\"aria-sort\":_vm.ariaSortForMode(column.id)}},[(!!column.sort)?_c('FilesListTableHeaderButton',{attrs:{\"name\":column.title,\"mode\":column.id}}):_c('span',[_vm._v(\"\\n\\t\\t\\t\"+_vm._s(column.title)+\"\\n\\t\\t\")])],1)})],2)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","/**\n * SPDX-FileCopyrightText: 2023 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\nimport { getCurrentUser } from '@nextcloud/auth';\nimport axios from '@nextcloud/axios';\nimport { emit, subscribe } from '@nextcloud/event-bus';\nimport { loadState } from '@nextcloud/initial-state';\nimport { generateUrl } from '@nextcloud/router';\nimport { defineStore } from 'pinia';\nimport { ref, set } from 'vue';\nconst initialViewConfig = loadState('files', 'viewConfigs', {});\nexport const useViewConfigStore = defineStore('viewconfig', () => {\n    const viewConfigs = ref({ ...initialViewConfig });\n    /**\n     * Get the config for a specific view\n     *\n     * @param viewid Id of the view to fet the config for\n     */\n    function getConfig(viewid) {\n        return viewConfigs.value[viewid] || {};\n    }\n    /**\n     * Update the view config local store\n     *\n     * @param viewId The id of the view to update\n     * @param key The config key to update\n     * @param value The new value\n     */\n    function onUpdate(viewId, key, value) {\n        if (!(viewId in viewConfigs.value)) {\n            set(viewConfigs.value, viewId, {});\n        }\n        set(viewConfigs.value[viewId], key, value);\n    }\n    /**\n     * Update the view config local store AND on server side\n     *\n     * @param view Id of the view to update\n     * @param key Config key to update\n     * @param value New value\n     */\n    async function update(view, key, value) {\n        if (getCurrentUser() !== null) {\n            await axios.put(generateUrl('/apps/files/api/v1/views'), {\n                value,\n                view,\n                key,\n            });\n        }\n        emit('files:view-config:updated', { view, key, value });\n    }\n    /**\n     * Set the sorting key AND sort by ASC\n     * The key param must be a valid key of a File object\n     * If not found, will be searched within the File attributes\n     *\n     * @param key Key to sort by\n     * @param view View to set the sorting key for\n     */\n    function setSortingBy(key = 'basename', view = 'files') {\n        // Save new config\n        update(view, 'sorting_mode', key);\n        update(view, 'sorting_direction', 'asc');\n    }\n    /**\n     * Toggle the sorting direction\n     *\n     * @param viewId id of the view to set the sorting order for\n     */\n    function toggleSortingDirection(viewId = 'files') {\n        const config = viewConfigs.value[viewId] || { sorting_direction: 'asc' };\n        const newDirection = config.sorting_direction === 'asc' ? 'desc' : 'asc';\n        // Save new config\n        update(viewId, 'sorting_direction', newDirection);\n    }\n    // Initialize event listener\n    subscribe('files:view-config:updated', ({ view, key, value }) => onUpdate(view, key, value));\n    return {\n        viewConfigs,\n        getConfig,\n        setSortingBy,\n        toggleSortingDirection,\n        update,\n    };\n});\n","/*!\n * SPDX-FileCopyrightText: 2023 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\nimport { mapState } from 'pinia';\nimport Vue from 'vue';\nimport { useActiveStore } from '../store/active.ts';\nimport { useViewConfigStore } from '../store/viewConfig.ts';\nexport default Vue.extend({\n    setup() {\n        const activeStore = useActiveStore();\n        return {\n            activeStore,\n        };\n    },\n    computed: {\n        ...mapState(useViewConfigStore, ['getConfig', 'setSortingBy', 'toggleSortingDirection']),\n        /**\n         * Get the sorting mode for the current view\n         */\n        sortingMode() {\n            return this.getConfig(this.activeStore.activeView?.id)?.sorting_mode\n                || this.activeStore.activeView?.defaultSortKey\n                || 'basename';\n        },\n        /**\n         * Get the sorting direction for the current view\n         */\n        isAscSorting() {\n            const sortingDirection = this.getConfig(this.activeStore.activeView?.id)?.sorting_direction;\n            return sortingDirection !== 'desc';\n        },\n    },\n    methods: {\n        toggleSortBy(key) {\n            // If we're already sorting by this key, flip the direction\n            if (this.sortingMode === key) {\n                this.toggleSortingDirection(this.activeStore.activeView?.id);\n                return;\n            }\n            // else sort ASC by this new key\n            this.setSortingBy(key, this.activeStore.activeView?.id);\n        },\n    },\n});\n","import mod from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/ts-loader/index.js??clonedRuleSet-6.use[1]!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./FilesListTableHeaderButton.vue?vue&type=script&lang=ts\"; export default mod; export * from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/ts-loader/index.js??clonedRuleSet-6.use[1]!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./FilesListTableHeaderButton.vue?vue&type=script&lang=ts\"","var render = function render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return _c('NcButton',{staticClass:\"files-list__column-sort-button\",class:[{\n\t\t'files-list__column-sort-button--active': _vm.sortingMode === _vm.mode,\n\t\t'files-list__column-sort-button--size': _vm.sortingMode === 'size',\n\t}],attrs:{\"alignment\":_vm.mode === 'size' ? 'end' : 'start-reverse',\"variant\":\"tertiary\",\"title\":_vm.name},on:{\"click\":function($event){return _vm.toggleSortBy(_vm.mode)}},scopedSlots:_vm._u([{key:\"icon\",fn:function(){return [(_vm.sortingMode !== _vm.mode || _vm.isAscSorting)?_c('MenuUp',{staticClass:\"files-list__column-sort-button-icon\"}):_c('MenuDown',{staticClass:\"files-list__column-sort-button-icon\"})]},proxy:true}])},[_vm._v(\" \"),_c('span',{staticClass:\"files-list__column-sort-button-text\"},[_vm._v(_vm._s(_vm.name))])])\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n      import API from \"!../../../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\";\n      import domAPI from \"!../../../../node_modules/style-loader/dist/runtime/styleDomAPI.js\";\n      import insertFn from \"!../../../../node_modules/style-loader/dist/runtime/insertBySelector.js\";\n      import setAttributes from \"!../../../../node_modules/style-loader/dist/runtime/setAttributesWithoutAttributes.js\";\n      import insertStyleElement from \"!../../../../node_modules/style-loader/dist/runtime/insertStyleElement.js\";\n      import styleTagTransformFn from \"!../../../../node_modules/style-loader/dist/runtime/styleTagTransform.js\";\n      import content, * as namedExport from \"!!../../../../node_modules/css-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/sass-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./FilesListTableHeaderButton.vue?vue&type=style&index=0&id=4a8557e6&prod&scoped=true&lang=scss\";\n      \n      \n\nvar options = {};\n\noptions.styleTagTransform = styleTagTransformFn;\noptions.setAttributes = setAttributes;\noptions.insert = insertFn.bind(null, \"head\");\noptions.domAPI = domAPI;\noptions.insertStyleElement = insertStyleElement;\n\nvar update = API(content, options);\n\n\n\nexport * from \"!!../../../../node_modules/css-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/sass-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./FilesListTableHeaderButton.vue?vue&type=style&index=0&id=4a8557e6&prod&scoped=true&lang=scss\";\n       export default content && content.locals ? content.locals : undefined;\n","import { render, staticRenderFns } from \"./FilesListTableHeaderButton.vue?vue&type=template&id=4a8557e6&scoped=true\"\nimport script from \"./FilesListTableHeaderButton.vue?vue&type=script&lang=ts\"\nexport * from \"./FilesListTableHeaderButton.vue?vue&type=script&lang=ts\"\nimport style0 from \"./FilesListTableHeaderButton.vue?vue&type=style&index=0&id=4a8557e6&prod&scoped=true&lang=scss\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n  script,\n  render,\n  staticRenderFns,\n  false,\n  null,\n  \"4a8557e6\",\n  null\n  \n)\n\nexport default component.exports","import mod from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/ts-loader/index.js??clonedRuleSet-6.use[1]!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./FilesListTableHeader.vue?vue&type=script&lang=ts\"; export default mod; export * from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/ts-loader/index.js??clonedRuleSet-6.use[1]!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./FilesListTableHeader.vue?vue&type=script&lang=ts\"","\n      import API from \"!../../../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\";\n      import domAPI from \"!../../../../node_modules/style-loader/dist/runtime/styleDomAPI.js\";\n      import insertFn from \"!../../../../node_modules/style-loader/dist/runtime/insertBySelector.js\";\n      import setAttributes from \"!../../../../node_modules/style-loader/dist/runtime/setAttributesWithoutAttributes.js\";\n      import insertStyleElement from \"!../../../../node_modules/style-loader/dist/runtime/insertStyleElement.js\";\n      import styleTagTransformFn from \"!../../../../node_modules/style-loader/dist/runtime/styleTagTransform.js\";\n      import content, * as namedExport from \"!!../../../../node_modules/css-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/sass-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./FilesListTableHeader.vue?vue&type=style&index=0&id=228ab50c&prod&scoped=true&lang=scss\";\n      \n      \n\nvar options = {};\n\noptions.styleTagTransform = styleTagTransformFn;\noptions.setAttributes = setAttributes;\noptions.insert = insertFn.bind(null, \"head\");\noptions.domAPI = domAPI;\noptions.insertStyleElement = insertStyleElement;\n\nvar update = API(content, options);\n\n\n\nexport * from \"!!../../../../node_modules/css-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/sass-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./FilesListTableHeader.vue?vue&type=style&index=0&id=228ab50c&prod&scoped=true&lang=scss\";\n       export default content && content.locals ? content.locals : undefined;\n","import { render, staticRenderFns } from \"./FilesListTableHeader.vue?vue&type=template&id=228ab50c&scoped=true\"\nimport script from \"./FilesListTableHeader.vue?vue&type=script&lang=ts\"\nexport * from \"./FilesListTableHeader.vue?vue&type=script&lang=ts\"\nimport style0 from \"./FilesListTableHeader.vue?vue&type=style&index=0&id=228ab50c&prod&scoped=true&lang=scss\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n  script,\n  render,\n  staticRenderFns,\n  false,\n  null,\n  \"228ab50c\",\n  null\n  \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return _c('div',{staticClass:\"files-list__column files-list__row-actions-batch\",attrs:{\"data-cy-files-list-selection-actions\":\"\"}},[_c('NcActions',{ref:\"actionsMenu\",attrs:{\"open\":_vm.openedMenu,\"container\":\"#app-content-vue\",\"boundaries-element\":_vm.boundariesElement,\"disabled\":!!_vm.loading || _vm.areSomeNodesLoading,\"force-name\":true,\"inline\":_vm.enabledInlineActions.length,\"menu-name\":_vm.enabledInlineActions.length <= 1 ? _vm.t('files', 'Actions') : undefined},on:{\"update:open\":function($event){_vm.openedMenu=$event},\"close\":function($event){_vm.openedSubmenu = null}}},[_vm._l((_vm.enabledMenuActions),function(action){return _c('NcActionButton',{key:action.id,ref:`action-batch-${action.id}`,refInFor:true,class:{\n\t\t\t\t[`files-list__row-actions-batch-${action.id}`]: true,\n\t\t\t\t[`files-list__row-actions-batch--menu`]: _vm.isValidMenu(action),\n\t\t\t},attrs:{\"close-after-click\":!_vm.isValidMenu(action),\"data-cy-files-list-selection-action\":action.id,\"is-menu\":_vm.isValidMenu(action),\"aria-label\":action.displayName(_vm.actionContext) + ' ' + _vm.t('files', '(selected)') /** TRANSLATORS: Selected like 'selected files and folders' */,\"title\":action.title?.(_vm.actionContext)},on:{\"click\":function($event){return _vm.onActionClick(action)}},scopedSlots:_vm._u([{key:\"icon\",fn:function(){return [(_vm.loading === action.id)?_c('NcLoadingIcon',{attrs:{\"size\":18}}):_c('NcIconSvgWrapper',{attrs:{\"svg\":action.iconSvgInline(_vm.actionContext)}})]},proxy:true}],null,true)},[_vm._v(\"\\n\\t\\t\\t\"+_vm._s(action.displayName(_vm.actionContext))+\"\\n\\t\\t\")])}),_vm._v(\" \"),(_vm.openedSubmenu && _vm.enabledSubmenuActions[_vm.openedSubmenu?.id])?[_c('NcActionButton',{staticClass:\"files-list__row-actions-batch-back\",attrs:{\"data-cy-files-list-selection-action\":\"menu-back\"},on:{\"click\":function($event){return _vm.onBackToMenuClick(_vm.openedSubmenu)}},scopedSlots:_vm._u([{key:\"icon\",fn:function(){return [_c('ArrowLeftIcon')]},proxy:true}],null,false,3001860362)},[_vm._v(\"\\n\\t\\t\\t\\t\"+_vm._s(_vm.t('files', 'Back'))+\"\\n\\t\\t\\t\")]),_vm._v(\" \"),_c('NcActionSeparator'),_vm._v(\" \"),_vm._l((_vm.enabledSubmenuActions[_vm.openedSubmenu?.id]),function(action){return _c('NcActionButton',{key:action.id,staticClass:\"files-list__row-actions-batch--submenu\",class:`files-list__row-actions-batch-${action.id}`,attrs:{\"close-after-click\":\"\",\"data-cy-files-list-selection-action\":action.id,\"aria-label\":action.displayName(_vm.actionContext) + ' ' + _vm.t('files', '(selected)') /** TRANSLATORS: Selected like 'selected files and folders' */,\"title\":action.title?.(_vm.actionContext)},on:{\"click\":function($event){return _vm.onActionClick(action)}},scopedSlots:_vm._u([{key:\"icon\",fn:function(){return [(_vm.loading === action.id)?_c('NcLoadingIcon',{attrs:{\"size\":18}}):_c('NcIconSvgWrapper',{attrs:{\"svg\":action.iconSvgInline(_vm.actionContext)}})]},proxy:true}],null,true)},[_vm._v(\"\\n\\t\\t\\t\\t\"+_vm._s(action.displayName(_vm.actionContext))+\"\\n\\t\\t\\t\")])})]:_vm._e()],2)],1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import mod from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/ts-loader/index.js??clonedRuleSet-6.use[1]!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./FilesListTableHeaderActions.vue?vue&type=script&lang=ts\"; export default mod; export * from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/ts-loader/index.js??clonedRuleSet-6.use[1]!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./FilesListTableHeaderActions.vue?vue&type=script&lang=ts\"","\n      import API from \"!../../../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\";\n      import domAPI from \"!../../../../node_modules/style-loader/dist/runtime/styleDomAPI.js\";\n      import insertFn from \"!../../../../node_modules/style-loader/dist/runtime/insertBySelector.js\";\n      import setAttributes from \"!../../../../node_modules/style-loader/dist/runtime/setAttributesWithoutAttributes.js\";\n      import insertStyleElement from \"!../../../../node_modules/style-loader/dist/runtime/insertStyleElement.js\";\n      import styleTagTransformFn from \"!../../../../node_modules/style-loader/dist/runtime/styleTagTransform.js\";\n      import content, * as namedExport from \"!!../../../../node_modules/css-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/sass-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./FilesListTableHeaderActions.vue?vue&type=style&index=0&id=4056bece&prod&scoped=true&lang=scss\";\n      \n      \n\nvar options = {};\n\noptions.styleTagTransform = styleTagTransformFn;\noptions.setAttributes = setAttributes;\noptions.insert = insertFn.bind(null, \"head\");\noptions.domAPI = domAPI;\noptions.insertStyleElement = insertStyleElement;\n\nvar update = API(content, options);\n\n\n\nexport * from \"!!../../../../node_modules/css-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/sass-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./FilesListTableHeaderActions.vue?vue&type=style&index=0&id=4056bece&prod&scoped=true&lang=scss\";\n       export default content && content.locals ? content.locals : undefined;\n","import { render, staticRenderFns } from \"./FilesListTableHeaderActions.vue?vue&type=template&id=4056bece&scoped=true\"\nimport script from \"./FilesListTableHeaderActions.vue?vue&type=script&lang=ts\"\nexport * from \"./FilesListTableHeaderActions.vue?vue&type=script&lang=ts\"\nimport style0 from \"./FilesListTableHeaderActions.vue?vue&type=style&index=0&id=4056bece&prod&scoped=true&lang=scss\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n  script,\n  render,\n  staticRenderFns,\n  false,\n  null,\n  \"4056bece\",\n  null\n  \n)\n\nexport default component.exports","import mod from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/ts-loader/index.js??clonedRuleSet-6.use[1]!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./VirtualList.vue?vue&type=script&lang=ts\"; export default mod; export * from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/ts-loader/index.js??clonedRuleSet-6.use[1]!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./VirtualList.vue?vue&type=script&lang=ts\"","var render = function render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return _c('div',{staticClass:\"files-list\",class:{ 'files-list--grid': _vm.gridMode },attrs:{\"data-cy-files-list\":\"\"},on:{\"&scroll\":function($event){return _vm.onScroll.apply(null, arguments)}}},[_c('div',{ref:\"before\",staticClass:\"files-list__before\"},[_vm._t(\"before\")],2),_vm._v(\" \"),_c('div',{ref:\"filters\",staticClass:\"files-list__filters\"},[_vm._t(\"filters\")],2),_vm._v(\" \"),(!!_vm.$scopedSlots['header-overlay'])?_c('div',{staticClass:\"files-list__thead-overlay\"},[_vm._t(\"header-overlay\")],2):_vm._e(),_vm._v(\" \"),(_vm.dataSources.length === 0)?_c('div',{staticClass:\"files-list__empty\"},[_vm._t(\"empty\")],2):_vm._e(),_vm._v(\" \"),_c('table',{staticClass:\"files-list__table\",class:{\n\t\t\t'files-list__table--with-thead-overlay': !!_vm.$scopedSlots['header-overlay'],\n\t\t\t'files-list__table--hidden': _vm.dataSources.length === 0,\n\t\t},attrs:{\"aria-hidden\":_vm.dataSources.length === 0,\"inert\":_vm.dataSources.length === 0}},[(_vm.caption)?_c('caption',{staticClass:\"hidden-visually\"},[_vm._v(\"\\n\\t\\t\\t\"+_vm._s(_vm.caption)+\"\\n\\t\\t\")]):_vm._e(),_vm._v(\" \"),_c('thead',{ref:\"thead\",staticClass:\"files-list__thead\",attrs:{\"data-cy-files-list-thead\":\"\"}},[_vm._t(\"header\")],2),_vm._v(\" \"),_c('tbody',{staticClass:\"files-list__tbody\",style:(_vm.tbodyStyle),attrs:{\"data-cy-files-list-tbody\":\"\"}},_vm._l((_vm.renderedItems),function({ key, item },i){return _c(_vm.dataComponent,_vm._b({key:key,tag:\"component\",attrs:{\"source\":item,\"index\":i}},'component',_vm.extraProps,false))}),1),_vm._v(\" \"),_c('tfoot',{ref:\"footer\",staticClass:\"files-list__tfoot\",attrs:{\"data-cy-files-list-tfoot\":\"\"}},[_vm._t(\"footer\")],2)])])\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import { render, staticRenderFns } from \"./VirtualList.vue?vue&type=template&id=097bcb72\"\nimport script from \"./VirtualList.vue?vue&type=script&lang=ts\"\nexport * from \"./VirtualList.vue?vue&type=script&lang=ts\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n  script,\n  render,\n  staticRenderFns,\n  false,\n  null,\n  null,\n  null\n  \n)\n\nexport default component.exports","/*!\n * SPDX-FileCopyrightText: 2025 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\nimport { getFileListHeaders, getFilesRegistry } from '@nextcloud/files';\nimport { computed, ref } from 'vue';\nconst headers = ref();\nconst sorted = computed(() => [...(headers.value ?? [])].sort((a, b) => a.order - b.order));\n/**\n * Get the registered and sorted file list headers.\n */\nexport function useFileListHeaders() {\n    if (!headers.value) {\n        // if not initialized by other component yet, initialize and subscribe to registry changes\n        headers.value = getFileListHeaders();\n        getFilesRegistry().addEventListener('register:listHeader', () => {\n            headers.value = getFileListHeaders();\n        });\n    }\n    return sorted;\n}\n","import mod from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/ts-loader/index.js??clonedRuleSet-6.use[1]!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./FilesListVirtual.vue?vue&type=script&lang=ts\"; export default mod; export * from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/ts-loader/index.js??clonedRuleSet-6.use[1]!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./FilesListVirtual.vue?vue&type=script&lang=ts\"","\n      import API from \"!../../../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\";\n      import domAPI from \"!../../../../node_modules/style-loader/dist/runtime/styleDomAPI.js\";\n      import insertFn from \"!../../../../node_modules/style-loader/dist/runtime/insertBySelector.js\";\n      import setAttributes from \"!../../../../node_modules/style-loader/dist/runtime/setAttributesWithoutAttributes.js\";\n      import insertStyleElement from \"!../../../../node_modules/style-loader/dist/runtime/insertStyleElement.js\";\n      import styleTagTransformFn from \"!../../../../node_modules/style-loader/dist/runtime/styleTagTransform.js\";\n      import content, * as namedExport from \"!!../../../../node_modules/css-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/sass-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./FilesListVirtual.vue?vue&type=style&index=0&id=1f794bec&prod&scoped=true&lang=scss\";\n      \n      \n\nvar options = {};\n\noptions.styleTagTransform = styleTagTransformFn;\noptions.setAttributes = setAttributes;\noptions.insert = insertFn.bind(null, \"head\");\noptions.domAPI = domAPI;\noptions.insertStyleElement = insertStyleElement;\n\nvar update = API(content, options);\n\n\n\nexport * from \"!!../../../../node_modules/css-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/sass-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./FilesListVirtual.vue?vue&type=style&index=0&id=1f794bec&prod&scoped=true&lang=scss\";\n       export default content && content.locals ? content.locals : undefined;\n","\n      import API from \"!../../../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\";\n      import domAPI from \"!../../../../node_modules/style-loader/dist/runtime/styleDomAPI.js\";\n      import insertFn from \"!../../../../node_modules/style-loader/dist/runtime/insertBySelector.js\";\n      import setAttributes from \"!../../../../node_modules/style-loader/dist/runtime/setAttributesWithoutAttributes.js\";\n      import insertStyleElement from \"!../../../../node_modules/style-loader/dist/runtime/insertStyleElement.js\";\n      import styleTagTransformFn from \"!../../../../node_modules/style-loader/dist/runtime/styleTagTransform.js\";\n      import content, * as namedExport from \"!!../../../../node_modules/css-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/sass-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./FilesListVirtual.vue?vue&type=style&index=1&id=1f794bec&prod&lang=scss\";\n      \n      \n\nvar options = {};\n\noptions.styleTagTransform = styleTagTransformFn;\noptions.setAttributes = setAttributes;\noptions.insert = insertFn.bind(null, \"head\");\noptions.domAPI = domAPI;\noptions.insertStyleElement = insertStyleElement;\n\nvar update = API(content, options);\n\n\n\nexport * from \"!!../../../../node_modules/css-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/sass-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./FilesListVirtual.vue?vue&type=style&index=1&id=1f794bec&prod&lang=scss\";\n       export default content && content.locals ? content.locals : undefined;\n","import { render, staticRenderFns } from \"./FilesListVirtual.vue?vue&type=template&id=1f794bec&scoped=true\"\nimport script from \"./FilesListVirtual.vue?vue&type=script&lang=ts\"\nexport * from \"./FilesListVirtual.vue?vue&type=script&lang=ts\"\nimport style0 from \"./FilesListVirtual.vue?vue&type=style&index=0&id=1f794bec&prod&scoped=true&lang=scss\"\nimport style1 from \"./FilesListVirtual.vue?vue&type=style&index=1&id=1f794bec&prod&lang=scss\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n  script,\n  render,\n  staticRenderFns,\n  false,\n  null,\n  \"1f794bec\",\n  null\n  \n)\n\nexport default component.exports","/*!\n * SPDX-FileCopyrightText: 2026 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\nimport { getFileListActions, getFilesRegistry } from '@nextcloud/files';\nimport { toValue } from '@vueuse/core';\nimport { computed, ref } from 'vue';\nconst actions = ref();\nconst sorted = computed(() => [...(actions.value ?? [])].sort((a, b) => a.order - b.order));\n/**\n * Get the registered and sorted file list actions.\n */\nexport function useFileListActions() {\n    if (!actions.value) {\n        // if not initialized by other component yet, initialize and subscribe to registry changes\n        actions.value = getFileListActions();\n        getFilesRegistry().addEventListener('register:listAction', () => {\n            actions.value = getFileListActions();\n        });\n    }\n    return sorted;\n}\n/**\n * Get the enabled file list actions for the given folder, contents and view.\n *\n * @param folder - The current folder\n * @param contents - The contents of the current folder\n * @param view - The current view\n */\nexport function useEnabledFileListActions(folder, contents, view) {\n    const actions = useFileListActions();\n    return computed(() => {\n        if (toValue(folder) === undefined || toValue(view) === undefined) {\n            return [];\n        }\n        return actions.value.filter((action) => action.enabled === undefined\n            || action.enabled({ folder: toValue(folder), contents: toValue(contents), view: toValue(view) }));\n    });\n}\n","/*!\n * SPDX-FileCopyrightText: 2025 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\nimport { subscribe } from '@nextcloud/event-bus';\nimport { getSidebarActions, getSidebarTabs } from '@nextcloud/files';\nimport { defineStore } from 'pinia';\nimport { computed, readonly, ref, watch } from 'vue';\nimport logger from '../logger.ts';\nimport { useActiveStore } from './active.ts';\nimport { useFilesStore } from './files.ts';\nexport const useSidebarStore = defineStore('sidebar', () => {\n    const activeTab = ref();\n    const isOpen = ref(false);\n    const activeStore = useActiveStore();\n    const currentNode = computed(() => isOpen.value ? activeStore.activeNode : undefined);\n    const hasContext = computed(() => !!(currentNode.value && activeStore.activeFolder && activeStore.activeView));\n    const currentContext = computed(() => {\n        if (!hasContext.value) {\n            return;\n        }\n        return {\n            node: currentNode.value,\n            folder: activeStore.activeFolder,\n            view: activeStore.activeView,\n        };\n    });\n    const currentActions = computed(() => currentContext.value ? getActions(currentContext.value) : []);\n    const currentTabs = computed(() => currentContext.value ? getTabs(currentContext.value) : []);\n    /**\n     * Open the sidebar for a given node and optional tab ID.\n     *\n     * @param node - The node to display in the sidebar.\n     * @param tabId - Optional ID of the tab to activate.\n     */\n    function open(node, tabId) {\n        if (!(node && activeStore.activeFolder && activeStore.activeView)) {\n            logger.debug('sidebar: cannot open sidebar because the active folder or view is not set.', {\n                node,\n                activeFolder: activeStore.activeFolder,\n                activeView: activeStore.activeView,\n            });\n            throw new Error('Cannot open sidebar because the active folder or view is not set.');\n        }\n        if (isOpen.value && currentNode.value?.source === node.source) {\n            logger.debug('sidebar: already open for current node');\n            if (tabId) {\n                logger.debug('sidebar: already open for current node - switching tab', { tabId });\n                setActiveTab(tabId);\n            }\n            return;\n        }\n        const newTabs = getTabs({\n            node,\n            folder: activeStore.activeFolder,\n            view: activeStore.activeView,\n        });\n        if (tabId && !newTabs.find(({ id }) => id === tabId)) {\n            logger.warn(`sidebar: cannot open tab '${tabId}' because it is not available for the current context.`);\n            activeTab.value = newTabs[0]?.id;\n        }\n        else {\n            activeTab.value = tabId ?? newTabs[0]?.id;\n        }\n        logger.debug(`sidebar: opening for ${node.displayname}`, { node });\n        activeStore.activeNode = node;\n        isOpen.value = true;\n    }\n    /**\n     * Close the sidebar.\n     */\n    function close() {\n        isOpen.value = false;\n    }\n    /**\n     * Get the available tabs for the sidebar.\n     * If a context is provided, only tabs enabled for that context are returned.\n     *\n     * @param context - Optional context to filter the available tabs.\n     */\n    function getTabs(context) {\n        let tabs = getSidebarTabs();\n        if (context) {\n            tabs = tabs.filter((tab) => tab.enabled === undefined || tab.enabled(context));\n        }\n        return tabs.sort((a, b) => a.order - b.order);\n    }\n    /**\n     * Get the available actions for the sidebar.\n     * If a context is provided, only actions enabled for that context are returned.\n     *\n     * @param context - Optional context to filter the available actions.\n     */\n    function getActions(context) {\n        let actions = getSidebarActions();\n        if (context) {\n            actions = actions.filter((action) => action.enabled === undefined || action.enabled(context));\n        }\n        return actions.sort((a, b) => a.order - b.order);\n    }\n    /**\n     * Set the active tab in the sidebar.\n     *\n     * @param tabId - The ID of the tab to activate.\n     */\n    function setActiveTab(tabId) {\n        if (!currentTabs.value.find(({ id }) => id === tabId)) {\n            throw new Error(`Cannot set sidebar tab '${tabId}' because it is not available for the current context.`);\n        }\n        activeTab.value = tabId;\n    }\n    // update the current node if updated\n    subscribe('files:node:updated', (node) => {\n        if (node.source === currentNode.value?.source) {\n            activeStore.activeNode = node;\n        }\n    });\n    // close the sidebar if the current node is deleted\n    subscribe('files:node:deleted', (node) => {\n        if (node.fileid === currentNode.value?.fileid) {\n            close();\n        }\n    });\n    subscribe('viewer:sidebar:open', ({ source }) => {\n        const filesStore = useFilesStore();\n        const node = filesStore.getNode(source);\n        if (node) {\n            logger.debug('sidebar: opening for node from Viewer.', { node });\n            open(node);\n        }\n        else {\n            logger.error(`sidebar: cannot open for node '${source}' because it was not found in the current view.`);\n        }\n    });\n    let initialized = false;\n    // close sidebar when parameter is removed from url\n    subscribe('files:list:updated', () => {\n        if (!initialized) {\n            initialized = true;\n            window.OCP.Files.Router._router.afterEach((to, from) => {\n                if ((from.query && ('opendetails' in from.query))\n                    && (to.query && !('opendetails' in to.query))) {\n                    logger.debug('sidebar: closing because \"opendetails\" query parameter was removed from URL.');\n                    close();\n                }\n            });\n        }\n    });\n    // watch open state and update URL query parameters\n    watch(isOpen, (isOpen) => {\n        const params = { ...(window.OCP?.Files?.Router?.params ?? {}) };\n        const query = { ...(window.OCP?.Files?.Router?.query ?? {}) };\n        logger.debug(`sidebar: current node changed: ${isOpen ? 'open' : 'closed'}`, { query, params, node: activeStore.activeNode });\n        if (!isOpen && ('opendetails' in query)) {\n            delete query.opendetails;\n            window.OCP.Files.Router.goToRoute(null, params, query, true);\n        }\n        if (isOpen && !('opendetails' in query)) {\n            window.OCP.Files.Router.goToRoute(null, params, {\n                ...query,\n                opendetails: 'true',\n            }, true);\n        }\n    });\n    return {\n        activeTab,\n        currentActions,\n        currentContext,\n        currentNode,\n        currentTabs,\n        hasContext,\n        isOpen: readonly(isOpen),\n        open,\n        close,\n        getActions,\n        getTabs,\n        setActiveTab,\n    };\n});\n","/**\n * SPDX-FileCopyrightText: 2024 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\nimport { loadState } from '@nextcloud/initial-state';\n/**\n * Check whether the personal files view can be shown\n */\nexport function hasPersonalFilesView() {\n    const storageStats = loadState('files', 'storageStats', { quota: -1 });\n    // Don't show this view if the user has no storage quota\n    return storageStats.quota !== 0;\n}\n/**\n * Get the default files view\n */\nexport function defaultView() {\n    const { default_view: defaultView } = loadState('files', 'config', { default_view: 'files' });\n    // the default view - only use the personal one if it is enabled\n    if (defaultView !== 'personal' || hasPersonalFilesView()) {\n        return defaultView;\n    }\n    return 'files';\n}\n","var render = function render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return _c('NcAppContent',{attrs:{\"page-heading\":_vm.pageHeading,\"data-cy-files-content\":\"\"}},[_c('div',{staticClass:\"files-list__header\",class:{ 'files-list__header--public': _vm.isPublic }},[_c(_vm.isNarrow ? 'Teleport' : 'div',{tag:\"component\",attrs:{\"to\":_vm.isNarrow ? 'body' : undefined}},[(_vm.canUpload && !_vm.isQuotaExceeded && _vm.currentFolder)?_c('UploadPicker',{staticClass:\"files-list__header-upload-button\",class:{ 'files-list__header-upload-button--narrow': _vm.isNarrow },attrs:{\"allow-folders\":\"\",\"no-label\":_vm.isNarrow,\"content\":_vm.getContent,\"destination\":_vm.currentFolder,\"forbidden-characters\":_vm.forbiddenCharacters,\"multiple\":\"\",\"primary\":\"\"},on:{\"failed\":_vm.onUploadFail,\"uploaded\":_vm.onUpload}}):_vm._e()],1),_vm._v(\" \"),_c('BreadCrumbs',{attrs:{\"path\":_vm.directory},on:{\"reload\":_vm.fetchContent}}),_vm._v(\" \"),(_vm.isRefreshing)?_c('NcLoadingIcon',{staticClass:\"files-list__refresh-icon\",attrs:{\"name\":_vm.t('files', 'File list is reloading')}}):_vm._e(),_vm._v(\" \"),_c('NcActions',{staticClass:\"files-list__header-actions\",attrs:{\"inline\":1,\"variant\":\"tertiary\",\"force-name\":\"\"}},_vm._l((_vm.enabledFileListActions),function(action){return _c('NcActionButton',{key:action.id,attrs:{\"disabled\":!!_vm.loadingAction,\"data-cy-files-list-action\":action.id,\"close-after-click\":\"\"},on:{\"click\":function($event){return _vm.execFileListAction(action)}},scopedSlots:_vm._u([{key:\"icon\",fn:function(){return [(_vm.loadingAction === action.id)?_c('NcLoadingIcon',{attrs:{\"size\":18}}):(action.iconSvgInline !== undefined && _vm.currentView)?_c('NcIconSvgWrapper',{attrs:{\"svg\":action.iconSvgInline(_vm.currentView)}}):_vm._e()]},proxy:true}],null,true)},[_vm._v(\"\\n\\t\\t\\t\\t\"+_vm._s(_vm.actionDisplayName(action))+\"\\n\\t\\t\\t\")])}),1),_vm._v(\" \"),_c('FileListFilters'),_vm._v(\" \"),(_vm.enableGridView)?_c('NcButton',{staticClass:\"files-list__header-grid-button\",attrs:{\"aria-label\":_vm.gridViewButtonLabel,\"title\":_vm.gridViewButtonLabel,\"variant\":\"tertiary\"},on:{\"click\":_vm.toggleGridView},scopedSlots:_vm._u([{key:\"icon\",fn:function(){return [(_vm.userConfig.grid_view)?_c('ListViewIcon'):_c('ViewGridIcon')]},proxy:true}],null,false,1682960703)}):_vm._e()],1),_vm._v(\" \"),(!_vm.loading && _vm.canUpload && _vm.currentFolder)?_c('DragAndDropNotice',{attrs:{\"current-folder\":_vm.currentFolder}}):_vm._e(),_vm._v(\" \"),(!_vm.currentView)?_c('NcLoadingIcon',{staticClass:\"files-list__loading-icon\",attrs:{\"size\":38,\"name\":_vm.t('files', 'Loading current folder')}}):_c('FilesListVirtual',{ref:\"filesListVirtual\",attrs:{\"current-folder\":_vm.currentFolder,\"current-view\":_vm.currentView,\"nodes\":_vm.dirContentsSorted,\"summary\":_vm.summary},scopedSlots:_vm._u([{key:\"empty\",fn:function(){return [(_vm.loading && !_vm.isRefreshing)?_c('NcLoadingIcon',{staticClass:\"files-list__loading-icon\",attrs:{\"size\":38,\"name\":_vm.t('files', 'Loading current folder')}}):(_vm.error)?_c('NcEmptyContent',{attrs:{\"name\":_vm.error,\"data-cy-files-content-error\":\"\"},scopedSlots:_vm._u([{key:\"action\",fn:function(){return [_c('NcButton',{attrs:{\"variant\":\"secondary\"},on:{\"click\":_vm.fetchContent},scopedSlots:_vm._u([{key:\"icon\",fn:function(){return [_c('IconReload',{attrs:{\"size\":20}})]},proxy:true}])},[_vm._v(\"\\n\\t\\t\\t\\t\\t\\t\"+_vm._s(_vm.t('files', 'Retry'))+\"\\n\\t\\t\\t\\t\\t\")])]},proxy:true},{key:\"icon\",fn:function(){return [_c('IconAlertCircleOutline')]},proxy:true}])}):(_vm.currentView?.emptyView)?_c('div',{staticClass:\"files-list__empty-view-wrapper\"},[_c('div',{ref:\"customEmptyView\"})]):_c('NcEmptyContent',{attrs:{\"name\":_vm.currentView?.emptyTitle || _vm.t('files', 'No files in here'),\"description\":_vm.currentView?.emptyCaption || _vm.t('files', 'Upload some content or sync with your devices!'),\"data-cy-files-content-empty\":\"\"},scopedSlots:_vm._u([(_vm.directory !== '/')?{key:\"action\",fn:function(){return [(_vm.canUpload && !_vm.isQuotaExceeded)?_c('UploadPicker',{staticClass:\"files-list__header-upload-button\",attrs:{\"allow-folders\":\"\",\"content\":_vm.getContent,\"destination\":_vm.currentFolder,\"forbidden-characters\":_vm.forbiddenCharacters,\"multiple\":\"\"},on:{\"failed\":_vm.onUploadFail,\"uploaded\":_vm.onUpload}}):_c('NcButton',{attrs:{\"to\":_vm.toPreviousDir,\"variant\":\"primary\"}},[_vm._v(\"\\n\\t\\t\\t\\t\\t\\t\"+_vm._s(_vm.t('files', 'Go back'))+\"\\n\\t\\t\\t\\t\\t\")])]},proxy:true}:null,{key:\"icon\",fn:function(){return [_c('NcIconSvgWrapper',{attrs:{\"svg\":_vm.currentView?.icon}})]},proxy:true}],null,true)})]},proxy:true}])})],1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","/**\n * SPDX-FileCopyrightText: 2019 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\nimport { t } from '@nextcloud/l10n';\n/**\n * Whether error is a WebDAVClientError\n *\n * @param error - Any exception\n * @return - Whether error is a WebDAVClientError\n */\nfunction isWebDAVClientError(error) {\n    return error instanceof Error && 'status' in error && 'response' in error;\n}\n/**\n * Get a localized error message from webdav request\n *\n * @param error - An exception from webdav request\n * @return Localized error message for end user\n */\nexport function humanizeWebDAVError(error) {\n    if (error instanceof Error) {\n        if (isWebDAVClientError(error)) {\n            const status = error.status || error.response?.status || 0;\n            if ([400, 404, 405].includes(status)) {\n                return t('files', 'Folder not found');\n            }\n            else if (status === 403) {\n                return t('files', 'This operation is forbidden');\n            }\n            else if (status === 500) {\n                return t('files', 'This folder is unavailable, please try again later or contact the administration');\n            }\n            else if (status === 503) {\n                return t('files', 'Storage is temporarily not available');\n            }\n        }\n        // We don't need to show abortion error to the user as those are expected.\n        if (error.name === 'AbortError') {\n            return null;\n        }\n        return t('files', 'Unexpected error: {error}', { error: error.message });\n    }\n    return t('files', 'Unknown error');\n}\n","import mod from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/ts-loader/index.js??clonedRuleSet-6.use[1]!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./FilesList.vue?vue&type=script&lang=ts\"; export default mod; export * from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/ts-loader/index.js??clonedRuleSet-6.use[1]!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./FilesList.vue?vue&type=script&lang=ts\"","\n      import API from \"!../../../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\";\n      import domAPI from \"!../../../../node_modules/style-loader/dist/runtime/styleDomAPI.js\";\n      import insertFn from \"!../../../../node_modules/style-loader/dist/runtime/insertBySelector.js\";\n      import setAttributes from \"!../../../../node_modules/style-loader/dist/runtime/setAttributesWithoutAttributes.js\";\n      import insertStyleElement from \"!../../../../node_modules/style-loader/dist/runtime/insertStyleElement.js\";\n      import styleTagTransformFn from \"!../../../../node_modules/style-loader/dist/runtime/styleTagTransform.js\";\n      import content, * as namedExport from \"!!../../../../node_modules/css-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/sass-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./FilesList.vue?vue&type=style&index=0&id=ed23df10&prod&scoped=true&lang=scss\";\n      \n      \n\nvar options = {};\n\noptions.styleTagTransform = styleTagTransformFn;\noptions.setAttributes = setAttributes;\noptions.insert = insertFn.bind(null, \"head\");\noptions.domAPI = domAPI;\noptions.insertStyleElement = insertStyleElement;\n\nvar update = API(content, options);\n\n\n\nexport * from \"!!../../../../node_modules/css-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/sass-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./FilesList.vue?vue&type=style&index=0&id=ed23df10&prod&scoped=true&lang=scss\";\n       export default content && content.locals ? content.locals : undefined;\n","import { render, staticRenderFns } from \"./FilesList.vue?vue&type=template&id=ed23df10&scoped=true\"\nimport script from \"./FilesList.vue?vue&type=script&lang=ts\"\nexport * from \"./FilesList.vue?vue&type=script&lang=ts\"\nimport style0 from \"./FilesList.vue?vue&type=style&index=0&id=ed23df10&prod&scoped=true&lang=scss\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n  script,\n  render,\n  staticRenderFns,\n  false,\n  null,\n  \"ed23df10\",\n  null\n  \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return _c(_setup.NcAppNavigation,{staticClass:\"files-navigation\",attrs:{\"data-cy-files-navigation\":\"\",\"aria-label\":_setup.t('files', 'Files')},scopedSlots:_vm._u([{key:\"search\",fn:function(){return [_c(_setup.FilesNavigationSearch)]},proxy:true},{key:\"default\",fn:function(){return [_c(_setup.FilesNavigationList),_vm._v(\" \"),_c(_setup.FilesAppSettings,{attrs:{\"open\":_setup.settingsOpened,\"data-cy-files-navigation-settings\":\"\"},on:{\"update:open\":function($event){_setup.settingsOpened=$event},\"close\":function($event){_setup.settingsOpened = false}}})]},proxy:true},{key:\"footer\",fn:function(){return [_c('ul',{staticClass:\"app-navigation-entry__settings\"},[_c(_setup.NavigationQuota),_vm._v(\" \"),_c(_setup.NcAppNavigationItem,{attrs:{\"name\":_setup.t('files', 'Files settings'),\"data-cy-files-navigation-settings-button\":\"\"},on:{\"click\":function($event){$event.preventDefault();$event.stopPropagation();_setup.settingsOpened = true}}},[_c(_setup.IconCog,{attrs:{\"slot\":\"icon\",\"size\":20},slot:\"icon\"})],1)],1)]},proxy:true}])})\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n\n","import mod from \"-!../vue-loader/lib/index.js??vue-loader-options!./CogOutline.vue?vue&type=script&lang=js\"; export default mod; export * from \"-!../vue-loader/lib/index.js??vue-loader-options!./CogOutline.vue?vue&type=script&lang=js\"","import { render, staticRenderFns } from \"./CogOutline.vue?vue&type=template&id=96fed70c\"\nimport script from \"./CogOutline.vue?vue&type=script&lang=js\"\nexport * from \"./CogOutline.vue?vue&type=script&lang=js\"\n\n\n/* normalize component */\nimport normalizer from \"!../vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n  script,\n  render,\n  staticRenderFns,\n  false,\n  null,\n  null,\n  null\n  \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('span',_vm._b({staticClass:\"material-design-icon cog-outline-icon\",attrs:{\"aria-hidden\":_vm.title ? null : 'true',\"aria-label\":_vm.title,\"role\":\"img\"},on:{\"click\":function($event){return _vm.$emit('click', $event)}}},'span',_vm.$attrs,false),[_c('svg',{staticClass:\"material-design-icon__svg\",attrs:{\"fill\":_vm.fillColor,\"width\":_vm.size,\"height\":_vm.size,\"viewBox\":\"0 0 24 24\"}},[_c('path',{attrs:{\"d\":\"M12,8A4,4 0 0,1 16,12A4,4 0 0,1 12,16A4,4 0 0,1 8,12A4,4 0 0,1 12,8M12,10A2,2 0 0,0 10,12A2,2 0 0,0 12,14A2,2 0 0,0 14,12A2,2 0 0,0 12,10M10,22C9.75,22 9.54,21.82 9.5,21.58L9.13,18.93C8.5,18.68 7.96,18.34 7.44,17.94L4.95,18.95C4.73,19.03 4.46,18.95 4.34,18.73L2.34,15.27C2.21,15.05 2.27,14.78 2.46,14.63L4.57,12.97L4.5,12L4.57,11L2.46,9.37C2.27,9.22 2.21,8.95 2.34,8.73L4.34,5.27C4.46,5.05 4.73,4.96 4.95,5.05L7.44,6.05C7.96,5.66 8.5,5.32 9.13,5.07L9.5,2.42C9.54,2.18 9.75,2 10,2H14C14.25,2 14.46,2.18 14.5,2.42L14.87,5.07C15.5,5.32 16.04,5.66 16.56,6.05L19.05,5.05C19.27,4.96 19.54,5.05 19.66,5.27L21.66,8.73C21.79,8.95 21.73,9.22 21.54,9.37L19.43,11L19.5,12L19.43,13L21.54,14.63C21.73,14.78 21.79,15.05 21.66,15.27L19.66,18.73C19.54,18.95 19.27,19.04 19.05,18.95L16.56,17.95C16.04,18.34 15.5,18.68 14.87,18.93L14.5,21.58C14.46,21.82 14.25,22 14,22H10M11.25,4L10.88,6.61C9.68,6.86 8.62,7.5 7.85,8.39L5.44,7.35L4.69,8.65L6.8,10.2C6.4,11.37 6.4,12.64 6.8,13.8L4.68,15.36L5.43,16.66L7.86,15.62C8.63,16.5 9.68,17.14 10.87,17.38L11.24,20H12.76L13.13,17.39C14.32,17.14 15.37,16.5 16.14,15.62L18.57,16.66L19.32,15.36L17.2,13.81C17.6,12.64 17.6,11.37 17.2,10.2L19.31,8.65L18.56,7.35L16.15,8.39C15.38,7.5 14.32,6.86 13.12,6.62L12.75,4H11.25Z\"}},[(_vm.title)?_c('title',[_vm._v(_vm._s(_vm.title))]):_vm._e()])])])\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","var render = function render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return _c(_setup.NcAppNavigationList,{class:_vm.$style.filesNavigationList,attrs:{\"aria-label\":_setup.t('files', 'Views')}},_vm._l((_setup.rootViews),function(view){return _c(_setup.FilesNavigationListItem,{key:view.id,attrs:{\"view\":view}})}),1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","/**\n * SPDX-FileCopyrightText: 2024 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\nimport { getCurrentUser } from '@nextcloud/auth';\nimport axios from '@nextcloud/axios';\nimport { getRemoteURL } from '@nextcloud/files/dav';\nimport { getCanonicalLocale, getLanguage } from '@nextcloud/l10n';\nimport { dirname, encodePath, join } from '@nextcloud/paths';\nimport { generateOcsUrl } from '@nextcloud/router';\nimport { getContents as getFiles } from './Files.ts';\nexport const folderTreeId = 'folders';\nexport const sourceRoot = `${getRemoteURL()}/files/${getCurrentUser()?.uid}`;\nconst collator = Intl.Collator([getLanguage(), getCanonicalLocale()], {\n    numeric: true,\n    usage: 'sort',\n});\nconst compareNodes = (a, b) => collator.compare(a.displayName ?? a.basename, b.displayName ?? b.basename);\n/**\n * Get all tree nodes recursively\n *\n * @param tree - The tree to process\n * @param currentPath - The current path\n * @param nodes - The nodes collected so far\n */\nfunction getTreeNodes(tree, currentPath = '/', nodes = []) {\n    const sortedTree = tree.toSorted(compareNodes);\n    for (const { id, basename, displayName, children } of sortedTree) {\n        const path = join(currentPath, basename);\n        const source = `${sourceRoot}${path}`;\n        const node = {\n            source,\n            encodedSource: encodeSource(source),\n            path,\n            fileid: id,\n            basename,\n        };\n        if (displayName) {\n            node.displayName = displayName;\n        }\n        nodes.push(node);\n        if (children.length > 0) {\n            getTreeNodes(children, path, nodes);\n        }\n    }\n    return nodes;\n}\n/**\n * Get folder tree nodes\n *\n * @param path - The path to get the tree from\n * @param depth - The depth to fetch\n * @param withParents - Whether to include parent folders in the response\n */\nexport async function getFolderTreeNodes(path = '/', depth = 1, withParents = false) {\n    const { data: tree } = await axios.get(generateOcsUrl('/apps/files/api/v1/folder-tree'), {\n        params: new URLSearchParams({ path, depth: String(depth), withParents: String(withParents) }),\n    });\n    const nodes = getTreeNodes(tree, withParents ? '/' : path);\n    return nodes;\n}\nexport const getContents = (path, options) => getFiles(path, options);\n/**\n * Encode source URL\n *\n * @param source - The source URL\n */\nexport function encodeSource(source) {\n    const { origin } = new URL(source);\n    return origin + encodePath(source.slice(origin.length));\n}\n/**\n * Get parent source URL\n *\n * @param source - The source URL\n */\nexport function getSourceParent(source) {\n    const parent = dirname(source);\n    if (parent === sourceRoot) {\n        return folderTreeId;\n    }\n    return `${folderTreeId}::${encodeSource(parent)}`;\n}\n","var render = function render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return _c(_setup.NcAppNavigationItem,{staticClass:\"files-navigation__item\",attrs:{\"allow-collapse\":\"\",\"loading\":_setup.isLoading,\"data-cy-files-navigation-item\":_vm.view.id,\"exact\":_setup.hasChildViews /* eslint-disable-line @nextcloud/vue/no-deprecated-props */,\"name\":_vm.view.name,\"open\":_setup.isExpanded,\"pinned\":_vm.view.sticky,\"to\":_setup.navigationRoute},on:{\"update:open\":_setup.onExpandCollapse},scopedSlots:_vm._u([(_vm.view.icon)?{key:\"icon\",fn:function(){return [_c(_setup.NcIconSvgWrapper,{attrs:{\"svg\":_vm.view.icon}})]},proxy:true}:null],null,true)},[_vm._v(\" \"),(!_setup.hasChildViews && !_setup.childViewsLoaded && _vm.view.loadChildViews)?_c('li',{directives:[{name:\"show\",rawName:\"v-show\",value:(false),expression:\"false\"}],attrs:{\"role\":\"presentation\"}}):_vm._e(),_vm._v(\" \"),_vm._l((_setup.sortedChildViews),function(childView){return _c('FilesNavigationListItem',{key:childView.id,attrs:{\"level\":_vm.level + 1,\"view\":childView}})})],2)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import mod from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/ts-loader/index.js??clonedRuleSet-6.use[1]!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./FilesNavigationListItem.vue?vue&type=script&setup=true&lang=ts\"; export default mod; export * from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/ts-loader/index.js??clonedRuleSet-6.use[1]!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./FilesNavigationListItem.vue?vue&type=script&setup=true&lang=ts\"","import { render, staticRenderFns } from \"./FilesNavigationListItem.vue?vue&type=template&id=04ff00a1\"\nimport script from \"./FilesNavigationListItem.vue?vue&type=script&setup=true&lang=ts\"\nexport * from \"./FilesNavigationListItem.vue?vue&type=script&setup=true&lang=ts\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n  script,\n  render,\n  staticRenderFns,\n  false,\n  null,\n  null,\n  null\n  \n)\n\nexport default component.exports","import mod from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/ts-loader/index.js??clonedRuleSet-6.use[1]!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./FilesNavigationList.vue?vue&type=script&setup=true&lang=ts\"; export default mod; export * from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/ts-loader/index.js??clonedRuleSet-6.use[1]!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./FilesNavigationList.vue?vue&type=script&setup=true&lang=ts\"","\n      import API from \"!../../../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\";\n      import domAPI from \"!../../../../node_modules/style-loader/dist/runtime/styleDomAPI.js\";\n      import insertFn from \"!../../../../node_modules/style-loader/dist/runtime/insertBySelector.js\";\n      import setAttributes from \"!../../../../node_modules/style-loader/dist/runtime/setAttributesWithoutAttributes.js\";\n      import insertStyleElement from \"!../../../../node_modules/style-loader/dist/runtime/insertStyleElement.js\";\n      import styleTagTransformFn from \"!../../../../node_modules/style-loader/dist/runtime/styleTagTransform.js\";\n      import content, * as namedExport from \"!!../../../../node_modules/css-loader/dist/cjs.js??clonedRuleSet-3.use[1]!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./FilesNavigationList.vue?vue&type=style&index=0&id=1b62d532&prod&module=true&lang=css\";\n      \n      \n\nvar options = {};\n\noptions.styleTagTransform = styleTagTransformFn;\noptions.setAttributes = setAttributes;\noptions.insert = insertFn.bind(null, \"head\");\noptions.domAPI = domAPI;\noptions.insertStyleElement = insertStyleElement;\n\nvar update = API(content, options);\n\n\n\nexport * from \"!!../../../../node_modules/css-loader/dist/cjs.js??clonedRuleSet-3.use[1]!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./FilesNavigationList.vue?vue&type=style&index=0&id=1b62d532&prod&module=true&lang=css\";\n       export default content && content.locals ? content.locals : undefined;\n","import { render, staticRenderFns } from \"./FilesNavigationList.vue?vue&type=template&id=1b62d532\"\nimport script from \"./FilesNavigationList.vue?vue&type=script&setup=true&lang=ts\"\nexport * from \"./FilesNavigationList.vue?vue&type=script&setup=true&lang=ts\"\nimport style0 from \"./FilesNavigationList.vue?vue&type=style&index=0&id=1b62d532&prod&module=true&lang=css\"\n\n\n\n\nfunction injectStyles (context) {\n  \n  this[\"$style\"] = (style0.locals || style0)\n\n}\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n  script,\n  render,\n  staticRenderFns,\n  false,\n  injectStyles,\n  null,\n  null\n  \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return _c(_setup.NcAppNavigationSearch,{attrs:{\"label\":_setup.searchLabel},scopedSlots:_vm._u([{key:\"actions\",fn:function(){return [_c(_setup.NcActions,{attrs:{\"aria-label\":_setup.t('files', 'Search scope options'),\"disabled\":_setup.isSearchView},scopedSlots:_vm._u([{key:\"icon\",fn:function(){return [_c(_setup.NcIconSvgWrapper,{attrs:{\"path\":_setup.searchStore.scope === 'globally' ? _setup.mdiSearchWeb : _setup.mdiMagnify}})]},proxy:true}])},[_vm._v(\" \"),_c(_setup.NcActionButton,{attrs:{\"close-after-click\":\"\"},on:{\"click\":function($event){_setup.searchStore.scope = 'filter'}},scopedSlots:_vm._u([{key:\"icon\",fn:function(){return [_c(_setup.NcIconSvgWrapper,{attrs:{\"path\":_setup.mdiMagnify}})]},proxy:true}])},[_vm._v(\"\\n\\t\\t\\t\\t\"+_vm._s(_setup.t('files', 'Search here'))+\"\\n\\t\\t\\t\")]),_vm._v(\" \"),_c(_setup.NcActionButton,{attrs:{\"close-after-click\":\"\"},on:{\"click\":function($event){_setup.searchStore.scope = 'globally'}},scopedSlots:_vm._u([{key:\"icon\",fn:function(){return [_c(_setup.NcIconSvgWrapper,{attrs:{\"path\":_setup.mdiSearchWeb}})]},proxy:true}])},[_vm._v(\"\\n\\t\\t\\t\\t\"+_vm._s(_setup.t('files', 'Search everywhere'))+\"\\n\\t\\t\\t\")])],1)]},proxy:true}]),model:{value:(_setup.searchStore.query),callback:function ($$v) {_vm.$set(_setup.searchStore, \"query\", $$v)},expression:\"searchStore.query\"}})\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import mod from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/ts-loader/index.js??clonedRuleSet-6.use[1]!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./FilesNavigationSearch.vue?vue&type=script&setup=true&lang=ts\"; export default mod; export * from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/ts-loader/index.js??clonedRuleSet-6.use[1]!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./FilesNavigationSearch.vue?vue&type=script&setup=true&lang=ts\"","/**\n * SPDX-FileCopyrightText: 2025 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\nimport { onUnmounted } from 'vue';\nimport { useRouter } from 'vue-router/composables';\n/**\n * Helper until we use Vue-Router v4 (Vue3).\n *\n * @param fn - The navigation guard\n */\nexport function onBeforeNavigation(fn) {\n    const router = useRouter();\n    const remove = router.beforeResolve(fn);\n    onUnmounted(remove);\n}\n","import { render, staticRenderFns } from \"./FilesNavigationSearch.vue?vue&type=template&id=7f26c822\"\nimport script from \"./FilesNavigationSearch.vue?vue&type=script&setup=true&lang=ts\"\nexport * from \"./FilesNavigationSearch.vue?vue&type=script&setup=true&lang=ts\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n  script,\n  render,\n  staticRenderFns,\n  false,\n  null,\n  null,\n  null\n  \n)\n\nexport default component.exports","/* eslint-disable no-undefined,no-param-reassign,no-shadow */\n\n/**\n * Throttle execution of a function. Especially useful for rate limiting\n * execution of handlers on events like resize and scroll.\n *\n * @param {number} delay -                  A zero-or-greater delay in milliseconds. For event callbacks, values around 100 or 250 (or even higher)\n *                                            are most useful.\n * @param {Function} callback -               A function to be executed after delay milliseconds. The `this` context and all arguments are passed through,\n *                                            as-is, to `callback` when the throttled-function is executed.\n * @param {object} [options] -              An object to configure options.\n * @param {boolean} [options.noTrailing] -   Optional, defaults to false. If noTrailing is true, callback will only execute every `delay` milliseconds\n *                                            while the throttled-function is being called. If noTrailing is false or unspecified, callback will be executed\n *                                            one final time after the last throttled-function call. (After the throttled-function has not been called for\n *                                            `delay` milliseconds, the internal counter is reset).\n * @param {boolean} [options.noLeading] -   Optional, defaults to false. If noLeading is false, the first throttled-function call will execute callback\n *                                            immediately. If noLeading is true, the first the callback execution will be skipped. It should be noted that\n *                                            callback will never executed if both noLeading = true and noTrailing = true.\n * @param {boolean} [options.debounceMode] - If `debounceMode` is true (at begin), schedule `clear` to execute after `delay` ms. If `debounceMode` is\n *                                            false (at end), schedule `callback` to execute after `delay` ms.\n *\n * @returns {Function} A new, throttled, function.\n */\nfunction throttle (delay, callback, options) {\n  var _ref = options || {},\n    _ref$noTrailing = _ref.noTrailing,\n    noTrailing = _ref$noTrailing === void 0 ? false : _ref$noTrailing,\n    _ref$noLeading = _ref.noLeading,\n    noLeading = _ref$noLeading === void 0 ? false : _ref$noLeading,\n    _ref$debounceMode = _ref.debounceMode,\n    debounceMode = _ref$debounceMode === void 0 ? undefined : _ref$debounceMode;\n  /*\n   * After wrapper has stopped being called, this timeout ensures that\n   * `callback` is executed at the proper times in `throttle` and `end`\n   * debounce modes.\n   */\n  var timeoutID;\n  var cancelled = false;\n\n  // Keep track of the last time `callback` was executed.\n  var lastExec = 0;\n\n  // Function to clear existing timeout\n  function clearExistingTimeout() {\n    if (timeoutID) {\n      clearTimeout(timeoutID);\n    }\n  }\n\n  // Function to cancel next exec\n  function cancel(options) {\n    var _ref2 = options || {},\n      _ref2$upcomingOnly = _ref2.upcomingOnly,\n      upcomingOnly = _ref2$upcomingOnly === void 0 ? false : _ref2$upcomingOnly;\n    clearExistingTimeout();\n    cancelled = !upcomingOnly;\n  }\n\n  /*\n   * The `wrapper` function encapsulates all of the throttling / debouncing\n   * functionality and when executed will limit the rate at which `callback`\n   * is executed.\n   */\n  function wrapper() {\n    for (var _len = arguments.length, arguments_ = new Array(_len), _key = 0; _key < _len; _key++) {\n      arguments_[_key] = arguments[_key];\n    }\n    var self = this;\n    var elapsed = Date.now() - lastExec;\n    if (cancelled) {\n      return;\n    }\n\n    // Execute `callback` and update the `lastExec` timestamp.\n    function exec() {\n      lastExec = Date.now();\n      callback.apply(self, arguments_);\n    }\n\n    /*\n     * If `debounceMode` is true (at begin) this is used to clear the flag\n     * to allow future `callback` executions.\n     */\n    function clear() {\n      timeoutID = undefined;\n    }\n    if (!noLeading && debounceMode && !timeoutID) {\n      /*\n       * Since `wrapper` is being called for the first time and\n       * `debounceMode` is true (at begin), execute `callback`\n       * and noLeading != true.\n       */\n      exec();\n    }\n    clearExistingTimeout();\n    if (debounceMode === undefined && elapsed > delay) {\n      if (noLeading) {\n        /*\n         * In throttle mode with noLeading, if `delay` time has\n         * been exceeded, update `lastExec` and schedule `callback`\n         * to execute after `delay` ms.\n         */\n        lastExec = Date.now();\n        if (!noTrailing) {\n          timeoutID = setTimeout(debounceMode ? clear : exec, delay);\n        }\n      } else {\n        /*\n         * In throttle mode without noLeading, if `delay` time has been exceeded, execute\n         * `callback`.\n         */\n        exec();\n      }\n    } else if (noTrailing !== true) {\n      /*\n       * In trailing throttle mode, since `delay` time has not been\n       * exceeded, schedule `callback` to execute `delay` ms after most\n       * recent execution.\n       *\n       * If `debounceMode` is true (at begin), schedule `clear` to execute\n       * after `delay` ms.\n       *\n       * If `debounceMode` is false (at end), schedule `callback` to\n       * execute after `delay` ms.\n       */\n      timeoutID = setTimeout(debounceMode ? clear : exec, debounceMode === undefined ? delay - elapsed : delay);\n    }\n  }\n  wrapper.cancel = cancel;\n\n  // Return the wrapper function.\n  return wrapper;\n}\n\n/* eslint-disable no-undefined */\n\n/**\n * Debounce execution of a function. Debouncing, unlike throttling,\n * guarantees that a function is only executed a single time, either at the\n * very beginning of a series of calls, or at the very end.\n *\n * @param {number} delay -               A zero-or-greater delay in milliseconds. For event callbacks, values around 100 or 250 (or even higher) are most useful.\n * @param {Function} callback -          A function to be executed after delay milliseconds. The `this` context and all arguments are passed through, as-is,\n *                                        to `callback` when the debounced-function is executed.\n * @param {object} [options] -           An object to configure options.\n * @param {boolean} [options.atBegin] -  Optional, defaults to false. If atBegin is false or unspecified, callback will only be executed `delay` milliseconds\n *                                        after the last debounced-function call. If atBegin is true, callback will be executed only at the first debounced-function call.\n *                                        (After the throttled-function has not been called for `delay` milliseconds, the internal counter is reset).\n *\n * @returns {Function} A new, debounced function.\n */\nfunction debounce (delay, callback, options) {\n  var _ref = options || {},\n    _ref$atBegin = _ref.atBegin,\n    atBegin = _ref$atBegin === void 0 ? false : _ref$atBegin;\n  return throttle(delay, callback, {\n    debounceMode: atBegin !== false\n  });\n}\n\nexport { debounce, throttle };\n//# sourceMappingURL=index.js.map\n","\n\n","import mod from \"-!../vue-loader/lib/index.js??vue-loader-options!./ChartPieOutline.vue?vue&type=script&lang=js\"; export default mod; export * from \"-!../vue-loader/lib/index.js??vue-loader-options!./ChartPieOutline.vue?vue&type=script&lang=js\"","import mod from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./NavigationQuota.vue?vue&type=script&lang=js\"; export default mod; export * from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./NavigationQuota.vue?vue&type=script&lang=js\"","\n\n\n\n\n\n","import { render, staticRenderFns } from \"./ChartPieOutline.vue?vue&type=template&id=a29cc97a\"\nimport script from \"./ChartPieOutline.vue?vue&type=script&lang=js\"\nexport * from \"./ChartPieOutline.vue?vue&type=script&lang=js\"\n\n\n/* normalize component */\nimport normalizer from \"!../vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n  script,\n  render,\n  staticRenderFns,\n  false,\n  null,\n  null,\n  null\n  \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('span',_vm._b({staticClass:\"material-design-icon chart-pie-outline-icon\",attrs:{\"aria-hidden\":_vm.title ? null : 'true',\"aria-label\":_vm.title,\"role\":\"img\"},on:{\"click\":function($event){return _vm.$emit('click', $event)}}},'span',_vm.$attrs,false),[_c('svg',{staticClass:\"material-design-icon__svg\",attrs:{\"fill\":_vm.fillColor,\"width\":_vm.size,\"height\":_vm.size,\"viewBox\":\"0 0 24 24\"}},[_c('path',{attrs:{\"d\":\"M13 11H19.95Q19.58 8.25 17.66 6.34 15.75 4.43 13 4.05M11 19.95V4.05Q8 4.43 6 6.69 4 8.95 4 12T6 17.31Q8 19.58 11 19.95M13 19.95Q15.75 19.6 17.68 17.68 19.6 15.75 19.95 13H13M12 12M12 22Q9.93 22 8.1 21.21 6.28 20.43 4.93 19.08 3.58 17.73 2.79 15.9 2 14.08 2 12T2.79 8.1Q3.58 6.28 4.93 4.93 6.28 3.58 8.1 2.79 9.93 2 12 2T15.89 2.79Q17.7 3.58 19.06 4.94 20.43 6.3 21.21 8.11 22 9.93 22 12 22 14.05 21.21 15.88 20.43 17.7 19.08 19.06 17.73 20.43 15.9 21.21 14.08 22 12 22Z\"}},[(_vm.title)?_c('title',[_vm._v(_vm._s(_vm.title))]):_vm._e()])])])\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n      import API from \"!../../../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\";\n      import domAPI from \"!../../../../node_modules/style-loader/dist/runtime/styleDomAPI.js\";\n      import insertFn from \"!../../../../node_modules/style-loader/dist/runtime/insertBySelector.js\";\n      import setAttributes from \"!../../../../node_modules/style-loader/dist/runtime/setAttributesWithoutAttributes.js\";\n      import insertStyleElement from \"!../../../../node_modules/style-loader/dist/runtime/insertStyleElement.js\";\n      import styleTagTransformFn from \"!../../../../node_modules/style-loader/dist/runtime/styleTagTransform.js\";\n      import content, * as namedExport from \"!!../../../../node_modules/css-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/sass-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./NavigationQuota.vue?vue&type=style&index=0&id=062ef4b2&prod&lang=scss&scoped=true\";\n      \n      \n\nvar options = {};\n\noptions.styleTagTransform = styleTagTransformFn;\noptions.setAttributes = setAttributes;\noptions.insert = insertFn.bind(null, \"head\");\noptions.domAPI = domAPI;\noptions.insertStyleElement = insertStyleElement;\n\nvar update = API(content, options);\n\n\n\nexport * from \"!!../../../../node_modules/css-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/sass-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./NavigationQuota.vue?vue&type=style&index=0&id=062ef4b2&prod&lang=scss&scoped=true\";\n       export default content && content.locals ? content.locals : undefined;\n","import { render, staticRenderFns } from \"./NavigationQuota.vue?vue&type=template&id=062ef4b2&scoped=true\"\nimport script from \"./NavigationQuota.vue?vue&type=script&lang=js\"\nexport * from \"./NavigationQuota.vue?vue&type=script&lang=js\"\nimport style0 from \"./NavigationQuota.vue?vue&type=style&index=0&id=062ef4b2&prod&lang=scss&scoped=true\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n  script,\n  render,\n  staticRenderFns,\n  false,\n  null,\n  \"062ef4b2\",\n  null\n  \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;return (_vm.storageStats)?_c('NcAppNavigationItem',{staticClass:\"app-navigation-entry__settings-quota\",class:{ 'app-navigation-entry__settings-quota--not-unlimited': _vm.storageStats.quota >= 0 },attrs:{\"aria-description\":_vm.t('files', 'Storage information'),\"loading\":_vm.loadingStorageStats,\"name\":_vm.storageStatsTitle,\"title\":_vm.storageStatsTooltip,\"data-cy-files-navigation-settings-quota\":\"\"},on:{\"click\":function($event){$event.stopPropagation();$event.preventDefault();return _vm.debounceUpdateStorageStats.apply(null, arguments)}}},[_c('ChartPie',{attrs:{\"slot\":\"icon\",\"size\":20},slot:\"icon\"}),_vm._v(\" \"),(_vm.storageStats.quota >= 0)?_c('NcProgressBar',{attrs:{\"slot\":\"extra\",\"aria-label\":_vm.t('files', 'Storage quota'),\"error\":_vm.storageStats.relative > 80,\"value\":Math.min(_vm.storageStats.relative, 100)},slot:\"extra\"}):_vm._e()],1):_vm._e()\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","var render = function render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return _c(_setup.NcAppSettingsDialog,{attrs:{\"legacy\":false,\"name\":_setup.t('files', 'Files settings'),\"no-version\":\"\",\"open\":_vm.open,\"show-navigation\":\"\"},on:{\"update:open\":function($event){return _setup.emit('close')}}},[_c(_setup.FilesAppSettingsGeneral),_vm._v(\" \"),_c(_setup.FilesAppSettingsAppearance),_vm._v(\" \"),_c(_setup.FilesAppSettingsLegacyApi),_vm._v(\" \"),_c(_setup.FilesAppSettingsWarnings),_vm._v(\" \"),_c(_setup.FilesAppSettingsWebDav),_vm._v(\" \"),_c(_setup.FilesAppSettingsShortcuts)],1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","var render = function render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return _c(_setup.NcAppSettingsSection,{attrs:{\"id\":\"appearance\",\"name\":_setup.t('files', 'Appearance')}},[_c(_setup.NcFormBox,[_c(_setup.NcFormBoxSwitch,{attrs:{\"label\":_setup.t('files', 'Show hidden files')},on:{\"update:modelValue\":function($event){return _setup.store.update('show_hidden', $event)}},model:{value:(_setup.store.userConfig.show_hidden),callback:function ($$v) {_vm.$set(_setup.store.userConfig, \"show_hidden\", $$v)},expression:\"store.userConfig.show_hidden\"}}),_vm._v(\" \"),_c(_setup.NcFormBoxSwitch,{attrs:{\"label\":_setup.t('files', 'Show file type column')},on:{\"update:modelValue\":function($event){return _setup.store.update('show_mime_column', $event)}},model:{value:(_setup.store.userConfig.show_mime_column),callback:function ($$v) {_vm.$set(_setup.store.userConfig, \"show_mime_column\", $$v)},expression:\"store.userConfig.show_mime_column\"}}),_vm._v(\" \"),_c(_setup.NcFormBoxSwitch,{attrs:{\"label\":_setup.t('files', 'Show file extensions')},on:{\"update:modelValue\":function($event){return _setup.store.update('show_files_extensions', $event)}},model:{value:(_setup.store.userConfig.show_files_extensions),callback:function ($$v) {_vm.$set(_setup.store.userConfig, \"show_files_extensions\", $$v)},expression:\"store.userConfig.show_files_extensions\"}}),_vm._v(\" \"),_c(_setup.NcFormBoxSwitch,{attrs:{\"label\":_setup.t('files', 'Crop image previews')},on:{\"update:modelValue\":function($event){return _setup.store.update('crop_image_previews', $event)}},model:{value:(_setup.store.userConfig.crop_image_previews),callback:function ($$v) {_vm.$set(_setup.store.userConfig, \"crop_image_previews\", $$v)},expression:\"store.userConfig.crop_image_previews\"}})],1)],1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import mod from \"-!../../../../../node_modules/babel-loader/lib/index.js!../../../../../node_modules/ts-loader/index.js??clonedRuleSet-6.use[1]!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./FilesAppSettingsAppearance.vue?vue&type=script&setup=true&lang=ts\"; export default mod; export * from \"-!../../../../../node_modules/babel-loader/lib/index.js!../../../../../node_modules/ts-loader/index.js??clonedRuleSet-6.use[1]!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./FilesAppSettingsAppearance.vue?vue&type=script&setup=true&lang=ts\"","import { render, staticRenderFns } from \"./FilesAppSettingsAppearance.vue?vue&type=template&id=1d0fcc36\"\nimport script from \"./FilesAppSettingsAppearance.vue?vue&type=script&setup=true&lang=ts\"\nexport * from \"./FilesAppSettingsAppearance.vue?vue&type=script&setup=true&lang=ts\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n  script,\n  render,\n  staticRenderFns,\n  false,\n  null,\n  null,\n  null\n  \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return _c(_setup.NcAppSettingsSection,{attrs:{\"id\":\"settings\",\"name\":_setup.t('files', 'General')}},[_c(_setup.NcFormBox,[_c(_setup.NcFormBoxSwitch,{attrs:{\"label\":_setup.t('files', 'Sort favorites first')},on:{\"update:modelValue\":function($event){return _setup.store.update('sort_favorites_first', $event)}},model:{value:(_setup.store.userConfig.sort_favorites_first),callback:function ($$v) {_vm.$set(_setup.store.userConfig, \"sort_favorites_first\", $$v)},expression:\"store.userConfig.sort_favorites_first\"}}),_vm._v(\" \"),_c(_setup.NcFormBoxSwitch,{attrs:{\"label\":_setup.t('files', 'Sort folders before files')},on:{\"update:modelValue\":function($event){return _setup.store.update('sort_folders_first', $event)}},model:{value:(_setup.store.userConfig.sort_folders_first),callback:function ($$v) {_vm.$set(_setup.store.userConfig, \"sort_folders_first\", $$v)},expression:\"store.userConfig.sort_folders_first\"}}),_vm._v(\" \"),_c(_setup.NcFormBoxSwitch,{attrs:{\"label\":_setup.t('files', 'Enable folder tree view')},on:{\"update:modelValue\":function($event){return _setup.store.update('folder_tree', $event)}},model:{value:(_setup.store.userConfig.folder_tree),callback:function ($$v) {_vm.$set(_setup.store.userConfig, \"folder_tree\", $$v)},expression:\"store.userConfig.folder_tree\"}})],1),_vm._v(\" \"),_c(_setup.NcRadioGroup,{attrs:{\"label\":_setup.t('files', 'Default view')},on:{\"update:modelValue\":function($event){return _setup.store.update('default_view', $event)}},model:{value:(_setup.store.userConfig.default_view),callback:function ($$v) {_vm.$set(_setup.store.userConfig, \"default_view\", $$v)},expression:\"store.userConfig.default_view\"}},[_c(_setup.NcRadioGroupButton,{attrs:{\"label\":_setup.t('files', 'All files'),\"value\":\"files\"},scopedSlots:_vm._u([{key:\"icon\",fn:function(){return [_c(_setup.NcIconSvgWrapper,{attrs:{\"path\":_setup.mdiFolderOutline}})]},proxy:true}])}),_vm._v(\" \"),_c(_setup.NcRadioGroupButton,{attrs:{\"label\":_setup.t('files', 'Personal files'),\"value\":\"personal\"},scopedSlots:_vm._u([{key:\"icon\",fn:function(){return [_c(_setup.NcIconSvgWrapper,{attrs:{\"path\":_setup.mdiAccountOutline}})]},proxy:true}])})],1)],1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import mod from \"-!../../../../../node_modules/babel-loader/lib/index.js!../../../../../node_modules/ts-loader/index.js??clonedRuleSet-6.use[1]!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./FilesAppSettingsGeneral.vue?vue&type=script&setup=true&lang=ts\"; export default mod; export * from \"-!../../../../../node_modules/babel-loader/lib/index.js!../../../../../node_modules/ts-loader/index.js??clonedRuleSet-6.use[1]!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./FilesAppSettingsGeneral.vue?vue&type=script&setup=true&lang=ts\"","import { render, staticRenderFns } from \"./FilesAppSettingsGeneral.vue?vue&type=template&id=286756ea\"\nimport script from \"./FilesAppSettingsGeneral.vue?vue&type=script&setup=true&lang=ts\"\nexport * from \"./FilesAppSettingsGeneral.vue?vue&type=script&setup=true&lang=ts\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n  script,\n  render,\n  staticRenderFns,\n  false,\n  null,\n  null,\n  null\n  \n)\n\nexport default component.exports","import mod from \"-!../../../../../node_modules/babel-loader/lib/index.js!../../../../../node_modules/ts-loader/index.js??clonedRuleSet-6.use[1]!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./FilesAppSettingsLegacyApiEntry.vue?vue&type=script&setup=true&lang=ts\"; export default mod; export * from \"-!../../../../../node_modules/babel-loader/lib/index.js!../../../../../node_modules/ts-loader/index.js??clonedRuleSet-6.use[1]!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./FilesAppSettingsLegacyApiEntry.vue?vue&type=script&setup=true&lang=ts\"","var render = function render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return _c('div',{ref:\"el\"})\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import { render, staticRenderFns } from \"./FilesAppSettingsLegacyApiEntry.vue?vue&type=template&id=6d8612e1\"\nimport script from \"./FilesAppSettingsLegacyApiEntry.vue?vue&type=script&setup=true&lang=ts\"\nexport * from \"./FilesAppSettingsLegacyApiEntry.vue?vue&type=script&setup=true&lang=ts\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n  script,\n  render,\n  staticRenderFns,\n  false,\n  null,\n  null,\n  null\n  \n)\n\nexport default component.exports","import mod from \"-!../../../../../node_modules/babel-loader/lib/index.js!../../../../../node_modules/ts-loader/index.js??clonedRuleSet-6.use[1]!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./FilesAppSettingsLegacyApi.vue?vue&type=script&setup=true&lang=ts\"; export default mod; export * from \"-!../../../../../node_modules/babel-loader/lib/index.js!../../../../../node_modules/ts-loader/index.js??clonedRuleSet-6.use[1]!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./FilesAppSettingsLegacyApi.vue?vue&type=script&setup=true&lang=ts\"","var render = function render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return (_setup.apiSettings.length !== 0)?_c(_setup.NcAppSettingsSection,{attrs:{\"id\":\"api-settings\",\"name\":_setup.t('files', 'Additional settings')}},_vm._l((_setup.apiSettings),function(setting){return _c(_setup.FilesAppSettingsLegacyApiEntry,{key:setting.name,attrs:{\"setting\":setting}})}),1):_vm._e()\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import { render, staticRenderFns } from \"./FilesAppSettingsLegacyApi.vue?vue&type=template&id=f4559f9c\"\nimport script from \"./FilesAppSettingsLegacyApi.vue?vue&type=script&setup=true&lang=ts\"\nexport * from \"./FilesAppSettingsLegacyApi.vue?vue&type=script&setup=true&lang=ts\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n  script,\n  render,\n  staticRenderFns,\n  false,\n  null,\n  null,\n  null\n  \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return _c(_setup.NcAppSettingsShortcutsSection,[_c(_setup.NcHotkeyList,{attrs:{\"label\":_setup.t('files', 'Actions')}},[_c(_setup.NcHotkey,{attrs:{\"label\":_setup.t('files', 'File actions'),\"hotkey\":\"A\"}}),_vm._v(\" \"),_vm._l((_setup.actionHotkeys),function(hotkey){return _c(_setup.NcHotkey,{key:hotkey.id,attrs:{\"label\":hotkey.label,\"hotkey\":hotkey.hotkey}})})],2),_vm._v(\" \"),_c(_setup.NcHotkeyList,{attrs:{\"label\":_setup.t('files', 'Selection')}},[_c(_setup.NcHotkey,{attrs:{\"label\":_setup.t('files', 'Select all files'),\"hotkey\":\"Control A\"}}),_vm._v(\" \"),_c(_setup.NcHotkey,{attrs:{\"label\":_setup.t('files', 'Deselect all'),\"hotkey\":\"Escape\"}}),_vm._v(\" \"),_c(_setup.NcHotkey,{attrs:{\"label\":_setup.t('files', 'Select or deselect'),\"hotkey\":\"Control Space\"}}),_vm._v(\" \"),_c(_setup.NcHotkey,{attrs:{\"label\":_setup.t('files', 'Select a range'),\"hotkey\":\"Control Shift Space\"}})],1),_vm._v(\" \"),_c(_setup.NcHotkeyList,{attrs:{\"label\":_setup.t('files', 'Navigation')}},[_c(_setup.NcHotkey,{attrs:{\"label\":_setup.t('files', 'Go to parent folder'),\"hotkey\":\"Alt ArrowUp\"}}),_vm._v(\" \"),_c(_setup.NcHotkey,{attrs:{\"label\":_setup.t('files', 'Go to file above'),\"hotkey\":\"ArrowUp\"}}),_vm._v(\" \"),_c(_setup.NcHotkey,{attrs:{\"label\":_setup.t('files', 'Go to file below'),\"hotkey\":\"ArrowDown\"}}),_vm._v(\" \"),_c(_setup.NcHotkey,{attrs:{\"label\":_setup.t('files', 'Go left in grid'),\"hotkey\":\"ArrowLeft\"}}),_vm._v(\" \"),_c(_setup.NcHotkey,{attrs:{\"label\":_setup.t('files', 'Go right in grid'),\"hotkey\":\"ArrowRight\"}})],1),_vm._v(\" \"),_c(_setup.NcHotkeyList,{attrs:{\"label\":_setup.t('files', 'View')}},[_c(_setup.NcHotkey,{attrs:{\"label\":_setup.t('files', 'Toggle grid view'),\"hotkey\":\"V\"}}),_vm._v(\" \"),_c(_setup.NcHotkey,{attrs:{\"label\":_setup.t('files', 'Show those shortcuts'),\"hotkey\":\"?\"}})],1)],1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import mod from \"-!../../../../../node_modules/babel-loader/lib/index.js!../../../../../node_modules/ts-loader/index.js??clonedRuleSet-6.use[1]!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./FilesAppSettingsShortcuts.vue?vue&type=script&setup=true&lang=ts\"; export default mod; export * from \"-!../../../../../node_modules/babel-loader/lib/index.js!../../../../../node_modules/ts-loader/index.js??clonedRuleSet-6.use[1]!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./FilesAppSettingsShortcuts.vue?vue&type=script&setup=true&lang=ts\"","import { render, staticRenderFns } from \"./FilesAppSettingsShortcuts.vue?vue&type=template&id=5a8abf86\"\nimport script from \"./FilesAppSettingsShortcuts.vue?vue&type=script&setup=true&lang=ts\"\nexport * from \"./FilesAppSettingsShortcuts.vue?vue&type=script&setup=true&lang=ts\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n  script,\n  render,\n  staticRenderFns,\n  false,\n  null,\n  null,\n  null\n  \n)\n\nexport default component.exports","import mod from \"-!../../../../../node_modules/babel-loader/lib/index.js!../../../../../node_modules/ts-loader/index.js??clonedRuleSet-6.use[1]!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./FilesAppSettingsWarnings.vue?vue&type=script&lang=ts&setup=true\"; export default mod; export * from \"-!../../../../../node_modules/babel-loader/lib/index.js!../../../../../node_modules/ts-loader/index.js??clonedRuleSet-6.use[1]!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./FilesAppSettingsWarnings.vue?vue&type=script&lang=ts&setup=true\"","var render = function render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return _c(_setup.NcAppSettingsSection,{attrs:{\"id\":\"warning\",\"name\":_setup.t('files', 'Warnings')}},[_c(_setup.NcFormBox,[_c(_setup.NcFormBoxSwitch,{attrs:{\"label\":_setup.t('files', 'Warn before changing a file extension')},on:{\"update:modelValue\":function($event){return _setup.store.update('show_dialog_file_extension', $event)}},model:{value:(_setup.store.userConfig.show_dialog_file_extension),callback:function ($$v) {_vm.$set(_setup.store.userConfig, \"show_dialog_file_extension\", $$v)},expression:\"store.userConfig.show_dialog_file_extension\"}}),_vm._v(\" \"),_c(_setup.NcFormBoxSwitch,{attrs:{\"label\":_setup.t('files', 'Warn before deleting a file')},on:{\"update:modelValue\":function($event){return _setup.store.update('show_dialog_deletion', $event)}},model:{value:(_setup.store.userConfig.show_dialog_deletion),callback:function ($$v) {_vm.$set(_setup.store.userConfig, \"show_dialog_deletion\", $$v)},expression:\"store.userConfig.show_dialog_deletion\"}})],1)],1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import { render, staticRenderFns } from \"./FilesAppSettingsWarnings.vue?vue&type=template&id=02608f74\"\nimport script from \"./FilesAppSettingsWarnings.vue?vue&type=script&lang=ts&setup=true\"\nexport * from \"./FilesAppSettingsWarnings.vue?vue&type=script&lang=ts&setup=true\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n  script,\n  render,\n  staticRenderFns,\n  false,\n  null,\n  null,\n  null\n  \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return _c(_setup.NcAppSettingsSection,{attrs:{\"id\":\"webdav\",\"name\":\"WebDAV\"}},[_c(_setup.NcFormBox,[_c(_setup.NcFormBoxCopyButton,{attrs:{\"label\":_setup.t('files', 'WebDAV URL'),\"value\":_setup.webDavUrl}}),_vm._v(\" \"),(_setup.isTwoFactorEnabled)?_c(_setup.NcFormBoxButton,{attrs:{\"label\":_setup.t('files', 'Create an app password'),\"description\":_setup.t('files', 'Required for WebDAV authentication because Two-Factor Authentication is enabled for this account.'),\"href\":_setup.appPasswordUrl,\"target\":\"_blank\"}}):_vm._e(),_vm._v(\" \"),_c(_setup.NcFormBoxButton,{attrs:{\"label\":_setup.t('files', 'How to access files using WebDAV'),\"href\":_setup.webDavDocsUrl,\"target\":\"_blank\"}})],1)],1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import mod from \"-!../../../../../node_modules/babel-loader/lib/index.js!../../../../../node_modules/ts-loader/index.js??clonedRuleSet-6.use[1]!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./FilesAppSettingsWebDav.vue?vue&type=script&lang=ts&setup=true\"; export default mod; export * from \"-!../../../../../node_modules/babel-loader/lib/index.js!../../../../../node_modules/ts-loader/index.js??clonedRuleSet-6.use[1]!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./FilesAppSettingsWebDav.vue?vue&type=script&lang=ts&setup=true\"","import { render, staticRenderFns } from \"./FilesAppSettingsWebDav.vue?vue&type=template&id=601f53e8\"\nimport script from \"./FilesAppSettingsWebDav.vue?vue&type=script&lang=ts&setup=true\"\nexport * from \"./FilesAppSettingsWebDav.vue?vue&type=script&lang=ts&setup=true\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n  script,\n  render,\n  staticRenderFns,\n  false,\n  null,\n  null,\n  null\n  \n)\n\nexport default component.exports","import mod from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/ts-loader/index.js??clonedRuleSet-6.use[1]!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./FilesAppSettings.vue?vue&type=script&setup=true&lang=ts\"; export default mod; export * from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/ts-loader/index.js??clonedRuleSet-6.use[1]!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./FilesAppSettings.vue?vue&type=script&setup=true&lang=ts\"","import { render, staticRenderFns } from \"./FilesAppSettings.vue?vue&type=template&id=72195bd8\"\nimport script from \"./FilesAppSettings.vue?vue&type=script&setup=true&lang=ts\"\nexport * from \"./FilesAppSettings.vue?vue&type=script&setup=true&lang=ts\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n  script,\n  render,\n  staticRenderFns,\n  false,\n  null,\n  null,\n  null\n  \n)\n\nexport default component.exports","import mod from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/ts-loader/index.js??clonedRuleSet-6.use[1]!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./FilesNavigation.vue?vue&type=script&setup=true&lang=ts\"; export default mod; export * from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/ts-loader/index.js??clonedRuleSet-6.use[1]!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./FilesNavigation.vue?vue&type=script&setup=true&lang=ts\"","\n      import API from \"!../../../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\";\n      import domAPI from \"!../../../../node_modules/style-loader/dist/runtime/styleDomAPI.js\";\n      import insertFn from \"!../../../../node_modules/style-loader/dist/runtime/insertBySelector.js\";\n      import setAttributes from \"!../../../../node_modules/style-loader/dist/runtime/setAttributesWithoutAttributes.js\";\n      import insertStyleElement from \"!../../../../node_modules/style-loader/dist/runtime/insertStyleElement.js\";\n      import styleTagTransformFn from \"!../../../../node_modules/style-loader/dist/runtime/styleTagTransform.js\";\n      import content, * as namedExport from \"!!../../../../node_modules/css-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/sass-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./FilesNavigation.vue?vue&type=style&index=0&id=b3d7fbf2&prod&scoped=true&lang=scss\";\n      \n      \n\nvar options = {};\n\noptions.styleTagTransform = styleTagTransformFn;\noptions.setAttributes = setAttributes;\noptions.insert = insertFn.bind(null, \"head\");\noptions.domAPI = domAPI;\noptions.insertStyleElement = insertStyleElement;\n\nvar update = API(content, options);\n\n\n\nexport * from \"!!../../../../node_modules/css-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/sass-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./FilesNavigation.vue?vue&type=style&index=0&id=b3d7fbf2&prod&scoped=true&lang=scss\";\n       export default content && content.locals ? content.locals : undefined;\n","import { render, staticRenderFns } from \"./FilesNavigation.vue?vue&type=template&id=b3d7fbf2&scoped=true\"\nimport script from \"./FilesNavigation.vue?vue&type=script&setup=true&lang=ts\"\nexport * from \"./FilesNavigation.vue?vue&type=script&setup=true&lang=ts\"\nimport style0 from \"./FilesNavigation.vue?vue&type=style&index=0&id=b3d7fbf2&prod&scoped=true&lang=scss\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n  script,\n  render,\n  staticRenderFns,\n  false,\n  null,\n  \"b3d7fbf2\",\n  null\n  \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return _c(_setup.NcAppSidebar,{attrs:{\"data-cy-sidebar\":\"\",\"force-menu\":\"\",\"active\":_setup.sidebar.activeTab,\"background\":_setup.background,\"empty\":!_setup.sidebar.hasContext,\"loading\":!_setup.sidebar.hasContext,\"name\":_setup.sidebar.currentNode?.displayname ?? _setup.t('files', 'Loading …'),\"no-toggle\":\"\",\"open\":_setup.sidebar.isOpen},on:{\"update:active\":function($event){return _vm.$set(_setup.sidebar, \"activeTab\", $event)},\"closed\":_setup.onClosed,\"opened\":_setup.onOpened,\"update:open\":_setup.onToggle},scopedSlots:_vm._u([(_setup.sidebar.currentNode)?{key:\"subname\",fn:function(){return [_c(_setup.FilesSidebarSubname,{attrs:{\"node\":_setup.sidebar.currentNode}})]},proxy:true}:null,(_setup.sidebar.currentContext)?{key:\"secondary-actions\",fn:function(){return _vm._l((_setup.sidebar.currentActions),function(action){return _c(_setup.NcActionButton,{key:action.id,attrs:{\"close-after-click\":\"\"},on:{\"click\":function($event){return action.onClick(_setup.sidebar.currentContext)}},scopedSlots:_vm._u([{key:\"icon\",fn:function(){return [_c(_setup.NcIconSvgWrapper,{attrs:{\"svg\":action.iconSvgInline(_setup.sidebar.currentContext)}})]},proxy:true}],null,true)},[_vm._v(\"\\n\\t\\t\\t\"+_vm._s(action.displayName(_setup.sidebar.currentContext))+\"\\n\\t\\t\")])})},proxy:true}:null],null,true)},[_vm._v(\" \"),_vm._v(\" \"),(_setup.sidebar.hasContext)?_vm._l((_setup.sidebar.currentTabs),function(tab){return _c(_setup.FilesSidebarTab,{key:tab.id,attrs:{\"active\":_setup.sidebar.activeTab === tab.id,\"tab\":tab}})}):_vm._e()],2)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","var render = function render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return _c('div',{class:_vm.$style.filesSidebarSubname},[(_setup.isFavourited)?_c(_setup.NcIconSvgWrapper,{attrs:{\"inline\":\"\",\"path\":_setup.mdiStar,\"name\":_setup.t('files', 'Favorite')}}):_vm._e(),_vm._v(\" \"),_c('span',[_vm._v(_vm._s(_setup.size))]),_vm._v(\" \"),(_vm.node.mtime)?_c('span',[_c('span',{class:_vm.$style.filesSidebarSubname__separator},[_vm._v(\"•\")]),_vm._v(\" \"),_c(_setup.NcDateTime,{attrs:{\"timestamp\":_vm.node.mtime}})],1):_vm._e(),_vm._v(\" \"),(_vm.node.owner)?[_c('span',{class:_vm.$style.filesSidebarSubname__separator},[_vm._v(\"•\")]),_vm._v(\" \"),_c(_setup.NcUserBubble,{class:_vm.$style.filesSidebarSubname__userBubble,attrs:{\"title\":_setup.t('files', 'Owner'),\"user\":_vm.node.owner,\"display-name\":_vm.node.attributes['owner-display-name']}})]:_vm._e()],2)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import mod from \"-!../../../../../node_modules/babel-loader/lib/index.js!../../../../../node_modules/ts-loader/index.js??clonedRuleSet-6.use[1]!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./FilesSidebarSubname.vue?vue&type=script&setup=true&lang=ts\"; export default mod; export * from \"-!../../../../../node_modules/babel-loader/lib/index.js!../../../../../node_modules/ts-loader/index.js??clonedRuleSet-6.use[1]!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./FilesSidebarSubname.vue?vue&type=script&setup=true&lang=ts\"","\n      import API from \"!../../../../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\";\n      import domAPI from \"!../../../../../node_modules/style-loader/dist/runtime/styleDomAPI.js\";\n      import insertFn from \"!../../../../../node_modules/style-loader/dist/runtime/insertBySelector.js\";\n      import setAttributes from \"!../../../../../node_modules/style-loader/dist/runtime/setAttributesWithoutAttributes.js\";\n      import insertStyleElement from \"!../../../../../node_modules/style-loader/dist/runtime/insertStyleElement.js\";\n      import styleTagTransformFn from \"!../../../../../node_modules/style-loader/dist/runtime/styleTagTransform.js\";\n      import content, * as namedExport from \"!!../../../../../node_modules/css-loader/dist/cjs.js??clonedRuleSet-3.use[1]!../../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./FilesSidebarSubname.vue?vue&type=style&index=0&id=7bd1e3c0&prod&module=true&lang=css\";\n      \n      \n\nvar options = {};\n\noptions.styleTagTransform = styleTagTransformFn;\noptions.setAttributes = setAttributes;\noptions.insert = insertFn.bind(null, \"head\");\noptions.domAPI = domAPI;\noptions.insertStyleElement = insertStyleElement;\n\nvar update = API(content, options);\n\n\n\nexport * from \"!!../../../../../node_modules/css-loader/dist/cjs.js??clonedRuleSet-3.use[1]!../../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./FilesSidebarSubname.vue?vue&type=style&index=0&id=7bd1e3c0&prod&module=true&lang=css\";\n       export default content && content.locals ? content.locals : undefined;\n","import { render, staticRenderFns } from \"./FilesSidebarSubname.vue?vue&type=template&id=7bd1e3c0\"\nimport script from \"./FilesSidebarSubname.vue?vue&type=script&setup=true&lang=ts\"\nexport * from \"./FilesSidebarSubname.vue?vue&type=script&setup=true&lang=ts\"\nimport style0 from \"./FilesSidebarSubname.vue?vue&type=style&index=0&id=7bd1e3c0&prod&module=true&lang=css\"\n\n\n\n\nfunction injectStyles (context) {\n  \n  this[\"$style\"] = (style0.locals || style0)\n\n}\n\n/* normalize component */\nimport normalizer from \"!../../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n  script,\n  render,\n  staticRenderFns,\n  false,\n  injectStyles,\n  null,\n  null\n  \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return _c(_setup.NcAppSidebarTab,{attrs:{\"id\":_vm.tab.id,\"order\":_vm.tab.order,\"name\":_vm.tab.displayName},scopedSlots:_vm._u([{key:\"icon\",fn:function(){return [_c(_setup.NcIconSvgWrapper,{attrs:{\"svg\":_vm.tab.iconSvgInline}})]},proxy:true}])},[_vm._v(\" \"),(_setup.loading)?_c(_setup.NcEmptyContent,{scopedSlots:_vm._u([{key:\"icon\",fn:function(){return [_c(_setup.NcLoadingIcon)]},proxy:true}],null,false,1675040227)}):_c(_vm.tab.tagName,{tag:\"component\",domProps:{\"active\":_vm.active,\"node\":_setup.sidebar.currentNode,\"folder\":_setup.activeStore.activeFolder,\"view\":_setup.activeStore.activeView}})],1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import { N as NcActionButton } from \"./chunks/NcActionButton-1gSJfFUC.mjs\";\nimport { N as NcActionButtonGroup } from \"./chunks/NcActionButtonGroup-BxvJmEwM.mjs\";\nimport NcActionCaption from \"./Components/NcActionCaption.mjs\";\nimport { N as NcActionCheckbox } from \"./chunks/NcActionCheckbox-23CmleUh.mjs\";\nimport { N as NcActionInput } from \"./chunks/NcActionInput-BLfZBCFj.mjs\";\nimport NcActionLink from \"./Components/NcActionLink.mjs\";\nimport { N as NcActionRadio } from \"./chunks/NcActionRadio-Dd3CsuiD.mjs\";\nimport NcActionRouter from \"./Components/NcActionRouter.mjs\";\nimport { N as NcActions } from \"./chunks/NcActions-B7LKaVy0.mjs\";\nimport NcActionSeparator from \"./Components/NcActionSeparator.mjs\";\nimport NcActionText from \"./Components/NcActionText.mjs\";\nimport { N as NcActionTextEditable } from \"./chunks/NcActionTextEditable-CIsAP-pp.mjs\";\nimport { N as NcAppContent } from \"./chunks/NcAppContent-BQbYzcUh.mjs\";\nimport NcAppContentDetails from \"./Components/NcAppContentDetails.mjs\";\nimport NcAppContentList from \"./Components/NcAppContentList.mjs\";\nimport { N as NcAppNavigation } from \"./chunks/NcAppNavigation-Cu8LpQSI.mjs\";\nimport { N as NcAppNavigationCaption } from \"./chunks/NcAppNavigationCaption-CQaKs-Zf.mjs\";\nimport NcAppNavigationIconBullet from \"./Components/NcAppNavigationIconBullet.mjs\";\nimport { N as NcAppNavigationItem } from \"./chunks/NcAppNavigationItem-ryrQ6jep.mjs\";\nimport NcAppNavigationList from \"./Components/NcAppNavigationList.mjs\";\nimport { N as NcAppNavigationNew } from \"./chunks/NcAppNavigationNew-t3Rkrwjh.mjs\";\nimport { N as NcAppNavigationNewItem } from \"./chunks/NcAppNavigationNewItem-_8ozWEv3.mjs\";\nimport { N as NcAppNavigationSearch } from \"./chunks/NcAppNavigationSearch-CSih_quP.mjs\";\nimport { N as NcAppNavigationSettings } from \"./chunks/NcAppNavigationSettings-Eseo9MMQ.mjs\";\nimport NcAppNavigationSpacer from \"./Components/NcAppNavigationSpacer.mjs\";\nimport { N as NcAppSettingsDialog } from \"./chunks/NcAppSettingsDialog-zwmLtX7z.mjs\";\nimport { N as NcAppSettingsSection } from \"./chunks/NcAppSettingsSection-BjQllLEA.mjs\";\nimport { N as NcAppSettingsShortcutsSection } from \"./chunks/NcAppSettingsShortcutsSection-CiLZpXkV.mjs\";\nimport { N as NcAppSidebar } from \"./chunks/NcAppSidebar-BiIeJ3p1.mjs\";\nimport { N as NcAppSidebarHeader } from \"./chunks/NcAppSidebarHeader-CBE4tNYb.mjs\";\nimport NcAppSidebarTab from \"./Components/NcAppSidebarTab.mjs\";\nimport { N as NcAssistantButton } from \"./chunks/NcAssistantButton-Cp9x57gS.mjs\";\nimport NcAssistantContent from \"./Components/NcAssistantContent.mjs\";\nimport { N as NcAssistantIcon } from \"./chunks/NcAssistantIcon-DCx6AaSW.mjs\";\nimport { N as NcAvatar } from \"./chunks/NcAvatar-OCD_HmOb.mjs\";\nimport { u } from \"./chunks/NcAvatar-OCD_HmOb.mjs\";\nimport { N as NcBlurHash } from \"./chunks/NcBlurHash-KSj0HXbX.mjs\";\nimport { N as NcBreadcrumb } from \"./chunks/NcBreadcrumb-UmBT5BsM.mjs\";\nimport { N as NcBreadcrumbs } from \"./chunks/NcBreadcrumbs-B8iMbaQb.mjs\";\nimport { N as NcButton } from \"./chunks/NcButton-Dz2O6cSU.mjs\";\nimport { N as NcCheckboxRadioSwitch } from \"./chunks/NcCheckboxRadioSwitch-Di43R9CE.mjs\";\nimport { N as NcCollectionList } from \"./chunks/NcCollectionList-C-LCG1Ob.mjs\";\nimport { N as NcColorPicker } from \"./chunks/NcColorPicker-DPUDuNp4.mjs\";\nimport { N as NcContent } from \"./chunks/NcContent-mCqWZXj_.mjs\";\nimport { N as NcCounterBubble } from \"./chunks/NcCounterBubble-oxV8oMlX.mjs\";\nimport { N as NcDashboardWidget } from \"./chunks/NcDashboardWidget-CrInkRLf.mjs\";\nimport { N as NcDashboardWidgetItem } from \"./chunks/NcDashboardWidgetItem-DwvrP3Fa.mjs\";\nimport { N as NcDateTime } from \"./chunks/NcDateTime-enXYuwj8.mjs\";\nimport NcDateTimePicker from \"./Components/NcDateTimePicker.mjs\";\nimport NcDateTimePickerNative from \"./Components/NcDateTimePickerNative.mjs\";\nimport { N as NcDialog } from \"./chunks/NcDialog-Bu9xyU24.mjs\";\nimport { N as NcDialogButton } from \"./chunks/NcDialogButton-DGBhiACK.mjs\";\nimport NcEllipsisedOption from \"./Components/NcEllipsisedOption.mjs\";\nimport { N as NcEmojiPicker } from \"./chunks/NcEmojiPicker-DOFfHZjX.mjs\";\nimport NcEmptyContent from \"./Components/NcEmptyContent.mjs\";\nimport { N as NcFormBox } from \"./chunks/NcFormBox-DtoCXLMx.mjs\";\nimport { N as NcFormBoxButton } from \"./chunks/NcFormBoxButton-BQi11xQX.mjs\";\nimport { N as NcFormBoxCopyButton } from \"./chunks/NcFormBoxCopyButton-DtJpZ971.mjs\";\nimport { N as NcFormBoxSwitch } from \"./chunks/NcFormBoxSwitch-E6sxPL4n.mjs\";\nimport { N as NcFormGroup } from \"./chunks/NcFormGroup-DblLoFMf.mjs\";\nimport NcGuestContent from \"./Components/NcGuestContent.mjs\";\nimport { N as NcHeaderButton } from \"./chunks/NcHeaderButton-Dvo1_Bwc.mjs\";\nimport { N as NcHeaderMenu } from \"./chunks/NcHeaderMenu-Cuh8ay0F.mjs\";\nimport { N as NcHighlight } from \"./chunks/index-CxTT94_h.mjs\";\nimport { N as NcHotkey } from \"./chunks/NcHotkey-Cv2Je6eF.mjs\";\nimport { N as NcHotkeyList } from \"./chunks/NcHotkeyList-CrAcIN70.mjs\";\nimport { N as NcIconSvgWrapper } from \"./chunks/NcIconSvgWrapper-Bui9PhAS.mjs\";\nimport { N as NcInputField } from \"./chunks/NcInputField-DyXCCIOM.mjs\";\nimport { N as NcListItem } from \"./chunks/NcListItem-DzezqYDz.mjs\";\nimport { N as NcListItemIcon } from \"./chunks/NcListItemIcon-BKWOSFfG.mjs\";\nimport NcLoadingIcon from \"./Components/NcLoadingIcon.mjs\";\nimport NcModal from \"./Components/NcModal.mjs\";\nimport NcNoteCard from \"./Components/NcNoteCard.mjs\";\nimport { N as NcPasswordField } from \"./chunks/NcPasswordField-Di_KXR_G.mjs\";\nimport { N as NcPopover } from \"./chunks/NcPopover-UAg26Qdd.mjs\";\nimport { N as NcProgressBar } from \"./chunks/NcProgressBar-D7zYeXBH.mjs\";\nimport { N as NcRadioGroup } from \"./chunks/NcRadioGroup-BbBX9X2J.mjs\";\nimport { N as NcRadioGroupButton } from \"./chunks/NcRadioGroupButton-BkxlxjIA.mjs\";\nimport { N as NcRelatedResourcesPanel } from \"./chunks/NcRelatedResourcesPanel-MmhCAbd4.mjs\";\nimport { N as NcMentionBubble } from \"./chunks/index-TmAR7I2T.mjs\";\nimport { r } from \"./chunks/index-TmAR7I2T.mjs\";\nimport { N as NcAutoCompleteResult, a as NcRichContenteditable } from \"./chunks/NcRichContenteditable-BDjKhFe3.mjs\";\nimport \"@nextcloud/auth\";\nimport \"@nextcloud/axios\";\nimport \"@nextcloud/router\";\nimport \"@nextcloud/sharing/public\";\nimport \"@vueuse/core\";\nimport \"vue\";\nimport \"vue-router\";\nimport { a, g, b, c, s, d } from \"./chunks/referencePickerModal-BqYhlLYA.mjs\";\nimport { N, h, c as c2, i, e, r as r2, f, a as a2 } from \"./chunks/customPickerElements-DLFtgReB.mjs\";\nimport \"unist-builder\";\nimport \"unist-util-visit\";\nimport \"./chunks/logger-D3RVzcfQ.mjs\";\nimport { N as NcRichText } from \"./chunks/NcRichText-DTzKWfUk.mjs\";\nimport { N as NcSelect } from \"./chunks/NcSelect-BD9fhCVy.mjs\";\nimport { N as NcTextField } from \"./chunks/NcTextField-DLlQozKA.mjs\";\nimport \"@nextcloud/event-bus\";\nimport { N as NcSavingIndicatorIcon } from \"./chunks/NcSavingIndicatorIcon-U7AIamCl.mjs\";\nimport { N as NcSelectTags } from \"./chunks/NcSelectTags-AFttsKK_.mjs\";\nimport { N as NcSelectUsers } from \"./chunks/NcSelectUsers-BRDGLoPt.mjs\";\nimport { N as NcSettingsInputText } from \"./chunks/NcSettingsInputText-BeLtzRuE.mjs\";\nimport { N as NcSettingsSection } from \"./chunks/NcSettingsSection-CCJrqjyc.mjs\";\nimport { N as NcSettingsSelectGroup } from \"./chunks/NcSettingsSelectGroup-BqSdPsYY.mjs\";\nimport { N as NcTextArea } from \"./chunks/NcTextArea-DaYLP_Lc.mjs\";\nimport { N as NcThemeProvider } from \"./chunks/NcThemeProvider-BA_zMjAf.mjs\";\nimport { N as NcTimezonePicker } from \"./chunks/NcTimezonePicker-DTdF1yG4.mjs\";\nimport { N as NcUserBubble } from \"./chunks/NcUserBubble-CWgceS0Q.mjs\";\nimport { N as NcUserStatusIcon } from \"./chunks/NcUserStatusIcon-BjrsTrss.mjs\";\nimport NcVNodes from \"./Components/NcVNodes.mjs\";\nimport { useFormatDateTime, useFormatRelativeTime, useFormatTime } from \"./Composables/useFormatDateTime.mjs\";\nimport { useHotKey } from \"./Composables/useHotKey.mjs\";\nimport { useIsDarkTheme, useIsDarkThemeElement } from \"./Composables/useIsDarkTheme.mjs\";\nimport { isFullscreenState, useIsFullscreen } from \"./Composables/useIsFullscreen.mjs\";\nimport { MOBILE_BREAKPOINT, MOBILE_SMALL_BREAKPOINT, isMobileState, useIsMobile, useIsSmallMobile } from \"./Composables/useIsMobile.mjs\";\nimport { isA11yActivation } from \"./Functions/a11y.mjs\";\nimport { getEnabledContactsMenuActions, registerContactsMenuAction } from \"./Functions/contactsMenu.mjs\";\nimport { spawnDialog } from \"./Functions/dialog.mjs\";\nimport { E, a as a3, e as e2, g as g2, s as s2 } from \"./chunks/emoji-BY_D0V5K.mjs\";\nimport { checkIfDarkTheme, isDarkTheme } from \"./Functions/isDarkTheme.mjs\";\nimport { preloadImage } from \"./Functions/preloadImage.mjs\";\nimport { usernameToColor } from \"./Functions/usernameToColor.mjs\";\nimport directive from \"./Directives/Focus.mjs\";\nimport directive$1 from \"./Directives/Linkify.mjs\";\nimport \"./Directives/Tooltip.mjs\";\nimport { default as default2 } from \"./Mixins/clickOutsideOptions.mjs\";\nimport { default as default3 } from \"./Mixins/isFullscreen.mjs\";\nimport { default as default4 } from \"./Mixins/isMobile.mjs\";\nimport { VTooltip } from \"floating-vue\";\nimport { VTooltip as VTooltip2 } from \"floating-vue\";\nconst NcComponents = /* @__PURE__ */ Object.freeze(/* @__PURE__ */ Object.defineProperty({\n  __proto__: null,\n  NcActionButton,\n  NcActionButtonGroup,\n  NcActionCaption,\n  NcActionCheckbox,\n  NcActionInput,\n  NcActionLink,\n  NcActionRadio,\n  NcActionRouter,\n  NcActionSeparator,\n  NcActionText,\n  NcActionTextEditable,\n  NcActions,\n  NcAppContent,\n  NcAppContentDetails,\n  NcAppContentList,\n  NcAppNavigation,\n  NcAppNavigationCaption,\n  NcAppNavigationIconBullet,\n  NcAppNavigationItem,\n  NcAppNavigationList,\n  NcAppNavigationNew,\n  NcAppNavigationNewItem,\n  NcAppNavigationSearch,\n  NcAppNavigationSettings,\n  NcAppNavigationSpacer,\n  NcAppSettingsDialog,\n  NcAppSettingsSection,\n  NcAppSettingsSectionShortcuts: NcAppSettingsShortcutsSection,\n  NcAppSettingsShortcutsSection,\n  NcAppSidebar,\n  NcAppSidebarHeader,\n  NcAppSidebarTab,\n  NcAssistantButton,\n  NcAssistantContent,\n  NcAssistantIcon,\n  NcAutoCompleteResult,\n  NcAvatar,\n  NcBlurHash,\n  NcBreadcrumb,\n  NcBreadcrumbs,\n  NcButton,\n  NcCheckboxRadioSwitch,\n  NcCollectionList,\n  NcColorPicker,\n  NcContent,\n  NcCounterBubble,\n  NcDashboardWidget,\n  NcDashboardWidgetItem,\n  NcDateTime,\n  NcDateTimePicker,\n  NcDateTimePickerNative,\n  NcDialog,\n  NcDialogButton,\n  NcEllipsisedOption,\n  NcEmojiPicker,\n  NcEmptyContent,\n  NcFormBox,\n  NcFormBoxButton,\n  NcFormBoxCopyButton,\n  NcFormBoxSwitch,\n  NcFormGroup,\n  NcGuestContent,\n  NcHeaderButton,\n  NcHeaderMenu,\n  NcHighlight,\n  NcHotkey,\n  NcHotkeyList,\n  NcIconSvgWrapper,\n  NcInputField,\n  NcListItem,\n  NcListItemIcon,\n  NcLoadingIcon,\n  NcMentionBubble,\n  NcModal,\n  NcNoteCard,\n  NcPasswordField,\n  NcPopover,\n  NcProgressBar,\n  NcRadioGroup,\n  NcRadioGroupButton,\n  NcRelatedResourcesPanel,\n  NcRichContenteditable,\n  NcRichText,\n  NcSavingIndicatorIcon,\n  NcSelect,\n  NcSelectTags,\n  NcSelectUsers,\n  NcSettingsInputText,\n  NcSettingsSection,\n  NcSettingsSelectGroup,\n  NcTextArea,\n  NcTextField,\n  NcThemeProvider,\n  NcTimezonePicker,\n  NcUserBubble,\n  NcUserStatusIcon,\n  NcVNodes\n}, Symbol.toStringTag, { value: \"Module\" }));\nconst NcDirectives = /* @__PURE__ */ Object.freeze(/* @__PURE__ */ Object.defineProperty({\n  __proto__: null,\n  Focus: directive,\n  Linkify: directive$1,\n  Tooltip: VTooltip\n}, Symbol.toStringTag, { value: \"Module\" }));\nconst NextcloudVuePlugin = {\n  install(Vue) {\n    Object.entries(NcComponents).forEach(([name, component]) => {\n      Vue.component(component.name || name, component);\n    });\n    Object.entries(NcDirectives).forEach(([name, directive2]) => {\n      Vue.directive(name, directive2);\n    });\n  }\n};\nexport {\n  E as EmojiSkinTone,\n  directive as Focus,\n  directive$1 as Linkify,\n  MOBILE_BREAKPOINT,\n  MOBILE_SMALL_BREAKPOINT,\n  NcActionButton,\n  NcActionButtonGroup,\n  NcActionCaption,\n  NcActionCheckbox,\n  NcActionInput,\n  NcActionLink,\n  NcActionRadio,\n  NcActionRouter,\n  NcActionSeparator,\n  NcActionText,\n  NcActionTextEditable,\n  NcActions,\n  NcAppContent,\n  NcAppContentDetails,\n  NcAppContentList,\n  NcAppNavigation,\n  NcAppNavigationCaption,\n  NcAppNavigationIconBullet,\n  NcAppNavigationItem,\n  NcAppNavigationList,\n  NcAppNavigationNew,\n  NcAppNavigationNewItem,\n  NcAppNavigationSearch,\n  NcAppNavigationSettings,\n  NcAppNavigationSpacer,\n  NcAppSettingsDialog,\n  NcAppSettingsSection,\n  NcAppSettingsShortcutsSection as NcAppSettingsSectionShortcuts,\n  NcAppSettingsShortcutsSection,\n  NcAppSidebar,\n  NcAppSidebarHeader,\n  NcAppSidebarTab,\n  NcAssistantButton,\n  NcAssistantContent,\n  NcAssistantIcon,\n  NcAutoCompleteResult,\n  NcAvatar,\n  NcBlurHash,\n  NcBreadcrumb,\n  NcBreadcrumbs,\n  NcButton,\n  NcCheckboxRadioSwitch,\n  NcCollectionList,\n  NcColorPicker,\n  NcContent,\n  NcCounterBubble,\n  N as NcCustomPickerRenderResult,\n  NcDashboardWidget,\n  NcDashboardWidgetItem,\n  NcDateTime,\n  NcDateTimePicker,\n  NcDateTimePickerNative,\n  NcDialog,\n  NcDialogButton,\n  NcEllipsisedOption,\n  NcEmojiPicker,\n  NcEmptyContent,\n  NcFormBox,\n  NcFormBoxButton,\n  NcFormBoxCopyButton,\n  NcFormBoxSwitch,\n  NcFormGroup,\n  NcGuestContent,\n  NcHeaderButton,\n  NcHeaderMenu,\n  NcHighlight,\n  NcHotkey,\n  NcHotkeyList,\n  NcIconSvgWrapper,\n  NcInputField,\n  NcListItem,\n  NcListItemIcon,\n  NcLoadingIcon,\n  NcMentionBubble,\n  NcModal,\n  NcNoteCard,\n  NcPasswordField,\n  NcPopover,\n  NcProgressBar,\n  NcRadioGroup,\n  NcRadioGroupButton,\n  NcRelatedResourcesPanel,\n  NcRichContenteditable,\n  NcRichText,\n  NcSavingIndicatorIcon,\n  NcSelect,\n  NcSelectTags,\n  NcSelectUsers,\n  NcSettingsInputText,\n  NcSettingsSection,\n  NcSettingsSelectGroup,\n  NcTextArea,\n  NcTextField,\n  NcThemeProvider,\n  NcTimezonePicker,\n  NcUserBubble,\n  NcUserStatusIcon,\n  NcVNodes,\n  NextcloudVuePlugin,\n  VTooltip2 as Tooltip,\n  a as anyLinkProviderId,\n  checkIfDarkTheme,\n  default2 as clickOutsideOptions,\n  a3 as emojiAddRecent,\n  e2 as emojiSearch,\n  g2 as getCurrentSkinTone,\n  getEnabledContactsMenuActions,\n  g as getLinkWithPicker,\n  b as getProvider,\n  c as getProviders,\n  h as hasInteractiveView,\n  isA11yActivation,\n  c2 as isCustomPickerElementRegistered,\n  isDarkTheme,\n  default3 as isFullscreen,\n  isFullscreenState,\n  default4 as isMobile,\n  isMobileState,\n  i as isWidgetRegistered,\n  preloadImage,\n  registerContactsMenuAction,\n  e as registerCustomPickerElement,\n  r2 as registerWidget,\n  f as renderCustomPickerElement,\n  a2 as renderWidget,\n  r as richEditor,\n  s as searchProvider,\n  s2 as setCurrentSkinTone,\n  d as sortProviders,\n  spawnDialog,\n  useFormatDateTime,\n  useFormatRelativeTime,\n  useFormatTime,\n  useHotKey,\n  useIsDarkTheme,\n  useIsDarkThemeElement,\n  useIsFullscreen,\n  useIsMobile,\n  useIsSmallMobile,\n  u as userStatus,\n  usernameToColor\n};\n//# sourceMappingURL=index.mjs.map\n","import mod from \"-!../../../../../node_modules/babel-loader/lib/index.js!../../../../../node_modules/ts-loader/index.js??clonedRuleSet-6.use[1]!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./FilesSidebarTab.vue?vue&type=script&setup=true&lang=ts\"; export default mod; export * from \"-!../../../../../node_modules/babel-loader/lib/index.js!../../../../../node_modules/ts-loader/index.js??clonedRuleSet-6.use[1]!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./FilesSidebarTab.vue?vue&type=script&setup=true&lang=ts\"","import { render, staticRenderFns } from \"./FilesSidebarTab.vue?vue&type=template&id=6b69fc23\"\nimport script from \"./FilesSidebarTab.vue?vue&type=script&setup=true&lang=ts\"\nexport * from \"./FilesSidebarTab.vue?vue&type=script&setup=true&lang=ts\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n  script,\n  render,\n  staticRenderFns,\n  false,\n  null,\n  null,\n  null\n  \n)\n\nexport default component.exports","import mod from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/ts-loader/index.js??clonedRuleSet-6.use[1]!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./FilesSidebar.vue?vue&type=script&setup=true&lang=ts\"; export default mod; export * from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/ts-loader/index.js??clonedRuleSet-6.use[1]!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./FilesSidebar.vue?vue&type=script&setup=true&lang=ts\"","\n      import API from \"!../../../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\";\n      import domAPI from \"!../../../../node_modules/style-loader/dist/runtime/styleDomAPI.js\";\n      import insertFn from \"!../../../../node_modules/style-loader/dist/runtime/insertBySelector.js\";\n      import setAttributes from \"!../../../../node_modules/style-loader/dist/runtime/setAttributesWithoutAttributes.js\";\n      import insertStyleElement from \"!../../../../node_modules/style-loader/dist/runtime/insertStyleElement.js\";\n      import styleTagTransformFn from \"!../../../../node_modules/style-loader/dist/runtime/styleTagTransform.js\";\n      import content, * as namedExport from \"!!../../../../node_modules/css-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/sass-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./FilesSidebar.vue?vue&type=style&index=0&id=f91af60e&prod&lang=scss&scoped=true\";\n      \n      \n\nvar options = {};\n\noptions.styleTagTransform = styleTagTransformFn;\noptions.setAttributes = setAttributes;\noptions.insert = insertFn.bind(null, \"head\");\noptions.domAPI = domAPI;\noptions.insertStyleElement = insertStyleElement;\n\nvar update = API(content, options);\n\n\n\nexport * from \"!!../../../../node_modules/css-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/sass-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./FilesSidebar.vue?vue&type=style&index=0&id=f91af60e&prod&lang=scss&scoped=true\";\n       export default content && content.locals ? content.locals : undefined;\n","import { render, staticRenderFns } from \"./FilesSidebar.vue?vue&type=template&id=f91af60e&scoped=true\"\nimport script from \"./FilesSidebar.vue?vue&type=script&setup=true&lang=ts\"\nexport * from \"./FilesSidebar.vue?vue&type=script&setup=true&lang=ts\"\nimport style0 from \"./FilesSidebar.vue?vue&type=style&index=0&id=f91af60e&prod&lang=scss&scoped=true\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n  script,\n  render,\n  staticRenderFns,\n  false,\n  null,\n  \"f91af60e\",\n  null\n  \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return _c(_setup.NcContent,{attrs:{\"app-name\":\"files\"}},[(!_setup.isPublic)?_c(_setup.FilesNavigation):_vm._e(),_vm._v(\" \"),_c(_setup.FilesList,{attrs:{\"is-public\":_setup.isPublic}}),_vm._v(\" \"),(!_setup.isPublic)?_c(_setup.FilesSidebar):_vm._e()],1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","/*!\n * SPDX-FileCopyrightText: 2023 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\nimport { getFileActions } from '@nextcloud/files';\nimport { useHotKey } from '@nextcloud/vue/composables/useHotKey';\nimport { dirname } from 'path';\nimport { useRoute, useRouter } from 'vue-router/composables';\nimport logger from '../logger.ts';\nimport { useUserConfigStore } from '../store/userconfig.ts';\nimport { executeAction } from '../utils/actionUtils.ts';\nimport { useRouteParameters } from './useRouteParameters.ts';\n/**\n * This register the hotkeys for the Files app.\n * As much as possible, we try to have all the hotkeys in one place.\n * Please make sure to add tests for the hotkeys after adding a new one.\n */\nexport function useHotKeys() {\n    const userConfigStore = useUserConfigStore();\n    const { directory } = useRouteParameters();\n    const router = useRouter();\n    const route = useRoute();\n    const actions = getFileActions();\n    for (const action of actions) {\n        if (!action.hotkey) {\n            continue;\n        }\n        const key = action.hotkey.key.match(/^[a-z]$/)\n            ? action.hotkey.key.toUpperCase()\n            : action.hotkey.key;\n        logger.debug(`Register hotkey for action \"${action.id}\"`);\n        useHotKey(key, () => executeAction(action), {\n            stop: true,\n            prevent: true,\n            alt: action.hotkey.alt,\n            ctrl: action.hotkey.ctrl,\n            shift: action.hotkey.shift,\n        });\n    }\n    // alt+up go to parent directory\n    useHotKey('ArrowUp', goToParentDir, {\n        stop: true,\n        prevent: true,\n        alt: true,\n    });\n    // v toggle grid view\n    useHotKey('v', toggleGridView, {\n        stop: true,\n        prevent: true,\n    });\n    logger.debug('Hotkeys registered');\n    /**\n     * Use the router to go to the parent directory\n     */\n    function goToParentDir() {\n        const dir = dirname(directory.value);\n        logger.debug('Navigating to parent directory', { dir });\n        router.push({ params: { ...route.params }, query: { ...route.query, dir } });\n    }\n    /**\n     * Toggle the grid view\n     */\n    function toggleGridView() {\n        const value = userConfigStore.userConfig.grid_view;\n        logger.debug('Toggling grid view', { old: value, new: !value });\n        userConfigStore.update('grid_view', !value);\n    }\n}\n","import mod from \"-!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/ts-loader/index.js??clonedRuleSet-6.use[1]!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./FilesApp.vue?vue&type=script&setup=true&lang=ts\"; export default mod; export * from \"-!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/ts-loader/index.js??clonedRuleSet-6.use[1]!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./FilesApp.vue?vue&type=script&setup=true&lang=ts\"","import { render, staticRenderFns } from \"./FilesApp.vue?vue&type=template&id=e1f85142\"\nimport script from \"./FilesApp.vue?vue&type=script&setup=true&lang=ts\"\nexport * from \"./FilesApp.vue?vue&type=script&setup=true&lang=ts\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n  script,\n  render,\n  staticRenderFns,\n  false,\n  null,\n  null,\n  null\n  \n)\n\nexport default component.exports","/*\n * SPDX-FileCopyrightText: 2022 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\nimport { subscribe } from '@nextcloud/event-bus';\nimport { generateUrl } from '@nextcloud/router';\nimport { relative } from 'path';\nimport queryString from 'query-string';\nimport Vue from 'vue';\nimport Router, { isNavigationFailure, NavigationFailureType } from 'vue-router';\nimport logger from '../logger.ts';\nimport { useFilesStore } from '../store/files.ts';\nimport { getPinia } from '../store/index.ts';\nimport { usePathsStore } from '../store/paths.ts';\nimport { defaultView } from '../utils/filesViews.ts';\nVue.use(Router);\n// Prevent router from throwing errors when we're already on the page we're trying to go to\nconst originalPush = Router.prototype.push;\nRouter.prototype.push = (function (...args) {\n    if (args.length > 1) {\n        return originalPush.call(this, ...args);\n    }\n    return originalPush.call(this, args[0]).catch(ignoreDuplicateNavigation);\n});\nconst originalReplace = Router.prototype.replace;\nRouter.prototype.replace = (function (...args) {\n    if (args.length > 1) {\n        return originalReplace.call(this, ...args);\n    }\n    return originalReplace.call(this, args[0]).catch(ignoreDuplicateNavigation);\n});\n/**\n * Ignore duplicated-navigation error but forward real exceptions\n *\n * @param error The thrown error\n */\nfunction ignoreDuplicateNavigation(error) {\n    if (isNavigationFailure(error, NavigationFailureType.duplicated)) {\n        logger.debug('Ignoring duplicated navigation from vue-router', { error });\n    }\n    else {\n        throw error;\n    }\n}\nconst router = new Router({\n    mode: 'history',\n    // if index.php is in the url AND we got this far, then it's working:\n    // let's keep using index.php in the url\n    base: generateUrl('/apps/files'),\n    linkActiveClass: 'active',\n    routes: [\n        {\n            path: '/',\n            // Pretending we're using the default view\n            redirect: { name: 'filelist', params: { view: defaultView() } },\n        },\n        {\n            path: '/:view/:fileid(\\\\d+)?',\n            name: 'filelist',\n            props: true,\n        },\n    ],\n    // Custom stringifyQuery to prevent encoding of slashes in the url\n    stringifyQuery(query) {\n        const result = queryString.stringify(query).replace(/%2F/gmi, '/');\n        return result ? ('?' + result) : '';\n    },\n});\n// Handle aborted navigation (NavigationGuards) gracefully\nrouter.onError((error) => {\n    if (isNavigationFailure(error, NavigationFailureType.aborted)) {\n        logger.debug('Navigation was aboorted', { error });\n    }\n    else {\n        throw error;\n    }\n});\n// If navigating back from a folder to a parent folder,\n// we need to keep the current dir fileid so it's highlighted\n// and scrolled into view.\nrouter.beforeResolve((to, from, next) => {\n    if (to.params?.parentIntercept) {\n        delete to.params.parentIntercept;\n        return next();\n    }\n    if (to.params.view !== from.params.view) {\n        // skip if different views\n        return next();\n    }\n    const fromDir = (from.query?.dir || '/');\n    const toDir = (to.query?.dir || '/');\n    // We are going back to a parent directory\n    if (relative(fromDir, toDir) === '..') {\n        const { getNode } = useFilesStore();\n        const { getPath } = usePathsStore();\n        if (!from.params.view) {\n            logger.error('No current view id found, cannot navigate to parent directory', { fromDir, toDir });\n            return next();\n        }\n        // Get the previous parent's file id\n        const fromSource = getPath(from.params.view, fromDir);\n        if (!fromSource) {\n            logger.error('No source found for the parent directory', { fromDir, toDir });\n            return next();\n        }\n        const fileId = getNode(fromSource)?.fileid;\n        if (!fileId) {\n            logger.error('No fileid found for the parent directory', { fromDir, toDir, fromSource });\n            return next();\n        }\n        logger.debug('Navigating back to parent directory', { fromDir, toDir, fileId });\n        return next({\n            name: 'filelist',\n            query: to.query,\n            params: {\n                ...to.params,\n                fileid: String(fileId),\n                // Prevents the beforeEach from being called again\n                parentIntercept: 'true',\n            },\n            // Replace the current history entry\n            replace: true,\n        });\n    }\n    // else, we just continue\n    next();\n});\nsubscribe('files:node:deleted', (node) => {\n    if (router.currentRoute.params.fileid === String(node.fileid)) {\n        const params = { ...router.currentRoute.params };\n        const { getPath } = usePathsStore(getPinia());\n        const { getNode } = useFilesStore(getPinia());\n        const source = getPath(router.currentRoute.params.view, node.dirname);\n        const parentFolder = getNode(source);\n        if (source && parentFolder) {\n            params.fileid = String(parentFolder.fileid);\n        }\n        else {\n            delete params.fileid;\n        }\n        const query = { ...router.currentRoute.query };\n        delete query.opendetails;\n        delete query.openfile;\n        router.replace({\n            ...router.currentRoute,\n            name: router.currentRoute.name,\n            params,\n            query,\n        });\n    }\n});\nexport default router;\n","/*!\n * SPDX-FileCopyrightText: 2023 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\nexport default class RouterService {\n    // typescript compiles this to `#router` to make it private even in JS,\n    // but in TS it needs to be called without the visibility specifier\n    router;\n    constructor(router) {\n        this.router = router;\n    }\n    get name() {\n        return this.router.currentRoute.name;\n    }\n    get query() {\n        return this.router.currentRoute.query || {};\n    }\n    get params() {\n        return this.router.currentRoute.params || {};\n    }\n    /**\n     * This is a protected getter only for internal use\n     *\n     */\n    get _router() {\n        return this.router;\n    }\n    /**\n     * Trigger a route change on the files app\n     *\n     * @param path the url path, eg: '/trashbin?dir=/Deleted'\n     * @param replace replace the current history\n     * @see https://router.vuejs.org/guide/essentials/navigation.html#navigate-to-a-different-location\n     */\n    goTo(path, replace = false) {\n        return this.router.push({\n            path,\n            replace,\n        });\n    }\n    /**\n     * Trigger a route change on the files App\n     *\n     * @param name - The route name or null to keep current route and just update params/query\n     * @param params the route parameters\n     * @param query the url query parameters\n     * @param replace replace the current history\n     * @see https://router.vuejs.org/guide/essentials/navigation.html#navigate-to-a-different-location\n     */\n    goToRoute(name, params, query, replace) {\n        name ??= this.router.currentRoute.name;\n        const location = { name, query, params };\n        if (replace) {\n            return this._router.replace(location);\n        }\n        return this._router.push(location);\n    }\n}\n","/**\n * SPDX-FileCopyrightText: 2023 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\nimport { getCSPNonce } from '@nextcloud/auth';\nimport { PiniaVuePlugin } from 'pinia';\nimport Vue from 'vue';\nimport FilesApp from './FilesApp.vue';\nimport SettingsModel from './models/Setting.ts';\nimport router from './router/router.ts';\nimport RouterService from './services/RouterService.ts';\nimport SettingsService from './services/Settings.js';\nimport { getPinia } from './store/index.ts';\n__webpack_nonce__ = getCSPNonce();\n// Init private and public Files namespace\nwindow.OCA.Files = window.OCA.Files ?? {};\nwindow.OCP.Files = window.OCP.Files ?? {};\n// Expose router\nif (!window.OCP.Files.Router) {\n    const Router = new RouterService(router);\n    Object.assign(window.OCP.Files, { Router });\n}\n// Init Pinia store\nVue.use(PiniaVuePlugin);\n// Init Files App Settings Service\nconst Settings = new SettingsService();\nObject.assign(window.OCA.Files, { Settings });\nObject.assign(window.OCA.Files.Settings, { Setting: SettingsModel });\nconst FilesAppVue = Vue.extend(FilesApp);\nnew FilesAppVue({\n    router: window.OCP.Files.Router._router,\n    pinia: getPinia(),\n}).$mount('#content');\n","/**\n * SPDX-FileCopyrightText: 2019 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\n\nimport logger from '../logger.ts'\n\nexport default class Settings {\n\t_settings\n\n\tconstructor() {\n\t\tthis._settings = []\n\t\tlogger.debug('OCA.Files.Settings initialized')\n\t}\n\n\t/**\n\t * Register a new setting\n\t *\n\t * @since 19.0.0\n\t * @param {OCA.Files.Settings.Setting} view element to add to settings\n\t * @return {boolean} whether registering was successful\n\t */\n\tregister(view) {\n\t\tif (this._settings.filter((e) => e.name === view.name).length > 0) {\n\t\t\tlogger.error('A setting with the same name is already registered')\n\t\t\treturn false\n\t\t}\n\t\tthis._settings.push(view)\n\t\treturn true\n\t}\n\n\t/**\n\t * All settings elements\n\t *\n\t * @return {OCA.Files.Settings.Setting[]} All currently registered settings\n\t */\n\tget settings() {\n\t\treturn this._settings\n\t}\n}\n","/**\n * SPDX-FileCopyrightText: 2019 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\nexport default class Setting {\n    #name;\n    #options;\n    /**\n     * Create a new files app setting\n     *\n     * @param name - The name of this setting\n     * @param options - The setting options\n     * @param options.el - Function that returns an unmounted dom element to be added\n     * @param options.open - Callback for when setting is added\n     * @param options.close - Callback for when setting is closed\n     * @param options.order - The order of this setting, lower numbers are shown first\n     * @since 19.0.0\n     */\n    constructor(name, options) {\n        this.#name = name;\n        this.#options = {\n            open: () => { },\n            close: () => { },\n            order: 0,\n            ...options,\n        };\n        if (typeof this.#options.el !== 'function') {\n            throw new Error('Setting must have an `el` function that returns a DOM element');\n        }\n        if (typeof this.#name !== 'string') {\n            throw new Error('Setting must have a `name` string');\n        }\n        if (typeof this.#options.order !== 'number') {\n            throw new Error('Setting must have an `order` number');\n        }\n    }\n    get name() {\n        return this.#name;\n    }\n    get el() {\n        return this.#options.el;\n    }\n    get open() {\n        return this.#options.open;\n    }\n    get close() {\n        return this.#options.close;\n    }\n    get order() {\n        return this.#options.order;\n    }\n}\n","import { getDefaultPropfind, getRootPath, resultToNode } from '@nextcloud/files/dav';\nimport { join } from 'path';\nimport logger from '../logger.ts';\nimport { useFilesStore } from '../store/files.ts';\nimport { getPinia } from '../store/index.ts';\nimport { useSearchStore } from '../store/search.ts';\nimport { client } from './WebdavClient.ts';\nimport { searchNodes } from './WebDavSearch.ts';\n/**\n * Get contents implementation for the files view.\n * This also allows to fetch local search results when the user is currently filtering.\n *\n * @param path - The path to query\n * @param options - Options\n * @param options.signal - Abort signal to cancel the request\n */\nexport async function getContents(path = '/', options) {\n    const searchStore = useSearchStore(getPinia());\n    if (searchStore.query.length < 3) {\n        return await defaultGetContents(path, options);\n    }\n    return await getLocalSearch(path, searchStore.query, options?.signal);\n}\n/**\n * Generic `getContents` implementation for the users files.\n *\n * @param path - The path to get the contents\n * @param options - Options\n * @param options.signal - Abort signal to cancel the request\n */\nexport async function defaultGetContents(path, options) {\n    path = join(getRootPath(), path);\n    const propfindPayload = getDefaultPropfind();\n    const contentsResponse = await client.getDirectoryContents(path, {\n        details: true,\n        data: propfindPayload,\n        includeSelf: true,\n        signal: options?.signal,\n    });\n    const root = contentsResponse.data[0];\n    const contents = contentsResponse.data.slice(1);\n    if (root?.filename !== path && `${root?.filename}/` !== path) {\n        logger.debug(`Exepected \"${path}\" but got filename \"${root.filename}\" instead.`);\n        throw new Error('Root node does not match requested path');\n    }\n    return {\n        folder: resultToNode(root),\n        contents: contents.map((result) => {\n            try {\n                return resultToNode(result);\n            }\n            catch (error) {\n                logger.error(`Invalid node detected '${result.basename}'`, { error });\n                return null;\n            }\n        }).filter(Boolean),\n    };\n}\n/**\n * Get the local search results for the current folder.\n *\n * @param path - The path\n * @param query - The current search query\n * @param signal - The aboort signal\n */\nasync function getLocalSearch(path, query, signal) {\n    const filesStore = useFilesStore(getPinia());\n    let folder = filesStore.getDirectoryByPath('files', path);\n    if (!folder) {\n        const rootPath = join(getRootPath(), path);\n        const stat = await client.stat(rootPath, { details: true });\n        folder = resultToNode(stat.data);\n    }\n    const contents = await searchNodes(query, { dir: path, signal });\n    return {\n        folder,\n        contents,\n    };\n}\n","/*!\n * SPDX-FileCopyrightText: 2025 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\nimport { getCurrentUser } from '@nextcloud/auth';\nimport { defaultRootPath, getDavNameSpaces, getDavProperties, resultToNode } from '@nextcloud/files/dav';\nimport { getBaseUrl } from '@nextcloud/router';\nimport logger from '../logger.ts';\nimport { client } from './WebdavClient.ts';\n/**\n * Search for nodes matching the given query.\n *\n * @param query - Search query\n * @param options - Options\n * @param options.dir - The base directory to scope the search to\n * @param options.signal - Abort signal for the request\n */\nexport async function searchNodes(query, { dir, signal }) {\n    const user = getCurrentUser();\n    if (!user) {\n        // the search plugin only works for user roots\n        return [];\n    }\n    query = query.trim();\n    if (query.length < 3) {\n        // the search plugin only works with queries of at least 3 characters\n        return [];\n    }\n    if (dir && !dir.startsWith('/')) {\n        dir = `/${dir}`;\n    }\n    logger.debug('Searching for nodes', { query, dir });\n    const { data } = await client.search('/', {\n        details: true,\n        signal,\n        data: `\n\n\t \n\t\t \n\t\t\t \n\t\t\t ${getDavProperties()}\n\t\t\t \n\t\t \n\t\t \n\t\t\t \n\t\t\t\t /files/${user.uid}${dir || ''}\n\t\t\t\t infinity\n\t\t\t \n\t\t \n\t\t \n\t\t\t \n\t\t\t\t \n\t\t\t\t\t \n\t\t\t\t \n\t\t\t\t %${query.replace('%', '')}%\n\t\t\t \n\t\t \n\t\t \n\t\n`,\n    });\n    // check if the request was aborted\n    if (signal?.aborted) {\n        return [];\n    }\n    // otherwise return the result mapped to Nextcloud nodes\n    return data.results.map((result) => resultToNode(result, defaultRootPath, getBaseUrl()));\n}\n","/*!\n * SPDX-FileCopyrightText: 2023 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\nimport { getClient, getDefaultPropfind, getRootPath, resultToNode } from '@nextcloud/files/dav';\nexport const client = getClient();\n/**\n * Fetches a node from the given path\n *\n * @param path - The path to fetch the node from\n */\nexport async function fetchNode(path) {\n    const propfindPayload = getDefaultPropfind();\n    const result = await client.stat(`${getRootPath()}${path}`, {\n        details: true,\n        data: propfindPayload,\n    });\n    return resultToNode(result.data);\n}\n","/*!\n * SPDX-FileCopyrightText: 2024 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\nimport { getCurrentUser } from '@nextcloud/auth';\nimport { subscribe } from '@nextcloud/event-bus';\nimport { Folder, getNavigation, Permission } from '@nextcloud/files';\nimport { getRemoteURL, getRootPath } from '@nextcloud/files/dav';\nimport { defineStore } from 'pinia';\nimport { ref, shallowRef, watch } from 'vue';\nimport logger from '../logger.ts';\n// Temporary fake folder to use until we have the first valid folder\n// fetched and cached. This allow us to mount the FilesListVirtual\n// at all time and avoid unmount/mount and undesired rendering issues.\nconst dummyFolder = new Folder({\n    id: 0,\n    source: getRemoteURL() + getRootPath(),\n    root: getRootPath(),\n    owner: getCurrentUser()?.uid || null,\n    permissions: Permission.NONE,\n});\nexport const useActiveStore = defineStore('active', () => {\n    /**\n     * The currently active action\n     */\n    const activeAction = shallowRef();\n    /**\n     * The current active node within the folder\n     */\n    const activeNode = ref();\n    /**\n     * The current active view\n     */\n    const activeView = shallowRef();\n    /**\n     * The currently active folder\n     */\n    const activeFolder = ref(dummyFolder);\n    // Set the active node on the router params\n    watch(activeNode, () => {\n        if (typeof activeNode.value?.fileid !== 'number' || activeNode.value.fileid === activeFolder.value?.fileid) {\n            return;\n        }\n        logger.debug('Updating active fileid in URL query', { fileid: activeNode.value.fileid });\n        window.OCP.Files.Router.goToRoute(null, { ...window.OCP.Files.Router.params, fileid: String(activeNode.value.fileid) }, { ...window.OCP.Files.Router.query }, true);\n    });\n    initialize();\n    /**\n     * Unset the active node if deleted\n     *\n     * @param node - The node thats deleted\n     */\n    function onDeletedNode(node) {\n        if (activeNode.value && activeNode.value.source === node.source) {\n            activeNode.value = undefined;\n        }\n    }\n    /**\n     * Callback to update the current active view\n     *\n     * @param view - The new active view\n     */\n    function onChangedView(view = null) {\n        logger.debug('Setting active view', { view });\n        activeView.value = view ?? undefined;\n        activeNode.value = undefined;\n    }\n    /**\n     * Initalize the store - connect all event listeners.\n     *\n     */\n    function initialize() {\n        const navigation = getNavigation();\n        onChangedView(navigation.active);\n        // Make sure we only register the listeners once\n        subscribe('files:node:deleted', onDeletedNode);\n        // Or you can react to changes of the current active view\n        navigation.addEventListener('updateActive', (event) => {\n            onChangedView(event.detail);\n        });\n    }\n    return {\n        activeAction,\n        activeFolder,\n        activeNode,\n        activeView,\n    };\n});\n","/**\n * SPDX-FileCopyrightText: 2023 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\nimport { subscribe } from '@nextcloud/event-bus';\nimport { defineStore } from 'pinia';\nimport Vue from 'vue';\nimport logger from '../logger.ts';\nimport { fetchNode } from '../services/WebdavClient.ts';\nimport { usePathsStore } from './paths.ts';\n/**\n *\n * @param args\n */\nexport function useFilesStore(...args) {\n    const store = defineStore('files', {\n        state: () => ({\n            files: {},\n            roots: {},\n        }),\n        getters: {\n            /**\n             * Get a file or folder by its source\n             *\n             * @param state\n             */\n            getNode: (state) => (source) => state.files[source],\n            /**\n             * Get a list of files or folders by their IDs\n             * Note: does not return undefined values\n             *\n             * @param state\n             */\n            getNodes: (state) => (sources) => sources\n                .map((source) => state.files[source])\n                .filter(Boolean),\n            /**\n             * Get files or folders by their file ID\n             * Multiple nodes can have the same file ID but different sources\n             * (e.g. in a shared context)\n             *\n             * @param state\n             */\n            getNodesById: (state) => (fileId) => Object.values(state.files).filter((node) => node.fileid === fileId),\n            /**\n             * Get the root folder of a service\n             *\n             * @param state\n             */\n            getRoot: (state) => (service) => state.roots[service],\n        },\n        actions: {\n            /**\n             * Get cached directory matching a given path\n             *\n             * @param service - The service (files view)\n             * @param path - The path relative within the service\n             * @return The folder if found\n             */\n            getDirectoryByPath(service, path) {\n                const pathsStore = usePathsStore();\n                let folder;\n                // Get the containing folder from path store\n                if (!path || path === '/') {\n                    folder = this.getRoot(service);\n                }\n                else {\n                    const source = pathsStore.getPath(service, path);\n                    if (source) {\n                        folder = this.getNode(source);\n                    }\n                }\n                return folder;\n            },\n            /**\n             * Get cached child nodes within a given path\n             *\n             * @param service - The service (files view)\n             * @param path - The path relative within the service\n             * @return Array of cached nodes within the path\n             */\n            getNodesByPath(service, path) {\n                const folder = this.getDirectoryByPath(service, path);\n                // If we found a cache entry and the cache entry was already loaded (has children) then use it\n                return (folder?._children ?? [])\n                    .map((source) => this.getNode(source))\n                    .filter(Boolean);\n            },\n            updateNodes(nodes) {\n                // Update the store all at once\n                const files = nodes.reduce((acc, node) => {\n                    if (!node.fileid) {\n                        logger.error('Trying to update/set a node without fileid', { node });\n                        return acc;\n                    }\n                    acc[node.source] = node;\n                    return acc;\n                }, {});\n                Vue.set(this, 'files', { ...this.files, ...files });\n            },\n            deleteNodes(nodes) {\n                nodes.forEach((node) => {\n                    if (node.source) {\n                        Vue.delete(this.files, node.source);\n                    }\n                });\n            },\n            setRoot({ service, root }) {\n                Vue.set(this.roots, service, root);\n            },\n            onDeletedNode(node) {\n                this.deleteNodes([node]);\n            },\n            onCreatedNode(node) {\n                this.updateNodes([node]);\n            },\n            onMovedNode({ node, oldSource }) {\n                if (!node.fileid) {\n                    logger.error('Trying to update/set a node without fileid', { node });\n                    return;\n                }\n                // Update the path of the node\n                Vue.delete(this.files, oldSource);\n                this.updateNodes([node]);\n            },\n            async onUpdatedNode(node) {\n                if (!node.fileid) {\n                    logger.error('Trying to update/set a node without fileid', { node });\n                    return;\n                }\n                // If we have multiple nodes with the same file ID, we need to update all of them\n                const nodes = this.getNodesById(node.fileid);\n                if (nodes.length > 1) {\n                    await Promise.all(nodes.map((node) => fetchNode(node.path))).then(this.updateNodes);\n                    logger.debug(nodes.length + ' nodes updated in store', { fileid: node.fileid });\n                    return;\n                }\n                // If we have only one node with the file ID, we can update it directly\n                if (nodes.length === 1 && node.source === nodes[0].source) {\n                    this.updateNodes([node]);\n                    return;\n                }\n                // Otherwise, it means we receive an event for a node that is not in the store\n                fetchNode(node.path).then((n) => this.updateNodes([n]));\n            },\n            // Handlers for legacy sidebar (no real nodes support)\n            onAddFavorite(node) {\n                const ourNode = this.getNode(node.source);\n                if (ourNode) {\n                    Vue.set(ourNode.attributes, 'favorite', 1);\n                }\n            },\n            onRemoveFavorite(node) {\n                const ourNode = this.getNode(node.source);\n                if (ourNode) {\n                    Vue.set(ourNode.attributes, 'favorite', 0);\n                }\n            },\n        },\n    });\n    const fileStore = store(...args);\n    // Make sure we only register the listeners once\n    if (!fileStore._initialized) {\n        subscribe('files:node:created', fileStore.onCreatedNode);\n        subscribe('files:node:deleted', fileStore.onDeletedNode);\n        subscribe('files:node:updated', fileStore.onUpdatedNode);\n        subscribe('files:node:moved', fileStore.onMovedNode);\n        // legacy sidebar\n        subscribe('files:favorites:added', fileStore.onAddFavorite);\n        subscribe('files:favorites:removed', fileStore.onRemoveFavorite);\n        fileStore._initialized = true;\n    }\n    return fileStore;\n}\n","/**\n * SPDX-FileCopyrightText: 2024 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\nimport { createPinia } from 'pinia';\n/**\n * Get the Pinia instance for the Files app.\n */\nexport function getPinia() {\n    if (window._nc_files_pinia) {\n        return window._nc_files_pinia;\n    }\n    window._nc_files_pinia = createPinia();\n    return window._nc_files_pinia;\n}\n","/**\n * SPDX-FileCopyrightText: 2023 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\nimport { subscribe } from '@nextcloud/event-bus';\nimport { File, FileType, getNavigation } from '@nextcloud/files';\nimport { dirname } from '@nextcloud/paths';\nimport { defineStore } from 'pinia';\nimport Vue from 'vue';\nimport logger from '../logger.ts';\nimport { useFilesStore } from './files.ts';\n/**\n *\n * @param args\n */\nexport function usePathsStore(...args) {\n    const files = useFilesStore(...args);\n    const store = defineStore('paths', {\n        state: () => ({\n            paths: {},\n        }),\n        getters: {\n            getPath: (state) => {\n                return (service, path) => {\n                    if (!state.paths[service]) {\n                        return undefined;\n                    }\n                    return state.paths[service][path];\n                };\n            },\n        },\n        actions: {\n            addPath(payload) {\n                // If it doesn't exists, init the service state\n                if (!this.paths[payload.service]) {\n                    Vue.set(this.paths, payload.service, {});\n                }\n                // Now we can set the provided path\n                Vue.set(this.paths[payload.service], payload.path, payload.source);\n            },\n            deletePath(service, path) {\n                // skip if service does not exist\n                if (!this.paths[service]) {\n                    return;\n                }\n                Vue.delete(this.paths[service], path);\n            },\n            onCreatedNode(node) {\n                const service = getNavigation()?.active?.id || 'files';\n                if (!node.fileid) {\n                    logger.error('Node has no fileid', { node });\n                    return;\n                }\n                // Only add path if it's a folder\n                if (node.type === FileType.Folder) {\n                    this.addPath({\n                        service,\n                        path: node.path,\n                        source: node.source,\n                    });\n                }\n                // Update parent folder children if exists\n                // If the folder is the root, get it and update it\n                this.addNodeToParentChildren(node);\n            },\n            onDeletedNode(node) {\n                const service = getNavigation()?.active?.id || 'files';\n                if (node.type === FileType.Folder) {\n                    // Delete the path\n                    this.deletePath(service, node.path);\n                }\n                this.deleteNodeFromParentChildren(node);\n            },\n            onMovedNode({ node, oldSource }) {\n                const service = getNavigation()?.active?.id || 'files';\n                // Update the path of the node\n                if (node.type === FileType.Folder) {\n                    // Delete the old path if it exists\n                    const oldPath = Object.entries(this.paths[service]).find(([, source]) => source === oldSource);\n                    if (oldPath?.[0]) {\n                        this.deletePath(service, oldPath[0]);\n                    }\n                    // Add the new path\n                    this.addPath({\n                        service,\n                        path: node.path,\n                        source: node.source,\n                    });\n                }\n                // Dummy simple clone of the renamed node from a previous state\n                const oldNode = new File({\n                    source: oldSource,\n                    owner: node.owner,\n                    mime: node.mime,\n                    root: node.root,\n                });\n                this.deleteNodeFromParentChildren(oldNode);\n                this.addNodeToParentChildren(node);\n            },\n            deleteNodeFromParentChildren(node) {\n                const service = getNavigation()?.active?.id || 'files';\n                // Update children of a root folder\n                const parentSource = dirname(node.source);\n                const folder = (node.dirname === '/' ? files.getRoot(service) : files.getNode(parentSource));\n                if (folder) {\n                    // ensure sources are unique\n                    const children = new Set(folder._children ?? []);\n                    children.delete(node.source);\n                    Vue.set(folder, '_children', [...children.values()]);\n                    logger.debug('Children updated', { parent: folder, node, children: folder._children });\n                    return;\n                }\n                logger.debug('Parent path does not exists, skipping children update', { node });\n            },\n            addNodeToParentChildren(node) {\n                const service = getNavigation()?.active?.id || 'files';\n                // Update children of a root folder\n                const parentSource = dirname(node.source);\n                const folder = (node.dirname === '/' ? files.getRoot(service) : files.getNode(parentSource));\n                if (folder) {\n                    // ensure sources are unique\n                    const children = new Set(folder._children ?? []);\n                    children.add(node.source);\n                    Vue.set(folder, '_children', [...children.values()]);\n                    logger.debug('Children updated', { parent: folder, node, children: folder._children });\n                    return;\n                }\n                logger.debug('Parent path does not exists, skipping children update', { node });\n            },\n        },\n    });\n    const pathsStore = store(...args);\n    // Make sure we only register the listeners once\n    if (!pathsStore._initialized) {\n        subscribe('files:node:created', pathsStore.onCreatedNode);\n        subscribe('files:node:deleted', pathsStore.onDeletedNode);\n        subscribe('files:node:moved', pathsStore.onMovedNode);\n        pathsStore._initialized = true;\n    }\n    return pathsStore;\n}\n","/*!\n * SPDX-FileCopyrightText: 2025 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\nimport { emit, subscribe } from '@nextcloud/event-bus';\nimport debounce from 'debounce';\nimport { defineStore } from 'pinia';\nimport { ref, watch } from 'vue';\nimport logger from '../logger.ts';\nimport { VIEW_ID } from '../views/search.ts';\nexport const useSearchStore = defineStore('search', () => {\n    /**\n     * The current search query\n     */\n    const query = ref('');\n    /**\n     * Scope of the search.\n     * Scopes:\n     * - filter: only filter current file list\n     * - globally: search everywhere\n     */\n    const scope = ref('filter');\n    // reset the base if query is cleared\n    watch(scope, updateSearch);\n    watch(query, (old, current) => {\n        // skip if only whitespaces changed\n        if (old.trim() === current.trim()) {\n            return;\n        }\n        updateSearch();\n    });\n    // initialize the search store\n    initialize();\n    /**\n     * Debounced update of the current route\n     *\n     */\n    const updateRouter = debounce((isSearch) => {\n        const router = window.OCP.Files.Router;\n        router.goToRoute(undefined, {\n            view: VIEW_ID,\n        }, {\n            query: query.value,\n        }, isSearch);\n    });\n    /**\n     * Handle updating the filter if needed.\n     * Also update the search view by updating the current route if needed.\n     *\n     */\n    function updateSearch() {\n        // emit the search event to update the filter\n        emit('files:search:updated', { query: query.value, scope: scope.value });\n        const router = window.OCP.Files.Router;\n        // if we are on the search view and the query was unset or scope was set to 'filter' we need to move back to the files view\n        if (router.params.view === VIEW_ID && (query.value === '' || scope.value === 'filter')) {\n            scope.value = 'filter';\n            return router.goToRoute(undefined, {\n                view: 'files',\n            }, {\n                ...router.query,\n                query: undefined,\n            });\n        }\n        // for the filter scope we do not need to adjust the current route anymore\n        // also if the query is empty we do not need to do anything\n        if (scope.value === 'filter' || !query.value) {\n            return;\n        }\n        const isSearch = router.params.view === VIEW_ID;\n        logger.debug('Update route for updated search query', { query: query.value, isSearch });\n        updateRouter(isSearch);\n    }\n    /**\n     * Event handler that resets the store if the file list view was changed.\n     *\n     * @param view - The new view that is active\n     */\n    function onViewChanged(view) {\n        if (view.id !== VIEW_ID) {\n            query.value = '';\n            scope.value = 'filter';\n        }\n    }\n    /**\n     * Initialize the store from the router if needed\n     */\n    function initialize() {\n        subscribe('files:navigation:changed', onViewChanged);\n        const router = window.OCP.Files.Router;\n        // if we initially load the search view (e.g. hard page refresh)\n        // then we need to initialize the store from the router\n        if (router.params.view === VIEW_ID) {\n            query.value = [router.query.query].flat()[0] ?? '';\n            if (query.value) {\n                scope.value = 'globally';\n                logger.debug('Directly navigated to search view', { query: query.value });\n            }\n            else {\n                // we do not have any query so we need to move to the files list\n                logger.info('Directly navigated to search view without any query, redirect to files view.');\n                router.goToRoute(undefined, {\n                    ...router.params,\n                    view: 'files',\n                }, {\n                    ...router.query,\n                    query: undefined,\n                }, true);\n            }\n        }\n    }\n    return {\n        query,\n        scope,\n    };\n});\n","/**\n * SPDX-FileCopyrightText: 2023 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\nimport { getCurrentUser } from '@nextcloud/auth';\nimport axios from '@nextcloud/axios';\nimport { emit, subscribe } from '@nextcloud/event-bus';\nimport { loadState } from '@nextcloud/initial-state';\nimport { generateUrl } from '@nextcloud/router';\nimport { defineStore } from 'pinia';\nimport { ref, set } from 'vue';\nconst initialUserConfig = loadState('files', 'config', {\n    crop_image_previews: true,\n    default_view: 'files',\n    folder_tree: true,\n    grid_view: false,\n    show_files_extensions: true,\n    show_hidden: false,\n    show_mime_column: true,\n    sort_favorites_first: true,\n    sort_folders_first: true,\n    show_dialog_deletion: false,\n    show_dialog_file_extension: true,\n});\nexport const useUserConfigStore = defineStore('userconfig', () => {\n    const userConfig = ref({ ...initialUserConfig });\n    /**\n     * Update the user config local store\n     *\n     * @param key The config key\n     * @param value The new value\n     */\n    function onUpdate(key, value) {\n        set(userConfig.value, key, value);\n    }\n    /**\n     * Update the user config local store AND on server side\n     *\n     * @param key The config key\n     * @param value The new value\n     */\n    async function update(key, value) {\n        // only update if a user is logged in (not the case for public shares)\n        if (getCurrentUser() !== null) {\n            await axios.put(generateUrl('/apps/files/api/v1/config/{key}', { key }), {\n                value,\n            });\n        }\n        emit('files:config:updated', { key, value });\n    }\n    // Register the event listener\n    subscribe('files:config:updated', ({ key, value }) => onUpdate(key, value));\n    return {\n        userConfig,\n        update,\n    };\n});\n","/**\n * SPDX-FileCopyrightText: 2023 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\nimport MagnifySvg from '@mdi/svg/svg/magnify.svg?raw';\nimport { getNavigation, View } from '@nextcloud/files';\nimport { t } from '@nextcloud/l10n';\nimport Vue from 'vue';\nimport { getContents } from '../services/Search.ts';\nimport { VIEW_ID as FILES_VIEW_ID } from './files.ts';\nexport const VIEW_ID = 'search';\n/**\n * Register the search-in-files view\n */\nexport function registerSearchView() {\n    let instance;\n    let view;\n    const Navigation = getNavigation();\n    Navigation.register(new View({\n        id: VIEW_ID,\n        name: t('files', 'Search'),\n        caption: t('files', 'Search results within your files.'),\n        async emptyView(el) {\n            if (!view) {\n                view = (await import('./SearchEmptyView.vue')).default;\n            }\n            else {\n                instance.$destroy();\n            }\n            instance = new Vue(view);\n            instance.$mount(el);\n        },\n        icon: MagnifySvg,\n        order: 10,\n        parent: FILES_VIEW_ID,\n        // it should be shown expanded\n        expanded: true,\n        // this view is hidden by default and only shown when active\n        hidden: true,\n        getContents,\n    }));\n}\n","// Imports\nimport ___CSS_LOADER_API_SOURCEMAP_IMPORT___ from \"../../../../css-loader/dist/runtime/sourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, `/**\n * SPDX-FileCopyrightText: 2019 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\n/**\n * SPDX-FileCopyrightText: 2021 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\n/*\n* Ensure proper alignment of the vue material icons\n*/\n.material-design-icon[data-v-c8e429a5] {\n  display: flex;\n  align-self: center;\n  justify-self: center;\n  align-items: center;\n  justify-content: center;\n}\n.nc-chip[data-v-c8e429a5] {\n  --chip-size: 24px;\n  --chip-radius: calc(var(--chip-size) / 2);\n  height: var(--chip-size);\n  max-width: fit-content;\n  display: flex;\n  flex-direction: row;\n  align-items: center;\n  border-radius: var(--chip-radius);\n  background-color: var(--color-background-hover);\n}\n.nc-chip--primary[data-v-c8e429a5] {\n  background-color: var(--color-primary-element);\n  color: var(--color-primary-element-text);\n}\n.nc-chip--secondary[data-v-c8e429a5] {\n  background-color: var(--color-primary-element-light);\n  color: var(--color-primary-element-light-text);\n}\n.nc-chip--error[data-v-c8e429a5] {\n  background-color: var(--color-error);\n  color: var(--color-error-text);\n}\n.nc-chip--warning[data-v-c8e429a5] {\n  background-color: var(--color-warning);\n  color: var(--color-warning-text);\n}\n.nc-chip--success[data-v-c8e429a5] {\n  background-color: var(--color-success);\n  color: var(--color-success-text);\n}\n.nc-chip--no-actions .nc-chip__text[data-v-c8e429a5] {\n  padding-inline-end: calc(2 * var(--default-grid-baseline));\n}\n.nc-chip--no-icon .nc-chip__text[data-v-c8e429a5] {\n  padding-inline-start: calc(2 * var(--default-grid-baseline));\n}\n.nc-chip__text[data-v-c8e429a5] {\n  flex: 1 auto;\n  overflow: hidden;\n  text-overflow: ellipsis;\n  text-wrap: nowrap;\n}\n.nc-chip__icon[data-v-c8e429a5] {\n  flex: 0 0 var(--chip-size);\n  margin-inline-end: var(--default-grid-baseline);\n  line-height: 1;\n  display: flex;\n  align-items: center;\n  justify-content: center;\n  overflow: hidden;\n  height: var(--chip-size);\n  width: var(--chip-size);\n}\n.nc-chip__actions[data-v-c8e429a5] {\n  flex: 0 0 var(--chip-size);\n  --default-clickable-area: var(--chip-size);\n  --border-radius-element: var(--chip-radius);\n}`, \"\",{\"version\":3,\"sources\":[\"webpack://./node_modules/@nextcloud/vue/dist/assets/NcChip-DLfUzq07.css\"],\"names\":[],\"mappings\":\"AAAA;;;EAGE;AACF;;;EAGE;AACF;;CAEC;AACD;EACE,aAAa;EACb,kBAAkB;EAClB,oBAAoB;EACpB,mBAAmB;EACnB,uBAAuB;AACzB;AACA;EACE,iBAAiB;EACjB,yCAAyC;EACzC,wBAAwB;EACxB,sBAAsB;EACtB,aAAa;EACb,mBAAmB;EACnB,mBAAmB;EACnB,iCAAiC;EACjC,+CAA+C;AACjD;AACA;EACE,8CAA8C;EAC9C,wCAAwC;AAC1C;AACA;EACE,oDAAoD;EACpD,8CAA8C;AAChD;AACA;EACE,oCAAoC;EACpC,8BAA8B;AAChC;AACA;EACE,sCAAsC;EACtC,gCAAgC;AAClC;AACA;EACE,sCAAsC;EACtC,gCAAgC;AAClC;AACA;EACE,0DAA0D;AAC5D;AACA;EACE,4DAA4D;AAC9D;AACA;EACE,YAAY;EACZ,gBAAgB;EAChB,uBAAuB;EACvB,iBAAiB;AACnB;AACA;EACE,0BAA0B;EAC1B,+CAA+C;EAC/C,cAAc;EACd,aAAa;EACb,mBAAmB;EACnB,uBAAuB;EACvB,gBAAgB;EAChB,wBAAwB;EACxB,uBAAuB;AACzB;AACA;EACE,0BAA0B;EAC1B,0CAA0C;EAC1C,2CAA2C;AAC7C\",\"sourcesContent\":[\"/**\\n * SPDX-FileCopyrightText: 2019 Nextcloud GmbH and Nextcloud contributors\\n * SPDX-License-Identifier: AGPL-3.0-or-later\\n */\\n/**\\n * SPDX-FileCopyrightText: 2021 Nextcloud GmbH and Nextcloud contributors\\n * SPDX-License-Identifier: AGPL-3.0-or-later\\n */\\n/*\\n* Ensure proper alignment of the vue material icons\\n*/\\n.material-design-icon[data-v-c8e429a5] {\\n  display: flex;\\n  align-self: center;\\n  justify-self: center;\\n  align-items: center;\\n  justify-content: center;\\n}\\n.nc-chip[data-v-c8e429a5] {\\n  --chip-size: 24px;\\n  --chip-radius: calc(var(--chip-size) / 2);\\n  height: var(--chip-size);\\n  max-width: fit-content;\\n  display: flex;\\n  flex-direction: row;\\n  align-items: center;\\n  border-radius: var(--chip-radius);\\n  background-color: var(--color-background-hover);\\n}\\n.nc-chip--primary[data-v-c8e429a5] {\\n  background-color: var(--color-primary-element);\\n  color: var(--color-primary-element-text);\\n}\\n.nc-chip--secondary[data-v-c8e429a5] {\\n  background-color: var(--color-primary-element-light);\\n  color: var(--color-primary-element-light-text);\\n}\\n.nc-chip--error[data-v-c8e429a5] {\\n  background-color: var(--color-error);\\n  color: var(--color-error-text);\\n}\\n.nc-chip--warning[data-v-c8e429a5] {\\n  background-color: var(--color-warning);\\n  color: var(--color-warning-text);\\n}\\n.nc-chip--success[data-v-c8e429a5] {\\n  background-color: var(--color-success);\\n  color: var(--color-success-text);\\n}\\n.nc-chip--no-actions .nc-chip__text[data-v-c8e429a5] {\\n  padding-inline-end: calc(2 * var(--default-grid-baseline));\\n}\\n.nc-chip--no-icon .nc-chip__text[data-v-c8e429a5] {\\n  padding-inline-start: calc(2 * var(--default-grid-baseline));\\n}\\n.nc-chip__text[data-v-c8e429a5] {\\n  flex: 1 auto;\\n  overflow: hidden;\\n  text-overflow: ellipsis;\\n  text-wrap: nowrap;\\n}\\n.nc-chip__icon[data-v-c8e429a5] {\\n  flex: 0 0 var(--chip-size);\\n  margin-inline-end: var(--default-grid-baseline);\\n  line-height: 1;\\n  display: flex;\\n  align-items: center;\\n  justify-content: center;\\n  overflow: hidden;\\n  height: var(--chip-size);\\n  width: var(--chip-size);\\n}\\n.nc-chip__actions[data-v-c8e429a5] {\\n  flex: 0 0 var(--chip-size);\\n  --default-clickable-area: var(--chip-size);\\n  --border-radius-element: var(--chip-radius);\\n}\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_SOURCEMAP_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/sourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, `.files-list__breadcrumbs[data-v-86e9be62]{flex:1 1 100% !important;width:100%;height:100%;margin:0;min-width:0}.files-list__breadcrumbs[data-v-86e9be62]  a{cursor:pointer !important}.files-list__breadcrumbs--with-progress[data-v-86e9be62]{flex-direction:column !important;align-items:flex-start !important}`, \"\",{\"version\":3,\"sources\":[\"webpack://./apps/files/src/components/BreadCrumbs.vue\"],\"names\":[],\"mappings\":\"AACA,0CAEC,wBAAA,CACA,UAAA,CACA,WAAA,CACA,QAAA,CACA,WAAA,CAGC,6CACC,yBAAA,CAIF,yDACC,gCAAA,CACA,iCAAA\",\"sourcesContent\":[\"\\n.files-list__breadcrumbs {\\n\\t// Take as much space as possible\\n\\tflex: 1 1 100% !important;\\n\\twidth: 100%;\\n\\theight: 100%;\\n\\tmargin: 0;\\n\\tmin-width: 0;\\n\\n\\t:deep() {\\n\\t\\ta {\\n\\t\\t\\tcursor: pointer !important;\\n\\t\\t}\\n\\t}\\n\\n\\t&--with-progress {\\n\\t\\tflex-direction: column !important;\\n\\t\\talign-items: flex-start !important;\\n\\t}\\n}\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_SOURCEMAP_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/sourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, `.files-list__drag-drop-notice[data-v-1e2b9696]{display:flex;align-items:center;justify-content:center;width:100%;min-height:102px;margin:0;user-select:none;color:var(--color-text-maxcontrast);background-color:var(--color-main-background);border-color:#000}.files-list__drag-drop-notice h3[data-v-1e2b9696]{margin-inline-start:16px;color:inherit}.files-list__drag-drop-notice-wrapper[data-v-1e2b9696]{display:flex;align-items:center;justify-content:center;height:15vh;max-height:70%;padding:0 5vw;border:2px var(--color-border-dark) dashed;border-radius:var(--border-radius-large)}`, \"\",{\"version\":3,\"sources\":[\"webpack://./apps/files/src/components/DragAndDropNotice.vue\"],\"names\":[],\"mappings\":\"AACA,+CACC,YAAA,CACA,kBAAA,CACA,sBAAA,CACA,UAAA,CAEA,gBAAA,CACA,QAAA,CACA,gBAAA,CACA,mCAAA,CACA,6CAAA,CACA,iBAAA,CAEA,kDACC,wBAAA,CACA,aAAA,CAGD,uDACC,YAAA,CACA,kBAAA,CACA,sBAAA,CACA,WAAA,CACA,cAAA,CACA,aAAA,CACA,0CAAA,CACA,wCAAA\",\"sourcesContent\":[\"\\n.files-list__drag-drop-notice {\\n\\tdisplay: flex;\\n\\talign-items: center;\\n\\tjustify-content: center;\\n\\twidth: 100%;\\n\\t// Breadcrumbs height + row thead height\\n\\tmin-height: calc(58px + 44px);\\n\\tmargin: 0;\\n\\tuser-select: none;\\n\\tcolor: var(--color-text-maxcontrast);\\n\\tbackground-color: var(--color-main-background);\\n\\tborder-color: black;\\n\\n\\th3 {\\n\\t\\tmargin-inline-start: 16px;\\n\\t\\tcolor: inherit;\\n\\t}\\n\\n\\t&-wrapper {\\n\\t\\tdisplay: flex;\\n\\t\\talign-items: center;\\n\\t\\tjustify-content: center;\\n\\t\\theight: 15vh;\\n\\t\\tmax-height: 70%;\\n\\t\\tpadding: 0 5vw;\\n\\t\\tborder: 2px var(--color-border-dark) dashed;\\n\\t\\tborder-radius: var(--border-radius-large);\\n\\t}\\n}\\n\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_SOURCEMAP_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/sourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, `.files-list-drag-image{position:absolute;top:-9999px;inset-inline-start:-9999px;display:flex;overflow:hidden;align-items:center;height:34px;padding:6px 12px;background:var(--color-main-background)}.files-list-drag-image__icon,.files-list-drag-image .files-list__row-icon-preview-container{display:flex;overflow:hidden;align-items:center;justify-content:center;width:22px;height:22px;border-radius:var(--border-radius)}.files-list-drag-image__icon{overflow:visible;margin-inline-end:12px}.files-list-drag-image__icon img{max-width:100%;max-height:100%}.files-list-drag-image__icon .material-design-icon{color:var(--color-text-maxcontrast)}.files-list-drag-image__icon .material-design-icon.folder-icon{color:var(--color-primary-element)}.files-list-drag-image__icon>span{display:flex}.files-list-drag-image__icon>span>.files-list__row-icon-preview-container+.files-list__row-icon-preview-container{margin-top:6px;margin-inline-start:-16px}.files-list-drag-image__icon>span>.files-list__row-icon-preview-container+.files-list__row-icon-preview-container+.files-list__row-icon-preview-container{margin-top:12px}.files-list-drag-image__icon>span:not(:empty)+*{display:none}.files-list-drag-image__name{overflow:hidden;white-space:nowrap;text-overflow:ellipsis}`, \"\",{\"version\":3,\"sources\":[\"webpack://./apps/files/src/components/DragAndDropPreview.vue\"],\"names\":[],\"mappings\":\"AAIA,uBACC,iBAAA,CACA,WAAA,CACA,0BAAA,CACA,YAAA,CACA,eAAA,CACA,kBAAA,CACA,WAAA,CACA,gBAAA,CACA,uCAAA,CAEA,4FAEC,YAAA,CACA,eAAA,CACA,kBAAA,CACA,sBAAA,CACA,UAAA,CACA,WAAA,CACA,kCAAA,CAGD,6BACC,gBAAA,CACA,sBAAA,CAEA,iCACC,cAAA,CACA,eAAA,CAGD,mDACC,mCAAA,CACA,+DACC,kCAAA,CAKF,kCACC,YAAA,CAIA,kHACC,cA/CU,CAgDV,yBAAA,CACA,0JACC,eAAA,CAMF,gDACC,YAAA,CAKH,6BACC,eAAA,CACA,kBAAA,CACA,sBAAA\",\"sourcesContent\":[\"\\n$size: 28px;\\n$stack-shift: 6px;\\n\\n.files-list-drag-image {\\n\\tposition: absolute;\\n\\ttop: -9999px;\\n\\tinset-inline-start: -9999px;\\n\\tdisplay: flex;\\n\\toverflow: hidden;\\n\\talign-items: center;\\n\\theight: $size + $stack-shift;\\n\\tpadding: $stack-shift $stack-shift * 2;\\n\\tbackground: var(--color-main-background);\\n\\n\\t&__icon,\\n\\t.files-list__row-icon-preview-container {\\n\\t\\tdisplay: flex;\\n\\t\\toverflow: hidden;\\n\\t\\talign-items: center;\\n\\t\\tjustify-content: center;\\n\\t\\twidth: $size - $stack-shift;\\n\\t\\theight: $size - $stack-shift;;\\n\\t\\tborder-radius: var(--border-radius);\\n\\t}\\n\\n\\t&__icon {\\n\\t\\toverflow: visible;\\n\\t\\tmargin-inline-end: $stack-shift * 2;\\n\\n\\t\\timg {\\n\\t\\t\\tmax-width: 100%;\\n\\t\\t\\tmax-height: 100%;\\n\\t\\t}\\n\\n\\t\\t.material-design-icon {\\n\\t\\t\\tcolor: var(--color-text-maxcontrast);\\n\\t\\t\\t&.folder-icon {\\n\\t\\t\\t\\tcolor: var(--color-primary-element);\\n\\t\\t\\t}\\n\\t\\t}\\n\\n\\t\\t// Previews container\\n\\t\\t> span {\\n\\t\\t\\tdisplay: flex;\\n\\n\\t\\t\\t// Stack effect if more than one element\\n\\t\\t\\t// Max 3 elements\\n\\t\\t\\t> .files-list__row-icon-preview-container + .files-list__row-icon-preview-container {\\n\\t\\t\\t\\tmargin-top: $stack-shift;\\n\\t\\t\\t\\tmargin-inline-start: $stack-shift * 2 - $size;\\n\\t\\t\\t\\t& + .files-list__row-icon-preview-container {\\n\\t\\t\\t\\t\\tmargin-top: $stack-shift * 2;\\n\\t\\t\\t\\t}\\n\\t\\t\\t}\\n\\n\\t\\t\\t// If we have manually clone the preview,\\n\\t\\t\\t// let's hide any fallback icons\\n\\t\\t\\t&:not(:empty) + * {\\n\\t\\t\\t\\tdisplay: none;\\n\\t\\t\\t}\\n\\t\\t}\\n\\t}\\n\\n\\t&__name {\\n\\t\\toverflow: hidden;\\n\\t\\twhite-space: nowrap;\\n\\t\\ttext-overflow: ellipsis;\\n\\t}\\n}\\n\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_SOURCEMAP_IMPORT___ from \"../../../../../node_modules/css-loader/dist/runtime/sourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, `.favorite-marker-icon[data-v-4505d262]{color:var(--color-favorite);min-width:unset !important;min-height:unset !important}.favorite-marker-icon[data-v-4505d262]  svg{width:20px !important;height:20px !important;max-width:unset !important;max-height:unset !important}.favorite-marker-icon[data-v-4505d262]  svg path{stroke:var(--color-main-background);stroke-width:8px;stroke-linejoin:round;paint-order:stroke}`, \"\",{\"version\":3,\"sources\":[\"webpack://./apps/files/src/components/FileEntry/FavoriteIcon.vue\"],\"names\":[],\"mappings\":\"AACA,uCACC,2BAAA,CAEA,0BAAA,CACG,2BAAA,CAGF,4CAEC,qBAAA,CACA,sBAAA,CAGA,0BAAA,CACA,2BAAA,CAGA,iDACC,mCAAA,CACA,gBAAA,CACA,qBAAA,CACA,kBAAA\",\"sourcesContent\":[\"\\n.favorite-marker-icon {\\n\\tcolor: var(--color-favorite);\\n\\t// Override NcIconSvgWrapper defaults (clickable area)\\n\\tmin-width: unset !important;\\n    min-height: unset !important;\\n\\n\\t:deep() {\\n\\t\\tsvg {\\n\\t\\t\\t// We added a stroke for a11y so we must increase the size to include the stroke\\n\\t\\t\\twidth: 20px !important;\\n\\t\\t\\theight: 20px !important;\\n\\n\\t\\t\\t// Override NcIconSvgWrapper defaults of 20px\\n\\t\\t\\tmax-width: unset !important;\\n\\t\\t\\tmax-height: unset !important;\\n\\n\\t\\t\\t// Sow a border around the icon for better contrast\\n\\t\\t\\tpath {\\n\\t\\t\\t\\tstroke: var(--color-main-background);\\n\\t\\t\\t\\tstroke-width: 8px;\\n\\t\\t\\t\\tstroke-linejoin: round;\\n\\t\\t\\t\\tpaint-order: stroke;\\n\\t\\t\\t}\\n\\t\\t}\\n\\t}\\n}\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_SOURCEMAP_IMPORT___ from \"../../../../../node_modules/css-loader/dist/runtime/sourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, `main.app-content[style*=mouse-pos-x] .v-popper__popper{transform:translate3d(var(--mouse-pos-x), var(--mouse-pos-y), 0px) !important}main.app-content[style*=mouse-pos-x] .v-popper__popper[data-popper-placement=top]{transform:translate3d(var(--mouse-pos-x), calc(var(--mouse-pos-y) - 50vh + 34px), 0px) !important}main.app-content[style*=mouse-pos-x] .v-popper__popper .v-popper__arrow-container{display:none}`, \"\",{\"version\":3,\"sources\":[\"webpack://./apps/files/src/components/FileEntry/FileEntryActions.vue\"],\"names\":[],\"mappings\":\"AAGA,uDACC,6EAAA,CAGA,kFAEC,iGAAA,CAGD,kFACC,YAAA\",\"sourcesContent\":[\"\\n// Allow right click to define the position of the menu\\n// only if defined\\nmain.app-content[style*=\\\"mouse-pos-x\\\"] .v-popper__popper {\\n\\ttransform: translate3d(var(--mouse-pos-x), var(--mouse-pos-y), 0px) !important;\\n\\n\\t// If the menu is too close to the bottom, we move it up\\n\\t&[data-popper-placement=\\\"top\\\"] {\\n\\t\\t// 34px added to align with the top of the cursor\\n\\t\\ttransform: translate3d(var(--mouse-pos-x), calc(var(--mouse-pos-y) - 50vh + 34px), 0px) !important;\\n\\t}\\n\\t// Hide arrow if floating\\n\\t.v-popper__arrow-container {\\n\\t\\tdisplay: none;\\n\\t}\\n}\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_SOURCEMAP_IMPORT___ from \"../../../../../node_modules/css-loader/dist/runtime/sourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, `.files-list__row-action[data-v-5f3391ea]{--max-icon-size: calc(var(--default-clickable-area) - 2 * var(--default-grid-baseline))}.files-list__row-action.files-list__row-action--inline[data-v-5f3391ea]{--max-icon-size: var(--default-clickable-area)}.files-list__row-action .files-list__row-action-icon[data-v-5f3391ea] svg{max-height:var(--max-icon-size) !important;max-width:var(--max-icon-size) !important}.files-list__row-action.files-list__row-action--destructive[data-v-5f3391ea] ::deep(button){color:var(--color-text-error) !important}`, \"\",{\"version\":3,\"sources\":[\"webpack://./apps/files/src/components/FileEntry/FileEntryActions.vue\"],\"names\":[],\"mappings\":\"AACA,yCACC,uFAAA,CAGA,wEACC,8CAAA,CAID,0EACC,0CAAA,CACA,yCAAA,CAIA,4FACC,wCAAA\",\"sourcesContent\":[\"\\n.files-list__row-action {\\n\\t--max-icon-size: calc(var(--default-clickable-area) - 2 * var(--default-grid-baseline));\\n\\n\\t// inline icons can have clickable area size so they still fit into the row\\n\\t&.files-list__row-action--inline {\\n\\t\\t--max-icon-size: var(--default-clickable-area);\\n\\t}\\n\\n\\t// Some icons exceed the default size so we need to enforce a max width and height\\n\\t.files-list__row-action-icon :deep(svg) {\\n\\t\\tmax-height: var(--max-icon-size) !important;\\n\\t\\tmax-width: var(--max-icon-size) !important;\\n\\t}\\n\\n\\t&.files-list__row-action--destructive {\\n\\t\\t::deep(button) {\\n\\t\\t\\tcolor: var(--color-text-error) !important;\\n\\t\\t}\\n\\t}\\n}\\n\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_SOURCEMAP_IMPORT___ from \"../../../../../node_modules/css-loader/dist/runtime/sourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, `button.files-list__row-name-link[data-v-3e8ca2b0]{background-color:unset;border:none;font-weight:normal}button.files-list__row-name-link[data-v-3e8ca2b0]:active{background-color:unset !important}`, \"\",{\"version\":3,\"sources\":[\"webpack://./apps/files/src/components/FileEntry/FileEntryName.vue\"],\"names\":[],\"mappings\":\"AACA,kDACC,sBAAA,CACA,WAAA,CACA,kBAAA,CAEA,yDAEC,iCAAA\",\"sourcesContent\":[\"\\nbutton.files-list__row-name-link {\\n\\tbackground-color: unset;\\n\\tborder: none;\\n\\tfont-weight: normal;\\n\\n\\t&:active {\\n\\t\\t// No active styles - handled by the row entry\\n\\t\\tbackground-color: unset !important;\\n\\t}\\n}\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_SOURCEMAP_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/sourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, `tr[data-v-378a6e4a]{margin-bottom:var(--body-container-margin);border-top:1px solid var(--color-border);background-color:rgba(0,0,0,0) !important;border-bottom:none !important}tr td[data-v-378a6e4a]{user-select:none;color:var(--color-text-maxcontrast) !important}`, \"\",{\"version\":3,\"sources\":[\"webpack://./apps/files/src/components/FilesListTableFooter.vue\"],\"names\":[],\"mappings\":\"AAEA,oBACC,0CAAA,CACA,wCAAA,CAEA,yCAAA,CACA,6BAAA,CAEA,uBACC,gBAAA,CAEA,8CAAA\",\"sourcesContent\":[\"\\n// Scoped row\\ntr {\\n\\tmargin-bottom: var(--body-container-margin);\\n\\tborder-top: 1px solid var(--color-border);\\n\\t// Prevent hover effect on the whole row\\n\\tbackground-color: transparent !important;\\n\\tborder-bottom: none !important;\\n\\n\\ttd {\\n\\t\\tuser-select: none;\\n\\t\\t// Make sure the cell colors don't apply to column headers\\n\\t\\tcolor: var(--color-text-maxcontrast) !important;\\n\\t}\\n}\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_SOURCEMAP_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/sourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, `.files-list__column[data-v-228ab50c]{user-select:none;color:var(--color-text-maxcontrast) !important}.files-list__column--sortable[data-v-228ab50c]{cursor:pointer}`, \"\",{\"version\":3,\"sources\":[\"webpack://./apps/files/src/components/FilesListTableHeader.vue\"],\"names\":[],\"mappings\":\"AACA,qCACC,gBAAA,CAEA,8CAAA,CAEA,+CACC,cAAA\",\"sourcesContent\":[\"\\n.files-list__column {\\n\\tuser-select: none;\\n\\t// Make sure the cell colors don't apply to column headers\\n\\tcolor: var(--color-text-maxcontrast) !important;\\n\\n\\t&--sortable {\\n\\t\\tcursor: pointer;\\n\\t}\\n}\\n\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_SOURCEMAP_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/sourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, `.files-list__row-actions-batch[data-v-4056bece]{flex:1 1 100% !important;max-width:100%}`, \"\",{\"version\":3,\"sources\":[\"webpack://./apps/files/src/components/FilesListTableHeaderActions.vue\"],\"names\":[],\"mappings\":\"AACA,gDACC,wBAAA,CACA,cAAA\",\"sourcesContent\":[\"\\n.files-list__row-actions-batch {\\n\\tflex: 1 1 100% !important;\\n\\tmax-width: 100%;\\n}\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_SOURCEMAP_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/sourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, `.files-list__column-sort-button[data-v-4a8557e6]{margin:0 calc(var(--button-padding, var(--cell-margin))*-1);min-width:calc(100% - 3*var(--cell-margin)) !important}.files-list__column-sort-button-text[data-v-4a8557e6]{color:var(--color-text-maxcontrast);font-weight:normal}.files-list__column-sort-button-icon[data-v-4a8557e6]{color:var(--color-text-maxcontrast);opacity:0;transition:opacity var(--animation-quick);inset-inline-start:-10px}.files-list__column-sort-button--size .files-list__column-sort-button-icon[data-v-4a8557e6]{inset-inline-start:10px}.files-list__column-sort-button--active .files-list__column-sort-button-icon[data-v-4a8557e6],.files-list__column-sort-button:hover .files-list__column-sort-button-icon[data-v-4a8557e6],.files-list__column-sort-button:focus .files-list__column-sort-button-icon[data-v-4a8557e6],.files-list__column-sort-button:active .files-list__column-sort-button-icon[data-v-4a8557e6]{opacity:1}`, \"\",{\"version\":3,\"sources\":[\"webpack://./apps/files/src/components/FilesListTableHeaderButton.vue\"],\"names\":[],\"mappings\":\"AACA,iDAEC,2DAAA,CACA,sDAAA,CAEA,sDACC,mCAAA,CACA,kBAAA,CAGD,sDACC,mCAAA,CACA,SAAA,CACA,yCAAA,CACA,wBAAA,CAGD,4FACC,uBAAA,CAGD,mXAIC,SAAA\",\"sourcesContent\":[\"\\n.files-list__column-sort-button {\\n\\t// Compensate for cells margin\\n\\tmargin: 0 calc(var(--button-padding, var(--cell-margin)) * -1);\\n\\tmin-width: calc(100% - 3 * var(--cell-margin))!important;\\n\\n\\t&-text {\\n\\t\\tcolor: var(--color-text-maxcontrast);\\n\\t\\tfont-weight: normal;\\n\\t}\\n\\n\\t&-icon {\\n\\t\\tcolor: var(--color-text-maxcontrast);\\n\\t\\topacity: 0;\\n\\t\\ttransition: opacity var(--animation-quick);\\n\\t\\tinset-inline-start: -10px;\\n\\t}\\n\\n\\t&--size &-icon {\\n\\t\\tinset-inline-start: 10px;\\n\\t}\\n\\n\\t&--active &-icon,\\n\\t&:hover &-icon,\\n\\t&:focus &-icon,\\n\\t&:active &-icon {\\n\\t\\topacity: 1;\\n\\t}\\n}\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_SOURCEMAP_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/sourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, `.files-list[data-v-1f794bec]{--row-height: 44px;--cell-margin: 14px;--checkbox-padding: calc((var(--row-height) - var(--checkbox-size)) / 2);--checkbox-size: 24px;--clickable-area: var(--default-clickable-area);--icon-preview-size: 24px;--fixed-block-start-position: calc(var(--clickable-area-small) + var(--default-grid-baseline, 4px));display:flex;flex-direction:column;overflow:auto;height:100%;will-change:scroll-position}.files-list[data-v-1f794bec]:has(.files-list__filters:empty){--fixed-block-start-position: 0px}.files-list[data-v-1f794bec]  tbody{will-change:padding;contain:layout paint style;display:flex;flex-direction:column;width:100%;position:relative}.files-list[data-v-1f794bec]  tbody tr{contain:strict}.files-list[data-v-1f794bec]  tbody tr:hover,.files-list[data-v-1f794bec]  tbody tr:focus{background-color:var(--color-background-dark)}.files-list[data-v-1f794bec]  .files-list__before{display:flex;flex-direction:column}.files-list[data-v-1f794bec]  .files-list__selected{padding-inline-end:12px;white-space:nowrap;font-variant-numeric:tabular-nums}.files-list[data-v-1f794bec]  .files-list__table{display:block}.files-list[data-v-1f794bec]  .files-list__table.files-list__table--with-thead-overlay{margin-block-start:calc(-1*var(--row-height))}.files-list[data-v-1f794bec]  .files-list__table--hidden{visibility:hidden;z-index:-1;opacity:0}.files-list[data-v-1f794bec]  .files-list__filters{display:flex;gap:var(--default-grid-baseline);box-sizing:border-box;position:sticky;top:0;background-color:var(--color-main-background);z-index:10;padding-inline:var(--row-height) var(--default-grid-baseline, 4px);height:var(--fixed-block-start-position);width:100%}.files-list[data-v-1f794bec]  .files-list__filters:not(:empty){padding-block:calc(var(--default-grid-baseline, 4px)/2)}.files-list[data-v-1f794bec]  .files-list__thead-overlay{position:sticky;top:var(--fixed-block-start-position);margin-inline-start:var(--row-height);z-index:20;display:flex;align-items:center;background-color:var(--color-main-background);border-block-end:1px solid var(--color-border);height:var(--row-height);flex:0 0 var(--row-height)}.files-list[data-v-1f794bec]  .files-list__thead,.files-list[data-v-1f794bec]  .files-list__tfoot{display:flex;flex-direction:column;width:100%;background-color:var(--color-main-background)}.files-list[data-v-1f794bec]  .files-list__thead{position:sticky;z-index:10;top:var(--fixed-block-start-position)}.files-list[data-v-1f794bec]  .files-list__empty{display:flex;flex-direction:column;align-items:center;justify-content:center;width:100%;height:100%}.files-list[data-v-1f794bec]  tr{position:relative;display:flex;align-items:center;width:100%;border-block-end:1px solid var(--color-border);box-sizing:border-box;user-select:none;height:var(--row-height)}.files-list[data-v-1f794bec]  td,.files-list[data-v-1f794bec]  th{display:flex;align-items:center;flex:0 0 auto;justify-content:start;width:var(--row-height);height:var(--row-height);margin:0;padding:0;color:var(--color-text-maxcontrast);border:none}.files-list[data-v-1f794bec]  td span,.files-list[data-v-1f794bec]  th span{overflow:hidden;white-space:nowrap;text-overflow:ellipsis}.files-list[data-v-1f794bec]  .files-list__row--failed{position:absolute;display:block;top:0;inset-inline:0;bottom:0;opacity:.1;z-index:-1;background:var(--color-error)}.files-list[data-v-1f794bec]  .files-list__row-checkbox{justify-content:center}.files-list[data-v-1f794bec]  .files-list__row-checkbox .checkbox-radio-switch{display:flex;justify-content:center;--icon-size: var(--checkbox-size)}.files-list[data-v-1f794bec]  .files-list__row-checkbox .checkbox-radio-switch label.checkbox-radio-switch__label{width:var(--clickable-area);height:var(--clickable-area);margin:0;padding:calc((var(--clickable-area) - var(--checkbox-size))/2)}.files-list[data-v-1f794bec]  .files-list__row-checkbox .checkbox-radio-switch .checkbox-radio-switch__icon{margin:0 !important}.files-list[data-v-1f794bec]  .files-list__row:hover,.files-list[data-v-1f794bec]  .files-list__row:focus,.files-list[data-v-1f794bec]  .files-list__row:active,.files-list[data-v-1f794bec]  .files-list__row--active,.files-list[data-v-1f794bec]  .files-list__row--dragover{background-color:var(--color-background-hover);--color-text-maxcontrast: var(--color-main-text)}.files-list[data-v-1f794bec]  .files-list__row:hover>*,.files-list[data-v-1f794bec]  .files-list__row:focus>*,.files-list[data-v-1f794bec]  .files-list__row:active>*,.files-list[data-v-1f794bec]  .files-list__row--active>*,.files-list[data-v-1f794bec]  .files-list__row--dragover>*{--color-border: var(--color-border-dark)}.files-list[data-v-1f794bec]  .files-list__row:hover .favorite-marker-icon svg path,.files-list[data-v-1f794bec]  .files-list__row:focus .favorite-marker-icon svg path,.files-list[data-v-1f794bec]  .files-list__row:active .favorite-marker-icon svg path,.files-list[data-v-1f794bec]  .files-list__row--active .favorite-marker-icon svg path,.files-list[data-v-1f794bec]  .files-list__row--dragover .favorite-marker-icon svg path{stroke:var(--color-background-hover)}.files-list[data-v-1f794bec]  .files-list__row--dragover *{pointer-events:none}.files-list[data-v-1f794bec]  .files-list__row-icon{position:relative;display:flex;overflow:visible;align-items:center;flex:0 0 var(--icon-preview-size);justify-content:center;width:var(--icon-preview-size);height:100%;margin-inline-end:var(--checkbox-padding);color:var(--color-primary-element)}.files-list[data-v-1f794bec]  .files-list__row-icon *{cursor:pointer}.files-list[data-v-1f794bec]  .files-list__row-icon>span{justify-content:flex-start}.files-list[data-v-1f794bec]  .files-list__row-icon>span:not(.files-list__row-icon-favorite) svg{width:var(--icon-preview-size);height:var(--icon-preview-size)}.files-list[data-v-1f794bec]  .files-list__row-icon>span.folder-icon,.files-list[data-v-1f794bec]  .files-list__row-icon>span.folder-open-icon{margin:-3px}.files-list[data-v-1f794bec]  .files-list__row-icon>span.folder-icon svg,.files-list[data-v-1f794bec]  .files-list__row-icon>span.folder-open-icon svg{width:calc(var(--icon-preview-size) + 6px);height:calc(var(--icon-preview-size) + 6px)}.files-list[data-v-1f794bec]  .files-list__row-icon-preview-container{position:relative;overflow:hidden;width:var(--icon-preview-size);height:var(--icon-preview-size);border-radius:var(--border-radius)}.files-list[data-v-1f794bec]  .files-list__row-icon-blurhash{position:absolute;inset-block-start:0;inset-inline-start:0;height:100%;width:100%;object-fit:cover}.files-list[data-v-1f794bec]  .files-list__row-icon-preview{object-fit:contain;object-position:center;height:100%;width:100%}.files-list[data-v-1f794bec]  .files-list__row-icon-preview:not(.files-list__row-icon-preview--loaded){background:var(--color-loading-dark)}.files-list[data-v-1f794bec]  .files-list__row-icon-favorite{position:absolute;top:0px;inset-inline-end:-10px}.files-list[data-v-1f794bec]  .files-list__row-icon-overlay{position:absolute;max-height:calc(var(--icon-preview-size)*.6);max-width:calc(var(--icon-preview-size)*.6);color:var(--color-primary-element-text);margin-block-start:2px}.files-list[data-v-1f794bec]  .files-list__row-icon-overlay--file{color:var(--color-main-text);background:var(--color-main-background);border-radius:100%}.files-list[data-v-1f794bec]  .files-list__row-name{overflow:hidden;flex:1 1 auto}.files-list[data-v-1f794bec]  .files-list__row-name button.files-list__row-name-link{display:flex;align-items:center;text-align:start;width:100%;height:100%;min-width:0;margin:0;padding:0}.files-list[data-v-1f794bec]  .files-list__row-name button.files-list__row-name-link:focus-visible{outline:none !important}.files-list[data-v-1f794bec]  .files-list__row-name button.files-list__row-name-link:focus .files-list__row-name-text{outline:var(--border-width-input-focused) solid var(--color-main-text) !important;border-radius:var(--border-radius-element)}.files-list[data-v-1f794bec]  .files-list__row-name button.files-list__row-name-link:focus:not(:focus-visible) .files-list__row-name-text{outline:none !important}.files-list[data-v-1f794bec]  .files-list__row-name .files-list__row-name-text{color:var(--color-main-text);padding:var(--default-grid-baseline) calc(2*var(--default-grid-baseline));padding-inline-start:-10px;display:inline-flex}.files-list[data-v-1f794bec]  .files-list__row-name .files-list__row-name-ext{color:var(--color-text-maxcontrast);overflow:visible}.files-list[data-v-1f794bec]  .files-list__row-rename{width:100%;max-width:600px}.files-list[data-v-1f794bec]  .files-list__row-rename input{width:100%;margin-inline-start:-8px;padding:2px 6px;border-width:2px}.files-list[data-v-1f794bec]  .files-list__row-rename input:invalid{border-color:var(--color-border-error);color:var(--color-text-error)}.files-list[data-v-1f794bec]  .files-list__row-actions{width:auto}.files-list[data-v-1f794bec]  .files-list__row-actions~td,.files-list[data-v-1f794bec]  .files-list__row-actions~th{margin:0 var(--cell-margin)}.files-list[data-v-1f794bec]  .files-list__row-actions button .button-vue__text{font-weight:normal}.files-list[data-v-1f794bec]  .files-list__row-action--inline{margin-inline-end:7px}.files-list[data-v-1f794bec]  .files-list__row-mime,.files-list[data-v-1f794bec]  .files-list__row-mtime,.files-list[data-v-1f794bec]  .files-list__row-size{color:var(--color-text-maxcontrast)}.files-list[data-v-1f794bec]  .files-list__row-size{width:calc(var(--row-height)*2);justify-content:flex-end}.files-list[data-v-1f794bec]  .files-list__row-mtime{width:calc(var(--row-height)*2.5)}.files-list[data-v-1f794bec]  .files-list__row-mime{width:calc(var(--row-height)*3.5)}.files-list[data-v-1f794bec]  .files-list__row-column-custom{width:calc(var(--row-height)*2.5)}@media screen and (max-width: 512px){.files-list[data-v-1f794bec] .files-list__filters{padding-inline:var(--default-grid-baseline, 4px)}}`, \"\",{\"version\":3,\"sources\":[\"webpack://./apps/files/src/components/FilesListVirtual.vue\"],\"names\":[],\"mappings\":\"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\",\"sourcesContent\":[\"\\n.files-list {\\n\\t--row-height: 44px;\\n\\t--cell-margin: 14px;\\n\\n\\t--checkbox-padding: calc((var(--row-height) - var(--checkbox-size)) / 2);\\n\\t--checkbox-size: 24px;\\n\\t--clickable-area: var(--default-clickable-area);\\n\\t--icon-preview-size: 24px;\\n\\n\\t--fixed-block-start-position: calc(var(--clickable-area-small) + var(--default-grid-baseline, 4px));\\n\\tdisplay: flex;\\n\\tflex-direction: column;\\n\\toverflow: auto;\\n\\theight: 100%;\\n\\twill-change: scroll-position;\\n\\n\\t&:has(&__filters:empty) {\\n\\t\\t--fixed-block-start-position: 0px;\\n\\t}\\n\\n\\t& :deep() {\\n\\t\\t// Table head, body and footer\\n\\t\\ttbody {\\n\\t\\t\\twill-change: padding;\\n\\t\\t\\tcontain: layout paint style;\\n\\t\\t\\tdisplay: flex;\\n\\t\\t\\tflex-direction: column;\\n\\t\\t\\twidth: 100%;\\n\\t\\t\\t// Necessary for virtual scrolling absolute\\n\\t\\t\\tposition: relative;\\n\\n\\t\\t\\t/* Hover effect on tbody lines only */\\n\\t\\t\\ttr {\\n\\t\\t\\t\\tcontain: strict;\\n\\t\\t\\t\\t&:hover,\\n\\t\\t\\t\\t&:focus {\\n\\t\\t\\t\\t\\tbackground-color: var(--color-background-dark);\\n\\t\\t\\t\\t}\\n\\t\\t\\t}\\n\\t\\t}\\n\\n\\t\\t// Before table and thead\\n\\t\\t.files-list__before {\\n\\t\\t\\tdisplay: flex;\\n\\t\\t\\tflex-direction: column;\\n\\t\\t}\\n\\n\\t\\t.files-list__selected {\\n\\t\\t\\tpadding-inline-end: 12px;\\n\\t\\t\\twhite-space: nowrap;\\n\\t\\t\\tfont-variant-numeric: tabular-nums;\\n\\t\\t}\\n\\n\\t\\t.files-list__table {\\n\\t\\t\\tdisplay: block;\\n\\n\\t\\t\\t&.files-list__table--with-thead-overlay {\\n\\t\\t\\t\\t// Hide the table header below the overlay\\n\\t\\t\\t\\tmargin-block-start: calc(-1 * var(--row-height));\\n\\t\\t\\t}\\n\\n\\t\\t\\t// Visually hide the table when there are no files\\n\\t\\t\\t&--hidden {\\n\\t\\t\\t\\tvisibility: hidden;\\n\\t\\t\\t\\tz-index: -1;\\n\\t\\t\\t\\topacity: 0;\\n\\t\\t\\t}\\n\\t\\t}\\n\\n\\t\\t.files-list__filters {\\n\\t\\t\\tdisplay: flex;\\n\\t\\t\\tgap: var(--default-grid-baseline);\\n\\t\\t\\tbox-sizing: border-box;\\n\\n\\t\\t\\t// Pinned on top when scrolling above table header\\n\\t\\t\\tposition: sticky;\\n\\t\\t\\ttop: 0;\\n\\t\\t\\t// ensure there is a background to hide the file list on scroll\\n\\t\\t\\tbackground-color: var(--color-main-background);\\n\\t\\t\\tz-index: 10;\\n\\t\\t\\t// fixed the size\\n\\t\\t\\tpadding-inline: var(--row-height) var(--default-grid-baseline, 4px);\\n\\t\\t\\theight: var(--fixed-block-start-position);\\n\\t\\t\\twidth: 100%;\\n\\n\\t\\t\\t&:not(:empty) {\\n\\t\\t\\t\\tpadding-block: calc(var(--default-grid-baseline, 4px) / 2);\\n\\t\\t\\t}\\n\\t\\t}\\n\\n\\t\\t.files-list__thead-overlay {\\n\\t\\t\\t// Pinned on top when scrolling\\n\\t\\t\\tposition: sticky;\\n\\t\\t\\ttop: var(--fixed-block-start-position);\\n\\t\\t\\t// Save space for a row checkbox\\n\\t\\t\\tmargin-inline-start: var(--row-height);\\n\\t\\t\\t// More than .files-list__thead\\n\\t\\t\\tz-index: 20;\\n\\n\\t\\t\\tdisplay: flex;\\n\\t\\t\\talign-items: center;\\n\\n\\t\\t\\t// Reuse row styles\\n\\t\\t\\tbackground-color: var(--color-main-background);\\n\\t\\t\\tborder-block-end: 1px solid var(--color-border);\\n\\t\\t\\theight: var(--row-height);\\n\\t\\t\\tflex: 0 0 var(--row-height);\\n\\t\\t}\\n\\n\\t\\t.files-list__thead,\\n\\t\\t.files-list__tfoot {\\n\\t\\t\\tdisplay: flex;\\n\\t\\t\\tflex-direction: column;\\n\\t\\t\\twidth: 100%;\\n\\t\\t\\tbackground-color: var(--color-main-background);\\n\\t\\t}\\n\\n\\t\\t// Table header\\n\\t\\t.files-list__thead {\\n\\t\\t\\t// Pinned on top when scrolling\\n\\t\\t\\tposition: sticky;\\n\\t\\t\\tz-index: 10;\\n\\t\\t\\ttop: var(--fixed-block-start-position);\\n\\t\\t}\\n\\n\\t\\t// Empty content\\n\\t\\t.files-list__empty {\\n\\t\\t\\tdisplay: flex;\\n\\t\\t\\tflex-direction: column;\\n\\t\\t\\talign-items: center;\\n\\t\\t\\tjustify-content: center;\\n\\t\\t\\twidth: 100%;\\n\\t\\t\\theight: 100%;\\n\\t\\t}\\n\\n\\t\\ttr {\\n\\t\\t\\tposition: relative;\\n\\t\\t\\tdisplay: flex;\\n\\t\\t\\talign-items: center;\\n\\t\\t\\twidth: 100%;\\n\\t\\t\\tborder-block-end: 1px solid var(--color-border);\\n\\t\\t\\tbox-sizing: border-box;\\n\\t\\t\\tuser-select: none;\\n\\t\\t\\theight: var(--row-height);\\n\\t\\t}\\n\\n\\t\\ttd, th {\\n\\t\\t\\tdisplay: flex;\\n\\t\\t\\talign-items: center;\\n\\t\\t\\tflex: 0 0 auto;\\n\\t\\t\\tjustify-content: start;\\n\\t\\t\\twidth: var(--row-height);\\n\\t\\t\\theight: var(--row-height);\\n\\t\\t\\tmargin: 0;\\n\\t\\t\\tpadding: 0;\\n\\t\\t\\tcolor: var(--color-text-maxcontrast);\\n\\t\\t\\tborder: none;\\n\\n\\t\\t\\t// Columns should try to add any text\\n\\t\\t\\t// node wrapped in a span. That should help\\n\\t\\t\\t// with the ellipsis on overflow.\\n\\t\\t\\tspan {\\n\\t\\t\\t\\toverflow: hidden;\\n\\t\\t\\t\\twhite-space: nowrap;\\n\\t\\t\\t\\ttext-overflow: ellipsis;\\n\\t\\t\\t}\\n\\t\\t}\\n\\n\\t\\t.files-list__row--failed {\\n\\t\\t\\tposition: absolute;\\n\\t\\t\\tdisplay: block;\\n\\t\\t\\ttop: 0;\\n\\t\\t\\tinset-inline: 0;\\n\\t\\t\\tbottom: 0;\\n\\t\\t\\topacity: .1;\\n\\t\\t\\tz-index: -1;\\n\\t\\t\\tbackground: var(--color-error);\\n\\t\\t}\\n\\n\\t\\t.files-list__row-checkbox {\\n\\t\\t\\tjustify-content: center;\\n\\n\\t\\t\\t.checkbox-radio-switch {\\n\\t\\t\\t\\tdisplay: flex;\\n\\t\\t\\t\\tjustify-content: center;\\n\\n\\t\\t\\t\\t--icon-size: var(--checkbox-size);\\n\\n\\t\\t\\t\\tlabel.checkbox-radio-switch__label {\\n\\t\\t\\t\\t\\twidth: var(--clickable-area);\\n\\t\\t\\t\\t\\theight: var(--clickable-area);\\n\\t\\t\\t\\t\\tmargin: 0;\\n\\t\\t\\t\\t\\tpadding: calc((var(--clickable-area) - var(--checkbox-size)) / 2);\\n\\t\\t\\t\\t}\\n\\n\\t\\t\\t\\t.checkbox-radio-switch__icon {\\n\\t\\t\\t\\t\\tmargin: 0 !important;\\n\\t\\t\\t\\t}\\n\\t\\t\\t}\\n\\t\\t}\\n\\n\\t\\t.files-list__row {\\n\\t\\t\\t&:hover, &:focus, &:active, &--active, &--dragover {\\n\\t\\t\\t\\t// WCAG AA compliant\\n\\t\\t\\t\\tbackground-color: var(--color-background-hover);\\n\\t\\t\\t\\t// text-maxcontrast have been designed to pass WCAG AA over\\n\\t\\t\\t\\t// a white background, we need to adjust then.\\n\\t\\t\\t\\t--color-text-maxcontrast: var(--color-main-text);\\n\\t\\t\\t\\t> * {\\n\\t\\t\\t\\t\\t--color-border: var(--color-border-dark);\\n\\t\\t\\t\\t}\\n\\n\\t\\t\\t\\t// Hover state of the row should also change the favorite markers background\\n\\t\\t\\t\\t.favorite-marker-icon svg path {\\n\\t\\t\\t\\t\\tstroke: var(--color-background-hover);\\n\\t\\t\\t\\t}\\n\\t\\t\\t}\\n\\n\\t\\t\\t&--dragover * {\\n\\t\\t\\t\\t// Prevent dropping on row children\\n\\t\\t\\t\\tpointer-events: none;\\n\\t\\t\\t}\\n\\t\\t}\\n\\n\\t\\t// Entry preview or mime icon\\n\\t\\t.files-list__row-icon {\\n\\t\\t\\tposition: relative;\\n\\t\\t\\tdisplay: flex;\\n\\t\\t\\toverflow: visible;\\n\\t\\t\\talign-items: center;\\n\\t\\t\\t// No shrinking or growing allowed\\n\\t\\t\\tflex: 0 0 var(--icon-preview-size);\\n\\t\\t\\tjustify-content: center;\\n\\t\\t\\twidth: var(--icon-preview-size);\\n\\t\\t\\theight: 100%;\\n\\t\\t\\t// Show same padding as the checkbox right padding for visual balance\\n\\t\\t\\tmargin-inline-end: var(--checkbox-padding);\\n\\t\\t\\tcolor: var(--color-primary-element);\\n\\n\\t\\t\\t// Icon is also clickable\\n\\t\\t\\t* {\\n\\t\\t\\t\\tcursor: pointer;\\n\\t\\t\\t}\\n\\n\\t\\t\\t& > span {\\n\\t\\t\\t\\tjustify-content: flex-start;\\n\\n\\t\\t\\t\\t&:not(.files-list__row-icon-favorite) svg {\\n\\t\\t\\t\\t\\twidth: var(--icon-preview-size);\\n\\t\\t\\t\\t\\theight: var(--icon-preview-size);\\n\\t\\t\\t\\t}\\n\\n\\t\\t\\t\\t// Slightly increase the size of the folder icon\\n\\t\\t\\t\\t&.folder-icon,\\n\\t\\t\\t\\t&.folder-open-icon {\\n\\t\\t\\t\\t\\tmargin: -3px;\\n\\t\\t\\t\\t\\tsvg {\\n\\t\\t\\t\\t\\t\\twidth: calc(var(--icon-preview-size) + 6px);\\n\\t\\t\\t\\t\\t\\theight: calc(var(--icon-preview-size) + 6px);\\n\\t\\t\\t\\t\\t}\\n\\t\\t\\t\\t}\\n\\t\\t\\t}\\n\\n\\t\\t\\t&-preview-container {\\n\\t\\t\\t\\tposition: relative; // Needed for the blurshash to be positioned correctly\\n\\t\\t\\t\\toverflow: hidden;\\n\\t\\t\\t\\twidth: var(--icon-preview-size);\\n\\t\\t\\t\\theight: var(--icon-preview-size);\\n\\t\\t\\t\\tborder-radius: var(--border-radius);\\n\\t\\t\\t}\\n\\n\\t\\t\\t&-blurhash {\\n\\t\\t\\t\\tposition: absolute;\\n\\t\\t\\t\\tinset-block-start: 0;\\n\\t\\t\\t\\tinset-inline-start: 0;\\n\\t\\t\\t\\theight: 100%;\\n\\t\\t\\t\\twidth: 100%;\\n\\t\\t\\t\\tobject-fit: cover;\\n\\t\\t\\t}\\n\\n\\t\\t\\t&-preview {\\n\\t\\t\\t\\t// Center and contain the preview\\n\\t\\t\\t\\tobject-fit: contain;\\n\\t\\t\\t\\tobject-position: center;\\n\\n\\t\\t\\t\\theight: 100%;\\n\\t\\t\\t\\twidth: 100%;\\n\\n\\t\\t\\t\\t/* Preview not loaded animation effect */\\n\\t\\t\\t\\t&:not(.files-list__row-icon-preview--loaded) {\\n\\t\\t\\t\\t\\tbackground: var(--color-loading-dark);\\n\\t\\t\\t\\t\\t// animation: preview-gradient-fade 1.2s ease-in-out infinite;\\n\\t\\t\\t\\t}\\n\\t\\t\\t}\\n\\n\\t\\t\\t&-favorite {\\n\\t\\t\\t\\tposition: absolute;\\n\\t\\t\\t\\ttop: 0px;\\n\\t\\t\\t\\tinset-inline-end: -10px;\\n\\t\\t\\t}\\n\\n\\t\\t\\t// File and folder overlay\\n\\t\\t\\t&-overlay {\\n\\t\\t\\t\\tposition: absolute;\\n\\t\\t\\t\\tmax-height: calc(var(--icon-preview-size) * 0.6);\\n\\t\\t\\t\\tmax-width: calc(var(--icon-preview-size) * 0.6);\\n\\t\\t\\t\\tcolor: var(--color-primary-element-text);\\n\\t\\t\\t\\t// better alignment with the folder icon\\n\\t\\t\\t\\tmargin-block-start: 2px;\\n\\n\\t\\t\\t\\t// Improve icon contrast with a background for files\\n\\t\\t\\t\\t&--file {\\n\\t\\t\\t\\t\\tcolor: var(--color-main-text);\\n\\t\\t\\t\\t\\tbackground: var(--color-main-background);\\n\\t\\t\\t\\t\\tborder-radius: 100%;\\n\\t\\t\\t\\t}\\n\\t\\t\\t}\\n\\t\\t}\\n\\n\\t\\t// Entry link\\n\\t\\t.files-list__row-name {\\n\\t\\t\\t// Prevent link from overflowing\\n\\t\\t\\toverflow: hidden;\\n\\t\\t\\t// Take as much space as possible\\n\\t\\t\\tflex: 1 1 auto;\\n\\n\\t\\t\\tbutton.files-list__row-name-link {\\n\\t\\t\\t\\tdisplay: flex;\\n\\t\\t\\t\\talign-items: center;\\n\\t\\t\\t\\ttext-align: start;\\n\\t\\t\\t\\t// Fill cell height and width\\n\\t\\t\\t\\twidth: 100%;\\n\\t\\t\\t\\theight: 100%;\\n\\t\\t\\t\\t// Necessary for flex grow to work\\n\\t\\t\\t\\tmin-width: 0;\\n\\t\\t\\t\\tmargin: 0;\\n\\t\\t\\t\\tpadding: 0;\\n\\n\\t\\t\\t\\t// Already added to the inner text, see rule below\\n\\t\\t\\t\\t&:focus-visible {\\n\\t\\t\\t\\t\\toutline: none !important;\\n\\t\\t\\t\\t}\\n\\n\\t\\t\\t\\t// Keyboard indicator a11y\\n\\t\\t\\t\\t&:focus .files-list__row-name-text {\\n\\t\\t\\t\\t\\toutline: var(--border-width-input-focused) solid var(--color-main-text) !important;\\n\\t\\t\\t\\t\\tborder-radius: var(--border-radius-element);\\n\\t\\t\\t\\t}\\n\\t\\t\\t\\t&:focus:not(:focus-visible) .files-list__row-name-text {\\n\\t\\t\\t\\t\\toutline: none !important;\\n\\t\\t\\t\\t}\\n\\t\\t\\t}\\n\\n\\t\\t\\t.files-list__row-name-text {\\n\\t\\t\\t\\tcolor: var(--color-main-text);\\n\\t\\t\\t\\t// Make some space for the outline\\n\\t\\t\\t\\tpadding: var(--default-grid-baseline) calc(2 * var(--default-grid-baseline));\\n\\t\\t\\t\\tpadding-inline-start: -10px;\\n\\t\\t\\t\\t// Align two name and ext\\n\\t\\t\\t\\tdisplay: inline-flex;\\n\\t\\t\\t}\\n\\n\\t\\t\\t.files-list__row-name-ext {\\n\\t\\t\\t\\tcolor: var(--color-text-maxcontrast);\\n\\t\\t\\t\\t// always show the extension\\n\\t\\t\\t\\toverflow: visible;\\n\\t\\t\\t}\\n\\t\\t}\\n\\n\\t\\t// Rename form\\n\\t\\t.files-list__row-rename {\\n\\t\\t\\twidth: 100%;\\n\\t\\t\\tmax-width: 600px;\\n\\t\\t\\tinput {\\n\\t\\t\\t\\twidth: 100%;\\n\\t\\t\\t\\t// Align with text, 0 - padding - border\\n\\t\\t\\t\\tmargin-inline-start: -8px;\\n\\t\\t\\t\\tpadding: 2px 6px;\\n\\t\\t\\t\\tborder-width: 2px;\\n\\n\\t\\t\\t\\t&:invalid {\\n\\t\\t\\t\\t\\t// Show red border on invalid input\\n\\t\\t\\t\\t\\tborder-color: var(--color-border-error);\\n\\t\\t\\t\\t\\tcolor: var(--color-text-error);\\n\\t\\t\\t\\t}\\n\\t\\t\\t}\\n\\t\\t}\\n\\n\\t\\t.files-list__row-actions {\\n\\t\\t\\t// take as much space as necessary\\n\\t\\t\\twidth: auto;\\n\\n\\t\\t\\t// Add margin to all cells after the actions\\n\\t\\t\\t& ~ td,\\n\\t\\t\\t& ~ th {\\n\\t\\t\\t\\tmargin: 0 var(--cell-margin);\\n\\t\\t\\t}\\n\\n\\t\\t\\tbutton {\\n\\t\\t\\t\\t.button-vue__text {\\n\\t\\t\\t\\t\\t// Remove bold from default button styling\\n\\t\\t\\t\\t\\tfont-weight: normal;\\n\\t\\t\\t\\t}\\n\\t\\t\\t}\\n\\t\\t}\\n\\n\\t\\t.files-list__row-action--inline {\\n\\t\\t\\tmargin-inline-end: 7px;\\n\\t\\t}\\n\\n\\t\\t.files-list__row-mime,\\n\\t\\t.files-list__row-mtime,\\n\\t\\t.files-list__row-size {\\n\\t\\t\\tcolor: var(--color-text-maxcontrast);\\n\\t\\t}\\n\\n\\t\\t.files-list__row-size {\\n\\t\\t\\twidth: calc(var(--row-height) * 2);\\n\\t\\t\\t// Right align content/text\\n\\t\\t\\tjustify-content: flex-end;\\n\\t\\t}\\n\\n\\t\\t.files-list__row-mtime {\\n\\t\\t\\twidth: calc(var(--row-height) * 2.5);\\n\\t\\t}\\n\\n\\t\\t.files-list__row-mime {\\n\\t\\t\\twidth: calc(var(--row-height) * 3.5);\\n\\t\\t}\\n\\n\\t\\t.files-list__row-column-custom {\\n\\t\\t\\twidth: calc(var(--row-height) * 2.5);\\n\\t\\t}\\n\\t}\\n}\\n\\n@media screen and (max-width: 512px) {\\n\\t.files-list :deep(.files-list__filters) {\\n\\t\\t// Reduce padding on mobile\\n\\t\\tpadding-inline: var(--default-grid-baseline, 4px);\\n\\t}\\n}\\n\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_SOURCEMAP_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/sourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, `.files-list--grid tbody.files-list__tbody{--item-padding: 16px;--icon-preview-size: 166px;--name-height: var(--default-clickable-area);--mtime-height: calc(var(--font-size-small) + var(--default-grid-baseline));--row-width: calc(var(--icon-preview-size) + var(--item-padding) * 2);--row-height: calc(var(--icon-preview-size) + var(--name-height) + var(--mtime-height) + var(--item-padding) * 2);--checkbox-padding: 0px;display:grid;grid-template-columns:repeat(auto-fill, var(--row-width));align-content:center;align-items:center;justify-content:space-around;justify-items:center}.files-list--grid tbody.files-list__tbody tr{display:flex;flex-direction:column;width:var(--row-width);height:var(--row-height);border:none;border-radius:var(--border-radius-large);padding:var(--item-padding)}.files-list--grid tbody.files-list__tbody .files-list__row-checkbox{position:absolute;z-index:9;top:calc(var(--item-padding)/2);inset-inline-start:calc(var(--item-padding)/2);overflow:hidden;--checkbox-container-size: 44px;width:var(--checkbox-container-size);height:var(--checkbox-container-size)}.files-list--grid tbody.files-list__tbody .files-list__row-checkbox .checkbox-radio-switch__content::after{content:\"\";width:16px;height:16px;position:absolute;inset-inline-start:50%;margin-inline-start:-8px;z-index:-1;background:var(--color-main-background)}.files-list--grid tbody.files-list__tbody .files-list__row-icon-favorite{position:absolute;top:0;inset-inline-end:0;display:flex;align-items:center;justify-content:center;width:var(--clickable-area);height:var(--clickable-area)}.files-list--grid tbody.files-list__tbody .files-list__row-name{display:flex;flex-direction:column;width:var(--icon-preview-size);height:calc(var(--icon-preview-size) + var(--name-height));overflow:visible}.files-list--grid tbody.files-list__tbody .files-list__row-name span.files-list__row-icon{width:var(--icon-preview-size);height:var(--icon-preview-size)}.files-list--grid tbody.files-list__tbody .files-list__row-name .files-list__row-name-text{margin:0;margin-inline-start:-4px;padding:0px 4px}.files-list--grid tbody.files-list__tbody .files-list__row-mtime{width:var(--icon-preview-size);height:var(--mtime-height);font-size:var(--font-size-small)}.files-list--grid tbody.files-list__tbody .files-list__row-actions{position:absolute;inset-inline-end:calc(var(--clickable-area)/4);inset-block-end:calc(var(--mtime-height)/2);width:var(--clickable-area);height:var(--clickable-area)}@media screen and (max-width: 768px){.files-list--grid tbody.files-list__tbody{--mtime-height: 0px}.files-list--grid tbody.files-list__tbody .files-list__row-actions{inset-block-end:var(--item-padding)}.files-list--grid tbody.files-list__tbody .files-list__row-name-text{padding-inline-end:var(--clickable-area) !important}}`, \"\",{\"version\":3,\"sources\":[\"webpack://./apps/files/src/components/FilesListVirtual.vue\"],\"names\":[],\"mappings\":\"AAEA,0CACC,oBAAA,CACA,0BAAA,CACA,4CAAA,CACA,2EAAA,CACA,qEAAA,CACA,iHAAA,CACA,uBAAA,CACA,YAAA,CACA,yDAAA,CAEA,oBAAA,CACA,kBAAA,CACA,4BAAA,CACA,oBAAA,CAEA,6CACC,YAAA,CACA,qBAAA,CACA,sBAAA,CACA,wBAAA,CACA,WAAA,CACA,wCAAA,CACA,2BAAA,CAID,oEACC,iBAAA,CACA,SAAA,CACA,+BAAA,CACA,8CAAA,CACA,eAAA,CACA,+BAAA,CACA,oCAAA,CACA,qCAAA,CAGA,2GACC,UAAA,CACA,UAAA,CACA,WAAA,CACA,iBAAA,CACA,sBAAA,CACA,wBAAA,CACA,UAAA,CACA,uCAAA,CAKF,yEACC,iBAAA,CACA,KAAA,CACA,kBAAA,CACA,YAAA,CACA,kBAAA,CACA,sBAAA,CACA,2BAAA,CACA,4BAAA,CAGD,gEACC,YAAA,CACA,qBAAA,CACA,8BAAA,CACA,0DAAA,CAEA,gBAAA,CAEA,0FACC,8BAAA,CACA,+BAAA,CAGD,2FACC,QAAA,CAEA,wBAAA,CACA,eAAA,CAIF,iEACC,8BAAA,CACA,0BAAA,CACA,gCAAA,CAGD,mEACC,iBAAA,CACA,8CAAA,CACA,2CAAA,CACA,2BAAA,CACA,4BAAA,CAIF,qCAEC,0CACC,mBAAA,CAGA,mEACC,mCAAA,CAID,qEACC,mDAAA,CAAA\",\"sourcesContent\":[\"\\n// Grid mode\\n.files-list--grid tbody.files-list__tbody {\\n\\t--item-padding: 16px;\\n\\t--icon-preview-size: 166px;\\n\\t--name-height: var(--default-clickable-area);\\n\\t--mtime-height: calc(var(--font-size-small) + var(--default-grid-baseline));\\n\\t--row-width: calc(var(--icon-preview-size) + var(--item-padding) * 2);\\n\\t--row-height: calc(var(--icon-preview-size) + var(--name-height) + var(--mtime-height) + var(--item-padding) * 2);\\n\\t--checkbox-padding: 0px;\\n\\tdisplay: grid;\\n\\tgrid-template-columns: repeat(auto-fill, var(--row-width));\\n\\n\\talign-content: center;\\n\\talign-items: center;\\n\\tjustify-content: space-around;\\n\\tjustify-items: center;\\n\\n\\ttr {\\n\\t\\tdisplay: flex;\\n\\t\\tflex-direction: column;\\n\\t\\twidth: var(--row-width);\\n\\t\\theight: var(--row-height);\\n\\t\\tborder: none;\\n\\t\\tborder-radius: var(--border-radius-large);\\n\\t\\tpadding: var(--item-padding);\\n\\t}\\n\\n\\t// Checkbox in the top left\\n\\t.files-list__row-checkbox {\\n\\t\\tposition: absolute;\\n\\t\\tz-index: 9;\\n\\t\\ttop: calc(var(--item-padding) / 2);\\n\\t\\tinset-inline-start: calc(var(--item-padding) / 2);\\n\\t\\toverflow: hidden;\\n\\t\\t--checkbox-container-size: 44px;\\n\\t\\twidth: var(--checkbox-container-size);\\n\\t\\theight: var(--checkbox-container-size);\\n\\n\\t\\t// Add a background to the checkbox so we do not see the image through it.\\n\\t\\t.checkbox-radio-switch__content::after {\\n\\t\\t\\tcontent: '';\\n\\t\\t\\twidth: 16px;\\n\\t\\t\\theight: 16px;\\n\\t\\t\\tposition: absolute;\\n\\t\\t\\tinset-inline-start: 50%;\\n\\t\\t\\tmargin-inline-start: -8px;\\n\\t\\t\\tz-index: -1;\\n\\t\\t\\tbackground: var(--color-main-background);\\n\\t\\t}\\n\\t}\\n\\n\\t// Star icon in the top right\\n\\t.files-list__row-icon-favorite {\\n\\t\\tposition: absolute;\\n\\t\\ttop: 0;\\n\\t\\tinset-inline-end: 0;\\n\\t\\tdisplay: flex;\\n\\t\\talign-items: center;\\n\\t\\tjustify-content: center;\\n\\t\\twidth: var(--clickable-area);\\n\\t\\theight: var(--clickable-area);\\n\\t}\\n\\n\\t.files-list__row-name {\\n\\t\\tdisplay: flex;\\n\\t\\tflex-direction: column;\\n\\t\\twidth: var(--icon-preview-size);\\n\\t\\theight: calc(var(--icon-preview-size) + var(--name-height));\\n\\t\\t// Ensure that the name outline is visible.\\n\\t\\toverflow: visible;\\n\\n\\t\\tspan.files-list__row-icon {\\n\\t\\t\\twidth: var(--icon-preview-size);\\n\\t\\t\\theight: var(--icon-preview-size);\\n\\t\\t}\\n\\n\\t\\t.files-list__row-name-text {\\n\\t\\t\\tmargin: 0;\\n\\t\\t\\t// Ensure that the outline is not too close to the text.\\n\\t\\t\\tmargin-inline-start: -4px;\\n\\t\\t\\tpadding: 0px 4px;\\n\\t\\t}\\n\\t}\\n\\n\\t.files-list__row-mtime {\\n\\t\\twidth: var(--icon-preview-size);\\n\\t\\theight: var(--mtime-height);\\n\\t\\tfont-size: var(--font-size-small);\\n\\t}\\n\\n\\t.files-list__row-actions {\\n\\t\\tposition: absolute;\\n\\t\\tinset-inline-end: calc(var(--clickable-area) / 4);\\n\\t\\tinset-block-end: calc(var(--mtime-height) / 2);\\n\\t\\twidth: var(--clickable-area);\\n\\t\\theight: var(--clickable-area);\\n\\t}\\n}\\n\\n@media screen and (max-width: 768px) {\\n\\t// there is no mtime\\n\\t.files-list--grid tbody.files-list__tbody {\\n\\t\\t--mtime-height: 0px;\\n\\n\\t\\t// so we move the action to the name\\n\\t\\t.files-list__row-actions {\\n\\t\\t\\tinset-block-end: var(--item-padding);\\n\\t\\t}\\n\\n\\t\\t// and we need to keep space on the name for the actions\\n\\t\\t.files-list__row-name-text {\\n\\t\\t\\tpadding-inline-end: var(--clickable-area) !important;\\n\\t\\t}\\n\\t}\\n}\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_SOURCEMAP_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/sourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, `.app-navigation-entry__settings-quota[data-v-062ef4b2]{--app-navigation-quota-margin: calc((var(--default-clickable-area) - 24px) / 2)}.app-navigation-entry__settings-quota--not-unlimited[data-v-062ef4b2] .app-navigation-entry__name{line-height:1;margin-top:var(--app-navigation-quota-margin)}.app-navigation-entry__settings-quota progress[data-v-062ef4b2]{position:absolute;bottom:var(--app-navigation-quota-margin);margin-inline-start:var(--default-clickable-area);width:calc(100% - 1.5*var(--default-clickable-area))}`, \"\",{\"version\":3,\"sources\":[\"webpack://./apps/files/src/components/NavigationQuota.vue\"],\"names\":[],\"mappings\":\"AAEA,uDAEC,+EAAA,CAEA,kGACC,aAAA,CACA,6CAAA,CAGD,gEACC,iBAAA,CACA,yCAAA,CACA,iDAAA,CACA,oDAAA\",\"sourcesContent\":[\"\\n// User storage stats display\\n.app-navigation-entry__settings-quota {\\n\\t// Align title with progress and icon\\n\\t--app-navigation-quota-margin: calc((var(--default-clickable-area) - 24px) / 2); // 20px icon size and 4px progress bar\\n\\n\\t&--not-unlimited :deep(.app-navigation-entry__name) {\\n\\t\\tline-height: 1;\\n\\t\\tmargin-top: var(--app-navigation-quota-margin);\\n\\t}\\n\\n\\tprogress {\\n\\t\\tposition: absolute;\\n\\t\\tbottom: var(--app-navigation-quota-margin);\\n\\t\\tmargin-inline-start: var(--default-clickable-area);\\n\\t\\twidth: calc(100% - (1.5 * var(--default-clickable-area)));\\n\\t}\\n}\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_SOURCEMAP_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/sourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, `.toast-loading-icon{margin-inline-start:-4px;min-width:26px}.app-content[data-v-ed23df10]{display:flex;overflow:hidden;flex-direction:column;max-height:100%;position:relative !important}.files-list__header[data-v-ed23df10]{display:flex;gap:var(--default-grid-baseline);align-items:center;flex:0 0;max-width:100%;margin-block:var(--app-navigation-padding, 4px);margin-inline:calc(var(--default-clickable-area) + 2*var(--app-navigation-padding, 4px)) var(--app-navigation-padding, 4px)}.files-list__header--public[data-v-ed23df10]{margin-inline:0 var(--app-navigation-padding, 4px)}.files-list__header>*[data-v-ed23df10]{flex:0 0}.files-list__header-actions[data-v-ed23df10]{min-width:fit-content !important}.files-list__header-upload-button--narrow[data-v-ed23df10]{position:fixed;inset-block-end:calc(1.5*var(--default-grid-baseline));inset-inline-end:calc(1.5*var(--default-grid-baseline))}.files-list__before[data-v-ed23df10]{display:flex;flex-direction:column;gap:calc(var(--default-grid-baseline)*2);margin-inline:calc(var(--default-clickable-area) + 2*var(--app-navigation-padding))}.files-list__empty-view-wrapper[data-v-ed23df10]{display:flex;height:100%}.files-list__refresh-icon[data-v-ed23df10]{flex:0 0 var(--default-clickable-area);width:var(--default-clickable-area);height:var(--default-clickable-area)}.files-list__loading-icon[data-v-ed23df10]{margin:auto}`, \"\",{\"version\":3,\"sources\":[\"webpack://./apps/files/src/views/FilesList.vue\"],\"names\":[],\"mappings\":\"AACA,oBAEC,wBAAA,CAEA,cAAA,CAGD,8BAEC,YAAA,CACA,eAAA,CACA,qBAAA,CACA,eAAA,CACA,4BAAA,CAIA,qCACC,YAAA,CACA,gCAAA,CACA,kBAAA,CAEA,QAAA,CACA,cAAA,CAEA,+CAAA,CACA,2HAAA,CAEA,6CAEC,kDAAA,CAGD,uCAGC,QAAA,CAGD,6CACC,gCAAA,CAIF,2DAEC,cAAA,CACA,sDAAA,CACA,uDAAA,CAGD,qCACC,YAAA,CACA,qBAAA,CACA,wCAAA,CACA,mFAAA,CAGD,iDACC,YAAA,CACA,WAAA,CAGD,2CACC,sCAAA,CACA,mCAAA,CACA,oCAAA,CAGD,2CACC,WAAA\",\"sourcesContent\":[\"\\n:global(.toast-loading-icon) {\\n\\t// Reduce start margin (it was made for text but this is an icon)\\n\\tmargin-inline-start: -4px;\\n\\t// 16px icon + 5px on both sides\\n\\tmin-width: 26px;\\n}\\n\\n.app-content {\\n\\t// Virtual list needs to be full height and is scrollable\\n\\tdisplay: flex;\\n\\toverflow: hidden;\\n\\tflex-direction: column;\\n\\tmax-height: 100%;\\n\\tposition: relative !important;\\n}\\n\\n.files-list {\\n\\t&__header {\\n\\t\\tdisplay: flex;\\n\\t\\tgap: var(--default-grid-baseline);\\n\\t\\talign-items: center;\\n\\t\\t// Do not grow or shrink (vertically)\\n\\t\\tflex: 0 0;\\n\\t\\tmax-width: 100%;\\n\\t\\t// Align with the navigation toggle icon\\n\\t\\tmargin-block: var(--app-navigation-padding, 4px);\\n\\t\\tmargin-inline: calc(var(--default-clickable-area) + 2 * var(--app-navigation-padding, 4px)) var(--app-navigation-padding, 4px);\\n\\n\\t\\t&--public {\\n\\t\\t\\t// There is no navigation toggle on public shares\\n\\t\\t\\tmargin-inline: 0 var(--app-navigation-padding, 4px);\\n\\t\\t}\\n\\n\\t\\t>* {\\n\\t\\t\\t// Do not grow or shrink (horizontally)\\n\\t\\t\\t// Only the breadcrumbs shrinks\\n\\t\\t\\tflex: 0 0;\\n\\t\\t}\\n\\n\\t\\t&-actions {\\n\\t\\t\\tmin-width: fit-content !important;\\n\\t\\t}\\n\\t}\\n\\n\\t&__header-upload-button--narrow {\\n\\t\\t// this is teleported to body on narrow screens\\n\\t\\tposition: fixed;\\n\\t\\tinset-block-end: calc(1.5 * var(--default-grid-baseline));\\n\\t\\tinset-inline-end: calc(1.5 * var(--default-grid-baseline));\\n\\t}\\n\\n\\t&__before {\\n\\t\\tdisplay: flex;\\n\\t\\tflex-direction: column;\\n\\t\\tgap: calc(var(--default-grid-baseline) * 2);\\n\\t\\tmargin-inline: calc(var(--default-clickable-area) + 2 * var(--app-navigation-padding));\\n\\t}\\n\\n\\t&__empty-view-wrapper {\\n\\t\\tdisplay: flex;\\n\\t\\theight: 100%;\\n\\t}\\n\\n\\t&__refresh-icon {\\n\\t\\tflex: 0 0 var(--default-clickable-area);\\n\\t\\twidth: var(--default-clickable-area);\\n\\t\\theight: var(--default-clickable-area);\\n\\t}\\n\\n\\t&__loading-icon {\\n\\t\\tmargin: auto;\\n\\t}\\n}\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_SOURCEMAP_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/sourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, `.app-navigation[data-v-b3d7fbf2] .app-navigation-entry.active .button-vue.icon-collapse:not(:hover){color:var(--color-primary-element-text)}.app-navigation>ul.app-navigation__list[data-v-b3d7fbf2]{padding-bottom:var(--default-grid-baseline, 4px)}.app-navigation-entry__settings[data-v-b3d7fbf2]{height:auto !important;overflow:hidden !important;padding-top:0 !important;flex:0 0 auto}.files-navigation[data-v-b3d7fbf2] .app-navigation__content > ul.app-navigation__list{will-change:scroll-position}`, \"\",{\"version\":3,\"sources\":[\"webpack://./apps/files/src/views/FilesNavigation.vue\"],\"names\":[],\"mappings\":\"AAEC,oGACC,uCAAA,CAGD,yDAEC,gDAAA,CAIF,iDACC,sBAAA,CACA,0BAAA,CACA,wBAAA,CAEA,aAAA,CAIA,sFACC,2BAAA\",\"sourcesContent\":[\"\\n.app-navigation {\\n\\t:deep(.app-navigation-entry.active .button-vue.icon-collapse:not(:hover)) {\\n\\t\\tcolor: var(--color-primary-element-text);\\n\\t}\\n\\n\\t> ul.app-navigation__list {\\n\\t\\t// Use flex gap value for more elegant spacing\\n\\t\\tpadding-bottom: var(--default-grid-baseline, 4px);\\n\\t}\\n}\\n\\n.app-navigation-entry__settings {\\n\\theight: auto !important;\\n\\toverflow: hidden !important;\\n\\tpadding-top: 0 !important;\\n\\t// Prevent shrinking or growing\\n\\tflex: 0 0 auto;\\n}\\n\\n.files-navigation {\\n\\t:deep(.app-navigation__content > ul.app-navigation__list) {\\n\\t\\twill-change: scroll-position;\\n\\t}\\n}\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_SOURCEMAP_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/sourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, `.app-sidebar--has-preview[data-v-f91af60e] .app-sidebar-header__figure{background-size:cover}.app-sidebar--has-preview[data-v-f91af60e][data-mimetype=\"text/plain\"] .app-sidebar-header__figure,.app-sidebar--has-preview[data-v-f91af60e][data-mimetype=\"text/markdown\"] .app-sidebar-header__figure{background-size:contain}.app-sidebar--full[data-v-f91af60e]{position:fixed !important;z-index:2025 !important;top:0 !important;height:100% !important}.app-sidebar[data-v-f91af60e] .app-sidebar-header__description{margin:0 16px 4px 16px !important}.app-sidebar .svg-icon[data-v-f91af60e] svg{width:20px;height:20px;fill:currentColor}.sidebar__description[data-v-f91af60e]{display:flex;flex-direction:column;width:100%;gap:8px 0}`, \"\",{\"version\":3,\"sources\":[\"webpack://./apps/files/src/views/FilesSidebar.vue\"],\"names\":[],\"mappings\":\"AAGE,uEACC,qBAAA,CAKA,yMACC,uBAAA,CAKH,oCACC,yBAAA,CACA,uBAAA,CACA,gBAAA,CACA,sBAAA,CAIA,+DACC,iCAAA,CAKD,4CACC,UAAA,CACA,WAAA,CACA,iBAAA,CAKH,uCACE,YAAA,CACA,qBAAA,CACA,UAAA,CACA,SAAA\",\"sourcesContent\":[\"\\n.app-sidebar {\\n\\t&--has-preview:deep {\\n\\t\\t.app-sidebar-header__figure {\\n\\t\\t\\tbackground-size: cover;\\n\\t\\t}\\n\\n\\t\\t&[data-mimetype=\\\"text/plain\\\"],\\n\\t\\t&[data-mimetype=\\\"text/markdown\\\"] {\\n\\t\\t\\t.app-sidebar-header__figure {\\n\\t\\t\\t\\tbackground-size: contain;\\n\\t\\t\\t}\\n\\t\\t}\\n\\t}\\n\\n\\t&--full {\\n\\t\\tposition: fixed !important;\\n\\t\\tz-index: 2025 !important;\\n\\t\\ttop: 0 !important;\\n\\t\\theight: 100% !important;\\n\\t}\\n\\n\\t:deep {\\n\\t\\t.app-sidebar-header__description {\\n\\t\\t\\tmargin: 0 16px 4px 16px !important;\\n\\t\\t}\\n\\t}\\n\\n\\t.svg-icon {\\n\\t\\t:deep(svg) {\\n\\t\\t\\twidth: 20px;\\n\\t\\t\\theight: 20px;\\n\\t\\t\\tfill: currentColor;\\n\\t\\t}\\n\\t}\\n}\\n\\n.sidebar__description {\\n\\t\\tdisplay: flex;\\n\\t\\tflex-direction: column;\\n\\t\\twidth: 100%;\\n\\t\\tgap: 8px 0;\\n\\t}\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_SOURCEMAP_IMPORT___ from \"../../../../../node_modules/css-loader/dist/runtime/sourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, `\n._fileListFilterChips_yBylg {\n\tdisplay: flex;\n\tgap: var(--default-grid-baseline);\n}\n`, \"\",{\"version\":3,\"sources\":[\"webpack://./apps/files/src/components/FileListFilter/FileListFilterChips.vue\"],\"names\":[],\"mappings\":\";AAwCA;CACA,aAAA;CACA,iCAAA;AACA\",\"sourcesContent\":[\"\\n\\n\\n\\n\\n\\n\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\n___CSS_LOADER_EXPORT___.locals = {\n\t\"fileListFilterChips\": `_fileListFilterChips_yBylg`\n};\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_SOURCEMAP_IMPORT___ from \"../../../../../node_modules/css-loader/dist/runtime/sourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, `\n._fileListFilters_dNswU {\n\tdisplay: flex;\n\tflex-direction: row;\n\tgap: var(--default-grid-baseline);\n\tmargin-inline-end: var(--default-grid-baseline);\n\theight: 100%;\n\twidth: 100%;\n}\n._fileListFilters__popoverFilterView_fJWbD {\n\tbox-sizing: border-box;\n\tdisplay: flex;\n\tflex-direction: column;\n\tgap: calc(2 * var(--default-grid-baseline));\n\tpadding: calc(var(--default-grid-baseline) / 2);\n\tmin-width: calc(7 * var(--default-clickable-area));\n}\n._fileListFilters__popoverContainer_A30Cl {\n\tbox-sizing: border-box;\n\tpadding: calc(var(--default-grid-baseline) / 2);\n\tmin-width: calc(7 * var(--default-clickable-area));\n}\n._fileListFilters__filter_bCU2H {\n\tdisplay: flex;\n\talign-items: start;\n\tjustify-content: start;\n\tgap: calc(var(--default-grid-baseline, 4px) * 2);\n> * {\n\t\tflex: 0 1 fit-content;\n}\n}\n._fileListFilters__active_ECsmY {\n\tdisplay: flex;\n\tflex-direction: row;\n\tgap: calc(var(--default-grid-baseline, 4px) * 2);\n}\n`, \"\",{\"version\":3,\"sources\":[\"webpack://./apps/files/src/components/FileListFilter/FileListFilters.vue\"],\"names\":[],\"mappings\":\";AAkGA;CACA,aAAA;CACA,mBAAA;CACA,iCAAA;CACA,+CAAA;CACA,YAAA;CACA,WAAA;AACA;AAEA;CACA,sBAAA;CACA,aAAA;CACA,sBAAA;CACA,2CAAA;CACA,+CAAA;CACA,kDAAA;AACA;AAEA;CACA,sBAAA;CACA,+CAAA;CACA,kDAAA;AACA;AAEA;CACA,aAAA;CACA,kBAAA;CACA,sBAAA;CACA,gDAAA;AAEA;EACA,qBAAA;AACA;AACA;AAEA;CACA,aAAA;CACA,mBAAA;CACA,gDAAA;AACA\",\"sourcesContent\":[\"\\n\\n\\n\\n\\n\\n\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\n___CSS_LOADER_EXPORT___.locals = {\n\t\"fileListFilters\": `_fileListFilters_dNswU`,\n\t\"fileListFilters__popoverFilterView\": `_fileListFilters__popoverFilterView_fJWbD`,\n\t\"fileListFilters__popoverContainer\": `_fileListFilters__popoverContainer_A30Cl`,\n\t\"fileListFilters__filter\": `_fileListFilters__filter_bCU2H`,\n\t\"fileListFilters__active\": `_fileListFilters__active_ECsmY`\n};\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_SOURCEMAP_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/sourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, `\n._filesNavigationList_MBZVA {\n\theight: 100%; /* Fill all available space for sticky views */\n}\n`, \"\",{\"version\":3,\"sources\":[\"webpack://./apps/files/src/components/FilesNavigationList.vue\"],\"names\":[],\"mappings\":\";AAsDA;CACA,YAAA,EAAA,8CAAA;AACA\",\"sourcesContent\":[\"\\n\\n\\n\\n\\n\\n\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\n___CSS_LOADER_EXPORT___.locals = {\n\t\"filesNavigationList\": `_filesNavigationList_MBZVA`\n};\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_SOURCEMAP_IMPORT___ from \"../../../../../node_modules/css-loader/dist/runtime/sourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, `\n._filesSidebarSubname_yXZVi {\n\tdisplay: flex;\n\talign-items: center;\n\tflex-wrap: wrap;\n\tgap: 0 8px;\n}\n._filesSidebarSubname__separator__OQUr {\n\tdisplay: inline-block;\n\tfont-weight: bold !important;\n}\n._filesSidebarSubname__userBubble_XTdWm {\n\tdisplay: inline-flex !important;\n}\n`, \"\",{\"version\":3,\"sources\":[\"webpack://./apps/files/src/components/FilesSidebar/FilesSidebarSubname.vue\"],\"names\":[],\"mappings\":\";AAiDA;CACA,aAAA;CACA,mBAAA;CACA,eAAA;CACA,UAAA;AACA;AAEA;CACA,qBAAA;CACA,4BAAA;AACA;AAEA;CACA,+BAAA;AACA\",\"sourcesContent\":[\"\\n\\n\\n\\n\\n\\n\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\n___CSS_LOADER_EXPORT___.locals = {\n\t\"filesSidebarSubname\": `_filesSidebarSubname_yXZVi`,\n\t\"filesSidebarSubname__separator\": `_filesSidebarSubname__separator__OQUr`,\n\t\"filesSidebarSubname__userBubble\": `_filesSidebarSubname__userBubble_XTdWm`\n};\nexport default ___CSS_LOADER_EXPORT___;\n","import { getCurrentUser, onRequestTokenUpdate, getRequestToken } from \"@nextcloud/auth\";\nimport { generateRemoteUrl } from \"@nextcloud/router\";\nimport { isPublicShare, getSharingToken } from \"@nextcloud/sharing/public\";\nimport { createClient, getPatcher } from \"webdav\";\nimport { P as Permission, s as scopedGlobals, l as logger, c as NodeStatus, a as File, b as Folder } from \"./chunks/folder-29HuacU_.mjs\";\nimport \"@nextcloud/paths\";\n/*!\n * SPDX-FileCopyrightText: 2023 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\nfunction parsePermissions(permString = \"\") {\n  let permissions = Permission.NONE;\n  if (!permString) {\n    return permissions;\n  }\n  if (permString.includes(\"G\")) {\n    permissions |= Permission.READ;\n  }\n  if (permString.includes(\"W\")) {\n    permissions |= Permission.WRITE;\n  }\n  if (permString.includes(\"CK\")) {\n    permissions |= Permission.CREATE;\n  }\n  if (permString.includes(\"NV\")) {\n    permissions |= Permission.UPDATE;\n  }\n  if (permString.includes(\"D\")) {\n    permissions |= Permission.DELETE;\n  }\n  if (permString.includes(\"R\")) {\n    permissions |= Permission.SHARE;\n  }\n  return permissions;\n}\nconst defaultDavProperties = [\n  \"d:getcontentlength\",\n  \"d:getcontenttype\",\n  \"d:getetag\",\n  \"d:getlastmodified\",\n  \"d:creationdate\",\n  \"d:displayname\",\n  \"d:quota-available-bytes\",\n  \"d:resourcetype\",\n  \"nc:has-preview\",\n  \"nc:is-encrypted\",\n  \"nc:mount-type\",\n  \"oc:comments-unread\",\n  \"oc:favorite\",\n  \"oc:fileid\",\n  \"oc:owner-display-name\",\n  \"oc:owner-id\",\n  \"oc:permissions\",\n  \"oc:size\"\n];\nconst defaultDavNamespaces = {\n  d: \"DAV:\",\n  nc: \"http://nextcloud.org/ns\",\n  oc: \"http://owncloud.org/ns\",\n  ocs: \"http://open-collaboration-services.org/ns\"\n};\nfunction registerDavProperty(prop, namespace = { nc: \"http://nextcloud.org/ns\" }) {\n  scopedGlobals.davNamespaces ??= { ...defaultDavNamespaces };\n  scopedGlobals.davProperties ??= [...defaultDavProperties];\n  const namespaces = { ...scopedGlobals.davNamespaces, ...namespace };\n  if (scopedGlobals.davProperties.find((search) => search === prop)) {\n    logger.warn(`${prop} already registered`, { prop });\n    return false;\n  }\n  if (prop.startsWith(\"<\") || prop.split(\":\").length !== 2) {\n    logger.error(`${prop} is not valid. See example: 'oc:fileid'`, { prop });\n    return false;\n  }\n  const ns = prop.split(\":\")[0];\n  if (!namespaces[ns]) {\n    logger.error(`${prop} namespace unknown`, { prop, namespaces });\n    return false;\n  }\n  scopedGlobals.davProperties.push(prop);\n  scopedGlobals.davNamespaces = namespaces;\n  return true;\n}\nfunction getDavProperties() {\n  scopedGlobals.davProperties ??= [...defaultDavProperties];\n  return scopedGlobals.davProperties.map((prop) => `<${prop} />`).join(\" \");\n}\nfunction getDavNameSpaces() {\n  scopedGlobals.davNamespaces ??= { ...defaultDavNamespaces };\n  return Object.keys(scopedGlobals.davNamespaces).map((ns) => `xmlns:${ns}=\"${scopedGlobals.davNamespaces?.[ns]}\"`).join(\" \");\n}\nfunction getDefaultPropfind() {\n  return `\n\t\t\n\t\t\t\n\t\t\t\t${getDavProperties()}\n\t\t\t\n\t\t`;\n}\nfunction getFavoritesReport() {\n  return `\n\t\t\n\t\t\t\n\t\t\t\t${getDavProperties()}\n\t\t\t\n\t\t\t\n\t\t\t\t1\n\t\t\t\n\t\t`;\n}\nfunction getRecentSearch(lastModified) {\n  return `\n\n\t\n\t\t\n\t\t\t\n\t\t\t\t${getDavProperties()}\n\t\t\t\n\t\t\n\t\t\n\t\t\t\n\t\t\t\t/files/${getCurrentUser()?.uid}/\n\t\t\t\tinfinity\n\t\t\t\n\t\t\n\t\t\n\t\t\t\n\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\thttpd/unix-directory\n\t\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\t0\n\t\t\t\t\t\n\t\t\t\t\n\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t${lastModified}\n\t\t\t\t\n\t\t\t\n\t\t\n\t\t\n\t\t\t\n\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\n\t\t\t\t\n\t\t\t\n\t\t\n\t\t\n\t\t\t100\n\t\t\t0\n\t\t\n\t\n`;\n}\nfunction getRootPath() {\n  if (isPublicShare()) {\n    return `/files/${getSharingToken()}`;\n  }\n  return `/files/${getCurrentUser()?.uid}`;\n}\nconst defaultRootPath = getRootPath();\nfunction getRemoteURL() {\n  const url = generateRemoteUrl(\"dav\");\n  if (isPublicShare()) {\n    return url.replace(\"remote.php\", \"public.php\");\n  }\n  return url;\n}\nconst defaultRemoteURL = getRemoteURL();\nfunction getClient(remoteURL = defaultRemoteURL, headers = {}) {\n  const client = createClient(remoteURL, { headers });\n  function setHeaders(token) {\n    client.setHeaders({\n      ...headers,\n      // Add this so the server knows it is an request from the browser\n      \"X-Requested-With\": \"XMLHttpRequest\",\n      // Inject user auth\n      requesttoken: token ?? \"\"\n    });\n  }\n  onRequestTokenUpdate(setHeaders);\n  setHeaders(getRequestToken());\n  const patcher = getPatcher();\n  patcher.patch(\"fetch\", (url, options) => {\n    const headers2 = options.headers;\n    if (headers2?.method) {\n      options.method = headers2.method;\n      delete headers2.method;\n    }\n    return fetch(url, options);\n  });\n  return client;\n}\nasync function getFavoriteNodes(options = {}) {\n  const client = options.client ?? getClient();\n  const path = options.path ?? \"/\";\n  const davRoot = options.davRoot ?? defaultRootPath;\n  const contentsResponse = await client.getDirectoryContents(`${davRoot}${path}`, {\n    signal: options.signal,\n    details: true,\n    data: getFavoritesReport(),\n    headers: {\n      // see getClient for patched webdav client\n      method: \"REPORT\"\n    },\n    includeSelf: true\n  });\n  return contentsResponse.data.filter((node) => node.filename !== path).map((result) => resultToNode(result, davRoot));\n}\nfunction resultToNode(node, filesRoot = defaultRootPath, remoteURL = defaultRemoteURL) {\n  let userId = getCurrentUser()?.uid;\n  if (isPublicShare()) {\n    userId = userId ?? \"anonymous\";\n  } else if (!userId) {\n    throw new Error(\"No user id found\");\n  }\n  const props = node.props;\n  const permissions = parsePermissions(props?.permissions);\n  const owner = String(props?.[\"owner-id\"] || userId);\n  const id = props.fileid || 0;\n  const mtime = new Date(Date.parse(node.lastmod));\n  const crtime = new Date(Date.parse(props.creationdate));\n  const nodeData = {\n    id,\n    source: `${remoteURL}${node.filename}`,\n    mtime: !isNaN(mtime.getTime()) && mtime.getTime() !== 0 ? mtime : void 0,\n    crtime: !isNaN(crtime.getTime()) && crtime.getTime() !== 0 ? crtime : void 0,\n    mime: node.mime || \"application/octet-stream\",\n    // Manually cast to work around for https://github.com/perry-mitchell/webdav-client/pull/380\n    displayname: props.displayname !== void 0 ? String(props.displayname) : void 0,\n    size: props?.size || Number.parseInt(props.getcontentlength || \"0\"),\n    // The fileid is set to -1 for failed requests\n    status: id < 0 ? NodeStatus.FAILED : void 0,\n    permissions,\n    owner,\n    root: filesRoot,\n    attributes: {\n      ...node,\n      ...props,\n      hasPreview: props?.[\"has-preview\"]\n    }\n  };\n  delete nodeData.attributes?.props;\n  return node.type === \"file\" ? new File(nodeData) : new Folder(nodeData);\n}\nexport {\n  defaultDavNamespaces,\n  defaultDavProperties,\n  defaultRemoteURL,\n  defaultRootPath,\n  getClient,\n  getDavNameSpaces,\n  getDavProperties,\n  getDefaultPropfind,\n  getFavoriteNodes,\n  getFavoritesReport,\n  getRecentSearch,\n  getRemoteURL,\n  getRootPath,\n  parsePermissions,\n  registerDavProperty,\n  resultToNode\n};\n//# sourceMappingURL=dav.mjs.map\n","import '../assets/index-BGmULkk-.css';\nimport { getSharingToken, isPublicShare } from \"@nextcloud/sharing/public\";\nimport { getCurrentUser } from \"@nextcloud/auth\";\nimport { formatFileSize, Folder, davRemoteURL, davRootPath, Permission, FileType, davGetClient, validateFilename, InvalidFilenameError, getUniqueName, getNewFileMenuEntries, NewMenuEntryCategory } from \"@nextcloud/files\";\nimport { basename, encodePath } from \"@nextcloud/paths\";\nimport { normalize } from \"path\";\nimport { getCapabilities } from \"@nextcloud/capabilities\";\nimport axios, { isCancel } from \"@nextcloud/axios\";\nimport PCancelable from \"p-cancelable\";\nimport PQueue from \"p-queue\";\nimport { getGettextBuilder } from \"@nextcloud/l10n/gettext\";\nimport { getBaseUrl, generateRemoteUrl } from \"@nextcloud/router\";\nimport axiosRetry, { exponentialDelay, isNetworkOrIdempotentRequestError } from \"axios-retry\";\nimport { getLoggerBuilder } from \"@nextcloud/logger\";\nimport { TypedEventTarget } from \"typescript-event-target\";\nimport Vue, { defineAsyncComponent, defineComponent } from \"vue\";\nimport { showInfo, showWarning } from \"@nextcloud/dialogs\";\nimport { spawnDialog } from \"@nextcloud/vue/functions/dialog\";\nimport { useHotKey } from \"@nextcloud/vue/dist/Composables/useHotKey.js\";\nimport NcActionButton from \"@nextcloud/vue/dist/Components/NcActionButton.js\";\nimport NcActionCaption from \"@nextcloud/vue/dist/Components/NcActionCaption.js\";\nimport NcActionSeparator from \"@nextcloud/vue/dist/Components/NcActionSeparator.js\";\nimport NcActions from \"@nextcloud/vue/dist/Components/NcActions.js\";\nimport NcButton from \"@nextcloud/vue/dist/Components/NcButton.js\";\nimport NcIconSvgWrapper from \"@nextcloud/vue/dist/Components/NcIconSvgWrapper.js\";\nimport NcProgressBar from \"@nextcloud/vue/dist/Components/NcProgressBar.js\";\nconst gtBuilder = getGettextBuilder().detectLocale();\n[{ \"locale\": \"af\", \"json\": { \"charset\": \"utf-8\", \"headers\": { \"Last-Translator\": \"Transifex Bot <>, 2022\", \"Language-Team\": \"Afrikaans (https://www.transifex.com/nextcloud/teams/64236/af/)\", \"Content-Type\": \"text/plain; charset=UTF-8\", \"Language\": \"af\", \"Plural-Forms\": \"nplurals=2; plural=(n != 1);\" }, \"translations\": { \"\": { \"\": { \"msgid\": \"\", \"comments\": { \"translator\": \"\\nTranslators:\\nTransifex Bot <>, 2022\\n\" }, \"msgstr\": [\"Last-Translator: Transifex Bot <>, 2022\\nLanguage-Team: Afrikaans (https://www.transifex.com/nextcloud/teams/64236/af/)\\nContent-Type: text/plain; charset=UTF-8\\nLanguage: af\\nPlural-Forms: nplurals=2; plural=(n != 1);\\n\"] }, \"{estimate} seconds left\": { \"msgid\": \"{estimate} seconds left\", \"msgstr\": [\"\"] }, \"{hours} hours and {minutes} minutes left\": { \"msgid\": \"{hours} hours and {minutes} minutes left\", \"msgstr\": [\"\"] }, \"{minutes} minutes left\": { \"msgid\": \"{minutes} minutes left\", \"msgstr\": [\"\"] }, \"a few seconds left\": { \"msgid\": \"a few seconds left\", \"msgstr\": [\"\"] }, \"Add\": { \"msgid\": \"Add\", \"msgstr\": [\"\"] }, \"Cancel uploads\": { \"msgid\": \"Cancel uploads\", \"msgstr\": [\"\"] }, \"estimating time left\": { \"msgid\": \"estimating time left\", \"msgstr\": [\"\"] }, \"paused\": { \"msgid\": \"paused\", \"msgstr\": [\"\"] } } } } }, { \"locale\": \"ar\", \"json\": { \"charset\": \"utf-8\", \"headers\": { \"Last-Translator\": \"Ali , 2025\", \"Language-Team\": \"Arabic (https://app.transifex.com/nextcloud/teams/64236/ar/)\", \"Content-Type\": \"text/plain; charset=UTF-8\", \"Language\": \"ar\", \"Plural-Forms\": \"nplurals=6; plural=n==0 ? 0 : n==1 ? 1 : n==2 ? 2 : n%100>=3 && n%100<=10 ? 3 : n%100>=11 && n%100<=99 ? 4 : 5;\" }, \"translations\": { \"\": { \"\": { \"msgid\": \"\", \"comments\": { \"translator\": \"\\nTranslators:\\nJoas Schilling, 2024\\nabu.s3ud, 2024\\nAli , 2025\\n\" }, \"msgstr\": [\"Last-Translator: Ali , 2025\\nLanguage-Team: Arabic (https://app.transifex.com/nextcloud/teams/64236/ar/)\\nContent-Type: text/plain; charset=UTF-8\\nLanguage: ar\\nPlural-Forms: nplurals=6; plural=n==0 ? 0 : n==1 ? 1 : n==2 ? 2 : n%100>=3 && n%100<=10 ? 3 : n%100>=11 && n%100<=99 ? 4 : 5;\\n\"] }, '\"{segment}\" is a forbidden file or folder name.': { \"msgid\": '\"{segment}\" is a forbidden file or folder name.', \"msgstr\": ['\"{segment}\" هو اسم ممنوع لملف أو مجلد.'] }, '\"{segment}\" is a forbidden file type.': { \"msgid\": '\"{segment}\" is a forbidden file type.', \"msgstr\": ['\"{segment}\" هو نوع ممنوع أن يكون لملف.'] }, '\"{segment}\" is not allowed inside a file or folder name.': { \"msgid\": '\"{segment}\" is not allowed inside a file or folder name.', \"msgstr\": ['\"{segment}\" هو غير مسموح به في اسم ملف أو مجلد.'] }, \"{count} file conflict\": { \"msgid\": \"{count} file conflict\", \"msgid_plural\": \"{count} files conflict\", \"msgstr\": [\"{count} ملف متعارض\", \"{count} ملف متعارض\", \"{count} ملفان متعارضان\", \"{count} ملف متعارض\", \"{count} ملفات متعارضة\", \"{count} ملفات متعارضة\"] }, \"{count} file conflict in {dirname}\": { \"msgid\": \"{count} file conflict in {dirname}\", \"msgid_plural\": \"{count} file conflicts in {dirname}\", \"msgstr\": [\"{count} ملف متعارض في {dirname}\", \"{count} ملف متعارض في {dirname}\", \"{count} ملفان متعارضان في {dirname}\", \"{count} ملف متعارض في {dirname}\", \"{count} ملفات متعارضة في {dirname}\", \"{count} ملفات متعارضة في {dirname}\"] }, \"{seconds} seconds left\": { \"msgid\": \"{seconds} seconds left\", \"msgid_plural\": \"{seconds} seconds left\", \"msgstr\": [\"مازال {seconds} ثوانٍ\", \"مازال {seconds} ثوانٍ\", \"مازال {seconds} ثوانٍ\", \"مازال {seconds} ثوانٍ\", \"مازال {seconds} ثوانٍ\", \"مازال {seconds} ثوانٍ\"] }, \"{time} left\": { \"msgid\": \"{time} left\", \"comments\": { \"extracted\": \"TRANSLATORS time has the format 00:00:00\" }, \"msgstr\": [\"{time} متبقية\"] }, \"a few seconds left\": { \"msgid\": \"a few seconds left\", \"msgstr\": [\"بضع ثوانٍ متبقية\"] }, \"assembling\": { \"msgid\": \"assembling\", \"msgstr\": [\"تجميع\"] }, \"Cancel\": { \"msgid\": \"Cancel\", \"msgstr\": [\"إلغاء\"] }, \"Cancel the entire operation\": { \"msgid\": \"Cancel the entire operation\", \"msgstr\": [\"إلغِ العملية بالكامل\"] }, \"Cancel uploads\": { \"msgid\": \"Cancel uploads\", \"msgstr\": [\"إلغاء عمليات رفع الملفات\"] }, \"Continue\": { \"msgid\": \"Continue\", \"msgstr\": [\"إستمر\"] }, \"Create new\": { \"msgid\": \"Create new\", \"msgstr\": [\"إنشاء جديد\"] }, \"estimating time left\": { \"msgid\": \"estimating time left\", \"msgstr\": [\"تقدير الوقت المتبقي\"] }, \"Existing version\": { \"msgid\": \"Existing version\", \"msgstr\": [\"الإصدار الحالي\"] }, \"Failed to assemble the chunks together\": { \"msgid\": \"Failed to assemble the chunks together\", \"msgstr\": [\"تعذّرت إعادة تجميع الكتل معاً \"] }, \"Failed to upload the file\": { \"msgid\": \"Failed to upload the file\", \"msgstr\": [\"تعذّر رفع الملف\"] }, 'Filenames must not end with \"{segment}\".': { \"msgid\": 'Filenames must not end with \"{segment}\".', \"msgstr\": ['غير مسموح ان ينتهي اسم الملف بـ \"{segment}\".'] }, \"If you select both versions, the incoming file will have a number added to its name.\": { \"msgid\": \"If you select both versions, the incoming file will have a number added to its name.\", \"msgstr\": [\"إذا اخترت الاحتفاظ بالنسختين فسيتم إلحاق رقم عداد آخر اسم الملف الوارد.\"] }, \"Invalid filename\": { \"msgid\": \"Invalid filename\", \"msgstr\": [\"اسم ملف غير صحيح\"] }, \"Last modified date unknown\": { \"msgid\": \"Last modified date unknown\", \"msgstr\": [\"تاريخ آخر تعديل غير معروف\"] }, \"New\": { \"msgid\": \"New\", \"msgstr\": [\"جديد\"] }, \"New filename\": { \"msgid\": \"New filename\", \"msgstr\": [\"اسم ملف جديد\"] }, \"New version\": { \"msgid\": \"New version\", \"msgstr\": [\"نسخة جديدة\"] }, \"paused\": { \"msgid\": \"paused\", \"msgstr\": [\"مُجمَّد\"] }, \"Preview image\": { \"msgid\": \"Preview image\", \"msgstr\": [\"معاينة الصورة\"] }, \"Rename\": { \"msgid\": \"Rename\", \"msgstr\": [\"تغيير التسمية\"] }, \"Select all checkboxes\": { \"msgid\": \"Select all checkboxes\", \"msgstr\": [\"حدِّد كل صناديق الخيارات\"] }, \"Select all existing files\": { \"msgid\": \"Select all existing files\", \"msgstr\": [\"حدِّد كل الملفات الموجودة\"] }, \"Select all new files\": { \"msgid\": \"Select all new files\", \"msgstr\": [\"حدِّد كل الملفات الجديدة\"] }, \"Skip\": { \"msgid\": \"Skip\", \"msgstr\": [\"تخطِّي\"] }, \"Skip this file\": { \"msgid\": \"Skip this file\", \"msgid_plural\": \"Skip {count} files\", \"msgstr\": [\"تخطَّ {count} ملف\", \"تخطَّ {count} ملف\", \"تخطَّ {count} ملف\", \"تخطَّ {count} ملف\", \"تخطَّ {count} ملف\", \"تخطَّ {count} ملف\"] }, \"Unknown size\": { \"msgid\": \"Unknown size\", \"msgstr\": [\"حجم غير معلوم\"] }, \"Upload\": { \"msgid\": \"Upload\", \"msgstr\": [\"رفع الملفات\"] }, \"Upload files\": { \"msgid\": \"Upload files\", \"msgstr\": [\"رفع ملفات\"] }, \"Upload folders\": { \"msgid\": \"Upload folders\", \"msgstr\": [\"رفع مجلدات\"] }, \"Upload from device\": { \"msgid\": \"Upload from device\", \"msgstr\": [\"الرفع من جهاز \"] }, \"Upload has been cancelled\": { \"msgid\": \"Upload has been cancelled\", \"msgstr\": [\"تمّ إلغاء عملية رفع الملفات\"] }, \"Upload has been skipped\": { \"msgid\": \"Upload has been skipped\", \"msgstr\": [\"تمّ تجاوز الرفع\"] }, 'Upload of \"{folder}\" has been skipped': { \"msgid\": 'Upload of \"{folder}\" has been skipped', \"msgstr\": ['رفع \"{folder}\" تمّ تجاوزه'] }, \"Upload progress\": { \"msgid\": \"Upload progress\", \"msgstr\": [\"تقدُّم الرفع \"] }, \"When an incoming folder is selected, any conflicting files within it will also be overwritten.\": { \"msgid\": \"When an incoming folder is selected, any conflicting files within it will also be overwritten.\", \"msgstr\": [\"عند تحديد مجلد وارد، أي ملفات متعارضة بداخله ستتم الكتابة فوقها.\"] }, \"When an incoming folder is selected, the content is written into the existing folder and a recursive conflict resolution is performed.\": { \"msgid\": \"When an incoming folder is selected, the content is written into the existing folder and a recursive conflict resolution is performed.\", \"msgstr\": [\"عند تحديد مجلد وارد، ستتم كتابة المحتوى في المجلد الموجود و سيتم تنفيذ حل التعارض بشكل تعاوُدي.\"] }, \"Which files do you want to keep?\": { \"msgid\": \"Which files do you want to keep?\", \"msgstr\": [\"أيُّ الملفات ترغب في الإبقاء عليها؟\"] }, \"You can either rename the file, skip this file or cancel the whole operation.\": { \"msgid\": \"You can either rename the file, skip this file or cancel the whole operation.\", \"msgstr\": [\"يمكنك إمّا تغيير اسم الملف، أو تجاوزه، أو إلغاء العملية برُمَّتها.\"] }, \"You need to select at least one version of each file to continue.\": { \"msgid\": \"You need to select at least one version of each file to continue.\", \"msgstr\": [\"يجب أن تختار نسخة واحدة على الأقل من كل ملف للاستمرار.\"] } } } } }, { \"locale\": \"ast\", \"json\": { \"charset\": \"utf-8\", \"headers\": { \"Last-Translator\": \"enolp , 2023\", \"Language-Team\": \"Asturian (https://app.transifex.com/nextcloud/teams/64236/ast/)\", \"Content-Type\": \"text/plain; charset=UTF-8\", \"Language\": \"ast\", \"Plural-Forms\": \"nplurals=2; plural=(n != 1);\" }, \"translations\": { \"\": { \"\": { \"msgid\": \"\", \"comments\": { \"translator\": \"\\nTranslators:\\nenolp , 2023\\n\" }, \"msgstr\": [\"Last-Translator: enolp , 2023\\nLanguage-Team: Asturian (https://app.transifex.com/nextcloud/teams/64236/ast/)\\nContent-Type: text/plain; charset=UTF-8\\nLanguage: ast\\nPlural-Forms: nplurals=2; plural=(n != 1);\\n\"] }, \"{count} file conflict\": { \"msgid\": \"{count} file conflict\", \"msgid_plural\": \"{count} files conflict\", \"msgstr\": [\"{count} ficheru en coflictu\", \"{count} ficheros en coflictu\"] }, \"{count} file conflict in {dirname}\": { \"msgid\": \"{count} file conflict in {dirname}\", \"msgid_plural\": \"{count} file conflicts in {dirname}\", \"msgstr\": [\"{count} ficheru en coflictu en {dirname}\", \"{count} ficheros en coflictu en {dirname}\"] }, \"{seconds} seconds left\": { \"msgid\": \"{seconds} seconds left\", \"msgstr\": [\"Queden {seconds} segundos\"] }, \"{time} left\": { \"msgid\": \"{time} left\", \"comments\": { \"extracted\": \"TRANSLATORS time has the format 00:00:00\" }, \"msgstr\": [\"Tiempu que queda: {time}\"] }, \"a few seconds left\": { \"msgid\": \"a few seconds left\", \"msgstr\": [\"queden unos segundos\"] }, \"Cancel uploads\": { \"msgid\": \"Cancel uploads\", \"msgstr\": [\"Encaboxar les xubes\"] }, \"Continue\": { \"msgid\": \"Continue\", \"msgstr\": [\"Siguir\"] }, \"estimating time left\": { \"msgid\": \"estimating time left\", \"msgstr\": [\"estimando'l tiempu que falta\"] }, \"Existing version\": { \"msgid\": \"Existing version\", \"msgstr\": [\"Versión esistente\"] }, \"If you select both versions, the copied file will have a number added to its name.\": { \"msgid\": \"If you select both versions, the copied file will have a number added to its name.\", \"msgstr\": [\"Si seleiciones dambes versiones, el ficheru copiáu va tener un númberu amestáu al so nome.\"] }, \"Last modified date unknown\": { \"msgid\": \"Last modified date unknown\", \"msgstr\": [\"La data de la última modificación ye desconocida\"] }, \"New\": { \"msgid\": \"New\", \"msgstr\": [\"Nuevu\"] }, \"New version\": { \"msgid\": \"New version\", \"msgstr\": [\"Versión nueva\"] }, \"paused\": { \"msgid\": \"paused\", \"msgstr\": [\"en posa\"] }, \"Preview image\": { \"msgid\": \"Preview image\", \"msgstr\": [\"Previsualizar la imaxe\"] }, \"Select all checkboxes\": { \"msgid\": \"Select all checkboxes\", \"msgstr\": [\"Marcar toles caxelles\"] }, \"Select all existing files\": { \"msgid\": \"Select all existing files\", \"msgstr\": [\"Seleicionar tolos ficheros esistentes\"] }, \"Select all new files\": { \"msgid\": \"Select all new files\", \"msgstr\": [\"Seleicionar tolos ficheros nuevos\"] }, \"Skip this file\": { \"msgid\": \"Skip this file\", \"msgid_plural\": \"Skip {count} files\", \"msgstr\": [\"Saltar esti ficheru\", \"Saltar {count} ficheros\"] }, \"Unknown size\": { \"msgid\": \"Unknown size\", \"msgstr\": [\"Tamañu desconocíu\"] }, \"Upload cancelled\": { \"msgid\": \"Upload cancelled\", \"msgstr\": [\"Encaboxóse la xuba\"] }, \"Upload files\": { \"msgid\": \"Upload files\", \"msgstr\": [\"Xubir ficheros\"] }, \"Upload progress\": { \"msgid\": \"Upload progress\", \"msgstr\": [\"Xuba en cursu\"] }, \"Which files do you want to keep?\": { \"msgid\": \"Which files do you want to keep?\", \"msgstr\": [\"¿Qué ficheros quies caltener?\"] }, \"You need to select at least one version of each file to continue.\": { \"msgid\": \"You need to select at least one version of each file to continue.\", \"msgstr\": [\"Tienes de seleicionar polo menos una versión de cada ficheru pa siguir.\"] } } } } }, { \"locale\": \"az\", \"json\": { \"charset\": \"utf-8\", \"headers\": { \"Last-Translator\": \"Rashad Aliyev , 2023\", \"Language-Team\": \"Azerbaijani (https://app.transifex.com/nextcloud/teams/64236/az/)\", \"Content-Type\": \"text/plain; charset=UTF-8\", \"Language\": \"az\", \"Plural-Forms\": \"nplurals=2; plural=(n != 1);\" }, \"translations\": { \"\": { \"\": { \"msgid\": \"\", \"comments\": { \"translator\": \"\\nTranslators:\\nRashad Aliyev , 2023\\n\" }, \"msgstr\": [\"Last-Translator: Rashad Aliyev , 2023\\nLanguage-Team: Azerbaijani (https://app.transifex.com/nextcloud/teams/64236/az/)\\nContent-Type: text/plain; charset=UTF-8\\nLanguage: az\\nPlural-Forms: nplurals=2; plural=(n != 1);\\n\"] }, \"{seconds} seconds left\": { \"msgid\": \"{seconds} seconds left\", \"msgstr\": [\"{seconds} saniyə qalıb\"] }, \"{time} left\": { \"msgid\": \"{time} left\", \"comments\": { \"extracted\": \"time has the format 00:00:00\" }, \"msgstr\": [\"{time} qalıb\"] }, \"a few seconds left\": { \"msgid\": \"a few seconds left\", \"msgstr\": [\"bir neçə saniyə qalıb\"] }, \"Add\": { \"msgid\": \"Add\", \"msgstr\": [\"Əlavə et\"] }, \"Cancel uploads\": { \"msgid\": \"Cancel uploads\", \"msgstr\": [\"Yükləməni imtina et\"] }, \"estimating time left\": { \"msgid\": \"estimating time left\", \"msgstr\": [\"Təxmini qalan vaxt\"] }, \"paused\": { \"msgid\": \"paused\", \"msgstr\": [\"pauzadadır\"] }, \"Upload files\": { \"msgid\": \"Upload files\", \"msgstr\": [\"Faylları yüklə\"] } } } } }, { \"locale\": \"be\", \"json\": { \"charset\": \"utf-8\", \"headers\": { \"Last-Translator\": \"Transifex Bot <>, 2022\", \"Language-Team\": \"Belarusian (https://www.transifex.com/nextcloud/teams/64236/be/)\", \"Content-Type\": \"text/plain; charset=UTF-8\", \"Language\": \"be\", \"Plural-Forms\": \"nplurals=4; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%10<=4 && (n%100<12 || n%100>14) ? 1 : n%10==0 || (n%10>=5 && n%10<=9) || (n%100>=11 && n%100<=14)? 2 : 3);\" }, \"translations\": { \"\": { \"\": { \"msgid\": \"\", \"comments\": { \"translator\": \"\\nTranslators:\\nTransifex Bot <>, 2022\\n\" }, \"msgstr\": [\"Last-Translator: Transifex Bot <>, 2022\\nLanguage-Team: Belarusian (https://www.transifex.com/nextcloud/teams/64236/be/)\\nContent-Type: text/plain; charset=UTF-8\\nLanguage: be\\nPlural-Forms: nplurals=4; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%10<=4 && (n%100<12 || n%100>14) ? 1 : n%10==0 || (n%10>=5 && n%10<=9) || (n%100>=11 && n%100<=14)? 2 : 3);\\n\"] }, \"{estimate} seconds left\": { \"msgid\": \"{estimate} seconds left\", \"msgstr\": [\"\"] }, \"{hours} hours and {minutes} minutes left\": { \"msgid\": \"{hours} hours and {minutes} minutes left\", \"msgstr\": [\"\"] }, \"{minutes} minutes left\": { \"msgid\": \"{minutes} minutes left\", \"msgstr\": [\"\"] }, \"a few seconds left\": { \"msgid\": \"a few seconds left\", \"msgstr\": [\"\"] }, \"Add\": { \"msgid\": \"Add\", \"msgstr\": [\"\"] }, \"Cancel uploads\": { \"msgid\": \"Cancel uploads\", \"msgstr\": [\"\"] }, \"estimating time left\": { \"msgid\": \"estimating time left\", \"msgstr\": [\"\"] }, \"paused\": { \"msgid\": \"paused\", \"msgstr\": [\"\"] } } } } }, { \"locale\": \"bg\", \"json\": { \"charset\": \"utf-8\", \"headers\": { \"Last-Translator\": \"Transifex Bot <>, 2022\", \"Language-Team\": \"Bulgarian (Bulgaria) (https://www.transifex.com/nextcloud/teams/64236/bg_BG/)\", \"Content-Type\": \"text/plain; charset=UTF-8\", \"Language\": \"bg_BG\", \"Plural-Forms\": \"nplurals=2; plural=(n != 1);\" }, \"translations\": { \"\": { \"\": { \"msgid\": \"\", \"comments\": { \"translator\": \"\\nTranslators:\\nTransifex Bot <>, 2022\\n\" }, \"msgstr\": [\"Last-Translator: Transifex Bot <>, 2022\\nLanguage-Team: Bulgarian (Bulgaria) (https://www.transifex.com/nextcloud/teams/64236/bg_BG/)\\nContent-Type: text/plain; charset=UTF-8\\nLanguage: bg_BG\\nPlural-Forms: nplurals=2; plural=(n != 1);\\n\"] }, \"{estimate} seconds left\": { \"msgid\": \"{estimate} seconds left\", \"msgstr\": [\"\"] }, \"{hours} hours and {minutes} minutes left\": { \"msgid\": \"{hours} hours and {minutes} minutes left\", \"msgstr\": [\"\"] }, \"{minutes} minutes left\": { \"msgid\": \"{minutes} minutes left\", \"msgstr\": [\"\"] }, \"a few seconds left\": { \"msgid\": \"a few seconds left\", \"msgstr\": [\"\"] }, \"Add\": { \"msgid\": \"Add\", \"msgstr\": [\"\"] }, \"Cancel uploads\": { \"msgid\": \"Cancel uploads\", \"msgstr\": [\"\"] }, \"estimating time left\": { \"msgid\": \"estimating time left\", \"msgstr\": [\"\"] }, \"paused\": { \"msgid\": \"paused\", \"msgstr\": [\"\"] } } } } }, { \"locale\": \"bn_BD\", \"json\": { \"charset\": \"utf-8\", \"headers\": { \"Last-Translator\": \"Transifex Bot <>, 2022\", \"Language-Team\": \"Bengali (Bangladesh) (https://www.transifex.com/nextcloud/teams/64236/bn_BD/)\", \"Content-Type\": \"text/plain; charset=UTF-8\", \"Language\": \"bn_BD\", \"Plural-Forms\": \"nplurals=2; plural=(n != 1);\" }, \"translations\": { \"\": { \"\": { \"msgid\": \"\", \"comments\": { \"translator\": \"\\nTranslators:\\nTransifex Bot <>, 2022\\n\" }, \"msgstr\": [\"Last-Translator: Transifex Bot <>, 2022\\nLanguage-Team: Bengali (Bangladesh) (https://www.transifex.com/nextcloud/teams/64236/bn_BD/)\\nContent-Type: text/plain; charset=UTF-8\\nLanguage: bn_BD\\nPlural-Forms: nplurals=2; plural=(n != 1);\\n\"] }, \"{estimate} seconds left\": { \"msgid\": \"{estimate} seconds left\", \"msgstr\": [\"\"] }, \"{hours} hours and {minutes} minutes left\": { \"msgid\": \"{hours} hours and {minutes} minutes left\", \"msgstr\": [\"\"] }, \"{minutes} minutes left\": { \"msgid\": \"{minutes} minutes left\", \"msgstr\": [\"\"] }, \"a few seconds left\": { \"msgid\": \"a few seconds left\", \"msgstr\": [\"\"] }, \"Add\": { \"msgid\": \"Add\", \"msgstr\": [\"\"] }, \"Cancel uploads\": { \"msgid\": \"Cancel uploads\", \"msgstr\": [\"\"] }, \"estimating time left\": { \"msgid\": \"estimating time left\", \"msgstr\": [\"\"] }, \"paused\": { \"msgid\": \"paused\", \"msgstr\": [\"\"] } } } } }, { \"locale\": \"br\", \"json\": { \"charset\": \"utf-8\", \"headers\": { \"Last-Translator\": \"Transifex Bot <>, 2022\", \"Language-Team\": \"Breton (https://www.transifex.com/nextcloud/teams/64236/br/)\", \"Content-Type\": \"text/plain; charset=UTF-8\", \"Language\": \"br\", \"Plural-Forms\": \"nplurals=5; plural=((n%10 == 1) && (n%100 != 11) && (n%100 !=71) && (n%100 !=91) ? 0 :(n%10 == 2) && (n%100 != 12) && (n%100 !=72) && (n%100 !=92) ? 1 :(n%10 ==3 || n%10==4 || n%10==9) && (n%100 < 10 || n% 100 > 19) && (n%100 < 70 || n%100 > 79) && (n%100 < 90 || n%100 > 99) ? 2 :(n != 0 && n % 1000000 == 0) ? 3 : 4);\" }, \"translations\": { \"\": { \"\": { \"msgid\": \"\", \"comments\": { \"translator\": \"\\nTranslators:\\nTransifex Bot <>, 2022\\n\" }, \"msgstr\": [\"Last-Translator: Transifex Bot <>, 2022\\nLanguage-Team: Breton (https://www.transifex.com/nextcloud/teams/64236/br/)\\nContent-Type: text/plain; charset=UTF-8\\nLanguage: br\\nPlural-Forms: nplurals=5; plural=((n%10 == 1) && (n%100 != 11) && (n%100 !=71) && (n%100 !=91) ? 0 :(n%10 == 2) && (n%100 != 12) && (n%100 !=72) && (n%100 !=92) ? 1 :(n%10 ==3 || n%10==4 || n%10==9) && (n%100 < 10 || n% 100 > 19) && (n%100 < 70 || n%100 > 79) && (n%100 < 90 || n%100 > 99) ? 2 :(n != 0 && n % 1000000 == 0) ? 3 : 4);\\n\"] }, \"{estimate} seconds left\": { \"msgid\": \"{estimate} seconds left\", \"msgstr\": [\"\"] }, \"{hours} hours and {minutes} minutes left\": { \"msgid\": \"{hours} hours and {minutes} minutes left\", \"msgstr\": [\"\"] }, \"{minutes} minutes left\": { \"msgid\": \"{minutes} minutes left\", \"msgstr\": [\"\"] }, \"a few seconds left\": { \"msgid\": \"a few seconds left\", \"msgstr\": [\"\"] }, \"Add\": { \"msgid\": \"Add\", \"msgstr\": [\"\"] }, \"Cancel uploads\": { \"msgid\": \"Cancel uploads\", \"msgstr\": [\"\"] }, \"estimating time left\": { \"msgid\": \"estimating time left\", \"msgstr\": [\"\"] }, \"paused\": { \"msgid\": \"paused\", \"msgstr\": [\"\"] } } } } }, { \"locale\": \"bs\", \"json\": { \"charset\": \"utf-8\", \"headers\": { \"Last-Translator\": \"Transifex Bot <>, 2022\", \"Language-Team\": \"Bosnian (https://www.transifex.com/nextcloud/teams/64236/bs/)\", \"Content-Type\": \"text/plain; charset=UTF-8\", \"Language\": \"bs\", \"Plural-Forms\": \"nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);\" }, \"translations\": { \"\": { \"\": { \"msgid\": \"\", \"comments\": { \"translator\": \"\\nTranslators:\\nTransifex Bot <>, 2022\\n\" }, \"msgstr\": [\"Last-Translator: Transifex Bot <>, 2022\\nLanguage-Team: Bosnian (https://www.transifex.com/nextcloud/teams/64236/bs/)\\nContent-Type: text/plain; charset=UTF-8\\nLanguage: bs\\nPlural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);\\n\"] }, \"{estimate} seconds left\": { \"msgid\": \"{estimate} seconds left\", \"msgstr\": [\"\"] }, \"{hours} hours and {minutes} minutes left\": { \"msgid\": \"{hours} hours and {minutes} minutes left\", \"msgstr\": [\"\"] }, \"{minutes} minutes left\": { \"msgid\": \"{minutes} minutes left\", \"msgstr\": [\"\"] }, \"a few seconds left\": { \"msgid\": \"a few seconds left\", \"msgstr\": [\"\"] }, \"Add\": { \"msgid\": \"Add\", \"msgstr\": [\"\"] }, \"Cancel uploads\": { \"msgid\": \"Cancel uploads\", \"msgstr\": [\"\"] }, \"estimating time left\": { \"msgid\": \"estimating time left\", \"msgstr\": [\"\"] }, \"paused\": { \"msgid\": \"paused\", \"msgstr\": [\"\"] } } } } }, { \"locale\": \"ca\", \"json\": { \"charset\": \"utf-8\", \"headers\": { \"Last-Translator\": \"Leandro Navarro , 2025\", \"Language-Team\": \"Catalan (https://app.transifex.com/nextcloud/teams/64236/ca/)\", \"Content-Type\": \"text/plain; charset=UTF-8\", \"Language\": \"ca\", \"Plural-Forms\": \"nplurals=2; plural=(n != 1);\" }, \"translations\": { \"\": { \"\": { \"msgid\": \"\", \"comments\": { \"translator\": \"\\nTranslators:\\nJoas Schilling, 2024\\nv v , 2025\\nLeandro Navarro , 2025\\n\" }, \"msgstr\": [\"Last-Translator: Leandro Navarro , 2025\\nLanguage-Team: Catalan (https://app.transifex.com/nextcloud/teams/64236/ca/)\\nContent-Type: text/plain; charset=UTF-8\\nLanguage: ca\\nPlural-Forms: nplurals=2; plural=(n != 1);\\n\"] }, '\"{segment}\" is a forbidden file or folder name.': { \"msgid\": '\"{segment}\" is a forbidden file or folder name.', \"msgstr\": ['\"{segment}\" és un nom de fitxer o carpeta prohibit.'] }, '\"{segment}\" is a forbidden file type.': { \"msgid\": '\"{segment}\" is a forbidden file type.', \"msgstr\": ['\"{segment}\" és un tipus de fitxer prohibit.'] }, '\"{segment}\" is not allowed inside a file or folder name.': { \"msgid\": '\"{segment}\" is not allowed inside a file or folder name.', \"msgstr\": ['\"{segment}\" no és permès dins del nom de fitxer o carpeta.'] }, \"{count} file conflict\": { \"msgid\": \"{count} file conflict\", \"msgid_plural\": \"{count} files conflict\", \"msgstr\": [\"{count}fitxer en conflicte\", \"{count} fitxer en conflicte\"] }, \"{count} file conflict in {dirname}\": { \"msgid\": \"{count} file conflict in {dirname}\", \"msgid_plural\": \"{count} file conflicts in {dirname}\", \"msgstr\": [\"{count} conflicte de fitxers a {dirname}\", \"{count} conflictes de fitxers a {dirname}\"] }, \"{seconds} seconds left\": { \"msgid\": \"{seconds} seconds left\", \"msgid_plural\": \"{seconds} seconds left\", \"msgstr\": [\"{seconds} segon restant\", \"{seconds} segons restants\"] }, \"{time} left\": { \"msgid\": \"{time} left\", \"comments\": { \"extracted\": \"TRANSLATORS time has the format 00:00:00\" }, \"msgstr\": [\"Queden {time}\"] }, \"a few seconds left\": { \"msgid\": \"a few seconds left\", \"msgstr\": [\"queden uns segons\"] }, \"assembling\": { \"msgid\": \"assembling\", \"msgstr\": [\"assemblatge\"] }, \"Cancel\": { \"msgid\": \"Cancel\", \"msgstr\": [\"Cancel·lar\"] }, \"Cancel the entire operation\": { \"msgid\": \"Cancel the entire operation\", \"msgstr\": [\"Cancel·lar l'operació sencera\"] }, \"Cancel uploads\": { \"msgid\": \"Cancel uploads\", \"msgstr\": [\"Cancel·la les pujades\"] }, \"Continue\": { \"msgid\": \"Continue\", \"msgstr\": [\"Continuar\"] }, \"Create new\": { \"msgid\": \"Create new\", \"msgstr\": [\"Crea nou\"] }, \"estimating time left\": { \"msgid\": \"estimating time left\", \"msgstr\": [\"s’està estimant el temps restant\"] }, \"Existing version\": { \"msgid\": \"Existing version\", \"msgstr\": [\"Existing version\"] }, \"Failed to assemble the chunks together\": { \"msgid\": \"Failed to assemble the chunks together\", \"msgstr\": [\"No s'han pogut acoblar els trossos\"] }, \"Failed to upload the file\": { \"msgid\": \"Failed to upload the file\", \"msgstr\": [\"No s'ha pogut pujar el fitxer\"] }, 'Filenames must not end with \"{segment}\".': { \"msgid\": 'Filenames must not end with \"{segment}\".', \"msgstr\": [`Els noms de fitxer no han d'acabar en \"{segment}\".`] }, \"If you select both versions, the incoming file will have a number added to its name.\": { \"msgid\": \"If you select both versions, the incoming file will have a number added to its name.\", \"msgstr\": [\"Si seleccioneu les dues versions, el fitxer entrant tindrà un número afegit al seu nom.\"] }, \"Invalid filename\": { \"msgid\": \"Invalid filename\", \"msgstr\": [\"Nom de fitxer no vàlid\"] }, \"Last modified date unknown\": { \"msgid\": \"Last modified date unknown\", \"msgstr\": [\"Data de la darrera modificació desconeguda\"] }, \"New\": { \"msgid\": \"New\", \"msgstr\": [\"Nou\"] }, \"New filename\": { \"msgid\": \"New filename\", \"msgstr\": [\"Nou nom de fitxer\"] }, \"New version\": { \"msgid\": \"New version\", \"msgstr\": [\"Nova versió\"] }, \"paused\": { \"msgid\": \"paused\", \"msgstr\": [\"en pausa\"] }, \"Preview image\": { \"msgid\": \"Preview image\", \"msgstr\": [\"Imatge de vista prèvia\"] }, \"Rename\": { \"msgid\": \"Rename\", \"msgstr\": [\"Canviar el nom\"] }, \"Select all checkboxes\": { \"msgid\": \"Select all checkboxes\", \"msgstr\": [\"Seleccioneu totes les caselles de selecció\"] }, \"Select all existing files\": { \"msgid\": \"Select all existing files\", \"msgstr\": [\"Seleccioneu tots els fitxers existents\"] }, \"Select all new files\": { \"msgid\": \"Select all new files\", \"msgstr\": [\"Seleccioneu tots el fitxers nous\"] }, \"Skip\": { \"msgid\": \"Skip\", \"msgstr\": [\"Saltar\"] }, \"Skip {count} file\": { \"msgid\": \"Skip {count} file\", \"msgid_plural\": \"Skip {count} files\", \"msgstr\": [\"Omet {count} fitxer\", \"Omet {count} fitxers\"] }, \"Skip this file\": { \"msgid\": \"Skip this file\", \"msgstr\": [\"Omet aquest fitxer\"] }, \"Unknown size\": { \"msgid\": \"Unknown size\", \"msgstr\": [\"Mida desconeguda\"] }, \"Upload\": { \"msgid\": \"Upload\", \"msgstr\": [\"Pujar\"] }, \"Upload files\": { \"msgid\": \"Upload files\", \"msgstr\": [\"Puja els fitxers\"] }, \"Upload folders\": { \"msgid\": \"Upload folders\", \"msgstr\": [\"Pujar les carpetes\"] }, \"Upload from device\": { \"msgid\": \"Upload from device\", \"msgstr\": [\"Pujada des del dispositiu\"] }, \"Upload has been cancelled\": { \"msgid\": \"Upload has been cancelled\", \"msgstr\": [\"La pujada s'ha cancel·lat\"] }, \"Upload has been skipped\": { \"msgid\": \"Upload has been skipped\", \"msgstr\": [\"S'ha omès la pujada\"] }, 'Upload of \"{folder}\" has been skipped': { \"msgid\": 'Upload of \"{folder}\" has been skipped', \"msgstr\": [`S'ha omès la pujada de \"{folder}\"`] }, \"Upload progress\": { \"msgid\": \"Upload progress\", \"msgstr\": [\"Procés de pujada\"] }, \"When an incoming folder is selected, any conflicting files within it will also be overwritten.\": { \"msgid\": \"When an incoming folder is selected, any conflicting files within it will also be overwritten.\", \"msgstr\": [\"Quan es selecciona una carpeta d'entrada, també es sobreescriuran els fitxers en conflicte dins d'ella.\"] }, \"When an incoming folder is selected, the content is written into the existing folder and a recursive conflict resolution is performed.\": { \"msgid\": \"When an incoming folder is selected, the content is written into the existing folder and a recursive conflict resolution is performed.\", \"msgstr\": [\"Quan es selecciona una carpeta d'entrada, el contingut s'escriu a la carpeta existent i es realitza una resolució recursiva de conflictes.\"] }, \"Which files do you want to keep?\": { \"msgid\": \"Which files do you want to keep?\", \"msgstr\": [\"Quins fitxers vols conservar?\"] }, \"You can either rename the file, skip this file or cancel the whole operation.\": { \"msgid\": \"You can either rename the file, skip this file or cancel the whole operation.\", \"msgstr\": [\"Podeu canviar el nom del fitxer, saltar aquest fitxer o cancel·lar tota l'operació.\"] }, \"You need to select at least one version of each file to continue.\": { \"msgid\": \"You need to select at least one version of each file to continue.\", \"msgstr\": [\"Heu de seleccionar almenys una versió de cada fitxer per continuar.\"] } } } } }, { \"locale\": \"cs\", \"json\": { \"charset\": \"utf-8\", \"headers\": { \"Last-Translator\": \"Pavel Borecki , 2025\", \"Language-Team\": \"Czech (Czech Republic) (https://app.transifex.com/nextcloud/teams/64236/cs_CZ/)\", \"Content-Type\": \"text/plain; charset=UTF-8\", \"Language\": \"cs_CZ\", \"Plural-Forms\": \"nplurals=4; plural=(n == 1 && n % 1 == 0) ? 0 : (n >= 2 && n <= 4 && n % 1 == 0) ? 1: (n % 1 != 0 ) ? 2 : 3;\" }, \"translations\": { \"\": { \"\": { \"msgid\": \"\", \"comments\": { \"translator\": \"\\nTranslators:\\nJoas Schilling, 2024\\nMichal Šmahel , 2024\\nMartin Hankovec, 2024\\nAppukonrad , 2024\\nPavel Borecki , 2025\\n\" }, \"msgstr\": [\"Last-Translator: Pavel Borecki , 2025\\nLanguage-Team: Czech (Czech Republic) (https://app.transifex.com/nextcloud/teams/64236/cs_CZ/)\\nContent-Type: text/plain; charset=UTF-8\\nLanguage: cs_CZ\\nPlural-Forms: nplurals=4; plural=(n == 1 && n % 1 == 0) ? 0 : (n >= 2 && n <= 4 && n % 1 == 0) ? 1: (n % 1 != 0 ) ? 2 : 3;\\n\"] }, '\"{segment}\" is a forbidden file or folder name.': { \"msgid\": '\"{segment}\" is a forbidden file or folder name.', \"msgstr\": [\"„{segment}“ není povoleno použít jako název souboru či složky.\"] }, '\"{segment}\" is a forbidden file type.': { \"msgid\": '\"{segment}\" is a forbidden file type.', \"msgstr\": [\"„{segment}“ není povoleného typu souboru.\"] }, '\"{segment}\" is not allowed inside a file or folder name.': { \"msgid\": '\"{segment}\" is not allowed inside a file or folder name.', \"msgstr\": [\"„{segment}“ není povoleno použít v rámci názvu souboru či složky.\"] }, \"{count} file conflict\": { \"msgid\": \"{count} file conflict\", \"msgid_plural\": \"{count} files conflict\", \"msgstr\": [\"{count} kolize souborů\", \"{count} kolize souborů\", \"{count} kolizí souborů\", \"{count} kolize souborů\"] }, \"{count} file conflict in {dirname}\": { \"msgid\": \"{count} file conflict in {dirname}\", \"msgid_plural\": \"{count} file conflicts in {dirname}\", \"msgstr\": [\"{count} kolize souboru v {dirname}\", \"{count} kolize souboru v {dirname}\", \"{count} kolizí souborů v {dirname}\", \"{count} kolize souboru v {dirname}\"] }, \"{seconds} seconds left\": { \"msgid\": \"{seconds} seconds left\", \"msgid_plural\": \"{seconds} seconds left\", \"msgstr\": [\"zbývá {seconds}\", \"zbývají {seconds}\", \"zbývá {seconds}\", \"zbývají {seconds}\"] }, \"{time} left\": { \"msgid\": \"{time} left\", \"comments\": { \"extracted\": \"TRANSLATORS time has the format 00:00:00\" }, \"msgstr\": [\"zbývá {time}\"] }, \"a few seconds left\": { \"msgid\": \"a few seconds left\", \"msgstr\": [\"zbývá několik sekund\"] }, \"assembling\": { \"msgid\": \"assembling\", \"msgstr\": [\"sestavování\"] }, \"Cancel\": { \"msgid\": \"Cancel\", \"msgstr\": [\"Zrušit\"] }, \"Cancel the entire operation\": { \"msgid\": \"Cancel the entire operation\", \"msgstr\": [\"Zrušit celou operaci\"] }, \"Cancel uploads\": { \"msgid\": \"Cancel uploads\", \"msgstr\": [\"Zrušit nahrávání\"] }, \"Continue\": { \"msgid\": \"Continue\", \"msgstr\": [\"Pokračovat\"] }, \"Create new\": { \"msgid\": \"Create new\", \"msgstr\": [\"Vytvořit nový\"] }, \"estimating time left\": { \"msgid\": \"estimating time left\", \"msgstr\": [\"odhaduje se zbývající čas\"] }, \"Existing version\": { \"msgid\": \"Existing version\", \"msgstr\": [\"Existující verze\"] }, \"Failed to assemble the chunks together\": { \"msgid\": \"Failed to assemble the chunks together\", \"msgstr\": [\"Shluky se nepodařilo dát dohromady\"] }, \"Failed to upload the file\": { \"msgid\": \"Failed to upload the file\", \"msgstr\": [\"Soubor se nepodařilo nahrát\"] }, 'Filenames must not end with \"{segment}\".': { \"msgid\": 'Filenames must not end with \"{segment}\".', \"msgstr\": [\"Názvy souborů nemohou končit na „{segment}“.\"] }, \"If you select both versions, the incoming file will have a number added to its name.\": { \"msgid\": \"If you select both versions, the incoming file will have a number added to its name.\", \"msgstr\": [\"Pokud vyberete obě verze, příchozí soubor bude mít ke jménu přidánu číslici.\"] }, \"Invalid filename\": { \"msgid\": \"Invalid filename\", \"msgstr\": [\"Neplatný název souboru\"] }, \"Last modified date unknown\": { \"msgid\": \"Last modified date unknown\", \"msgstr\": [\"Neznámé datum poslední úpravy\"] }, \"New\": { \"msgid\": \"New\", \"msgstr\": [\"Nové\"] }, \"New filename\": { \"msgid\": \"New filename\", \"msgstr\": [\"Nový název souboru\"] }, \"New version\": { \"msgid\": \"New version\", \"msgstr\": [\"Nová verze\"] }, \"paused\": { \"msgid\": \"paused\", \"msgstr\": [\"pozastaveno\"] }, \"Preview image\": { \"msgid\": \"Preview image\", \"msgstr\": [\"Náhled obrázku\"] }, \"Rename\": { \"msgid\": \"Rename\", \"msgstr\": [\"Přejmenovat\"] }, \"Select all checkboxes\": { \"msgid\": \"Select all checkboxes\", \"msgstr\": [\"Označit všechny zaškrtávací kolonky\"] }, \"Select all existing files\": { \"msgid\": \"Select all existing files\", \"msgstr\": [\"Vybrat veškeré stávající soubory\"] }, \"Select all new files\": { \"msgid\": \"Select all new files\", \"msgstr\": [\"Vybrat veškeré nové soubory\"] }, \"Skip\": { \"msgid\": \"Skip\", \"msgstr\": [\"Přeskočit\"] }, \"Skip {count} file\": { \"msgid\": \"Skip {count} file\", \"msgid_plural\": \"Skip {count} files\", \"msgstr\": [\"Přeskočit {count} soubor\", \"Přeskočit {count} soubory\", \"Přeskočit {count} souborů\", \"Přeskočit {count} soubory\"] }, \"Skip this file\": { \"msgid\": \"Skip this file\", \"msgstr\": [\"Přeskočit tento soubor\"] }, \"Unknown size\": { \"msgid\": \"Unknown size\", \"msgstr\": [\"Neznámá velikost\"] }, \"Upload\": { \"msgid\": \"Upload\", \"msgstr\": [\"Nahrát\"] }, \"Upload files\": { \"msgid\": \"Upload files\", \"msgstr\": [\"Nahrát soubory\"] }, \"Upload folders\": { \"msgid\": \"Upload folders\", \"msgstr\": [\"Nahrát složky\"] }, \"Upload from device\": { \"msgid\": \"Upload from device\", \"msgstr\": [\"Nahrát ze zařízení\"] }, \"Upload has been cancelled\": { \"msgid\": \"Upload has been cancelled\", \"msgstr\": [\"Nahrávání bylo zrušeno\"] }, \"Upload has been skipped\": { \"msgid\": \"Upload has been skipped\", \"msgstr\": [\"Nahrání bylo přeskočeno\"] }, 'Upload of \"{folder}\" has been skipped': { \"msgid\": 'Upload of \"{folder}\" has been skipped', \"msgstr\": [\"Nahrání „{folder}“ bylo přeskočeno\"] }, \"Upload progress\": { \"msgid\": \"Upload progress\", \"msgstr\": [\"Postup v nahrávání\"] }, \"When an incoming folder is selected, any conflicting files within it will also be overwritten.\": { \"msgid\": \"When an incoming folder is selected, any conflicting files within it will also be overwritten.\", \"msgstr\": [\"Po výběru příchozí složky budou rovněž přepsány všechny v ní obsažené konfliktní soubory\"] }, \"When an incoming folder is selected, the content is written into the existing folder and a recursive conflict resolution is performed.\": { \"msgid\": \"When an incoming folder is selected, the content is written into the existing folder and a recursive conflict resolution is performed.\", \"msgstr\": [\"Když je vybrána příchozí složka, obsah je zapsán do existující složky a je provedeno rekurzivní řešení kolizí.\"] }, \"Which files do you want to keep?\": { \"msgid\": \"Which files do you want to keep?\", \"msgstr\": [\"Které soubory si přejete ponechat?\"] }, \"You can either rename the file, skip this file or cancel the whole operation.\": { \"msgid\": \"You can either rename the file, skip this file or cancel the whole operation.\", \"msgstr\": [\"Soubor je možné buď přejmenovat, přeskočit nebo celou operaci zrušit.\"] }, \"You need to select at least one version of each file to continue.\": { \"msgid\": \"You need to select at least one version of each file to continue.\", \"msgstr\": [\"Aby bylo možné pokračovat, je třeba vybrat alespoň jednu verzi od každého souboru.\"] } } } } }, { \"locale\": \"cy_GB\", \"json\": { \"charset\": \"utf-8\", \"headers\": { \"Last-Translator\": \"Transifex Bot <>, 2022\", \"Language-Team\": \"Welsh (United Kingdom) (https://www.transifex.com/nextcloud/teams/64236/cy_GB/)\", \"Content-Type\": \"text/plain; charset=UTF-8\", \"Language\": \"cy_GB\", \"Plural-Forms\": \"nplurals=4; plural=(n==1) ? 0 : (n==2) ? 1 : (n != 8 && n != 11) ? 2 : 3;\" }, \"translations\": { \"\": { \"\": { \"msgid\": \"\", \"comments\": { \"translator\": \"\\nTranslators:\\nTransifex Bot <>, 2022\\n\" }, \"msgstr\": [\"Last-Translator: Transifex Bot <>, 2022\\nLanguage-Team: Welsh (United Kingdom) (https://www.transifex.com/nextcloud/teams/64236/cy_GB/)\\nContent-Type: text/plain; charset=UTF-8\\nLanguage: cy_GB\\nPlural-Forms: nplurals=4; plural=(n==1) ? 0 : (n==2) ? 1 : (n != 8 && n != 11) ? 2 : 3;\\n\"] }, \"{estimate} seconds left\": { \"msgid\": \"{estimate} seconds left\", \"msgstr\": [\"\"] }, \"{hours} hours and {minutes} minutes left\": { \"msgid\": \"{hours} hours and {minutes} minutes left\", \"msgstr\": [\"\"] }, \"{minutes} minutes left\": { \"msgid\": \"{minutes} minutes left\", \"msgstr\": [\"\"] }, \"a few seconds left\": { \"msgid\": \"a few seconds left\", \"msgstr\": [\"\"] }, \"Add\": { \"msgid\": \"Add\", \"msgstr\": [\"\"] }, \"Cancel uploads\": { \"msgid\": \"Cancel uploads\", \"msgstr\": [\"\"] }, \"estimating time left\": { \"msgid\": \"estimating time left\", \"msgstr\": [\"\"] }, \"paused\": { \"msgid\": \"paused\", \"msgstr\": [\"\"] } } } } }, { \"locale\": \"da\", \"json\": { \"charset\": \"utf-8\", \"headers\": { \"Last-Translator\": \"Finn Sommer , 2025\", \"Language-Team\": \"Danish (https://app.transifex.com/nextcloud/teams/64236/da/)\", \"Content-Type\": \"text/plain; charset=UTF-8\", \"Language\": \"da\", \"Plural-Forms\": \"nplurals=2; plural=(n != 1);\" }, \"translations\": { \"\": { \"\": { \"msgid\": \"\", \"comments\": { \"translator\": \"\\nTranslators:\\nJoas Schilling, 2024\\nRasmus Rosendahl-Kaa, 2024\\nMartin Bonde , 2025\\nFinn Sommer , 2025\\n\" }, \"msgstr\": [\"Last-Translator: Finn Sommer , 2025\\nLanguage-Team: Danish (https://app.transifex.com/nextcloud/teams/64236/da/)\\nContent-Type: text/plain; charset=UTF-8\\nLanguage: da\\nPlural-Forms: nplurals=2; plural=(n != 1);\\n\"] }, '\"{segment}\" is a forbidden file or folder name.': { \"msgid\": '\"{segment}\" is a forbidden file or folder name.', \"msgstr\": ['\"{segment}\" er et forbudt fil- eller mappenavn.'] }, '\"{segment}\" is a forbidden file type.': { \"msgid\": '\"{segment}\" is a forbidden file type.', \"msgstr\": ['\"{segment}\" er en forbudt filtype.'] }, '\"{segment}\" is not allowed inside a file or folder name.': { \"msgid\": '\"{segment}\" is not allowed inside a file or folder name.', \"msgstr\": ['\"{segment}\" er ikke tilladt i et fil- eller mappenavn.'] }, \"{count} file conflict\": { \"msgid\": \"{count} file conflict\", \"msgid_plural\": \"{count} files conflict\", \"msgstr\": [\"{count} fil konflikt\", \"{count} filer i konflikt\"] }, \"{count} file conflict in {dirname}\": { \"msgid\": \"{count} file conflict in {dirname}\", \"msgid_plural\": \"{count} file conflicts in {dirname}\", \"msgstr\": [\"{count} fil konflikt i {dirname}\", \"{count} filer i konflikt i {dirname}\"] }, \"{seconds} seconds left\": { \"msgid\": \"{seconds} seconds left\", \"msgid_plural\": \"{seconds} seconds left\", \"msgstr\": [\"{sekunder} sekunder tilbage\", \"{sekunder} sekunder tilbage\"] }, \"{time} left\": { \"msgid\": \"{time} left\", \"comments\": { \"extracted\": \"TRANSLATORS time has the format 00:00:00\" }, \"msgstr\": [\"{time} tilbage\"] }, \"a few seconds left\": { \"msgid\": \"a few seconds left\", \"msgstr\": [\"et par sekunder tilbage\"] }, \"assembling\": { \"msgid\": \"assembling\", \"msgstr\": [\"samling\"] }, \"Cancel\": { \"msgid\": \"Cancel\", \"msgstr\": [\"Annuller\"] }, \"Cancel the entire operation\": { \"msgid\": \"Cancel the entire operation\", \"msgstr\": [\"Annuller hele handlingen\"] }, \"Cancel uploads\": { \"msgid\": \"Cancel uploads\", \"msgstr\": [\"Annuller uploads\"] }, \"Continue\": { \"msgid\": \"Continue\", \"msgstr\": [\"Fortsæt\"] }, \"Create new\": { \"msgid\": \"Create new\", \"msgstr\": [\"Opret ny\"] }, \"estimating time left\": { \"msgid\": \"estimating time left\", \"msgstr\": [\"estimering af resterende tid\"] }, \"Existing version\": { \"msgid\": \"Existing version\", \"msgstr\": [\"Eksisterende version\"] }, \"Failed to assemble the chunks together\": { \"msgid\": \"Failed to assemble the chunks together\", \"msgstr\": [\"Mislykkedes at samle stumperne sammen\"] }, \"Failed to upload the file\": { \"msgid\": \"Failed to upload the file\", \"msgstr\": [\"Kunne ikke uploade filen\"] }, 'Filenames must not end with \"{segment}\".': { \"msgid\": 'Filenames must not end with \"{segment}\".', \"msgstr\": ['Filnavne må ikke slutte med \"{segment}\".'] }, \"If you select both versions, the incoming file will have a number added to its name.\": { \"msgid\": \"If you select both versions, the incoming file will have a number added to its name.\", \"msgstr\": [\"Hvis du vælger begge versioner, vil den indkommende fil have et nummer tilføjet til sit navn.\"] }, \"Invalid filename\": { \"msgid\": \"Invalid filename\", \"msgstr\": [\"Ugyldigt filnavn\"] }, \"Last modified date unknown\": { \"msgid\": \"Last modified date unknown\", \"msgstr\": [\"Sidste modifikationsdato ukendt\"] }, \"New\": { \"msgid\": \"New\", \"msgstr\": [\"Ny\"] }, \"New filename\": { \"msgid\": \"New filename\", \"msgstr\": [\"Nyt filnavn\"] }, \"New version\": { \"msgid\": \"New version\", \"msgstr\": [\"Ny version\"] }, \"paused\": { \"msgid\": \"paused\", \"msgstr\": [\"pauset\"] }, \"Preview image\": { \"msgid\": \"Preview image\", \"msgstr\": [\"Forhåndsvisning af billede\"] }, \"Rename\": { \"msgid\": \"Rename\", \"msgstr\": [\"Omdøb\"] }, \"Select all checkboxes\": { \"msgid\": \"Select all checkboxes\", \"msgstr\": [\"Vælg alle felter\"] }, \"Select all existing files\": { \"msgid\": \"Select all existing files\", \"msgstr\": [\"Vælg alle eksisterende filer\"] }, \"Select all new files\": { \"msgid\": \"Select all new files\", \"msgstr\": [\"Vælg alle nye filer\"] }, \"Skip\": { \"msgid\": \"Skip\", \"msgstr\": [\"Spring over\"] }, \"Skip {count} file\": { \"msgid\": \"Skip {count} file\", \"msgid_plural\": \"Skip {count} files\", \"msgstr\": [\"Spring {count} fil over\", \"Spring {count} fil over\"] }, \"Skip this file\": { \"msgid\": \"Skip this file\", \"msgstr\": [\"Spring denne fil over\"] }, \"Unknown size\": { \"msgid\": \"Unknown size\", \"msgstr\": [\"Ukendt størrelse\"] }, \"Upload\": { \"msgid\": \"Upload\", \"msgstr\": [\"Upload\"] }, \"Upload files\": { \"msgid\": \"Upload files\", \"msgstr\": [\"Upload filer\"] }, \"Upload folders\": { \"msgid\": \"Upload folders\", \"msgstr\": [\"Upload mapper\"] }, \"Upload from device\": { \"msgid\": \"Upload from device\", \"msgstr\": [\"Upload fra enhed\"] }, \"Upload has been cancelled\": { \"msgid\": \"Upload has been cancelled\", \"msgstr\": [\"Upload er blevet annulleret\"] }, \"Upload has been skipped\": { \"msgid\": \"Upload has been skipped\", \"msgstr\": [\"Upload er blevet sprunget over\"] }, 'Upload of \"{folder}\" has been skipped': { \"msgid\": 'Upload of \"{folder}\" has been skipped', \"msgstr\": ['Upload af \"{folder}\" er blevet sprunget over'] }, \"Upload progress\": { \"msgid\": \"Upload progress\", \"msgstr\": [\"Upload fremskridt\"] }, \"When an incoming folder is selected, any conflicting files within it will also be overwritten.\": { \"msgid\": \"When an incoming folder is selected, any conflicting files within it will also be overwritten.\", \"msgstr\": [\"Når en indgående mappe er valgt, vil alle modstridende filer i den også blive overskrevet.\"] }, \"When an incoming folder is selected, the content is written into the existing folder and a recursive conflict resolution is performed.\": { \"msgid\": \"When an incoming folder is selected, the content is written into the existing folder and a recursive conflict resolution is performed.\", \"msgstr\": [\"Når en indkommende mappe er valgt, vil dens indhold blive skrevet ind i den eksisterende mappe og en rekursiv konfliktløsning udføres.\"] }, \"Which files do you want to keep?\": { \"msgid\": \"Which files do you want to keep?\", \"msgstr\": [\"Hvilke filer ønsker du at beholde?\"] }, \"You can either rename the file, skip this file or cancel the whole operation.\": { \"msgid\": \"You can either rename the file, skip this file or cancel the whole operation.\", \"msgstr\": [\"Du kan enten omdøbe filen, springe denne fil over eller annullere hele handlingen.\"] }, \"You need to select at least one version of each file to continue.\": { \"msgid\": \"You need to select at least one version of each file to continue.\", \"msgstr\": [\"Du skal vælge mindst én version af hver fil for at fortsætte.\"] } } } } }, { \"locale\": \"de\", \"json\": { \"charset\": \"utf-8\", \"headers\": { \"Last-Translator\": \"Martin Wilichowski, 2025\", \"Language-Team\": \"German (https://app.transifex.com/nextcloud/teams/64236/de/)\", \"Content-Type\": \"text/plain; charset=UTF-8\", \"Language\": \"de\", \"Plural-Forms\": \"nplurals=2; plural=(n != 1);\" }, \"translations\": { \"\": { \"\": { \"msgid\": \"\", \"comments\": { \"translator\": \"\\nTranslators:\\nJoas Schilling, 2024\\nAndy Scherzinger , 2024\\nMark Ziegler , 2025\\nMario Siegmann , 2025\\nMartin Wilichowski, 2025\\n\" }, \"msgstr\": [\"Last-Translator: Martin Wilichowski, 2025\\nLanguage-Team: German (https://app.transifex.com/nextcloud/teams/64236/de/)\\nContent-Type: text/plain; charset=UTF-8\\nLanguage: de\\nPlural-Forms: nplurals=2; plural=(n != 1);\\n\"] }, '\"{segment}\" is a forbidden file or folder name.': { \"msgid\": '\"{segment}\" is a forbidden file or folder name.', \"msgstr\": ['\"{segment}\" ist ein verbotener Datei- oder Ordnername.'] }, '\"{segment}\" is a forbidden file type.': { \"msgid\": '\"{segment}\" is a forbidden file type.', \"msgstr\": ['\"{segment}\" ist ein verbotener Dateityp.'] }, '\"{segment}\" is not allowed inside a file or folder name.': { \"msgid\": '\"{segment}\" is not allowed inside a file or folder name.', \"msgstr\": ['\"{segment}\" ist in einem Datei- oder Ordnernamen nicht zulässig.'] }, \"{count} file conflict\": { \"msgid\": \"{count} file conflict\", \"msgid_plural\": \"{count} files conflict\", \"msgstr\": [\"{count} Datei-Konflikt\", \"{count} Datei-Konflikte\"] }, \"{count} file conflict in {dirname}\": { \"msgid\": \"{count} file conflict in {dirname}\", \"msgid_plural\": \"{count} file conflicts in {dirname}\", \"msgstr\": [\"{count} Datei-Konflikt in {dirname}\", \"{count} Datei-Konflikte in {dirname}\"] }, \"{seconds} seconds left\": { \"msgid\": \"{seconds} seconds left\", \"msgid_plural\": \"{seconds} seconds left\", \"msgstr\": [\"{seconds} Sekunde verbleibt\", \"{seconds} Sekunden verbleiben\"] }, \"{time} left\": { \"msgid\": \"{time} left\", \"comments\": { \"extracted\": \"TRANSLATORS time has the format 00:00:00\" }, \"msgstr\": [\"{time} verbleibend\"] }, \"a few seconds left\": { \"msgid\": \"a few seconds left\", \"msgstr\": [\"ein paar Sekunden verbleiben\"] }, \"assembling\": { \"msgid\": \"assembling\", \"msgstr\": [\"zusammenfügen\"] }, \"Cancel\": { \"msgid\": \"Cancel\", \"msgstr\": [\"Abbrechen\"] }, \"Cancel the entire operation\": { \"msgid\": \"Cancel the entire operation\", \"msgstr\": [\"Den gesamten Vorgang abbrechen\"] }, \"Cancel uploads\": { \"msgid\": \"Cancel uploads\", \"msgstr\": [\"Hochladen abbrechen\"] }, \"Continue\": { \"msgid\": \"Continue\", \"msgstr\": [\"Fortsetzen\"] }, \"Create new\": { \"msgid\": \"Create new\", \"msgstr\": [\"Neu erstellen\"] }, \"estimating time left\": { \"msgid\": \"estimating time left\", \"msgstr\": [\"Berechne verbleibende Zeit\"] }, \"Existing version\": { \"msgid\": \"Existing version\", \"msgstr\": [\"Vorhandene Version\"] }, \"Failed to assemble the chunks together\": { \"msgid\": \"Failed to assemble the chunks together\", \"msgstr\": [\"Die Teile konnten nicht zusammengefügt werden\"] }, \"Failed to upload the file\": { \"msgid\": \"Failed to upload the file\", \"msgstr\": [\"Die Datei konnte nicht hochgeladen werden\"] }, 'Filenames must not end with \"{segment}\".': { \"msgid\": 'Filenames must not end with \"{segment}\".', \"msgstr\": ['Dateinamen dürfen nicht mit \"{segment}\" enden.'] }, \"If you select both versions, the incoming file will have a number added to its name.\": { \"msgid\": \"If you select both versions, the incoming file will have a number added to its name.\", \"msgstr\": [\"Wenn du beide Versionen auswählst, wird der eingehenden Datei eine Nummer zum Namen hinzugefügt.\"] }, \"Invalid filename\": { \"msgid\": \"Invalid filename\", \"msgstr\": [\"Ungültiger Dateiname\"] }, \"Last modified date unknown\": { \"msgid\": \"Last modified date unknown\", \"msgstr\": [\"Datum der letzten Änderung unbekannt\"] }, \"New\": { \"msgid\": \"New\", \"msgstr\": [\"Neu\"] }, \"New filename\": { \"msgid\": \"New filename\", \"msgstr\": [\"Neuer Dateiname\"] }, \"New version\": { \"msgid\": \"New version\", \"msgstr\": [\"Neue Version\"] }, \"paused\": { \"msgid\": \"paused\", \"msgstr\": [\"Pausiert\"] }, \"Preview image\": { \"msgid\": \"Preview image\", \"msgstr\": [\"Vorschaubild\"] }, \"Rename\": { \"msgid\": \"Rename\", \"msgstr\": [\"Umbenennen\"] }, \"Select all checkboxes\": { \"msgid\": \"Select all checkboxes\", \"msgstr\": [\"Alle Kontrollkästchen aktivieren\"] }, \"Select all existing files\": { \"msgid\": \"Select all existing files\", \"msgstr\": [\"Alle vorhandenen Dateien auswählen\"] }, \"Select all new files\": { \"msgid\": \"Select all new files\", \"msgstr\": [\"Alle neuen Dateien auswählen\"] }, \"Skip\": { \"msgid\": \"Skip\", \"msgstr\": [\"Überspringen\"] }, \"Skip {count} file\": { \"msgid\": \"Skip {count} file\", \"msgid_plural\": \"Skip {count} files\", \"msgstr\": [\"{count} Datei überspringen\", \"{count} Dateien überspringen\"] }, \"Skip this file\": { \"msgid\": \"Skip this file\", \"msgstr\": [\"Diese Datei überspringen\"] }, \"Unknown size\": { \"msgid\": \"Unknown size\", \"msgstr\": [\"Unbekannte Größe\"] }, \"Upload\": { \"msgid\": \"Upload\", \"msgstr\": [\"Hochladen\"] }, \"Upload files\": { \"msgid\": \"Upload files\", \"msgstr\": [\"Dateien hochladen\"] }, \"Upload folders\": { \"msgid\": \"Upload folders\", \"msgstr\": [\"Ordner hochladen\"] }, \"Upload from device\": { \"msgid\": \"Upload from device\", \"msgstr\": [\"Vom Gerät hochladen\"] }, \"Upload has been cancelled\": { \"msgid\": \"Upload has been cancelled\", \"msgstr\": [\"Das Hochladen wurde abgebrochen\"] }, \"Upload has been skipped\": { \"msgid\": \"Upload has been skipped\", \"msgstr\": [\"Das Hochladen wurde übersprungen\"] }, 'Upload of \"{folder}\" has been skipped': { \"msgid\": 'Upload of \"{folder}\" has been skipped', \"msgstr\": ['Das Hochladen von \"{folder}\" wurde übersprungen'] }, \"Upload progress\": { \"msgid\": \"Upload progress\", \"msgstr\": [\"Fortschritt beim Hochladen\"] }, \"When an incoming folder is selected, any conflicting files within it will also be overwritten.\": { \"msgid\": \"When an incoming folder is selected, any conflicting files within it will also be overwritten.\", \"msgstr\": [\"Wenn ein eingehender Ordner ausgewählt wird, werden alle darin enthaltenen Konfliktdateien ebenfalls überschrieben.\"] }, \"When an incoming folder is selected, the content is written into the existing folder and a recursive conflict resolution is performed.\": { \"msgid\": \"When an incoming folder is selected, the content is written into the existing folder and a recursive conflict resolution is performed.\", \"msgstr\": [\"Bei Auswahl eines eingehenden Ordners wird der Inhalt in den vorhandenen Ordner geschrieben und eine rekursive Konfliktlösung durchgeführt.\"] }, \"Which files do you want to keep?\": { \"msgid\": \"Which files do you want to keep?\", \"msgstr\": [\"Welche Dateien möchtest du behalten?\"] }, \"You can either rename the file, skip this file or cancel the whole operation.\": { \"msgid\": \"You can either rename the file, skip this file or cancel the whole operation.\", \"msgstr\": [\"Du kannst die Datei entweder umbenennen, diese Datei überspringen oder den gesamten Vorgang abbrechen.\"] }, \"You need to select at least one version of each file to continue.\": { \"msgid\": \"You need to select at least one version of each file to continue.\", \"msgstr\": [\"Du musst mindestens eine Version jeder Datei auswählen, um fortzufahren.\"] } } } } }, { \"locale\": \"de_DE\", \"json\": { \"charset\": \"utf-8\", \"headers\": { \"Last-Translator\": \"Martin Wilichowski, 2025\", \"Language-Team\": \"German (Germany) (https://app.transifex.com/nextcloud/teams/64236/de_DE/)\", \"Content-Type\": \"text/plain; charset=UTF-8\", \"Language\": \"de_DE\", \"Plural-Forms\": \"nplurals=2; plural=(n != 1);\" }, \"translations\": { \"\": { \"\": { \"msgid\": \"\", \"comments\": { \"translator\": \"\\nTranslators:\\nJoas Schilling, 2024\\nMark Ziegler , 2025\\nMario Siegmann , 2025\\nMartin Wilichowski, 2025\\n\" }, \"msgstr\": [\"Last-Translator: Martin Wilichowski, 2025\\nLanguage-Team: German (Germany) (https://app.transifex.com/nextcloud/teams/64236/de_DE/)\\nContent-Type: text/plain; charset=UTF-8\\nLanguage: de_DE\\nPlural-Forms: nplurals=2; plural=(n != 1);\\n\"] }, '\"{segment}\" is a forbidden file or folder name.': { \"msgid\": '\"{segment}\" is a forbidden file or folder name.', \"msgstr\": ['\"{segment}\" ist ein verbotener Datei- oder Ordnername.'] }, '\"{segment}\" is a forbidden file type.': { \"msgid\": '\"{segment}\" is a forbidden file type.', \"msgstr\": ['\"{segment}\" ist ein verbotener Dateityp.'] }, '\"{segment}\" is not allowed inside a file or folder name.': { \"msgid\": '\"{segment}\" is not allowed inside a file or folder name.', \"msgstr\": ['\"{segment}\" ist in einem Datei- oder Ordnernamen nicht zulässig.'] }, \"{count} file conflict\": { \"msgid\": \"{count} file conflict\", \"msgid_plural\": \"{count} files conflict\", \"msgstr\": [\"{count} Datei-Konflikt\", \"{count} Datei-Konflikte\"] }, \"{count} file conflict in {dirname}\": { \"msgid\": \"{count} file conflict in {dirname}\", \"msgid_plural\": \"{count} file conflicts in {dirname}\", \"msgstr\": [\"{count} Datei-Konflikt in {dirname}\", \"{count} Datei-Konflikte in {dirname}\"] }, \"{seconds} seconds left\": { \"msgid\": \"{seconds} seconds left\", \"msgid_plural\": \"{seconds} seconds left\", \"msgstr\": [\"{seconds} Sekunde verbleibt\", \"{seconds} Sekunden verbleiben\"] }, \"{time} left\": { \"msgid\": \"{time} left\", \"comments\": { \"extracted\": \"TRANSLATORS time has the format 00:00:00\" }, \"msgstr\": [\"{time} verbleibend\"] }, \"a few seconds left\": { \"msgid\": \"a few seconds left\", \"msgstr\": [\"ein paar Sekunden verbleiben\"] }, \"assembling\": { \"msgid\": \"assembling\", \"msgstr\": [\"zusammenfügen\"] }, \"Cancel\": { \"msgid\": \"Cancel\", \"msgstr\": [\"Abbrechen\"] }, \"Cancel the entire operation\": { \"msgid\": \"Cancel the entire operation\", \"msgstr\": [\"Den gesamten Vorgang abbrechen\"] }, \"Cancel uploads\": { \"msgid\": \"Cancel uploads\", \"msgstr\": [\"Hochladen abbrechen\"] }, \"Continue\": { \"msgid\": \"Continue\", \"msgstr\": [\"Fortsetzen\"] }, \"Create new\": { \"msgid\": \"Create new\", \"msgstr\": [\"Neu erstellen\"] }, \"estimating time left\": { \"msgid\": \"estimating time left\", \"msgstr\": [\"Berechne verbleibende Zeit\"] }, \"Existing version\": { \"msgid\": \"Existing version\", \"msgstr\": [\"Vorhandene Version\"] }, \"Failed to assemble the chunks together\": { \"msgid\": \"Failed to assemble the chunks together\", \"msgstr\": [\"Die Teile konnten nicht zusammengefügt werden\"] }, \"Failed to upload the file\": { \"msgid\": \"Failed to upload the file\", \"msgstr\": [\"Die Datei konnte nicht hochgeladen werden\"] }, 'Filenames must not end with \"{segment}\".': { \"msgid\": 'Filenames must not end with \"{segment}\".', \"msgstr\": ['Dateinamen dürfen nicht mit \"{segment}\" enden.'] }, \"If you select both versions, the incoming file will have a number added to its name.\": { \"msgid\": \"If you select both versions, the incoming file will have a number added to its name.\", \"msgstr\": [\"Wenn Sie beide Versionen auswählen, wird der eingehenden Datei eine Nummer zum Namen hinzugefügt.\"] }, \"Invalid filename\": { \"msgid\": \"Invalid filename\", \"msgstr\": [\"Ungültiger Dateiname\"] }, \"Last modified date unknown\": { \"msgid\": \"Last modified date unknown\", \"msgstr\": [\"Datum der letzten Änderung unbekannt\"] }, \"New\": { \"msgid\": \"New\", \"msgstr\": [\"Neu\"] }, \"New filename\": { \"msgid\": \"New filename\", \"msgstr\": [\"Neuer Dateiname\"] }, \"New version\": { \"msgid\": \"New version\", \"msgstr\": [\"Neue Version\"] }, \"paused\": { \"msgid\": \"paused\", \"msgstr\": [\"Pausiert\"] }, \"Preview image\": { \"msgid\": \"Preview image\", \"msgstr\": [\"Vorschaubild\"] }, \"Rename\": { \"msgid\": \"Rename\", \"msgstr\": [\"Umbenennen\"] }, \"Select all checkboxes\": { \"msgid\": \"Select all checkboxes\", \"msgstr\": [\"Alle Kontrollkästchen aktivieren\"] }, \"Select all existing files\": { \"msgid\": \"Select all existing files\", \"msgstr\": [\"Alle vorhandenen Dateien auswählen\"] }, \"Select all new files\": { \"msgid\": \"Select all new files\", \"msgstr\": [\"Alle neuen Dateien auswählen\"] }, \"Skip\": { \"msgid\": \"Skip\", \"msgstr\": [\"Überspringen\"] }, \"Skip {count} file\": { \"msgid\": \"Skip {count} file\", \"msgid_plural\": \"Skip {count} files\", \"msgstr\": [\"{count} Datei überspringen\", \"{count} Dateien überspringen\"] }, \"Skip this file\": { \"msgid\": \"Skip this file\", \"msgstr\": [\"Diese Datei überspringen\"] }, \"Unknown size\": { \"msgid\": \"Unknown size\", \"msgstr\": [\"Unbekannte Größe\"] }, \"Upload\": { \"msgid\": \"Upload\", \"msgstr\": [\"Hochladen\"] }, \"Upload files\": { \"msgid\": \"Upload files\", \"msgstr\": [\"Dateien hochladen\"] }, \"Upload folders\": { \"msgid\": \"Upload folders\", \"msgstr\": [\"Ordner hochladen\"] }, \"Upload from device\": { \"msgid\": \"Upload from device\", \"msgstr\": [\"Vom Gerät hochladen\"] }, \"Upload has been cancelled\": { \"msgid\": \"Upload has been cancelled\", \"msgstr\": [\"Das Hochladen wurde abgebrochen\"] }, \"Upload has been skipped\": { \"msgid\": \"Upload has been skipped\", \"msgstr\": [\"Das Hochladen wurde übersprungen\"] }, 'Upload of \"{folder}\" has been skipped': { \"msgid\": 'Upload of \"{folder}\" has been skipped', \"msgstr\": ['Das Hochladen von \"{folder}\" wurde übersprungen'] }, \"Upload progress\": { \"msgid\": \"Upload progress\", \"msgstr\": [\"Fortschritt beim Hochladen\"] }, \"When an incoming folder is selected, any conflicting files within it will also be overwritten.\": { \"msgid\": \"When an incoming folder is selected, any conflicting files within it will also be overwritten.\", \"msgstr\": [\"Wenn ein eingehender Ordner ausgewählt wird, werden alle darin enthaltenen Konfliktdateien ebenfalls überschrieben.\"] }, \"When an incoming folder is selected, the content is written into the existing folder and a recursive conflict resolution is performed.\": { \"msgid\": \"When an incoming folder is selected, the content is written into the existing folder and a recursive conflict resolution is performed.\", \"msgstr\": [\"Bei Auswahl eines eingehenden Ordners wird der Inhalt in den vorhandenen Ordner geschrieben und eine rekursive Konfliktlösung durchgeführt.\"] }, \"Which files do you want to keep?\": { \"msgid\": \"Which files do you want to keep?\", \"msgstr\": [\"Welche Dateien möchten Sie behalten?\"] }, \"You can either rename the file, skip this file or cancel the whole operation.\": { \"msgid\": \"You can either rename the file, skip this file or cancel the whole operation.\", \"msgstr\": [\"Sie können die Datei entweder umbenennen, diese Datei überspringen oder den gesamten Vorgang abbrechen.\"] }, \"You need to select at least one version of each file to continue.\": { \"msgid\": \"You need to select at least one version of each file to continue.\", \"msgstr\": [\"Sie müssen mindestens eine Version jeder Datei auswählen, um fortzufahren.\"] } } } } }, { \"locale\": \"el\", \"json\": { \"charset\": \"utf-8\", \"headers\": { \"Last-Translator\": \"Γιάννος, 2025\", \"Language-Team\": \"Greek (https://app.transifex.com/nextcloud/teams/64236/el/)\", \"Content-Type\": \"text/plain; charset=UTF-8\", \"Language\": \"el\", \"Plural-Forms\": \"nplurals=2; plural=(n != 1);\" }, \"translations\": { \"\": { \"\": { \"msgid\": \"\", \"comments\": { \"translator\": \"\\nTranslators:\\nJoas Schilling, 2024\\nEfstathios Iosifidis , 2025\\nΓιάννος, 2025\\n\" }, \"msgstr\": [\"Last-Translator: Γιάννος, 2025\\nLanguage-Team: Greek (https://app.transifex.com/nextcloud/teams/64236/el/)\\nContent-Type: text/plain; charset=UTF-8\\nLanguage: el\\nPlural-Forms: nplurals=2; plural=(n != 1);\\n\"] }, '\"{segment}\" is a forbidden file or folder name.': { \"msgid\": '\"{segment}\" is a forbidden file or folder name.', \"msgstr\": ['\"{segment}\" είναι απαγορευμένο όνομα αρχείου ή φακέλου.'] }, '\"{segment}\" is a forbidden file type.': { \"msgid\": '\"{segment}\" is a forbidden file type.', \"msgstr\": ['Το \"{segment}\" είναι απαγορευμένος τύπος αρχείου.'] }, '\"{segment}\" is not allowed inside a file or folder name.': { \"msgid\": '\"{segment}\" is not allowed inside a file or folder name.', \"msgstr\": ['Το \"{segment}\" δεν επιτρέπεται μέσα στο όνομα ενός αρχείου ή φακέλου.'] }, \"{count} file conflict\": { \"msgid\": \"{count} file conflict\", \"msgid_plural\": \"{count} files conflict\", \"msgstr\": [\"{count} αρχείο σε διένεξη\", \"{count} αρχεία σε διένεξη\"] }, \"{count} file conflict in {dirname}\": { \"msgid\": \"{count} file conflict in {dirname}\", \"msgid_plural\": \"{count} file conflicts in {dirname}\", \"msgstr\": [\"{count} αρχείο σε διένεξη στον φάκελο {dirname}\", \"{count} αρχεία σε διένεξη στον φάκελο {dirname}\"] }, \"{seconds} seconds left\": { \"msgid\": \"{seconds} seconds left\", \"msgid_plural\": \"{seconds} seconds left\", \"msgstr\": [\"Απομένει {seconds} δευτερόλεπτο\", \"Απομένουν {seconds} δευτερόλεπτα\"] }, \"{time} left\": { \"msgid\": \"{time} left\", \"comments\": { \"extracted\": \"TRANSLATORS time has the format 00:00:00\" }, \"msgstr\": [\"απομένουν {time}\"] }, \"a few seconds left\": { \"msgid\": \"a few seconds left\", \"msgstr\": [\"απομένουν λίγα δευτερόλεπτα\"] }, \"assembling\": { \"msgid\": \"assembling\", \"msgstr\": [\"συναρμολόγηση\"] }, \"Cancel\": { \"msgid\": \"Cancel\", \"msgstr\": [\"Ακύρωση\"] }, \"Cancel the entire operation\": { \"msgid\": \"Cancel the entire operation\", \"msgstr\": [\"Ακύρωση όλης της λειτουργίας\"] }, \"Cancel uploads\": { \"msgid\": \"Cancel uploads\", \"msgstr\": [\"Ακύρωση μεταφορτώσεων\"] }, \"Continue\": { \"msgid\": \"Continue\", \"msgstr\": [\"Συνέχεια\"] }, \"Create new\": { \"msgid\": \"Create new\", \"msgstr\": [\"Δημιουργία νέου\"] }, \"estimating time left\": { \"msgid\": \"estimating time left\", \"msgstr\": [\"εκτίμηση του χρόνου που απομένει\"] }, \"Existing version\": { \"msgid\": \"Existing version\", \"msgstr\": [\"Υπάρχουσα έκδοση\"] }, \"Failed to assemble the chunks together\": { \"msgid\": \"Failed to assemble the chunks together\", \"msgstr\": [\"Αποτυχία συναρμολόγησης των κομματιών\"] }, \"Failed to upload the file\": { \"msgid\": \"Failed to upload the file\", \"msgstr\": [\"Αποτυχία μεταφόρτωσης του αρχείου\"] }, 'Filenames must not end with \"{segment}\".': { \"msgid\": 'Filenames must not end with \"{segment}\".', \"msgstr\": ['Τα ονόματα αρχείων δεν πρέπει να τελειώνουν με \"{segment}\".'] }, \"If you select both versions, the incoming file will have a number added to its name.\": { \"msgid\": \"If you select both versions, the incoming file will have a number added to its name.\", \"msgstr\": [\"Αν επιλέξετε και τις δύο εκδόσεις, το εισερχόμενο αρχείο θα έχει έναν αριθμό προσαρτημένο στο όνομά του.\"] }, \"Invalid filename\": { \"msgid\": \"Invalid filename\", \"msgstr\": [\"Μη έγκυρο όνομα αρχείου\"] }, \"Last modified date unknown\": { \"msgid\": \"Last modified date unknown\", \"msgstr\": [\"Άγνωστη ημερομηνία τελευταίας τροποποίησης\"] }, \"New\": { \"msgid\": \"New\", \"msgstr\": [\"Νέο\"] }, \"New filename\": { \"msgid\": \"New filename\", \"msgstr\": [\"Νέο όνομα αρχείου\"] }, \"New version\": { \"msgid\": \"New version\", \"msgstr\": [\"Νέα έκδοση\"] }, \"paused\": { \"msgid\": \"paused\", \"msgstr\": [\"σε παύση\"] }, \"Preview image\": { \"msgid\": \"Preview image\", \"msgstr\": [\"Προεπισκόπηση εικόνας\"] }, \"Rename\": { \"msgid\": \"Rename\", \"msgstr\": [\"Μετονομασία\"] }, \"Select all checkboxes\": { \"msgid\": \"Select all checkboxes\", \"msgstr\": [\"Επιλογή όλων των πλαισίων ελέγχου\"] }, \"Select all existing files\": { \"msgid\": \"Select all existing files\", \"msgstr\": [\"Επιλογή όλων των υπαρχόντων αρχείων\"] }, \"Select all new files\": { \"msgid\": \"Select all new files\", \"msgstr\": [\"Επιλογή όλων των νέων αρχείων\"] }, \"Skip\": { \"msgid\": \"Skip\", \"msgstr\": [\"Παράλειψη\"] }, \"Skip {count} file\": { \"msgid\": \"Skip {count} file\", \"msgid_plural\": \"Skip {count} files\", \"msgstr\": [\"Παράλειψη {count} αρχείου\", \"Παράλειψη {count} αρχείων\"] }, \"Skip this file\": { \"msgid\": \"Skip this file\", \"msgstr\": [\"Παραλείψτε αυτό το αρχείο\"] }, \"Unknown size\": { \"msgid\": \"Unknown size\", \"msgstr\": [\"Άγνωστο μέγεθος\"] }, \"Upload\": { \"msgid\": \"Upload\", \"msgstr\": [\"Μεταφόρτωση\"] }, \"Upload files\": { \"msgid\": \"Upload files\", \"msgstr\": [\"Μεταφόρτωση αρχείων\"] }, \"Upload folders\": { \"msgid\": \"Upload folders\", \"msgstr\": [\"Μεταφόρτωση φακέλων\"] }, \"Upload from device\": { \"msgid\": \"Upload from device\", \"msgstr\": [\"Μεταφόρτωση από συσκευή\"] }, \"Upload has been cancelled\": { \"msgid\": \"Upload has been cancelled\", \"msgstr\": [\"Η μεταφόρτωση ακυρώθηκε\"] }, \"Upload has been skipped\": { \"msgid\": \"Upload has been skipped\", \"msgstr\": [\"Η μεταφόρτωση παραλείφθηκε\"] }, 'Upload of \"{folder}\" has been skipped': { \"msgid\": 'Upload of \"{folder}\" has been skipped', \"msgstr\": ['Η μεταφόρτωση του \"{folder}\" παραλείφθηκε'] }, \"Upload progress\": { \"msgid\": \"Upload progress\", \"msgstr\": [\"Πρόοδος μεταφόρτωσης\"] }, \"When an incoming folder is selected, any conflicting files within it will also be overwritten.\": { \"msgid\": \"When an incoming folder is selected, any conflicting files within it will also be overwritten.\", \"msgstr\": [\"Όταν επιλέγεται ένας εισερχόμενος φάκελος, όλα τα αρχεία σε διένεξη μέσα σε αυτόν θα αντικατασταθούν.\"] }, \"When an incoming folder is selected, the content is written into the existing folder and a recursive conflict resolution is performed.\": { \"msgid\": \"When an incoming folder is selected, the content is written into the existing folder and a recursive conflict resolution is performed.\", \"msgstr\": [\"Όταν επιλέγεται ένας εισερχόμενος φάκελος, το περιεχόμενό του γράφεται στον υπάρχοντα φάκελο και εκτελείται αναδρομική επίλυση διενέξεων.\"] }, \"Which files do you want to keep?\": { \"msgid\": \"Which files do you want to keep?\", \"msgstr\": [\"Ποια αρχεία θέλετε να διατηρήσετε;\"] }, \"You can either rename the file, skip this file or cancel the whole operation.\": { \"msgid\": \"You can either rename the file, skip this file or cancel the whole operation.\", \"msgstr\": [\"Μπορείτε είτε να μετονομάσετε το αρχείο, να παραλείψετε αυτό το αρχείο ή να ακυρώσετε όλη τη λειτουργία.\"] }, \"You need to select at least one version of each file to continue.\": { \"msgid\": \"You need to select at least one version of each file to continue.\", \"msgstr\": [\"Πρέπει να επιλέξετε τουλάχιστον μία έκδοση κάθε αρχείου για να συνεχίσετε.\"] } } } } }, { \"locale\": \"en_GB\", \"json\": { \"charset\": \"utf-8\", \"headers\": { \"Last-Translator\": \"Andi Chandler , 2025\", \"Language-Team\": \"English (United Kingdom) (https://app.transifex.com/nextcloud/teams/64236/en_GB/)\", \"Content-Type\": \"text/plain; charset=UTF-8\", \"Language\": \"en_GB\", \"Plural-Forms\": \"nplurals=2; plural=(n != 1);\" }, \"translations\": { \"\": { \"\": { \"msgid\": \"\", \"comments\": { \"translator\": \"\\nTranslators:\\nJoas Schilling, 2024\\nAndi Chandler , 2025\\n\" }, \"msgstr\": [\"Last-Translator: Andi Chandler , 2025\\nLanguage-Team: English (United Kingdom) (https://app.transifex.com/nextcloud/teams/64236/en_GB/)\\nContent-Type: text/plain; charset=UTF-8\\nLanguage: en_GB\\nPlural-Forms: nplurals=2; plural=(n != 1);\\n\"] }, '\"{segment}\" is a forbidden file or folder name.': { \"msgid\": '\"{segment}\" is a forbidden file or folder name.', \"msgstr\": ['\"{segment}\" is a forbidden file or folder name.'] }, '\"{segment}\" is a forbidden file type.': { \"msgid\": '\"{segment}\" is a forbidden file type.', \"msgstr\": ['\"{segment}\" is a forbidden file type.'] }, '\"{segment}\" is not allowed inside a file or folder name.': { \"msgid\": '\"{segment}\" is not allowed inside a file or folder name.', \"msgstr\": ['\"{segment}\" is not allowed inside a file or folder name.'] }, \"{count} file conflict\": { \"msgid\": \"{count} file conflict\", \"msgid_plural\": \"{count} files conflict\", \"msgstr\": [\"{count} file conflict\", \"{count} files conflict\"] }, \"{count} file conflict in {dirname}\": { \"msgid\": \"{count} file conflict in {dirname}\", \"msgid_plural\": \"{count} file conflicts in {dirname}\", \"msgstr\": [\"{count} file conflict in {dirname}\", \"{count} file conflicts in {dirname}\"] }, \"{seconds} seconds left\": { \"msgid\": \"{seconds} seconds left\", \"msgid_plural\": \"{seconds} seconds left\", \"msgstr\": [\"{seconds} seconds left\", \"{seconds} seconds left\"] }, \"{time} left\": { \"msgid\": \"{time} left\", \"comments\": { \"extracted\": \"TRANSLATORS time has the format 00:00:00\" }, \"msgstr\": [\"{time} left\"] }, \"a few seconds left\": { \"msgid\": \"a few seconds left\", \"msgstr\": [\"a few seconds left\"] }, \"assembling\": { \"msgid\": \"assembling\", \"msgstr\": [\"assembling\"] }, \"Cancel\": { \"msgid\": \"Cancel\", \"msgstr\": [\"Cancel\"] }, \"Cancel the entire operation\": { \"msgid\": \"Cancel the entire operation\", \"msgstr\": [\"Cancel the entire operation\"] }, \"Cancel uploads\": { \"msgid\": \"Cancel uploads\", \"msgstr\": [\"Cancel uploads\"] }, \"Continue\": { \"msgid\": \"Continue\", \"msgstr\": [\"Continue\"] }, \"Create new\": { \"msgid\": \"Create new\", \"msgstr\": [\"Create new\"] }, \"estimating time left\": { \"msgid\": \"estimating time left\", \"msgstr\": [\"estimating time left\"] }, \"Existing version\": { \"msgid\": \"Existing version\", \"msgstr\": [\"Existing version\"] }, \"Failed to assemble the chunks together\": { \"msgid\": \"Failed to assemble the chunks together\", \"msgstr\": [\"Failed to assemble the chunks together\"] }, \"Failed to upload the file\": { \"msgid\": \"Failed to upload the file\", \"msgstr\": [\"Failed to upload the file\"] }, 'Filenames must not end with \"{segment}\".': { \"msgid\": 'Filenames must not end with \"{segment}\".', \"msgstr\": ['Filenames must not end with \"{segment}\".'] }, \"If you select both versions, the incoming file will have a number added to its name.\": { \"msgid\": \"If you select both versions, the incoming file will have a number added to its name.\", \"msgstr\": [\"If you select both versions, the incoming file will have a number added to its name.\"] }, \"Invalid filename\": { \"msgid\": \"Invalid filename\", \"msgstr\": [\"Invalid filename\"] }, \"Last modified date unknown\": { \"msgid\": \"Last modified date unknown\", \"msgstr\": [\"Last modified date unknown\"] }, \"New\": { \"msgid\": \"New\", \"msgstr\": [\"New\"] }, \"New filename\": { \"msgid\": \"New filename\", \"msgstr\": [\"New filename\"] }, \"New version\": { \"msgid\": \"New version\", \"msgstr\": [\"New version\"] }, \"paused\": { \"msgid\": \"paused\", \"msgstr\": [\"paused\"] }, \"Preview image\": { \"msgid\": \"Preview image\", \"msgstr\": [\"Preview image\"] }, \"Rename\": { \"msgid\": \"Rename\", \"msgstr\": [\"Rename\"] }, \"Select all checkboxes\": { \"msgid\": \"Select all checkboxes\", \"msgstr\": [\"Select all checkboxes\"] }, \"Select all existing files\": { \"msgid\": \"Select all existing files\", \"msgstr\": [\"Select all existing files\"] }, \"Select all new files\": { \"msgid\": \"Select all new files\", \"msgstr\": [\"Select all new files\"] }, \"Skip\": { \"msgid\": \"Skip\", \"msgstr\": [\"Skip\"] }, \"Skip {count} file\": { \"msgid\": \"Skip {count} file\", \"msgid_plural\": \"Skip {count} files\", \"msgstr\": [\"Skip {count} file\", \"Skip {count} files\"] }, \"Skip this file\": { \"msgid\": \"Skip this file\", \"msgstr\": [\"Skip this file\"] }, \"Unknown size\": { \"msgid\": \"Unknown size\", \"msgstr\": [\"Unknown size\"] }, \"Upload\": { \"msgid\": \"Upload\", \"msgstr\": [\"Upload\"] }, \"Upload files\": { \"msgid\": \"Upload files\", \"msgstr\": [\"Upload files\"] }, \"Upload folders\": { \"msgid\": \"Upload folders\", \"msgstr\": [\"Upload folders\"] }, \"Upload from device\": { \"msgid\": \"Upload from device\", \"msgstr\": [\"Upload from device\"] }, \"Upload has been cancelled\": { \"msgid\": \"Upload has been cancelled\", \"msgstr\": [\"Upload has been cancelled\"] }, \"Upload has been skipped\": { \"msgid\": \"Upload has been skipped\", \"msgstr\": [\"Upload has been skipped\"] }, 'Upload of \"{folder}\" has been skipped': { \"msgid\": 'Upload of \"{folder}\" has been skipped', \"msgstr\": ['Upload of \"{folder}\" has been skipped'] }, \"Upload progress\": { \"msgid\": \"Upload progress\", \"msgstr\": [\"Upload progress\"] }, \"When an incoming folder is selected, any conflicting files within it will also be overwritten.\": { \"msgid\": \"When an incoming folder is selected, any conflicting files within it will also be overwritten.\", \"msgstr\": [\"When an incoming folder is selected, any conflicting files within it will also be overwritten.\"] }, \"When an incoming folder is selected, the content is written into the existing folder and a recursive conflict resolution is performed.\": { \"msgid\": \"When an incoming folder is selected, the content is written into the existing folder and a recursive conflict resolution is performed.\", \"msgstr\": [\"When an incoming folder is selected, the content is written into the existing folder and a recursive conflict resolution is performed.\"] }, \"Which files do you want to keep?\": { \"msgid\": \"Which files do you want to keep?\", \"msgstr\": [\"Which files do you want to keep?\"] }, \"You can either rename the file, skip this file or cancel the whole operation.\": { \"msgid\": \"You can either rename the file, skip this file or cancel the whole operation.\", \"msgstr\": [\"You can either rename the file, skip this file or cancel the whole operation.\"] }, \"You need to select at least one version of each file to continue.\": { \"msgid\": \"You need to select at least one version of each file to continue.\", \"msgstr\": [\"You need to select at least one version of each file to continue.\"] } } } } }, { \"locale\": \"eo\", \"json\": { \"charset\": \"utf-8\", \"headers\": { \"Last-Translator\": \"Transifex Bot <>, 2022\", \"Language-Team\": \"Esperanto (https://www.transifex.com/nextcloud/teams/64236/eo/)\", \"Content-Type\": \"text/plain; charset=UTF-8\", \"Language\": \"eo\", \"Plural-Forms\": \"nplurals=2; plural=(n != 1);\" }, \"translations\": { \"\": { \"\": { \"msgid\": \"\", \"comments\": { \"translator\": \"\\nTranslators:\\nTransifex Bot <>, 2022\\n\" }, \"msgstr\": [\"Last-Translator: Transifex Bot <>, 2022\\nLanguage-Team: Esperanto (https://www.transifex.com/nextcloud/teams/64236/eo/)\\nContent-Type: text/plain; charset=UTF-8\\nLanguage: eo\\nPlural-Forms: nplurals=2; plural=(n != 1);\\n\"] }, \"{estimate} seconds left\": { \"msgid\": \"{estimate} seconds left\", \"msgstr\": [\"\"] }, \"{hours} hours and {minutes} minutes left\": { \"msgid\": \"{hours} hours and {minutes} minutes left\", \"msgstr\": [\"\"] }, \"{minutes} minutes left\": { \"msgid\": \"{minutes} minutes left\", \"msgstr\": [\"\"] }, \"a few seconds left\": { \"msgid\": \"a few seconds left\", \"msgstr\": [\"\"] }, \"Add\": { \"msgid\": \"Add\", \"msgstr\": [\"\"] }, \"Cancel uploads\": { \"msgid\": \"Cancel uploads\", \"msgstr\": [\"\"] }, \"estimating time left\": { \"msgid\": \"estimating time left\", \"msgstr\": [\"\"] }, \"paused\": { \"msgid\": \"paused\", \"msgstr\": [\"\"] } } } } }, { \"locale\": \"es\", \"json\": { \"charset\": \"utf-8\", \"headers\": { \"Last-Translator\": \"Julio C. Ortega, 2025\", \"Language-Team\": \"Spanish (https://app.transifex.com/nextcloud/teams/64236/es/)\", \"Content-Type\": \"text/plain; charset=UTF-8\", \"Language\": \"es\", \"Plural-Forms\": \"nplurals=3; plural=n == 1 ? 0 : n != 0 && n % 1000000 == 0 ? 1 : 2;\" }, \"translations\": { \"\": { \"\": { \"msgid\": \"\", \"comments\": { \"translator\": \"\\nTranslators:\\nJoas Schilling, 2024\\nFranciscoFJ , 2024\\nJulio C. Ortega, 2025\\n\" }, \"msgstr\": [\"Last-Translator: Julio C. Ortega, 2025\\nLanguage-Team: Spanish (https://app.transifex.com/nextcloud/teams/64236/es/)\\nContent-Type: text/plain; charset=UTF-8\\nLanguage: es\\nPlural-Forms: nplurals=3; plural=n == 1 ? 0 : n != 0 && n % 1000000 == 0 ? 1 : 2;\\n\"] }, '\"{segment}\" is a forbidden file or folder name.': { \"msgid\": '\"{segment}\" is a forbidden file or folder name.', \"msgstr\": ['\"{segment}\" es un nombre de archivo o carpeta no permitido.'] }, '\"{segment}\" is a forbidden file type.': { \"msgid\": '\"{segment}\" is a forbidden file type.', \"msgstr\": ['\"{segment}\" es un tipo de archivo no permitido.'] }, '\"{segment}\" is not allowed inside a file or folder name.': { \"msgid\": '\"{segment}\" is not allowed inside a file or folder name.', \"msgstr\": ['\"{segment}\" no está permitido dentro del nombre de un archivo o carpeta.'] }, \"{count} file conflict\": { \"msgid\": \"{count} file conflict\", \"msgid_plural\": \"{count} files conflict\", \"msgstr\": [\"{count} conflicto de archivo\", \"{count} conflictos de archivo\", \"{count} conflictos de archivo\"] }, \"{count} file conflict in {dirname}\": { \"msgid\": \"{count} file conflict in {dirname}\", \"msgid_plural\": \"{count} file conflicts in {dirname}\", \"msgstr\": [\"{count} conflicto de archivo en {dirname}\", \"{count} conflictos de archivo en {dirname}\", \"{count} conflictos de archivo en {dirname}\"] }, \"{seconds} seconds left\": { \"msgid\": \"{seconds} seconds left\", \"msgid_plural\": \"{seconds} seconds left\", \"msgstr\": [\"queda {seconds} segundo\", \"quedan {seconds} segundos\", \"quedan {seconds} segundos\"] }, \"{time} left\": { \"msgid\": \"{time} left\", \"comments\": { \"extracted\": \"TRANSLATORS time has the format 00:00:00\" }, \"msgstr\": [\"{time} restante\"] }, \"a few seconds left\": { \"msgid\": \"a few seconds left\", \"msgstr\": [\"quedan unos segundos\"] }, \"assembling\": { \"msgid\": \"assembling\", \"msgstr\": [\"ensamblando\"] }, \"Cancel\": { \"msgid\": \"Cancel\", \"msgstr\": [\"Cancelar\"] }, \"Cancel the entire operation\": { \"msgid\": \"Cancel the entire operation\", \"msgstr\": [\"Cancelar toda la operación\"] }, \"Cancel uploads\": { \"msgid\": \"Cancel uploads\", \"msgstr\": [\"Cancelar subidas\"] }, \"Continue\": { \"msgid\": \"Continue\", \"msgstr\": [\"Continuar\"] }, \"Create new\": { \"msgid\": \"Create new\", \"msgstr\": [\"Crear nuevo\"] }, \"estimating time left\": { \"msgid\": \"estimating time left\", \"msgstr\": [\"estimando tiempo restante\"] }, \"Existing version\": { \"msgid\": \"Existing version\", \"msgstr\": [\"Versión existente\"] }, \"Failed to assemble the chunks together\": { \"msgid\": \"Failed to assemble the chunks together\", \"msgstr\": [\"Fallo al ensamblar todas las partes juntas\"] }, \"Failed to upload the file\": { \"msgid\": \"Failed to upload the file\", \"msgstr\": [\"Fallo al cargar el archivo\"] }, 'Filenames must not end with \"{segment}\".': { \"msgid\": 'Filenames must not end with \"{segment}\".', \"msgstr\": ['Los nombres de archivo no deben terminar en \"{segment}\".'] }, \"If you select both versions, the incoming file will have a number added to its name.\": { \"msgid\": \"If you select both versions, the incoming file will have a number added to its name.\", \"msgstr\": [\"Si selecciona ambas versionas, el archivo entrante le será agregado un número a su nombre.\"] }, \"Invalid filename\": { \"msgid\": \"Invalid filename\", \"msgstr\": [\"Nombre de archivo inválido\"] }, \"Last modified date unknown\": { \"msgid\": \"Last modified date unknown\", \"msgstr\": [\"Última fecha de modificación desconocida\"] }, \"New\": { \"msgid\": \"New\", \"msgstr\": [\"Nuevo\"] }, \"New filename\": { \"msgid\": \"New filename\", \"msgstr\": [\"Nuevo nombre de archivo\"] }, \"New version\": { \"msgid\": \"New version\", \"msgstr\": [\"Nueva versión\"] }, \"paused\": { \"msgid\": \"paused\", \"msgstr\": [\"pausado\"] }, \"Preview image\": { \"msgid\": \"Preview image\", \"msgstr\": [\"Previsualizar imagen\"] }, \"Rename\": { \"msgid\": \"Rename\", \"msgstr\": [\"Renombrar\"] }, \"Select all checkboxes\": { \"msgid\": \"Select all checkboxes\", \"msgstr\": [\"Seleccionar todas las casillas de verificación\"] }, \"Select all existing files\": { \"msgid\": \"Select all existing files\", \"msgstr\": [\"Seleccionar todos los archivos existentes\"] }, \"Select all new files\": { \"msgid\": \"Select all new files\", \"msgstr\": [\"Seleccionar todos los archivos nuevos\"] }, \"Skip\": { \"msgid\": \"Skip\", \"msgstr\": [\"Saltar\"] }, \"Skip {count} file\": { \"msgid\": \"Skip {count} file\", \"msgid_plural\": \"Skip {count} files\", \"msgstr\": [\"Omitir {count} archivo\", \"Omitir {count} archivos\", \"Omitir {count} archivos\"] }, \"Skip this file\": { \"msgid\": \"Skip this file\", \"msgstr\": [\"Omitir este archivo\"] }, \"Unknown size\": { \"msgid\": \"Unknown size\", \"msgstr\": [\"Tamaño desconocido\"] }, \"Upload\": { \"msgid\": \"Upload\", \"msgstr\": [\"Cargar\"] }, \"Upload files\": { \"msgid\": \"Upload files\", \"msgstr\": [\"Subir archivos\"] }, \"Upload folders\": { \"msgid\": \"Upload folders\", \"msgstr\": [\"Subir carpetas\"] }, \"Upload from device\": { \"msgid\": \"Upload from device\", \"msgstr\": [\"Subir desde dispositivo\"] }, \"Upload has been cancelled\": { \"msgid\": \"Upload has been cancelled\", \"msgstr\": [\"La subida ha sido cancelada\"] }, \"Upload has been skipped\": { \"msgid\": \"Upload has been skipped\", \"msgstr\": [\"La carga fue omitida\"] }, 'Upload of \"{folder}\" has been skipped': { \"msgid\": 'Upload of \"{folder}\" has been skipped', \"msgstr\": ['La carga de \"{folder}\" ha sido omitida'] }, \"Upload progress\": { \"msgid\": \"Upload progress\", \"msgstr\": [\"Progreso de la subida\"] }, \"When an incoming folder is selected, any conflicting files within it will also be overwritten.\": { \"msgid\": \"When an incoming folder is selected, any conflicting files within it will also be overwritten.\", \"msgstr\": [\"Cuando una carpeta entrante es seleccionada, cualquier de los archivos en conflictos también serán sobre-escritos.\"] }, \"When an incoming folder is selected, the content is written into the existing folder and a recursive conflict resolution is performed.\": { \"msgid\": \"When an incoming folder is selected, the content is written into the existing folder and a recursive conflict resolution is performed.\", \"msgstr\": [\"Cuando una carpeta entrante es seleccionada, el contenido es escrito en la carpeta existente y se realizará una resolución de conflictos recursiva.\"] }, \"Which files do you want to keep?\": { \"msgid\": \"Which files do you want to keep?\", \"msgstr\": [\"¿Qué archivos desea conservar?\"] }, \"You can either rename the file, skip this file or cancel the whole operation.\": { \"msgid\": \"You can either rename the file, skip this file or cancel the whole operation.\", \"msgstr\": [\"Puede o bien, renombrar el archivo, omitirlo, o, cancelar toda la operación.\"] }, \"You need to select at least one version of each file to continue.\": { \"msgid\": \"You need to select at least one version of each file to continue.\", \"msgstr\": [\"Debe seleccionar al menos una versión de cada archivo para continuar.\"] } } } } }, { \"locale\": \"es_419\", \"json\": { \"charset\": \"utf-8\", \"headers\": { \"Last-Translator\": \"ALEJANDRO CASTRO, 2022\", \"Language-Team\": \"Spanish (Latin America) (https://www.transifex.com/nextcloud/teams/64236/es_419/)\", \"Content-Type\": \"text/plain; charset=UTF-8\", \"Language\": \"es_419\", \"Plural-Forms\": \"nplurals=3; plural=n == 1 ? 0 : n != 0 && n % 1000000 == 0 ? 1 : 2;\" }, \"translations\": { \"\": { \"\": { \"msgid\": \"\", \"comments\": { \"translator\": \"\\nTranslators:\\nALEJANDRO CASTRO, 2022\\n\" }, \"msgstr\": [\"Last-Translator: ALEJANDRO CASTRO, 2022\\nLanguage-Team: Spanish (Latin America) (https://www.transifex.com/nextcloud/teams/64236/es_419/)\\nContent-Type: text/plain; charset=UTF-8\\nLanguage: es_419\\nPlural-Forms: nplurals=3; plural=n == 1 ? 0 : n != 0 && n % 1000000 == 0 ? 1 : 2;\\n\"] }, \"{seconds} seconds left\": { \"msgid\": \"{seconds} seconds left\", \"msgstr\": [\"{seconds} segundos restantes\"] }, \"{time} left\": { \"msgid\": \"{time} left\", \"comments\": { \"extracted\": \"time has the format 00:00:00\" }, \"msgstr\": [\"{tiempo} restante\"] }, \"a few seconds left\": { \"msgid\": \"a few seconds left\", \"msgstr\": [\"quedan pocos segundos\"] }, \"Add\": { \"msgid\": \"Add\", \"msgstr\": [\"agregar\"] }, \"Cancel uploads\": { \"msgid\": \"Cancel uploads\", \"msgstr\": [\"Cancelar subidas\"] }, \"estimating time left\": { \"msgid\": \"estimating time left\", \"msgstr\": [\"estimando tiempo restante\"] }, \"paused\": { \"msgid\": \"paused\", \"msgstr\": [\"pausado\"] }, \"Upload files\": { \"msgid\": \"Upload files\", \"msgstr\": [\"Subir archivos\"] } } } } }, { \"locale\": \"es_AR\", \"json\": { \"charset\": \"utf-8\", \"headers\": { \"Last-Translator\": \"Matías Campo Hoet , 2024\", \"Language-Team\": \"Spanish (Argentina) (https://app.transifex.com/nextcloud/teams/64236/es_AR/)\", \"Content-Type\": \"text/plain; charset=UTF-8\", \"Language\": \"es_AR\", \"Plural-Forms\": \"nplurals=3; plural=n == 1 ? 0 : n != 0 && n % 1000000 == 0 ? 1 : 2;\" }, \"translations\": { \"\": { \"\": { \"msgid\": \"\", \"comments\": { \"translator\": \"\\nTranslators:\\nJoas Schilling, 2024\\nMatías Campo Hoet , 2024\\n\" }, \"msgstr\": [\"Last-Translator: Matías Campo Hoet , 2024\\nLanguage-Team: Spanish (Argentina) (https://app.transifex.com/nextcloud/teams/64236/es_AR/)\\nContent-Type: text/plain; charset=UTF-8\\nLanguage: es_AR\\nPlural-Forms: nplurals=3; plural=n == 1 ? 0 : n != 0 && n % 1000000 == 0 ? 1 : 2;\\n\"] }, '\"{filename}\" contains invalid characters, how do you want to continue?': { \"msgid\": '\"{filename}\" contains invalid characters, how do you want to continue?', \"msgstr\": ['\"{filename}\" contiene caracteres inválidos, ¿cómo desea continuar?'] }, \"{count} file conflict\": { \"msgid\": \"{count} file conflict\", \"msgid_plural\": \"{count} files conflict\", \"msgstr\": [\"{count} conflicto de archivo\", \"{count} conflictos de archivo\", \"{count} conflictos de archivo\"] }, \"{count} file conflict in {dirname}\": { \"msgid\": \"{count} file conflict in {dirname}\", \"msgid_plural\": \"{count} file conflicts in {dirname}\", \"msgstr\": [\"{count} conflicto de archivo en {dirname}\", \"{count} conflictos de archivo en {dirname}\", \"{count} conflictos de archivo en {dirname}\"] }, \"{seconds} seconds left\": { \"msgid\": \"{seconds} seconds left\", \"msgstr\": [\"{seconds} segundos restantes\"] }, \"{time} left\": { \"msgid\": \"{time} left\", \"comments\": { \"extracted\": \"TRANSLATORS time has the format 00:00:00\" }, \"msgstr\": [\"{time} restante\"] }, \"a few seconds left\": { \"msgid\": \"a few seconds left\", \"msgstr\": [\"quedan unos segundos\"] }, \"Cancel\": { \"msgid\": \"Cancel\", \"msgstr\": [\"Cancelar\"] }, \"Cancel the entire operation\": { \"msgid\": \"Cancel the entire operation\", \"msgstr\": [\"Cancelar toda la operación\"] }, \"Cancel uploads\": { \"msgid\": \"Cancel uploads\", \"msgstr\": [\"Cancelar subidas\"] }, \"Continue\": { \"msgid\": \"Continue\", \"msgstr\": [\"Continuar\"] }, \"Create new\": { \"msgid\": \"Create new\", \"msgstr\": [\"Crear nuevo\"] }, \"estimating time left\": { \"msgid\": \"estimating time left\", \"msgstr\": [\"estimando tiempo restante\"] }, \"Existing version\": { \"msgid\": \"Existing version\", \"msgstr\": [\"Versión existente\"] }, \"If you select both versions, the incoming file will have a number added to its name.\": { \"msgid\": \"If you select both versions, the incoming file will have a number added to its name.\", \"msgstr\": [\"Si selecciona ambas versionas, se agregará un número al nombre del archivo entrante.\"] }, \"Invalid file name\": { \"msgid\": \"Invalid file name\", \"msgstr\": [\"Nombre de archivo inválido\"] }, \"Last modified date unknown\": { \"msgid\": \"Last modified date unknown\", \"msgstr\": [\"Fecha de última modificación desconocida\"] }, \"New\": { \"msgid\": \"New\", \"msgstr\": [\"Nuevo\"] }, \"New version\": { \"msgid\": \"New version\", \"msgstr\": [\"Nueva versión\"] }, \"paused\": { \"msgid\": \"paused\", \"msgstr\": [\"pausado\"] }, \"Preview image\": { \"msgid\": \"Preview image\", \"msgstr\": [\"Vista previa de imagen\"] }, \"Rename\": { \"msgid\": \"Rename\", \"msgstr\": [\"Renombrar\"] }, \"Select all checkboxes\": { \"msgid\": \"Select all checkboxes\", \"msgstr\": [\"Seleccionar todas las casillas de verificación\"] }, \"Select all existing files\": { \"msgid\": \"Select all existing files\", \"msgstr\": [\"Seleccionar todos los archivos existentes\"] }, \"Select all new files\": { \"msgid\": \"Select all new files\", \"msgstr\": [\"Seleccionar todos los archivos nuevos\"] }, \"Skip\": { \"msgid\": \"Skip\", \"msgstr\": [\"Omitir\"] }, \"Skip this file\": { \"msgid\": \"Skip this file\", \"msgid_plural\": \"Skip {count} files\", \"msgstr\": [\"Omitir este archivo\", \"Omitir {count} archivos\", \"Omitir {count} archivos\"] }, \"Unknown size\": { \"msgid\": \"Unknown size\", \"msgstr\": [\"Tamaño desconocido\"] }, \"Upload files\": { \"msgid\": \"Upload files\", \"msgstr\": [\"Cargar archivos\"] }, \"Upload folders\": { \"msgid\": \"Upload folders\", \"msgstr\": [\"Cargar carpetas\"] }, \"Upload from device\": { \"msgid\": \"Upload from device\", \"msgstr\": [\"Cargar desde dispositivo\"] }, \"Upload has been cancelled\": { \"msgid\": \"Upload has been cancelled\", \"msgstr\": [\"Carga cancelada\"] }, \"Upload progress\": { \"msgid\": \"Upload progress\", \"msgstr\": [\"Progreso de la carga\"] }, \"When an incoming folder is selected, any conflicting files within it will also be overwritten.\": { \"msgid\": \"When an incoming folder is selected, any conflicting files within it will also be overwritten.\", \"msgstr\": [\"Cuando una carpeta entrante es seleccionada, cualquier archivo en conflicto dentro de la misma también serán sobreescritos.\"] }, \"When an incoming folder is selected, the content is written into the existing folder and a recursive conflict resolution is performed.\": { \"msgid\": \"When an incoming folder is selected, the content is written into the existing folder and a recursive conflict resolution is performed.\", \"msgstr\": [\"Cuando una carpeta entrante es seleccionada, el contenido se escribe en la carpeta existente y se realiza una resolución de conflictos recursiva.\"] }, \"Which files do you want to keep?\": { \"msgid\": \"Which files do you want to keep?\", \"msgstr\": [\"¿Qué archivos desea conservar?\"] }, \"You need to select at least one version of each file to continue.\": { \"msgid\": \"You need to select at least one version of each file to continue.\", \"msgstr\": [\"Debe seleccionar al menos una versión de cada archivo para continuar.\"] } } } } }, { \"locale\": \"es_CL\", \"json\": { \"charset\": \"utf-8\", \"headers\": { \"Last-Translator\": \"Transifex Bot <>, 2022\", \"Language-Team\": \"Spanish (Chile) (https://www.transifex.com/nextcloud/teams/64236/es_CL/)\", \"Content-Type\": \"text/plain; charset=UTF-8\", \"Language\": \"es_CL\", \"Plural-Forms\": \"nplurals=3; plural=n == 1 ? 0 : n != 0 && n % 1000000 == 0 ? 1 : 2;\" }, \"translations\": { \"\": { \"\": { \"msgid\": \"\", \"comments\": { \"translator\": \"\\nTranslators:\\nTransifex Bot <>, 2022\\n\" }, \"msgstr\": [\"Last-Translator: Transifex Bot <>, 2022\\nLanguage-Team: Spanish (Chile) (https://www.transifex.com/nextcloud/teams/64236/es_CL/)\\nContent-Type: text/plain; charset=UTF-8\\nLanguage: es_CL\\nPlural-Forms: nplurals=3; plural=n == 1 ? 0 : n != 0 && n % 1000000 == 0 ? 1 : 2;\\n\"] }, \"{estimate} seconds left\": { \"msgid\": \"{estimate} seconds left\", \"msgstr\": [\"\"] }, \"{hours} hours and {minutes} minutes left\": { \"msgid\": \"{hours} hours and {minutes} minutes left\", \"msgstr\": [\"\"] }, \"{minutes} minutes left\": { \"msgid\": \"{minutes} minutes left\", \"msgstr\": [\"\"] }, \"a few seconds left\": { \"msgid\": \"a few seconds left\", \"msgstr\": [\"\"] }, \"Add\": { \"msgid\": \"Add\", \"msgstr\": [\"\"] }, \"Cancel uploads\": { \"msgid\": \"Cancel uploads\", \"msgstr\": [\"\"] }, \"estimating time left\": { \"msgid\": \"estimating time left\", \"msgstr\": [\"\"] }, \"paused\": { \"msgid\": \"paused\", \"msgstr\": [\"\"] } } } } }, { \"locale\": \"es_CO\", \"json\": { \"charset\": \"utf-8\", \"headers\": { \"Last-Translator\": \"Transifex Bot <>, 2022\", \"Language-Team\": \"Spanish (Colombia) (https://www.transifex.com/nextcloud/teams/64236/es_CO/)\", \"Content-Type\": \"text/plain; charset=UTF-8\", \"Language\": \"es_CO\", \"Plural-Forms\": \"nplurals=3; plural=n == 1 ? 0 : n != 0 && n % 1000000 == 0 ? 1 : 2;\" }, \"translations\": { \"\": { \"\": { \"msgid\": \"\", \"comments\": { \"translator\": \"\\nTranslators:\\nTransifex Bot <>, 2022\\n\" }, \"msgstr\": [\"Last-Translator: Transifex Bot <>, 2022\\nLanguage-Team: Spanish (Colombia) (https://www.transifex.com/nextcloud/teams/64236/es_CO/)\\nContent-Type: text/plain; charset=UTF-8\\nLanguage: es_CO\\nPlural-Forms: nplurals=3; plural=n == 1 ? 0 : n != 0 && n % 1000000 == 0 ? 1 : 2;\\n\"] }, \"{estimate} seconds left\": { \"msgid\": \"{estimate} seconds left\", \"msgstr\": [\"\"] }, \"{hours} hours and {minutes} minutes left\": { \"msgid\": \"{hours} hours and {minutes} minutes left\", \"msgstr\": [\"\"] }, \"{minutes} minutes left\": { \"msgid\": \"{minutes} minutes left\", \"msgstr\": [\"\"] }, \"a few seconds left\": { \"msgid\": \"a few seconds left\", \"msgstr\": [\"\"] }, \"Add\": { \"msgid\": \"Add\", \"msgstr\": [\"\"] }, \"Cancel uploads\": { \"msgid\": \"Cancel uploads\", \"msgstr\": [\"\"] }, \"estimating time left\": { \"msgid\": \"estimating time left\", \"msgstr\": [\"\"] }, \"paused\": { \"msgid\": \"paused\", \"msgstr\": [\"\"] } } } } }, { \"locale\": \"es_CR\", \"json\": { \"charset\": \"utf-8\", \"headers\": { \"Last-Translator\": \"Transifex Bot <>, 2022\", \"Language-Team\": \"Spanish (Costa Rica) (https://www.transifex.com/nextcloud/teams/64236/es_CR/)\", \"Content-Type\": \"text/plain; charset=UTF-8\", \"Language\": \"es_CR\", \"Plural-Forms\": \"nplurals=3; plural=n == 1 ? 0 : n != 0 && n % 1000000 == 0 ? 1 : 2;\" }, \"translations\": { \"\": { \"\": { \"msgid\": \"\", \"comments\": { \"translator\": \"\\nTranslators:\\nTransifex Bot <>, 2022\\n\" }, \"msgstr\": [\"Last-Translator: Transifex Bot <>, 2022\\nLanguage-Team: Spanish (Costa Rica) (https://www.transifex.com/nextcloud/teams/64236/es_CR/)\\nContent-Type: text/plain; charset=UTF-8\\nLanguage: es_CR\\nPlural-Forms: nplurals=3; plural=n == 1 ? 0 : n != 0 && n % 1000000 == 0 ? 1 : 2;\\n\"] }, \"{estimate} seconds left\": { \"msgid\": \"{estimate} seconds left\", \"msgstr\": [\"\"] }, \"{hours} hours and {minutes} minutes left\": { \"msgid\": \"{hours} hours and {minutes} minutes left\", \"msgstr\": [\"\"] }, \"{minutes} minutes left\": { \"msgid\": \"{minutes} minutes left\", \"msgstr\": [\"\"] }, \"a few seconds left\": { \"msgid\": \"a few seconds left\", \"msgstr\": [\"\"] }, \"Add\": { \"msgid\": \"Add\", \"msgstr\": [\"\"] }, \"Cancel uploads\": { \"msgid\": \"Cancel uploads\", \"msgstr\": [\"\"] }, \"estimating time left\": { \"msgid\": \"estimating time left\", \"msgstr\": [\"\"] }, \"paused\": { \"msgid\": \"paused\", \"msgstr\": [\"\"] } } } } }, { \"locale\": \"es_DO\", \"json\": { \"charset\": \"utf-8\", \"headers\": { \"Last-Translator\": \"Transifex Bot <>, 2022\", \"Language-Team\": \"Spanish (Dominican Republic) (https://www.transifex.com/nextcloud/teams/64236/es_DO/)\", \"Content-Type\": \"text/plain; charset=UTF-8\", \"Language\": \"es_DO\", \"Plural-Forms\": \"nplurals=3; plural=n == 1 ? 0 : n != 0 && n % 1000000 == 0 ? 1 : 2;\" }, \"translations\": { \"\": { \"\": { \"msgid\": \"\", \"comments\": { \"translator\": \"\\nTranslators:\\nTransifex Bot <>, 2022\\n\" }, \"msgstr\": [\"Last-Translator: Transifex Bot <>, 2022\\nLanguage-Team: Spanish (Dominican Republic) (https://www.transifex.com/nextcloud/teams/64236/es_DO/)\\nContent-Type: text/plain; charset=UTF-8\\nLanguage: es_DO\\nPlural-Forms: nplurals=3; plural=n == 1 ? 0 : n != 0 && n % 1000000 == 0 ? 1 : 2;\\n\"] }, \"{estimate} seconds left\": { \"msgid\": \"{estimate} seconds left\", \"msgstr\": [\"\"] }, \"{hours} hours and {minutes} minutes left\": { \"msgid\": \"{hours} hours and {minutes} minutes left\", \"msgstr\": [\"\"] }, \"{minutes} minutes left\": { \"msgid\": \"{minutes} minutes left\", \"msgstr\": [\"\"] }, \"a few seconds left\": { \"msgid\": \"a few seconds left\", \"msgstr\": [\"\"] }, \"Add\": { \"msgid\": \"Add\", \"msgstr\": [\"\"] }, \"Cancel uploads\": { \"msgid\": \"Cancel uploads\", \"msgstr\": [\"\"] }, \"estimating time left\": { \"msgid\": \"estimating time left\", \"msgstr\": [\"\"] }, \"paused\": { \"msgid\": \"paused\", \"msgstr\": [\"\"] } } } } }, { \"locale\": \"es_EC\", \"json\": { \"charset\": \"utf-8\", \"headers\": { \"Last-Translator\": \"Transifex Bot <>, 2022\", \"Language-Team\": \"Spanish (Ecuador) (https://www.transifex.com/nextcloud/teams/64236/es_EC/)\", \"Content-Type\": \"text/plain; charset=UTF-8\", \"Language\": \"es_EC\", \"Plural-Forms\": \"nplurals=3; plural=n == 1 ? 0 : n != 0 && n % 1000000 == 0 ? 1 : 2;\" }, \"translations\": { \"\": { \"\": { \"msgid\": \"\", \"comments\": { \"translator\": \"\\nTranslators:\\nTransifex Bot <>, 2022\\n\" }, \"msgstr\": [\"Last-Translator: Transifex Bot <>, 2022\\nLanguage-Team: Spanish (Ecuador) (https://www.transifex.com/nextcloud/teams/64236/es_EC/)\\nContent-Type: text/plain; charset=UTF-8\\nLanguage: es_EC\\nPlural-Forms: nplurals=3; plural=n == 1 ? 0 : n != 0 && n % 1000000 == 0 ? 1 : 2;\\n\"] }, \"{estimate} seconds left\": { \"msgid\": \"{estimate} seconds left\", \"msgstr\": [\"\"] }, \"{hours} hours and {minutes} minutes left\": { \"msgid\": \"{hours} hours and {minutes} minutes left\", \"msgstr\": [\"\"] }, \"{minutes} minutes left\": { \"msgid\": \"{minutes} minutes left\", \"msgstr\": [\"\"] }, \"a few seconds left\": { \"msgid\": \"a few seconds left\", \"msgstr\": [\"\"] }, \"Add\": { \"msgid\": \"Add\", \"msgstr\": [\"\"] }, \"Cancel uploads\": { \"msgid\": \"Cancel uploads\", \"msgstr\": [\"\"] }, \"estimating time left\": { \"msgid\": \"estimating time left\", \"msgstr\": [\"\"] }, \"paused\": { \"msgid\": \"paused\", \"msgstr\": [\"\"] } } } } }, { \"locale\": \"es_GT\", \"json\": { \"charset\": \"utf-8\", \"headers\": { \"Last-Translator\": \"Transifex Bot <>, 2022\", \"Language-Team\": \"Spanish (Guatemala) (https://www.transifex.com/nextcloud/teams/64236/es_GT/)\", \"Content-Type\": \"text/plain; charset=UTF-8\", \"Language\": \"es_GT\", \"Plural-Forms\": \"nplurals=3; plural=n == 1 ? 0 : n != 0 && n % 1000000 == 0 ? 1 : 2;\" }, \"translations\": { \"\": { \"\": { \"msgid\": \"\", \"comments\": { \"translator\": \"\\nTranslators:\\nTransifex Bot <>, 2022\\n\" }, \"msgstr\": [\"Last-Translator: Transifex Bot <>, 2022\\nLanguage-Team: Spanish (Guatemala) (https://www.transifex.com/nextcloud/teams/64236/es_GT/)\\nContent-Type: text/plain; charset=UTF-8\\nLanguage: es_GT\\nPlural-Forms: nplurals=3; plural=n == 1 ? 0 : n != 0 && n % 1000000 == 0 ? 1 : 2;\\n\"] }, \"{estimate} seconds left\": { \"msgid\": \"{estimate} seconds left\", \"msgstr\": [\"\"] }, \"{hours} hours and {minutes} minutes left\": { \"msgid\": \"{hours} hours and {minutes} minutes left\", \"msgstr\": [\"\"] }, \"{minutes} minutes left\": { \"msgid\": \"{minutes} minutes left\", \"msgstr\": [\"\"] }, \"a few seconds left\": { \"msgid\": \"a few seconds left\", \"msgstr\": [\"\"] }, \"Add\": { \"msgid\": \"Add\", \"msgstr\": [\"\"] }, \"Cancel uploads\": { \"msgid\": \"Cancel uploads\", \"msgstr\": [\"\"] }, \"estimating time left\": { \"msgid\": \"estimating time left\", \"msgstr\": [\"\"] }, \"paused\": { \"msgid\": \"paused\", \"msgstr\": [\"\"] } } } } }, { \"locale\": \"es_HN\", \"json\": { \"charset\": \"utf-8\", \"headers\": { \"Last-Translator\": \"Transifex Bot <>, 2022\", \"Language-Team\": \"Spanish (Honduras) (https://www.transifex.com/nextcloud/teams/64236/es_HN/)\", \"Content-Type\": \"text/plain; charset=UTF-8\", \"Language\": \"es_HN\", \"Plural-Forms\": \"nplurals=3; plural=n == 1 ? 0 : n != 0 && n % 1000000 == 0 ? 1 : 2;\" }, \"translations\": { \"\": { \"\": { \"msgid\": \"\", \"comments\": { \"translator\": \"\\nTranslators:\\nTransifex Bot <>, 2022\\n\" }, \"msgstr\": [\"Last-Translator: Transifex Bot <>, 2022\\nLanguage-Team: Spanish (Honduras) (https://www.transifex.com/nextcloud/teams/64236/es_HN/)\\nContent-Type: text/plain; charset=UTF-8\\nLanguage: es_HN\\nPlural-Forms: nplurals=3; plural=n == 1 ? 0 : n != 0 && n % 1000000 == 0 ? 1 : 2;\\n\"] }, \"{estimate} seconds left\": { \"msgid\": \"{estimate} seconds left\", \"msgstr\": [\"\"] }, \"{hours} hours and {minutes} minutes left\": { \"msgid\": \"{hours} hours and {minutes} minutes left\", \"msgstr\": [\"\"] }, \"{minutes} minutes left\": { \"msgid\": \"{minutes} minutes left\", \"msgstr\": [\"\"] }, \"a few seconds left\": { \"msgid\": \"a few seconds left\", \"msgstr\": [\"\"] }, \"Add\": { \"msgid\": \"Add\", \"msgstr\": [\"\"] }, \"Cancel uploads\": { \"msgid\": \"Cancel uploads\", \"msgstr\": [\"\"] }, \"estimating time left\": { \"msgid\": \"estimating time left\", \"msgstr\": [\"\"] }, \"paused\": { \"msgid\": \"paused\", \"msgstr\": [\"\"] } } } } }, { \"locale\": \"es_MX\", \"json\": { \"charset\": \"utf-8\", \"headers\": { \"Last-Translator\": \"Jehu Marcos Herrera Puentes, 2024\", \"Language-Team\": \"Spanish (Mexico) (https://app.transifex.com/nextcloud/teams/64236/es_MX/)\", \"Content-Type\": \"text/plain; charset=UTF-8\", \"Language\": \"es_MX\", \"Plural-Forms\": \"nplurals=3; plural=n == 1 ? 0 : n != 0 && n % 1000000 == 0 ? 1 : 2;\" }, \"translations\": { \"\": { \"\": { \"msgid\": \"\", \"comments\": { \"translator\": \"\\nTranslators:\\nJoas Schilling, 2024\\nJehu Marcos Herrera Puentes, 2024\\n\" }, \"msgstr\": [\"Last-Translator: Jehu Marcos Herrera Puentes, 2024\\nLanguage-Team: Spanish (Mexico) (https://app.transifex.com/nextcloud/teams/64236/es_MX/)\\nContent-Type: text/plain; charset=UTF-8\\nLanguage: es_MX\\nPlural-Forms: nplurals=3; plural=n == 1 ? 0 : n != 0 && n % 1000000 == 0 ? 1 : 2;\\n\"] }, '\"{filename}\" contains invalid characters, how do you want to continue?': { \"msgid\": '\"{filename}\" contains invalid characters, how do you want to continue?', \"msgstr\": ['\"{filename}\" contiene caracteres inválidos, ¿Cómo desea continuar?'] }, \"{count} file conflict\": { \"msgid\": \"{count} file conflict\", \"msgid_plural\": \"{count} files conflict\", \"msgstr\": [\"{count} conflicto de archivo\", \"{count} conflictos de archivo\", \"{count} archivos en conflicto\"] }, \"{count} file conflict in {dirname}\": { \"msgid\": \"{count} file conflict in {dirname}\", \"msgid_plural\": \"{count} file conflicts in {dirname}\", \"msgstr\": [\"{count} archivo en conflicto en {dirname}\", \"{count} archivos en conflicto en {dirname}\", \"{count} archivo en conflicto en {dirname}\"] }, \"{seconds} seconds left\": { \"msgid\": \"{seconds} seconds left\", \"msgstr\": [\"{seconds} segundos restantes\"] }, \"{time} left\": { \"msgid\": \"{time} left\", \"comments\": { \"extracted\": \"TRANSLATORS time has the format 00:00:00\" }, \"msgstr\": [\"{tiempo} restante\"] }, \"a few seconds left\": { \"msgid\": \"a few seconds left\", \"msgstr\": [\"quedan pocos segundos\"] }, \"Cancel\": { \"msgid\": \"Cancel\", \"msgstr\": [\"Cancelar\"] }, \"Cancel the entire operation\": { \"msgid\": \"Cancel the entire operation\", \"msgstr\": [\"Cancelar toda la operación\"] }, \"Cancel uploads\": { \"msgid\": \"Cancel uploads\", \"msgstr\": [\"Cancelar subidas\"] }, \"Continue\": { \"msgid\": \"Continue\", \"msgstr\": [\"Continuar\"] }, \"Create new\": { \"msgid\": \"Create new\", \"msgstr\": [\"Crear nuevo\"] }, \"estimating time left\": { \"msgid\": \"estimating time left\", \"msgstr\": [\"estimando tiempo restante\"] }, \"Existing version\": { \"msgid\": \"Existing version\", \"msgstr\": [\"Versión existente\"] }, \"If you select both versions, the incoming file will have a number added to its name.\": { \"msgid\": \"If you select both versions, the incoming file will have a number added to its name.\", \"msgstr\": [\"Si selecciona ambas versionas, se agregará un número al nombre del archivo entrante.\"] }, \"Invalid file name\": { \"msgid\": \"Invalid file name\", \"msgstr\": [\"Nombre de archivo inválido\"] }, \"Last modified date unknown\": { \"msgid\": \"Last modified date unknown\", \"msgstr\": [\"Fecha de última modificación desconocida\"] }, \"New\": { \"msgid\": \"New\", \"msgstr\": [\"Nuevo\"] }, \"New version\": { \"msgid\": \"New version\", \"msgstr\": [\"Nueva versión\"] }, \"paused\": { \"msgid\": \"paused\", \"msgstr\": [\"en pausa\"] }, \"Preview image\": { \"msgid\": \"Preview image\", \"msgstr\": [\"Previsualizar imagen\"] }, \"Rename\": { \"msgid\": \"Rename\", \"msgstr\": [\"Renombrar\"] }, \"Select all checkboxes\": { \"msgid\": \"Select all checkboxes\", \"msgstr\": [\"Seleccionar todas las casillas de verificación\"] }, \"Select all existing files\": { \"msgid\": \"Select all existing files\", \"msgstr\": [\"Seleccionar todos los archivos existentes\"] }, \"Select all new files\": { \"msgid\": \"Select all new files\", \"msgstr\": [\"Seleccionar todos los archivos nuevos\"] }, \"Skip\": { \"msgid\": \"Skip\", \"msgstr\": [\"Omitir\"] }, \"Skip this file\": { \"msgid\": \"Skip this file\", \"msgid_plural\": \"Skip {count} files\", \"msgstr\": [\"Omitir este archivo\", \"Omitir {count} archivos\", \"Omitir {count} archivos\"] }, \"Unknown size\": { \"msgid\": \"Unknown size\", \"msgstr\": [\"Tamaño desconocido\"] }, \"Upload files\": { \"msgid\": \"Upload files\", \"msgstr\": [\"Subir archivos\"] }, \"Upload folders\": { \"msgid\": \"Upload folders\", \"msgstr\": [\"Subir carpetas\"] }, \"Upload from device\": { \"msgid\": \"Upload from device\", \"msgstr\": [\"Subir desde dispositivo\"] }, \"Upload has been cancelled\": { \"msgid\": \"Upload has been cancelled\", \"msgstr\": [\"La subida ha sido cancelada\"] }, \"Upload progress\": { \"msgid\": \"Upload progress\", \"msgstr\": [\"Progreso de la subida\"] }, \"When an incoming folder is selected, any conflicting files within it will also be overwritten.\": { \"msgid\": \"When an incoming folder is selected, any conflicting files within it will also be overwritten.\", \"msgstr\": [\"Cuando una carpeta entrante es seleccionada, cualquier archivo en conflicto dentro de la misma también será sobrescrito.\"] }, \"When an incoming folder is selected, the content is written into the existing folder and a recursive conflict resolution is performed.\": { \"msgid\": \"When an incoming folder is selected, the content is written into the existing folder and a recursive conflict resolution is performed.\", \"msgstr\": [\"Cuando una carpeta entrante es seleccionada, el contenido se escribe en la carpeta existente y se realiza una resolución de conflictos recursiva.\"] }, \"Which files do you want to keep?\": { \"msgid\": \"Which files do you want to keep?\", \"msgstr\": [\"¿Cuáles archivos desea conservar?\"] }, \"You need to select at least one version of each file to continue.\": { \"msgid\": \"You need to select at least one version of each file to continue.\", \"msgstr\": [\"Debe seleccionar al menos una versión de cada archivo para continuar.\"] } } } } }, { \"locale\": \"es_NI\", \"json\": { \"charset\": \"utf-8\", \"headers\": { \"Last-Translator\": \"Transifex Bot <>, 2022\", \"Language-Team\": \"Spanish (Nicaragua) (https://www.transifex.com/nextcloud/teams/64236/es_NI/)\", \"Content-Type\": \"text/plain; charset=UTF-8\", \"Language\": \"es_NI\", \"Plural-Forms\": \"nplurals=3; plural=n == 1 ? 0 : n != 0 && n % 1000000 == 0 ? 1 : 2;\" }, \"translations\": { \"\": { \"\": { \"msgid\": \"\", \"comments\": { \"translator\": \"\\nTranslators:\\nTransifex Bot <>, 2022\\n\" }, \"msgstr\": [\"Last-Translator: Transifex Bot <>, 2022\\nLanguage-Team: Spanish (Nicaragua) (https://www.transifex.com/nextcloud/teams/64236/es_NI/)\\nContent-Type: text/plain; charset=UTF-8\\nLanguage: es_NI\\nPlural-Forms: nplurals=3; plural=n == 1 ? 0 : n != 0 && n % 1000000 == 0 ? 1 : 2;\\n\"] }, \"{estimate} seconds left\": { \"msgid\": \"{estimate} seconds left\", \"msgstr\": [\"\"] }, \"{hours} hours and {minutes} minutes left\": { \"msgid\": \"{hours} hours and {minutes} minutes left\", \"msgstr\": [\"\"] }, \"{minutes} minutes left\": { \"msgid\": \"{minutes} minutes left\", \"msgstr\": [\"\"] }, \"a few seconds left\": { \"msgid\": \"a few seconds left\", \"msgstr\": [\"\"] }, \"Add\": { \"msgid\": \"Add\", \"msgstr\": [\"\"] }, \"Cancel uploads\": { \"msgid\": \"Cancel uploads\", \"msgstr\": [\"\"] }, \"estimating time left\": { \"msgid\": \"estimating time left\", \"msgstr\": [\"\"] }, \"paused\": { \"msgid\": \"paused\", \"msgstr\": [\"\"] } } } } }, { \"locale\": \"es_PA\", \"json\": { \"charset\": \"utf-8\", \"headers\": { \"Last-Translator\": \"Transifex Bot <>, 2022\", \"Language-Team\": \"Spanish (Panama) (https://www.transifex.com/nextcloud/teams/64236/es_PA/)\", \"Content-Type\": \"text/plain; charset=UTF-8\", \"Language\": \"es_PA\", \"Plural-Forms\": \"nplurals=3; plural=n == 1 ? 0 : n != 0 && n % 1000000 == 0 ? 1 : 2;\" }, \"translations\": { \"\": { \"\": { \"msgid\": \"\", \"comments\": { \"translator\": \"\\nTranslators:\\nTransifex Bot <>, 2022\\n\" }, \"msgstr\": [\"Last-Translator: Transifex Bot <>, 2022\\nLanguage-Team: Spanish (Panama) (https://www.transifex.com/nextcloud/teams/64236/es_PA/)\\nContent-Type: text/plain; charset=UTF-8\\nLanguage: es_PA\\nPlural-Forms: nplurals=3; plural=n == 1 ? 0 : n != 0 && n % 1000000 == 0 ? 1 : 2;\\n\"] }, \"{estimate} seconds left\": { \"msgid\": \"{estimate} seconds left\", \"msgstr\": [\"\"] }, \"{hours} hours and {minutes} minutes left\": { \"msgid\": \"{hours} hours and {minutes} minutes left\", \"msgstr\": [\"\"] }, \"{minutes} minutes left\": { \"msgid\": \"{minutes} minutes left\", \"msgstr\": [\"\"] }, \"a few seconds left\": { \"msgid\": \"a few seconds left\", \"msgstr\": [\"\"] }, \"Add\": { \"msgid\": \"Add\", \"msgstr\": [\"\"] }, \"Cancel uploads\": { \"msgid\": \"Cancel uploads\", \"msgstr\": [\"\"] }, \"estimating time left\": { \"msgid\": \"estimating time left\", \"msgstr\": [\"\"] }, \"paused\": { \"msgid\": \"paused\", \"msgstr\": [\"\"] } } } } }, { \"locale\": \"es_PE\", \"json\": { \"charset\": \"utf-8\", \"headers\": { \"Last-Translator\": \"Transifex Bot <>, 2022\", \"Language-Team\": \"Spanish (Peru) (https://www.transifex.com/nextcloud/teams/64236/es_PE/)\", \"Content-Type\": \"text/plain; charset=UTF-8\", \"Language\": \"es_PE\", \"Plural-Forms\": \"nplurals=3; plural=n == 1 ? 0 : n != 0 && n % 1000000 == 0 ? 1 : 2;\" }, \"translations\": { \"\": { \"\": { \"msgid\": \"\", \"comments\": { \"translator\": \"\\nTranslators:\\nTransifex Bot <>, 2022\\n\" }, \"msgstr\": [\"Last-Translator: Transifex Bot <>, 2022\\nLanguage-Team: Spanish (Peru) (https://www.transifex.com/nextcloud/teams/64236/es_PE/)\\nContent-Type: text/plain; charset=UTF-8\\nLanguage: es_PE\\nPlural-Forms: nplurals=3; plural=n == 1 ? 0 : n != 0 && n % 1000000 == 0 ? 1 : 2;\\n\"] }, \"{estimate} seconds left\": { \"msgid\": \"{estimate} seconds left\", \"msgstr\": [\"\"] }, \"{hours} hours and {minutes} minutes left\": { \"msgid\": \"{hours} hours and {minutes} minutes left\", \"msgstr\": [\"\"] }, \"{minutes} minutes left\": { \"msgid\": \"{minutes} minutes left\", \"msgstr\": [\"\"] }, \"a few seconds left\": { \"msgid\": \"a few seconds left\", \"msgstr\": [\"\"] }, \"Add\": { \"msgid\": \"Add\", \"msgstr\": [\"\"] }, \"Cancel uploads\": { \"msgid\": \"Cancel uploads\", \"msgstr\": [\"\"] }, \"estimating time left\": { \"msgid\": \"estimating time left\", \"msgstr\": [\"\"] }, \"paused\": { \"msgid\": \"paused\", \"msgstr\": [\"\"] } } } } }, { \"locale\": \"es_PR\", \"json\": { \"charset\": \"utf-8\", \"headers\": { \"Last-Translator\": \"Transifex Bot <>, 2022\", \"Language-Team\": \"Spanish (Puerto Rico) (https://www.transifex.com/nextcloud/teams/64236/es_PR/)\", \"Content-Type\": \"text/plain; charset=UTF-8\", \"Language\": \"es_PR\", \"Plural-Forms\": \"nplurals=3; plural=n == 1 ? 0 : n != 0 && n % 1000000 == 0 ? 1 : 2;\" }, \"translations\": { \"\": { \"\": { \"msgid\": \"\", \"comments\": { \"translator\": \"\\nTranslators:\\nTransifex Bot <>, 2022\\n\" }, \"msgstr\": [\"Last-Translator: Transifex Bot <>, 2022\\nLanguage-Team: Spanish (Puerto Rico) (https://www.transifex.com/nextcloud/teams/64236/es_PR/)\\nContent-Type: text/plain; charset=UTF-8\\nLanguage: es_PR\\nPlural-Forms: nplurals=3; plural=n == 1 ? 0 : n != 0 && n % 1000000 == 0 ? 1 : 2;\\n\"] }, \"{estimate} seconds left\": { \"msgid\": \"{estimate} seconds left\", \"msgstr\": [\"\"] }, \"{hours} hours and {minutes} minutes left\": { \"msgid\": \"{hours} hours and {minutes} minutes left\", \"msgstr\": [\"\"] }, \"{minutes} minutes left\": { \"msgid\": \"{minutes} minutes left\", \"msgstr\": [\"\"] }, \"a few seconds left\": { \"msgid\": \"a few seconds left\", \"msgstr\": [\"\"] }, \"Add\": { \"msgid\": \"Add\", \"msgstr\": [\"\"] }, \"Cancel uploads\": { \"msgid\": \"Cancel uploads\", \"msgstr\": [\"\"] }, \"estimating time left\": { \"msgid\": \"estimating time left\", \"msgstr\": [\"\"] }, \"paused\": { \"msgid\": \"paused\", \"msgstr\": [\"\"] } } } } }, { \"locale\": \"es_PY\", \"json\": { \"charset\": \"utf-8\", \"headers\": { \"Last-Translator\": \"Transifex Bot <>, 2022\", \"Language-Team\": \"Spanish (Paraguay) (https://www.transifex.com/nextcloud/teams/64236/es_PY/)\", \"Content-Type\": \"text/plain; charset=UTF-8\", \"Language\": \"es_PY\", \"Plural-Forms\": \"nplurals=3; plural=n == 1 ? 0 : n != 0 && n % 1000000 == 0 ? 1 : 2;\" }, \"translations\": { \"\": { \"\": { \"msgid\": \"\", \"comments\": { \"translator\": \"\\nTranslators:\\nTransifex Bot <>, 2022\\n\" }, \"msgstr\": [\"Last-Translator: Transifex Bot <>, 2022\\nLanguage-Team: Spanish (Paraguay) (https://www.transifex.com/nextcloud/teams/64236/es_PY/)\\nContent-Type: text/plain; charset=UTF-8\\nLanguage: es_PY\\nPlural-Forms: nplurals=3; plural=n == 1 ? 0 : n != 0 && n % 1000000 == 0 ? 1 : 2;\\n\"] }, \"{estimate} seconds left\": { \"msgid\": \"{estimate} seconds left\", \"msgstr\": [\"\"] }, \"{hours} hours and {minutes} minutes left\": { \"msgid\": \"{hours} hours and {minutes} minutes left\", \"msgstr\": [\"\"] }, \"{minutes} minutes left\": { \"msgid\": \"{minutes} minutes left\", \"msgstr\": [\"\"] }, \"a few seconds left\": { \"msgid\": \"a few seconds left\", \"msgstr\": [\"\"] }, \"Add\": { \"msgid\": \"Add\", \"msgstr\": [\"\"] }, \"Cancel uploads\": { \"msgid\": \"Cancel uploads\", \"msgstr\": [\"\"] }, \"estimating time left\": { \"msgid\": \"estimating time left\", \"msgstr\": [\"\"] }, \"paused\": { \"msgid\": \"paused\", \"msgstr\": [\"\"] } } } } }, { \"locale\": \"es_SV\", \"json\": { \"charset\": \"utf-8\", \"headers\": { \"Last-Translator\": \"Transifex Bot <>, 2022\", \"Language-Team\": \"Spanish (El Salvador) (https://www.transifex.com/nextcloud/teams/64236/es_SV/)\", \"Content-Type\": \"text/plain; charset=UTF-8\", \"Language\": \"es_SV\", \"Plural-Forms\": \"nplurals=2; plural=n == 1 ? 0 : n != 0 && n % 1000000 == 0 ? 1 : 2;\" }, \"translations\": { \"\": { \"\": { \"msgid\": \"\", \"comments\": { \"translator\": \"\\nTranslators:\\nTransifex Bot <>, 2022\\n\" }, \"msgstr\": [\"Last-Translator: Transifex Bot <>, 2022\\nLanguage-Team: Spanish (El Salvador) (https://www.transifex.com/nextcloud/teams/64236/es_SV/)\\nContent-Type: text/plain; charset=UTF-8\\nLanguage: es_SV\\nPlural-Forms: nplurals=2; plural=n == 1 ? 0 : n != 0 && n % 1000000 == 0 ? 1 : 2;\\n\"] }, \"{estimate} seconds left\": { \"msgid\": \"{estimate} seconds left\", \"msgstr\": [\"\"] }, \"{hours} hours and {minutes} minutes left\": { \"msgid\": \"{hours} hours and {minutes} minutes left\", \"msgstr\": [\"\"] }, \"{minutes} minutes left\": { \"msgid\": \"{minutes} minutes left\", \"msgstr\": [\"\"] }, \"a few seconds left\": { \"msgid\": \"a few seconds left\", \"msgstr\": [\"\"] }, \"Add\": { \"msgid\": \"Add\", \"msgstr\": [\"\"] }, \"Cancel uploads\": { \"msgid\": \"Cancel uploads\", \"msgstr\": [\"\"] }, \"estimating time left\": { \"msgid\": \"estimating time left\", \"msgstr\": [\"\"] }, \"paused\": { \"msgid\": \"paused\", \"msgstr\": [\"\"] } } } } }, { \"locale\": \"es_UY\", \"json\": { \"charset\": \"utf-8\", \"headers\": { \"Last-Translator\": \"Transifex Bot <>, 2022\", \"Language-Team\": \"Spanish (Uruguay) (https://www.transifex.com/nextcloud/teams/64236/es_UY/)\", \"Content-Type\": \"text/plain; charset=UTF-8\", \"Language\": \"es_UY\", \"Plural-Forms\": \"nplurals=3; plural=n == 1 ? 0 : n != 0 && n % 1000000 == 0 ? 1 : 2;\" }, \"translations\": { \"\": { \"\": { \"msgid\": \"\", \"comments\": { \"translator\": \"\\nTranslators:\\nTransifex Bot <>, 2022\\n\" }, \"msgstr\": [\"Last-Translator: Transifex Bot <>, 2022\\nLanguage-Team: Spanish (Uruguay) (https://www.transifex.com/nextcloud/teams/64236/es_UY/)\\nContent-Type: text/plain; charset=UTF-8\\nLanguage: es_UY\\nPlural-Forms: nplurals=3; plural=n == 1 ? 0 : n != 0 && n % 1000000 == 0 ? 1 : 2;\\n\"] }, \"{estimate} seconds left\": { \"msgid\": \"{estimate} seconds left\", \"msgstr\": [\"\"] }, \"{hours} hours and {minutes} minutes left\": { \"msgid\": \"{hours} hours and {minutes} minutes left\", \"msgstr\": [\"\"] }, \"{minutes} minutes left\": { \"msgid\": \"{minutes} minutes left\", \"msgstr\": [\"\"] }, \"a few seconds left\": { \"msgid\": \"a few seconds left\", \"msgstr\": [\"\"] }, \"Add\": { \"msgid\": \"Add\", \"msgstr\": [\"\"] }, \"Cancel uploads\": { \"msgid\": \"Cancel uploads\", \"msgstr\": [\"\"] }, \"estimating time left\": { \"msgid\": \"estimating time left\", \"msgstr\": [\"\"] }, \"paused\": { \"msgid\": \"paused\", \"msgstr\": [\"\"] } } } } }, { \"locale\": \"et_EE\", \"json\": { \"charset\": \"utf-8\", \"headers\": { \"Last-Translator\": \"Priit Jõerüüt , 2025\", \"Language-Team\": \"Estonian (Estonia) (https://app.transifex.com/nextcloud/teams/64236/et_EE/)\", \"Content-Type\": \"text/plain; charset=UTF-8\", \"Language\": \"et_EE\", \"Plural-Forms\": \"nplurals=2; plural=(n != 1);\" }, \"translations\": { \"\": { \"\": { \"msgid\": \"\", \"comments\": { \"translator\": \"\\nTranslators:\\nJoas Schilling, 2024\\nPriit Jõerüüt , 2025\\n\" }, \"msgstr\": [\"Last-Translator: Priit Jõerüüt , 2025\\nLanguage-Team: Estonian (Estonia) (https://app.transifex.com/nextcloud/teams/64236/et_EE/)\\nContent-Type: text/plain; charset=UTF-8\\nLanguage: et_EE\\nPlural-Forms: nplurals=2; plural=(n != 1);\\n\"] }, '\"{segment}\" is a forbidden file or folder name.': { \"msgid\": '\"{segment}\" is a forbidden file or folder name.', \"msgstr\": [\"„{segment}“ on keelatud faili- või kausta nimi.\"] }, '\"{segment}\" is a forbidden file type.': { \"msgid\": '\"{segment}\" is a forbidden file type.', \"msgstr\": [\"„{segment}“ on keelatud failitüüp.\"] }, '\"{segment}\" is not allowed inside a file or folder name.': { \"msgid\": '\"{segment}\" is not allowed inside a file or folder name.', \"msgstr\": [\"„{segment}“ pole faili- või kausta nimes lubatud.\"] }, \"{count} file conflict\": { \"msgid\": \"{count} file conflict\", \"msgid_plural\": \"{count} files conflict\", \"msgstr\": [\"{count} fail on vastuolus\", \"{count} faili on vastuolus\"] }, \"{count} file conflict in {dirname}\": { \"msgid\": \"{count} file conflict in {dirname}\", \"msgid_plural\": \"{count} file conflicts in {dirname}\", \"msgstr\": [\"{count} fail on vastuolus „{dirname}“ kaustas\", \"{count} faili on vastuolus „{dirname}“ kaustas\"] }, \"{seconds} seconds left\": { \"msgid\": \"{seconds} seconds left\", \"msgid_plural\": \"{seconds} seconds left\", \"msgstr\": [\"jäänud {seconds} sekund\", \"jäänud {seconds} sekundit\"] }, \"{time} left\": { \"msgid\": \"{time} left\", \"comments\": { \"extracted\": \"TRANSLATORS time has the format 00:00:00\" }, \"msgstr\": [\"aega jäänud {time} \"] }, \"a few seconds left\": { \"msgid\": \"a few seconds left\", \"msgstr\": [\"jäänud mõni sekund\"] }, \"assembling\": { \"msgid\": \"assembling\", \"msgstr\": [\"koostamisel\"] }, \"Cancel\": { \"msgid\": \"Cancel\", \"msgstr\": [\"Katkesta\"] }, \"Cancel the entire operation\": { \"msgid\": \"Cancel the entire operation\", \"msgstr\": [\"Katkesta kogu tegevus\"] }, \"Cancel uploads\": { \"msgid\": \"Cancel uploads\", \"msgstr\": [\"Katkesta üleslaadimine\"] }, \"Continue\": { \"msgid\": \"Continue\", \"msgstr\": [\"Jätka\"] }, \"Create new\": { \"msgid\": \"Create new\", \"msgstr\": [\"Loo uus\"] }, \"estimating time left\": { \"msgid\": \"estimating time left\", \"msgstr\": [\"hinnanguline järelejäänud aeg\"] }, \"Existing version\": { \"msgid\": \"Existing version\", \"msgstr\": [\"Olemasolev versioon\"] }, \"Failed to assemble the chunks together\": { \"msgid\": \"Failed to assemble the chunks together\", \"msgstr\": [\"Tükkide koostamine üheks tervikuks ei õnnestunud\"] }, \"Failed to upload the file\": { \"msgid\": \"Failed to upload the file\", \"msgstr\": [\"Faili üleslaadimine ei õnnestunud\"] }, 'Filenames must not end with \"{segment}\".': { \"msgid\": 'Filenames must not end with \"{segment}\".', \"msgstr\": [\"Failinime lõpus ei tohi olla „{segment}“.\"] }, \"If you select both versions, the incoming file will have a number added to its name.\": { \"msgid\": \"If you select both versions, the incoming file will have a number added to its name.\", \"msgstr\": [\"Kui sa valid mõlemad versioonid, lisatakse kopeeritud faili nimele number.\"] }, \"Invalid filename\": { \"msgid\": \"Invalid filename\", \"msgstr\": [\"Vigane failinimi\"] }, \"Last modified date unknown\": { \"msgid\": \"Last modified date unknown\", \"msgstr\": [\"Viimase muutmise kuupäev pole teada\"] }, \"New\": { \"msgid\": \"New\", \"msgstr\": [\"Uus\"] }, \"New filename\": { \"msgid\": \"New filename\", \"msgstr\": [\"Uus failinimi\"] }, \"New version\": { \"msgid\": \"New version\", \"msgstr\": [\"Uus versioon\"] }, \"paused\": { \"msgid\": \"paused\", \"msgstr\": [\"pausil\"] }, \"Preview image\": { \"msgid\": \"Preview image\", \"msgstr\": [\"Vaata pildi eelvaadet\"] }, \"Rename\": { \"msgid\": \"Rename\", \"msgstr\": [\"Muuda nime\"] }, \"Select all checkboxes\": { \"msgid\": \"Select all checkboxes\", \"msgstr\": [\"Vali kõik märkeruudud\"] }, \"Select all existing files\": { \"msgid\": \"Select all existing files\", \"msgstr\": [\"Vali kõik olemasolevad failid\"] }, \"Select all new files\": { \"msgid\": \"Select all new files\", \"msgstr\": [\"Vali kõik uued failid\"] }, \"Skip\": { \"msgid\": \"Skip\", \"msgstr\": [\"Jäta vahele\"] }, \"Skip {count} file\": { \"msgid\": \"Skip {count} file\", \"msgid_plural\": \"Skip {count} files\", \"msgstr\": [\"Jäta vahele {count} fail\", \"Jäta vahele {count} faili\"] }, \"Skip this file\": { \"msgid\": \"Skip this file\", \"msgstr\": [\"Jäta vahele see fail\"] }, \"Unknown size\": { \"msgid\": \"Unknown size\", \"msgstr\": [\"Tundmatu suurus\"] }, \"Upload\": { \"msgid\": \"Upload\", \"msgstr\": [\"Laadi üles\"] }, \"Upload files\": { \"msgid\": \"Upload files\", \"msgstr\": [\"Laadi failid üles\"] }, \"Upload folders\": { \"msgid\": \"Upload folders\", \"msgstr\": [\"Laadi kaustad üles\"] }, \"Upload from device\": { \"msgid\": \"Upload from device\", \"msgstr\": [\"Laadi üles seadmest\"] }, \"Upload has been cancelled\": { \"msgid\": \"Upload has been cancelled\", \"msgstr\": [\"Üleslaadimine on katkestatud\"] }, \"Upload has been skipped\": { \"msgid\": \"Upload has been skipped\", \"msgstr\": [\"Üleslaadimine on vahele jäetud\"] }, 'Upload of \"{folder}\" has been skipped': { \"msgid\": 'Upload of \"{folder}\" has been skipped', \"msgstr\": [\"„{folder}“ kausta üleslaadimine on vahele jäetud\"] }, \"Upload progress\": { \"msgid\": \"Upload progress\", \"msgstr\": [\"Üleslaadimise edenemine\"] }, \"When an incoming folder is selected, any conflicting files within it will also be overwritten.\": { \"msgid\": \"When an incoming folder is selected, any conflicting files within it will also be overwritten.\", \"msgstr\": [\"Kui saabuvate failide kaust on valitud, siis seal asuvad vastuoluliste nimedega failid kirjutatakse samuti üle.\"] }, \"When an incoming folder is selected, the content is written into the existing folder and a recursive conflict resolution is performed.\": { \"msgid\": \"When an incoming folder is selected, the content is written into the existing folder and a recursive conflict resolution is performed.\", \"msgstr\": [\"Kui saabuvate failide kaust on valitud, siis sisu kirjutatakse olemasolevasse kausta ja käivitatakse rekursiivne vastuolude haldus.\"] }, \"Which files do you want to keep?\": { \"msgid\": \"Which files do you want to keep?\", \"msgstr\": [\"Milliseid faile soovid säilitada?\"] }, \"You can either rename the file, skip this file or cancel the whole operation.\": { \"msgid\": \"You can either rename the file, skip this file or cancel the whole operation.\", \"msgstr\": [\"Sa võid kas faili nime muuta, ta vahele jätta või kogu tegevuse katkestada.\"] }, \"You need to select at least one version of each file to continue.\": { \"msgid\": \"You need to select at least one version of each file to continue.\", \"msgstr\": [\"Jätkamiseks pead valima vähemalt ühe versiooni igast failist.\"] } } } } }, { \"locale\": \"eu\", \"json\": { \"charset\": \"utf-8\", \"headers\": { \"Last-Translator\": \"Unai Tolosa Pontesta , 2022\", \"Language-Team\": \"Basque (https://www.transifex.com/nextcloud/teams/64236/eu/)\", \"Content-Type\": \"text/plain; charset=UTF-8\", \"Language\": \"eu\", \"Plural-Forms\": \"nplurals=2; plural=(n != 1);\" }, \"translations\": { \"\": { \"\": { \"msgid\": \"\", \"comments\": { \"translator\": \"\\nTranslators:\\nUnai Tolosa Pontesta , 2022\\n\" }, \"msgstr\": [\"Last-Translator: Unai Tolosa Pontesta , 2022\\nLanguage-Team: Basque (https://www.transifex.com/nextcloud/teams/64236/eu/)\\nContent-Type: text/plain; charset=UTF-8\\nLanguage: eu\\nPlural-Forms: nplurals=2; plural=(n != 1);\\n\"] }, \"{seconds} seconds left\": { \"msgid\": \"{seconds} seconds left\", \"msgstr\": [\"{seconds} segundo geratzen dira\"] }, \"{time} left\": { \"msgid\": \"{time} left\", \"comments\": { \"extracted\": \"time has the format 00:00:00\" }, \"msgstr\": [\"{time} geratzen da\"] }, \"a few seconds left\": { \"msgid\": \"a few seconds left\", \"msgstr\": [\"segundo batzuk geratzen dira\"] }, \"Add\": { \"msgid\": \"Add\", \"msgstr\": [\"Gehitu\"] }, \"Cancel uploads\": { \"msgid\": \"Cancel uploads\", \"msgstr\": [\"Ezeztatu igoerak\"] }, \"estimating time left\": { \"msgid\": \"estimating time left\", \"msgstr\": [\"kalkulatutako geratzen den denbora\"] }, \"paused\": { \"msgid\": \"paused\", \"msgstr\": [\"geldituta\"] }, \"Upload files\": { \"msgid\": \"Upload files\", \"msgstr\": [\"Igo fitxategiak\"] } } } } }, { \"locale\": \"fa\", \"json\": { \"charset\": \"utf-8\", \"headers\": { \"Last-Translator\": \"Alireza Rashidi, 2025\", \"Language-Team\": \"Persian (https://app.transifex.com/nextcloud/teams/64236/fa/)\", \"Content-Type\": \"text/plain; charset=UTF-8\", \"Language\": \"fa\", \"Plural-Forms\": \"nplurals=2; plural=(n > 1);\" }, \"translations\": { \"\": { \"\": { \"msgid\": \"\", \"comments\": { \"translator\": \"\\nTranslators:\\nJoas Schilling, 2024\\nreza reza , 2024\\nAlireza Rashidi, 2025\\n\" }, \"msgstr\": [\"Last-Translator: Alireza Rashidi, 2025\\nLanguage-Team: Persian (https://app.transifex.com/nextcloud/teams/64236/fa/)\\nContent-Type: text/plain; charset=UTF-8\\nLanguage: fa\\nPlural-Forms: nplurals=2; plural=(n > 1);\\n\"] }, '\"{segment}\" is a forbidden file or folder name.': { \"msgid\": '\"{segment}\" is a forbidden file or folder name.', \"msgstr\": [\"{segment} یک نام فایل یا پوشه ممنوعه است.\"] }, '\"{segment}\" is a forbidden file type.': { \"msgid\": '\"{segment}\" is a forbidden file type.', \"msgstr\": [\"{segment} یک نوع فایل ممنوعه است.\"] }, '\"{segment}\" is not allowed inside a file or folder name.': { \"msgid\": '\"{segment}\" is not allowed inside a file or folder name.', \"msgstr\": [\"{segment} داخل نام فایل یا پوشه مجاز نیست.\"] }, \"{count} file conflict\": { \"msgid\": \"{count} file conflict\", \"msgid_plural\": \"{count} files conflict\", \"msgstr\": [\"{count} تداخل فایل\", \"{count} تداخل فایل‌ها\"] }, \"{count} file conflict in {dirname}\": { \"msgid\": \"{count} file conflict in {dirname}\", \"msgid_plural\": \"{count} file conflicts in {dirname}\", \"msgstr\": [\"{count} پرونده با {dirname} ناسازگاری داشت\", \"{count} پرونده با {dirname} ناسازگاری داشت\"] }, \"{seconds} seconds left\": { \"msgid\": \"{seconds} seconds left\", \"msgid_plural\": \"{seconds} seconds left\", \"msgstr\": [\"{seconds} ثانیه مانده\", \"{seconds} ثانیه مانده\"] }, \"{time} left\": { \"msgid\": \"{time} left\", \"comments\": { \"extracted\": \"TRANSLATORS time has the format 00:00:00\" }, \"msgstr\": [\"{time} باقی مانده\"] }, \"a few seconds left\": { \"msgid\": \"a few seconds left\", \"msgstr\": [\"چند ثانیه مانده\"] }, \"assembling\": { \"msgid\": \"assembling\", \"msgstr\": [\"سرهم کردن\"] }, \"Cancel\": { \"msgid\": \"Cancel\", \"msgstr\": [\"رد کردن\"] }, \"Cancel the entire operation\": { \"msgid\": \"Cancel the entire operation\", \"msgstr\": [\"رد کردن کل عملیات\"] }, \"Cancel uploads\": { \"msgid\": \"Cancel uploads\", \"msgstr\": [\"رد کردن بارگذاری\"] }, \"Continue\": { \"msgid\": \"Continue\", \"msgstr\": [\"ادامه\"] }, \"Create new\": { \"msgid\": \"Create new\", \"msgstr\": [\"ساخت جدید\"] }, \"estimating time left\": { \"msgid\": \"estimating time left\", \"msgstr\": [\"تخمین زمان باقی مانده\"] }, \"Existing version\": { \"msgid\": \"Existing version\", \"msgstr\": [\"نگارش موجود\"] }, \"Failed to assemble the chunks together\": { \"msgid\": \"Failed to assemble the chunks together\", \"msgstr\": [\"نتوانست تکه‌های را به سرهم کند\"] }, \"Failed to upload the file\": { \"msgid\": \"Failed to upload the file\", \"msgstr\": [\"نتوانست پرونده را بارگذاری کند\"] }, 'Filenames must not end with \"{segment}\".': { \"msgid\": 'Filenames must not end with \"{segment}\".', \"msgstr\": [\"نام پرونده نباید با {segment} پایان یابد.\"] }, \"If you select both versions, the incoming file will have a number added to its name.\": { \"msgid\": \"If you select both versions, the incoming file will have a number added to its name.\", \"msgstr\": [\"اگر هر دو نسخه را انتخاب کنید، یک عدد به نام پرونده ورودی اضافه خواهد شد.\"] }, \"Invalid filename\": { \"msgid\": \"Invalid filename\", \"msgstr\": [\"نام پرونده نامعتبر\"] }, \"Last modified date unknown\": { \"msgid\": \"Last modified date unknown\", \"msgstr\": [\"آخرین تاریخ تغییر نامشخص\"] }, \"New\": { \"msgid\": \"New\", \"msgstr\": [\"جدید\"] }, \"New filename\": { \"msgid\": \"New filename\", \"msgstr\": [\"نام فایل جدید\"] }, \"New version\": { \"msgid\": \"New version\", \"msgstr\": [\"نسخه جدید\"] }, \"paused\": { \"msgid\": \"paused\", \"msgstr\": [\"مکث کردن\"] }, \"Preview image\": { \"msgid\": \"Preview image\", \"msgstr\": [\"پیش نمایش تصویر\"] }, \"Rename\": { \"msgid\": \"Rename\", \"msgstr\": [\"تغییر نام\"] }, \"Select all checkboxes\": { \"msgid\": \"Select all checkboxes\", \"msgstr\": [\"انتخاب همه چک‌باکس‌ها\"] }, \"Select all existing files\": { \"msgid\": \"Select all existing files\", \"msgstr\": [\"انتخاب همه فایل‌های موجود\"] }, \"Select all new files\": { \"msgid\": \"Select all new files\", \"msgstr\": [\"انتخاب همه فایل‌های جدید\"] }, \"Skip\": { \"msgid\": \"Skip\", \"msgstr\": [\"رد شدن\"] }, \"Skip this file\": { \"msgid\": \"Skip this file\", \"msgid_plural\": \"Skip {count} files\", \"msgstr\": [\"رد شدن از \", \"رد شدن از {count} فایل\"] }, \"Unknown size\": { \"msgid\": \"Unknown size\", \"msgstr\": [\"اندازه نامشخص\"] }, \"Upload\": { \"msgid\": \"Upload\", \"msgstr\": [\"بارگذاری\"] }, \"Upload files\": { \"msgid\": \"Upload files\", \"msgstr\": [\"بارگذاری پرونده‌ها\"] }, \"Upload folders\": { \"msgid\": \"Upload folders\", \"msgstr\": [\"بارگذاری پوشه‌ها\"] }, \"Upload from device\": { \"msgid\": \"Upload from device\", \"msgstr\": [\"بارگذاری از دستگاه\"] }, \"Upload has been cancelled\": { \"msgid\": \"Upload has been cancelled\", \"msgstr\": [\"بارگذاری رد شده است\"] }, \"Upload has been skipped\": { \"msgid\": \"Upload has been skipped\", \"msgstr\": [\"بارگذاری نادیده گرفته شده است\"] }, 'Upload of \"{folder}\" has been skipped': { \"msgid\": 'Upload of \"{folder}\" has been skipped', \"msgstr\": [\"بارگذاری {folder} نادیده گرفته شده است\"] }, \"Upload progress\": { \"msgid\": \"Upload progress\", \"msgstr\": [\"روند بارگذاری\"] }, \"When an incoming folder is selected, any conflicting files within it will also be overwritten.\": { \"msgid\": \"When an incoming folder is selected, any conflicting files within it will also be overwritten.\", \"msgstr\": [\"هنگامی که یک پوشه ورودی انتخاب می‌شود، هر فایل متناقضی در آن نیز بازنویسی می‌شود.\"] }, \"When an incoming folder is selected, the content is written into the existing folder and a recursive conflict resolution is performed.\": { \"msgid\": \"When an incoming folder is selected, the content is written into the existing folder and a recursive conflict resolution is performed.\", \"msgstr\": [\"هنگامی که یک پوشه دریافتی انتخاب می شود ، محتوا در پوشه موجود نوشته می شود و حل ناسازگاری بازگشتی انجام می شود.\"] }, \"Which files do you want to keep?\": { \"msgid\": \"Which files do you want to keep?\", \"msgstr\": [\"کدام پرونده‌ها را می‌خواهید نگه دارید؟\"] }, \"You can either rename the file, skip this file or cancel the whole operation.\": { \"msgid\": \"You can either rename the file, skip this file or cancel the whole operation.\", \"msgstr\": [\"می‌توانید نام پرونده را تغییر دهید، از این پرونده رد شوید یا کل عملیات را رد کنید.\"] }, \"You need to select at least one version of each file to continue.\": { \"msgid\": \"You need to select at least one version of each file to continue.\", \"msgstr\": [\"برای ادامه باید دست‌کم یک نگارش از هر پرونده را انتخاب کنید.\"] } } } } }, { \"locale\": \"fi\", \"json\": { \"charset\": \"utf-8\", \"headers\": { \"Last-Translator\": \"Jiri Grönroos , 2025\", \"Language-Team\": \"Finnish (Finland) (https://app.transifex.com/nextcloud/teams/64236/fi_FI/)\", \"Content-Type\": \"text/plain; charset=UTF-8\", \"Language\": \"fi_FI\", \"Plural-Forms\": \"nplurals=2; plural=(n != 1);\" }, \"translations\": { \"\": { \"\": { \"msgid\": \"\", \"comments\": { \"translator\": \"\\nTranslators:\\nJoas Schilling, 2024\\nthingumy, 2024\\nteemue, 2024\\nJiri Grönroos , 2025\\n\" }, \"msgstr\": [\"Last-Translator: Jiri Grönroos , 2025\\nLanguage-Team: Finnish (Finland) (https://app.transifex.com/nextcloud/teams/64236/fi_FI/)\\nContent-Type: text/plain; charset=UTF-8\\nLanguage: fi_FI\\nPlural-Forms: nplurals=2; plural=(n != 1);\\n\"] }, '\"{segment}\" is a forbidden file or folder name.': { \"msgid\": '\"{segment}\" is a forbidden file or folder name.', \"msgstr\": ['\"{segment}\" on kielletty tiedoston tai hakemiston nimi.'] }, '\"{segment}\" is a forbidden file type.': { \"msgid\": '\"{segment}\" is a forbidden file type.', \"msgstr\": ['\"{segment}\" on kielletty tiedostotyyppi.'] }, '\"{segment}\" is not allowed inside a file or folder name.': { \"msgid\": '\"{segment}\" is not allowed inside a file or folder name.', \"msgstr\": ['\"{segment}\" ei ole sallittu tiedoston tai hakemiston nimessä.'] }, \"{count} file conflict\": { \"msgid\": \"{count} file conflict\", \"msgid_plural\": \"{count} files conflict\", \"msgstr\": [\"{count} tiedoston ristiriita\", \"{count} tiedoston ristiriita\"] }, \"{count} file conflict in {dirname}\": { \"msgid\": \"{count} file conflict in {dirname}\", \"msgid_plural\": \"{count} file conflicts in {dirname}\", \"msgstr\": [\"{count} tiedoston ristiriita kansiossa {dirname}\", \"{count} tiedoston ristiriita kansiossa {dirname}\"] }, \"{seconds} seconds left\": { \"msgid\": \"{seconds} seconds left\", \"msgid_plural\": \"{seconds} seconds left\", \"msgstr\": [\"{seconds} sekunti jäljellä\", \"{seconds} sekuntia jäljellä\"] }, \"{time} left\": { \"msgid\": \"{time} left\", \"comments\": { \"extracted\": \"TRANSLATORS time has the format 00:00:00\" }, \"msgstr\": [\"{time} jäljellä\"] }, \"a few seconds left\": { \"msgid\": \"a few seconds left\", \"msgstr\": [\"muutama sekunti jäljellä\"] }, \"assembling\": { \"msgid\": \"assembling\", \"msgstr\": [\"kootaan\"] }, \"Cancel\": { \"msgid\": \"Cancel\", \"msgstr\": [\"Peruuta\"] }, \"Cancel the entire operation\": { \"msgid\": \"Cancel the entire operation\", \"msgstr\": [\"Peruuta koko toimenpide\"] }, \"Cancel uploads\": { \"msgid\": \"Cancel uploads\", \"msgstr\": [\"Peruuta lähetykset\"] }, \"Continue\": { \"msgid\": \"Continue\", \"msgstr\": [\"Jatka\"] }, \"Create new\": { \"msgid\": \"Create new\", \"msgstr\": [\"Luo uusi\"] }, \"estimating time left\": { \"msgid\": \"estimating time left\", \"msgstr\": [\"arvioidaan jäljellä olevaa aikaa\"] }, \"Existing version\": { \"msgid\": \"Existing version\", \"msgstr\": [\"Olemassa oleva versio\"] }, \"Failed to assemble the chunks together\": { \"msgid\": \"Failed to assemble the chunks together\", \"msgstr\": [\"Palojen kokoaminen yhteen epäonnistui\"] }, \"Failed to upload the file\": { \"msgid\": \"Failed to upload the file\", \"msgstr\": [\"Tiedoston lähetys epäonnistui\"] }, 'Filenames must not end with \"{segment}\".': { \"msgid\": 'Filenames must not end with \"{segment}\".', \"msgstr\": ['Tiedoston nimi ei saa päättyä \"{segment}\"'] }, \"If you select both versions, the incoming file will have a number added to its name.\": { \"msgid\": \"If you select both versions, the incoming file will have a number added to its name.\", \"msgstr\": [\"Jos valitset molemmat versiot, saapuvan tiedoston nimeen lisätään numero.\"] }, \"Invalid filename\": { \"msgid\": \"Invalid filename\", \"msgstr\": [\"Kielletty/väärä tiedoston nimi\"] }, \"Last modified date unknown\": { \"msgid\": \"Last modified date unknown\", \"msgstr\": [\"Viimeisin muokkauspäivä on tuntematon\"] }, \"New\": { \"msgid\": \"New\", \"msgstr\": [\"Uusi\"] }, \"New filename\": { \"msgid\": \"New filename\", \"msgstr\": [\"Uusi tiedostonimi\"] }, \"New version\": { \"msgid\": \"New version\", \"msgstr\": [\"Uusi versio\"] }, \"paused\": { \"msgid\": \"paused\", \"msgstr\": [\"keskeytetty\"] }, \"Preview image\": { \"msgid\": \"Preview image\", \"msgstr\": [\"Esikatsele kuva\"] }, \"Rename\": { \"msgid\": \"Rename\", \"msgstr\": [\"Nimeä uudelleen\"] }, \"Select all checkboxes\": { \"msgid\": \"Select all checkboxes\", \"msgstr\": [\"Valitse kaikki valintaruudut\"] }, \"Select all existing files\": { \"msgid\": \"Select all existing files\", \"msgstr\": [\"Valitse kaikki olemassa olevat tiedostot\"] }, \"Select all new files\": { \"msgid\": \"Select all new files\", \"msgstr\": [\"Valitse kaikki uudet tiedostot\"] }, \"Skip\": { \"msgid\": \"Skip\", \"msgstr\": [\"Ohita\"] }, \"Skip this file\": { \"msgid\": \"Skip this file\", \"msgid_plural\": \"Skip {count} files\", \"msgstr\": [\"Ohita tämä tiedosto\", \"Ohita {count} tiedostoa\"] }, \"Unknown size\": { \"msgid\": \"Unknown size\", \"msgstr\": [\"Tuntematon koko\"] }, \"Upload\": { \"msgid\": \"Upload\", \"msgstr\": [\"Lähetä\"] }, \"Upload files\": { \"msgid\": \"Upload files\", \"msgstr\": [\"Lähetä tiedostoja\"] }, \"Upload folders\": { \"msgid\": \"Upload folders\", \"msgstr\": [\"Lähetä kansioita\"] }, \"Upload from device\": { \"msgid\": \"Upload from device\", \"msgstr\": [\"Lähetä laitteelta\"] }, \"Upload has been cancelled\": { \"msgid\": \"Upload has been cancelled\", \"msgstr\": [\"Lähetys on peruttu\"] }, \"Upload has been skipped\": { \"msgid\": \"Upload has been skipped\", \"msgstr\": [\"Lähetys on ohitettu\"] }, 'Upload of \"{folder}\" has been skipped': { \"msgid\": 'Upload of \"{folder}\" has been skipped', \"msgstr\": ['Hakemiston \"{folder}\" lähetys on ohitettu'] }, \"Upload progress\": { \"msgid\": \"Upload progress\", \"msgstr\": [\"Lähetyksen edistyminen\"] }, \"When an incoming folder is selected, any conflicting files within it will also be overwritten.\": { \"msgid\": \"When an incoming folder is selected, any conflicting files within it will also be overwritten.\", \"msgstr\": [\"Valittuasi saapuvien kansion, kaikki ristiriitaiset tiedostot kansiossa ylikirjoitetaan.\"] }, \"When an incoming folder is selected, the content is written into the existing folder and a recursive conflict resolution is performed.\": { \"msgid\": \"When an incoming folder is selected, the content is written into the existing folder and a recursive conflict resolution is performed.\", \"msgstr\": [\"Valittuasi saapuvien kansion, sisältö kirjoitetaan olemassaolevaan kansioon ja suoritetaan rekursiivinen ristiriitojen poisto.\"] }, \"Which files do you want to keep?\": { \"msgid\": \"Which files do you want to keep?\", \"msgstr\": [\"Mitkä tiedostot haluat säilyttää?\"] }, \"You can either rename the file, skip this file or cancel the whole operation.\": { \"msgid\": \"You can either rename the file, skip this file or cancel the whole operation.\", \"msgstr\": [\"Voit joko nimetä tiedoston uudelleen, ohittaa tämän tiedoston tai peruuttaa koko toiminnon.\"] }, \"You need to select at least one version of each file to continue.\": { \"msgid\": \"You need to select at least one version of each file to continue.\", \"msgstr\": [\"Sinun täytyy valita vähintään yksi versio jokaisesta tiedostosta jatkaaksesi.\"] } } } } }, { \"locale\": \"fo\", \"json\": { \"charset\": \"utf-8\", \"headers\": { \"Last-Translator\": \"Transifex Bot <>, 2022\", \"Language-Team\": \"Faroese (https://www.transifex.com/nextcloud/teams/64236/fo/)\", \"Content-Type\": \"text/plain; charset=UTF-8\", \"Language\": \"fo\", \"Plural-Forms\": \"nplurals=2; plural=(n != 1);\" }, \"translations\": { \"\": { \"\": { \"msgid\": \"\", \"comments\": { \"translator\": \"\\nTranslators:\\nTransifex Bot <>, 2022\\n\" }, \"msgstr\": [\"Last-Translator: Transifex Bot <>, 2022\\nLanguage-Team: Faroese (https://www.transifex.com/nextcloud/teams/64236/fo/)\\nContent-Type: text/plain; charset=UTF-8\\nLanguage: fo\\nPlural-Forms: nplurals=2; plural=(n != 1);\\n\"] }, \"{estimate} seconds left\": { \"msgid\": \"{estimate} seconds left\", \"msgstr\": [\"\"] }, \"{hours} hours and {minutes} minutes left\": { \"msgid\": \"{hours} hours and {minutes} minutes left\", \"msgstr\": [\"\"] }, \"{minutes} minutes left\": { \"msgid\": \"{minutes} minutes left\", \"msgstr\": [\"\"] }, \"a few seconds left\": { \"msgid\": \"a few seconds left\", \"msgstr\": [\"\"] }, \"Add\": { \"msgid\": \"Add\", \"msgstr\": [\"\"] }, \"Cancel uploads\": { \"msgid\": \"Cancel uploads\", \"msgstr\": [\"\"] }, \"estimating time left\": { \"msgid\": \"estimating time left\", \"msgstr\": [\"\"] }, \"paused\": { \"msgid\": \"paused\", \"msgstr\": [\"\"] } } } } }, { \"locale\": \"fr\", \"json\": { \"charset\": \"utf-8\", \"headers\": { \"Last-Translator\": \"Caro Leviia, 2025\", \"Language-Team\": \"French (https://app.transifex.com/nextcloud/teams/64236/fr/)\", \"Content-Type\": \"text/plain; charset=UTF-8\", \"Language\": \"fr\", \"Plural-Forms\": \"nplurals=3; plural=(n == 0 || n == 1) ? 0 : n != 0 && n % 1000000 == 0 ? 1 : 2;\" }, \"translations\": { \"\": { \"\": { \"msgid\": \"\", \"comments\": { \"translator\": \"\\nTranslators:\\nJoas Schilling, 2024\\nBenoit Pruneau, 2024\\nJEEEEEEEEEEEEEEEEEEEEEED, 2024\\nJérôme HERBINET, 2024\\nacazenave, 2024\\nLisa Cintosh, 2025\\nLdm Public , 2025\\nCaro Leviia, 2025\\n\" }, \"msgstr\": [\"Last-Translator: Caro Leviia, 2025\\nLanguage-Team: French (https://app.transifex.com/nextcloud/teams/64236/fr/)\\nContent-Type: text/plain; charset=UTF-8\\nLanguage: fr\\nPlural-Forms: nplurals=3; plural=(n == 0 || n == 1) ? 0 : n != 0 && n % 1000000 == 0 ? 1 : 2;\\n\"] }, '\"{segment}\" is a forbidden file or folder name.': { \"msgid\": '\"{segment}\" is a forbidden file or folder name.', \"msgstr\": ['\"{segment}\" est un nom de fichier ou de dossier interdit.'] }, '\"{segment}\" is a forbidden file type.': { \"msgid\": '\"{segment}\" is a forbidden file type.', \"msgstr\": ['\"{segment}\" est un type de fichier interdit.'] }, '\"{segment}\" is not allowed inside a file or folder name.': { \"msgid\": '\"{segment}\" is not allowed inside a file or folder name.', \"msgstr\": [`\"{segment}\" n'est pas autorisé dans le nom d'un fichier ou d'un dossier.`] }, \"{count} file conflict\": { \"msgid\": \"{count} file conflict\", \"msgid_plural\": \"{count} files conflict\", \"msgstr\": [\"{count} fichier en conflit\", \"{count} fichiers en conflit\", \"{count} fichiers en conflit\"] }, \"{count} file conflict in {dirname}\": { \"msgid\": \"{count} file conflict in {dirname}\", \"msgid_plural\": \"{count} file conflicts in {dirname}\", \"msgstr\": [\"{count} fichier en conflit dans {dirname}\", \"{count} fichiers en conflit dans {dirname}\", \"{count} fichiers en conflit dans {dirname}\"] }, \"{seconds} seconds left\": { \"msgid\": \"{seconds} seconds left\", \"msgid_plural\": \"{seconds} seconds left\", \"msgstr\": [\"{seconds} seconde restante\", \"{seconds} secondes restantes\", \"{seconds} secondes restantes\"] }, \"{time} left\": { \"msgid\": \"{time} left\", \"comments\": { \"extracted\": \"TRANSLATORS time has the format 00:00:00\" }, \"msgstr\": [\"{time} restant\"] }, \"a few seconds left\": { \"msgid\": \"a few seconds left\", \"msgstr\": [\"quelques secondes restantes\"] }, \"assembling\": { \"msgid\": \"assembling\", \"msgstr\": [\"assemblage\"] }, \"Cancel\": { \"msgid\": \"Cancel\", \"msgstr\": [\"Annuler\"] }, \"Cancel the entire operation\": { \"msgid\": \"Cancel the entire operation\", \"msgstr\": [\"Annuler toute l'opération\"] }, \"Cancel uploads\": { \"msgid\": \"Cancel uploads\", \"msgstr\": [\"Annuler les téléversements\"] }, \"Continue\": { \"msgid\": \"Continue\", \"msgstr\": [\"Continuer\"] }, \"Create new\": { \"msgid\": \"Create new\", \"msgstr\": [\"Créer un nouveau\"] }, \"estimating time left\": { \"msgid\": \"estimating time left\", \"msgstr\": [\"estimation du temps restant\"] }, \"Existing version\": { \"msgid\": \"Existing version\", \"msgstr\": [\"Version existante\"] }, \"Failed to assemble the chunks together\": { \"msgid\": \"Failed to assemble the chunks together\", \"msgstr\": [\"Échec de l'assemblage des morceaux\"] }, \"Failed to upload the file\": { \"msgid\": \"Failed to upload the file\", \"msgstr\": [\"Échec de téléversement du fichier\"] }, 'Filenames must not end with \"{segment}\".': { \"msgid\": 'Filenames must not end with \"{segment}\".', \"msgstr\": ['Les noms des fichiers ne doivent pas terminer par \"{segment}\".'] }, \"If you select both versions, the incoming file will have a number added to its name.\": { \"msgid\": \"If you select both versions, the incoming file will have a number added to its name.\", \"msgstr\": [\"Si vous sélectionnez les deux versions, un numéro sera ajouté au nom du fichier entrant.\"] }, \"Invalid filename\": { \"msgid\": \"Invalid filename\", \"msgstr\": [\"Nom de fichier invalide\"] }, \"Last modified date unknown\": { \"msgid\": \"Last modified date unknown\", \"msgstr\": [\"Date de la dernière modification inconnue\"] }, \"New\": { \"msgid\": \"New\", \"msgstr\": [\"Nouveau\"] }, \"New filename\": { \"msgid\": \"New filename\", \"msgstr\": [\"Nouveau nom de fichier\"] }, \"New version\": { \"msgid\": \"New version\", \"msgstr\": [\"Nouvelle version\"] }, \"paused\": { \"msgid\": \"paused\", \"msgstr\": [\"en pause\"] }, \"Preview image\": { \"msgid\": \"Preview image\", \"msgstr\": [\"Aperçu de l'image\"] }, \"Rename\": { \"msgid\": \"Rename\", \"msgstr\": [\"Renommer\"] }, \"Select all checkboxes\": { \"msgid\": \"Select all checkboxes\", \"msgstr\": [\"Sélectionner toutes les cases à cocher\"] }, \"Select all existing files\": { \"msgid\": \"Select all existing files\", \"msgstr\": [\"Sélectionner tous les fichiers existants\"] }, \"Select all new files\": { \"msgid\": \"Select all new files\", \"msgstr\": [\"Sélectionner tous les nouveaux fichiers\"] }, \"Skip\": { \"msgid\": \"Skip\", \"msgstr\": [\"Ignorer\"] }, \"Skip {count} file\": { \"msgid\": \"Skip {count} file\", \"msgid_plural\": \"Skip {count} files\", \"msgstr\": [\"{count} fichier ignoré\", \"{count} fichiers ignorés\", \"{count} fichiers ignorés\"] }, \"Skip this file\": { \"msgid\": \"Skip this file\", \"msgstr\": [\"Ignorer ce fichier\"] }, \"Unknown size\": { \"msgid\": \"Unknown size\", \"msgstr\": [\"Taille inconnue\"] }, \"Upload\": { \"msgid\": \"Upload\", \"msgstr\": [\"Téléverser\"] }, \"Upload files\": { \"msgid\": \"Upload files\", \"msgstr\": [\"Téléverser des fichiers\"] }, \"Upload folders\": { \"msgid\": \"Upload folders\", \"msgstr\": [\"Téléverser des dossiers\"] }, \"Upload from device\": { \"msgid\": \"Upload from device\", \"msgstr\": [\"Téléverser depuis l'appareil\"] }, \"Upload has been cancelled\": { \"msgid\": \"Upload has been cancelled\", \"msgstr\": [\"Le téléversement a été annulé\"] }, \"Upload has been skipped\": { \"msgid\": \"Upload has been skipped\", \"msgstr\": [\"Le téléversement a été ignoré\"] }, 'Upload of \"{folder}\" has been skipped': { \"msgid\": 'Upload of \"{folder}\" has been skipped', \"msgstr\": ['Le téléversement de \"{folder}\" a été ignoré'] }, \"Upload progress\": { \"msgid\": \"Upload progress\", \"msgstr\": [\"Progression du téléversement\"] }, \"When an incoming folder is selected, any conflicting files within it will also be overwritten.\": { \"msgid\": \"When an incoming folder is selected, any conflicting files within it will also be overwritten.\", \"msgstr\": [\"Lorsqu'un dossier entrant est sélectionné, tous les fichiers en conflit qu'il contient seront également écrasés.\"] }, \"When an incoming folder is selected, the content is written into the existing folder and a recursive conflict resolution is performed.\": { \"msgid\": \"When an incoming folder is selected, the content is written into the existing folder and a recursive conflict resolution is performed.\", \"msgstr\": [\"Lorsqu'un dossier entrant est sélectionné, le contenu est ajouté dans le dossier existant et une résolution récursive des conflits est effectuée.\"] }, \"Which files do you want to keep?\": { \"msgid\": \"Which files do you want to keep?\", \"msgstr\": [\"Quels fichiers souhaitez-vous conserver ?\"] }, \"You can either rename the file, skip this file or cancel the whole operation.\": { \"msgid\": \"You can either rename the file, skip this file or cancel the whole operation.\", \"msgstr\": [\"Vous pouvez soit renommer le fichier, soit ignorer le fichier, soit annuler toute l'opération.\"] }, \"You need to select at least one version of each file to continue.\": { \"msgid\": \"You need to select at least one version of each file to continue.\", \"msgstr\": [\"Vous devez sélectionner au moins une version de chaque fichier pour continuer.\"] } } } } }, { \"locale\": \"ga\", \"json\": { \"charset\": \"utf-8\", \"headers\": { \"Last-Translator\": \"Aindriú Mac Giolla Eoin, 2025\", \"Language-Team\": \"Irish (https://app.transifex.com/nextcloud/teams/64236/ga/)\", \"Content-Type\": \"text/plain; charset=UTF-8\", \"Language\": \"ga\", \"Plural-Forms\": \"nplurals=5; plural=(n==1 ? 0 : n==2 ? 1 : n<7 ? 2 : n<11 ? 3 : 4);\" }, \"translations\": { \"\": { \"\": { \"msgid\": \"\", \"comments\": { \"translator\": \"\\nTranslators:\\nAindriú Mac Giolla Eoin, 2025\\n\" }, \"msgstr\": [\"Last-Translator: Aindriú Mac Giolla Eoin, 2025\\nLanguage-Team: Irish (https://app.transifex.com/nextcloud/teams/64236/ga/)\\nContent-Type: text/plain; charset=UTF-8\\nLanguage: ga\\nPlural-Forms: nplurals=5; plural=(n==1 ? 0 : n==2 ? 1 : n<7 ? 2 : n<11 ? 3 : 4);\\n\"] }, '\"{segment}\" is a forbidden file or folder name.': { \"msgid\": '\"{segment}\" is a forbidden file or folder name.', \"msgstr\": ['Is ainm toirmiscthe comhaid nó fillteáin é \"{segment}\".'] }, '\"{segment}\" is a forbidden file type.': { \"msgid\": '\"{segment}\" is a forbidden file type.', \"msgstr\": ['Is cineál comhaid toirmiscthe é \"{segment}\".'] }, '\"{segment}\" is not allowed inside a file or folder name.': { \"msgid\": '\"{segment}\" is not allowed inside a file or folder name.', \"msgstr\": [`Ní cheadaítear \"{segment}\" taobh istigh d'ainm comhaid nó fillteáin.`] }, \"{count} file conflict\": { \"msgid\": \"{count} file conflict\", \"msgid_plural\": \"{count} files conflict\", \"msgstr\": [\"{count} coimhlint comhaid\", \"{count} coimhlintí comhaid\", \"{count} coimhlintí comhaid\", \"{count} coimhlintí comhaid\", \"{count} coimhlintí comhaid\"] }, \"{count} file conflict in {dirname}\": { \"msgid\": \"{count} file conflict in {dirname}\", \"msgid_plural\": \"{count} file conflicts in {dirname}\", \"msgstr\": [\"{count} coimhlint comhaid i {dirname}\", \"{count} coimhlintí comhaid i {dirname}\", \"{count} coimhlintí comhaid i {dirname}\", \"{count} coimhlintí comhaid i {dirname}\", \"{count} coimhlintí comhaid i {dirname}\"] }, \"{seconds} seconds left\": { \"msgid\": \"{seconds} seconds left\", \"msgid_plural\": \"{seconds} seconds left\", \"msgstr\": [\"{seconds} soicind fágtha\", \"{seconds} soicind fágtha\", \"{seconds} soicind fágtha\", \"{seconds} soicind fágtha\", \"{seconds} soicind fágtha\"] }, \"{time} left\": { \"msgid\": \"{time} left\", \"comments\": { \"extracted\": \"TRANSLATORS time has the format 00:00:00\" }, \"msgstr\": [\"{time} fágtha\"] }, \"a few seconds left\": { \"msgid\": \"a few seconds left\", \"msgstr\": [\"cúpla soicind fágtha\"] }, \"assembling\": { \"msgid\": \"assembling\", \"msgstr\": [\"ag cur le chéile\"] }, \"Cancel\": { \"msgid\": \"Cancel\", \"msgstr\": [\"Cealaigh\"] }, \"Cancel the entire operation\": { \"msgid\": \"Cancel the entire operation\", \"msgstr\": [\"Cealaigh an oibríocht iomlán\"] }, \"Cancel uploads\": { \"msgid\": \"Cancel uploads\", \"msgstr\": [\"Cealaigh uaslódálacha\"] }, \"Continue\": { \"msgid\": \"Continue\", \"msgstr\": [\"Leanúint ar aghaidh\"] }, \"Create new\": { \"msgid\": \"Create new\", \"msgstr\": [\"Cruthaigh nua\"] }, \"estimating time left\": { \"msgid\": \"estimating time left\", \"msgstr\": [\"ag déanamh meastachán ar an am atá fágtha\"] }, \"Existing version\": { \"msgid\": \"Existing version\", \"msgstr\": [\"Leagan láithreach \"] }, \"Failed to assemble the chunks together\": { \"msgid\": \"Failed to assemble the chunks together\", \"msgstr\": [\"Theip ar na smután a chur le chéile le chéile\"] }, \"Failed to upload the file\": { \"msgid\": \"Failed to upload the file\", \"msgstr\": [\"Theip ar uaslódáil an chomhaid\"] }, 'Filenames must not end with \"{segment}\".': { \"msgid\": 'Filenames must not end with \"{segment}\".', \"msgstr\": ['Níor cheart go gcríochnaíonn comhaid chomhad le \"{segment}\".'] }, \"If you select both versions, the incoming file will have a number added to its name.\": { \"msgid\": \"If you select both versions, the incoming file will have a number added to its name.\", \"msgstr\": [\"Má roghnaíonn tú an dá leagan, cuirfear uimhir leis an ainm a thagann isteach.\"] }, \"Invalid filename\": { \"msgid\": \"Invalid filename\", \"msgstr\": [\"Ainm comhaid neamhbhailí\"] }, \"Last modified date unknown\": { \"msgid\": \"Last modified date unknown\", \"msgstr\": [\"Dáta modhnaithe is déanaí anaithnid\"] }, \"New\": { \"msgid\": \"New\", \"msgstr\": [\"Nua\"] }, \"New filename\": { \"msgid\": \"New filename\", \"msgstr\": [\"Ainm comhaid nua\"] }, \"New version\": { \"msgid\": \"New version\", \"msgstr\": [\"Leagan nua\"] }, \"paused\": { \"msgid\": \"paused\", \"msgstr\": [\"sos\"] }, \"Preview image\": { \"msgid\": \"Preview image\", \"msgstr\": [\"Íomhá réamhamharc\"] }, \"Rename\": { \"msgid\": \"Rename\", \"msgstr\": [\"Athainmnigh\"] }, \"Select all checkboxes\": { \"msgid\": \"Select all checkboxes\", \"msgstr\": [\"Roghnaigh gach ticbhosca\"] }, \"Select all existing files\": { \"msgid\": \"Select all existing files\", \"msgstr\": [\"Roghnaigh gach comhad atá ann cheana féin\"] }, \"Select all new files\": { \"msgid\": \"Select all new files\", \"msgstr\": [\"Roghnaigh gach comhad nua\"] }, \"Skip\": { \"msgid\": \"Skip\", \"msgstr\": [\"Scipeáil\"] }, \"Skip {count} file\": { \"msgid\": \"Skip {count} file\", \"msgid_plural\": \"Skip {count} files\", \"msgstr\": [\"Léim an comhad {count}\", \"Léim thar {count} comhad\", \"Léim thar {count} comhad\", \"Léim thar {count} comhad\", \"Léim thar {count} comhad\"] }, \"Skip this file\": { \"msgid\": \"Skip this file\", \"msgstr\": [\"Seachain an comhad seo\"] }, \"Unknown size\": { \"msgid\": \"Unknown size\", \"msgstr\": [\"Méid anaithnid\"] }, \"Upload\": { \"msgid\": \"Upload\", \"msgstr\": [\"Uaslódáil\"] }, \"Upload files\": { \"msgid\": \"Upload files\", \"msgstr\": [\"Uaslódáil comhaid\"] }, \"Upload folders\": { \"msgid\": \"Upload folders\", \"msgstr\": [\"Uaslódáil fillteáin\"] }, \"Upload from device\": { \"msgid\": \"Upload from device\", \"msgstr\": [\"Íosluchtaigh ó ghléas\"] }, \"Upload has been cancelled\": { \"msgid\": \"Upload has been cancelled\", \"msgstr\": [\"Cuireadh an t-uaslódáil ar ceal\"] }, \"Upload has been skipped\": { \"msgid\": \"Upload has been skipped\", \"msgstr\": [\"Léiríodh an uaslódáil\"] }, 'Upload of \"{folder}\" has been skipped': { \"msgid\": 'Upload of \"{folder}\" has been skipped', \"msgstr\": ['Léiríodh an uaslódáil \"{folder}\".'] }, \"Upload progress\": { \"msgid\": \"Upload progress\", \"msgstr\": [\"Uaslódáil dul chun cinn\"] }, \"When an incoming folder is selected, any conflicting files within it will also be overwritten.\": { \"msgid\": \"When an incoming folder is selected, any conflicting files within it will also be overwritten.\", \"msgstr\": [\"Nuair a roghnaítear fillteán isteach, déanfar aon chomhad contrártha laistigh de a fhorscríobh freisin.\"] }, \"When an incoming folder is selected, the content is written into the existing folder and a recursive conflict resolution is performed.\": { \"msgid\": \"When an incoming folder is selected, the content is written into the existing folder and a recursive conflict resolution is performed.\", \"msgstr\": [\"Nuair a roghnaítear fillteán isteach, scríobhtar an t-ábhar isteach san fhillteán atá ann cheana agus déantar réiteach coinbhleachta athchúrsach.\"] }, \"Which files do you want to keep?\": { \"msgid\": \"Which files do you want to keep?\", \"msgstr\": [\"Cé na comhaid ar mhaith leat a choinneáil?\"] }, \"You can either rename the file, skip this file or cancel the whole operation.\": { \"msgid\": \"You can either rename the file, skip this file or cancel the whole operation.\", \"msgstr\": [\"Is féidir leat an comhad a athainmniú, scipeáil an comhad seo nó an oibríocht iomlán a chealú.\"] }, \"You need to select at least one version of each file to continue.\": { \"msgid\": \"You need to select at least one version of each file to continue.\", \"msgstr\": [\"Ní mór duit leagan amháin ar a laghad de gach comhad a roghnú chun leanúint ar aghaidh.\"] } } } } }, { \"locale\": \"gd\", \"json\": { \"charset\": \"utf-8\", \"headers\": { \"Last-Translator\": \"Transifex Bot <>, 2022\", \"Language-Team\": \"Gaelic, Scottish (https://www.transifex.com/nextcloud/teams/64236/gd/)\", \"Content-Type\": \"text/plain; charset=UTF-8\", \"Language\": \"gd\", \"Plural-Forms\": \"nplurals=4; plural=(n==1 || n==11) ? 0 : (n==2 || n==12) ? 1 : (n > 2 && n < 20) ? 2 : 3;\" }, \"translations\": { \"\": { \"\": { \"msgid\": \"\", \"comments\": { \"translator\": \"\\nTranslators:\\nTransifex Bot <>, 2022\\n\" }, \"msgstr\": [\"Last-Translator: Transifex Bot <>, 2022\\nLanguage-Team: Gaelic, Scottish (https://www.transifex.com/nextcloud/teams/64236/gd/)\\nContent-Type: text/plain; charset=UTF-8\\nLanguage: gd\\nPlural-Forms: nplurals=4; plural=(n==1 || n==11) ? 0 : (n==2 || n==12) ? 1 : (n > 2 && n < 20) ? 2 : 3;\\n\"] }, \"{estimate} seconds left\": { \"msgid\": \"{estimate} seconds left\", \"msgstr\": [\"\"] }, \"{hours} hours and {minutes} minutes left\": { \"msgid\": \"{hours} hours and {minutes} minutes left\", \"msgstr\": [\"\"] }, \"{minutes} minutes left\": { \"msgid\": \"{minutes} minutes left\", \"msgstr\": [\"\"] }, \"a few seconds left\": { \"msgid\": \"a few seconds left\", \"msgstr\": [\"\"] }, \"Add\": { \"msgid\": \"Add\", \"msgstr\": [\"\"] }, \"Cancel uploads\": { \"msgid\": \"Cancel uploads\", \"msgstr\": [\"\"] }, \"estimating time left\": { \"msgid\": \"estimating time left\", \"msgstr\": [\"\"] }, \"paused\": { \"msgid\": \"paused\", \"msgstr\": [\"\"] } } } } }, { \"locale\": \"gl\", \"json\": { \"charset\": \"utf-8\", \"headers\": { \"Last-Translator\": \"Miguel Anxo Bouzada , 2025\", \"Language-Team\": \"Galician (https://app.transifex.com/nextcloud/teams/64236/gl/)\", \"Content-Type\": \"text/plain; charset=UTF-8\", \"Language\": \"gl\", \"Plural-Forms\": \"nplurals=2; plural=(n != 1);\" }, \"translations\": { \"\": { \"\": { \"msgid\": \"\", \"comments\": { \"translator\": \"\\nTranslators:\\nJoas Schilling, 2024\\nMiguel Anxo Bouzada , 2025\\n\" }, \"msgstr\": [\"Last-Translator: Miguel Anxo Bouzada , 2025\\nLanguage-Team: Galician (https://app.transifex.com/nextcloud/teams/64236/gl/)\\nContent-Type: text/plain; charset=UTF-8\\nLanguage: gl\\nPlural-Forms: nplurals=2; plural=(n != 1);\\n\"] }, '\"{segment}\" is a forbidden file or folder name.': { \"msgid\": '\"{segment}\" is a forbidden file or folder name.', \"msgstr\": [\"«{segment}» é un nome vedado para un ficheiro ou cartafol.\"] }, '\"{segment}\" is a forbidden file type.': { \"msgid\": '\"{segment}\" is a forbidden file type.', \"msgstr\": [\"«{segment}» é un tipo de ficheiro vedado.\"] }, '\"{segment}\" is not allowed inside a file or folder name.': { \"msgid\": '\"{segment}\" is not allowed inside a file or folder name.', \"msgstr\": [\"«{segment}» non está permitido dentro dun nome de ficheiro ou cartafol.\"] }, \"{count} file conflict\": { \"msgid\": \"{count} file conflict\", \"msgid_plural\": \"{count} files conflict\", \"msgstr\": [\"{count} conflito de ficheiros\", \"{count} conflitos de ficheiros\"] }, \"{count} file conflict in {dirname}\": { \"msgid\": \"{count} file conflict in {dirname}\", \"msgid_plural\": \"{count} file conflicts in {dirname}\", \"msgstr\": [\"{count} conflito de ficheiros en {dirname}\", \"{count} conflitos de ficheiros en {dirname}\"] }, \"{seconds} seconds left\": { \"msgid\": \"{seconds} seconds left\", \"msgid_plural\": \"{seconds} seconds left\", \"msgstr\": [\"falta {seconds} segundo\", \"faltan {seconds} segundos\"] }, \"{time} left\": { \"msgid\": \"{time} left\", \"comments\": { \"extracted\": \"TRANSLATORS time has the format 00:00:00\" }, \"msgstr\": [\"falta {time}\"] }, \"a few seconds left\": { \"msgid\": \"a few seconds left\", \"msgstr\": [\"faltan uns segundos\"] }, \"assembling\": { \"msgid\": \"assembling\", \"msgstr\": [\"ensamblando\"] }, \"Cancel\": { \"msgid\": \"Cancel\", \"msgstr\": [\"Cancelar\"] }, \"Cancel the entire operation\": { \"msgid\": \"Cancel the entire operation\", \"msgstr\": [\"Cancela toda a operación\"] }, \"Cancel uploads\": { \"msgid\": \"Cancel uploads\", \"msgstr\": [\"Cancelar envíos\"] }, \"Continue\": { \"msgid\": \"Continue\", \"msgstr\": [\"Continuar\"] }, \"Create new\": { \"msgid\": \"Create new\", \"msgstr\": [\"Crear un novo\"] }, \"estimating time left\": { \"msgid\": \"estimating time left\", \"msgstr\": [\"calculando canto tempo falta\"] }, \"Existing version\": { \"msgid\": \"Existing version\", \"msgstr\": [\"Versión existente\"] }, \"Failed to assemble the chunks together\": { \"msgid\": \"Failed to assemble the chunks together\", \"msgstr\": [\"Produciuse un fallo ao ensamblar os anacos\"] }, \"Failed to upload the file\": { \"msgid\": \"Failed to upload the file\", \"msgstr\": [\"Produciuse un fallo ao enviar o ficheiro\"] }, 'Filenames must not end with \"{segment}\".': { \"msgid\": 'Filenames must not end with \"{segment}\".', \"msgstr\": [\"Os nomes de ficheiros non deben rematar con «{segment}».\"] }, \"If you select both versions, the incoming file will have a number added to its name.\": { \"msgid\": \"If you select both versions, the incoming file will have a number added to its name.\", \"msgstr\": [\"Se selecciona ambas as versións, o ficheiro entrante terá un número engadido ao seu nome.\"] }, \"Invalid filename\": { \"msgid\": \"Invalid filename\", \"msgstr\": [\"O nome de ficheiro non é válido\"] }, \"Last modified date unknown\": { \"msgid\": \"Last modified date unknown\", \"msgstr\": [\"Data da última modificación descoñecida\"] }, \"New\": { \"msgid\": \"New\", \"msgstr\": [\"Nova\"] }, \"New filename\": { \"msgid\": \"New filename\", \"msgstr\": [\"Novo nome de ficheiro\"] }, \"New version\": { \"msgid\": \"New version\", \"msgstr\": [\"Nova versión\"] }, \"paused\": { \"msgid\": \"paused\", \"msgstr\": [\"detido\"] }, \"Preview image\": { \"msgid\": \"Preview image\", \"msgstr\": [\"Vista previa da imaxe\"] }, \"Rename\": { \"msgid\": \"Rename\", \"msgstr\": [\"Renomear\"] }, \"Select all checkboxes\": { \"msgid\": \"Select all checkboxes\", \"msgstr\": [\"Marcar todas as caixas de selección\"] }, \"Select all existing files\": { \"msgid\": \"Select all existing files\", \"msgstr\": [\"Seleccionar todos os ficheiros existentes\"] }, \"Select all new files\": { \"msgid\": \"Select all new files\", \"msgstr\": [\"Seleccionar todos os ficheiros novos\"] }, \"Skip\": { \"msgid\": \"Skip\", \"msgstr\": [\"Omitir\"] }, \"Skip {count} file\": { \"msgid\": \"Skip {count} file\", \"msgid_plural\": \"Skip {count} files\", \"msgstr\": [\"Omitir {count} ficheiro\", \"Omitir {count} ficheiros\"] }, \"Skip this file\": { \"msgid\": \"Skip this file\", \"msgstr\": [\"Omitir este ficheiro\"] }, \"Unknown size\": { \"msgid\": \"Unknown size\", \"msgstr\": [\"Tamaño descoñecido\"] }, \"Upload\": { \"msgid\": \"Upload\", \"msgstr\": [\"Enviar\"] }, \"Upload files\": { \"msgid\": \"Upload files\", \"msgstr\": [\"Enviar ficheiros\"] }, \"Upload folders\": { \"msgid\": \"Upload folders\", \"msgstr\": [\"Enviar cartafoles\"] }, \"Upload from device\": { \"msgid\": \"Upload from device\", \"msgstr\": [\"Enviar dende o dispositivo\"] }, \"Upload has been cancelled\": { \"msgid\": \"Upload has been cancelled\", \"msgstr\": [\"O envío foi cancelado\"] }, \"Upload has been skipped\": { \"msgid\": \"Upload has been skipped\", \"msgstr\": [\"O envío foi omitido\"] }, 'Upload of \"{folder}\" has been skipped': { \"msgid\": 'Upload of \"{folder}\" has been skipped', \"msgstr\": [\"O envío de «{folder}» foi omitido\"] }, \"Upload progress\": { \"msgid\": \"Upload progress\", \"msgstr\": [\"Progreso do envío\"] }, \"When an incoming folder is selected, any conflicting files within it will also be overwritten.\": { \"msgid\": \"When an incoming folder is selected, any conflicting files within it will also be overwritten.\", \"msgstr\": [\"Cando se selecciona un cartafol entrante, tamén se sobrescribirán os ficheiros en conflito dentro del.\"] }, \"When an incoming folder is selected, the content is written into the existing folder and a recursive conflict resolution is performed.\": { \"msgid\": \"When an incoming folder is selected, the content is written into the existing folder and a recursive conflict resolution is performed.\", \"msgstr\": [\"Cando se selecciona un cartafol entrante, o contido escríbese no cartafol existente e lévase a cabo unha resolución recursiva de conflitos.\"] }, \"Which files do you want to keep?\": { \"msgid\": \"Which files do you want to keep?\", \"msgstr\": [\"Que ficheiros quere conservar?\"] }, \"You can either rename the file, skip this file or cancel the whole operation.\": { \"msgid\": \"You can either rename the file, skip this file or cancel the whole operation.\", \"msgstr\": [\"Pode cambiar o nome do ficheiro, omitir este ficheiro ou cancelar toda a operación.\"] }, \"You need to select at least one version of each file to continue.\": { \"msgid\": \"You need to select at least one version of each file to continue.\", \"msgstr\": [\"Debe seleccionar polo menos unha versión de cada ficheiro para continuar.\"] } } } } }, { \"locale\": \"he\", \"json\": { \"charset\": \"utf-8\", \"headers\": { \"Last-Translator\": \"Transifex Bot <>, 2022\", \"Language-Team\": \"Hebrew (https://www.transifex.com/nextcloud/teams/64236/he/)\", \"Content-Type\": \"text/plain; charset=UTF-8\", \"Language\": \"he\", \"Plural-Forms\": \"nplurals=4; plural=(n == 1 && n % 1 == 0) ? 0 : (n == 2 && n % 1 == 0) ? 1: (n % 10 == 0 && n % 1 == 0 && n > 10) ? 2 : 3;\" }, \"translations\": { \"\": { \"\": { \"msgid\": \"\", \"comments\": { \"translator\": \"\\nTranslators:\\nTransifex Bot <>, 2022\\n\" }, \"msgstr\": [\"Last-Translator: Transifex Bot <>, 2022\\nLanguage-Team: Hebrew (https://www.transifex.com/nextcloud/teams/64236/he/)\\nContent-Type: text/plain; charset=UTF-8\\nLanguage: he\\nPlural-Forms: nplurals=4; plural=(n == 1 && n % 1 == 0) ? 0 : (n == 2 && n % 1 == 0) ? 1: (n % 10 == 0 && n % 1 == 0 && n > 10) ? 2 : 3;\\n\"] }, \"{estimate} seconds left\": { \"msgid\": \"{estimate} seconds left\", \"msgstr\": [\"\"] }, \"{hours} hours and {minutes} minutes left\": { \"msgid\": \"{hours} hours and {minutes} minutes left\", \"msgstr\": [\"\"] }, \"{minutes} minutes left\": { \"msgid\": \"{minutes} minutes left\", \"msgstr\": [\"\"] }, \"a few seconds left\": { \"msgid\": \"a few seconds left\", \"msgstr\": [\"\"] }, \"Add\": { \"msgid\": \"Add\", \"msgstr\": [\"\"] }, \"Cancel uploads\": { \"msgid\": \"Cancel uploads\", \"msgstr\": [\"\"] }, \"estimating time left\": { \"msgid\": \"estimating time left\", \"msgstr\": [\"\"] }, \"paused\": { \"msgid\": \"paused\", \"msgstr\": [\"\"] } } } } }, { \"locale\": \"hi_IN\", \"json\": { \"charset\": \"utf-8\", \"headers\": { \"Last-Translator\": \"Transifex Bot <>, 2022\", \"Language-Team\": \"Hindi (India) (https://www.transifex.com/nextcloud/teams/64236/hi_IN/)\", \"Content-Type\": \"text/plain; charset=UTF-8\", \"Language\": \"hi_IN\", \"Plural-Forms\": \"nplurals=2; plural=(n != 1);\" }, \"translations\": { \"\": { \"\": { \"msgid\": \"\", \"comments\": { \"translator\": \"\\nTranslators:\\nTransifex Bot <>, 2022\\n\" }, \"msgstr\": [\"Last-Translator: Transifex Bot <>, 2022\\nLanguage-Team: Hindi (India) (https://www.transifex.com/nextcloud/teams/64236/hi_IN/)\\nContent-Type: text/plain; charset=UTF-8\\nLanguage: hi_IN\\nPlural-Forms: nplurals=2; plural=(n != 1);\\n\"] }, \"{estimate} seconds left\": { \"msgid\": \"{estimate} seconds left\", \"msgstr\": [\"\"] }, \"{hours} hours and {minutes} minutes left\": { \"msgid\": \"{hours} hours and {minutes} minutes left\", \"msgstr\": [\"\"] }, \"{minutes} minutes left\": { \"msgid\": \"{minutes} minutes left\", \"msgstr\": [\"\"] }, \"a few seconds left\": { \"msgid\": \"a few seconds left\", \"msgstr\": [\"\"] }, \"Add\": { \"msgid\": \"Add\", \"msgstr\": [\"\"] }, \"Cancel uploads\": { \"msgid\": \"Cancel uploads\", \"msgstr\": [\"\"] }, \"estimating time left\": { \"msgid\": \"estimating time left\", \"msgstr\": [\"\"] }, \"paused\": { \"msgid\": \"paused\", \"msgstr\": [\"\"] } } } } }, { \"locale\": \"hr\", \"json\": { \"charset\": \"utf-8\", \"headers\": { \"Last-Translator\": \"Transifex Bot <>, 2022\", \"Language-Team\": \"Croatian (https://www.transifex.com/nextcloud/teams/64236/hr/)\", \"Content-Type\": \"text/plain; charset=UTF-8\", \"Language\": \"hr\", \"Plural-Forms\": \"nplurals=3; plural=n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2;\" }, \"translations\": { \"\": { \"\": { \"msgid\": \"\", \"comments\": { \"translator\": \"\\nTranslators:\\nTransifex Bot <>, 2022\\n\" }, \"msgstr\": [\"Last-Translator: Transifex Bot <>, 2022\\nLanguage-Team: Croatian (https://www.transifex.com/nextcloud/teams/64236/hr/)\\nContent-Type: text/plain; charset=UTF-8\\nLanguage: hr\\nPlural-Forms: nplurals=3; plural=n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2;\\n\"] }, \"{estimate} seconds left\": { \"msgid\": \"{estimate} seconds left\", \"msgstr\": [\"\"] }, \"{hours} hours and {minutes} minutes left\": { \"msgid\": \"{hours} hours and {minutes} minutes left\", \"msgstr\": [\"\"] }, \"{minutes} minutes left\": { \"msgid\": \"{minutes} minutes left\", \"msgstr\": [\"\"] }, \"a few seconds left\": { \"msgid\": \"a few seconds left\", \"msgstr\": [\"\"] }, \"Add\": { \"msgid\": \"Add\", \"msgstr\": [\"\"] }, \"Cancel uploads\": { \"msgid\": \"Cancel uploads\", \"msgstr\": [\"\"] }, \"estimating time left\": { \"msgid\": \"estimating time left\", \"msgstr\": [\"\"] }, \"paused\": { \"msgid\": \"paused\", \"msgstr\": [\"\"] } } } } }, { \"locale\": \"hsb\", \"json\": { \"charset\": \"utf-8\", \"headers\": { \"Last-Translator\": \"Transifex Bot <>, 2022\", \"Language-Team\": \"Upper Sorbian (https://www.transifex.com/nextcloud/teams/64236/hsb/)\", \"Content-Type\": \"text/plain; charset=UTF-8\", \"Language\": \"hsb\", \"Plural-Forms\": \"nplurals=4; plural=(n%100==1 ? 0 : n%100==2 ? 1 : n%100==3 || n%100==4 ? 2 : 3);\" }, \"translations\": { \"\": { \"\": { \"msgid\": \"\", \"comments\": { \"translator\": \"\\nTranslators:\\nTransifex Bot <>, 2022\\n\" }, \"msgstr\": [\"Last-Translator: Transifex Bot <>, 2022\\nLanguage-Team: Upper Sorbian (https://www.transifex.com/nextcloud/teams/64236/hsb/)\\nContent-Type: text/plain; charset=UTF-8\\nLanguage: hsb\\nPlural-Forms: nplurals=4; plural=(n%100==1 ? 0 : n%100==2 ? 1 : n%100==3 || n%100==4 ? 2 : 3);\\n\"] }, \"{estimate} seconds left\": { \"msgid\": \"{estimate} seconds left\", \"msgstr\": [\"\"] }, \"{hours} hours and {minutes} minutes left\": { \"msgid\": \"{hours} hours and {minutes} minutes left\", \"msgstr\": [\"\"] }, \"{minutes} minutes left\": { \"msgid\": \"{minutes} minutes left\", \"msgstr\": [\"\"] }, \"a few seconds left\": { \"msgid\": \"a few seconds left\", \"msgstr\": [\"\"] }, \"Add\": { \"msgid\": \"Add\", \"msgstr\": [\"\"] }, \"Cancel uploads\": { \"msgid\": \"Cancel uploads\", \"msgstr\": [\"\"] }, \"estimating time left\": { \"msgid\": \"estimating time left\", \"msgstr\": [\"\"] }, \"paused\": { \"msgid\": \"paused\", \"msgstr\": [\"\"] } } } } }, { \"locale\": \"hu\", \"json\": { \"charset\": \"utf-8\", \"headers\": { \"Last-Translator\": \"Gyuris Gellért , 2024\", \"Language-Team\": \"Hungarian (Hungary) (https://app.transifex.com/nextcloud/teams/64236/hu_HU/)\", \"Content-Type\": \"text/plain; charset=UTF-8\", \"Language\": \"hu_HU\", \"Plural-Forms\": \"nplurals=2; plural=(n != 1);\" }, \"translations\": { \"\": { \"\": { \"msgid\": \"\", \"comments\": { \"translator\": \"\\nTranslators:\\nJoas Schilling, 2024\\nGyuris Gellért , 2024\\n\" }, \"msgstr\": [\"Last-Translator: Gyuris Gellért , 2024\\nLanguage-Team: Hungarian (Hungary) (https://app.transifex.com/nextcloud/teams/64236/hu_HU/)\\nContent-Type: text/plain; charset=UTF-8\\nLanguage: hu_HU\\nPlural-Forms: nplurals=2; plural=(n != 1);\\n\"] }, '\"{segment}\" is a forbidden file or folder name.': { \"msgid\": '\"{segment}\" is a forbidden file or folder name.', \"msgstr\": ['Tiltott fájl- vagy mappanév: „{segment}\".'] }, '\"{segment}\" is a forbidden file type.': { \"msgid\": '\"{segment}\" is a forbidden file type.', \"msgstr\": ['Tiltott fájltípus: „{segment}\".'] }, '\"{segment}\" is not allowed inside a file or folder name.': { \"msgid\": '\"{segment}\" is not allowed inside a file or folder name.', \"msgstr\": ['Nem megengedett egy fájl- vagy mappanévben: „{segment}\".'] }, \"{count} file conflict\": { \"msgid\": \"{count} file conflict\", \"msgid_plural\": \"{count} files conflict\", \"msgstr\": [\"{count}fájlt érintő konfliktus\", \"{count} fájlt érintő konfliktus\"] }, \"{count} file conflict in {dirname}\": { \"msgid\": \"{count} file conflict in {dirname}\", \"msgid_plural\": \"{count} file conflicts in {dirname}\", \"msgstr\": [\"{count} fájlt érintő konfliktus a mappában: {dirname}\", \"{count}fájlt érintő konfliktus a mappában: {dirname}\"] }, \"{seconds} seconds left\": { \"msgid\": \"{seconds} seconds left\", \"msgstr\": [\"{} másodperc van hátra\"] }, \"{time} left\": { \"msgid\": \"{time} left\", \"comments\": { \"extracted\": \"TRANSLATORS time has the format 00:00:00\" }, \"msgstr\": [\"{time} van hátra\"] }, \"a few seconds left\": { \"msgid\": \"a few seconds left\", \"msgstr\": [\"pár másodperc van hátra\"] }, \"Cancel\": { \"msgid\": \"Cancel\", \"msgstr\": [\"Mégse\"] }, \"Cancel the entire operation\": { \"msgid\": \"Cancel the entire operation\", \"msgstr\": [\"Teljes művelet megszakítása\"] }, \"Cancel uploads\": { \"msgid\": \"Cancel uploads\", \"msgstr\": [\"Feltöltések megszakítása\"] }, \"Continue\": { \"msgid\": \"Continue\", \"msgstr\": [\"Tovább\"] }, \"Create new\": { \"msgid\": \"Create new\", \"msgstr\": [\"Új létrehozása\"] }, \"estimating time left\": { \"msgid\": \"estimating time left\", \"msgstr\": [\"hátralévő idő becslése\"] }, \"Existing version\": { \"msgid\": \"Existing version\", \"msgstr\": [\"Jelenlegi változat\"] }, 'Filenames must not end with \"{segment}\".': { \"msgid\": 'Filenames must not end with \"{segment}\".', \"msgstr\": [\"Fájlnevek nem végződhetnek erre: „{segment}”.\"] }, \"If you select both versions, the incoming file will have a number added to its name.\": { \"msgid\": \"If you select both versions, the incoming file will have a number added to its name.\", \"msgstr\": [\"Ha mindkét verziót kiválasztja, a bejövő fájl neve egy számmal egészül ki.\"] }, \"Invalid filename\": { \"msgid\": \"Invalid filename\", \"msgstr\": [\"Érvénytelen fájlnév\"] }, \"Last modified date unknown\": { \"msgid\": \"Last modified date unknown\", \"msgstr\": [\"Utolsó módosítás dátuma ismeretlen\"] }, \"New\": { \"msgid\": \"New\", \"msgstr\": [\"Új\"] }, \"New filename\": { \"msgid\": \"New filename\", \"msgstr\": [\"Új fájlnév\"] }, \"New version\": { \"msgid\": \"New version\", \"msgstr\": [\"Új verzió\"] }, \"paused\": { \"msgid\": \"paused\", \"msgstr\": [\"szüneteltetve\"] }, \"Preview image\": { \"msgid\": \"Preview image\", \"msgstr\": [\"Kép előnézete\"] }, \"Rename\": { \"msgid\": \"Rename\", \"msgstr\": [\"Átnevezés\"] }, \"Select all checkboxes\": { \"msgid\": \"Select all checkboxes\", \"msgstr\": [\"Minden jelölőnégyzet kijelölése\"] }, \"Select all existing files\": { \"msgid\": \"Select all existing files\", \"msgstr\": [\"Minden jelenlegi fájl kijelölése\"] }, \"Select all new files\": { \"msgid\": \"Select all new files\", \"msgstr\": [\"Minden új fájl kijelölése\"] }, \"Skip\": { \"msgid\": \"Skip\", \"msgstr\": [\"Kihagyás\"] }, \"Skip this file\": { \"msgid\": \"Skip this file\", \"msgid_plural\": \"Skip {count} files\", \"msgstr\": [\"Ezen fájl kihagyása\", \"{count}fájl kihagyása\"] }, \"Unknown size\": { \"msgid\": \"Unknown size\", \"msgstr\": [\"Ismeretlen méret\"] }, \"Upload\": { \"msgid\": \"Upload\", \"msgstr\": [\"Feltöltés\"] }, \"Upload files\": { \"msgid\": \"Upload files\", \"msgstr\": [\"Fájlok feltöltése\"] }, \"Upload folders\": { \"msgid\": \"Upload folders\", \"msgstr\": [\"Mappák feltöltése\"] }, \"Upload from device\": { \"msgid\": \"Upload from device\", \"msgstr\": [\"Feltöltés eszközről\"] }, \"Upload has been cancelled\": { \"msgid\": \"Upload has been cancelled\", \"msgstr\": [\"Feltöltés meg lett szakítva\"] }, \"Upload has been skipped\": { \"msgid\": \"Upload has been skipped\", \"msgstr\": [\"Feltöltés át lett ugorva\"] }, 'Upload of \"{folder}\" has been skipped': { \"msgid\": 'Upload of \"{folder}\" has been skipped', \"msgstr\": [\"„{folder}” feltöltése át lett ugorva\"] }, \"Upload progress\": { \"msgid\": \"Upload progress\", \"msgstr\": [\"Feltöltési folyamat\"] }, \"When an incoming folder is selected, any conflicting files within it will also be overwritten.\": { \"msgid\": \"When an incoming folder is selected, any conflicting files within it will also be overwritten.\", \"msgstr\": [\"Ha egy bejövő mappa van kiválasztva, a mappában lévő ütköző fájlok is felülírásra kerülnek.\"] }, \"When an incoming folder is selected, the content is written into the existing folder and a recursive conflict resolution is performed.\": { \"msgid\": \"When an incoming folder is selected, the content is written into the existing folder and a recursive conflict resolution is performed.\", \"msgstr\": [\"Ha egy bejövő mappa van kiválasztva, a tartalom a meglévő mappába íródik és rekurzív konfliktusfeloldás történik.\"] }, \"Which files do you want to keep?\": { \"msgid\": \"Which files do you want to keep?\", \"msgstr\": [\"Mely fájlokat kívánja megtartani?\"] }, \"You can either rename the file, skip this file or cancel the whole operation.\": { \"msgid\": \"You can either rename the file, skip this file or cancel the whole operation.\", \"msgstr\": [\"Átnevezheti a fájlt, kihagyhatja ezt a fájlt, vagy törölheti az egész műveletet.\"] }, \"You need to select at least one version of each file to continue.\": { \"msgid\": \"You need to select at least one version of each file to continue.\", \"msgstr\": [\"A folytatáshoz minden fájlból legalább egy verziót ki kell választani.\"] } } } } }, { \"locale\": \"hy\", \"json\": { \"charset\": \"utf-8\", \"headers\": { \"Last-Translator\": \"Transifex Bot <>, 2022\", \"Language-Team\": \"Armenian (https://www.transifex.com/nextcloud/teams/64236/hy/)\", \"Content-Type\": \"text/plain; charset=UTF-8\", \"Language\": \"hy\", \"Plural-Forms\": \"nplurals=2; plural=(n != 1);\" }, \"translations\": { \"\": { \"\": { \"msgid\": \"\", \"comments\": { \"translator\": \"\\nTranslators:\\nTransifex Bot <>, 2022\\n\" }, \"msgstr\": [\"Last-Translator: Transifex Bot <>, 2022\\nLanguage-Team: Armenian (https://www.transifex.com/nextcloud/teams/64236/hy/)\\nContent-Type: text/plain; charset=UTF-8\\nLanguage: hy\\nPlural-Forms: nplurals=2; plural=(n != 1);\\n\"] }, \"{estimate} seconds left\": { \"msgid\": \"{estimate} seconds left\", \"msgstr\": [\"\"] }, \"{hours} hours and {minutes} minutes left\": { \"msgid\": \"{hours} hours and {minutes} minutes left\", \"msgstr\": [\"\"] }, \"{minutes} minutes left\": { \"msgid\": \"{minutes} minutes left\", \"msgstr\": [\"\"] }, \"a few seconds left\": { \"msgid\": \"a few seconds left\", \"msgstr\": [\"\"] }, \"Add\": { \"msgid\": \"Add\", \"msgstr\": [\"\"] }, \"Cancel uploads\": { \"msgid\": \"Cancel uploads\", \"msgstr\": [\"\"] }, \"estimating time left\": { \"msgid\": \"estimating time left\", \"msgstr\": [\"\"] }, \"paused\": { \"msgid\": \"paused\", \"msgstr\": [\"\"] } } } } }, { \"locale\": \"ia\", \"json\": { \"charset\": \"utf-8\", \"headers\": { \"Last-Translator\": \"Transifex Bot <>, 2022\", \"Language-Team\": \"Interlingua (https://www.transifex.com/nextcloud/teams/64236/ia/)\", \"Content-Type\": \"text/plain; charset=UTF-8\", \"Language\": \"ia\", \"Plural-Forms\": \"nplurals=2; plural=(n != 1);\" }, \"translations\": { \"\": { \"\": { \"msgid\": \"\", \"comments\": { \"translator\": \"\\nTranslators:\\nTransifex Bot <>, 2022\\n\" }, \"msgstr\": [\"Last-Translator: Transifex Bot <>, 2022\\nLanguage-Team: Interlingua (https://www.transifex.com/nextcloud/teams/64236/ia/)\\nContent-Type: text/plain; charset=UTF-8\\nLanguage: ia\\nPlural-Forms: nplurals=2; plural=(n != 1);\\n\"] }, \"{estimate} seconds left\": { \"msgid\": \"{estimate} seconds left\", \"msgstr\": [\"\"] }, \"{hours} hours and {minutes} minutes left\": { \"msgid\": \"{hours} hours and {minutes} minutes left\", \"msgstr\": [\"\"] }, \"{minutes} minutes left\": { \"msgid\": \"{minutes} minutes left\", \"msgstr\": [\"\"] }, \"a few seconds left\": { \"msgid\": \"a few seconds left\", \"msgstr\": [\"\"] }, \"Add\": { \"msgid\": \"Add\", \"msgstr\": [\"\"] }, \"Cancel uploads\": { \"msgid\": \"Cancel uploads\", \"msgstr\": [\"\"] }, \"estimating time left\": { \"msgid\": \"estimating time left\", \"msgstr\": [\"\"] }, \"paused\": { \"msgid\": \"paused\", \"msgstr\": [\"\"] } } } } }, { \"locale\": \"id\", \"json\": { \"charset\": \"utf-8\", \"headers\": { \"Last-Translator\": \"Linerly , 2023\", \"Language-Team\": \"Indonesian (https://app.transifex.com/nextcloud/teams/64236/id/)\", \"Content-Type\": \"text/plain; charset=UTF-8\", \"Language\": \"id\", \"Plural-Forms\": \"nplurals=1; plural=0;\" }, \"translations\": { \"\": { \"\": { \"msgid\": \"\", \"comments\": { \"translator\": \"\\nTranslators:\\nJohn Molakvoæ , 2023\\nEmpty Slot Filler, 2023\\nLinerly , 2023\\n\" }, \"msgstr\": [\"Last-Translator: Linerly , 2023\\nLanguage-Team: Indonesian (https://app.transifex.com/nextcloud/teams/64236/id/)\\nContent-Type: text/plain; charset=UTF-8\\nLanguage: id\\nPlural-Forms: nplurals=1; plural=0;\\n\"] }, \"{count} file conflict\": { \"msgid\": \"{count} file conflict\", \"msgid_plural\": \"{count} files conflict\", \"msgstr\": [\"{count} berkas berkonflik\"] }, \"{count} file conflict in {dirname}\": { \"msgid\": \"{count} file conflict in {dirname}\", \"msgid_plural\": \"{count} file conflicts in {dirname}\", \"msgstr\": [\"{count} berkas berkonflik dalam {dirname}\"] }, \"{seconds} seconds left\": { \"msgid\": \"{seconds} seconds left\", \"msgstr\": [\"{seconds} detik tersisa\"] }, \"{time} left\": { \"msgid\": \"{time} left\", \"comments\": { \"extracted\": \"TRANSLATORS time has the format 00:00:00\" }, \"msgstr\": [\"{time} tersisa\"] }, \"a few seconds left\": { \"msgid\": \"a few seconds left\", \"msgstr\": [\"tinggal sebentar lagi\"] }, \"Cancel uploads\": { \"msgid\": \"Cancel uploads\", \"msgstr\": [\"Batalkan unggahan\"] }, \"Continue\": { \"msgid\": \"Continue\", \"msgstr\": [\"Lanjutkan\"] }, \"estimating time left\": { \"msgid\": \"estimating time left\", \"msgstr\": [\"memperkirakan waktu yang tersisa\"] }, \"Existing version\": { \"msgid\": \"Existing version\", \"msgstr\": [\"Versi yang ada\"] }, \"If you select both versions, the copied file will have a number added to its name.\": { \"msgid\": \"If you select both versions, the copied file will have a number added to its name.\", \"msgstr\": [\"Jika Anda memilih kedua versi, nama berkas yang disalin akan ditambahi angka.\"] }, \"Last modified date unknown\": { \"msgid\": \"Last modified date unknown\", \"msgstr\": [\"Tanggal perubahan terakhir tidak diketahui\"] }, \"New\": { \"msgid\": \"New\", \"msgstr\": [\"Baru\"] }, \"New version\": { \"msgid\": \"New version\", \"msgstr\": [\"Versi baru\"] }, \"paused\": { \"msgid\": \"paused\", \"msgstr\": [\"dijeda\"] }, \"Preview image\": { \"msgid\": \"Preview image\", \"msgstr\": [\"Gambar pratinjau\"] }, \"Select all checkboxes\": { \"msgid\": \"Select all checkboxes\", \"msgstr\": [\"Pilih semua kotak centang\"] }, \"Select all existing files\": { \"msgid\": \"Select all existing files\", \"msgstr\": [\"Pilih semua berkas yang ada\"] }, \"Select all new files\": { \"msgid\": \"Select all new files\", \"msgstr\": [\"Pilih semua berkas baru\"] }, \"Skip this file\": { \"msgid\": \"Skip this file\", \"msgid_plural\": \"Skip {count} files\", \"msgstr\": [\"Lewati {count} berkas\"] }, \"Unknown size\": { \"msgid\": \"Unknown size\", \"msgstr\": [\"Ukuran tidak diketahui\"] }, \"Upload cancelled\": { \"msgid\": \"Upload cancelled\", \"msgstr\": [\"Unggahan dibatalkan\"] }, \"Upload files\": { \"msgid\": \"Upload files\", \"msgstr\": [\"Unggah berkas\"] }, \"Which files do you want to keep?\": { \"msgid\": \"Which files do you want to keep?\", \"msgstr\": [\"Berkas mana yang Anda ingin tetap simpan?\"] }, \"You need to select at least one version of each file to continue.\": { \"msgid\": \"You need to select at least one version of each file to continue.\", \"msgstr\": [\"Anda harus memilih setidaknya satu versi dari masing-masing berkas untuk melanjutkan.\"] } } } } }, { \"locale\": \"ig\", \"json\": { \"charset\": \"utf-8\", \"headers\": { \"Last-Translator\": \"Transifex Bot <>, 2022\", \"Language-Team\": \"Igbo (https://www.transifex.com/nextcloud/teams/64236/ig/)\", \"Content-Type\": \"text/plain; charset=UTF-8\", \"Language\": \"ig\", \"Plural-Forms\": \"nplurals=1; plural=0;\" }, \"translations\": { \"\": { \"\": { \"msgid\": \"\", \"comments\": { \"translator\": \"\\nTranslators:\\nTransifex Bot <>, 2022\\n\" }, \"msgstr\": [\"Last-Translator: Transifex Bot <>, 2022\\nLanguage-Team: Igbo (https://www.transifex.com/nextcloud/teams/64236/ig/)\\nContent-Type: text/plain; charset=UTF-8\\nLanguage: ig\\nPlural-Forms: nplurals=1; plural=0;\\n\"] }, \"{estimate} seconds left\": { \"msgid\": \"{estimate} seconds left\", \"msgstr\": [\"\"] }, \"{hours} hours and {minutes} minutes left\": { \"msgid\": \"{hours} hours and {minutes} minutes left\", \"msgstr\": [\"\"] }, \"{minutes} minutes left\": { \"msgid\": \"{minutes} minutes left\", \"msgstr\": [\"\"] }, \"a few seconds left\": { \"msgid\": \"a few seconds left\", \"msgstr\": [\"\"] }, \"Add\": { \"msgid\": \"Add\", \"msgstr\": [\"\"] }, \"Cancel uploads\": { \"msgid\": \"Cancel uploads\", \"msgstr\": [\"\"] }, \"estimating time left\": { \"msgid\": \"estimating time left\", \"msgstr\": [\"\"] }, \"paused\": { \"msgid\": \"paused\", \"msgstr\": [\"\"] } } } } }, { \"locale\": \"is\", \"json\": { \"charset\": \"utf-8\", \"headers\": { \"Last-Translator\": \"Sveinn í Felli , 2025\", \"Language-Team\": \"Icelandic (https://app.transifex.com/nextcloud/teams/64236/is/)\", \"Content-Type\": \"text/plain; charset=UTF-8\", \"Language\": \"is\", \"Plural-Forms\": \"nplurals=2; plural=(n % 10 != 1 || n % 100 == 11);\" }, \"translations\": { \"\": { \"\": { \"msgid\": \"\", \"comments\": { \"translator\": \"\\nTranslators:\\nJoas Schilling, 2024\\nSveinn í Felli , 2025\\n\" }, \"msgstr\": [\"Last-Translator: Sveinn í Felli , 2025\\nLanguage-Team: Icelandic (https://app.transifex.com/nextcloud/teams/64236/is/)\\nContent-Type: text/plain; charset=UTF-8\\nLanguage: is\\nPlural-Forms: nplurals=2; plural=(n % 10 != 1 || n % 100 == 11);\\n\"] }, '\"{segment}\" is a forbidden file or folder name.': { \"msgid\": '\"{segment}\" is a forbidden file or folder name.', \"msgstr\": ['\"{segment}\" er bannað sem heiti á skrá eða möppu.'] }, '\"{segment}\" is a forbidden file type.': { \"msgid\": '\"{segment}\" is a forbidden file type.', \"msgstr\": ['\"{segment}\" er bönnuð skráartegund.'] }, '\"{segment}\" is not allowed inside a file or folder name.': { \"msgid\": '\"{segment}\" is not allowed inside a file or folder name.', \"msgstr\": ['\"{segment}\" er ekki leyfilegt innan í heiti á skrá eða möppu.'] }, \"{count} file conflict\": { \"msgid\": \"{count} file conflict\", \"msgid_plural\": \"{count} files conflict\", \"msgstr\": [\"{count} árekstur skráa\", \"{count} árekstrar skráa\"] }, \"{count} file conflict in {dirname}\": { \"msgid\": \"{count} file conflict in {dirname}\", \"msgid_plural\": \"{count} file conflicts in {dirname}\", \"msgstr\": [\"{count} árekstur skráa í {dirname}\", \"{count} árekstrar skráa í {dirname}\"] }, \"{seconds} seconds left\": { \"msgid\": \"{seconds} seconds left\", \"msgid_plural\": \"{seconds} seconds left\", \"msgstr\": [\"{seconds} sekúnda eftir\", \"{seconds} sekúndur eftir\"] }, \"{time} left\": { \"msgid\": \"{time} left\", \"comments\": { \"extracted\": \"TRANSLATORS time has the format 00:00:00\" }, \"msgstr\": [\"{time} eftir\"] }, \"a few seconds left\": { \"msgid\": \"a few seconds left\", \"msgstr\": [\"nokkrar sekúndur eftir\"] }, \"assembling\": { \"msgid\": \"assembling\", \"msgstr\": [\"set saman\"] }, \"Cancel\": { \"msgid\": \"Cancel\", \"msgstr\": [\"Hætta við\"] }, \"Cancel the entire operation\": { \"msgid\": \"Cancel the entire operation\", \"msgstr\": [\"Hætta við alla aðgerðina\"] }, \"Cancel uploads\": { \"msgid\": \"Cancel uploads\", \"msgstr\": [\"Hætta við innsendingar\"] }, \"Continue\": { \"msgid\": \"Continue\", \"msgstr\": [\"Halda áfram\"] }, \"Create new\": { \"msgid\": \"Create new\", \"msgstr\": [\"Búa til nýtt\"] }, \"estimating time left\": { \"msgid\": \"estimating time left\", \"msgstr\": [\"áætla tíma sem eftir er\"] }, \"Existing version\": { \"msgid\": \"Existing version\", \"msgstr\": [\"Fyrirliggjandi útgáfa\"] }, \"Failed assembling the chunks together\": { \"msgid\": \"Failed assembling the chunks together\", \"msgstr\": [\"Mistókst að setja saman bútana\"] }, \"Failed uploading the file\": { \"msgid\": \"Failed uploading the file\", \"msgstr\": [\"Mistókst að senda inn skrána\"] }, 'Filenames must not end with \"{segment}\".': { \"msgid\": 'Filenames must not end with \"{segment}\".', \"msgstr\": ['Skráaheiti mega ekki enda á \"{segment}\".'] }, \"If you select both versions, the incoming file will have a number added to its name.\": { \"msgid\": \"If you select both versions, the incoming file will have a number added to its name.\", \"msgstr\": [\"Ef þú velur báðar útgáfur, þá mun verða bætt tölustaf aftan við heiti innkomandi skrárinnar.\"] }, \"Invalid filename\": { \"msgid\": \"Invalid filename\", \"msgstr\": [\"Ógilt skráarheiti\"] }, \"Last modified date unknown\": { \"msgid\": \"Last modified date unknown\", \"msgstr\": [\"Síðasta breytingadagsetning er óþekkt\"] }, \"New\": { \"msgid\": \"New\", \"msgstr\": [\"Nýtt\"] }, \"New filename\": { \"msgid\": \"New filename\", \"msgstr\": [\"Nýtt skráarheiti\"] }, \"New version\": { \"msgid\": \"New version\", \"msgstr\": [\"Ný útgáfa\"] }, \"paused\": { \"msgid\": \"paused\", \"msgstr\": [\"í bið\"] }, \"Preview image\": { \"msgid\": \"Preview image\", \"msgstr\": [\"Forskoðun myndar\"] }, \"Rename\": { \"msgid\": \"Rename\", \"msgstr\": [\"Endurnefna\"] }, \"Select all checkboxes\": { \"msgid\": \"Select all checkboxes\", \"msgstr\": [\"Velja gátreiti\"] }, \"Select all existing files\": { \"msgid\": \"Select all existing files\", \"msgstr\": [\"Velja allar fyrirliggjandi skrár\"] }, \"Select all new files\": { \"msgid\": \"Select all new files\", \"msgstr\": [\"Velja allar nýjar skrár\"] }, \"Skip\": { \"msgid\": \"Skip\", \"msgstr\": [\"Sleppa\"] }, \"Skip this file\": { \"msgid\": \"Skip this file\", \"msgid_plural\": \"Skip {count} files\", \"msgstr\": [\"Sleppa þessari skrá\", \"Sleppa {count} skrám\"] }, \"Unknown size\": { \"msgid\": \"Unknown size\", \"msgstr\": [\"Óþekkt stærð\"] }, \"Upload\": { \"msgid\": \"Upload\", \"msgstr\": [\"Senda inn\"] }, \"Upload files\": { \"msgid\": \"Upload files\", \"msgstr\": [\"Senda inn skrár\"] }, \"Upload folders\": { \"msgid\": \"Upload folders\", \"msgstr\": [\"Senda inn möppur\"] }, \"Upload from device\": { \"msgid\": \"Upload from device\", \"msgstr\": [\"Senda inn frá tæki\"] }, \"Upload has been cancelled\": { \"msgid\": \"Upload has been cancelled\", \"msgstr\": [\"Hætt hefur verið við innsendingu\"] }, \"Upload has been skipped\": { \"msgid\": \"Upload has been skipped\", \"msgstr\": [\"Innsendingu hefur verið sleppt\"] }, 'Upload of \"{folder}\" has been skipped': { \"msgid\": 'Upload of \"{folder}\" has been skipped', \"msgstr\": ['Innsendingu á \"{folder}\" hefur verið sleppt'] }, \"Upload progress\": { \"msgid\": \"Upload progress\", \"msgstr\": [\"Framvinda innsendingar\"] }, \"When an incoming folder is selected, any conflicting files within it will also be overwritten.\": { \"msgid\": \"When an incoming folder is selected, any conflicting files within it will also be overwritten.\", \"msgstr\": [\"Þegar valin er mappa fyrir skrár sem berast, verður einnig skrifað yfir allar skrár í henni sem valda árekstrum.\"] }, \"When an incoming folder is selected, the content is written into the existing folder and a recursive conflict resolution is performed.\": { \"msgid\": \"When an incoming folder is selected, the content is written into the existing folder and a recursive conflict resolution is performed.\", \"msgstr\": [\"Þegar valin er mappa fyrir skrár sem berast, verður efnið skrifað inn í fyrirliggjandi möppu og farið í að leysa úr árekstrum.\"] }, \"Which files do you want to keep?\": { \"msgid\": \"Which files do you want to keep?\", \"msgstr\": [\"Hvaða skrám vilt þú vilt halda eftir?\"] }, \"You can either rename the file, skip this file or cancel the whole operation.\": { \"msgid\": \"You can either rename the file, skip this file or cancel the whole operation.\", \"msgstr\": [\"Þú getur annaðhvort endurnefnt skrána, sleppt þessari skrá eða hætt við alla þessa aðgerð.\"] }, \"You need to select at least one version of each file to continue.\": { \"msgid\": \"You need to select at least one version of each file to continue.\", \"msgstr\": [\"Þú verður að velja að minnsta kosti eina útgáfu af hverri skrá til að halda áfram.\"] } } } } }, { \"locale\": \"it\", \"json\": { \"charset\": \"utf-8\", \"headers\": { \"Last-Translator\": \"Roberto Resoli, 2025\", \"Language-Team\": \"Italian (https://app.transifex.com/nextcloud/teams/64236/it/)\", \"Content-Type\": \"text/plain; charset=UTF-8\", \"Language\": \"it\", \"Plural-Forms\": \"nplurals=3; plural=n == 1 ? 0 : n != 0 && n % 1000000 == 0 ? 1 : 2;\" }, \"translations\": { \"\": { \"\": { \"msgid\": \"\", \"comments\": { \"translator\": \"\\nTranslators:\\nJoas Schilling, 2024\\nFrancesco Sercia, 2024\\nalbanobattistella , 2024\\nLorenzo Taiocchi, 2025\\nesseti kappa, 2025\\nRoberto Resoli, 2025\\n\" }, \"msgstr\": [\"Last-Translator: Roberto Resoli, 2025\\nLanguage-Team: Italian (https://app.transifex.com/nextcloud/teams/64236/it/)\\nContent-Type: text/plain; charset=UTF-8\\nLanguage: it\\nPlural-Forms: nplurals=3; plural=n == 1 ? 0 : n != 0 && n % 1000000 == 0 ? 1 : 2;\\n\"] }, '\"{segment}\" is a forbidden file or folder name.': { \"msgid\": '\"{segment}\" is a forbidden file or folder name.', \"msgstr\": ['\"{segment}\" è un nome di file o cartella proibito.'] }, '\"{segment}\" is a forbidden file type.': { \"msgid\": '\"{segment}\" is a forbidden file type.', \"msgstr\": ['\"{segment}\"è un tipo di file proibito.'] }, '\"{segment}\" is not allowed inside a file or folder name.': { \"msgid\": '\"{segment}\" is not allowed inside a file or folder name.', \"msgstr\": [`\"{segment}\" non è consentito all'interno di un nome di file o cartella.`] }, \"{count} file conflict\": { \"msgid\": \"{count} file conflict\", \"msgid_plural\": \"{count} files conflict\", \"msgstr\": [\"{count} file in conflitto\", \"{count} file in conflitto\", \"{count} file in conflitto\"] }, \"{count} file conflict in {dirname}\": { \"msgid\": \"{count} file conflict in {dirname}\", \"msgid_plural\": \"{count} file conflicts in {dirname}\", \"msgstr\": [\"{count} file in conflitto in {dirname}\", \"{count} file in conflitto in {dirname}\", \"{count} file in conflitto in {dirname}\"] }, \"{seconds} seconds left\": { \"msgid\": \"{seconds} seconds left\", \"msgid_plural\": \"{seconds} seconds left\", \"msgstr\": [\"{seconds} secondo rimanente \", \"{seconds} secondi rimanenti \", \"{seconds} secondi rimanenti \"] }, \"{time} left\": { \"msgid\": \"{time} left\", \"comments\": { \"extracted\": \"TRANSLATORS time has the format 00:00:00\" }, \"msgstr\": [\"{time} rimanente\"] }, \"a few seconds left\": { \"msgid\": \"a few seconds left\", \"msgstr\": [\"alcuni secondi rimanenti\"] }, \"assembling\": { \"msgid\": \"assembling\", \"msgstr\": [\"assemblaggio\"] }, \"Cancel\": { \"msgid\": \"Cancel\", \"msgstr\": [\"Annulla\"] }, \"Cancel the entire operation\": { \"msgid\": \"Cancel the entire operation\", \"msgstr\": [\"Annulla l'intera operazione\"] }, \"Cancel uploads\": { \"msgid\": \"Cancel uploads\", \"msgstr\": [\"Annulla i caricamenti\"] }, \"Continue\": { \"msgid\": \"Continue\", \"msgstr\": [\"Continua\"] }, \"Create new\": { \"msgid\": \"Create new\", \"msgstr\": [\"Crea nuovo\"] }, \"estimating time left\": { \"msgid\": \"estimating time left\", \"msgstr\": [\"calcolo il tempo rimanente\"] }, \"Existing version\": { \"msgid\": \"Existing version\", \"msgstr\": [\"Versione esistente\"] }, \"Failed to assemble the chunks together\": { \"msgid\": \"Failed to assemble the chunks together\", \"msgstr\": [\"Impossibile unire i pezzi\"] }, \"Failed to upload the file\": { \"msgid\": \"Failed to upload the file\", \"msgstr\": [\"Impossibile caricare il file\"] }, 'Filenames must not end with \"{segment}\".': { \"msgid\": 'Filenames must not end with \"{segment}\".', \"msgstr\": ['I nomi dei file non devono terminare con \"{segment}\".'] }, \"If you select both versions, the incoming file will have a number added to its name.\": { \"msgid\": \"If you select both versions, the incoming file will have a number added to its name.\", \"msgstr\": [\"Se selezioni entrambe le versioni, nel nome del file copiato verrà aggiunto un numero \"] }, \"Invalid filename\": { \"msgid\": \"Invalid filename\", \"msgstr\": [\"Nome file non valido\"] }, \"Last modified date unknown\": { \"msgid\": \"Last modified date unknown\", \"msgstr\": [\"Ultima modifica sconosciuta\"] }, \"New\": { \"msgid\": \"New\", \"msgstr\": [\"Nuovo\"] }, \"New filename\": { \"msgid\": \"New filename\", \"msgstr\": [\"Nuovo nome file\"] }, \"New version\": { \"msgid\": \"New version\", \"msgstr\": [\"Nuova versione\"] }, \"paused\": { \"msgid\": \"paused\", \"msgstr\": [\"pausa\"] }, \"Preview image\": { \"msgid\": \"Preview image\", \"msgstr\": [\"Anteprima immagine\"] }, \"Rename\": { \"msgid\": \"Rename\", \"msgstr\": [\"Rinomina\"] }, \"Select all checkboxes\": { \"msgid\": \"Select all checkboxes\", \"msgstr\": [\"Seleziona tutte le caselle\"] }, \"Select all existing files\": { \"msgid\": \"Select all existing files\", \"msgstr\": [\"Seleziona tutti i file esistenti\"] }, \"Select all new files\": { \"msgid\": \"Select all new files\", \"msgstr\": [\"Seleziona tutti i nuovi file\"] }, \"Skip\": { \"msgid\": \"Skip\", \"msgstr\": [\"Salta\"] }, \"Skip {count} file\": { \"msgid\": \"Skip {count} file\", \"msgid_plural\": \"Skip {count} files\", \"msgstr\": [\"Sata {count} file\", \"Salta {count} file\", \"Salta {count} file\"] }, \"Skip this file\": { \"msgid\": \"Skip this file\", \"msgstr\": [\"Salta questo file\"] }, \"Unknown size\": { \"msgid\": \"Unknown size\", \"msgstr\": [\"Dimensione sconosciuta\"] }, \"Upload\": { \"msgid\": \"Upload\", \"msgstr\": [\"Caricamento\"] }, \"Upload files\": { \"msgid\": \"Upload files\", \"msgstr\": [\"Carica i file\"] }, \"Upload folders\": { \"msgid\": \"Upload folders\", \"msgstr\": [\"Carica cartelle\"] }, \"Upload from device\": { \"msgid\": \"Upload from device\", \"msgstr\": [\"Carica dal dispositivo\"] }, \"Upload has been cancelled\": { \"msgid\": \"Upload has been cancelled\", \"msgstr\": [\"Caricamento annullato\"] }, \"Upload has been skipped\": { \"msgid\": \"Upload has been skipped\", \"msgstr\": [\"Il caricamento è stato saltato\"] }, 'Upload of \"{folder}\" has been skipped': { \"msgid\": 'Upload of \"{folder}\" has been skipped', \"msgstr\": ['Il caricamento di \"{folder}\" è stato saltato'] }, \"Upload progress\": { \"msgid\": \"Upload progress\", \"msgstr\": [\"Progresso del caricamento\"] }, \"When an incoming folder is selected, any conflicting files within it will also be overwritten.\": { \"msgid\": \"When an incoming folder is selected, any conflicting files within it will also be overwritten.\", \"msgstr\": [\"Quando si seleziona una cartella in arrivo, anche tutti i file in conflitto al suo interno verranno sovrascritti.\"] }, \"When an incoming folder is selected, the content is written into the existing folder and a recursive conflict resolution is performed.\": { \"msgid\": \"When an incoming folder is selected, the content is written into the existing folder and a recursive conflict resolution is performed.\", \"msgstr\": [\"Quando si seleziona una cartella in arrivo, il contenuto viene scritto nella cartella esistente e viene eseguita una risoluzione ricorsiva dei conflitti.\"] }, \"Which files do you want to keep?\": { \"msgid\": \"Which files do you want to keep?\", \"msgstr\": [\"Quali file vuoi mantenere?\"] }, \"You can either rename the file, skip this file or cancel the whole operation.\": { \"msgid\": \"You can either rename the file, skip this file or cancel the whole operation.\", \"msgstr\": [\"È possibile rinominare il file, ignorarlo o annullare l'intera operazione.\"] }, \"You need to select at least one version of each file to continue.\": { \"msgid\": \"You need to select at least one version of each file to continue.\", \"msgstr\": [\"Devi selezionare almeno una versione di ogni file per continuare\"] } } } } }, { \"locale\": \"ja\", \"json\": { \"charset\": \"utf-8\", \"headers\": { \"Last-Translator\": \"kojima.imamura, 2025\", \"Language-Team\": \"Japanese (Japan) (https://app.transifex.com/nextcloud/teams/64236/ja_JP/)\", \"Content-Type\": \"text/plain; charset=UTF-8\", \"Language\": \"ja_JP\", \"Plural-Forms\": \"nplurals=1; plural=0;\" }, \"translations\": { \"\": { \"\": { \"msgid\": \"\", \"comments\": { \"translator\": \"\\nTranslators:\\nJoas Schilling, 2024\\nTakafumi AKAMATSU, 2024\\ndevi, 2024\\n貴宝, 2025\\nkshimohata, 2025\\nkojima.imamura, 2025\\n\" }, \"msgstr\": [\"Last-Translator: kojima.imamura, 2025\\nLanguage-Team: Japanese (Japan) (https://app.transifex.com/nextcloud/teams/64236/ja_JP/)\\nContent-Type: text/plain; charset=UTF-8\\nLanguage: ja_JP\\nPlural-Forms: nplurals=1; plural=0;\\n\"] }, '\"{segment}\" is a forbidden file or folder name.': { \"msgid\": '\"{segment}\" is a forbidden file or folder name.', \"msgstr\": ['\"{segment}\" は禁止されているファイルまたはフォルダ名です。'] }, '\"{segment}\" is a forbidden file type.': { \"msgid\": '\"{segment}\" is a forbidden file type.', \"msgstr\": ['\"{segment}\" は禁止されているファイルタイプです。'] }, '\"{segment}\" is not allowed inside a file or folder name.': { \"msgid\": '\"{segment}\" is not allowed inside a file or folder name.', \"msgstr\": ['ファイルまたはフォルダ名に \"{segment}\" を含めることはできません。'] }, \"{count} file conflict\": { \"msgid\": \"{count} file conflict\", \"msgid_plural\": \"{count} files conflict\", \"msgstr\": [\"{count} ファイル数の競合\"] }, \"{count} file conflict in {dirname}\": { \"msgid\": \"{count} file conflict in {dirname}\", \"msgid_plural\": \"{count} file conflicts in {dirname}\", \"msgstr\": [\"{dirname} で {count} 個のファイルが競合しています\"] }, \"{seconds} seconds left\": { \"msgid\": \"{seconds} seconds left\", \"msgid_plural\": \"{seconds} seconds left\", \"msgstr\": [\"残り{seconds}\"] }, \"{time} left\": { \"msgid\": \"{time} left\", \"comments\": { \"extracted\": \"TRANSLATORS time has the format 00:00:00\" }, \"msgstr\": [\"残り {time}\"] }, \"a few seconds left\": { \"msgid\": \"a few seconds left\", \"msgstr\": [\"残り数秒\"] }, \"assembling\": { \"msgid\": \"assembling\", \"msgstr\": [\"処理中\"] }, \"Cancel\": { \"msgid\": \"Cancel\", \"msgstr\": [\"キャンセル\"] }, \"Cancel the entire operation\": { \"msgid\": \"Cancel the entire operation\", \"msgstr\": [\"すべての操作をキャンセルする\"] }, \"Cancel uploads\": { \"msgid\": \"Cancel uploads\", \"msgstr\": [\"アップロードをキャンセル\"] }, \"Continue\": { \"msgid\": \"Continue\", \"msgstr\": [\"続ける\"] }, \"Create new\": { \"msgid\": \"Create new\", \"msgstr\": [\"新規作成\"] }, \"estimating time left\": { \"msgid\": \"estimating time left\", \"msgstr\": [\"概算残り時間\"] }, \"Existing version\": { \"msgid\": \"Existing version\", \"msgstr\": [\"既存バージョン\"] }, \"Failed to assemble the chunks together\": { \"msgid\": \"Failed to assemble the chunks together\", \"msgstr\": [\"チャンクの組み立てに失敗しました\"] }, \"Failed to upload the file\": { \"msgid\": \"Failed to upload the file\", \"msgstr\": [\"ファイルのアップロードに失敗しました\"] }, 'Filenames must not end with \"{segment}\".': { \"msgid\": 'Filenames must not end with \"{segment}\".', \"msgstr\": ['ファイル名の末尾に \"{segment}\" を付けることはできません。'] }, \"If you select both versions, the incoming file will have a number added to its name.\": { \"msgid\": \"If you select both versions, the incoming file will have a number added to its name.\", \"msgstr\": [\"両方のバージョンを選択した場合、受信ファイルの名前に数字が追加されます。\"] }, \"Invalid filename\": { \"msgid\": \"Invalid filename\", \"msgstr\": [\"無効なファイル名\"] }, \"Last modified date unknown\": { \"msgid\": \"Last modified date unknown\", \"msgstr\": [\"最終更新日不明\"] }, \"New\": { \"msgid\": \"New\", \"msgstr\": [\"新規作成\"] }, \"New filename\": { \"msgid\": \"New filename\", \"msgstr\": [\"新しいファイル名\"] }, \"New version\": { \"msgid\": \"New version\", \"msgstr\": [\"新しいバージョン\"] }, \"paused\": { \"msgid\": \"paused\", \"msgstr\": [\"一時停止中\"] }, \"Preview image\": { \"msgid\": \"Preview image\", \"msgstr\": [\"プレビュー画像\"] }, \"Rename\": { \"msgid\": \"Rename\", \"msgstr\": [\"名前を変更\"] }, \"Select all checkboxes\": { \"msgid\": \"Select all checkboxes\", \"msgstr\": [\"すべて選択\"] }, \"Select all existing files\": { \"msgid\": \"Select all existing files\", \"msgstr\": [\"すべての既存ファイルを選択\"] }, \"Select all new files\": { \"msgid\": \"Select all new files\", \"msgstr\": [\"すべての新規ファイルを選択\"] }, \"Skip\": { \"msgid\": \"Skip\", \"msgstr\": [\"スキップ\"] }, \"Skip {count} file\": { \"msgid\": \"Skip {count} file\", \"msgid_plural\": \"Skip {count} files\", \"msgstr\": [\"{count} 個のファイルをスキップする\"] }, \"Skip this file\": { \"msgid\": \"Skip this file\", \"msgstr\": [\"このファイルをスキップする\"] }, \"Unknown size\": { \"msgid\": \"Unknown size\", \"msgstr\": [\"サイズ不明\"] }, \"Upload\": { \"msgid\": \"Upload\", \"msgstr\": [\"アップロード\"] }, \"Upload files\": { \"msgid\": \"Upload files\", \"msgstr\": [\"ファイルをアップロード\"] }, \"Upload folders\": { \"msgid\": \"Upload folders\", \"msgstr\": [\"フォルダのアップロード\"] }, \"Upload from device\": { \"msgid\": \"Upload from device\", \"msgstr\": [\"デバイスからのアップロード\"] }, \"Upload has been cancelled\": { \"msgid\": \"Upload has been cancelled\", \"msgstr\": [\"アップロードはキャンセルされました\"] }, \"Upload has been skipped\": { \"msgid\": \"Upload has been skipped\", \"msgstr\": [\"アップロードがスキップされました\"] }, 'Upload of \"{folder}\" has been skipped': { \"msgid\": 'Upload of \"{folder}\" has been skipped', \"msgstr\": ['\"{folder}\" のアップロードがスキップされました'] }, \"Upload progress\": { \"msgid\": \"Upload progress\", \"msgstr\": [\"アップロード進行状況\"] }, \"When an incoming folder is selected, any conflicting files within it will also be overwritten.\": { \"msgid\": \"When an incoming folder is selected, any conflicting files within it will also be overwritten.\", \"msgstr\": [\"受信フォルダが選択されると、その中の競合するファイルもすべて上書きされます。\"] }, \"When an incoming folder is selected, the content is written into the existing folder and a recursive conflict resolution is performed.\": { \"msgid\": \"When an incoming folder is selected, the content is written into the existing folder and a recursive conflict resolution is performed.\", \"msgstr\": [\"受信フォルダが選択されると、その内容は既存のフォルダに書き込まれ、再帰的な競合解決が行われます。\"] }, \"Which files do you want to keep?\": { \"msgid\": \"Which files do you want to keep?\", \"msgstr\": [\"どのファイルを保持しますか?\"] }, \"You can either rename the file, skip this file or cancel the whole operation.\": { \"msgid\": \"You can either rename the file, skip this file or cancel the whole operation.\", \"msgstr\": [\"ファイル名を変更するか、このファイルをスキップするか、操作全体をキャンセルすることができます。\"] }, \"You need to select at least one version of each file to continue.\": { \"msgid\": \"You need to select at least one version of each file to continue.\", \"msgstr\": [\"続行するには、各ファイルの少なくとも1つのバージョンを選択する必要があります。\"] } } } } }, { \"locale\": \"ka\", \"json\": { \"charset\": \"utf-8\", \"headers\": { \"Last-Translator\": \"Transifex Bot <>, 2022\", \"Language-Team\": \"Georgian (https://www.transifex.com/nextcloud/teams/64236/ka/)\", \"Content-Type\": \"text/plain; charset=UTF-8\", \"Language\": \"ka\", \"Plural-Forms\": \"nplurals=2; plural=(n!=1);\" }, \"translations\": { \"\": { \"\": { \"msgid\": \"\", \"comments\": { \"translator\": \"\\nTranslators:\\nTransifex Bot <>, 2022\\n\" }, \"msgstr\": [\"Last-Translator: Transifex Bot <>, 2022\\nLanguage-Team: Georgian (https://www.transifex.com/nextcloud/teams/64236/ka/)\\nContent-Type: text/plain; charset=UTF-8\\nLanguage: ka\\nPlural-Forms: nplurals=2; plural=(n!=1);\\n\"] }, \"{estimate} seconds left\": { \"msgid\": \"{estimate} seconds left\", \"msgstr\": [\"\"] }, \"{hours} hours and {minutes} minutes left\": { \"msgid\": \"{hours} hours and {minutes} minutes left\", \"msgstr\": [\"\"] }, \"{minutes} minutes left\": { \"msgid\": \"{minutes} minutes left\", \"msgstr\": [\"\"] }, \"a few seconds left\": { \"msgid\": \"a few seconds left\", \"msgstr\": [\"\"] }, \"Add\": { \"msgid\": \"Add\", \"msgstr\": [\"\"] }, \"Cancel uploads\": { \"msgid\": \"Cancel uploads\", \"msgstr\": [\"\"] }, \"estimating time left\": { \"msgid\": \"estimating time left\", \"msgstr\": [\"\"] }, \"paused\": { \"msgid\": \"paused\", \"msgstr\": [\"\"] } } } } }, { \"locale\": \"ka_GE\", \"json\": { \"charset\": \"utf-8\", \"headers\": { \"Last-Translator\": \"Transifex Bot <>, 2022\", \"Language-Team\": \"Georgian (Georgia) (https://www.transifex.com/nextcloud/teams/64236/ka_GE/)\", \"Content-Type\": \"text/plain; charset=UTF-8\", \"Language\": \"ka_GE\", \"Plural-Forms\": \"nplurals=2; plural=(n!=1);\" }, \"translations\": { \"\": { \"\": { \"msgid\": \"\", \"comments\": { \"translator\": \"\\nTranslators:\\nTransifex Bot <>, 2022\\n\" }, \"msgstr\": [\"Last-Translator: Transifex Bot <>, 2022\\nLanguage-Team: Georgian (Georgia) (https://www.transifex.com/nextcloud/teams/64236/ka_GE/)\\nContent-Type: text/plain; charset=UTF-8\\nLanguage: ka_GE\\nPlural-Forms: nplurals=2; plural=(n!=1);\\n\"] }, \"{estimate} seconds left\": { \"msgid\": \"{estimate} seconds left\", \"msgstr\": [\"\"] }, \"{hours} hours and {minutes} minutes left\": { \"msgid\": \"{hours} hours and {minutes} minutes left\", \"msgstr\": [\"\"] }, \"{minutes} minutes left\": { \"msgid\": \"{minutes} minutes left\", \"msgstr\": [\"\"] }, \"a few seconds left\": { \"msgid\": \"a few seconds left\", \"msgstr\": [\"\"] }, \"Add\": { \"msgid\": \"Add\", \"msgstr\": [\"\"] }, \"Cancel uploads\": { \"msgid\": \"Cancel uploads\", \"msgstr\": [\"\"] }, \"estimating time left\": { \"msgid\": \"estimating time left\", \"msgstr\": [\"\"] }, \"paused\": { \"msgid\": \"paused\", \"msgstr\": [\"\"] } } } } }, { \"locale\": \"kab\", \"json\": { \"charset\": \"utf-8\", \"headers\": { \"Last-Translator\": \"ZiriSut, 2023\", \"Language-Team\": \"Kabyle (https://app.transifex.com/nextcloud/teams/64236/kab/)\", \"Content-Type\": \"text/plain; charset=UTF-8\", \"Language\": \"kab\", \"Plural-Forms\": \"nplurals=2; plural=(n != 1);\" }, \"translations\": { \"\": { \"\": { \"msgid\": \"\", \"comments\": { \"translator\": \"\\nTranslators:\\nZiriSut, 2023\\n\" }, \"msgstr\": [\"Last-Translator: ZiriSut, 2023\\nLanguage-Team: Kabyle (https://app.transifex.com/nextcloud/teams/64236/kab/)\\nContent-Type: text/plain; charset=UTF-8\\nLanguage: kab\\nPlural-Forms: nplurals=2; plural=(n != 1);\\n\"] }, \"{seconds} seconds left\": { \"msgid\": \"{seconds} seconds left\", \"msgstr\": [\"{seconds} tesdatin i d-yeqqimen\"] }, \"{time} left\": { \"msgid\": \"{time} left\", \"comments\": { \"extracted\": \"time has the format 00:00:00\" }, \"msgstr\": [\"{time} i d-yeqqimen\"] }, \"a few seconds left\": { \"msgid\": \"a few seconds left\", \"msgstr\": [\"qqiment-d kra n tesdatin kan\"] }, \"Add\": { \"msgid\": \"Add\", \"msgstr\": [\"Rnu\"] }, \"Cancel uploads\": { \"msgid\": \"Cancel uploads\", \"msgstr\": [\"Sefsex asali\"] }, \"estimating time left\": { \"msgid\": \"estimating time left\", \"msgstr\": [\"asizel n wakud i d-yeqqimen\"] }, \"paused\": { \"msgid\": \"paused\", \"msgstr\": [\"yeḥbes\"] }, \"Upload files\": { \"msgid\": \"Upload files\", \"msgstr\": [\"Sali-d ifuyla\"] } } } } }, { \"locale\": \"kk\", \"json\": { \"charset\": \"utf-8\", \"headers\": { \"Last-Translator\": \"Transifex Bot <>, 2022\", \"Language-Team\": \"Kazakh (https://www.transifex.com/nextcloud/teams/64236/kk/)\", \"Content-Type\": \"text/plain; charset=UTF-8\", \"Language\": \"kk\", \"Plural-Forms\": \"nplurals=2; plural=(n!=1);\" }, \"translations\": { \"\": { \"\": { \"msgid\": \"\", \"comments\": { \"translator\": \"\\nTranslators:\\nTransifex Bot <>, 2022\\n\" }, \"msgstr\": [\"Last-Translator: Transifex Bot <>, 2022\\nLanguage-Team: Kazakh (https://www.transifex.com/nextcloud/teams/64236/kk/)\\nContent-Type: text/plain; charset=UTF-8\\nLanguage: kk\\nPlural-Forms: nplurals=2; plural=(n!=1);\\n\"] }, \"{estimate} seconds left\": { \"msgid\": \"{estimate} seconds left\", \"msgstr\": [\"\"] }, \"{hours} hours and {minutes} minutes left\": { \"msgid\": \"{hours} hours and {minutes} minutes left\", \"msgstr\": [\"\"] }, \"{minutes} minutes left\": { \"msgid\": \"{minutes} minutes left\", \"msgstr\": [\"\"] }, \"a few seconds left\": { \"msgid\": \"a few seconds left\", \"msgstr\": [\"\"] }, \"Add\": { \"msgid\": \"Add\", \"msgstr\": [\"\"] }, \"Cancel uploads\": { \"msgid\": \"Cancel uploads\", \"msgstr\": [\"\"] }, \"estimating time left\": { \"msgid\": \"estimating time left\", \"msgstr\": [\"\"] }, \"paused\": { \"msgid\": \"paused\", \"msgstr\": [\"\"] } } } } }, { \"locale\": \"km\", \"json\": { \"charset\": \"utf-8\", \"headers\": { \"Last-Translator\": \"Transifex Bot <>, 2022\", \"Language-Team\": \"Khmer (https://www.transifex.com/nextcloud/teams/64236/km/)\", \"Content-Type\": \"text/plain; charset=UTF-8\", \"Language\": \"km\", \"Plural-Forms\": \"nplurals=1; plural=0;\" }, \"translations\": { \"\": { \"\": { \"msgid\": \"\", \"comments\": { \"translator\": \"\\nTranslators:\\nTransifex Bot <>, 2022\\n\" }, \"msgstr\": [\"Last-Translator: Transifex Bot <>, 2022\\nLanguage-Team: Khmer (https://www.transifex.com/nextcloud/teams/64236/km/)\\nContent-Type: text/plain; charset=UTF-8\\nLanguage: km\\nPlural-Forms: nplurals=1; plural=0;\\n\"] }, \"{estimate} seconds left\": { \"msgid\": \"{estimate} seconds left\", \"msgstr\": [\"\"] }, \"{hours} hours and {minutes} minutes left\": { \"msgid\": \"{hours} hours and {minutes} minutes left\", \"msgstr\": [\"\"] }, \"{minutes} minutes left\": { \"msgid\": \"{minutes} minutes left\", \"msgstr\": [\"\"] }, \"a few seconds left\": { \"msgid\": \"a few seconds left\", \"msgstr\": [\"\"] }, \"Add\": { \"msgid\": \"Add\", \"msgstr\": [\"\"] }, \"Cancel uploads\": { \"msgid\": \"Cancel uploads\", \"msgstr\": [\"\"] }, \"estimating time left\": { \"msgid\": \"estimating time left\", \"msgstr\": [\"\"] }, \"paused\": { \"msgid\": \"paused\", \"msgstr\": [\"\"] } } } } }, { \"locale\": \"kn\", \"json\": { \"charset\": \"utf-8\", \"headers\": { \"Last-Translator\": \"Transifex Bot <>, 2022\", \"Language-Team\": \"Kannada (https://www.transifex.com/nextcloud/teams/64236/kn/)\", \"Content-Type\": \"text/plain; charset=UTF-8\", \"Language\": \"kn\", \"Plural-Forms\": \"nplurals=2; plural=(n > 1);\" }, \"translations\": { \"\": { \"\": { \"msgid\": \"\", \"comments\": { \"translator\": \"\\nTranslators:\\nTransifex Bot <>, 2022\\n\" }, \"msgstr\": [\"Last-Translator: Transifex Bot <>, 2022\\nLanguage-Team: Kannada (https://www.transifex.com/nextcloud/teams/64236/kn/)\\nContent-Type: text/plain; charset=UTF-8\\nLanguage: kn\\nPlural-Forms: nplurals=2; plural=(n > 1);\\n\"] }, \"{estimate} seconds left\": { \"msgid\": \"{estimate} seconds left\", \"msgstr\": [\"\"] }, \"{hours} hours and {minutes} minutes left\": { \"msgid\": \"{hours} hours and {minutes} minutes left\", \"msgstr\": [\"\"] }, \"{minutes} minutes left\": { \"msgid\": \"{minutes} minutes left\", \"msgstr\": [\"\"] }, \"a few seconds left\": { \"msgid\": \"a few seconds left\", \"msgstr\": [\"\"] }, \"Add\": { \"msgid\": \"Add\", \"msgstr\": [\"\"] }, \"Cancel uploads\": { \"msgid\": \"Cancel uploads\", \"msgstr\": [\"\"] }, \"estimating time left\": { \"msgid\": \"estimating time left\", \"msgstr\": [\"\"] }, \"paused\": { \"msgid\": \"paused\", \"msgstr\": [\"\"] } } } } }, { \"locale\": \"ko\", \"json\": { \"charset\": \"utf-8\", \"headers\": { \"Last-Translator\": \"보헤민, 2025\", \"Language-Team\": \"Korean (https://app.transifex.com/nextcloud/teams/64236/ko/)\", \"Content-Type\": \"text/plain; charset=UTF-8\", \"Language\": \"ko\", \"Plural-Forms\": \"nplurals=1; plural=0;\" }, \"translations\": { \"\": { \"\": { \"msgid\": \"\", \"comments\": { \"translator\": \"\\nTranslators:\\nJoas Schilling, 2024\\nshin2012 , 2025\\n이상오, 2025\\n보헤민, 2025\\n\" }, \"msgstr\": [\"Last-Translator: 보헤민, 2025\\nLanguage-Team: Korean (https://app.transifex.com/nextcloud/teams/64236/ko/)\\nContent-Type: text/plain; charset=UTF-8\\nLanguage: ko\\nPlural-Forms: nplurals=1; plural=0;\\n\"] }, '\"{segment}\" is a forbidden file or folder name.': { \"msgid\": '\"{segment}\" is a forbidden file or folder name.', \"msgstr\": ['\"{segment}\"은(는) 금지된 파일 및 폴더 이름입니다.'] }, '\"{segment}\" is a forbidden file type.': { \"msgid\": '\"{segment}\" is a forbidden file type.', \"msgstr\": ['\"{segment}\"은(는) 금지된 파일 형식입니다.'] }, '\"{segment}\" is not allowed inside a file or folder name.': { \"msgid\": '\"{segment}\" is not allowed inside a file or folder name.', \"msgstr\": ['파일이나 폴더 이름에 \"{segment}\"을(를) 사용할 수 없습니다.'] }, \"{count} file conflict\": { \"msgid\": \"{count} file conflict\", \"msgid_plural\": \"{count} files conflict\", \"msgstr\": [\"{count}개의 파일이 충돌함\"] }, \"{count} file conflict in {dirname}\": { \"msgid\": \"{count} file conflict in {dirname}\", \"msgid_plural\": \"{count} file conflicts in {dirname}\", \"msgstr\": [\"{dirname}에서 {count}개의 파일이 충돌함\"] }, \"{seconds} seconds left\": { \"msgid\": \"{seconds} seconds left\", \"msgid_plural\": \"{seconds} seconds left\", \"msgstr\": [\"{seconds} 초 남음\"] }, \"{time} left\": { \"msgid\": \"{time} left\", \"comments\": { \"extracted\": \"TRANSLATORS time has the format 00:00:00\" }, \"msgstr\": [\"{time} 남음\"] }, \"a few seconds left\": { \"msgid\": \"a few seconds left\", \"msgstr\": [\"곧 완료\"] }, \"assembling\": { \"msgid\": \"assembling\", \"msgstr\": [\"취합 중\"] }, \"Cancel\": { \"msgid\": \"Cancel\", \"msgstr\": [\"취소\"] }, \"Cancel the entire operation\": { \"msgid\": \"Cancel the entire operation\", \"msgstr\": [\"전체 작업을 취소\"] }, \"Cancel uploads\": { \"msgid\": \"Cancel uploads\", \"msgstr\": [\"업로드 취소\"] }, \"Continue\": { \"msgid\": \"Continue\", \"msgstr\": [\"확인\"] }, \"Create new\": { \"msgid\": \"Create new\", \"msgstr\": [\"새로 만들기\"] }, \"estimating time left\": { \"msgid\": \"estimating time left\", \"msgstr\": [\"남은 시간 계산\"] }, \"Existing version\": { \"msgid\": \"Existing version\", \"msgstr\": [\"현재 버전\"] }, \"Failed to assemble the chunks together\": { \"msgid\": \"Failed to assemble the chunks together\", \"msgstr\": [\"조각을 취합하는 데 실패\"] }, \"Failed to upload the file\": { \"msgid\": \"Failed to upload the file\", \"msgstr\": [\"파일을 업로드하는 데 실패\"] }, 'Filenames must not end with \"{segment}\".': { \"msgid\": 'Filenames must not end with \"{segment}\".', \"msgstr\": ['파일 이름은 \"{segment}\"(으)로 끝나야 합니다.'] }, \"If you select both versions, the incoming file will have a number added to its name.\": { \"msgid\": \"If you select both versions, the incoming file will have a number added to its name.\", \"msgstr\": [\"두 파일을 모두 선택하면, 들어오는 파일의 이름에 번호가 추가됩니다.\"] }, \"Invalid filename\": { \"msgid\": \"Invalid filename\", \"msgstr\": [\"잘못된 파일 이름\"] }, \"Last modified date unknown\": { \"msgid\": \"Last modified date unknown\", \"msgstr\": [\"최근 수정일 알 수 없음\"] }, \"New\": { \"msgid\": \"New\", \"msgstr\": [\"새로 만들기\"] }, \"New filename\": { \"msgid\": \"New filename\", \"msgstr\": [\"새 파일 이름\"] }, \"New version\": { \"msgid\": \"New version\", \"msgstr\": [\"새 버전\"] }, \"paused\": { \"msgid\": \"paused\", \"msgstr\": [\"일시정지됨\"] }, \"Preview image\": { \"msgid\": \"Preview image\", \"msgstr\": [\"미리보기 이미지\"] }, \"Rename\": { \"msgid\": \"Rename\", \"msgstr\": [\"이름 바꾸기\"] }, \"Select all checkboxes\": { \"msgid\": \"Select all checkboxes\", \"msgstr\": [\"모든 체크박스 선택\"] }, \"Select all existing files\": { \"msgid\": \"Select all existing files\", \"msgstr\": [\"기존 파일을 모두 선택\"] }, \"Select all new files\": { \"msgid\": \"Select all new files\", \"msgstr\": [\"새로운 파일을 모두 선택\"] }, \"Skip\": { \"msgid\": \"Skip\", \"msgstr\": [\"건너뛰기\"] }, \"Skip {count} file\": { \"msgid\": \"Skip {count} file\", \"msgid_plural\": \"Skip {count} files\", \"msgstr\": [\"{count}개 파일 건너뛰기\"] }, \"Skip this file\": { \"msgid\": \"Skip this file\", \"msgstr\": [\"이 파일 건너뛰기\"] }, \"Unknown size\": { \"msgid\": \"Unknown size\", \"msgstr\": [\"크기를 알 수 없음\"] }, \"Upload\": { \"msgid\": \"Upload\", \"msgstr\": [\"업로드\"] }, \"Upload files\": { \"msgid\": \"Upload files\", \"msgstr\": [\"파일 업로드\"] }, \"Upload folders\": { \"msgid\": \"Upload folders\", \"msgstr\": [\"폴더 업로드\"] }, \"Upload from device\": { \"msgid\": \"Upload from device\", \"msgstr\": [\"장치에서 업로드\"] }, \"Upload has been cancelled\": { \"msgid\": \"Upload has been cancelled\", \"msgstr\": [\"업로드가 취소되었습니다.\"] }, \"Upload has been skipped\": { \"msgid\": \"Upload has been skipped\", \"msgstr\": [\"업로드를 건너뛰었습니다.\"] }, 'Upload of \"{folder}\" has been skipped': { \"msgid\": 'Upload of \"{folder}\" has been skipped', \"msgstr\": ['\"{folder}\" 업로드를 건너뛰었습니다.'] }, \"Upload progress\": { \"msgid\": \"Upload progress\", \"msgstr\": [\"업로드 진행도\"] }, \"When an incoming folder is selected, any conflicting files within it will also be overwritten.\": { \"msgid\": \"When an incoming folder is selected, any conflicting files within it will also be overwritten.\", \"msgstr\": [\"들어오는 폴더를 선택했다면, 충돌하는 내부 파일들은 덮어쓰기 됩니다.\"] }, \"When an incoming folder is selected, the content is written into the existing folder and a recursive conflict resolution is performed.\": { \"msgid\": \"When an incoming folder is selected, the content is written into the existing folder and a recursive conflict resolution is performed.\", \"msgstr\": [\"들어오는 폴더가 선택되면, 그 안의 콘텐츠가 기존 폴더에 기록되고 재귀적 충돌 해결이 수행됩니다.\"] }, \"Which files do you want to keep?\": { \"msgid\": \"Which files do you want to keep?\", \"msgstr\": [\"어떤 파일을 보존하시겠습니까?\"] }, \"You can either rename the file, skip this file or cancel the whole operation.\": { \"msgid\": \"You can either rename the file, skip this file or cancel the whole operation.\", \"msgstr\": [\"파일 이름을 바꾸거나, 이 파일을 건너뛰거나 모든 작업을 취소할 수 있습니다.\"] }, \"You need to select at least one version of each file to continue.\": { \"msgid\": \"You need to select at least one version of each file to continue.\", \"msgstr\": [\"계속하기 위해서는 한 파일에 최소 하나의 버전을 선택해야 합니다.\"] } } } } }, { \"locale\": \"la\", \"json\": { \"charset\": \"utf-8\", \"headers\": { \"Last-Translator\": \"Transifex Bot <>, 2022\", \"Language-Team\": \"Latin (https://www.transifex.com/nextcloud/teams/64236/la/)\", \"Content-Type\": \"text/plain; charset=UTF-8\", \"Language\": \"la\", \"Plural-Forms\": \"nplurals=2; plural=(n != 1);\" }, \"translations\": { \"\": { \"\": { \"msgid\": \"\", \"comments\": { \"translator\": \"\\nTranslators:\\nTransifex Bot <>, 2022\\n\" }, \"msgstr\": [\"Last-Translator: Transifex Bot <>, 2022\\nLanguage-Team: Latin (https://www.transifex.com/nextcloud/teams/64236/la/)\\nContent-Type: text/plain; charset=UTF-8\\nLanguage: la\\nPlural-Forms: nplurals=2; plural=(n != 1);\\n\"] }, \"{estimate} seconds left\": { \"msgid\": \"{estimate} seconds left\", \"msgstr\": [\"\"] }, \"{hours} hours and {minutes} minutes left\": { \"msgid\": \"{hours} hours and {minutes} minutes left\", \"msgstr\": [\"\"] }, \"{minutes} minutes left\": { \"msgid\": \"{minutes} minutes left\", \"msgstr\": [\"\"] }, \"a few seconds left\": { \"msgid\": \"a few seconds left\", \"msgstr\": [\"\"] }, \"Add\": { \"msgid\": \"Add\", \"msgstr\": [\"\"] }, \"Cancel uploads\": { \"msgid\": \"Cancel uploads\", \"msgstr\": [\"\"] }, \"estimating time left\": { \"msgid\": \"estimating time left\", \"msgstr\": [\"\"] }, \"paused\": { \"msgid\": \"paused\", \"msgstr\": [\"\"] } } } } }, { \"locale\": \"lb\", \"json\": { \"charset\": \"utf-8\", \"headers\": { \"Last-Translator\": \"Transifex Bot <>, 2022\", \"Language-Team\": \"Luxembourgish (https://www.transifex.com/nextcloud/teams/64236/lb/)\", \"Content-Type\": \"text/plain; charset=UTF-8\", \"Language\": \"lb\", \"Plural-Forms\": \"nplurals=2; plural=(n != 1);\" }, \"translations\": { \"\": { \"\": { \"msgid\": \"\", \"comments\": { \"translator\": \"\\nTranslators:\\nTransifex Bot <>, 2022\\n\" }, \"msgstr\": [\"Last-Translator: Transifex Bot <>, 2022\\nLanguage-Team: Luxembourgish (https://www.transifex.com/nextcloud/teams/64236/lb/)\\nContent-Type: text/plain; charset=UTF-8\\nLanguage: lb\\nPlural-Forms: nplurals=2; plural=(n != 1);\\n\"] }, \"{estimate} seconds left\": { \"msgid\": \"{estimate} seconds left\", \"msgstr\": [\"\"] }, \"{hours} hours and {minutes} minutes left\": { \"msgid\": \"{hours} hours and {minutes} minutes left\", \"msgstr\": [\"\"] }, \"{minutes} minutes left\": { \"msgid\": \"{minutes} minutes left\", \"msgstr\": [\"\"] }, \"a few seconds left\": { \"msgid\": \"a few seconds left\", \"msgstr\": [\"\"] }, \"Add\": { \"msgid\": \"Add\", \"msgstr\": [\"\"] }, \"Cancel uploads\": { \"msgid\": \"Cancel uploads\", \"msgstr\": [\"\"] }, \"estimating time left\": { \"msgid\": \"estimating time left\", \"msgstr\": [\"\"] }, \"paused\": { \"msgid\": \"paused\", \"msgstr\": [\"\"] } } } } }, { \"locale\": \"lo\", \"json\": { \"charset\": \"utf-8\", \"headers\": { \"Last-Translator\": \"bone NI, 2025\", \"Language-Team\": \"Lao (https://app.transifex.com/nextcloud/teams/64236/lo/)\", \"Content-Type\": \"text/plain; charset=UTF-8\", \"Language\": \"lo\", \"Plural-Forms\": \"nplurals=1; plural=0;\" }, \"translations\": { \"\": { \"\": { \"msgid\": \"\", \"comments\": { \"translator\": \"\\nTranslators:\\nbone NI, 2025\\n\" }, \"msgstr\": [\"Last-Translator: bone NI, 2025\\nLanguage-Team: Lao (https://app.transifex.com/nextcloud/teams/64236/lo/)\\nContent-Type: text/plain; charset=UTF-8\\nLanguage: lo\\nPlural-Forms: nplurals=1; plural=0;\\n\"] }, '\"{segment}\" is a forbidden file or folder name.': { \"msgid\": '\"{segment}\" is a forbidden file or folder name.', \"msgstr\": ['\"{segment}\" ແມ່ນຊື່ໄຟລ໌ ຫຼື ໂຟລເດີທີ່ບໍ່ອະນຸຍາດ.'] }, '\"{segment}\" is a forbidden file type.': { \"msgid\": '\"{segment}\" is a forbidden file type.', \"msgstr\": ['\"{segment}\" ແມ່ນປະເພດໄຟລ໌ທີ່ບໍ່ອະນຸຍາດ.'] }, '\"{segment}\" is not allowed inside a file or folder name.': { \"msgid\": '\"{segment}\" is not allowed inside a file or folder name.', \"msgstr\": ['ບໍ່ອະນຸຍາດໃຫ້ມີ \"{segment}\" ຢູ່​ໃນຊື່ໄຟລ໌ ຫຼື ໂຟລເດີ.'] }, \"{count} file conflict\": { \"msgid\": \"{count} file conflict\", \"msgid_plural\": \"{count} files conflict\", \"msgstr\": [\"ໄຟລ໌ຊ້ຳກັນ {count} ລາຍການ\"] }, \"{count} file conflict in {dirname}\": { \"msgid\": \"{count} file conflict in {dirname}\", \"msgid_plural\": \"{count} file conflicts in {dirname}\", \"msgstr\": [\"ໄຟລ໌ຊ້ຳກັນ {count} ລາຍການ ໃນ {dirname}\"] }, \"{seconds} seconds left\": { \"msgid\": \"{seconds} seconds left\", \"msgid_plural\": \"{seconds} seconds left\", \"msgstr\": [\"ເຫຼືອເວລາ {seconds} ວິນາທີ\"] }, \"{time} left\": { \"msgid\": \"{time} left\", \"comments\": { \"extracted\": \"TRANSLATORS time has the format 00:00:00\" }, \"msgstr\": [\"ເຫຼືອເວລາ {time}\"] }, \"a few seconds left\": { \"msgid\": \"a few seconds left\", \"msgstr\": [\"ເຫຼືອເວລາອີກບໍ່ດົນ\"] }, \"assembling\": { \"msgid\": \"assembling\", \"msgstr\": [\"ກຳລັງຮວບຮວມ\"] }, \"Cancel\": { \"msgid\": \"Cancel\", \"msgstr\": [\"ຍົກເລີກ\"] }, \"Cancel the entire operation\": { \"msgid\": \"Cancel the entire operation\", \"msgstr\": [\"ຍົກເລີກການດຳເນີນການທັງໝົດ\"] }, \"Cancel uploads\": { \"msgid\": \"Cancel uploads\", \"msgstr\": [\"ຍົກເລີກການອັບໂຫຼດ\"] }, \"Continue\": { \"msgid\": \"Continue\", \"msgstr\": [\"ດຳເນີນການຕໍ່\"] }, \"Create new\": { \"msgid\": \"Create new\", \"msgstr\": [\"ສ້າງໃໝ່\"] }, \"estimating time left\": { \"msgid\": \"estimating time left\", \"msgstr\": [\"ກຳລັງຄາດຄະເນເວລາທີ່ເຫຼືອ\"] }, \"Existing version\": { \"msgid\": \"Existing version\", \"msgstr\": [\"ສະບັບທີ່ມີຢູ່ແລ້ວ\"] }, \"Failed to assemble the chunks together\": { \"msgid\": \"Failed to assemble the chunks together\", \"msgstr\": [\"ການຮວບຮວມສ່ວນຕ່າງໆເຂົ້າກັນບໍ່ສຳເລັດ\"] }, \"Failed to upload the file\": { \"msgid\": \"Failed to upload the file\", \"msgstr\": [\"ອັບໂຫຼດໄຟລ໌ບໍ່ສຳເລັດ\"] }, 'Filenames must not end with \"{segment}\".': { \"msgid\": 'Filenames must not end with \"{segment}\".', \"msgstr\": ['ຊື່ໄຟລ໌ຕ້ອງບໍ່ລົງທ້າຍດ້ວຍ \"{segment}\".'] }, \"If you select both versions, the incoming file will have a number added to its name.\": { \"msgid\": \"If you select both versions, the incoming file will have a number added to its name.\", \"msgstr\": [\"ຖ້າທ່ານເລືອກທັງສອງສະບັບ, ໄຟລ໌ທີ່ເຂົ້າມາໃໝ່ຈະຖືກເພີ່ມຕົວເລກໃສ່ທ້າຍຊື່.\"] }, \"Invalid filename\": { \"msgid\": \"Invalid filename\", \"msgstr\": [\"ຊື່ໄຟລ໌ບໍ່ຖືກຕ້ອງ\"] }, \"Last modified date unknown\": { \"msgid\": \"Last modified date unknown\", \"msgstr\": [\"ບໍ່ຊາບວັນທີແກ້ໄຂຫຼ້າສຸດ\"] }, \"New\": { \"msgid\": \"New\", \"msgstr\": [\"ໃໝ່\"] }, \"New filename\": { \"msgid\": \"New filename\", \"msgstr\": [\"ຊື່ໄຟລ໌ໃໝ່\"] }, \"New version\": { \"msgid\": \"New version\", \"msgstr\": [\"ສະບັບໃໝ່\"] }, \"paused\": { \"msgid\": \"paused\", \"msgstr\": [\"ຢຸດຊົ່ວຄາວ\"] }, \"Preview image\": { \"msgid\": \"Preview image\", \"msgstr\": [\"ເບິ່ງຕົວຢ່າງຮູບ\"] }, \"Rename\": { \"msgid\": \"Rename\", \"msgstr\": [\"ປ່ຽນຊື່\"] }, \"Select all checkboxes\": { \"msgid\": \"Select all checkboxes\", \"msgstr\": [\"ເລືອກທຸກຊ່ອງໝາຍຕິກ\"] }, \"Select all existing files\": { \"msgid\": \"Select all existing files\", \"msgstr\": [\"ເລືອກໄຟລ໌ທີ່ມີຢູ່ແລ້ວທັງໝົດ\"] }, \"Select all new files\": { \"msgid\": \"Select all new files\", \"msgstr\": [\"ເລືອກໄຟລ໌ໃໝ່ທັງໝົດ\"] }, \"Skip\": { \"msgid\": \"Skip\", \"msgstr\": [\"ຂ້າມ\"] }, \"Skip {count} file\": { \"msgid\": \"Skip {count} file\", \"msgid_plural\": \"Skip {count} files\", \"msgstr\": [\"ຂ້າມ {count} ໄຟລ໌\"] }, \"Skip this file\": { \"msgid\": \"Skip this file\", \"msgstr\": [\"ຂ້າມໄຟລ໌ນີ້\"] }, \"Unknown size\": { \"msgid\": \"Unknown size\", \"msgstr\": [\"ບໍ່ຊາບຂະໜາດ\"] }, \"Upload\": { \"msgid\": \"Upload\", \"msgstr\": [\"ອັບໂຫຼດ\"] }, \"Upload files\": { \"msgid\": \"Upload files\", \"msgstr\": [\"ອັບໂຫຼດໄຟລ໌\"] }, \"Upload folders\": { \"msgid\": \"Upload folders\", \"msgstr\": [\"ອັບໂຫຼດໂຟລເດີ\"] }, \"Upload from device\": { \"msgid\": \"Upload from device\", \"msgstr\": [\"ອັບໂຫຼດຈາກອຸປະກອນ\"] }, \"Upload has been cancelled\": { \"msgid\": \"Upload has been cancelled\", \"msgstr\": [\"ການອັບໂຫຼດໄດ້ຖືກຍົກເລີກແລ້ວ\"] }, \"Upload has been skipped\": { \"msgid\": \"Upload has been skipped\", \"msgstr\": [\"ການອັບໂຫຼດໄດ້ຖືກຂ້າມໄປແລ້ວ\"] }, 'Upload of \"{folder}\" has been skipped': { \"msgid\": 'Upload of \"{folder}\" has been skipped', \"msgstr\": ['ການອັບໂຫຼດ \"{folder}\" ໄດ້ຖືກຂ້າມໄປແລ້ວ'] }, \"Upload progress\": { \"msgid\": \"Upload progress\", \"msgstr\": [\"ຄວາມຄືບໜ້າການອັບໂຫຼດ\"] }, \"When an incoming folder is selected, any conflicting files within it will also be overwritten.\": { \"msgid\": \"When an incoming folder is selected, any conflicting files within it will also be overwritten.\", \"msgstr\": [\"ເມື່ອເລືອກໂຟລເດີທີ່ເຂົ້າມາໃໝ່, ໄຟລ໌ໃດໆທີ່ຊ້ຳກັນຢູ່ພາຍໃນກໍຈະຖືກຂຽນທັບເຊັ່ນກັນ.\"] }, \"When an incoming folder is selected, the content is written into the existing folder and a recursive conflict resolution is performed.\": { \"msgid\": \"When an incoming folder is selected, the content is written into the existing folder and a recursive conflict resolution is performed.\", \"msgstr\": [\"ເມື່ອເລືອກໂຟລເດີທີ່ເຂົ້າມາໃໝ່, ເນື້ອຫາຈະຖືກຂຽນລົງໃນໂຟລເດີທີ່ມີຢູ່ແລ້ວ ແລະ ຈະມີການແກ້ໄຂໄຟລ໌ທີ່ຊ້ຳກັນແບບຕໍ່ເນື່ອງໃນໂຟລເດີຍ່ອຍ.\"] }, \"Which files do you want to keep?\": { \"msgid\": \"Which files do you want to keep?\", \"msgstr\": [\"ທ່ານຕ້ອງການເກັບໄຟລ໌ໃດໄວ້?\"] }, \"You can either rename the file, skip this file or cancel the whole operation.\": { \"msgid\": \"You can either rename the file, skip this file or cancel the whole operation.\", \"msgstr\": [\"ທ່ານສາມາດປ່ຽນຊື່ໄຟລ໌, ຂ້າມໄຟລ໌ນີ້ ຫຼື ຍົກເລີກການດຳເນີນການທັງໝົດ.\"] }, \"You need to select at least one version of each file to continue.\": { \"msgid\": \"You need to select at least one version of each file to continue.\", \"msgstr\": [\"ທ່ານຈຳເປັນຕ້ອງເລືອກຢ່າງໜ້ອຍໜຶ່ງສະບັບຂອງແຕ່ລະໄຟລ໌ເພື່ອດຳເນີນການຕໍ່.\"] } } } } }, { \"locale\": \"lt_LT\", \"json\": { \"charset\": \"utf-8\", \"headers\": { \"Last-Translator\": \"Transifex Bot <>, 2022\", \"Language-Team\": \"Lithuanian (Lithuania) (https://www.transifex.com/nextcloud/teams/64236/lt_LT/)\", \"Content-Type\": \"text/plain; charset=UTF-8\", \"Language\": \"lt_LT\", \"Plural-Forms\": \"nplurals=4; plural=(n % 10 == 1 && (n % 100 > 19 || n % 100 < 11) ? 0 : (n % 10 >= 2 && n % 10 <=9) && (n % 100 > 19 || n % 100 < 11) ? 1 : n % 1 != 0 ? 2: 3);\" }, \"translations\": { \"\": { \"\": { \"msgid\": \"\", \"comments\": { \"translator\": \"\\nTranslators:\\nTransifex Bot <>, 2022\\n\" }, \"msgstr\": [\"Last-Translator: Transifex Bot <>, 2022\\nLanguage-Team: Lithuanian (Lithuania) (https://www.transifex.com/nextcloud/teams/64236/lt_LT/)\\nContent-Type: text/plain; charset=UTF-8\\nLanguage: lt_LT\\nPlural-Forms: nplurals=4; plural=(n % 10 == 1 && (n % 100 > 19 || n % 100 < 11) ? 0 : (n % 10 >= 2 && n % 10 <=9) && (n % 100 > 19 || n % 100 < 11) ? 1 : n % 1 != 0 ? 2: 3);\\n\"] }, \"{estimate} seconds left\": { \"msgid\": \"{estimate} seconds left\", \"msgstr\": [\"\"] }, \"{hours} hours and {minutes} minutes left\": { \"msgid\": \"{hours} hours and {minutes} minutes left\", \"msgstr\": [\"\"] }, \"{minutes} minutes left\": { \"msgid\": \"{minutes} minutes left\", \"msgstr\": [\"\"] }, \"a few seconds left\": { \"msgid\": \"a few seconds left\", \"msgstr\": [\"\"] }, \"Add\": { \"msgid\": \"Add\", \"msgstr\": [\"\"] }, \"Cancel uploads\": { \"msgid\": \"Cancel uploads\", \"msgstr\": [\"\"] }, \"estimating time left\": { \"msgid\": \"estimating time left\", \"msgstr\": [\"\"] }, \"paused\": { \"msgid\": \"paused\", \"msgstr\": [\"\"] } } } } }, { \"locale\": \"lv\", \"json\": { \"charset\": \"utf-8\", \"headers\": { \"Last-Translator\": \"Edgars Andersons, 2025\", \"Language-Team\": \"Latvian (https://app.transifex.com/nextcloud/teams/64236/lv/)\", \"Content-Type\": \"text/plain; charset=UTF-8\", \"Language\": \"lv\", \"Plural-Forms\": \"nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n != 0 ? 1 : 2);\" }, \"translations\": { \"\": { \"\": { \"msgid\": \"\", \"comments\": { \"translator\": \"\\nTranslators:\\nPapuass , 2024\\nArmīns Jeltajevs , 2024\\nEdgars Andersons, 2025\\n\" }, \"msgstr\": [\"Last-Translator: Edgars Andersons, 2025\\nLanguage-Team: Latvian (https://app.transifex.com/nextcloud/teams/64236/lv/)\\nContent-Type: text/plain; charset=UTF-8\\nLanguage: lv\\nPlural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n != 0 ? 1 : 2);\\n\"] }, '\"{segment}\" is a forbidden file or folder name.': { \"msgid\": '\"{segment}\" is a forbidden file or folder name.', \"msgstr\": ['\"{segment}\" ir aizliegts datnes vai mapes nosaukums.'] }, '\"{segment}\" is a forbidden file type.': { \"msgid\": '\"{segment}\" is a forbidden file type.', \"msgstr\": ['\"{segment}\" ir aizliegts datnes veids.'] }, '\"{segment}\" is not allowed inside a file or folder name.': { \"msgid\": '\"{segment}\" is not allowed inside a file or folder name.', \"msgstr\": ['\"{segment}\" ir nav ļauts datnes vai mapes nosaukumā.'] }, \"{count} file conflict\": { \"msgid\": \"{count} file conflict\", \"msgid_plural\": \"{count} files conflict\", \"msgstr\": [\"{count} nesaderīgu datņu\", \"{count} nesaderīga datne\", \"{count} nesaderīgas datnes\"] }, \"{count} file conflict in {dirname}\": { \"msgid\": \"{count} file conflict in {dirname}\", \"msgid_plural\": \"{count} file conflicts in {dirname}\", \"msgstr\": [\"{count} nesaderīgu datņu {dirname}\", \"{count} nesaderīga datne {dirname}\", \"{count} nesaderīgas datnes {dirname}\"] }, \"{seconds} seconds left\": { \"msgid\": \"{seconds} seconds left\", \"msgid_plural\": \"{seconds} seconds left\", \"msgstr\": [\"Atlikušas {seconds} sekundes\", \"Atlikusi {seconds} sekunde\", \"Atlikušas {seconds} sekundes\"] }, \"{time} left\": { \"msgid\": \"{time} left\", \"comments\": { \"extracted\": \"TRANSLATORS time has the format 00:00:00\" }, \"msgstr\": [\"atlicis {time}\"] }, \"a few seconds left\": { \"msgid\": \"a few seconds left\", \"msgstr\": [\"atlikušas dažas sekundes\"] }, \"assembling\": { \"msgid\": \"assembling\", \"msgstr\": [\"sakopo\"] }, \"Cancel\": { \"msgid\": \"Cancel\", \"msgstr\": [\"Atcelt\"] }, \"Cancel the entire operation\": { \"msgid\": \"Cancel the entire operation\", \"msgstr\": [\"Atcelt visu darbību\"] }, \"Cancel uploads\": { \"msgid\": \"Cancel uploads\", \"msgstr\": [\"Atcelt augšupielādes\"] }, \"Continue\": { \"msgid\": \"Continue\", \"msgstr\": [\"Turpināt\"] }, \"Create new\": { \"msgid\": \"Create new\", \"msgstr\": [\"Izveidot jaunu\"] }, \"estimating time left\": { \"msgid\": \"estimating time left\", \"msgstr\": [\"paredzamais atlikušais laiks\"] }, \"Existing version\": { \"msgid\": \"Existing version\", \"msgstr\": [\"Esošā versija\"] }, \"Failed to assemble the chunks together\": { \"msgid\": \"Failed to assemble the chunks together\", \"msgstr\": [\"Neizdevās apvienot gabalus\"] }, \"Failed to upload the file\": { \"msgid\": \"Failed to upload the file\", \"msgstr\": [\"Neizdevās augšupielādēt datni\"] }, 'Filenames must not end with \"{segment}\".': { \"msgid\": 'Filenames must not end with \"{segment}\".', \"msgstr\": ['Datnes nosaukumi nedrīkst beigties ar \"{segment}\".'] }, \"If you select both versions, the incoming file will have a number added to its name.\": { \"msgid\": \"If you select both versions, the incoming file will have a number added to its name.\", \"msgstr\": [\"Ja atlasa abas versijas, ienākošās datnes nosaukumam tiks pievienots skaitlis.\"] }, \"Invalid filename\": { \"msgid\": \"Invalid filename\", \"msgstr\": [\"Nederīgs datnes nosaukums\"] }, \"Last modified date unknown\": { \"msgid\": \"Last modified date unknown\", \"msgstr\": [\"Pēdējais izmainīšanas datums nav zināms\"] }, \"New\": { \"msgid\": \"New\", \"msgstr\": [\"Jauns\"] }, \"New filename\": { \"msgid\": \"New filename\", \"msgstr\": [\"Jauns datnes nosaukums\"] }, \"New version\": { \"msgid\": \"New version\", \"msgstr\": [\"Jauna versija\"] }, \"paused\": { \"msgid\": \"paused\", \"msgstr\": [\"apturēta\"] }, \"Preview image\": { \"msgid\": \"Preview image\", \"msgstr\": [\"Priekšskatīt attēlu\"] }, \"Rename\": { \"msgid\": \"Rename\", \"msgstr\": [\"Pārdēvēt\"] }, \"Select all checkboxes\": { \"msgid\": \"Select all checkboxes\", \"msgstr\": [\"Atlasīt visas izvēles rūtiņas\"] }, \"Select all existing files\": { \"msgid\": \"Select all existing files\", \"msgstr\": [\"Atlasīt visas esošās datnes\"] }, \"Select all new files\": { \"msgid\": \"Select all new files\", \"msgstr\": [\"Atlasīt visas jaunās datnes\"] }, \"Skip\": { \"msgid\": \"Skip\", \"msgstr\": [\"Izlaist\"] }, \"Skip {count} file\": { \"msgid\": \"Skip {count} file\", \"msgid_plural\": \"Skip {count} files\", \"msgstr\": [\"Izlaist {count} datņu\", \"Izlaist {count} datni\", \"Izlaist {count} datnes\"] }, \"Skip this file\": { \"msgid\": \"Skip this file\", \"msgstr\": [\"Izlaist šo datni\"] }, \"Unknown size\": { \"msgid\": \"Unknown size\", \"msgstr\": [\"Nezināms izmērs\"] }, \"Upload\": { \"msgid\": \"Upload\", \"msgstr\": [\"Augšupielādēt\"] }, \"Upload files\": { \"msgid\": \"Upload files\", \"msgstr\": [\"Augšupielādēt datnes\"] }, \"Upload folders\": { \"msgid\": \"Upload folders\", \"msgstr\": [\"Augšupielādēt mapes\"] }, \"Upload from device\": { \"msgid\": \"Upload from device\", \"msgstr\": [\"Augšupielādēt no ierīces\"] }, \"Upload has been cancelled\": { \"msgid\": \"Upload has been cancelled\", \"msgstr\": [\"Augšupielāde tika atcelta\"] }, \"Upload has been skipped\": { \"msgid\": \"Upload has been skipped\", \"msgstr\": [\"Augšupielāde tika izlaista\"] }, 'Upload of \"{folder}\" has been skipped': { \"msgid\": 'Upload of \"{folder}\" has been skipped', \"msgstr\": ['\"{folder}\" augšupielāde tika izlaista'] }, \"Upload progress\": { \"msgid\": \"Upload progress\", \"msgstr\": [\"Augšupielādes virzība\"] }, \"When an incoming folder is selected, any conflicting files within it will also be overwritten.\": { \"msgid\": \"When an incoming folder is selected, any conflicting files within it will also be overwritten.\", \"msgstr\": [\"Kad ir atlasīta ienākošā mape, tiks pārrakstītas arī jebkuras tajā esošās nesaderīgās datnes.\"] }, \"When an incoming folder is selected, the content is written into the existing folder and a recursive conflict resolution is performed.\": { \"msgid\": \"When an incoming folder is selected, the content is written into the existing folder and a recursive conflict resolution is performed.\", \"msgstr\": [\"Kad ir atlasīta ienākošā mape, saturs tiks rakstīts esošajā mapē, un tiks veikta rekursīva nesaderību novēršana.\"] }, \"Which files do you want to keep?\": { \"msgid\": \"Which files do you want to keep?\", \"msgstr\": [\"Kuras datnes paturēt?\"] }, \"You can either rename the file, skip this file or cancel the whole operation.\": { \"msgid\": \"You can either rename the file, skip this file or cancel the whole operation.\", \"msgstr\": [\"Datni var vai nu pārdēvēt, vai izlaist vai atcelt visu darbību.\"] }, \"You need to select at least one version of each file to continue.\": { \"msgid\": \"You need to select at least one version of each file to continue.\", \"msgstr\": [\"Ir nepieciešams atlasīt vismaz vienu katras datnes versiju, lai turpinātu.\"] } } } } }, { \"locale\": \"mk\", \"json\": { \"charset\": \"utf-8\", \"headers\": { \"Last-Translator\": \"Сашко Тодоров , 2025\", \"Language-Team\": \"Macedonian (https://app.transifex.com/nextcloud/teams/64236/mk/)\", \"Content-Type\": \"text/plain; charset=UTF-8\", \"Language\": \"mk\", \"Plural-Forms\": \"nplurals=2; plural=(n % 10 == 1 && n % 100 != 11) ? 0 : 1;\" }, \"translations\": { \"\": { \"\": { \"msgid\": \"\", \"comments\": { \"translator\": \"\\nTranslators:\\nJoas Schilling, 2024\\nСашко Тодоров , 2025\\n\" }, \"msgstr\": [\"Last-Translator: Сашко Тодоров , 2025\\nLanguage-Team: Macedonian (https://app.transifex.com/nextcloud/teams/64236/mk/)\\nContent-Type: text/plain; charset=UTF-8\\nLanguage: mk\\nPlural-Forms: nplurals=2; plural=(n % 10 == 1 && n % 100 != 11) ? 0 : 1;\\n\"] }, '\"{segment}\" is a forbidden file or folder name.': { \"msgid\": '\"{segment}\" is a forbidden file or folder name.', \"msgstr\": ['\"{segment}\" е забрането име на датотека или име на папка.'] }, '\"{segment}\" is a forbidden file type.': { \"msgid\": '\"{segment}\" is a forbidden file type.', \"msgstr\": ['\"{segment}\" е забранет вид на датотека.'] }, '\"{segment}\" is not allowed inside a file or folder name.': { \"msgid\": '\"{segment}\" is not allowed inside a file or folder name.', \"msgstr\": ['\"{segment}\" не е дозволено во името датотека или папка.'] }, \"{count} file conflict\": { \"msgid\": \"{count} file conflict\", \"msgid_plural\": \"{count} files conflict\", \"msgstr\": [\"{count} конфликт со датотека\", \"{count} конфликти со датотеки\"] }, \"{count} file conflict in {dirname}\": { \"msgid\": \"{count} file conflict in {dirname}\", \"msgid_plural\": \"{count} file conflicts in {dirname}\", \"msgstr\": [\"{count} конфликт со датотека во {dirname}\", \"{count} конфликти на датотеки во {dirname}\"] }, \"{seconds} seconds left\": { \"msgid\": \"{seconds} seconds left\", \"msgid_plural\": \"{seconds} seconds left\", \"msgstr\": [\"уште {seconds} секунда\", \"уште {seconds} секунди\"] }, \"{time} left\": { \"msgid\": \"{time} left\", \"comments\": { \"extracted\": \"TRANSLATORS time has the format 00:00:00\" }, \"msgstr\": [\"преостанува {time}\"] }, \"a few seconds left\": { \"msgid\": \"a few seconds left\", \"msgstr\": [\"уште неколку секунди\"] }, \"assembling\": { \"msgid\": \"assembling\", \"msgstr\": [\"склопување\"] }, \"Cancel\": { \"msgid\": \"Cancel\", \"msgstr\": [\"Откажи\"] }, \"Cancel the entire operation\": { \"msgid\": \"Cancel the entire operation\", \"msgstr\": [\"Откажи ја целата операција\"] }, \"Cancel uploads\": { \"msgid\": \"Cancel uploads\", \"msgstr\": [\"Прекини прикачување\"] }, \"Continue\": { \"msgid\": \"Continue\", \"msgstr\": [\"Продолжи\"] }, \"Create new\": { \"msgid\": \"Create new\", \"msgstr\": [\"Креирај нова\"] }, \"estimating time left\": { \"msgid\": \"estimating time left\", \"msgstr\": [\"приближно преостанато време\"] }, \"Existing version\": { \"msgid\": \"Existing version\", \"msgstr\": [\"Постоечка верзија\"] }, \"Failed to assemble the chunks together\": { \"msgid\": \"Failed to assemble the chunks together\", \"msgstr\": [\"Неуспешно составување на парчињата заедно\"] }, \"Failed to upload the file\": { \"msgid\": \"Failed to upload the file\", \"msgstr\": [\"Неуспешно прикачување на датотека\"] }, 'Filenames must not end with \"{segment}\".': { \"msgid\": 'Filenames must not end with \"{segment}\".', \"msgstr\": ['Имињата на датотеките не смеат да завршуваат со \"{segment}\".'] }, \"If you select both versions, the incoming file will have a number added to its name.\": { \"msgid\": \"If you select both versions, the incoming file will have a number added to its name.\", \"msgstr\": [\"Ако ги изберете двете верзии, на новата датотека ќе ѝ биде додаден број на името.\"] }, \"Invalid filename\": { \"msgid\": \"Invalid filename\", \"msgstr\": [\"Невалидно име на датотека\"] }, \"Last modified date unknown\": { \"msgid\": \"Last modified date unknown\", \"msgstr\": [\"Непознат датумот на последната измена\"] }, \"New\": { \"msgid\": \"New\", \"msgstr\": [\"Нова\"] }, \"New filename\": { \"msgid\": \"New filename\", \"msgstr\": [\"Ново име на датотека\"] }, \"New version\": { \"msgid\": \"New version\", \"msgstr\": [\"Нова верзија\"] }, \"paused\": { \"msgid\": \"paused\", \"msgstr\": [\"паузирано\"] }, \"Preview image\": { \"msgid\": \"Preview image\", \"msgstr\": [\"Преглед на слика\"] }, \"Rename\": { \"msgid\": \"Rename\", \"msgstr\": [\"Преименувај\"] }, \"Select all checkboxes\": { \"msgid\": \"Select all checkboxes\", \"msgstr\": [\"Означи ги сите полиња\"] }, \"Select all existing files\": { \"msgid\": \"Select all existing files\", \"msgstr\": [\"Избери ги сите постоечки датотеки\"] }, \"Select all new files\": { \"msgid\": \"Select all new files\", \"msgstr\": [\"Избери ги сите нови датотеки\"] }, \"Skip\": { \"msgid\": \"Skip\", \"msgstr\": [\"Прескокни\"] }, \"Skip {count} file\": { \"msgid\": \"Skip {count} file\", \"msgid_plural\": \"Skip {count} files\", \"msgstr\": [\"Прескокни {count} датотека\", \"Прескокни {count} датотеки\"] }, \"Skip this file\": { \"msgid\": \"Skip this file\", \"msgstr\": [\"Прескокни ја оваа датотека\"] }, \"Unknown size\": { \"msgid\": \"Unknown size\", \"msgstr\": [\"Непозната големина\"] }, \"Upload\": { \"msgid\": \"Upload\", \"msgstr\": [\"Прикачи\"] }, \"Upload files\": { \"msgid\": \"Upload files\", \"msgstr\": [\"Прикачување датотеки\"] }, \"Upload folders\": { \"msgid\": \"Upload folders\", \"msgstr\": [\"Прикачи папки\"] }, \"Upload from device\": { \"msgid\": \"Upload from device\", \"msgstr\": [\"Прикачи од уред\"] }, \"Upload has been cancelled\": { \"msgid\": \"Upload has been cancelled\", \"msgstr\": [\"Прикачувањето е откажано\"] }, \"Upload has been skipped\": { \"msgid\": \"Upload has been skipped\", \"msgstr\": [\"Прикачувањето е прескокнато\"] }, 'Upload of \"{folder}\" has been skipped': { \"msgid\": 'Upload of \"{folder}\" has been skipped', \"msgstr\": ['Прикачувањето на \"{folder}\" е прескокнато'] }, \"Upload progress\": { \"msgid\": \"Upload progress\", \"msgstr\": [\"Прогрес на прикачување\"] }, \"When an incoming folder is selected, any conflicting files within it will also be overwritten.\": { \"msgid\": \"When an incoming folder is selected, any conflicting files within it will also be overwritten.\", \"msgstr\": [\"Кога ќе се избере дојдовна папка, сите конфликтни датотеки во неа исто така ќе бидат пребришани.\"] }, \"When an incoming folder is selected, the content is written into the existing folder and a recursive conflict resolution is performed.\": { \"msgid\": \"When an incoming folder is selected, the content is written into the existing folder and a recursive conflict resolution is performed.\", \"msgstr\": [\"Кога ќе се избере дојдовна папка, содржината се запишува во постоечката папка и се извршува рекурзивно решавање на конфликтот.\"] }, \"Which files do you want to keep?\": { \"msgid\": \"Which files do you want to keep?\", \"msgstr\": [\"Кој датотеки сакате да ги зачвате?\"] }, \"You can either rename the file, skip this file or cancel the whole operation.\": { \"msgid\": \"You can either rename the file, skip this file or cancel the whole operation.\", \"msgstr\": [\"Можете да ја преименувате датотеката, да ја прескокнете датотека или да ја откажете целата операција.\"] }, \"You need to select at least one version of each file to continue.\": { \"msgid\": \"You need to select at least one version of each file to continue.\", \"msgstr\": [\"Треба да изберете барем една верзија од секоја датотека за да продолжите.\"] } } } } }, { \"locale\": \"mn\", \"json\": { \"charset\": \"utf-8\", \"headers\": { \"Last-Translator\": \"BATKHUYAG Ganbold, 2023\", \"Language-Team\": \"Mongolian (https://app.transifex.com/nextcloud/teams/64236/mn/)\", \"Content-Type\": \"text/plain; charset=UTF-8\", \"Language\": \"mn\", \"Plural-Forms\": \"nplurals=2; plural=(n != 1);\" }, \"translations\": { \"\": { \"\": { \"msgid\": \"\", \"comments\": { \"translator\": \"\\nTranslators:\\nBATKHUYAG Ganbold, 2023\\n\" }, \"msgstr\": [\"Last-Translator: BATKHUYAG Ganbold, 2023\\nLanguage-Team: Mongolian (https://app.transifex.com/nextcloud/teams/64236/mn/)\\nContent-Type: text/plain; charset=UTF-8\\nLanguage: mn\\nPlural-Forms: nplurals=2; plural=(n != 1);\\n\"] }, \"{seconds} seconds left\": { \"msgid\": \"{seconds} seconds left\", \"msgstr\": [\"{seconds} секунд үлдсэн\"] }, \"{time} left\": { \"msgid\": \"{time} left\", \"comments\": { \"extracted\": \"time has the format 00:00:00\" }, \"msgstr\": [\"{time} үлдсэн\"] }, \"a few seconds left\": { \"msgid\": \"a few seconds left\", \"msgstr\": [\"хэдхэн секунд үлдсэн\"] }, \"Add\": { \"msgid\": \"Add\", \"msgstr\": [\"Нэмэх\"] }, \"Cancel uploads\": { \"msgid\": \"Cancel uploads\", \"msgstr\": [\"Илгээлтийг цуцлах\"] }, \"estimating time left\": { \"msgid\": \"estimating time left\", \"msgstr\": [\"Үлдсэн хугацааг тооцоолж байна\"] }, \"paused\": { \"msgid\": \"paused\", \"msgstr\": [\"түр зогсоосон\"] }, \"Upload files\": { \"msgid\": \"Upload files\", \"msgstr\": [\"Файл илгээх\"] } } } } }, { \"locale\": \"mr\", \"json\": { \"charset\": \"utf-8\", \"headers\": { \"Last-Translator\": \"Transifex Bot <>, 2022\", \"Language-Team\": \"Marathi (https://www.transifex.com/nextcloud/teams/64236/mr/)\", \"Content-Type\": \"text/plain; charset=UTF-8\", \"Language\": \"mr\", \"Plural-Forms\": \"nplurals=2; plural=(n != 1);\" }, \"translations\": { \"\": { \"\": { \"msgid\": \"\", \"comments\": { \"translator\": \"\\nTranslators:\\nTransifex Bot <>, 2022\\n\" }, \"msgstr\": [\"Last-Translator: Transifex Bot <>, 2022\\nLanguage-Team: Marathi (https://www.transifex.com/nextcloud/teams/64236/mr/)\\nContent-Type: text/plain; charset=UTF-8\\nLanguage: mr\\nPlural-Forms: nplurals=2; plural=(n != 1);\\n\"] }, \"{estimate} seconds left\": { \"msgid\": \"{estimate} seconds left\", \"msgstr\": [\"\"] }, \"{hours} hours and {minutes} minutes left\": { \"msgid\": \"{hours} hours and {minutes} minutes left\", \"msgstr\": [\"\"] }, \"{minutes} minutes left\": { \"msgid\": \"{minutes} minutes left\", \"msgstr\": [\"\"] }, \"a few seconds left\": { \"msgid\": \"a few seconds left\", \"msgstr\": [\"\"] }, \"Add\": { \"msgid\": \"Add\", \"msgstr\": [\"\"] }, \"Cancel uploads\": { \"msgid\": \"Cancel uploads\", \"msgstr\": [\"\"] }, \"estimating time left\": { \"msgid\": \"estimating time left\", \"msgstr\": [\"\"] }, \"paused\": { \"msgid\": \"paused\", \"msgstr\": [\"\"] } } } } }, { \"locale\": \"ms_MY\", \"json\": { \"charset\": \"utf-8\", \"headers\": { \"Last-Translator\": \"DT Navy, 2024\", \"Language-Team\": \"Malay (Malaysia) (https://app.transifex.com/nextcloud/teams/64236/ms_MY/)\", \"Content-Type\": \"text/plain; charset=UTF-8\", \"Language\": \"ms_MY\", \"Plural-Forms\": \"nplurals=1; plural=0;\" }, \"translations\": { \"\": { \"\": { \"msgid\": \"\", \"comments\": { \"translator\": \"\\nTranslators:\\nDT Navy, 2024\\n\" }, \"msgstr\": [\"Last-Translator: DT Navy, 2024\\nLanguage-Team: Malay (Malaysia) (https://app.transifex.com/nextcloud/teams/64236/ms_MY/)\\nContent-Type: text/plain; charset=UTF-8\\nLanguage: ms_MY\\nPlural-Forms: nplurals=1; plural=0;\\n\"] }, '\"{segment}\" is a forbidden file or folder name.': { \"msgid\": '\"{segment}\" is a forbidden file or folder name.', \"msgstr\": ['\"{segment}\" adalah fail dan nama folder yang dilarang'] }, '\"{segment}\" is a forbidden file type.': { \"msgid\": '\"{segment}\" is a forbidden file type.', \"msgstr\": ['\"{segment}\" adalah jenis fail yang dilarang'] }, '\"{segment}\" is not allowed inside a file or folder name.': { \"msgid\": '\"{segment}\" is not allowed inside a file or folder name.', \"msgstr\": ['\"{segment}\" adalah tidak dibenarkan dalam nama fail atau folder'] }, \"{count} file conflict\": { \"msgid\": \"{count} file conflict\", \"msgid_plural\": \"{count} files conflict\", \"msgstr\": [\"{count} files bertindih\"] }, \"{count} file conflict in {dirname}\": { \"msgid\": \"{count} file conflict in {dirname}\", \"msgid_plural\": \"{count} file conflicts in {dirname}\", \"msgstr\": [\"{count} fail bertindih dalam {dirname}\"] }, \"{seconds} seconds left\": { \"msgid\": \"{seconds} seconds left\", \"msgstr\": [\"{seconds} saat tinggal\"] }, \"{time} left\": { \"msgid\": \"{time} left\", \"comments\": { \"extracted\": \"TRANSLATORS time has the format 00:00:00\" }, \"msgstr\": [\"{time} tinggal\"] }, \"a few seconds left\": { \"msgid\": \"a few seconds left\", \"msgstr\": [\"beberapa saat lagi\"] }, \"Cancel\": { \"msgid\": \"Cancel\", \"msgstr\": [\"batal\"] }, \"Cancel the entire operation\": { \"msgid\": \"Cancel the entire operation\", \"msgstr\": [\"Batal keseluruhan operasi\"] }, \"Cancel uploads\": { \"msgid\": \"Cancel uploads\", \"msgstr\": [\"batal muat naik\"] }, \"Continue\": { \"msgid\": \"Continue\", \"msgstr\": [\"teruskan\"] }, \"Create new\": { \"msgid\": \"Create new\", \"msgstr\": [\"Buat baharu\"] }, \"estimating time left\": { \"msgid\": \"estimating time left\", \"msgstr\": [\"jangkaan masa tinggal\"] }, \"Existing version\": { \"msgid\": \"Existing version\", \"msgstr\": [\"versi sedia ada\"] }, 'Filenames must not end with \"{segment}\".': { \"msgid\": 'Filenames must not end with \"{segment}\".', \"msgstr\": ['Nama fail tidak boleh berakhir dengan \"{segment}\".'] }, \"If you select both versions, the incoming file will have a number added to its name.\": { \"msgid\": \"If you select both versions, the incoming file will have a number added to its name.\", \"msgstr\": [\"Jika dua versi dipilih, fail yang masuk akan ditambah bilangan pada namanya.\"] }, \"Invalid filename\": { \"msgid\": \"Invalid filename\", \"msgstr\": [\"Nama fail tidak sah\"] }, \"Last modified date unknown\": { \"msgid\": \"Last modified date unknown\", \"msgstr\": [\"Tarikh terakhir diubah suai tidak diketahui\"] }, \"New\": { \"msgid\": \"New\", \"msgstr\": [\"Baru\"] }, \"New filename\": { \"msgid\": \"New filename\", \"msgstr\": [\"Nama fail baharu\"] }, \"New version\": { \"msgid\": \"New version\", \"msgstr\": [\"Versi baharu\"] }, \"paused\": { \"msgid\": \"paused\", \"msgstr\": [\"Jeda\"] }, \"Preview image\": { \"msgid\": \"Preview image\", \"msgstr\": [\"Pratonton gambar\"] }, \"Rename\": { \"msgid\": \"Rename\", \"msgstr\": [\"Menamakan semula\"] }, \"Select all checkboxes\": { \"msgid\": \"Select all checkboxes\", \"msgstr\": [\"Pilih semua kotak pilihan\"] }, \"Select all existing files\": { \"msgid\": \"Select all existing files\", \"msgstr\": [\"Pilih semua fail yang wujud\"] }, \"Select all new files\": { \"msgid\": \"Select all new files\", \"msgstr\": [\"pilih semua fail baharu\"] }, \"Skip\": { \"msgid\": \"Skip\", \"msgstr\": [\"Langkau\"] }, \"Skip this file\": { \"msgid\": \"Skip this file\", \"msgid_plural\": \"Skip {count} files\", \"msgstr\": [\"Langkau fail {count}\"] }, \"Unknown size\": { \"msgid\": \"Unknown size\", \"msgstr\": [\"Saiz tidak diketahui\"] }, \"Upload\": { \"msgid\": \"Upload\", \"msgstr\": [\"Muat naik\"] }, \"Upload files\": { \"msgid\": \"Upload files\", \"msgstr\": [\"Muat naik fail\"] }, \"Upload folders\": { \"msgid\": \"Upload folders\", \"msgstr\": [\"Muat naik folder\"] }, \"Upload from device\": { \"msgid\": \"Upload from device\", \"msgstr\": [\"Muat naik dari peranti\"] }, \"Upload has been cancelled\": { \"msgid\": \"Upload has been cancelled\", \"msgstr\": [\"Muat naik telah dibatalkan\"] }, \"Upload has been skipped\": { \"msgid\": \"Upload has been skipped\", \"msgstr\": [\"Muat naik telah dilangkau\"] }, 'Upload of \"{folder}\" has been skipped': { \"msgid\": 'Upload of \"{folder}\" has been skipped', \"msgstr\": ['Muat naik \"{folder}\" telah dilangkau'] }, \"Upload progress\": { \"msgid\": \"Upload progress\", \"msgstr\": [\"Kemajuan muat naik\"] }, \"When an incoming folder is selected, any conflicting files within it will also be overwritten.\": { \"msgid\": \"When an incoming folder is selected, any conflicting files within it will also be overwritten.\", \"msgstr\": [\"Apabila folder masuk dipilih, sebarang fail bertindih akan ditulis semula\"] }, \"When an incoming folder is selected, the content is written into the existing folder and a recursive conflict resolution is performed.\": { \"msgid\": \"When an incoming folder is selected, the content is written into the existing folder and a recursive conflict resolution is performed.\", \"msgstr\": [\"Apabila folder masuk dipilih, kandungan ditulis ke dalam folder sedia ada dan penyelesaian konflik rekursif dilakukan.\"] }, \"Which files do you want to keep?\": { \"msgid\": \"Which files do you want to keep?\", \"msgstr\": [\"Fail yang mana ingin disimpan?\"] }, \"You can either rename the file, skip this file or cancel the whole operation.\": { \"msgid\": \"You can either rename the file, skip this file or cancel the whole operation.\", \"msgstr\": [\"And boleh menamakan semula fail, langkau fail tersebut atau membatalkan keseluruhan operasi\"] }, \"You need to select at least one version of each file to continue.\": { \"msgid\": \"You need to select at least one version of each file to continue.\", \"msgstr\": [\"Anda perlu memilih sekurangnya satu versi setiap fail untuk teruskan\"] } } } } }, { \"locale\": \"my\", \"json\": { \"charset\": \"utf-8\", \"headers\": { \"Last-Translator\": \"Transifex Bot <>, 2022\", \"Language-Team\": \"Burmese (https://www.transifex.com/nextcloud/teams/64236/my/)\", \"Content-Type\": \"text/plain; charset=UTF-8\", \"Language\": \"my\", \"Plural-Forms\": \"nplurals=1; plural=0;\" }, \"translations\": { \"\": { \"\": { \"msgid\": \"\", \"comments\": { \"translator\": \"\\nTranslators:\\nTransifex Bot <>, 2022\\n\" }, \"msgstr\": [\"Last-Translator: Transifex Bot <>, 2022\\nLanguage-Team: Burmese (https://www.transifex.com/nextcloud/teams/64236/my/)\\nContent-Type: text/plain; charset=UTF-8\\nLanguage: my\\nPlural-Forms: nplurals=1; plural=0;\\n\"] }, \"{estimate} seconds left\": { \"msgid\": \"{estimate} seconds left\", \"msgstr\": [\"\"] }, \"{hours} hours and {minutes} minutes left\": { \"msgid\": \"{hours} hours and {minutes} minutes left\", \"msgstr\": [\"\"] }, \"{minutes} minutes left\": { \"msgid\": \"{minutes} minutes left\", \"msgstr\": [\"\"] }, \"a few seconds left\": { \"msgid\": \"a few seconds left\", \"msgstr\": [\"\"] }, \"Add\": { \"msgid\": \"Add\", \"msgstr\": [\"\"] }, \"Cancel uploads\": { \"msgid\": \"Cancel uploads\", \"msgstr\": [\"\"] }, \"estimating time left\": { \"msgid\": \"estimating time left\", \"msgstr\": [\"\"] }, \"paused\": { \"msgid\": \"paused\", \"msgstr\": [\"\"] } } } } }, { \"locale\": \"nb\", \"json\": { \"charset\": \"utf-8\", \"headers\": { \"Last-Translator\": \"Roger Knutsen, 2024\", \"Language-Team\": \"Norwegian Bokmål (Norway) (https://app.transifex.com/nextcloud/teams/64236/nb_NO/)\", \"Content-Type\": \"text/plain; charset=UTF-8\", \"Language\": \"nb_NO\", \"Plural-Forms\": \"nplurals=2; plural=(n != 1);\" }, \"translations\": { \"\": { \"\": { \"msgid\": \"\", \"comments\": { \"translator\": \"\\nTranslators:\\nJoas Schilling, 2024\\nRoger Knutsen, 2024\\n\" }, \"msgstr\": [\"Last-Translator: Roger Knutsen, 2024\\nLanguage-Team: Norwegian Bokmål (Norway) (https://app.transifex.com/nextcloud/teams/64236/nb_NO/)\\nContent-Type: text/plain; charset=UTF-8\\nLanguage: nb_NO\\nPlural-Forms: nplurals=2; plural=(n != 1);\\n\"] }, '\"{segment}\" is a forbidden file or folder name.': { \"msgid\": '\"{segment}\" is a forbidden file or folder name.', \"msgstr\": ['\"{segment}\" er et forbudt fil- eller mappenavn.'] }, '\"{segment}\" is a forbidden file type.': { \"msgid\": '\"{segment}\" is a forbidden file type.', \"msgstr\": ['\"{segment}\" er en forbudt filtype.'] }, '\"{segment}\" is not allowed inside a file or folder name.': { \"msgid\": '\"{segment}\" is not allowed inside a file or folder name.', \"msgstr\": ['\"{segment}\" er ikke tillatt i et fil- eller mappenavn.'] }, \"{count} file conflict\": { \"msgid\": \"{count} file conflict\", \"msgid_plural\": \"{count} files conflict\", \"msgstr\": [\"{count} file conflict\", \"{count} filkonflikter\"] }, \"{count} file conflict in {dirname}\": { \"msgid\": \"{count} file conflict in {dirname}\", \"msgid_plural\": \"{count} file conflicts in {dirname}\", \"msgstr\": [\"{count} file conflict in {dirname}\", \"{count} filkonflikter i {dirname}\"] }, \"{seconds} seconds left\": { \"msgid\": \"{seconds} seconds left\", \"msgstr\": [\"{seconds} sekunder igjen\"] }, \"{time} left\": { \"msgid\": \"{time} left\", \"comments\": { \"extracted\": \"TRANSLATORS time has the format 00:00:00\" }, \"msgstr\": [\"{time} igjen\"] }, \"a few seconds left\": { \"msgid\": \"a few seconds left\", \"msgstr\": [\"noen få sekunder igjen\"] }, \"Cancel\": { \"msgid\": \"Cancel\", \"msgstr\": [\"Avbryt\"] }, \"Cancel the entire operation\": { \"msgid\": \"Cancel the entire operation\", \"msgstr\": [\"Avbryt hele operasjonen\"] }, \"Cancel uploads\": { \"msgid\": \"Cancel uploads\", \"msgstr\": [\"Avbryt opplastninger\"] }, \"Continue\": { \"msgid\": \"Continue\", \"msgstr\": [\"Fortsett\"] }, \"Create new\": { \"msgid\": \"Create new\", \"msgstr\": [\"Opprett ny\"] }, \"estimating time left\": { \"msgid\": \"estimating time left\", \"msgstr\": [\"Estimerer tid igjen\"] }, \"Existing version\": { \"msgid\": \"Existing version\", \"msgstr\": [\"Gjeldende versjon\"] }, 'Filenames must not end with \"{segment}\".': { \"msgid\": 'Filenames must not end with \"{segment}\".', \"msgstr\": ['Filnavn må ikke slutte med \"{segment}\".'] }, \"If you select both versions, the incoming file will have a number added to its name.\": { \"msgid\": \"If you select both versions, the incoming file will have a number added to its name.\", \"msgstr\": [\"Hvis du velger begge versjonene, vil den innkommende filen ha et nummer lagt til navnet.\"] }, \"Invalid filename\": { \"msgid\": \"Invalid filename\", \"msgstr\": [\"Ugyldig filnavn\"] }, \"Last modified date unknown\": { \"msgid\": \"Last modified date unknown\", \"msgstr\": [\"Siste gang redigert ukjent\"] }, \"New\": { \"msgid\": \"New\", \"msgstr\": [\"Ny\"] }, \"New filename\": { \"msgid\": \"New filename\", \"msgstr\": [\"Nytt filnavn\"] }, \"New version\": { \"msgid\": \"New version\", \"msgstr\": [\"Ny versjon\"] }, \"paused\": { \"msgid\": \"paused\", \"msgstr\": [\"pauset\"] }, \"Preview image\": { \"msgid\": \"Preview image\", \"msgstr\": [\"Forhåndsvis bilde\"] }, \"Rename\": { \"msgid\": \"Rename\", \"msgstr\": [\"Omdøp\"] }, \"Select all checkboxes\": { \"msgid\": \"Select all checkboxes\", \"msgstr\": [\"Velg alle\"] }, \"Select all existing files\": { \"msgid\": \"Select all existing files\", \"msgstr\": [\"Velg alle eksisterende filer\"] }, \"Select all new files\": { \"msgid\": \"Select all new files\", \"msgstr\": [\"Velg alle nye filer\"] }, \"Skip\": { \"msgid\": \"Skip\", \"msgstr\": [\"Hopp over\"] }, \"Skip this file\": { \"msgid\": \"Skip this file\", \"msgid_plural\": \"Skip {count} files\", \"msgstr\": [\"Skip this file\", \"Hopp over {count} filer\"] }, \"Unknown size\": { \"msgid\": \"Unknown size\", \"msgstr\": [\"Ukjent størrelse\"] }, \"Upload files\": { \"msgid\": \"Upload files\", \"msgstr\": [\"Last opp filer\"] }, \"Upload folders\": { \"msgid\": \"Upload folders\", \"msgstr\": [\"Last opp mapper\"] }, \"Upload from device\": { \"msgid\": \"Upload from device\", \"msgstr\": [\"Last opp fra enhet\"] }, \"Upload has been cancelled\": { \"msgid\": \"Upload has been cancelled\", \"msgstr\": [\"Opplastingen er kansellert\"] }, \"Upload has been skipped\": { \"msgid\": \"Upload has been skipped\", \"msgstr\": [\"Opplastingen er hoppet over\"] }, 'Upload of \"{folder}\" has been skipped': { \"msgid\": 'Upload of \"{folder}\" has been skipped', \"msgstr\": ['Opplasting av \"{folder}\" er hoppet over'] }, \"Upload progress\": { \"msgid\": \"Upload progress\", \"msgstr\": [\"Fremdrift, opplasting\"] }, \"When an incoming folder is selected, any conflicting files within it will also be overwritten.\": { \"msgid\": \"When an incoming folder is selected, any conflicting files within it will also be overwritten.\", \"msgstr\": [\"Når en innkommende mappe velges, blir eventuelle motstridende filer i den også overskrevet.\"] }, \"When an incoming folder is selected, the content is written into the existing folder and a recursive conflict resolution is performed.\": { \"msgid\": \"When an incoming folder is selected, the content is written into the existing folder and a recursive conflict resolution is performed.\", \"msgstr\": [\"Når en innkommende mappe velges, skrives innholdet inn i den eksisterende mappen, og en rekursiv konfliktløsning utføres.\"] }, \"Which files do you want to keep?\": { \"msgid\": \"Which files do you want to keep?\", \"msgstr\": [\"Hvilke filer vil du beholde?\"] }, \"You can either rename the file, skip this file or cancel the whole operation.\": { \"msgid\": \"You can either rename the file, skip this file or cancel the whole operation.\", \"msgstr\": [\"Du kan enten gi nytt navn til filen, hoppe over denne filen eller avbryte hele operasjonen.\"] }, \"You need to select at least one version of each file to continue.\": { \"msgid\": \"You need to select at least one version of each file to continue.\", \"msgstr\": [\"Du må velge minst en versjon av hver fil for å fortsette.\"] } } } } }, { \"locale\": \"ne\", \"json\": { \"charset\": \"utf-8\", \"headers\": { \"Last-Translator\": \"Transifex Bot <>, 2022\", \"Language-Team\": \"Nepali (https://www.transifex.com/nextcloud/teams/64236/ne/)\", \"Content-Type\": \"text/plain; charset=UTF-8\", \"Language\": \"ne\", \"Plural-Forms\": \"nplurals=2; plural=(n != 1);\" }, \"translations\": { \"\": { \"\": { \"msgid\": \"\", \"comments\": { \"translator\": \"\\nTranslators:\\nTransifex Bot <>, 2022\\n\" }, \"msgstr\": [\"Last-Translator: Transifex Bot <>, 2022\\nLanguage-Team: Nepali (https://www.transifex.com/nextcloud/teams/64236/ne/)\\nContent-Type: text/plain; charset=UTF-8\\nLanguage: ne\\nPlural-Forms: nplurals=2; plural=(n != 1);\\n\"] }, \"{estimate} seconds left\": { \"msgid\": \"{estimate} seconds left\", \"msgstr\": [\"\"] }, \"{hours} hours and {minutes} minutes left\": { \"msgid\": \"{hours} hours and {minutes} minutes left\", \"msgstr\": [\"\"] }, \"{minutes} minutes left\": { \"msgid\": \"{minutes} minutes left\", \"msgstr\": [\"\"] }, \"a few seconds left\": { \"msgid\": \"a few seconds left\", \"msgstr\": [\"\"] }, \"Add\": { \"msgid\": \"Add\", \"msgstr\": [\"\"] }, \"Cancel uploads\": { \"msgid\": \"Cancel uploads\", \"msgstr\": [\"\"] }, \"estimating time left\": { \"msgid\": \"estimating time left\", \"msgstr\": [\"\"] }, \"paused\": { \"msgid\": \"paused\", \"msgstr\": [\"\"] } } } } }, { \"locale\": \"nl\", \"json\": { \"charset\": \"utf-8\", \"headers\": { \"Last-Translator\": \"Stephan Paternotte , 2025\", \"Language-Team\": \"Dutch (https://app.transifex.com/nextcloud/teams/64236/nl/)\", \"Content-Type\": \"text/plain; charset=UTF-8\", \"Language\": \"nl\", \"Plural-Forms\": \"nplurals=2; plural=(n != 1);\" }, \"translations\": { \"\": { \"\": { \"msgid\": \"\", \"comments\": { \"translator\": \"\\nTranslators:\\nJoas Schilling, 2024\\nJoris deLeeuw, 2025\\nStephan Paternotte , 2025\\n\" }, \"msgstr\": [\"Last-Translator: Stephan Paternotte , 2025\\nLanguage-Team: Dutch (https://app.transifex.com/nextcloud/teams/64236/nl/)\\nContent-Type: text/plain; charset=UTF-8\\nLanguage: nl\\nPlural-Forms: nplurals=2; plural=(n != 1);\\n\"] }, '\"{segment}\" is a forbidden file or folder name.': { \"msgid\": '\"{segment}\" is a forbidden file or folder name.', \"msgstr\": ['\"{segment}\" is een verboden bestands- of mapnaam.'] }, '\"{segment}\" is a forbidden file type.': { \"msgid\": '\"{segment}\" is a forbidden file type.', \"msgstr\": ['\"{segment}\" is een verboden bestandstype.'] }, '\"{segment}\" is not allowed inside a file or folder name.': { \"msgid\": '\"{segment}\" is not allowed inside a file or folder name.', \"msgstr\": ['\"{segment}\" is niet toegestaan in een bestand of mapnaam.'] }, \"{count} file conflict\": { \"msgid\": \"{count} file conflict\", \"msgid_plural\": \"{count} files conflict\", \"msgstr\": [\"{count} bestandsconflict\", \"{count} bestanden conflicteren\"] }, \"{count} file conflict in {dirname}\": { \"msgid\": \"{count} file conflict in {dirname}\", \"msgid_plural\": \"{count} file conflicts in {dirname}\", \"msgstr\": [\"{count} bestandsconflict in {dirname}\", \"{count} bestandenconflicten in {dirname}\"] }, \"{seconds} seconds left\": { \"msgid\": \"{seconds} seconds left\", \"msgid_plural\": \"{seconds} seconds left\", \"msgstr\": [\"{seconds} seconde resterend\", \"{seconds} seconden resterend\"] }, \"{time} left\": { \"msgid\": \"{time} left\", \"comments\": { \"extracted\": \"TRANSLATORS time has the format 00:00:00\" }, \"msgstr\": [\"{time} resterend\"] }, \"a few seconds left\": { \"msgid\": \"a few seconds left\", \"msgstr\": [\"Nog een paar seconden over\"] }, \"assembling\": { \"msgid\": \"assembling\", \"msgstr\": [\"samenstellen\"] }, \"Cancel\": { \"msgid\": \"Cancel\", \"msgstr\": [\"Annuleren\"] }, \"Cancel the entire operation\": { \"msgid\": \"Cancel the entire operation\", \"msgstr\": [\"De hele bewerking annuleren\"] }, \"Cancel uploads\": { \"msgid\": \"Cancel uploads\", \"msgstr\": [\"Uploaden annuleren\"] }, \"Continue\": { \"msgid\": \"Continue\", \"msgstr\": [\"Doorgaan\"] }, \"Create new\": { \"msgid\": \"Create new\", \"msgstr\": [\"Nieuw aanmaken\"] }, \"estimating time left\": { \"msgid\": \"estimating time left\", \"msgstr\": [\"resterende tijd schatten\"] }, \"Existing version\": { \"msgid\": \"Existing version\", \"msgstr\": [\"Bestaande versie\"] }, \"Failed to assemble the chunks together\": { \"msgid\": \"Failed to assemble the chunks together\", \"msgstr\": [\"Kon de stukken niet samenvoegen\"] }, \"Failed to upload the file\": { \"msgid\": \"Failed to upload the file\", \"msgstr\": [\"Het uploaden van het bestand is mislukt\"] }, 'Filenames must not end with \"{segment}\".': { \"msgid\": 'Filenames must not end with \"{segment}\".', \"msgstr\": ['Bestandsnamen mogen niet eindigen met \"{segment}\".'] }, \"If you select both versions, the incoming file will have a number added to its name.\": { \"msgid\": \"If you select both versions, the incoming file will have a number added to its name.\", \"msgstr\": [\"Als je beide versies selecteert, krijgt het binnenkomende bestand een nummer toegevoegd aan de naam.\"] }, \"Invalid filename\": { \"msgid\": \"Invalid filename\", \"msgstr\": [\"Ongeldige bestandsnaam\"] }, \"Last modified date unknown\": { \"msgid\": \"Last modified date unknown\", \"msgstr\": [\"Laatst gewijzigde datum onbekend\"] }, \"New\": { \"msgid\": \"New\", \"msgstr\": [\"Nieuw\"] }, \"New filename\": { \"msgid\": \"New filename\", \"msgstr\": [\"Nieuwe bestandsnaam\"] }, \"New version\": { \"msgid\": \"New version\", \"msgstr\": [\"Nieuwe versie\"] }, \"paused\": { \"msgid\": \"paused\", \"msgstr\": [\"gepauzeerd\"] }, \"Preview image\": { \"msgid\": \"Preview image\", \"msgstr\": [\"Voorbeeldweergave\"] }, \"Rename\": { \"msgid\": \"Rename\", \"msgstr\": [\"Hernoemen\"] }, \"Select all checkboxes\": { \"msgid\": \"Select all checkboxes\", \"msgstr\": [\"Alle opties selecteren\"] }, \"Select all existing files\": { \"msgid\": \"Select all existing files\", \"msgstr\": [\"Alle bestanden selecteren\"] }, \"Select all new files\": { \"msgid\": \"Select all new files\", \"msgstr\": [\"Alle nieuwe bestanden selecteren\"] }, \"Skip\": { \"msgid\": \"Skip\", \"msgstr\": [\"Overslaan\"] }, \"Skip {count} file\": { \"msgid\": \"Skip {count} file\", \"msgid_plural\": \"Skip {count} files\", \"msgstr\": [\"{count} bestand overslaan\", \"{count} bestanden overslaan\"] }, \"Skip this file\": { \"msgid\": \"Skip this file\", \"msgstr\": [\"Dit bestand overslaan\"] }, \"Unknown size\": { \"msgid\": \"Unknown size\", \"msgstr\": [\"Onbekende grootte\"] }, \"Upload\": { \"msgid\": \"Upload\", \"msgstr\": [\"Uploaden\"] }, \"Upload files\": { \"msgid\": \"Upload files\", \"msgstr\": [\"Upload bestanden\"] }, \"Upload folders\": { \"msgid\": \"Upload folders\", \"msgstr\": [\"Mappen uploaden\"] }, \"Upload from device\": { \"msgid\": \"Upload from device\", \"msgstr\": [\"Uploaden vanaf apparaat\"] }, \"Upload has been cancelled\": { \"msgid\": \"Upload has been cancelled\", \"msgstr\": [\"Upload is geanulleerd\"] }, \"Upload has been skipped\": { \"msgid\": \"Upload has been skipped\", \"msgstr\": [\"Upload is overgeslagen\"] }, 'Upload of \"{folder}\" has been skipped': { \"msgid\": 'Upload of \"{folder}\" has been skipped', \"msgstr\": ['Upload van \"{folder}\" is overgeslagen'] }, \"Upload progress\": { \"msgid\": \"Upload progress\", \"msgstr\": [\"Uploadvoortgang\"] }, \"When an incoming folder is selected, any conflicting files within it will also be overwritten.\": { \"msgid\": \"When an incoming folder is selected, any conflicting files within it will also be overwritten.\", \"msgstr\": [\"Wanneer een inkomende map is geselecteerd, worden alle conflicterende bestanden daarin ook overschreven.\"] }, \"When an incoming folder is selected, the content is written into the existing folder and a recursive conflict resolution is performed.\": { \"msgid\": \"When an incoming folder is selected, the content is written into the existing folder and a recursive conflict resolution is performed.\", \"msgstr\": [\"Wanneer een inkomende map is geselecteerd, wordt de inhoud in de bestaande map geschreven en wordt er een recursieve conflictoplossing uitgevoerd.\"] }, \"Which files do you want to keep?\": { \"msgid\": \"Which files do you want to keep?\", \"msgstr\": [\"Welke bestanden wil je behouden?\"] }, \"You can either rename the file, skip this file or cancel the whole operation.\": { \"msgid\": \"You can either rename the file, skip this file or cancel the whole operation.\", \"msgstr\": [\"Je kunt het bestand ofwel hernoemen, dit bestand overslaan of de hele bewerking annuleren.\"] }, \"You need to select at least one version of each file to continue.\": { \"msgid\": \"You need to select at least one version of each file to continue.\", \"msgstr\": [\"Je moet minstens één versie van elk bestand selecteren om door te gaan.\"] } } } } }, { \"locale\": \"nn_NO\", \"json\": { \"charset\": \"utf-8\", \"headers\": { \"Last-Translator\": \"Transifex Bot <>, 2022\", \"Language-Team\": \"Norwegian Nynorsk (Norway) (https://www.transifex.com/nextcloud/teams/64236/nn_NO/)\", \"Content-Type\": \"text/plain; charset=UTF-8\", \"Language\": \"nn_NO\", \"Plural-Forms\": \"nplurals=2; plural=(n != 1);\" }, \"translations\": { \"\": { \"\": { \"msgid\": \"\", \"comments\": { \"translator\": \"\\nTranslators:\\nTransifex Bot <>, 2022\\n\" }, \"msgstr\": [\"Last-Translator: Transifex Bot <>, 2022\\nLanguage-Team: Norwegian Nynorsk (Norway) (https://www.transifex.com/nextcloud/teams/64236/nn_NO/)\\nContent-Type: text/plain; charset=UTF-8\\nLanguage: nn_NO\\nPlural-Forms: nplurals=2; plural=(n != 1);\\n\"] }, \"{estimate} seconds left\": { \"msgid\": \"{estimate} seconds left\", \"msgstr\": [\"\"] }, \"{hours} hours and {minutes} minutes left\": { \"msgid\": \"{hours} hours and {minutes} minutes left\", \"msgstr\": [\"\"] }, \"{minutes} minutes left\": { \"msgid\": \"{minutes} minutes left\", \"msgstr\": [\"\"] }, \"a few seconds left\": { \"msgid\": \"a few seconds left\", \"msgstr\": [\"\"] }, \"Add\": { \"msgid\": \"Add\", \"msgstr\": [\"\"] }, \"Cancel uploads\": { \"msgid\": \"Cancel uploads\", \"msgstr\": [\"\"] }, \"estimating time left\": { \"msgid\": \"estimating time left\", \"msgstr\": [\"\"] }, \"paused\": { \"msgid\": \"paused\", \"msgstr\": [\"\"] } } } } }, { \"locale\": \"oc\", \"json\": { \"charset\": \"utf-8\", \"headers\": { \"Last-Translator\": \"Transifex Bot <>, 2022\", \"Language-Team\": \"Occitan (post 1500) (https://www.transifex.com/nextcloud/teams/64236/oc/)\", \"Content-Type\": \"text/plain; charset=UTF-8\", \"Language\": \"oc\", \"Plural-Forms\": \"nplurals=2; plural=(n > 1);\" }, \"translations\": { \"\": { \"\": { \"msgid\": \"\", \"comments\": { \"translator\": \"\\nTranslators:\\nTransifex Bot <>, 2022\\n\" }, \"msgstr\": [\"Last-Translator: Transifex Bot <>, 2022\\nLanguage-Team: Occitan (post 1500) (https://www.transifex.com/nextcloud/teams/64236/oc/)\\nContent-Type: text/plain; charset=UTF-8\\nLanguage: oc\\nPlural-Forms: nplurals=2; plural=(n > 1);\\n\"] }, \"{estimate} seconds left\": { \"msgid\": \"{estimate} seconds left\", \"msgstr\": [\"\"] }, \"{hours} hours and {minutes} minutes left\": { \"msgid\": \"{hours} hours and {minutes} minutes left\", \"msgstr\": [\"\"] }, \"{minutes} minutes left\": { \"msgid\": \"{minutes} minutes left\", \"msgstr\": [\"\"] }, \"a few seconds left\": { \"msgid\": \"a few seconds left\", \"msgstr\": [\"\"] }, \"Add\": { \"msgid\": \"Add\", \"msgstr\": [\"\"] }, \"Cancel uploads\": { \"msgid\": \"Cancel uploads\", \"msgstr\": [\"\"] }, \"estimating time left\": { \"msgid\": \"estimating time left\", \"msgstr\": [\"\"] }, \"paused\": { \"msgid\": \"paused\", \"msgstr\": [\"\"] } } } } }, { \"locale\": \"pl\", \"json\": { \"charset\": \"utf-8\", \"headers\": { \"Last-Translator\": \"Valdnet, 2025\", \"Language-Team\": \"Polish (https://app.transifex.com/nextcloud/teams/64236/pl/)\", \"Content-Type\": \"text/plain; charset=UTF-8\", \"Language\": \"pl\", \"Plural-Forms\": \"nplurals=4; plural=(n==1 ? 0 : (n%10>=2 && n%10<=4) && (n%100<12 || n%100>14) ? 1 : n!=1 && (n%10>=0 && n%10<=1) || (n%10>=5 && n%10<=9) || (n%100>=12 && n%100<=14) ? 2 : 3);\" }, \"translations\": { \"\": { \"\": { \"msgid\": \"\", \"comments\": { \"translator\": \"\\nTranslators:\\nJoas Schilling, 2024\\nPiotr Strebski , 2024\\nValdnet, 2025\\n\" }, \"msgstr\": [\"Last-Translator: Valdnet, 2025\\nLanguage-Team: Polish (https://app.transifex.com/nextcloud/teams/64236/pl/)\\nContent-Type: text/plain; charset=UTF-8\\nLanguage: pl\\nPlural-Forms: nplurals=4; plural=(n==1 ? 0 : (n%10>=2 && n%10<=4) && (n%100<12 || n%100>14) ? 1 : n!=1 && (n%10>=0 && n%10<=1) || (n%10>=5 && n%10<=9) || (n%100>=12 && n%100<=14) ? 2 : 3);\\n\"] }, '\"{segment}\" is a forbidden file or folder name.': { \"msgid\": '\"{segment}\" is a forbidden file or folder name.', \"msgstr\": ['\"{segment}\" to zabroniona nazwa pliku lub katalogu.'] }, '\"{segment}\" is a forbidden file type.': { \"msgid\": '\"{segment}\" is a forbidden file type.', \"msgstr\": ['\"{segment}\" jest zabronionym typem pliku.'] }, '\"{segment}\" is not allowed inside a file or folder name.': { \"msgid\": '\"{segment}\" is not allowed inside a file or folder name.', \"msgstr\": ['Znak \"{segment}\" nie jest dozwolony w nazwie pliku lub katalogu.'] }, \"{count} file conflict\": { \"msgid\": \"{count} file conflict\", \"msgid_plural\": \"{count} files conflict\", \"msgstr\": [\"konflikt 1 pliku\", \"{count} konfliktów plików\", \"{count} konfliktów plików\", \"{count} konfliktów plików\"] }, \"{count} file conflict in {dirname}\": { \"msgid\": \"{count} file conflict in {dirname}\", \"msgid_plural\": \"{count} file conflicts in {dirname}\", \"msgstr\": [\"{count} konfliktowy plik w {dirname}\", \"{count} konfliktowych plików w {dirname}\", \"{count} konfliktowych plików w {dirname}\", \"{count} konfliktowych plików w {dirname}\"] }, \"{seconds} seconds left\": { \"msgid\": \"{seconds} seconds left\", \"msgstr\": [\"Pozostało {seconds} sekund\"] }, \"{time} left\": { \"msgid\": \"{time} left\", \"comments\": { \"extracted\": \"TRANSLATORS time has the format 00:00:00\" }, \"msgstr\": [\"Pozostało {time}\"] }, \"a few seconds left\": { \"msgid\": \"a few seconds left\", \"msgstr\": [\"Pozostało kilka sekund\"] }, \"Cancel\": { \"msgid\": \"Cancel\", \"msgstr\": [\"Anuluj\"] }, \"Cancel the entire operation\": { \"msgid\": \"Cancel the entire operation\", \"msgstr\": [\"Anuluj całą operację\"] }, \"Cancel uploads\": { \"msgid\": \"Cancel uploads\", \"msgstr\": [\"Anuluj wysyłanie\"] }, \"Continue\": { \"msgid\": \"Continue\", \"msgstr\": [\"Kontynuuj\"] }, \"Create new\": { \"msgid\": \"Create new\", \"msgstr\": [\"Utwórz nowe\"] }, \"estimating time left\": { \"msgid\": \"estimating time left\", \"msgstr\": [\"Szacowanie pozostałego czasu\"] }, \"Existing version\": { \"msgid\": \"Existing version\", \"msgstr\": [\"Istniejąca wersja\"] }, 'Filenames must not end with \"{segment}\".': { \"msgid\": 'Filenames must not end with \"{segment}\".', \"msgstr\": ['Nazwy plików nie mogą kończyć się na \"{segment}\".'] }, \"If you select both versions, the incoming file will have a number added to its name.\": { \"msgid\": \"If you select both versions, the incoming file will have a number added to its name.\", \"msgstr\": [\"Jeśli wybierzesz obie wersje, do nazwy pliku przychodzącego zostanie dodany numer.\"] }, \"Invalid filename\": { \"msgid\": \"Invalid filename\", \"msgstr\": [\"Nieprawidłowa nazwa pliku\"] }, \"Last modified date unknown\": { \"msgid\": \"Last modified date unknown\", \"msgstr\": [\"Nieznana data ostatniej modyfikacji\"] }, \"New\": { \"msgid\": \"New\", \"msgstr\": [\"Nowy\"] }, \"New filename\": { \"msgid\": \"New filename\", \"msgstr\": [\"Nowa nazwa pliku\"] }, \"New version\": { \"msgid\": \"New version\", \"msgstr\": [\"Nowa wersja\"] }, \"paused\": { \"msgid\": \"paused\", \"msgstr\": [\"Wstrzymane\"] }, \"Preview image\": { \"msgid\": \"Preview image\", \"msgstr\": [\"Podgląd obrazu\"] }, \"Rename\": { \"msgid\": \"Rename\", \"msgstr\": [\"Zmiana nazwy\"] }, \"Select all checkboxes\": { \"msgid\": \"Select all checkboxes\", \"msgstr\": [\"Zaznacz wszystkie pola wyboru\"] }, \"Select all existing files\": { \"msgid\": \"Select all existing files\", \"msgstr\": [\"Zaznacz wszystkie istniejące pliki\"] }, \"Select all new files\": { \"msgid\": \"Select all new files\", \"msgstr\": [\"Zaznacz wszystkie nowe pliki\"] }, \"Skip\": { \"msgid\": \"Skip\", \"msgstr\": [\"Pomiń\"] }, \"Skip this file\": { \"msgid\": \"Skip this file\", \"msgid_plural\": \"Skip {count} files\", \"msgstr\": [\"Pomiń 1 plik\", \"Pomiń {count} plików\", \"Pomiń {count} plików\", \"Pomiń {count} plików\"] }, \"Unknown size\": { \"msgid\": \"Unknown size\", \"msgstr\": [\"Nieznany rozmiar\"] }, \"Upload\": { \"msgid\": \"Upload\", \"msgstr\": [\"Wyślij\"] }, \"Upload files\": { \"msgid\": \"Upload files\", \"msgstr\": [\"Wyślij pliki\"] }, \"Upload folders\": { \"msgid\": \"Upload folders\", \"msgstr\": [\"Wyślij katalogi\"] }, \"Upload from device\": { \"msgid\": \"Upload from device\", \"msgstr\": [\"Wyślij z urządzenia\"] }, \"Upload has been cancelled\": { \"msgid\": \"Upload has been cancelled\", \"msgstr\": [\"Wysyłanie zostało anulowane\"] }, \"Upload has been skipped\": { \"msgid\": \"Upload has been skipped\", \"msgstr\": [\"Wysyłanie zostało pominięte\"] }, 'Upload of \"{folder}\" has been skipped': { \"msgid\": 'Upload of \"{folder}\" has been skipped', \"msgstr\": ['Wysyłanie \"{folder}\" zostało pominięte'] }, \"Upload progress\": { \"msgid\": \"Upload progress\", \"msgstr\": [\"Postęp wysyłania\"] }, \"When an incoming folder is selected, any conflicting files within it will also be overwritten.\": { \"msgid\": \"When an incoming folder is selected, any conflicting files within it will also be overwritten.\", \"msgstr\": [\"Po wybraniu katalogu przychodzącego wszelkie znajdujące się w nim pliki powodujące konflikt również zostaną nadpisane.\"] }, \"When an incoming folder is selected, the content is written into the existing folder and a recursive conflict resolution is performed.\": { \"msgid\": \"When an incoming folder is selected, the content is written into the existing folder and a recursive conflict resolution is performed.\", \"msgstr\": [\"Po wybraniu katalogu przychodzącego zawartość jest zapisywana w istniejącym katalogu i przeprowadzane jest rekursywne rozwiązywanie konfliktów.\"] }, \"Which files do you want to keep?\": { \"msgid\": \"Which files do you want to keep?\", \"msgstr\": [\"Które pliki chcesz zachować?\"] }, \"You can either rename the file, skip this file or cancel the whole operation.\": { \"msgid\": \"You can either rename the file, skip this file or cancel the whole operation.\", \"msgstr\": [\"Możesz zmienić nazwę pliku, pominąć ten plik lub anulować całą operację.\"] }, \"You need to select at least one version of each file to continue.\": { \"msgid\": \"You need to select at least one version of each file to continue.\", \"msgstr\": [\"Aby kontynuować, musisz wybrać co najmniej jedną wersję każdego pliku.\"] } } } } }, { \"locale\": \"ps\", \"json\": { \"charset\": \"utf-8\", \"headers\": { \"Last-Translator\": \"Transifex Bot <>, 2022\", \"Language-Team\": \"Pashto (https://www.transifex.com/nextcloud/teams/64236/ps/)\", \"Content-Type\": \"text/plain; charset=UTF-8\", \"Language\": \"ps\", \"Plural-Forms\": \"nplurals=2; plural=(n != 1);\" }, \"translations\": { \"\": { \"\": { \"msgid\": \"\", \"comments\": { \"translator\": \"\\nTranslators:\\nTransifex Bot <>, 2022\\n\" }, \"msgstr\": [\"Last-Translator: Transifex Bot <>, 2022\\nLanguage-Team: Pashto (https://www.transifex.com/nextcloud/teams/64236/ps/)\\nContent-Type: text/plain; charset=UTF-8\\nLanguage: ps\\nPlural-Forms: nplurals=2; plural=(n != 1);\\n\"] }, \"{estimate} seconds left\": { \"msgid\": \"{estimate} seconds left\", \"msgstr\": [\"\"] }, \"{hours} hours and {minutes} minutes left\": { \"msgid\": \"{hours} hours and {minutes} minutes left\", \"msgstr\": [\"\"] }, \"{minutes} minutes left\": { \"msgid\": \"{minutes} minutes left\", \"msgstr\": [\"\"] }, \"a few seconds left\": { \"msgid\": \"a few seconds left\", \"msgstr\": [\"\"] }, \"Add\": { \"msgid\": \"Add\", \"msgstr\": [\"\"] }, \"Cancel uploads\": { \"msgid\": \"Cancel uploads\", \"msgstr\": [\"\"] }, \"estimating time left\": { \"msgid\": \"estimating time left\", \"msgstr\": [\"\"] }, \"paused\": { \"msgid\": \"paused\", \"msgstr\": [\"\"] } } } } }, { \"locale\": \"pt_BR\", \"json\": { \"charset\": \"utf-8\", \"headers\": { \"Last-Translator\": \"F Bausch, 2025\", \"Language-Team\": \"Portuguese (Brazil) (https://app.transifex.com/nextcloud/teams/64236/pt_BR/)\", \"Content-Type\": \"text/plain; charset=UTF-8\", \"Language\": \"pt_BR\", \"Plural-Forms\": \"nplurals=3; plural=(n == 0 || n == 1) ? 0 : n != 0 && n % 1000000 == 0 ? 1 : 2;\" }, \"translations\": { \"\": { \"\": { \"msgid\": \"\", \"comments\": { \"translator\": \"\\nTranslators:\\nJoas Schilling, 2024\\nLeonardo Colman Lopes , 2024\\nRodrigo Sottomaior Macedo , 2024\\nF Bausch, 2025\\n\" }, \"msgstr\": [\"Last-Translator: F Bausch, 2025\\nLanguage-Team: Portuguese (Brazil) (https://app.transifex.com/nextcloud/teams/64236/pt_BR/)\\nContent-Type: text/plain; charset=UTF-8\\nLanguage: pt_BR\\nPlural-Forms: nplurals=3; plural=(n == 0 || n == 1) ? 0 : n != 0 && n % 1000000 == 0 ? 1 : 2;\\n\"] }, '\"{segment}\" is a forbidden file or folder name.': { \"msgid\": '\"{segment}\" is a forbidden file or folder name.', \"msgstr\": ['\"{segment}\" é um nome de arquivo ou pasta proibido.'] }, '\"{segment}\" is a forbidden file type.': { \"msgid\": '\"{segment}\" is a forbidden file type.', \"msgstr\": ['\"{segment}\" é um tipo de arquivo proibido.'] }, '\"{segment}\" is not allowed inside a file or folder name.': { \"msgid\": '\"{segment}\" is not allowed inside a file or folder name.', \"msgstr\": ['\"{segment}\" não é permitido dentro de um nome de arquivo ou pasta.'] }, \"{count} file conflict\": { \"msgid\": \"{count} file conflict\", \"msgid_plural\": \"{count} files conflict\", \"msgstr\": [\"{count} arquivos em conflito\", \"{count} arquivos em conflito\", \"{count} arquivos em conflito\"] }, \"{count} file conflict in {dirname}\": { \"msgid\": \"{count} file conflict in {dirname}\", \"msgid_plural\": \"{count} file conflicts in {dirname}\", \"msgstr\": [\"{count} conflitos de arquivo em {dirname}\", \"{count} conflitos de arquivo em {dirname}\", \"{count} conflitos de arquivo em {dirname}\"] }, \"{seconds} seconds left\": { \"msgid\": \"{seconds} seconds left\", \"msgid_plural\": \"{seconds} seconds left\", \"msgstr\": [\"{seconds} segundo restante\", \"{seconds} segundos restantes\", \"{seconds} segundos restantes\"] }, \"{time} left\": { \"msgid\": \"{time} left\", \"comments\": { \"extracted\": \"TRANSLATORS time has the format 00:00:00\" }, \"msgstr\": [\"{time} restante\"] }, \"a few seconds left\": { \"msgid\": \"a few seconds left\", \"msgstr\": [\"alguns segundos restantes\"] }, \"assembling\": { \"msgid\": \"assembling\", \"msgstr\": [\"montando\"] }, \"Cancel\": { \"msgid\": \"Cancel\", \"msgstr\": [\"Cancelar\"] }, \"Cancel the entire operation\": { \"msgid\": \"Cancel the entire operation\", \"msgstr\": [\"Cancelar a operação inteira\"] }, \"Cancel uploads\": { \"msgid\": \"Cancel uploads\", \"msgstr\": [\"Cancelar uploads\"] }, \"Continue\": { \"msgid\": \"Continue\", \"msgstr\": [\"Continuar\"] }, \"Create new\": { \"msgid\": \"Create new\", \"msgstr\": [\"Criar novo\"] }, \"estimating time left\": { \"msgid\": \"estimating time left\", \"msgstr\": [\"estimando tempo restante\"] }, \"Existing version\": { \"msgid\": \"Existing version\", \"msgstr\": [\"Versão existente\"] }, \"Failed to assemble the chunks together\": { \"msgid\": \"Failed to assemble the chunks together\", \"msgstr\": [\"Falha ao montar os pedaços juntos\"] }, \"Failed to upload the file\": { \"msgid\": \"Failed to upload the file\", \"msgstr\": [\"Falha ao fazer o upload do arquivo\"] }, 'Filenames must not end with \"{segment}\".': { \"msgid\": 'Filenames must not end with \"{segment}\".', \"msgstr\": ['Os nomes dos arquivos não devem terminar com \"{segment}\".'] }, \"If you select both versions, the incoming file will have a number added to its name.\": { \"msgid\": \"If you select both versions, the incoming file will have a number added to its name.\", \"msgstr\": [\"Se você selecionar ambas as versões, o arquivo recebido terá um número adicionado ao seu nome.\"] }, \"Invalid filename\": { \"msgid\": \"Invalid filename\", \"msgstr\": [\"Nome de arquivo inválido\"] }, \"Last modified date unknown\": { \"msgid\": \"Last modified date unknown\", \"msgstr\": [\"Data da última modificação desconhecida\"] }, \"New\": { \"msgid\": \"New\", \"msgstr\": [\"Novo\"] }, \"New filename\": { \"msgid\": \"New filename\", \"msgstr\": [\"Novo nome de arquivo\"] }, \"New version\": { \"msgid\": \"New version\", \"msgstr\": [\"Nova versão\"] }, \"paused\": { \"msgid\": \"paused\", \"msgstr\": [\"pausado\"] }, \"Preview image\": { \"msgid\": \"Preview image\", \"msgstr\": [\"Visualizar imagem\"] }, \"Rename\": { \"msgid\": \"Rename\", \"msgstr\": [\"Renomear\"] }, \"Select all checkboxes\": { \"msgid\": \"Select all checkboxes\", \"msgstr\": [\"Selecionar todas as caixas de seleção\"] }, \"Select all existing files\": { \"msgid\": \"Select all existing files\", \"msgstr\": [\"Selecionar todos os arquivos existentes\"] }, \"Select all new files\": { \"msgid\": \"Select all new files\", \"msgstr\": [\"Selecionar todos os novos arquivos\"] }, \"Skip\": { \"msgid\": \"Skip\", \"msgstr\": [\"Pular\"] }, \"Skip {count} file\": { \"msgid\": \"Skip {count} file\", \"msgid_plural\": \"Skip {count} files\", \"msgstr\": [\"Pular {count} arquivo\", \"Pular {count} de arquivos\", \"Pular {count} arquivos\"] }, \"Skip this file\": { \"msgid\": \"Skip this file\", \"msgstr\": [\"Pular este arquivo\"] }, \"Unknown size\": { \"msgid\": \"Unknown size\", \"msgstr\": [\"Tamanho desconhecido\"] }, \"Upload\": { \"msgid\": \"Upload\", \"msgstr\": [\"Fazer upload\"] }, \"Upload files\": { \"msgid\": \"Upload files\", \"msgstr\": [\"Fazer upload de arquivos\"] }, \"Upload folders\": { \"msgid\": \"Upload folders\", \"msgstr\": [\"Fazer upload de pastas\"] }, \"Upload from device\": { \"msgid\": \"Upload from device\", \"msgstr\": [\"Fazer upload do dispositivo\"] }, \"Upload has been cancelled\": { \"msgid\": \"Upload has been cancelled\", \"msgstr\": [\"O upload foi cancelado\"] }, \"Upload has been skipped\": { \"msgid\": \"Upload has been skipped\", \"msgstr\": [\"O upload foi pulado\"] }, 'Upload of \"{folder}\" has been skipped': { \"msgid\": 'Upload of \"{folder}\" has been skipped', \"msgstr\": ['O upload de \"{folder}\" foi pulado'] }, \"Upload progress\": { \"msgid\": \"Upload progress\", \"msgstr\": [\"Progresso de upload\"] }, \"When an incoming folder is selected, any conflicting files within it will also be overwritten.\": { \"msgid\": \"When an incoming folder is selected, any conflicting files within it will also be overwritten.\", \"msgstr\": [\"Quando uma pasta recebida é selecionada, todos os arquivos conflitantes dentro dela também serão sobrescritos.\"] }, \"When an incoming folder is selected, the content is written into the existing folder and a recursive conflict resolution is performed.\": { \"msgid\": \"When an incoming folder is selected, the content is written into the existing folder and a recursive conflict resolution is performed.\", \"msgstr\": [\"Quando uma pasta recebida é selecionada, o conteúdo é gravado na pasta existente e uma resolução de conflito recursiva é executada.\"] }, \"Which files do you want to keep?\": { \"msgid\": \"Which files do you want to keep?\", \"msgstr\": [\"Quais arquivos você deseja manter?\"] }, \"You can either rename the file, skip this file or cancel the whole operation.\": { \"msgid\": \"You can either rename the file, skip this file or cancel the whole operation.\", \"msgstr\": [\"Você pode renomear o arquivo, pular este arquivo ou cancelar toda a operação.\"] }, \"You need to select at least one version of each file to continue.\": { \"msgid\": \"You need to select at least one version of each file to continue.\", \"msgstr\": [\"Você precisa selecionar pelo menos uma versão de cada arquivo para continuar.\"] } } } } }, { \"locale\": \"pt_PT\", \"json\": { \"charset\": \"utf-8\", \"headers\": { \"Last-Translator\": \"artur25 , 2025\", \"Language-Team\": \"Portuguese (Portugal) (https://app.transifex.com/nextcloud/teams/64236/pt_PT/)\", \"Content-Type\": \"text/plain; charset=UTF-8\", \"Language\": \"pt_PT\", \"Plural-Forms\": \"nplurals=3; plural=(n == 0 || n == 1) ? 0 : n != 0 && n % 1000000 == 0 ? 1 : 2;\" }, \"translations\": { \"\": { \"\": { \"msgid\": \"\", \"comments\": { \"translator\": \"\\nTranslators:\\nJoas Schilling, 2024\\nguilherme ferreira, 2025\\nartur25 , 2025\\n\" }, \"msgstr\": [\"Last-Translator: artur25 , 2025\\nLanguage-Team: Portuguese (Portugal) (https://app.transifex.com/nextcloud/teams/64236/pt_PT/)\\nContent-Type: text/plain; charset=UTF-8\\nLanguage: pt_PT\\nPlural-Forms: nplurals=3; plural=(n == 0 || n == 1) ? 0 : n != 0 && n % 1000000 == 0 ? 1 : 2;\\n\"] }, '\"{segment}\" is a forbidden file or folder name.': { \"msgid\": '\"{segment}\" is a forbidden file or folder name.', \"msgstr\": ['\"{segment}\" é um Nome de arquivo ou pasta proibido.'] }, '\"{segment}\" is a forbidden file type.': { \"msgid\": '\"{segment}\" is a forbidden file type.', \"msgstr\": ['\"{segment}\" é um tipo de ficheiro proibido.'] }, '\"{segment}\" is not allowed inside a file or folder name.': { \"msgid\": '\"{segment}\" is not allowed inside a file or folder name.', \"msgstr\": ['\"{segment}\" não é permitido num nome de ficheiro ou pasta.'] }, \"{count} file conflict\": { \"msgid\": \"{count} file conflict\", \"msgid_plural\": \"{count} files conflict\", \"msgstr\": [\"Conflito em {count} ficheiro\", \"Conflito em {count} ficheiros\", \"Conflito em {count} ficheiros\"] }, \"{count} file conflict in {dirname}\": { \"msgid\": \"{count} file conflict in {dirname}\", \"msgid_plural\": \"{count} file conflicts in {dirname}\", \"msgstr\": [\"{count} conflito de ficheiro em {dirname}\", \"{count} conflitos de ficheiro em {dirname}\", \"{count} conflitos de ficheiro em {dirname}\"] }, \"{seconds} seconds left\": { \"msgid\": \"{seconds} seconds left\", \"msgid_plural\": \"{seconds} seconds left\", \"msgstr\": [\"Falta {seconds} segundo\", \"Faltam {seconds} segundos\", \"Faltam {seconds} segundos\"] }, \"{time} left\": { \"msgid\": \"{time} left\", \"comments\": { \"extracted\": \"TRANSLATORS time has the format 00:00:00\" }, \"msgstr\": [\"faltam {time}\"] }, \"a few seconds left\": { \"msgid\": \"a few seconds left\", \"msgstr\": [\"faltam uns segundos\"] }, \"assembling\": { \"msgid\": \"assembling\", \"msgstr\": [\"montagem\"] }, \"Cancel\": { \"msgid\": \"Cancel\", \"msgstr\": [\"Cancelar\"] }, \"Cancel the entire operation\": { \"msgid\": \"Cancel the entire operation\", \"msgstr\": [\"Cancelar a operação inteira\"] }, \"Cancel uploads\": { \"msgid\": \"Cancel uploads\", \"msgstr\": [\"Cancelar envios\"] }, \"Continue\": { \"msgid\": \"Continue\", \"msgstr\": [\"Continuar\"] }, \"Create new\": { \"msgid\": \"Create new\", \"msgstr\": [\"Criar novo\"] }, \"estimating time left\": { \"msgid\": \"estimating time left\", \"msgstr\": [\"tempo em falta estimado\"] }, \"Existing version\": { \"msgid\": \"Existing version\", \"msgstr\": [\"Versão existente\"] }, \"Failed to assemble the chunks together\": { \"msgid\": \"Failed to assemble the chunks together\", \"msgstr\": [\"Falha ao juntar os fragmentos\"] }, \"Failed to upload the file\": { \"msgid\": \"Failed to upload the file\", \"msgstr\": [\"Falha ao carregar o ficheiro\"] }, 'Filenames must not end with \"{segment}\".': { \"msgid\": 'Filenames must not end with \"{segment}\".', \"msgstr\": ['Os nomes de ficheiro não podem terminar em \"{segment}\".'] }, \"If you select both versions, the incoming file will have a number added to its name.\": { \"msgid\": \"If you select both versions, the incoming file will have a number added to its name.\", \"msgstr\": [\"Se selecionar ambas as versões, será adicionado um número ao nome do ficheiro recebido.\"] }, \"Invalid filename\": { \"msgid\": \"Invalid filename\", \"msgstr\": [\"Nome de ficheiro inválido\"] }, \"Last modified date unknown\": { \"msgid\": \"Last modified date unknown\", \"msgstr\": [\"Data da última modificação desconhecida\"] }, \"New\": { \"msgid\": \"New\", \"msgstr\": [\"Novo\"] }, \"New filename\": { \"msgid\": \"New filename\", \"msgstr\": [\"Novo nome de ficheiro\"] }, \"New version\": { \"msgid\": \"New version\", \"msgstr\": [\"Nova versão\"] }, \"paused\": { \"msgid\": \"paused\", \"msgstr\": [\"pausado\"] }, \"Preview image\": { \"msgid\": \"Preview image\", \"msgstr\": [\"Pré-visualizar imagem\"] }, \"Rename\": { \"msgid\": \"Rename\", \"msgstr\": [\"Renomear\"] }, \"Select all checkboxes\": { \"msgid\": \"Select all checkboxes\", \"msgstr\": [\"Selecionar todas as caixas de verificação\"] }, \"Select all existing files\": { \"msgid\": \"Select all existing files\", \"msgstr\": [\"Selecionar todos os ficheiros existentes\"] }, \"Select all new files\": { \"msgid\": \"Select all new files\", \"msgstr\": [\"Selecionar todos os ficheiros novos\"] }, \"Skip\": { \"msgid\": \"Skip\", \"msgstr\": [\"Ignorar\"] }, \"Skip {count} file\": { \"msgid\": \"Skip {count} file\", \"msgid_plural\": \"Skip {count} files\", \"msgstr\": [\"Ignorar {count} ficheiro\", \"Ignorar {count} ficheiros\", \"Ignorar {count} ficheiros\"] }, \"Skip this file\": { \"msgid\": \"Skip this file\", \"msgstr\": [\"Ignorar este ficheiro\"] }, \"Unknown size\": { \"msgid\": \"Unknown size\", \"msgstr\": [\"Tamanho desconhecido\"] }, \"Upload\": { \"msgid\": \"Upload\", \"msgstr\": [\"Carregar\"] }, \"Upload files\": { \"msgid\": \"Upload files\", \"msgstr\": [\"Enviar ficheiros\"] }, \"Upload folders\": { \"msgid\": \"Upload folders\", \"msgstr\": [\"Carregar pastas\"] }, \"Upload from device\": { \"msgid\": \"Upload from device\", \"msgstr\": [\"Carregar a partir do dispositivo\"] }, \"Upload has been cancelled\": { \"msgid\": \"Upload has been cancelled\", \"msgstr\": [\"O carregamento foi cancelado\"] }, \"Upload has been skipped\": { \"msgid\": \"Upload has been skipped\", \"msgstr\": [\"O carregamento foi ignorado\"] }, 'Upload of \"{folder}\" has been skipped': { \"msgid\": 'Upload of \"{folder}\" has been skipped', \"msgstr\": ['O carregamento da pasta \"{folder}\" foi ignorado'] }, \"Upload progress\": { \"msgid\": \"Upload progress\", \"msgstr\": [\"Progresso do carregamento\"] }, \"When an incoming folder is selected, any conflicting files within it will also be overwritten.\": { \"msgid\": \"When an incoming folder is selected, any conflicting files within it will also be overwritten.\", \"msgstr\": [\"Ao selecionar uma pasta recebida, quaisquer ficheiros em conflito no seu interior também serão sobrescritos.\"] }, \"When an incoming folder is selected, the content is written into the existing folder and a recursive conflict resolution is performed.\": { \"msgid\": \"When an incoming folder is selected, the content is written into the existing folder and a recursive conflict resolution is performed.\", \"msgstr\": [\"Ao selecionar uma pasta recebida, o conteúdo é escrito na pasta existente e é efetuada uma resolução de conflitos recursiva.\"] }, \"Which files do you want to keep?\": { \"msgid\": \"Which files do you want to keep?\", \"msgstr\": [\"Quais ficheiros pretende manter?\"] }, \"You can either rename the file, skip this file or cancel the whole operation.\": { \"msgid\": \"You can either rename the file, skip this file or cancel the whole operation.\", \"msgstr\": [\"Pode renomear o ficheiro, ignorá-lo ou cancelar toda a operação.\"] }, \"You need to select at least one version of each file to continue.\": { \"msgid\": \"You need to select at least one version of each file to continue.\", \"msgstr\": [\"Precisa de selecionar pelo menos uma versão de cada ficheiro para continuar.\"] } } } } }, { \"locale\": \"ro\", \"json\": { \"charset\": \"utf-8\", \"headers\": { \"Last-Translator\": \"Mădălin Vasiliu , 2022\", \"Language-Team\": \"Romanian (https://www.transifex.com/nextcloud/teams/64236/ro/)\", \"Content-Type\": \"text/plain; charset=UTF-8\", \"Language\": \"ro\", \"Plural-Forms\": \"nplurals=3; plural=(n==1?0:(((n%100>19)||((n%100==0)&&(n!=0)))?2:1));\" }, \"translations\": { \"\": { \"\": { \"msgid\": \"\", \"comments\": { \"translator\": \"\\nTranslators:\\nMădălin Vasiliu , 2022\\n\" }, \"msgstr\": [\"Last-Translator: Mădălin Vasiliu , 2022\\nLanguage-Team: Romanian (https://www.transifex.com/nextcloud/teams/64236/ro/)\\nContent-Type: text/plain; charset=UTF-8\\nLanguage: ro\\nPlural-Forms: nplurals=3; plural=(n==1?0:(((n%100>19)||((n%100==0)&&(n!=0)))?2:1));\\n\"] }, \"{seconds} seconds left\": { \"msgid\": \"{seconds} seconds left\", \"msgstr\": [\"{seconds} secunde rămase\"] }, \"{time} left\": { \"msgid\": \"{time} left\", \"comments\": { \"extracted\": \"time has the format 00:00:00\" }, \"msgstr\": [\"{time} rămas\"] }, \"a few seconds left\": { \"msgid\": \"a few seconds left\", \"msgstr\": [\"câteva secunde rămase\"] }, \"Add\": { \"msgid\": \"Add\", \"msgstr\": [\"Adaugă\"] }, \"Cancel uploads\": { \"msgid\": \"Cancel uploads\", \"msgstr\": [\"Anulați încărcările\"] }, \"estimating time left\": { \"msgid\": \"estimating time left\", \"msgstr\": [\"estimarea timpului rămas\"] }, \"paused\": { \"msgid\": \"paused\", \"msgstr\": [\"pus pe pauză\"] }, \"Upload files\": { \"msgid\": \"Upload files\", \"msgstr\": [\"Încarcă fișiere\"] } } } } }, { \"locale\": \"ru\", \"json\": { \"charset\": \"utf-8\", \"headers\": { \"Last-Translator\": \"Igor Orlov, 2025\", \"Language-Team\": \"Russian (https://app.transifex.com/nextcloud/teams/64236/ru/)\", \"Content-Type\": \"text/plain; charset=UTF-8\", \"Language\": \"ru\", \"Plural-Forms\": \"nplurals=4; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%10<=4 && (n%100<12 || n%100>14) ? 1 : n%10==0 || (n%10>=5 && n%10<=9) || (n%100>=11 && n%100<=14)? 2 : 3);\" }, \"translations\": { \"\": { \"\": { \"msgid\": \"\", \"comments\": { \"translator\": \"\\nTranslators:\\nJoas Schilling, 2024\\nВлад, 2024\\nAlex , 2024\\nRoman Stepanov, 2024\\nMaksim Sukharev, 2024\\nАлександр, 2025\\nIgor Orlov, 2025\\n\" }, \"msgstr\": [\"Last-Translator: Igor Orlov, 2025\\nLanguage-Team: Russian (https://app.transifex.com/nextcloud/teams/64236/ru/)\\nContent-Type: text/plain; charset=UTF-8\\nLanguage: ru\\nPlural-Forms: nplurals=4; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%10<=4 && (n%100<12 || n%100>14) ? 1 : n%10==0 || (n%10>=5 && n%10<=9) || (n%100>=11 && n%100<=14)? 2 : 3);\\n\"] }, '\"{segment}\" is a forbidden file or folder name.': { \"msgid\": '\"{segment}\" is a forbidden file or folder name.', \"msgstr\": [\"«{segment}» — это запрещенное имя файла или папки.\"] }, '\"{segment}\" is a forbidden file type.': { \"msgid\": '\"{segment}\" is a forbidden file type.', \"msgstr\": [\"«{segment}» — это запрещенный тип файла.\"] }, '\"{segment}\" is not allowed inside a file or folder name.': { \"msgid\": '\"{segment}\" is not allowed inside a file or folder name.', \"msgstr\": [\"«{segment}» не допускается в имени файла или папки.\"] }, \"{count} file conflict\": { \"msgid\": \"{count} file conflict\", \"msgid_plural\": \"{count} files conflict\", \"msgstr\": [\"конфликт {count} файла\", \"конфликт {count} файлов\", \"конфликт {count} файлов\", \"конфликт {count} файлов\"] }, \"{count} file conflict in {dirname}\": { \"msgid\": \"{count} file conflict in {dirname}\", \"msgid_plural\": \"{count} file conflicts in {dirname}\", \"msgstr\": [\"конфликт {count} файла в «{dirname}»\", \"конфликт {count} файлов в «{dirname}»\", \"конфликт {count} файлов в «{dirname}»\", \"конфликт {count} файлов в «{dirname}»\"] }, \"{seconds} seconds left\": { \"msgid\": \"{seconds} seconds left\", \"msgid_plural\": \"{seconds} seconds left\", \"msgstr\": [\"осталась {seconds} секунда\", \"осталось {seconds} секунды\", \"осталось {seconds} секунд\", \"осталось {seconds} секунд\"] }, \"{time} left\": { \"msgid\": \"{time} left\", \"comments\": { \"extracted\": \"TRANSLATORS time has the format 00:00:00\" }, \"msgstr\": [\"осталось {time}\"] }, \"a few seconds left\": { \"msgid\": \"a few seconds left\", \"msgstr\": [\"осталось несколько секунд\"] }, \"assembling\": { \"msgid\": \"assembling\", \"msgstr\": [\"сборка\"] }, \"Cancel\": { \"msgid\": \"Cancel\", \"msgstr\": [\"Отменить\"] }, \"Cancel the entire operation\": { \"msgid\": \"Cancel the entire operation\", \"msgstr\": [\"Отменить операцию целиком\"] }, \"Cancel uploads\": { \"msgid\": \"Cancel uploads\", \"msgstr\": [\"Отменить загрузки\"] }, \"Continue\": { \"msgid\": \"Continue\", \"msgstr\": [\"Продолжить\"] }, \"Create new\": { \"msgid\": \"Create new\", \"msgstr\": [\"Создать новое\"] }, \"estimating time left\": { \"msgid\": \"estimating time left\", \"msgstr\": [\"оценка оставшегося времени\"] }, \"Existing version\": { \"msgid\": \"Existing version\", \"msgstr\": [\"Текущая версия\"] }, \"Failed to assemble the chunks together\": { \"msgid\": \"Failed to assemble the chunks together\", \"msgstr\": [\"Не удалось собрать части вместе\"] }, \"Failed to upload the file\": { \"msgid\": \"Failed to upload the file\", \"msgstr\": [\"Не удалось загрузить файл\"] }, 'Filenames must not end with \"{segment}\".': { \"msgid\": 'Filenames must not end with \"{segment}\".', \"msgstr\": [\"Имена файлов не должны заканчиваться на «{segment}»\"] }, \"If you select both versions, the incoming file will have a number added to its name.\": { \"msgid\": \"If you select both versions, the incoming file will have a number added to its name.\", \"msgstr\": [\"Если вы выберете обе версии, к имени входящего файла будет добавлен номер.\"] }, \"Invalid filename\": { \"msgid\": \"Invalid filename\", \"msgstr\": [\"Неверное имя файла\"] }, \"Last modified date unknown\": { \"msgid\": \"Last modified date unknown\", \"msgstr\": [\"Дата последнего изменения неизвестна\"] }, \"New\": { \"msgid\": \"New\", \"msgstr\": [\"Новый\"] }, \"New filename\": { \"msgid\": \"New filename\", \"msgstr\": [\"Новое имя файла\"] }, \"New version\": { \"msgid\": \"New version\", \"msgstr\": [\"Новая версия\"] }, \"paused\": { \"msgid\": \"paused\", \"msgstr\": [\"приостановлено\"] }, \"Preview image\": { \"msgid\": \"Preview image\", \"msgstr\": [\"Предварительный просмотр\"] }, \"Rename\": { \"msgid\": \"Rename\", \"msgstr\": [\"Переименовать\"] }, \"Select all checkboxes\": { \"msgid\": \"Select all checkboxes\", \"msgstr\": [\"Выбрать все\"] }, \"Select all existing files\": { \"msgid\": \"Select all existing files\", \"msgstr\": [\"Выбрать все существующие файлы\"] }, \"Select all new files\": { \"msgid\": \"Select all new files\", \"msgstr\": [\"Выбрать все новые файлы\"] }, \"Skip\": { \"msgid\": \"Skip\", \"msgstr\": [\"Пропустить\"] }, \"Skip {count} file\": { \"msgid\": \"Skip {count} file\", \"msgid_plural\": \"Skip {count} files\", \"msgstr\": [\"Пропустить {count} файл\", \"Пропустить {count} файла\", \"Пропустить {count} файлов\", \"Пропустить {count} файлов\"] }, \"Skip this file\": { \"msgid\": \"Skip this file\", \"msgstr\": [\"Пропустить этот файл\"] }, \"Unknown size\": { \"msgid\": \"Unknown size\", \"msgstr\": [\"Неизвестный размер\"] }, \"Upload\": { \"msgid\": \"Upload\", \"msgstr\": [\"Загрузить\"] }, \"Upload files\": { \"msgid\": \"Upload files\", \"msgstr\": [\"Загрузить файлы\"] }, \"Upload folders\": { \"msgid\": \"Upload folders\", \"msgstr\": [\"Загрузить папки\"] }, \"Upload from device\": { \"msgid\": \"Upload from device\", \"msgstr\": [\"Загрузить с устройства\"] }, \"Upload has been cancelled\": { \"msgid\": \"Upload has been cancelled\", \"msgstr\": [\"Загрузка была отменена\"] }, \"Upload has been skipped\": { \"msgid\": \"Upload has been skipped\", \"msgstr\": [\"Загрузка была пропущена\"] }, 'Upload of \"{folder}\" has been skipped': { \"msgid\": 'Upload of \"{folder}\" has been skipped', \"msgstr\": [\"Загрузка «{folder}» была пропущена\"] }, \"Upload progress\": { \"msgid\": \"Upload progress\", \"msgstr\": [\"Прогресс загрузки\"] }, \"When an incoming folder is selected, any conflicting files within it will also be overwritten.\": { \"msgid\": \"When an incoming folder is selected, any conflicting files within it will also be overwritten.\", \"msgstr\": [\"Когда выбрана входящая папка, все конфликтующие файлы в ней также будут перезаписаны.\"] }, \"When an incoming folder is selected, the content is written into the existing folder and a recursive conflict resolution is performed.\": { \"msgid\": \"When an incoming folder is selected, the content is written into the existing folder and a recursive conflict resolution is performed.\", \"msgstr\": [\"Когда выбрана входящая папка, содержимое записывается в существующую папку и выполняется рекурсивное разрешение конфликтов.\"] }, \"Which files do you want to keep?\": { \"msgid\": \"Which files do you want to keep?\", \"msgstr\": [\"Какие файлы вы хотите сохранить?\"] }, \"You can either rename the file, skip this file or cancel the whole operation.\": { \"msgid\": \"You can either rename the file, skip this file or cancel the whole operation.\", \"msgstr\": [\"Вы можете переименовать файл, пропустить этот файл или отменить всю операцию.\"] }, \"You need to select at least one version of each file to continue.\": { \"msgid\": \"You need to select at least one version of each file to continue.\", \"msgstr\": [\"Для продолжения вам нужно выбрать по крайней мере одну версию каждого файла.\"] } } } } }, { \"locale\": \"sc\", \"json\": { \"charset\": \"utf-8\", \"headers\": { \"Last-Translator\": \"Transifex Bot <>, 2022\", \"Language-Team\": \"Sardinian (https://www.transifex.com/nextcloud/teams/64236/sc/)\", \"Content-Type\": \"text/plain; charset=UTF-8\", \"Language\": \"sc\", \"Plural-Forms\": \"nplurals=2; plural=(n != 1);\" }, \"translations\": { \"\": { \"\": { \"msgid\": \"\", \"comments\": { \"translator\": \"\\nTranslators:\\nTransifex Bot <>, 2022\\n\" }, \"msgstr\": [\"Last-Translator: Transifex Bot <>, 2022\\nLanguage-Team: Sardinian (https://www.transifex.com/nextcloud/teams/64236/sc/)\\nContent-Type: text/plain; charset=UTF-8\\nLanguage: sc\\nPlural-Forms: nplurals=2; plural=(n != 1);\\n\"] }, \"{estimate} seconds left\": { \"msgid\": \"{estimate} seconds left\", \"msgstr\": [\"\"] }, \"{hours} hours and {minutes} minutes left\": { \"msgid\": \"{hours} hours and {minutes} minutes left\", \"msgstr\": [\"\"] }, \"{minutes} minutes left\": { \"msgid\": \"{minutes} minutes left\", \"msgstr\": [\"\"] }, \"a few seconds left\": { \"msgid\": \"a few seconds left\", \"msgstr\": [\"\"] }, \"Add\": { \"msgid\": \"Add\", \"msgstr\": [\"\"] }, \"Cancel uploads\": { \"msgid\": \"Cancel uploads\", \"msgstr\": [\"\"] }, \"estimating time left\": { \"msgid\": \"estimating time left\", \"msgstr\": [\"\"] }, \"paused\": { \"msgid\": \"paused\", \"msgstr\": [\"\"] } } } } }, { \"locale\": \"si\", \"json\": { \"charset\": \"utf-8\", \"headers\": { \"Last-Translator\": \"Transifex Bot <>, 2022\", \"Language-Team\": \"Sinhala (https://www.transifex.com/nextcloud/teams/64236/si/)\", \"Content-Type\": \"text/plain; charset=UTF-8\", \"Language\": \"si\", \"Plural-Forms\": \"nplurals=2; plural=(n != 1);\" }, \"translations\": { \"\": { \"\": { \"msgid\": \"\", \"comments\": { \"translator\": \"\\nTranslators:\\nTransifex Bot <>, 2022\\n\" }, \"msgstr\": [\"Last-Translator: Transifex Bot <>, 2022\\nLanguage-Team: Sinhala (https://www.transifex.com/nextcloud/teams/64236/si/)\\nContent-Type: text/plain; charset=UTF-8\\nLanguage: si\\nPlural-Forms: nplurals=2; plural=(n != 1);\\n\"] }, \"{estimate} seconds left\": { \"msgid\": \"{estimate} seconds left\", \"msgstr\": [\"\"] }, \"{hours} hours and {minutes} minutes left\": { \"msgid\": \"{hours} hours and {minutes} minutes left\", \"msgstr\": [\"\"] }, \"{minutes} minutes left\": { \"msgid\": \"{minutes} minutes left\", \"msgstr\": [\"\"] }, \"a few seconds left\": { \"msgid\": \"a few seconds left\", \"msgstr\": [\"\"] }, \"Add\": { \"msgid\": \"Add\", \"msgstr\": [\"\"] }, \"Cancel uploads\": { \"msgid\": \"Cancel uploads\", \"msgstr\": [\"\"] }, \"estimating time left\": { \"msgid\": \"estimating time left\", \"msgstr\": [\"\"] }, \"paused\": { \"msgid\": \"paused\", \"msgstr\": [\"\"] } } } } }, { \"locale\": \"sk\", \"json\": { \"charset\": \"utf-8\", \"headers\": { \"Last-Translator\": \"Anton Krajcik , 2025\", \"Language-Team\": \"Slovak (Slovakia) (https://app.transifex.com/nextcloud/teams/64236/sk_SK/)\", \"Content-Type\": \"text/plain; charset=UTF-8\", \"Language\": \"sk_SK\", \"Plural-Forms\": \"nplurals=4; plural=(n % 1 == 0 && n == 1 ? 0 : n % 1 == 0 && n >= 2 && n <= 4 ? 1 : n % 1 != 0 ? 2: 3);\" }, \"translations\": { \"\": { \"\": { \"msgid\": \"\", \"comments\": { \"translator\": \"\\nTranslators:\\nJozef Gaal , 2024\\nLinker Linker , 2024\\nAnton Krajcik , 2025\\n\" }, \"msgstr\": [\"Last-Translator: Anton Krajcik , 2025\\nLanguage-Team: Slovak (Slovakia) (https://app.transifex.com/nextcloud/teams/64236/sk_SK/)\\nContent-Type: text/plain; charset=UTF-8\\nLanguage: sk_SK\\nPlural-Forms: nplurals=4; plural=(n % 1 == 0 && n == 1 ? 0 : n % 1 == 0 && n >= 2 && n <= 4 ? 1 : n % 1 != 0 ? 2: 3);\\n\"] }, '\"{segment}\" is a forbidden file or folder name.': { \"msgid\": '\"{segment}\" is a forbidden file or folder name.', \"msgstr\": [\"„{segment}“ je zakázaný názov súboru alebo priečinka.\"] }, '\"{segment}\" is a forbidden file type.': { \"msgid\": '\"{segment}\" is a forbidden file type.', \"msgstr\": ['\"{segment}\" je zákazaný typ súboru.'] }, '\"{segment}\" is not allowed inside a file or folder name.': { \"msgid\": '\"{segment}\" is not allowed inside a file or folder name.', \"msgstr\": ['\"{segment}“ je zakázané v názve súboru alebo adresára.'] }, \"{count} file conflict\": { \"msgid\": \"{count} file conflict\", \"msgid_plural\": \"{count} files conflict\", \"msgstr\": [\"{count} súbor má konflikt\", \"{count} súbory majú konflikt\", \"{count} súborov má konflikt\", \"{count} súborov má konflikt\"] }, \"{count} file conflict in {dirname}\": { \"msgid\": \"{count} file conflict in {dirname}\", \"msgid_plural\": \"{count} file conflicts in {dirname}\", \"msgstr\": [\"{count} súborový konflikt v {dirname}\", \"{count} súborové konflikty v {dirname}\", \"{count} súborových konfliktov v {dirname}\", \"{count} súborových konfliktov v {dirname}\"] }, \"{seconds} seconds left\": { \"msgid\": \"{seconds} seconds left\", \"msgid_plural\": \"{seconds} seconds left\", \"msgstr\": [\"{seconds} sekunda zostáva\", \"{seconds} sekúnd zostáva\", \"{seconds} sekúnd zostáva\", \"{seconds} sekundy zostávajú\"] }, \"{time} left\": { \"msgid\": \"{time} left\", \"comments\": { \"extracted\": \"TRANSLATORS time has the format 00:00:00\" }, \"msgstr\": [\"{time} zostáva\"] }, \"a few seconds left\": { \"msgid\": \"a few seconds left\", \"msgstr\": [\"zostáva niekoľko sekúnd\"] }, \"assembling\": { \"msgid\": \"assembling\", \"msgstr\": [\"zhromažďovanie\"] }, \"Cancel\": { \"msgid\": \"Cancel\", \"msgstr\": [\"Zrušiť\"] }, \"Cancel the entire operation\": { \"msgid\": \"Cancel the entire operation\", \"msgstr\": [\"Zrušiť celú operáciu\"] }, \"Cancel uploads\": { \"msgid\": \"Cancel uploads\", \"msgstr\": [\"Zrušiť nahrávanie\"] }, \"Continue\": { \"msgid\": \"Continue\", \"msgstr\": [\"Pokračovať\"] }, \"Create new\": { \"msgid\": \"Create new\", \"msgstr\": [\"Vytvoriť nové\"] }, \"estimating time left\": { \"msgid\": \"estimating time left\", \"msgstr\": [\"odhadovanie zostávajúceho času\"] }, \"Existing version\": { \"msgid\": \"Existing version\", \"msgstr\": [\"Existujúca verzia\"] }, \"Failed to assemble the chunks together\": { \"msgid\": \"Failed to assemble the chunks together\", \"msgstr\": [\"Nepodarilo sa dať časti dohromady.\"] }, \"Failed to upload the file\": { \"msgid\": \"Failed to upload the file\", \"msgstr\": [\"Nepodarilo sa nahrať súbor\"] }, 'Filenames must not end with \"{segment}\".': { \"msgid\": 'Filenames must not end with \"{segment}\".', \"msgstr\": ['Názvy súborov nesmú končiť znakom \"{segment}\".'] }, \"If you select both versions, the incoming file will have a number added to its name.\": { \"msgid\": \"If you select both versions, the incoming file will have a number added to its name.\", \"msgstr\": [\"Ak vyberiete obe verzie, k názvu prichádzajúceho súboru sa pridá číslo.\"] }, \"Invalid filename\": { \"msgid\": \"Invalid filename\", \"msgstr\": [\"Neplatný názov súboru\"] }, \"Last modified date unknown\": { \"msgid\": \"Last modified date unknown\", \"msgstr\": [\"Dátum poslednej úpravy neznámy\"] }, \"New\": { \"msgid\": \"New\", \"msgstr\": [\"Nový\"] }, \"New filename\": { \"msgid\": \"New filename\", \"msgstr\": [\"Nový názov súboru\"] }, \"New version\": { \"msgid\": \"New version\", \"msgstr\": [\"Nová verzia\"] }, \"paused\": { \"msgid\": \"paused\", \"msgstr\": [\"pozastavené\"] }, \"Preview image\": { \"msgid\": \"Preview image\", \"msgstr\": [\"Náhľad obrázka\"] }, \"Rename\": { \"msgid\": \"Rename\", \"msgstr\": [\"Premenovať\"] }, \"Select all checkboxes\": { \"msgid\": \"Select all checkboxes\", \"msgstr\": [\"Označiť všetky výberové políčka\"] }, \"Select all existing files\": { \"msgid\": \"Select all existing files\", \"msgstr\": [\"Vybrať všetky existujúce súbory\"] }, \"Select all new files\": { \"msgid\": \"Select all new files\", \"msgstr\": [\"Vybrať všetky nové súbory\"] }, \"Skip\": { \"msgid\": \"Skip\", \"msgstr\": [\"Preskočiť\"] }, \"Skip {count} file\": { \"msgid\": \"Skip {count} file\", \"msgid_plural\": \"Skip {count} files\", \"msgstr\": [\"Preskočiť {count} súbor\", \"Preskočiť {count} súborov\", \"Preskočiť {count} súborov\", \"Preskočiť {count} súbory\"] }, \"Skip this file\": { \"msgid\": \"Skip this file\", \"msgstr\": [\"Preskočiť tento súbor\"] }, \"Unknown size\": { \"msgid\": \"Unknown size\", \"msgstr\": [\"Neznáma veľkosť\"] }, \"Upload\": { \"msgid\": \"Upload\", \"msgstr\": [\"Nahrať\"] }, \"Upload files\": { \"msgid\": \"Upload files\", \"msgstr\": [\"Nahrať súbory\"] }, \"Upload folders\": { \"msgid\": \"Upload folders\", \"msgstr\": [\"Nahrať priečinky\"] }, \"Upload from device\": { \"msgid\": \"Upload from device\", \"msgstr\": [\"Nahrať zo zariadenia\"] }, \"Upload has been cancelled\": { \"msgid\": \"Upload has been cancelled\", \"msgstr\": [\"Nahrávanie bolo zrušené\"] }, \"Upload has been skipped\": { \"msgid\": \"Upload has been skipped\", \"msgstr\": [\"Nahrávanie bolo preskočené\"] }, 'Upload of \"{folder}\" has been skipped': { \"msgid\": 'Upload of \"{folder}\" has been skipped', \"msgstr\": ['Nahrávanie \"{folder}\" bolo preskočené'] }, \"Upload progress\": { \"msgid\": \"Upload progress\", \"msgstr\": [\"Priebeh nahrávania\"] }, \"When an incoming folder is selected, any conflicting files within it will also be overwritten.\": { \"msgid\": \"When an incoming folder is selected, any conflicting files within it will also be overwritten.\", \"msgstr\": [\"Keď je vybraný prichádzajúci priečinok, prepíšu sa aj všetky konfliktné súbory v ňom.\"] }, \"When an incoming folder is selected, the content is written into the existing folder and a recursive conflict resolution is performed.\": { \"msgid\": \"When an incoming folder is selected, the content is written into the existing folder and a recursive conflict resolution is performed.\", \"msgstr\": [\"Po výbere prichádzajúceho priečinka sa obsah zapíše do existujúceho priečinka a vykoná sa rekurzívne riešenie konfliktov.\"] }, \"Which files do you want to keep?\": { \"msgid\": \"Which files do you want to keep?\", \"msgstr\": [\"Ktoré súbory chcete ponechať?\"] }, \"You can either rename the file, skip this file or cancel the whole operation.\": { \"msgid\": \"You can either rename the file, skip this file or cancel the whole operation.\", \"msgstr\": [\"Súbor môžete premenovať, preskočiť alebo zrušiť celú operáciu.\"] }, \"You need to select at least one version of each file to continue.\": { \"msgid\": \"You need to select at least one version of each file to continue.\", \"msgstr\": [\"Ak chcete pokračovať, musíte vybrať aspoň jednu verziu každého súboru.\"] } } } } }, { \"locale\": \"sl\", \"json\": { \"charset\": \"utf-8\", \"headers\": { \"Last-Translator\": \"Simon Bogina, 2024\", \"Language-Team\": \"Slovenian (https://app.transifex.com/nextcloud/teams/64236/sl/)\", \"Content-Type\": \"text/plain; charset=UTF-8\", \"Language\": \"sl\", \"Plural-Forms\": \"nplurals=4; plural=(n%100==1 ? 0 : n%100==2 ? 1 : n%100==3 || n%100==4 ? 2 : 3);\" }, \"translations\": { \"\": { \"\": { \"msgid\": \"\", \"comments\": { \"translator\": \"\\nTranslators:\\nJoas Schilling, 2024\\nJan Kraljič , 2024\\nSimon Bogina, 2024\\n\" }, \"msgstr\": [\"Last-Translator: Simon Bogina, 2024\\nLanguage-Team: Slovenian (https://app.transifex.com/nextcloud/teams/64236/sl/)\\nContent-Type: text/plain; charset=UTF-8\\nLanguage: sl\\nPlural-Forms: nplurals=4; plural=(n%100==1 ? 0 : n%100==2 ? 1 : n%100==3 || n%100==4 ? 2 : 3);\\n\"] }, '\"{segment}\" is a forbidden file or folder name.': { \"msgid\": '\"{segment}\" is a forbidden file or folder name.', \"msgstr\": ['\"{segment}\" je prepovedano ime datoteka ali mape.'] }, '\"{segment}\" is a forbidden file type.': { \"msgid\": '\"{segment}\" is a forbidden file type.', \"msgstr\": ['\"{segment}\" je prepovedan tip datoteke.'] }, '\"{segment}\" is not allowed inside a file or folder name.': { \"msgid\": '\"{segment}\" is not allowed inside a file or folder name.', \"msgstr\": ['\"{segment}\" ni dovoljeno v imenu datoteke ali mape.'] }, \"{count} file conflict\": { \"msgid\": \"{count} file conflict\", \"msgid_plural\": \"{count} files conflict\", \"msgstr\": [\"1{count} datoteka je v konfliktu\", \"1{count} datoteki sta v konfiktu\", \"1{count} datotek je v konfliktu\", \"{count} datotek je v konfliktu\"] }, \"{count} file conflict in {dirname}\": { \"msgid\": \"{count} file conflict in {dirname}\", \"msgid_plural\": \"{count} file conflicts in {dirname}\", \"msgstr\": [\"{count} datoteka je v konfiktu v {dirname}\", \"{count} datoteki sta v konfiktu v {dirname}\", \"{count} datotek je v konfiktu v {dirname}\", \"{count} konfliktov datotek v {dirname}\"] }, \"{seconds} seconds left\": { \"msgid\": \"{seconds} seconds left\", \"msgstr\": [\"še {seconds} sekund\"] }, \"{time} left\": { \"msgid\": \"{time} left\", \"comments\": { \"extracted\": \"TRANSLATORS time has the format 00:00:00\" }, \"msgstr\": [\"še {time}\"] }, \"a few seconds left\": { \"msgid\": \"a few seconds left\", \"msgstr\": [\"še nekaj sekund\"] }, \"Cancel\": { \"msgid\": \"Cancel\", \"msgstr\": [\"Prekliči\"] }, \"Cancel the entire operation\": { \"msgid\": \"Cancel the entire operation\", \"msgstr\": [\"Prekliči celotni postopek\"] }, \"Cancel uploads\": { \"msgid\": \"Cancel uploads\", \"msgstr\": [\"Prekliči pošiljanje\"] }, \"Continue\": { \"msgid\": \"Continue\", \"msgstr\": [\"Nadaljuj\"] }, \"Create new\": { \"msgid\": \"Create new\", \"msgstr\": [\"Ustvari nov\"] }, \"estimating time left\": { \"msgid\": \"estimating time left\", \"msgstr\": [\"ocenjujem čas do konca\"] }, \"Existing version\": { \"msgid\": \"Existing version\", \"msgstr\": [\"Obstoječa različica\"] }, 'Filenames must not end with \"{segment}\".': { \"msgid\": 'Filenames must not end with \"{segment}\".', \"msgstr\": ['Imena datotek se ne smejo končati s \"{segment}\".'] }, \"If you select both versions, the incoming file will have a number added to its name.\": { \"msgid\": \"If you select both versions, the incoming file will have a number added to its name.\", \"msgstr\": [\"Če izberete obe različici, bo imenu dohodne datoteke na koncu dodana številka.\"] }, \"Invalid filename\": { \"msgid\": \"Invalid filename\", \"msgstr\": [\"Nepravilno ime datoteke\"] }, \"Last modified date unknown\": { \"msgid\": \"Last modified date unknown\", \"msgstr\": [\"Datum zadnje spremembe neznan\"] }, \"New\": { \"msgid\": \"New\", \"msgstr\": [\"Nov\"] }, \"New filename\": { \"msgid\": \"New filename\", \"msgstr\": [\"Novo ime datoteke\"] }, \"New version\": { \"msgid\": \"New version\", \"msgstr\": [\"Nova različica\"] }, \"paused\": { \"msgid\": \"paused\", \"msgstr\": [\"v premoru\"] }, \"Preview image\": { \"msgid\": \"Preview image\", \"msgstr\": [\"Predogled slike\"] }, \"Rename\": { \"msgid\": \"Rename\", \"msgstr\": [\"Preimenuj\"] }, \"Select all checkboxes\": { \"msgid\": \"Select all checkboxes\", \"msgstr\": [\"Izberi vsa potrditvena polja\"] }, \"Select all existing files\": { \"msgid\": \"Select all existing files\", \"msgstr\": [\"Označi vse obstoječe datoteke\"] }, \"Select all new files\": { \"msgid\": \"Select all new files\", \"msgstr\": [\"Označi vse nove datoteke\"] }, \"Skip\": { \"msgid\": \"Skip\", \"msgstr\": [\"Preskoči\"] }, \"Skip this file\": { \"msgid\": \"Skip this file\", \"msgid_plural\": \"Skip {count} files\", \"msgstr\": [\"Preskoči  datoteko\", \"Preskoči {count} datoteki\", \"Preskoči {count} datotek\", \"Preskoči {count} datotek\"] }, \"Unknown size\": { \"msgid\": \"Unknown size\", \"msgstr\": [\"Neznana velikost\"] }, \"Upload\": { \"msgid\": \"Upload\", \"msgstr\": [\"Naloži\"] }, \"Upload files\": { \"msgid\": \"Upload files\", \"msgstr\": [\"Naloži datoteke\"] }, \"Upload folders\": { \"msgid\": \"Upload folders\", \"msgstr\": [\"Naloži mape\"] }, \"Upload from device\": { \"msgid\": \"Upload from device\", \"msgstr\": [\"Naloži iz naprave\"] }, \"Upload has been cancelled\": { \"msgid\": \"Upload has been cancelled\", \"msgstr\": [\"Nalaganje je bilo preklicano\"] }, \"Upload has been skipped\": { \"msgid\": \"Upload has been skipped\", \"msgstr\": [\"Nalaganje je bilo preskočeno\"] }, 'Upload of \"{folder}\" has been skipped': { \"msgid\": 'Upload of \"{folder}\" has been skipped', \"msgstr\": ['Nalaganje \"{folder}\" je bilo preskočeno'] }, \"Upload progress\": { \"msgid\": \"Upload progress\", \"msgstr\": [\"Napredek nalaganja\"] }, \"When an incoming folder is selected, any conflicting files within it will also be overwritten.\": { \"msgid\": \"When an incoming folder is selected, any conflicting files within it will also be overwritten.\", \"msgstr\": [\"Ko je izbrana dohodna mapa, bodo vse datototeke v konfliktu znotraj nje prepisane.\"] }, \"When an incoming folder is selected, the content is written into the existing folder and a recursive conflict resolution is performed.\": { \"msgid\": \"When an incoming folder is selected, the content is written into the existing folder and a recursive conflict resolution is performed.\", \"msgstr\": [\"Ko je izbrana dohodna mapa, je vsebina vpisana v obstoječo mapo in je izvedeno rekurzivno reševanje konfliktov.\"] }, \"Which files do you want to keep?\": { \"msgid\": \"Which files do you want to keep?\", \"msgstr\": [\"Katere datoteke želite obdržati?\"] }, \"You can either rename the file, skip this file or cancel the whole operation.\": { \"msgid\": \"You can either rename the file, skip this file or cancel the whole operation.\", \"msgstr\": [\"Datoteko lahko preimenujete, preskočite ali prekličete celo operacijo.\"] }, \"You need to select at least one version of each file to continue.\": { \"msgid\": \"You need to select at least one version of each file to continue.\", \"msgstr\": [\"Izbrati morate vsaj eno različico vsake datoteke da nadaljujete.\"] } } } } }, { \"locale\": \"sq\", \"json\": { \"charset\": \"utf-8\", \"headers\": { \"Last-Translator\": \"Transifex Bot <>, 2022\", \"Language-Team\": \"Albanian (https://www.transifex.com/nextcloud/teams/64236/sq/)\", \"Content-Type\": \"text/plain; charset=UTF-8\", \"Language\": \"sq\", \"Plural-Forms\": \"nplurals=2; plural=(n != 1);\" }, \"translations\": { \"\": { \"\": { \"msgid\": \"\", \"comments\": { \"translator\": \"\\nTranslators:\\nTransifex Bot <>, 2022\\n\" }, \"msgstr\": [\"Last-Translator: Transifex Bot <>, 2022\\nLanguage-Team: Albanian (https://www.transifex.com/nextcloud/teams/64236/sq/)\\nContent-Type: text/plain; charset=UTF-8\\nLanguage: sq\\nPlural-Forms: nplurals=2; plural=(n != 1);\\n\"] }, \"{estimate} seconds left\": { \"msgid\": \"{estimate} seconds left\", \"msgstr\": [\"\"] }, \"{hours} hours and {minutes} minutes left\": { \"msgid\": \"{hours} hours and {minutes} minutes left\", \"msgstr\": [\"\"] }, \"{minutes} minutes left\": { \"msgid\": \"{minutes} minutes left\", \"msgstr\": [\"\"] }, \"a few seconds left\": { \"msgid\": \"a few seconds left\", \"msgstr\": [\"\"] }, \"Add\": { \"msgid\": \"Add\", \"msgstr\": [\"\"] }, \"Cancel uploads\": { \"msgid\": \"Cancel uploads\", \"msgstr\": [\"\"] }, \"estimating time left\": { \"msgid\": \"estimating time left\", \"msgstr\": [\"\"] }, \"paused\": { \"msgid\": \"paused\", \"msgstr\": [\"\"] } } } } }, { \"locale\": \"sr\", \"json\": { \"charset\": \"utf-8\", \"headers\": { \"Last-Translator\": \"Иван Пешић, 2025\", \"Language-Team\": \"Serbian (https://app.transifex.com/nextcloud/teams/64236/sr/)\", \"Content-Type\": \"text/plain; charset=UTF-8\", \"Language\": \"sr\", \"Plural-Forms\": \"nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);\" }, \"translations\": { \"\": { \"\": { \"msgid\": \"\", \"comments\": { \"translator\": \"\\nTranslators:\\nJoas Schilling, 2024\\nИван Пешић, 2025\\n\" }, \"msgstr\": [\"Last-Translator: Иван Пешић, 2025\\nLanguage-Team: Serbian (https://app.transifex.com/nextcloud/teams/64236/sr/)\\nContent-Type: text/plain; charset=UTF-8\\nLanguage: sr\\nPlural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);\\n\"] }, '\"{segment}\" is a forbidden file or folder name.': { \"msgid\": '\"{segment}\" is a forbidden file or folder name.', \"msgstr\": [\"„{segment}” је забрањено име фајла или фолдера.\"] }, '\"{segment}\" is a forbidden file type.': { \"msgid\": '\"{segment}\" is a forbidden file type.', \"msgstr\": [\"„{segment}” је забрањен тип фајла.\"] }, '\"{segment}\" is not allowed inside a file or folder name.': { \"msgid\": '\"{segment}\" is not allowed inside a file or folder name.', \"msgstr\": [\"„{segment}” није дозвољено унутар имена фајла или фолдера.\"] }, \"{count} file conflict\": { \"msgid\": \"{count} file conflict\", \"msgid_plural\": \"{count} files conflict\", \"msgstr\": [\"{count} фајл конфликт\", \"{count} фајл конфликта\", \"{count} фајл конфликта\"] }, \"{count} file conflict in {dirname}\": { \"msgid\": \"{count} file conflict in {dirname}\", \"msgid_plural\": \"{count} file conflicts in {dirname}\", \"msgstr\": [\"{count} фајл конфликт у {dirname}\", \"{count} фајл конфликта у {dirname}\", \"{count} фајл конфликта у {dirname}\"] }, \"{seconds} seconds left\": { \"msgid\": \"{seconds} seconds left\", \"msgid_plural\": \"{seconds} seconds left\", \"msgstr\": [\"преостало је {seconds} секунда\", \"преостало је {seconds} секунде\", \"преостало је {seconds} секунди\"] }, \"{time} left\": { \"msgid\": \"{time} left\", \"comments\": { \"extracted\": \"TRANSLATORS time has the format 00:00:00\" }, \"msgstr\": [\"{time} преостало\"] }, \"a few seconds left\": { \"msgid\": \"a few seconds left\", \"msgstr\": [\"преостало је неколико секунди\"] }, \"assembling\": { \"msgid\": \"assembling\", \"msgstr\": [\"састављање\"] }, \"Cancel\": { \"msgid\": \"Cancel\", \"msgstr\": [\"Откажи\"] }, \"Cancel the entire operation\": { \"msgid\": \"Cancel the entire operation\", \"msgstr\": [\"Отказује комплетну операцију\"] }, \"Cancel uploads\": { \"msgid\": \"Cancel uploads\", \"msgstr\": [\"Обустави отпремања\"] }, \"Continue\": { \"msgid\": \"Continue\", \"msgstr\": [\"Настави\"] }, \"Create new\": { \"msgid\": \"Create new\", \"msgstr\": [\"Креирај ново\"] }, \"estimating time left\": { \"msgid\": \"estimating time left\", \"msgstr\": [\"процена преосталог времена\"] }, \"Existing version\": { \"msgid\": \"Existing version\", \"msgstr\": [\"Постојећа верзија\"] }, \"Failed to assemble the chunks together\": { \"msgid\": \"Failed to assemble the chunks together\", \"msgstr\": [\"Није успело састављање делова\"] }, \"Failed to upload the file\": { \"msgid\": \"Failed to upload the file\", \"msgstr\": [\"Није успело отпремање фајла\"] }, 'Filenames must not end with \"{segment}\".': { \"msgid\": 'Filenames must not end with \"{segment}\".', \"msgstr\": [\"Имена фајлова не смеју да се завршавају на „{segment}”.\"] }, \"If you select both versions, the incoming file will have a number added to its name.\": { \"msgid\": \"If you select both versions, the incoming file will have a number added to its name.\", \"msgstr\": [\"Ако изаберете обе верзије, на име долазног фајла ће се додати број.\"] }, \"Invalid filename\": { \"msgid\": \"Invalid filename\", \"msgstr\": [\"Неисправно име фајла\"] }, \"Last modified date unknown\": { \"msgid\": \"Last modified date unknown\", \"msgstr\": [\"Није познат датум последње измене\"] }, \"New\": { \"msgid\": \"New\", \"msgstr\": [\"Ново\"] }, \"New filename\": { \"msgid\": \"New filename\", \"msgstr\": [\"Ново име фајла\"] }, \"New version\": { \"msgid\": \"New version\", \"msgstr\": [\"Нова верзија\"] }, \"paused\": { \"msgid\": \"paused\", \"msgstr\": [\"паузирано\"] }, \"Preview image\": { \"msgid\": \"Preview image\", \"msgstr\": [\"Слика прегледа\"] }, \"Rename\": { \"msgid\": \"Rename\", \"msgstr\": [\"Промени име\"] }, \"Select all checkboxes\": { \"msgid\": \"Select all checkboxes\", \"msgstr\": [\"Штиклирај сва поља за штиклирање\"] }, \"Select all existing files\": { \"msgid\": \"Select all existing files\", \"msgstr\": [\"Изабери све постојеће фајлове\"] }, \"Select all new files\": { \"msgid\": \"Select all new files\", \"msgstr\": [\"Изабери све нове фајлове\"] }, \"Skip\": { \"msgid\": \"Skip\", \"msgstr\": [\"Прескочи\"] }, \"Skip {count} file\": { \"msgid\": \"Skip {count} file\", \"msgid_plural\": \"Skip {count} files\", \"msgstr\": [\"Прескочи {count} фајл\", \"Прескочи {count} фајла\", \"Прескочи {count} фајлова\"] }, \"Skip this file\": { \"msgid\": \"Skip this file\", \"msgstr\": [\"Прескочи овај фајл\"] }, \"Unknown size\": { \"msgid\": \"Unknown size\", \"msgstr\": [\"Непозната величина\"] }, \"Upload\": { \"msgid\": \"Upload\", \"msgstr\": [\"Отпреми\"] }, \"Upload files\": { \"msgid\": \"Upload files\", \"msgstr\": [\"Отпреми фајлове\"] }, \"Upload folders\": { \"msgid\": \"Upload folders\", \"msgstr\": [\"Отпреми фолдере\"] }, \"Upload from device\": { \"msgid\": \"Upload from device\", \"msgstr\": [\"Отпреми са уређаја\"] }, \"Upload has been cancelled\": { \"msgid\": \"Upload has been cancelled\", \"msgstr\": [\"Отпремање је отказано\"] }, \"Upload has been skipped\": { \"msgid\": \"Upload has been skipped\", \"msgstr\": [\"Отпремање је прескочено\"] }, 'Upload of \"{folder}\" has been skipped': { \"msgid\": 'Upload of \"{folder}\" has been skipped', \"msgstr\": [\"Отпремање „{folder}”је прескочено\"] }, \"Upload progress\": { \"msgid\": \"Upload progress\", \"msgstr\": [\"Напредак отпремања\"] }, \"When an incoming folder is selected, any conflicting files within it will also be overwritten.\": { \"msgid\": \"When an incoming folder is selected, any conflicting files within it will also be overwritten.\", \"msgstr\": [\"Када се изабере долазни фолдер, сва имена фајлова са конфликтом унутар њега ће се такође преписати.\"] }, \"When an incoming folder is selected, the content is written into the existing folder and a recursive conflict resolution is performed.\": { \"msgid\": \"When an incoming folder is selected, the content is written into the existing folder and a recursive conflict resolution is performed.\", \"msgstr\": [\"Када се изабере долазни фолдер, садржај се уписује у постојећи фолдер и извршава се рекурзивно разрешавање конфликата.\"] }, \"Which files do you want to keep?\": { \"msgid\": \"Which files do you want to keep?\", \"msgstr\": [\"Које фајлове желите да задржите?\"] }, \"You can either rename the file, skip this file or cancel the whole operation.\": { \"msgid\": \"You can either rename the file, skip this file or cancel the whole operation.\", \"msgstr\": [\"Можете или да промените име фајлу, прескочите овај фајл или откажете комплетну операцију.\"] }, \"You need to select at least one version of each file to continue.\": { \"msgid\": \"You need to select at least one version of each file to continue.\", \"msgstr\": [\"Морате да изаберете барем једну верзију сваког фајла да наставите.\"] } } } } }, { \"locale\": \"sr@latin\", \"json\": { \"charset\": \"utf-8\", \"headers\": { \"Last-Translator\": \"Transifex Bot <>, 2022\", \"Language-Team\": \"Serbian (Latin) (https://www.transifex.com/nextcloud/teams/64236/sr@latin/)\", \"Content-Type\": \"text/plain; charset=UTF-8\", \"Language\": \"sr@latin\", \"Plural-Forms\": \"nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);\" }, \"translations\": { \"\": { \"\": { \"msgid\": \"\", \"comments\": { \"translator\": \"\\nTranslators:\\nTransifex Bot <>, 2022\\n\" }, \"msgstr\": [\"Last-Translator: Transifex Bot <>, 2022\\nLanguage-Team: Serbian (Latin) (https://www.transifex.com/nextcloud/teams/64236/sr@latin/)\\nContent-Type: text/plain; charset=UTF-8\\nLanguage: sr@latin\\nPlural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);\\n\"] }, \"{estimate} seconds left\": { \"msgid\": \"{estimate} seconds left\", \"msgstr\": [\"\"] }, \"{hours} hours and {minutes} minutes left\": { \"msgid\": \"{hours} hours and {minutes} minutes left\", \"msgstr\": [\"\"] }, \"{minutes} minutes left\": { \"msgid\": \"{minutes} minutes left\", \"msgstr\": [\"\"] }, \"a few seconds left\": { \"msgid\": \"a few seconds left\", \"msgstr\": [\"\"] }, \"Add\": { \"msgid\": \"Add\", \"msgstr\": [\"\"] }, \"Cancel uploads\": { \"msgid\": \"Cancel uploads\", \"msgstr\": [\"\"] }, \"estimating time left\": { \"msgid\": \"estimating time left\", \"msgstr\": [\"\"] }, \"paused\": { \"msgid\": \"paused\", \"msgstr\": [\"\"] } } } } }, { \"locale\": \"sv\", \"json\": { \"charset\": \"utf-8\", \"headers\": { \"Last-Translator\": \"Magnus Höglund, 2025\", \"Language-Team\": \"Swedish (https://app.transifex.com/nextcloud/teams/64236/sv/)\", \"Content-Type\": \"text/plain; charset=UTF-8\", \"Language\": \"sv\", \"Plural-Forms\": \"nplurals=2; plural=(n != 1);\" }, \"translations\": { \"\": { \"\": { \"msgid\": \"\", \"comments\": { \"translator\": \"\\nTranslators:\\nJoas Schilling, 2024\\nMagnus Höglund, 2025\\n\" }, \"msgstr\": [\"Last-Translator: Magnus Höglund, 2025\\nLanguage-Team: Swedish (https://app.transifex.com/nextcloud/teams/64236/sv/)\\nContent-Type: text/plain; charset=UTF-8\\nLanguage: sv\\nPlural-Forms: nplurals=2; plural=(n != 1);\\n\"] }, '\"{segment}\" is a forbidden file or folder name.': { \"msgid\": '\"{segment}\" is a forbidden file or folder name.', \"msgstr\": ['\"{segment}\" är ett förbjudet fil- eller mappnamn.'] }, '\"{segment}\" is a forbidden file type.': { \"msgid\": '\"{segment}\" is a forbidden file type.', \"msgstr\": ['\"{segment}\" är en förbjuden filtyp.'] }, '\"{segment}\" is not allowed inside a file or folder name.': { \"msgid\": '\"{segment}\" is not allowed inside a file or folder name.', \"msgstr\": ['\"{segment}\" är inte tillåtet i ett fil- eller mappnamn.'] }, \"{count} file conflict\": { \"msgid\": \"{count} file conflict\", \"msgid_plural\": \"{count} files conflict\", \"msgstr\": [\"{count} filkonflikt\", \"{count} filkonflikter\"] }, \"{count} file conflict in {dirname}\": { \"msgid\": \"{count} file conflict in {dirname}\", \"msgid_plural\": \"{count} file conflicts in {dirname}\", \"msgstr\": [\"{count} filkonflikt i {dirname}\", \"{count} filkonflikter i {dirname}\"] }, \"{seconds} seconds left\": { \"msgid\": \"{seconds} seconds left\", \"msgid_plural\": \"{seconds} seconds left\", \"msgstr\": [\"{seconds} sekunder kvar\", \"{seconds} sekunder kvar\"] }, \"{time} left\": { \"msgid\": \"{time} left\", \"comments\": { \"extracted\": \"TRANSLATORS time has the format 00:00:00\" }, \"msgstr\": [\"{time} kvarstår\"] }, \"a few seconds left\": { \"msgid\": \"a few seconds left\", \"msgstr\": [\"några sekunder kvar\"] }, \"assembling\": { \"msgid\": \"assembling\", \"msgstr\": [\"Sammanställer\"] }, \"Cancel\": { \"msgid\": \"Cancel\", \"msgstr\": [\"Avbryt\"] }, \"Cancel the entire operation\": { \"msgid\": \"Cancel the entire operation\", \"msgstr\": [\"Avbryt hela operationen\"] }, \"Cancel uploads\": { \"msgid\": \"Cancel uploads\", \"msgstr\": [\"Avbryt uppladdningar\"] }, \"Continue\": { \"msgid\": \"Continue\", \"msgstr\": [\"Fortsätt\"] }, \"Create new\": { \"msgid\": \"Create new\", \"msgstr\": [\"Skapa ny\"] }, \"estimating time left\": { \"msgid\": \"estimating time left\", \"msgstr\": [\"uppskattar kvarstående tid\"] }, \"Existing version\": { \"msgid\": \"Existing version\", \"msgstr\": [\"Nuvarande version\"] }, \"Failed to assemble the chunks together\": { \"msgid\": \"Failed to assemble the chunks together\", \"msgstr\": [\"Misslyckades med att sammanställa delarna\"] }, \"Failed to upload the file\": { \"msgid\": \"Failed to upload the file\", \"msgstr\": [\"Kunde inte ladda upp filen\"] }, 'Filenames must not end with \"{segment}\".': { \"msgid\": 'Filenames must not end with \"{segment}\".', \"msgstr\": ['Filnamn får inte sluta med \"{segment}\".'] }, \"If you select both versions, the incoming file will have a number added to its name.\": { \"msgid\": \"If you select both versions, the incoming file will have a number added to its name.\", \"msgstr\": [\"Om du väljer båda versionerna kommer den inkommande filen att läggas till ett nummer i namnet.\"] }, \"Invalid filename\": { \"msgid\": \"Invalid filename\", \"msgstr\": [\"Ogiltigt filnamn\"] }, \"Last modified date unknown\": { \"msgid\": \"Last modified date unknown\", \"msgstr\": [\"Senaste ändringsdatum okänt\"] }, \"New\": { \"msgid\": \"New\", \"msgstr\": [\"Ny\"] }, \"New filename\": { \"msgid\": \"New filename\", \"msgstr\": [\"Nytt filnamn\"] }, \"New version\": { \"msgid\": \"New version\", \"msgstr\": [\"Ny version\"] }, \"paused\": { \"msgid\": \"paused\", \"msgstr\": [\"pausad\"] }, \"Preview image\": { \"msgid\": \"Preview image\", \"msgstr\": [\"Förhandsgranska bild\"] }, \"Rename\": { \"msgid\": \"Rename\", \"msgstr\": [\"Byt namn\"] }, \"Select all checkboxes\": { \"msgid\": \"Select all checkboxes\", \"msgstr\": [\"Markera alla kryssrutor\"] }, \"Select all existing files\": { \"msgid\": \"Select all existing files\", \"msgstr\": [\"Välj alla befintliga filer\"] }, \"Select all new files\": { \"msgid\": \"Select all new files\", \"msgstr\": [\"Välj alla nya filer\"] }, \"Skip\": { \"msgid\": \"Skip\", \"msgstr\": [\"Hoppa över\"] }, \"Skip {count} file\": { \"msgid\": \"Skip {count} file\", \"msgid_plural\": \"Skip {count} files\", \"msgstr\": [\"Hoppa över {count} fil\", \"Hoppa över {count} filer\"] }, \"Skip this file\": { \"msgid\": \"Skip this file\", \"msgstr\": [\"Hoppa över denna fil\"] }, \"Unknown size\": { \"msgid\": \"Unknown size\", \"msgstr\": [\"Okänd storlek\"] }, \"Upload\": { \"msgid\": \"Upload\", \"msgstr\": [\"Ladda upp\"] }, \"Upload files\": { \"msgid\": \"Upload files\", \"msgstr\": [\"Ladda upp filer\"] }, \"Upload folders\": { \"msgid\": \"Upload folders\", \"msgstr\": [\"Ladda upp mappar\"] }, \"Upload from device\": { \"msgid\": \"Upload from device\", \"msgstr\": [\"Ladda upp från enhet\"] }, \"Upload has been cancelled\": { \"msgid\": \"Upload has been cancelled\", \"msgstr\": [\"Uppladdningen har avbrutits\"] }, \"Upload has been skipped\": { \"msgid\": \"Upload has been skipped\", \"msgstr\": [\"Uppladdningen har hoppats över\"] }, 'Upload of \"{folder}\" has been skipped': { \"msgid\": 'Upload of \"{folder}\" has been skipped', \"msgstr\": ['Uppladdningen av \"{folder}\" har hoppats över'] }, \"Upload progress\": { \"msgid\": \"Upload progress\", \"msgstr\": [\"Uppladdningsförlopp\"] }, \"When an incoming folder is selected, any conflicting files within it will also be overwritten.\": { \"msgid\": \"When an incoming folder is selected, any conflicting files within it will also be overwritten.\", \"msgstr\": [\"När en inkommande mapp väljs skrivs även alla konfliktande filer i den över.\"] }, \"When an incoming folder is selected, the content is written into the existing folder and a recursive conflict resolution is performed.\": { \"msgid\": \"When an incoming folder is selected, the content is written into the existing folder and a recursive conflict resolution is performed.\", \"msgstr\": [\"När en inkommande mapp väljs skrivs innehållet in i den befintliga mappen och en rekursiv konfliktlösning utförs.\"] }, \"Which files do you want to keep?\": { \"msgid\": \"Which files do you want to keep?\", \"msgstr\": [\"Vilka filer vill du behålla?\"] }, \"You can either rename the file, skip this file or cancel the whole operation.\": { \"msgid\": \"You can either rename the file, skip this file or cancel the whole operation.\", \"msgstr\": [\"Du kan antingen byta namn på filen, hoppa över den här filen eller avbryta hela operationen.\"] }, \"You need to select at least one version of each file to continue.\": { \"msgid\": \"You need to select at least one version of each file to continue.\", \"msgstr\": [\"Du måste välja minst en version av varje fil för att fortsätta.\"] } } } } }, { \"locale\": \"sw\", \"json\": { \"charset\": \"utf-8\", \"headers\": { \"Last-Translator\": \"Transifex Bot <>, 2022\", \"Language-Team\": \"Swahili (https://www.transifex.com/nextcloud/teams/64236/sw/)\", \"Content-Type\": \"text/plain; charset=UTF-8\", \"Language\": \"sw\", \"Plural-Forms\": \"nplurals=2; plural=(n != 1);\" }, \"translations\": { \"\": { \"\": { \"msgid\": \"\", \"comments\": { \"translator\": \"\\nTranslators:\\nTransifex Bot <>, 2022\\n\" }, \"msgstr\": [\"Last-Translator: Transifex Bot <>, 2022\\nLanguage-Team: Swahili (https://www.transifex.com/nextcloud/teams/64236/sw/)\\nContent-Type: text/plain; charset=UTF-8\\nLanguage: sw\\nPlural-Forms: nplurals=2; plural=(n != 1);\\n\"] }, \"{estimate} seconds left\": { \"msgid\": \"{estimate} seconds left\", \"msgstr\": [\"\"] }, \"{hours} hours and {minutes} minutes left\": { \"msgid\": \"{hours} hours and {minutes} minutes left\", \"msgstr\": [\"\"] }, \"{minutes} minutes left\": { \"msgid\": \"{minutes} minutes left\", \"msgstr\": [\"\"] }, \"a few seconds left\": { \"msgid\": \"a few seconds left\", \"msgstr\": [\"\"] }, \"Add\": { \"msgid\": \"Add\", \"msgstr\": [\"\"] }, \"Cancel uploads\": { \"msgid\": \"Cancel uploads\", \"msgstr\": [\"\"] }, \"estimating time left\": { \"msgid\": \"estimating time left\", \"msgstr\": [\"\"] }, \"paused\": { \"msgid\": \"paused\", \"msgstr\": [\"\"] } } } } }, { \"locale\": \"ta\", \"json\": { \"charset\": \"utf-8\", \"headers\": { \"Last-Translator\": \"Transifex Bot <>, 2022\", \"Language-Team\": \"Tamil (https://www.transifex.com/nextcloud/teams/64236/ta/)\", \"Content-Type\": \"text/plain; charset=UTF-8\", \"Language\": \"ta\", \"Plural-Forms\": \"nplurals=2; plural=(n != 1);\" }, \"translations\": { \"\": { \"\": { \"msgid\": \"\", \"comments\": { \"translator\": \"\\nTranslators:\\nTransifex Bot <>, 2022\\n\" }, \"msgstr\": [\"Last-Translator: Transifex Bot <>, 2022\\nLanguage-Team: Tamil (https://www.transifex.com/nextcloud/teams/64236/ta/)\\nContent-Type: text/plain; charset=UTF-8\\nLanguage: ta\\nPlural-Forms: nplurals=2; plural=(n != 1);\\n\"] }, \"{estimate} seconds left\": { \"msgid\": \"{estimate} seconds left\", \"msgstr\": [\"\"] }, \"{hours} hours and {minutes} minutes left\": { \"msgid\": \"{hours} hours and {minutes} minutes left\", \"msgstr\": [\"\"] }, \"{minutes} minutes left\": { \"msgid\": \"{minutes} minutes left\", \"msgstr\": [\"\"] }, \"a few seconds left\": { \"msgid\": \"a few seconds left\", \"msgstr\": [\"\"] }, \"Add\": { \"msgid\": \"Add\", \"msgstr\": [\"\"] }, \"Cancel uploads\": { \"msgid\": \"Cancel uploads\", \"msgstr\": [\"\"] }, \"estimating time left\": { \"msgid\": \"estimating time left\", \"msgstr\": [\"\"] }, \"paused\": { \"msgid\": \"paused\", \"msgstr\": [\"\"] } } } } }, { \"locale\": \"th\", \"json\": { \"charset\": \"utf-8\", \"headers\": { \"Last-Translator\": \"Phongpanot Phairat , 2022\", \"Language-Team\": \"Thai (Thailand) (https://www.transifex.com/nextcloud/teams/64236/th_TH/)\", \"Content-Type\": \"text/plain; charset=UTF-8\", \"Language\": \"th_TH\", \"Plural-Forms\": \"nplurals=1; plural=0;\" }, \"translations\": { \"\": { \"\": { \"msgid\": \"\", \"comments\": { \"translator\": \"\\nTranslators:\\nPhongpanot Phairat , 2022\\n\" }, \"msgstr\": [\"Last-Translator: Phongpanot Phairat , 2022\\nLanguage-Team: Thai (Thailand) (https://www.transifex.com/nextcloud/teams/64236/th_TH/)\\nContent-Type: text/plain; charset=UTF-8\\nLanguage: th_TH\\nPlural-Forms: nplurals=1; plural=0;\\n\"] }, \"{seconds} seconds left\": { \"msgid\": \"{seconds} seconds left\", \"msgstr\": [\"เหลืออีก {seconds} วินาที\"] }, \"{time} left\": { \"msgid\": \"{time} left\", \"comments\": { \"extracted\": \"time has the format 00:00:00\" }, \"msgstr\": [\"เหลืออีก {time}\"] }, \"a few seconds left\": { \"msgid\": \"a few seconds left\", \"msgstr\": [\"เหลืออีกไม่กี่วินาที\"] }, \"Add\": { \"msgid\": \"Add\", \"msgstr\": [\"เพิ่ม\"] }, \"Cancel uploads\": { \"msgid\": \"Cancel uploads\", \"msgstr\": [\"ยกเลิกการอัปโหลด\"] }, \"estimating time left\": { \"msgid\": \"estimating time left\", \"msgstr\": [\"กำลังคำนวณเวลาที่เหลือ\"] }, \"paused\": { \"msgid\": \"paused\", \"msgstr\": [\"หยุดชั่วคราว\"] }, \"Upload files\": { \"msgid\": \"Upload files\", \"msgstr\": [\"อัปโหลดไฟล์\"] } } } } }, { \"locale\": \"tk\", \"json\": { \"charset\": \"utf-8\", \"headers\": { \"Last-Translator\": \"Transifex Bot <>, 2022\", \"Language-Team\": \"Turkmen (https://www.transifex.com/nextcloud/teams/64236/tk/)\", \"Content-Type\": \"text/plain; charset=UTF-8\", \"Language\": \"tk\", \"Plural-Forms\": \"nplurals=2; plural=(n != 1);\" }, \"translations\": { \"\": { \"\": { \"msgid\": \"\", \"comments\": { \"translator\": \"\\nTranslators:\\nTransifex Bot <>, 2022\\n\" }, \"msgstr\": [\"Last-Translator: Transifex Bot <>, 2022\\nLanguage-Team: Turkmen (https://www.transifex.com/nextcloud/teams/64236/tk/)\\nContent-Type: text/plain; charset=UTF-8\\nLanguage: tk\\nPlural-Forms: nplurals=2; plural=(n != 1);\\n\"] }, \"{estimate} seconds left\": { \"msgid\": \"{estimate} seconds left\", \"msgstr\": [\"\"] }, \"{hours} hours and {minutes} minutes left\": { \"msgid\": \"{hours} hours and {minutes} minutes left\", \"msgstr\": [\"\"] }, \"{minutes} minutes left\": { \"msgid\": \"{minutes} minutes left\", \"msgstr\": [\"\"] }, \"a few seconds left\": { \"msgid\": \"a few seconds left\", \"msgstr\": [\"\"] }, \"Add\": { \"msgid\": \"Add\", \"msgstr\": [\"\"] }, \"Cancel uploads\": { \"msgid\": \"Cancel uploads\", \"msgstr\": [\"\"] }, \"estimating time left\": { \"msgid\": \"estimating time left\", \"msgstr\": [\"\"] }, \"paused\": { \"msgid\": \"paused\", \"msgstr\": [\"\"] } } } } }, { \"locale\": \"tr\", \"json\": { \"charset\": \"utf-8\", \"headers\": { \"Last-Translator\": \"Kaya Zeren , 2025\", \"Language-Team\": \"Turkish (https://app.transifex.com/nextcloud/teams/64236/tr/)\", \"Content-Type\": \"text/plain; charset=UTF-8\", \"Language\": \"tr\", \"Plural-Forms\": \"nplurals=2; plural=(n > 1);\" }, \"translations\": { \"\": { \"\": { \"msgid\": \"\", \"comments\": { \"translator\": \"\\nTranslators:\\nJoas Schilling, 2024\\nKaya Zeren , 2025\\n\" }, \"msgstr\": [\"Last-Translator: Kaya Zeren , 2025\\nLanguage-Team: Turkish (https://app.transifex.com/nextcloud/teams/64236/tr/)\\nContent-Type: text/plain; charset=UTF-8\\nLanguage: tr\\nPlural-Forms: nplurals=2; plural=(n > 1);\\n\"] }, '\"{segment}\" is a forbidden file or folder name.': { \"msgid\": '\"{segment}\" is a forbidden file or folder name.', \"msgstr\": ['\"{segment}\" dosya ya da klasör adına izin verilmiyor.'] }, '\"{segment}\" is a forbidden file type.': { \"msgid\": '\"{segment}\" is a forbidden file type.', \"msgstr\": ['\"{segment}\" dosya türüne izin verilmiyor.'] }, '\"{segment}\" is not allowed inside a file or folder name.': { \"msgid\": '\"{segment}\" is not allowed inside a file or folder name.', \"msgstr\": ['Bir dosya ya da klasör adında \"{segment}\" ifadesine izin verilmiyor.'] }, \"{count} file conflict\": { \"msgid\": \"{count} file conflict\", \"msgid_plural\": \"{count} files conflict\", \"msgstr\": [\"{count} dosya çakışması var\", \"{count} dosya çakışması var\"] }, \"{count} file conflict in {dirname}\": { \"msgid\": \"{count} file conflict in {dirname}\", \"msgid_plural\": \"{count} file conflicts in {dirname}\", \"msgstr\": [\"{dirname} klasöründe {count} dosya çakışması var\", \"{dirname} klasöründe {count} dosya çakışması var\"] }, \"{seconds} seconds left\": { \"msgid\": \"{seconds} seconds left\", \"msgid_plural\": \"{seconds} seconds left\", \"msgstr\": [\"{seconds} saniye kaldı\", \"{seconds} saniye kaldı\"] }, \"{time} left\": { \"msgid\": \"{time} left\", \"comments\": { \"extracted\": \"TRANSLATORS time has the format 00:00:00\" }, \"msgstr\": [\"{time} kaldı\"] }, \"a few seconds left\": { \"msgid\": \"a few seconds left\", \"msgstr\": [\"bir kaç saniye kaldı\"] }, \"assembling\": { \"msgid\": \"assembling\", \"msgstr\": [\"birleştiriliyor\"] }, \"Cancel\": { \"msgid\": \"Cancel\", \"msgstr\": [\"İptal\"] }, \"Cancel the entire operation\": { \"msgid\": \"Cancel the entire operation\", \"msgstr\": [\"Tüm işlemi iptal et\"] }, \"Cancel uploads\": { \"msgid\": \"Cancel uploads\", \"msgstr\": [\"Yüklemeleri iptal et\"] }, \"Continue\": { \"msgid\": \"Continue\", \"msgstr\": [\"İlerle\"] }, \"Create new\": { \"msgid\": \"Create new\", \"msgstr\": [\"Yeni ekle\"] }, \"estimating time left\": { \"msgid\": \"estimating time left\", \"msgstr\": [\"öngörülen kalan süre\"] }, \"Existing version\": { \"msgid\": \"Existing version\", \"msgstr\": [\"Var olan sürüm\"] }, \"Failed to assemble the chunks together\": { \"msgid\": \"Failed to assemble the chunks together\", \"msgstr\": [\"Parçalar birleştirilemedi\"] }, \"Failed to upload the file\": { \"msgid\": \"Failed to upload the file\", \"msgstr\": [\"Dosya yüklenemedi\"] }, 'Filenames must not end with \"{segment}\".': { \"msgid\": 'Filenames must not end with \"{segment}\".', \"msgstr\": ['Dosya adları \"{segment}\" ile bitmemeli.'] }, \"If you select both versions, the incoming file will have a number added to its name.\": { \"msgid\": \"If you select both versions, the incoming file will have a number added to its name.\", \"msgstr\": [\"İki sürümü de seçerseniz, gelen dosyanın adına bir sayı eklenir.\"] }, \"Invalid filename\": { \"msgid\": \"Invalid filename\", \"msgstr\": [\"Dosya adı geçersiz\"] }, \"Last modified date unknown\": { \"msgid\": \"Last modified date unknown\", \"msgstr\": [\"Son değiştirilme tarihi bilinmiyor\"] }, \"New\": { \"msgid\": \"New\", \"msgstr\": [\"Yeni\"] }, \"New filename\": { \"msgid\": \"New filename\", \"msgstr\": [\"Yeni dosya adı\"] }, \"New version\": { \"msgid\": \"New version\", \"msgstr\": [\"Yeni sürüm\"] }, \"paused\": { \"msgid\": \"paused\", \"msgstr\": [\"duraklatıldı\"] }, \"Preview image\": { \"msgid\": \"Preview image\", \"msgstr\": [\"Görsel ön izlemesi\"] }, \"Rename\": { \"msgid\": \"Rename\", \"msgstr\": [\"Yeniden adlandır\"] }, \"Select all checkboxes\": { \"msgid\": \"Select all checkboxes\", \"msgstr\": [\"Tüm kutuları işaretle\"] }, \"Select all existing files\": { \"msgid\": \"Select all existing files\", \"msgstr\": [\"Tüm var olan dosyaları seç\"] }, \"Select all new files\": { \"msgid\": \"Select all new files\", \"msgstr\": [\"Tüm yeni dosyaları seç\"] }, \"Skip\": { \"msgid\": \"Skip\", \"msgstr\": [\"Atla\"] }, \"Skip {count} file\": { \"msgid\": \"Skip {count} file\", \"msgid_plural\": \"Skip {count} files\", \"msgstr\": [\"{count} dosyayı atla\", \"{count} dosyayı atla\"] }, \"Skip this file\": { \"msgid\": \"Skip this file\", \"msgstr\": [\"Bu dosyayı atla\"] }, \"Unknown size\": { \"msgid\": \"Unknown size\", \"msgstr\": [\"Boyut bilinmiyor\"] }, \"Upload\": { \"msgid\": \"Upload\", \"msgstr\": [\"Yükle\"] }, \"Upload files\": { \"msgid\": \"Upload files\", \"msgstr\": [\"Dosyaları yükle\"] }, \"Upload folders\": { \"msgid\": \"Upload folders\", \"msgstr\": [\"Klasörleri yükle\"] }, \"Upload from device\": { \"msgid\": \"Upload from device\", \"msgstr\": [\"Aygıttan yükle\"] }, \"Upload has been cancelled\": { \"msgid\": \"Upload has been cancelled\", \"msgstr\": [\"Yükleme iptal edildi\"] }, \"Upload has been skipped\": { \"msgid\": \"Upload has been skipped\", \"msgstr\": [\"Yükleme atlandı\"] }, 'Upload of \"{folder}\" has been skipped': { \"msgid\": 'Upload of \"{folder}\" has been skipped', \"msgstr\": ['\"{folder}\" klasörünün yüklenmesi atlandı'] }, \"Upload progress\": { \"msgid\": \"Upload progress\", \"msgstr\": [\"Yükleme ilerlemesi\"] }, \"When an incoming folder is selected, any conflicting files within it will also be overwritten.\": { \"msgid\": \"When an incoming folder is selected, any conflicting files within it will also be overwritten.\", \"msgstr\": [\"Bir gelen klasör seçildiğinde, içindeki çakışan dosyaların da üzerine yazılır.\"] }, \"When an incoming folder is selected, the content is written into the existing folder and a recursive conflict resolution is performed.\": { \"msgid\": \"When an incoming folder is selected, the content is written into the existing folder and a recursive conflict resolution is performed.\", \"msgstr\": [\"Bir gelen klasörü seçildiğinde içerik var olan klasöre yazılır ve yinelemeli bir çakışma çözümü uygulanır.\"] }, \"Which files do you want to keep?\": { \"msgid\": \"Which files do you want to keep?\", \"msgstr\": [\"Hangi dosyaları tutmak istiyorsunuz?\"] }, \"You can either rename the file, skip this file or cancel the whole operation.\": { \"msgid\": \"You can either rename the file, skip this file or cancel the whole operation.\", \"msgstr\": [\"Dosya adını değiştirebilir, bu dosyayı atlayabilir ya da tüm işlemi iptal edebilirsiniz.\"] }, \"You need to select at least one version of each file to continue.\": { \"msgid\": \"You need to select at least one version of each file to continue.\", \"msgstr\": [\"İlerlemek için her dosyanın en az bir sürümünü seçmelisiniz.\"] } } } } }, { \"locale\": \"ug\", \"json\": { \"charset\": \"utf-8\", \"headers\": { \"Last-Translator\": \"Transifex Bot <>, 2022\", \"Language-Team\": \"Uyghur (https://www.transifex.com/nextcloud/teams/64236/ug/)\", \"Content-Type\": \"text/plain; charset=UTF-8\", \"Language\": \"ug\", \"Plural-Forms\": \"nplurals=2; plural=(n != 1);\" }, \"translations\": { \"\": { \"\": { \"msgid\": \"\", \"comments\": { \"translator\": \"\\nTranslators:\\nTransifex Bot <>, 2022\\n\" }, \"msgstr\": [\"Last-Translator: Transifex Bot <>, 2022\\nLanguage-Team: Uyghur (https://www.transifex.com/nextcloud/teams/64236/ug/)\\nContent-Type: text/plain; charset=UTF-8\\nLanguage: ug\\nPlural-Forms: nplurals=2; plural=(n != 1);\\n\"] }, \"{estimate} seconds left\": { \"msgid\": \"{estimate} seconds left\", \"msgstr\": [\"\"] }, \"{hours} hours and {minutes} minutes left\": { \"msgid\": \"{hours} hours and {minutes} minutes left\", \"msgstr\": [\"\"] }, \"{minutes} minutes left\": { \"msgid\": \"{minutes} minutes left\", \"msgstr\": [\"\"] }, \"a few seconds left\": { \"msgid\": \"a few seconds left\", \"msgstr\": [\"\"] }, \"Add\": { \"msgid\": \"Add\", \"msgstr\": [\"\"] }, \"Cancel uploads\": { \"msgid\": \"Cancel uploads\", \"msgstr\": [\"\"] }, \"estimating time left\": { \"msgid\": \"estimating time left\", \"msgstr\": [\"\"] }, \"paused\": { \"msgid\": \"paused\", \"msgstr\": [\"\"] } } } } }, { \"locale\": \"uk\", \"json\": { \"charset\": \"utf-8\", \"headers\": { \"Last-Translator\": \"O St, 2025\", \"Language-Team\": \"Ukrainian (https://app.transifex.com/nextcloud/teams/64236/uk/)\", \"Content-Type\": \"text/plain; charset=UTF-8\", \"Language\": \"uk\", \"Plural-Forms\": \"nplurals=4; plural=(n % 1 == 0 && n % 10 == 1 && n % 100 != 11 ? 0 : n % 1 == 0 && n % 10 >= 2 && n % 10 <= 4 && (n % 100 < 12 || n % 100 > 14) ? 1 : n % 1 == 0 && (n % 10 ==0 || (n % 10 >=5 && n % 10 <=9) || (n % 100 >=11 && n % 100 <=14 )) ? 2: 3);\" }, \"translations\": { \"\": { \"\": { \"msgid\": \"\", \"comments\": { \"translator\": \"\\nTranslators:\\nJoas Schilling, 2024\\nO St, 2025\\n\" }, \"msgstr\": [\"Last-Translator: O St, 2025\\nLanguage-Team: Ukrainian (https://app.transifex.com/nextcloud/teams/64236/uk/)\\nContent-Type: text/plain; charset=UTF-8\\nLanguage: uk\\nPlural-Forms: nplurals=4; plural=(n % 1 == 0 && n % 10 == 1 && n % 100 != 11 ? 0 : n % 1 == 0 && n % 10 >= 2 && n % 10 <= 4 && (n % 100 < 12 || n % 100 > 14) ? 1 : n % 1 == 0 && (n % 10 ==0 || (n % 10 >=5 && n % 10 <=9) || (n % 100 >=11 && n % 100 <=14 )) ? 2: 3);\\n\"] }, '\"{segment}\" is a forbidden file or folder name.': { \"msgid\": '\"{segment}\" is a forbidden file or folder name.', \"msgstr\": [`\"{segment}\" недозволене ім'я файлу або каталогу.`] }, '\"{segment}\" is a forbidden file type.': { \"msgid\": '\"{segment}\" is a forbidden file type.', \"msgstr\": ['\"{segment}\" недозволений тип файлу.'] }, '\"{segment}\" is not allowed inside a file or folder name.': { \"msgid\": '\"{segment}\" is not allowed inside a file or folder name.', \"msgstr\": ['\"{segment}\" недозволене сполучення символів в назві файлу або каталогу.'] }, \"{count} file conflict\": { \"msgid\": \"{count} file conflict\", \"msgid_plural\": \"{count} files conflict\", \"msgstr\": [\"{count} конфліктний файл\", \"{count} конфліктних файли\", \"{count} конфліктних файлів\", \"{count} конфліктних файлів\"] }, \"{count} file conflict in {dirname}\": { \"msgid\": \"{count} file conflict in {dirname}\", \"msgid_plural\": \"{count} file conflicts in {dirname}\", \"msgstr\": [\"{count} конфліктний файл у каталозі {dirname}\", \"{count} конфліктних файли у каталозі {dirname}\", \"{count} конфліктних файлів у каталозі {dirname}\", \"{count} конфліктних файлів у каталозі {dirname}\"] }, \"{seconds} seconds left\": { \"msgid\": \"{seconds} seconds left\", \"msgid_plural\": \"{seconds} seconds left\", \"msgstr\": [\"{seconds} секунда залишилася\", \"{seconds} секунди залишилося\", \"{seconds} секунд залишилося\", \"{seconds} секунд залишилося\"] }, \"{time} left\": { \"msgid\": \"{time} left\", \"comments\": { \"extracted\": \"TRANSLATORS time has the format 00:00:00\" }, \"msgstr\": [\"Залишилося {time}\"] }, \"a few seconds left\": { \"msgid\": \"a few seconds left\", \"msgstr\": [\"залишилося кілька секунд\"] }, \"assembling\": { \"msgid\": \"assembling\", \"msgstr\": [\"збірка\"] }, \"Cancel\": { \"msgid\": \"Cancel\", \"msgstr\": [\"Скасувати\"] }, \"Cancel the entire operation\": { \"msgid\": \"Cancel the entire operation\", \"msgstr\": [\"Скасувати операцію повністю\"] }, \"Cancel uploads\": { \"msgid\": \"Cancel uploads\", \"msgstr\": [\"Скасувати завантаження\"] }, \"Continue\": { \"msgid\": \"Continue\", \"msgstr\": [\"Продовжити\"] }, \"Create new\": { \"msgid\": \"Create new\", \"msgstr\": [\"Створити новий\"] }, \"estimating time left\": { \"msgid\": \"estimating time left\", \"msgstr\": [\"оцінка часу, що залишився\"] }, \"Existing version\": { \"msgid\": \"Existing version\", \"msgstr\": [\"Присутня версія\"] }, \"Failed to assemble the chunks together\": { \"msgid\": \"Failed to assemble the chunks together\", \"msgstr\": [\"Не вдалося зібрати частинки докупи\"] }, \"Failed to upload the file\": { \"msgid\": \"Failed to upload the file\", \"msgstr\": [\"Не вдалося завантажити файл\"] }, 'Filenames must not end with \"{segment}\".': { \"msgid\": 'Filenames must not end with \"{segment}\".', \"msgstr\": [`Ім'я файлів не можуть закінчуватися на \"{segment}\".`] }, \"If you select both versions, the incoming file will have a number added to its name.\": { \"msgid\": \"If you select both versions, the incoming file will have a number added to its name.\", \"msgstr\": [\"Якщо буде вибрано обидві версії, до імени вхідного файлу було додано цифру.\"] }, \"Invalid filename\": { \"msgid\": \"Invalid filename\", \"msgstr\": [\"Недійсне ім'я файлу\"] }, \"Last modified date unknown\": { \"msgid\": \"Last modified date unknown\", \"msgstr\": [\"Дата останньої зміни невідома\"] }, \"New\": { \"msgid\": \"New\", \"msgstr\": [\"Нове\"] }, \"New filename\": { \"msgid\": \"New filename\", \"msgstr\": [\"Нове ім'я файлу\"] }, \"New version\": { \"msgid\": \"New version\", \"msgstr\": [\"Нова версія\"] }, \"paused\": { \"msgid\": \"paused\", \"msgstr\": [\"призупинено\"] }, \"Preview image\": { \"msgid\": \"Preview image\", \"msgstr\": [\"Попередній перегляд\"] }, \"Rename\": { \"msgid\": \"Rename\", \"msgstr\": [\"Перейменувати\"] }, \"Select all checkboxes\": { \"msgid\": \"Select all checkboxes\", \"msgstr\": [\"Вибрати все\"] }, \"Select all existing files\": { \"msgid\": \"Select all existing files\", \"msgstr\": [\"Вибрати усі присутні файли\"] }, \"Select all new files\": { \"msgid\": \"Select all new files\", \"msgstr\": [\"Вибрати усі нові файли\"] }, \"Skip\": { \"msgid\": \"Skip\", \"msgstr\": [\"Пропустити\"] }, \"Skip {count} file\": { \"msgid\": \"Skip {count} file\", \"msgid_plural\": \"Skip {count} files\", \"msgstr\": [\"Пропустити {count} файл\", \"Пропустити {count} файли\", \"Пропустити {count} файлів\", \"Пропустити {count} файлів\"] }, \"Skip this file\": { \"msgid\": \"Skip this file\", \"msgstr\": [\"Пропустити цей файл\"] }, \"Unknown size\": { \"msgid\": \"Unknown size\", \"msgstr\": [\"Невідомий розмір\"] }, \"Upload\": { \"msgid\": \"Upload\", \"msgstr\": [\"Завантажити\"] }, \"Upload files\": { \"msgid\": \"Upload files\", \"msgstr\": [\"Завантажити файли\"] }, \"Upload folders\": { \"msgid\": \"Upload folders\", \"msgstr\": [\"Завантажити каталоги\"] }, \"Upload from device\": { \"msgid\": \"Upload from device\", \"msgstr\": [\"Завантажити з пристрою\"] }, \"Upload has been cancelled\": { \"msgid\": \"Upload has been cancelled\", \"msgstr\": [\"Завантаження скасовано\"] }, \"Upload has been skipped\": { \"msgid\": \"Upload has been skipped\", \"msgstr\": [\"Завантаження пропущено\"] }, 'Upload of \"{folder}\" has been skipped': { \"msgid\": 'Upload of \"{folder}\" has been skipped', \"msgstr\": ['Завантаження \"{folder}\" пропущено'] }, \"Upload progress\": { \"msgid\": \"Upload progress\", \"msgstr\": [\"Поступ завантаження\"] }, \"When an incoming folder is selected, any conflicting files within it will also be overwritten.\": { \"msgid\": \"When an incoming folder is selected, any conflicting files within it will also be overwritten.\", \"msgstr\": [\"Усі конфліктні файли у вибраному каталозі призначення буде перезаписано поверх.\"] }, \"When an incoming folder is selected, the content is written into the existing folder and a recursive conflict resolution is performed.\": { \"msgid\": \"When an incoming folder is selected, the content is written into the existing folder and a recursive conflict resolution is performed.\", \"msgstr\": [\"Якщо буде вибрано вхідний каталог, вміст буде записано до наявного каталогу та вирішено конфлікти у відповідних файлах каталогу та підкаталогів.\"] }, \"Which files do you want to keep?\": { \"msgid\": \"Which files do you want to keep?\", \"msgstr\": [\"Які файли залишити?\"] }, \"You can either rename the file, skip this file or cancel the whole operation.\": { \"msgid\": \"You can either rename the file, skip this file or cancel the whole operation.\", \"msgstr\": [\"Ви можете або перейменувати цей файл, пропустити або скасувати дію з файлом.\"] }, \"You need to select at least one version of each file to continue.\": { \"msgid\": \"You need to select at least one version of each file to continue.\", \"msgstr\": [\"Для продовження потрібно вибрати принаймні одну версію для кожного файлу.\"] } } } } }, { \"locale\": \"ur_PK\", \"json\": { \"charset\": \"utf-8\", \"headers\": { \"Last-Translator\": \"Transifex Bot <>, 2022\", \"Language-Team\": \"Urdu (Pakistan) (https://www.transifex.com/nextcloud/teams/64236/ur_PK/)\", \"Content-Type\": \"text/plain; charset=UTF-8\", \"Language\": \"ur_PK\", \"Plural-Forms\": \"nplurals=2; plural=(n != 1);\" }, \"translations\": { \"\": { \"\": { \"msgid\": \"\", \"comments\": { \"translator\": \"\\nTranslators:\\nTransifex Bot <>, 2022\\n\" }, \"msgstr\": [\"Last-Translator: Transifex Bot <>, 2022\\nLanguage-Team: Urdu (Pakistan) (https://www.transifex.com/nextcloud/teams/64236/ur_PK/)\\nContent-Type: text/plain; charset=UTF-8\\nLanguage: ur_PK\\nPlural-Forms: nplurals=2; plural=(n != 1);\\n\"] }, \"{estimate} seconds left\": { \"msgid\": \"{estimate} seconds left\", \"msgstr\": [\"\"] }, \"{hours} hours and {minutes} minutes left\": { \"msgid\": \"{hours} hours and {minutes} minutes left\", \"msgstr\": [\"\"] }, \"{minutes} minutes left\": { \"msgid\": \"{minutes} minutes left\", \"msgstr\": [\"\"] }, \"a few seconds left\": { \"msgid\": \"a few seconds left\", \"msgstr\": [\"\"] }, \"Add\": { \"msgid\": \"Add\", \"msgstr\": [\"\"] }, \"Cancel uploads\": { \"msgid\": \"Cancel uploads\", \"msgstr\": [\"\"] }, \"estimating time left\": { \"msgid\": \"estimating time left\", \"msgstr\": [\"\"] }, \"paused\": { \"msgid\": \"paused\", \"msgstr\": [\"\"] } } } } }, { \"locale\": \"uz\", \"json\": { \"charset\": \"utf-8\", \"headers\": { \"Last-Translator\": \"Khurshid Ibatov , 2025\", \"Language-Team\": \"Uzbek (https://app.transifex.com/nextcloud/teams/64236/uz/)\", \"Content-Type\": \"text/plain; charset=UTF-8\", \"Language\": \"uz\", \"Plural-Forms\": \"nplurals=1; plural=0;\" }, \"translations\": { \"\": { \"\": { \"msgid\": \"\", \"comments\": { \"translator\": \"\\nTranslators:\\nKhurshid Ibatov , 2025\\n\" }, \"msgstr\": [\"Last-Translator: Khurshid Ibatov , 2025\\nLanguage-Team: Uzbek (https://app.transifex.com/nextcloud/teams/64236/uz/)\\nContent-Type: text/plain; charset=UTF-8\\nLanguage: uz\\nPlural-Forms: nplurals=1; plural=0;\\n\"] }, '\"{segment}\" is a forbidden file or folder name.': { \"msgid\": '\"{segment}\" is a forbidden file or folder name.', \"msgstr\": ['\"{segment}\" taqiqlangan fayl yoki papka nomidir.'] }, '\"{segment}\" is a forbidden file type.': { \"msgid\": '\"{segment}\" is a forbidden file type.', \"msgstr\": ['\"{segment}\" taqiqlangan fayl turi hisoblanadi.'] }, '\"{segment}\" is not allowed inside a file or folder name.': { \"msgid\": '\"{segment}\" is not allowed inside a file or folder name.', \"msgstr\": ['\"{segment}\" fayl yoki papka nomi ichida ruxsat berilmaydi.'] }, \"{count} file conflict\": { \"msgid\": \"{count} file conflict\", \"msgid_plural\": \"{count} files conflict\", \"msgstr\": [\"{count} fayllar ziddiyati\"] }, \"{count} file conflict in {dirname}\": { \"msgid\": \"{count} file conflict in {dirname}\", \"msgid_plural\": \"{count} file conflicts in {dirname}\", \"msgstr\": [\"{count}fayl ziddiyatlari {dirname} da\"] }, \"{seconds} seconds left\": { \"msgid\": \"{seconds} seconds left\", \"msgid_plural\": \"{seconds} seconds left\", \"msgstr\": [\"{seconds} soniya qoldi\"] }, \"{time} left\": { \"msgid\": \"{time} left\", \"comments\": { \"extracted\": \"TRANSLATORS time has the format 00:00:00\" }, \"msgstr\": [\"{time} qoldi\"] }, \"a few seconds left\": { \"msgid\": \"a few seconds left\", \"msgstr\": [\"bir necha soniya qoldi\"] }, \"assembling\": { \"msgid\": \"assembling\", \"msgstr\": [\"yig'ish\"] }, \"Cancel\": { \"msgid\": \"Cancel\", \"msgstr\": [\"Bekor qilish\"] }, \"Cancel the entire operation\": { \"msgid\": \"Cancel the entire operation\", \"msgstr\": [\"Butun operatsiyani bekor qiling\"] }, \"Cancel uploads\": { \"msgid\": \"Cancel uploads\", \"msgstr\": [\"Yuklashni bekor qilish\"] }, \"Continue\": { \"msgid\": \"Continue\", \"msgstr\": [\"Davom eting\"] }, \"Create new\": { \"msgid\": \"Create new\", \"msgstr\": [\"Yangi yaratish\"] }, \"estimating time left\": { \"msgid\": \"estimating time left\", \"msgstr\": [\"qolgan vaqtni hisoblash\"] }, \"Existing version\": { \"msgid\": \"Existing version\", \"msgstr\": [\"Mavjud versiya\"] }, \"Failed to assemble the chunks together\": { \"msgid\": \"Failed to assemble the chunks together\", \"msgstr\": [\"Bo'laklarni birlashtirib bo'lmadi\"] }, \"Failed to upload the file\": { \"msgid\": \"Failed to upload the file\", \"msgstr\": [\"Fayl yuklanmadi\"] }, 'Filenames must not end with \"{segment}\".': { \"msgid\": 'Filenames must not end with \"{segment}\".', \"msgstr\": ['Fayl nomlari bilan tugamasligi kerak \"{segment}\".'] }, \"If you select both versions, the incoming file will have a number added to its name.\": { \"msgid\": \"If you select both versions, the incoming file will have a number added to its name.\", \"msgstr\": [\"Agar siz ikkala versiyani tanlasangiz, kiruvchi fayl nomiga qo'shilgan raqamga ega bo'ladi.\"] }, \"Invalid filename\": { \"msgid\": \"Invalid filename\", \"msgstr\": [\"Fayl nomi noto‘g‘ri\"] }, \"Last modified date unknown\": { \"msgid\": \"Last modified date unknown\", \"msgstr\": [\"Oxirgi tahrirlangan sana noma'lum\"] }, \"New\": { \"msgid\": \"New\", \"msgstr\": [\"Yangi\"] }, \"New filename\": { \"msgid\": \"New filename\", \"msgstr\": [\"Yangi nom faylga\"] }, \"New version\": { \"msgid\": \"New version\", \"msgstr\": [\"Yangi versiya\"] }, \"paused\": { \"msgid\": \"paused\", \"msgstr\": [\"tanaffus\"] }, \"Preview image\": { \"msgid\": \"Preview image\", \"msgstr\": [\"Rasmni oldindan ko'rish\"] }, \"Rename\": { \"msgid\": \"Rename\", \"msgstr\": [\"Qayta nomlash\"] }, \"Select all checkboxes\": { \"msgid\": \"Select all checkboxes\", \"msgstr\": [\"Barcha katakchalarni belgilang\"] }, \"Select all existing files\": { \"msgid\": \"Select all existing files\", \"msgstr\": [\"Barcha mavjud fayllarni tanlang\"] }, \"Select all new files\": { \"msgid\": \"Select all new files\", \"msgstr\": [\"Barcha yangi fayllarni tanlang\"] }, \"Skip\": { \"msgid\": \"Skip\", \"msgstr\": [\"Oʻtkazib yuborish\"] }, \"Skip {count} file\": { \"msgid\": \"Skip {count} file\", \"msgid_plural\": \"Skip {count} files\", \"msgstr\": [\"Oʻtkazib yuborish {count} fayllarini\"] }, \"Skip this file\": { \"msgid\": \"Skip this file\", \"msgstr\": [\"Oʻtkazib yuborish ushbu faylni\"] }, \"Unknown size\": { \"msgid\": \"Unknown size\", \"msgstr\": [\"Noma'lum o'lcham\"] }, \"Upload\": { \"msgid\": \"Upload\", \"msgstr\": [\"Yuklash\"] }, \"Upload files\": { \"msgid\": \"Upload files\", \"msgstr\": [\"Fayllarni yuklash\"] }, \"Upload folders\": { \"msgid\": \"Upload folders\", \"msgstr\": [\"Jildlarni yuklash\"] }, \"Upload from device\": { \"msgid\": \"Upload from device\", \"msgstr\": [\"Qurilmadan yuklash\"] }, \"Upload has been cancelled\": { \"msgid\": \"Upload has been cancelled\", \"msgstr\": [\"Yuklash bekor qilindi\"] }, \"Upload has been skipped\": { \"msgid\": \"Upload has been skipped\", \"msgstr\": [\"Yuklash oʻtkazib yuborildi\"] }, 'Upload of \"{folder}\" has been skipped': { \"msgid\": 'Upload of \"{folder}\" has been skipped', \"msgstr\": [' \"{folder}\" ni yuklash bekor qilindi'] }, \"Upload progress\": { \"msgid\": \"Upload progress\", \"msgstr\": [\"Yuklash jarayoni\"] }, \"When an incoming folder is selected, any conflicting files within it will also be overwritten.\": { \"msgid\": \"When an incoming folder is selected, any conflicting files within it will also be overwritten.\", \"msgstr\": [\"Kiruvchi jild tanlanganda, undagi har qanday ziddiyatli fayllar ham ustiga yoziladi.\"] }, \"When an incoming folder is selected, the content is written into the existing folder and a recursive conflict resolution is performed.\": { \"msgid\": \"When an incoming folder is selected, the content is written into the existing folder and a recursive conflict resolution is performed.\", \"msgstr\": [\"Kiruvchi jild tanlanganda, kontent mavjud jildga yoziladi va nizolarni rekursiv hal qilish amalga oshiriladi.\"] }, \"Which files do you want to keep?\": { \"msgid\": \"Which files do you want to keep?\", \"msgstr\": [\"Qaysi fayllarni saqlamoqchisiz?\"] }, \"You can either rename the file, skip this file or cancel the whole operation.\": { \"msgid\": \"You can either rename the file, skip this file or cancel the whole operation.\", \"msgstr\": [\"Siz fayl nomini o'zgartirishingiz, ushbu faylni o'tkazib yuborishingiz yoki butun operatsiyani bekor qilishingiz mumkin.\"] }, \"You need to select at least one version of each file to continue.\": { \"msgid\": \"You need to select at least one version of each file to continue.\", \"msgstr\": [\"Davom etish uchun har bir faylning kamida bitta versiyasini tanlashingiz kerak.\"] } } } } }, { \"locale\": \"vi\", \"json\": { \"charset\": \"utf-8\", \"headers\": { \"Last-Translator\": \"nhatCreA, 2025\", \"Language-Team\": \"Vietnamese (https://app.transifex.com/nextcloud/teams/64236/vi/)\", \"Content-Type\": \"text/plain; charset=UTF-8\", \"Language\": \"vi\", \"Plural-Forms\": \"nplurals=1; plural=0;\" }, \"translations\": { \"\": { \"\": { \"msgid\": \"\", \"comments\": { \"translator\": \"\\nTranslators:\\nJoas Schilling, 2024\\nnhatCreA, 2025\\n\" }, \"msgstr\": [\"Last-Translator: nhatCreA, 2025\\nLanguage-Team: Vietnamese (https://app.transifex.com/nextcloud/teams/64236/vi/)\\nContent-Type: text/plain; charset=UTF-8\\nLanguage: vi\\nPlural-Forms: nplurals=1; plural=0;\\n\"] }, '\"{segment}\" is a forbidden file or folder name.': { \"msgid\": '\"{segment}\" is a forbidden file or folder name.', \"msgstr\": ['\"{segment}\" là tên thư mục bị cấm đặt.'] }, '\"{segment}\" is a forbidden file type.': { \"msgid\": '\"{segment}\" is a forbidden file type.', \"msgstr\": ['\"{segment}\" là loại tệp bị cấm.'] }, '\"{segment}\" is not allowed inside a file or folder name.': { \"msgid\": '\"{segment}\" is not allowed inside a file or folder name.', \"msgstr\": ['\"{segment}\" không được phép đặt trong tên tệp hoặc thư mục.'] }, \"{count} file conflict\": { \"msgid\": \"{count} file conflict\", \"msgid_plural\": \"{count} files conflict\", \"msgstr\": [\"{count} tệp tin xung đột\"] }, \"{count} file conflict in {dirname}\": { \"msgid\": \"{count} file conflict in {dirname}\", \"msgid_plural\": \"{count} file conflicts in {dirname}\", \"msgstr\": ['\"{count}\" tệp tin lỗi ở thư mục \"{dirname}\"'] }, \"{seconds} seconds left\": { \"msgid\": \"{seconds} seconds left\", \"msgid_plural\": \"{seconds} seconds left\", \"msgstr\": [\"{seconds} giây trước\"] }, \"{time} left\": { \"msgid\": \"{time} left\", \"comments\": { \"extracted\": \"TRANSLATORS time has the format 00:00:00\" }, \"msgstr\": [\"{time} trước\"] }, \"a few seconds left\": { \"msgid\": \"a few seconds left\", \"msgstr\": [\"vài giây trước\"] }, \"assembling\": { \"msgid\": \"assembling\", \"msgstr\": [\"đang cấu trúc\"] }, \"Cancel\": { \"msgid\": \"Cancel\", \"msgstr\": [\"Huỷ\"] }, \"Cancel the entire operation\": { \"msgid\": \"Cancel the entire operation\", \"msgstr\": [\"Huỷ toàn bộ thao tác\"] }, \"Cancel uploads\": { \"msgid\": \"Cancel uploads\", \"msgstr\": [\"Huỷ tải lên\"] }, \"Continue\": { \"msgid\": \"Continue\", \"msgstr\": [\"Tiếp Tục\"] }, \"Create new\": { \"msgid\": \"Create new\", \"msgstr\": [\"Tạo mới\"] }, \"estimating time left\": { \"msgid\": \"estimating time left\", \"msgstr\": [\"ước tính thời gian còn lại\"] }, \"Existing version\": { \"msgid\": \"Existing version\", \"msgstr\": [\"Phiên bản hiện tại\"] }, \"Failed to assemble the chunks together\": { \"msgid\": \"Failed to assemble the chunks together\", \"msgstr\": [\"Không thể assemble các chunks lại với nhau\"] }, \"Failed to upload the file\": { \"msgid\": \"Failed to upload the file\", \"msgstr\": [\"Tải lên tệp tin thất bại\"] }, 'Filenames must not end with \"{segment}\".': { \"msgid\": 'Filenames must not end with \"{segment}\".', \"msgstr\": ['Tên tập tin không được kết thúc bằng \"{segment}\".'] }, \"If you select both versions, the incoming file will have a number added to its name.\": { \"msgid\": \"If you select both versions, the incoming file will have a number added to its name.\", \"msgstr\": [\"Nếu bạn chọn cả hai, tệp tin đến sẽ có thêm một chữ số vào tên.\"] }, \"Invalid filename\": { \"msgid\": \"Invalid filename\", \"msgstr\": [\"Tên tệp tin không hợp lệ\"] }, \"Last modified date unknown\": { \"msgid\": \"Last modified date unknown\", \"msgstr\": [\"Ngày sửa dổi lần cuối không xác định\"] }, \"New\": { \"msgid\": \"New\", \"msgstr\": [\"Tạo Mới\"] }, \"New filename\": { \"msgid\": \"New filename\", \"msgstr\": [\"Tên tệp tin mới\"] }, \"New version\": { \"msgid\": \"New version\", \"msgstr\": [\"Phiên bản mới\"] }, \"paused\": { \"msgid\": \"paused\", \"msgstr\": [\"đã tạm dừng\"] }, \"Preview image\": { \"msgid\": \"Preview image\", \"msgstr\": [\"Xem trước ảnh\"] }, \"Rename\": { \"msgid\": \"Rename\", \"msgstr\": [\"Đổi tên\"] }, \"Select all checkboxes\": { \"msgid\": \"Select all checkboxes\", \"msgstr\": [\"Chọn tất cả\"] }, \"Select all existing files\": { \"msgid\": \"Select all existing files\", \"msgstr\": [\"Chọn tất cả các tập tin đang tồn tại\"] }, \"Select all new files\": { \"msgid\": \"Select all new files\", \"msgstr\": [\"Chọn tất cả các tập tin mới\"] }, \"Skip\": { \"msgid\": \"Skip\", \"msgstr\": [\"Bỏ qua\"] }, \"Skip {count} file\": { \"msgid\": \"Skip {count} file\", \"msgid_plural\": \"Skip {count} files\", \"msgstr\": [\"Bỏ qua {count} tệp\"] }, \"Skip this file\": { \"msgid\": \"Skip this file\", \"msgstr\": [\"Bỏ qua tệp này\"] }, \"Unknown size\": { \"msgid\": \"Unknown size\", \"msgstr\": [\"Không rõ dung lượng\"] }, \"Upload\": { \"msgid\": \"Upload\", \"msgstr\": [\"Tải Lên\"] }, \"Upload files\": { \"msgid\": \"Upload files\", \"msgstr\": [\"Tải lên tệp tin\"] }, \"Upload folders\": { \"msgid\": \"Upload folders\", \"msgstr\": [\"Tải lên thư mục\"] }, \"Upload from device\": { \"msgid\": \"Upload from device\", \"msgstr\": [\"Tải lên từ thiết bị\"] }, \"Upload has been cancelled\": { \"msgid\": \"Upload has been cancelled\", \"msgstr\": [\"Tải lên đã bị huỷ\"] }, \"Upload has been skipped\": { \"msgid\": \"Upload has been skipped\", \"msgstr\": [\"Tải lên đã bỏ qua\"] }, 'Upload of \"{folder}\" has been skipped': { \"msgid\": 'Upload of \"{folder}\" has been skipped', \"msgstr\": ['Tải lên \"{folder}\" đã bị bỏ qua'] }, \"Upload progress\": { \"msgid\": \"Upload progress\", \"msgstr\": [\"Tiến trình tải lên\"] }, \"When an incoming folder is selected, any conflicting files within it will also be overwritten.\": { \"msgid\": \"When an incoming folder is selected, any conflicting files within it will also be overwritten.\", \"msgstr\": [\"Khi bạn chọn một thư mục để đưa vào, bất kỳ tệp nào trong đó gây xung đột cũng sẽ bị ghi đè.\"] }, \"When an incoming folder is selected, the content is written into the existing folder and a recursive conflict resolution is performed.\": { \"msgid\": \"When an incoming folder is selected, the content is written into the existing folder and a recursive conflict resolution is performed.\", \"msgstr\": [\"Khi chọn một thư mục để đưa vào, nội dung sẽ được ghi vào thư mục hiện có, và hệ thống sẽ tự động giải quyết các xung đột một cách chi tiết và cẩn thận.\"] }, \"Which files do you want to keep?\": { \"msgid\": \"Which files do you want to keep?\", \"msgstr\": [\"Bạn muốn giữ tệp nào?\"] }, \"You can either rename the file, skip this file or cancel the whole operation.\": { \"msgid\": \"You can either rename the file, skip this file or cancel the whole operation.\", \"msgstr\": [\"Bạn có thể đổi tên tệp, bỏ qua tệp này, hoặc hủy toàn bộ thao tác.\"] }, \"You need to select at least one version of each file to continue.\": { \"msgid\": \"You need to select at least one version of each file to continue.\", \"msgstr\": [\"Bạn cần chọn ít nhất một phiên bản cho mỗi tệp để tiếp tục.\"] } } } } }, { \"locale\": \"zh_CN\", \"json\": { \"charset\": \"utf-8\", \"headers\": { \"Last-Translator\": \"DWXXX, 2025\", \"Language-Team\": \"Chinese (China) (https://app.transifex.com/nextcloud/teams/64236/zh_CN/)\", \"Content-Type\": \"text/plain; charset=UTF-8\", \"Language\": \"zh_CN\", \"Plural-Forms\": \"nplurals=1; plural=0;\" }, \"translations\": { \"\": { \"\": { \"msgid\": \"\", \"comments\": { \"translator\": \"\\nTranslators:\\nJoas Schilling, 2024\\ngloryandel, 2024\\nDWXXX, 2025\\n\" }, \"msgstr\": [\"Last-Translator: DWXXX, 2025\\nLanguage-Team: Chinese (China) (https://app.transifex.com/nextcloud/teams/64236/zh_CN/)\\nContent-Type: text/plain; charset=UTF-8\\nLanguage: zh_CN\\nPlural-Forms: nplurals=1; plural=0;\\n\"] }, '\"{segment}\" is a forbidden file or folder name.': { \"msgid\": '\"{segment}\" is a forbidden file or folder name.', \"msgstr\": ['\"{segment}\" 是被禁止的文件名或文件夹名。'] }, '\"{segment}\" is a forbidden file type.': { \"msgid\": '\"{segment}\" is a forbidden file type.', \"msgstr\": ['\"{segment}\" 是被禁止的文件类型。'] }, '\"{segment}\" is not allowed inside a file or folder name.': { \"msgid\": '\"{segment}\" is not allowed inside a file or folder name.', \"msgstr\": ['\"{segment}\" 不允许包含在文件名或文件夹名中。'] }, \"{count} file conflict\": { \"msgid\": \"{count} file conflict\", \"msgid_plural\": \"{count} files conflict\", \"msgstr\": [\"{count}文件冲突\"] }, \"{count} file conflict in {dirname}\": { \"msgid\": \"{count} file conflict in {dirname}\", \"msgid_plural\": \"{count} file conflicts in {dirname}\", \"msgstr\": [\"在{dirname}目录下有{count}个文件冲突\"] }, \"{seconds} seconds left\": { \"msgid\": \"{seconds} seconds left\", \"msgid_plural\": \"{seconds} seconds left\", \"msgstr\": [\"剩余{seconds} 秒\"] }, \"{time} left\": { \"msgid\": \"{time} left\", \"comments\": { \"extracted\": \"TRANSLATORS time has the format 00:00:00\" }, \"msgstr\": [\"剩余 {time}\"] }, \"a few seconds left\": { \"msgid\": \"a few seconds left\", \"msgstr\": [\"还剩几秒\"] }, \"assembling\": { \"msgid\": \"assembling\", \"msgstr\": [\"聚合\"] }, \"Cancel\": { \"msgid\": \"Cancel\", \"msgstr\": [\"取消\"] }, \"Cancel the entire operation\": { \"msgid\": \"Cancel the entire operation\", \"msgstr\": [\"取消整个操作\"] }, \"Cancel uploads\": { \"msgid\": \"Cancel uploads\", \"msgstr\": [\"取消上传\"] }, \"Continue\": { \"msgid\": \"Continue\", \"msgstr\": [\"继续\"] }, \"Create new\": { \"msgid\": \"Create new\", \"msgstr\": [\"新建\"] }, \"estimating time left\": { \"msgid\": \"estimating time left\", \"msgstr\": [\"估计剩余时间\"] }, \"Existing version\": { \"msgid\": \"Existing version\", \"msgstr\": [\"服务端版本\"] }, \"Failed to assemble the chunks together\": { \"msgid\": \"Failed to assemble the chunks together\", \"msgstr\": [\"组合区块失败\"] }, \"Failed to upload the file\": { \"msgid\": \"Failed to upload the file\", \"msgstr\": [\"上传文件失败\"] }, 'Filenames must not end with \"{segment}\".': { \"msgid\": 'Filenames must not end with \"{segment}\".', \"msgstr\": ['文件名不得以 \"{segment}\" 结尾。'] }, \"If you select both versions, the incoming file will have a number added to its name.\": { \"msgid\": \"If you select both versions, the incoming file will have a number added to its name.\", \"msgstr\": [\"如果同时选择两个版本,则上传文件的名称中将添加一个数字。\"] }, \"Invalid filename\": { \"msgid\": \"Invalid filename\", \"msgstr\": [\"无效文件名\"] }, \"Last modified date unknown\": { \"msgid\": \"Last modified date unknown\", \"msgstr\": [\"文件最后修改日期未知\"] }, \"New\": { \"msgid\": \"New\", \"msgstr\": [\"新建\"] }, \"New filename\": { \"msgid\": \"New filename\", \"msgstr\": [\"新文件名\"] }, \"New version\": { \"msgid\": \"New version\", \"msgstr\": [\"上传版本\"] }, \"paused\": { \"msgid\": \"paused\", \"msgstr\": [\"已暂停\"] }, \"Preview image\": { \"msgid\": \"Preview image\", \"msgstr\": [\"图片预览\"] }, \"Rename\": { \"msgid\": \"Rename\", \"msgstr\": [\"重命名\"] }, \"Select all checkboxes\": { \"msgid\": \"Select all checkboxes\", \"msgstr\": [\"选择所有的选择框\"] }, \"Select all existing files\": { \"msgid\": \"Select all existing files\", \"msgstr\": [\"保留所有服务端版本\"] }, \"Select all new files\": { \"msgid\": \"Select all new files\", \"msgstr\": [\"保留所有上传版本\"] }, \"Skip\": { \"msgid\": \"Skip\", \"msgstr\": [\"跳过\"] }, \"Skip {count} file\": { \"msgid\": \"Skip {count} file\", \"msgid_plural\": \"Skip {count} files\", \"msgstr\": [\"跳过 {count} 文件\"] }, \"Skip this file\": { \"msgid\": \"Skip this file\", \"msgstr\": [\"跳过此文件\"] }, \"Unknown size\": { \"msgid\": \"Unknown size\", \"msgstr\": [\"文件大小未知\"] }, \"Upload\": { \"msgid\": \"Upload\", \"msgstr\": [\"上传\"] }, \"Upload files\": { \"msgid\": \"Upload files\", \"msgstr\": [\"上传文件\"] }, \"Upload folders\": { \"msgid\": \"Upload folders\", \"msgstr\": [\"上传文件夹\"] }, \"Upload from device\": { \"msgid\": \"Upload from device\", \"msgstr\": [\"从设备上传\"] }, \"Upload has been cancelled\": { \"msgid\": \"Upload has been cancelled\", \"msgstr\": [\"上传已取消\"] }, \"Upload has been skipped\": { \"msgid\": \"Upload has been skipped\", \"msgstr\": [\"上传已跳过\"] }, 'Upload of \"{folder}\" has been skipped': { \"msgid\": 'Upload of \"{folder}\" has been skipped', \"msgstr\": ['已跳过上传\"{folder}\"'] }, \"Upload progress\": { \"msgid\": \"Upload progress\", \"msgstr\": [\"上传进度\"] }, \"When an incoming folder is selected, any conflicting files within it will also be overwritten.\": { \"msgid\": \"When an incoming folder is selected, any conflicting files within it will also be overwritten.\", \"msgstr\": [\"当选择上传文件夹时,其中任何冲突的文件也都会被覆盖。\"] }, \"When an incoming folder is selected, the content is written into the existing folder and a recursive conflict resolution is performed.\": { \"msgid\": \"When an incoming folder is selected, the content is written into the existing folder and a recursive conflict resolution is performed.\", \"msgstr\": [\"选择上传文件夹后,内容将写入现有文件夹,并递归执行冲突解决。\"] }, \"Which files do you want to keep?\": { \"msgid\": \"Which files do you want to keep?\", \"msgstr\": [\"你要保留哪些文件?\"] }, \"You can either rename the file, skip this file or cancel the whole operation.\": { \"msgid\": \"You can either rename the file, skip this file or cancel the whole operation.\", \"msgstr\": [\"您可以重命名文件、跳过此文件或取消整个操作。\"] }, \"You need to select at least one version of each file to continue.\": { \"msgid\": \"You need to select at least one version of each file to continue.\", \"msgstr\": [\"每个文件至少选择保留一个版本\"] } } } } }, { \"locale\": \"zh_HK\", \"json\": { \"charset\": \"utf-8\", \"headers\": { \"Last-Translator\": \"Café Tango, 2025\", \"Language-Team\": \"Chinese (Hong Kong) (https://app.transifex.com/nextcloud/teams/64236/zh_HK/)\", \"Content-Type\": \"text/plain; charset=UTF-8\", \"Language\": \"zh_HK\", \"Plural-Forms\": \"nplurals=1; plural=0;\" }, \"translations\": { \"\": { \"\": { \"msgid\": \"\", \"comments\": { \"translator\": \"\\nTranslators:\\nJoas Schilling, 2024\\nCafé Tango, 2025\\n\" }, \"msgstr\": [\"Last-Translator: Café Tango, 2025\\nLanguage-Team: Chinese (Hong Kong) (https://app.transifex.com/nextcloud/teams/64236/zh_HK/)\\nContent-Type: text/plain; charset=UTF-8\\nLanguage: zh_HK\\nPlural-Forms: nplurals=1; plural=0;\\n\"] }, '\"{segment}\" is a forbidden file or folder name.': { \"msgid\": '\"{segment}\" is a forbidden file or folder name.', \"msgstr\": ['\"{segment}\" 是禁止使用的檔案或資料夾名稱。'] }, '\"{segment}\" is a forbidden file type.': { \"msgid\": '\"{segment}\" is a forbidden file type.', \"msgstr\": ['\"{segment}\" 是禁止使用的檔案類型。'] }, '\"{segment}\" is not allowed inside a file or folder name.': { \"msgid\": '\"{segment}\" is not allowed inside a file or folder name.', \"msgstr\": ['\"{segment}\" 不允許出現在檔案或資料夾名稱中。'] }, \"{count} file conflict\": { \"msgid\": \"{count} file conflict\", \"msgid_plural\": \"{count} files conflict\", \"msgstr\": [\"{count} 個檔案衝突\"] }, \"{count} file conflict in {dirname}\": { \"msgid\": \"{count} file conflict in {dirname}\", \"msgid_plural\": \"{count} file conflicts in {dirname}\", \"msgstr\": [\"{dirname} 中有 {count} 個檔案衝突\"] }, \"{seconds} seconds left\": { \"msgid\": \"{seconds} seconds left\", \"msgid_plural\": \"{seconds} seconds left\", \"msgstr\": [\"剩餘 {seconds} 秒\"] }, \"{time} left\": { \"msgid\": \"{time} left\", \"comments\": { \"extracted\": \"TRANSLATORS time has the format 00:00:00\" }, \"msgstr\": [\"剩餘 {time}\"] }, \"a few seconds left\": { \"msgid\": \"a few seconds left\", \"msgstr\": [\"還剩幾秒\"] }, \"assembling\": { \"msgid\": \"assembling\", \"msgstr\": [\"組裝\"] }, \"Cancel\": { \"msgid\": \"Cancel\", \"msgstr\": [\"取消\"] }, \"Cancel the entire operation\": { \"msgid\": \"Cancel the entire operation\", \"msgstr\": [\"取消整個操作\"] }, \"Cancel uploads\": { \"msgid\": \"Cancel uploads\", \"msgstr\": [\"取消上傳\"] }, \"Continue\": { \"msgid\": \"Continue\", \"msgstr\": [\"繼續\"] }, \"Create new\": { \"msgid\": \"Create new\", \"msgstr\": [\"創建新\"] }, \"estimating time left\": { \"msgid\": \"estimating time left\", \"msgstr\": [\"估計剩餘時間\"] }, \"Existing version\": { \"msgid\": \"Existing version\", \"msgstr\": [\"既有版本\"] }, \"Failed to assemble the chunks together\": { \"msgid\": \"Failed to assemble the chunks together\", \"msgstr\": [\"無法組裝這些部分\"] }, \"Failed to upload the file\": { \"msgid\": \"Failed to upload the file\", \"msgstr\": [\"無法上傳檔案\"] }, 'Filenames must not end with \"{segment}\".': { \"msgid\": 'Filenames must not end with \"{segment}\".', \"msgstr\": ['檔案名不得以 \"{segment}\" 結尾。'] }, \"If you select both versions, the incoming file will have a number added to its name.\": { \"msgid\": \"If you select both versions, the incoming file will have a number added to its name.\", \"msgstr\": [\"若您選取兩個版本,傳入檔案的名稱將會新增編號。\"] }, \"Invalid filename\": { \"msgid\": \"Invalid filename\", \"msgstr\": [\"無效的檔案名\"] }, \"Last modified date unknown\": { \"msgid\": \"Last modified date unknown\", \"msgstr\": [\"最後修改日期不詳\"] }, \"New\": { \"msgid\": \"New\", \"msgstr\": [\"新增\"] }, \"New filename\": { \"msgid\": \"New filename\", \"msgstr\": [\"新檔案名\"] }, \"New version\": { \"msgid\": \"New version\", \"msgstr\": [\"新版本 \"] }, \"paused\": { \"msgid\": \"paused\", \"msgstr\": [\"已暫停\"] }, \"Preview image\": { \"msgid\": \"Preview image\", \"msgstr\": [\"預覽圖片\"] }, \"Rename\": { \"msgid\": \"Rename\", \"msgstr\": [\"重新命名\"] }, \"Select all checkboxes\": { \"msgid\": \"Select all checkboxes\", \"msgstr\": [\"選取所有核取方塊\"] }, \"Select all existing files\": { \"msgid\": \"Select all existing files\", \"msgstr\": [\"選取所有既有檔案\"] }, \"Select all new files\": { \"msgid\": \"Select all new files\", \"msgstr\": [\"選取所有新檔案\"] }, \"Skip\": { \"msgid\": \"Skip\", \"msgstr\": [\"跳過\"] }, \"Skip {count} file\": { \"msgid\": \"Skip {count} file\", \"msgid_plural\": \"Skip {count} files\", \"msgstr\": [\"略過 {count} 個檔案\"] }, \"Skip this file\": { \"msgid\": \"Skip this file\", \"msgstr\": [\"略過這個檔案\"] }, \"Unknown size\": { \"msgid\": \"Unknown size\", \"msgstr\": [\"大小不詳\"] }, \"Upload\": { \"msgid\": \"Upload\", \"msgstr\": [\"上傳\"] }, \"Upload files\": { \"msgid\": \"Upload files\", \"msgstr\": [\"上傳檔案\"] }, \"Upload folders\": { \"msgid\": \"Upload folders\", \"msgstr\": [\"上傳資料夾\"] }, \"Upload from device\": { \"msgid\": \"Upload from device\", \"msgstr\": [\"從裝置上傳\"] }, \"Upload has been cancelled\": { \"msgid\": \"Upload has been cancelled\", \"msgstr\": [\"上傳已被取消\"] }, \"Upload has been skipped\": { \"msgid\": \"Upload has been skipped\", \"msgstr\": [\"上傳已被跳過\"] }, 'Upload of \"{folder}\" has been skipped': { \"msgid\": 'Upload of \"{folder}\" has been skipped', \"msgstr\": ['\"{folder}\" 的上傳已被跳過'] }, \"Upload progress\": { \"msgid\": \"Upload progress\", \"msgstr\": [\"上傳進度\"] }, \"When an incoming folder is selected, any conflicting files within it will also be overwritten.\": { \"msgid\": \"When an incoming folder is selected, any conflicting files within it will also be overwritten.\", \"msgstr\": [\"選取傳入資料夾後,其中任何的衝突檔案都會被覆寫。\"] }, \"When an incoming folder is selected, the content is written into the existing folder and a recursive conflict resolution is performed.\": { \"msgid\": \"When an incoming folder is selected, the content is written into the existing folder and a recursive conflict resolution is performed.\", \"msgstr\": [\"選擇傳入資料夾後,內容將寫入現有資料夾並執行遞歸衝突解決。\"] }, \"Which files do you want to keep?\": { \"msgid\": \"Which files do you want to keep?\", \"msgstr\": [\"您想保留哪些檔案?\"] }, \"You can either rename the file, skip this file or cancel the whole operation.\": { \"msgid\": \"You can either rename the file, skip this file or cancel the whole operation.\", \"msgstr\": [\"您可以選擇重新命名檔案、跳過此檔案或取消整個操作。\"] }, \"You need to select at least one version of each file to continue.\": { \"msgid\": \"You need to select at least one version of each file to continue.\", \"msgstr\": [\"您必須為每個檔案都至少選取一個版本以繼續。\"] } } } } }, { \"locale\": \"zh_TW\", \"json\": { \"charset\": \"utf-8\", \"headers\": { \"Last-Translator\": \"黃柏諺 , 2024\", \"Language-Team\": \"Chinese (Taiwan) (https://app.transifex.com/nextcloud/teams/64236/zh_TW/)\", \"Content-Type\": \"text/plain; charset=UTF-8\", \"Language\": \"zh_TW\", \"Plural-Forms\": \"nplurals=1; plural=0;\" }, \"translations\": { \"\": { \"\": { \"msgid\": \"\", \"comments\": { \"translator\": \"\\nTranslators:\\nJoas Schilling, 2024\\n黃柏諺 , 2024\\n\" }, \"msgstr\": [\"Last-Translator: 黃柏諺 , 2024\\nLanguage-Team: Chinese (Taiwan) (https://app.transifex.com/nextcloud/teams/64236/zh_TW/)\\nContent-Type: text/plain; charset=UTF-8\\nLanguage: zh_TW\\nPlural-Forms: nplurals=1; plural=0;\\n\"] }, \"{count} file conflict\": { \"msgid\": \"{count} file conflict\", \"msgid_plural\": \"{count} files conflict\", \"msgstr\": [\"{count} 個檔案衝突\"] }, \"{count} file conflict in {dirname}\": { \"msgid\": \"{count} file conflict in {dirname}\", \"msgid_plural\": \"{count} file conflicts in {dirname}\", \"msgstr\": [\"{dirname} 中有 {count} 個檔案衝突\"] }, \"{seconds} seconds left\": { \"msgid\": \"{seconds} seconds left\", \"msgstr\": [\"剩餘 {seconds} 秒\"] }, \"{time} left\": { \"msgid\": \"{time} left\", \"comments\": { \"extracted\": \"TRANSLATORS time has the format 00:00:00\" }, \"msgstr\": [\"剩餘 {time}\"] }, \"a few seconds left\": { \"msgid\": \"a few seconds left\", \"msgstr\": [\"還剩幾秒\"] }, \"Cancel\": { \"msgid\": \"Cancel\", \"msgstr\": [\"取消\"] }, \"Cancel the entire operation\": { \"msgid\": \"Cancel the entire operation\", \"msgstr\": [\"取消整個操作\"] }, \"Cancel uploads\": { \"msgid\": \"Cancel uploads\", \"msgstr\": [\"取消上傳\"] }, \"Continue\": { \"msgid\": \"Continue\", \"msgstr\": [\"繼續\"] }, \"estimating time left\": { \"msgid\": \"estimating time left\", \"msgstr\": [\"估計剩餘時間\"] }, \"Existing version\": { \"msgid\": \"Existing version\", \"msgstr\": [\"既有版本\"] }, \"If you select both versions, the copied file will have a number added to its name.\": { \"msgid\": \"If you select both versions, the copied file will have a number added to its name.\", \"msgstr\": [\"若您選取兩個版本,複製的檔案的名稱將會新增編號。\"] }, \"Last modified date unknown\": { \"msgid\": \"Last modified date unknown\", \"msgstr\": [\"最後修改日期未知\"] }, \"New\": { \"msgid\": \"New\", \"msgstr\": [\"新增\"] }, \"New version\": { \"msgid\": \"New version\", \"msgstr\": [\"新版本\"] }, \"paused\": { \"msgid\": \"paused\", \"msgstr\": [\"已暫停\"] }, \"Preview image\": { \"msgid\": \"Preview image\", \"msgstr\": [\"預覽圖片\"] }, \"Select all checkboxes\": { \"msgid\": \"Select all checkboxes\", \"msgstr\": [\"選取所有核取方塊\"] }, \"Select all existing files\": { \"msgid\": \"Select all existing files\", \"msgstr\": [\"選取所有既有檔案\"] }, \"Select all new files\": { \"msgid\": \"Select all new files\", \"msgstr\": [\"選取所有新檔案\"] }, \"Skip this file\": { \"msgid\": \"Skip this file\", \"msgid_plural\": \"Skip {count} files\", \"msgstr\": [\"略過 {count} 檔案\"] }, \"Unknown size\": { \"msgid\": \"Unknown size\", \"msgstr\": [\"未知大小\"] }, \"Upload cancelled\": { \"msgid\": \"Upload cancelled\", \"msgstr\": [\"已取消上傳\"] }, \"Upload files\": { \"msgid\": \"Upload files\", \"msgstr\": [\"上傳檔案\"] }, \"Upload progress\": { \"msgid\": \"Upload progress\", \"msgstr\": [\"上傳進度\"] }, \"When an incoming folder is selected, any conflicting files within it will also be overwritten.\": { \"msgid\": \"When an incoming folder is selected, any conflicting files within it will also be overwritten.\", \"msgstr\": [\"選取傳入資料夾後,其中任何的衝突檔案都會被覆寫。\"] }, \"Which files do you want to keep?\": { \"msgid\": \"Which files do you want to keep?\", \"msgstr\": [\"您想保留哪些檔案?\"] }, \"You need to select at least one version of each file to continue.\": { \"msgid\": \"You need to select at least one version of each file to continue.\", \"msgstr\": [\"您必須為每個檔案都至少選取一個版本以繼續。\"] } } } } }].map((data) => gtBuilder.addTranslation(data.locale, data.json));\nconst gt = gtBuilder.build();\nconst n = gt.ngettext.bind(gt);\nconst t = gt.gettext.bind(gt);\n/*!\n * SPDX-FileCopyrightText: 2025 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\nclass UploadCancelledError extends Error {\n  constructor(cause) {\n    super(t(\"Upload has been cancelled\"), { cause });\n  }\n}\nconst logger = getLoggerBuilder().setApp(\"@nextcloud/upload\").detectUser().build();\naxiosRetry(axios, { retries: 0 });\nasync function uploadData(url, uploadData2, uploadOptions) {\n  const options = {\n    headers: {},\n    onUploadProgress: () => {\n    },\n    onUploadRetry: () => {\n    },\n    retries: 5,\n    ...uploadOptions\n  };\n  let data;\n  if (uploadData2 instanceof Blob) {\n    data = uploadData2;\n  } else {\n    data = await uploadData2();\n  }\n  if (options.destinationFile) {\n    options.headers.Destination = options.destinationFile;\n  }\n  if (!options.headers[\"Content-Type\"]) {\n    options.headers[\"Content-Type\"] = \"application/octet-stream\";\n  }\n  return await axios.request({\n    method: \"PUT\",\n    url,\n    data,\n    signal: options.signal,\n    onUploadProgress: options.onUploadProgress,\n    headers: options.headers,\n    \"axios-retry\": {\n      retries: options.retries,\n      retryDelay: (retryCount, error) => exponentialDelay(retryCount, error, 1e3),\n      retryCondition(error) {\n        if (error.status === 507) {\n          return false;\n        }\n        if (error.status === 423) {\n          return true;\n        }\n        return isNetworkOrIdempotentRequestError(error);\n      },\n      onRetry: options.onUploadRetry\n    }\n  });\n}\nconst getChunk = function(file, start, length) {\n  if (start === 0 && file.size <= length) {\n    return Promise.resolve(new Blob([file], { type: file.type || \"application/octet-stream\" }));\n  }\n  return Promise.resolve(new Blob([file.slice(start, start + length)], { type: \"application/octet-stream\" }));\n};\nconst initChunkWorkspace = async function(destinationFile = void 0, retries = 5, isPublic = false, customHeaders = {}) {\n  let chunksWorkspace;\n  if (isPublic) {\n    chunksWorkspace = `${getBaseUrl()}/public.php/dav/uploads/${getSharingToken()}`;\n  } else {\n    chunksWorkspace = generateRemoteUrl(`dav/uploads/${getCurrentUser()?.uid}`);\n  }\n  const hash = [...Array(16)].map(() => Math.floor(Math.random() * 16).toString(16)).join(\"\");\n  const tempWorkspace = `web-file-upload-${hash}`;\n  const url = `${chunksWorkspace}/${tempWorkspace}`;\n  const headers = customHeaders;\n  if (destinationFile) {\n    headers.Destination = destinationFile;\n  }\n  await axios.request({\n    method: \"MKCOL\",\n    url,\n    headers,\n    \"axios-retry\": {\n      retries,\n      retryDelay: (retryCount, error) => exponentialDelay(retryCount, error, 1e3)\n    }\n  });\n  logger.debug(\"Created temporary upload workspace\", { url });\n  return url;\n};\n/*!\n * SPDX-FileCopyrightText: 2022 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\nconst getMaxChunksSize = function(fileSize = void 0) {\n  const maxChunkSize = window.OC?.appConfig?.files?.max_chunk_size;\n  if (maxChunkSize <= 0) {\n    return 0;\n  }\n  if (!Number(maxChunkSize)) {\n    return 10 * 1024 * 1024;\n  }\n  const minimumChunkSize = Math.max(Number(maxChunkSize), 5 * 1024 * 1024);\n  if (fileSize === void 0) {\n    return minimumChunkSize;\n  }\n  return Math.max(minimumChunkSize, Math.ceil(fileSize / 1e4));\n};\nvar Status = /* @__PURE__ */ ((Status2) => {\n  Status2[Status2[\"INITIALIZED\"] = 0] = \"INITIALIZED\";\n  Status2[Status2[\"UPLOADING\"] = 1] = \"UPLOADING\";\n  Status2[Status2[\"ASSEMBLING\"] = 2] = \"ASSEMBLING\";\n  Status2[Status2[\"FINISHED\"] = 3] = \"FINISHED\";\n  Status2[Status2[\"CANCELLED\"] = 4] = \"CANCELLED\";\n  Status2[Status2[\"FAILED\"] = 5] = \"FAILED\";\n  return Status2;\n})(Status || {});\nclass Upload {\n  _source;\n  _file;\n  _isChunked;\n  _chunks;\n  _size;\n  _uploaded = 0;\n  _startTime = 0;\n  _status = 0;\n  _controller;\n  _response = null;\n  constructor(source, chunked = false, size, file) {\n    const chunks = Math.min(getMaxChunksSize() > 0 ? Math.ceil(size / getMaxChunksSize()) : 1, 1e4);\n    this._source = source;\n    this._isChunked = chunked && getMaxChunksSize() > 0 && chunks > 1;\n    this._chunks = this._isChunked ? chunks : 1;\n    this._size = size;\n    this._file = file;\n    this._controller = new AbortController();\n  }\n  get source() {\n    return this._source;\n  }\n  get file() {\n    return this._file;\n  }\n  get isChunked() {\n    return this._isChunked;\n  }\n  get chunks() {\n    return this._chunks;\n  }\n  get size() {\n    return this._size;\n  }\n  get startTime() {\n    return this._startTime;\n  }\n  set response(response) {\n    this._response = response;\n  }\n  get response() {\n    return this._response;\n  }\n  get uploaded() {\n    return this._uploaded;\n  }\n  /**\n   * Update the uploaded bytes of this upload\n   */\n  set uploaded(length) {\n    if (length >= this._size) {\n      this._status = this._isChunked ? 2 : 3;\n      this._uploaded = this._size;\n      return;\n    }\n    this._status = 1;\n    this._uploaded = length;\n    if (this._startTime === 0) {\n      this._startTime = (/* @__PURE__ */ new Date()).getTime();\n    }\n  }\n  get status() {\n    return this._status;\n  }\n  /**\n   * Update this upload status\n   */\n  set status(status) {\n    this._status = status;\n  }\n  /**\n   * Returns the axios cancel token source\n   */\n  get signal() {\n    return this._controller.signal;\n  }\n  /**\n   * Cancel any ongoing requests linked to this upload\n   */\n  cancel() {\n    this._controller.abort();\n    this._status = 4;\n  }\n}\n/*!\n * SPDX-FileCopyrightText: 2024 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\nconst isFileSystemDirectoryEntry = (o) => \"FileSystemDirectoryEntry\" in window && o instanceof FileSystemDirectoryEntry;\nconst isFileSystemFileEntry = (o) => \"FileSystemFileEntry\" in window && o instanceof FileSystemFileEntry;\nconst isFileSystemEntry = (o) => \"FileSystemEntry\" in window && o instanceof FileSystemEntry;\nclass Directory extends File {\n  _originalName;\n  _path;\n  _children;\n  constructor(path) {\n    super([], basename(path), { type: \"httpd/unix-directory\", lastModified: 0 });\n    this._children = /* @__PURE__ */ new Map();\n    this._originalName = basename(path);\n    this._path = path;\n  }\n  get size() {\n    return this.children.reduce((sum, file) => sum + file.size, 0);\n  }\n  get lastModified() {\n    return this.children.reduce((latest, file) => Math.max(latest, file.lastModified), 0);\n  }\n  // We need this to keep track of renamed files\n  get originalName() {\n    return this._originalName;\n  }\n  get children() {\n    return Array.from(this._children.values());\n  }\n  get webkitRelativePath() {\n    return this._path;\n  }\n  getChild(name) {\n    return this._children.get(name) ?? null;\n  }\n  /**\n   * Add multiple children at once\n   * @param files The files to add\n   */\n  async addChildren(files) {\n    for (const file of files) {\n      await this.addChild(file);\n    }\n  }\n  /**\n   * Add a child to the directory.\n   * If it is a nested child the parents will be created if not already exist.\n   * @param file The child to add\n   */\n  async addChild(file) {\n    const rootPath = this._path && `${this._path}/`;\n    if (isFileSystemFileEntry(file)) {\n      file = await new Promise((resolve, reject) => file.file(resolve, reject));\n    } else if (isFileSystemDirectoryEntry(file)) {\n      const reader = file.createReader();\n      const entries = await new Promise((resolve, reject) => reader.readEntries(resolve, reject));\n      const child = new Directory(`${rootPath}${file.name}`);\n      await child.addChildren(entries);\n      this._children.set(file.name, child);\n      return;\n    }\n    file = file;\n    const filePath = file.webkitRelativePath ?? file.name;\n    if (!filePath.includes(\"/\")) {\n      this._children.set(file.name, file);\n    } else {\n      if (!filePath.startsWith(this._path)) {\n        throw new Error(`File ${filePath} is not a child of ${this._path}`);\n      }\n      const relPath = filePath.slice(rootPath.length);\n      const name = basename(relPath);\n      if (name === relPath) {\n        this._children.set(name, file);\n      } else {\n        const base = relPath.slice(0, relPath.indexOf(\"/\"));\n        if (this._children.has(base)) {\n          await this._children.get(base).addChild(file);\n        } else {\n          const child = new Directory(`${rootPath}${base}`);\n          await child.addChild(file);\n          this._children.set(base, child);\n        }\n      }\n    }\n  }\n}\n/*!\n * SPDX-FileCopyrightText: 2025 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\nvar EtaStatus = /* @__PURE__ */ ((EtaStatus2) => {\n  EtaStatus2[EtaStatus2[\"Idle\"] = 0] = \"Idle\";\n  EtaStatus2[EtaStatus2[\"Paused\"] = 1] = \"Paused\";\n  EtaStatus2[EtaStatus2[\"Running\"] = 2] = \"Running\";\n  return EtaStatus2;\n})(EtaStatus || {});\nclass Eta extends TypedEventTarget {\n  /** Bytes done */\n  _done = 0;\n  /** Total bytes to do */\n  _total = 0;\n  /** Current progress (cached) as interval [0,1] */\n  _progress = 0;\n  /** Status of the ETA */\n  _status = 0;\n  /** Time of the last update */\n  _startTime = -1;\n  /** Total elapsed time for current ETA */\n  _elapsedTime = 0;\n  /** Current speed in bytes per second */\n  _speed = -1;\n  /** Expected duration to finish in seconds */\n  _eta = Infinity;\n  /**\n   * Cutoff time for the low pass filter of the ETA.\n   * A higher value will consider more history information for calculation,\n   * and thus suppress spikes of the speed,\n   * but will make the overall resposiveness slower.\n   */\n  _cutoffTime = 2.5;\n  constructor(options = {}) {\n    super();\n    if (options.start) {\n      this.resume();\n    }\n    if (options.total) {\n      this.update(0, options.total);\n    }\n    this._cutoffTime = options.cutoffTime ?? 2.5;\n  }\n  /**\n   * Add more transferred bytes.\n   * @param done Additional bytes done.\n   */\n  add(done) {\n    this.update(this._done + done);\n  }\n  /**\n   * Update the transmission state.\n   *\n   * @param done The new value of transferred bytes.\n   * @param total Optionally also update the total bytes we expect.\n   */\n  update(done, total) {\n    if (this.status !== 2) {\n      return;\n    }\n    if (total && total > 0) {\n      this._total = total;\n    }\n    const deltaDone = done - this._done;\n    const deltaTime = (Date.now() - this._startTime) / 1e3;\n    this._startTime = Date.now();\n    this._elapsedTime += deltaTime;\n    this._done = done;\n    this._progress = this._done / this._total;\n    const historyNeeded = this._cutoffTime + deltaTime;\n    if (this._elapsedTime > historyNeeded) {\n      const alpha = deltaTime / (deltaTime + 1 / this._cutoffTime);\n      const filtered = this._done - deltaDone + (1 - alpha) * deltaDone;\n      this._speed = Math.round(filtered / this._elapsedTime);\n    } else if (this._speed === -1 && this._elapsedTime > deltaTime) {\n      const remaining = this._total - done;\n      const eta = remaining / (done / this._elapsedTime);\n      if (this._eta !== Infinity || eta <= 2 * this._cutoffTime) {\n        this._eta = eta;\n      }\n    }\n    if (this._speed > 0) {\n      this._eta = Math.round((this._total - this._done) / this._speed);\n    }\n    this.dispatchTypedEvent(\"update\", new CustomEvent(\"update\", { cancelable: false }));\n  }\n  reset() {\n    this._done = 0;\n    this._total = 0;\n    this._progress = 0;\n    this._elapsedTime = 0;\n    this._eta = Infinity;\n    this._speed = -1;\n    this._startTime = -1;\n    this._status = 0;\n    this.dispatchTypedEvent(\"reset\", new CustomEvent(\"reset\"));\n  }\n  /**\n   * Pause the ETA calculation.\n   */\n  pause() {\n    if (this._status === 2) {\n      this._status = 1;\n      this._elapsedTime += (Date.now() - this._startTime) / 1e3;\n      this.dispatchTypedEvent(\"pause\", new CustomEvent(\"pause\"));\n    }\n  }\n  /**\n   * Resume the ETA calculation.\n   */\n  resume() {\n    if (this._status !== 2) {\n      this._startTime = Date.now();\n      this._status = 2;\n      this.dispatchTypedEvent(\"resume\", new CustomEvent(\"resume\"));\n    }\n  }\n  /**\n   * Status of the Eta (paused, active, idle).\n   */\n  get status() {\n    return this._status;\n  }\n  /**\n   * Progress (percent done)\n   */\n  get progress() {\n    return Math.round(this._progress * 1e4) / 100;\n  }\n  /**\n   * Estimated time in seconds.\n   */\n  get time() {\n    return this._eta;\n  }\n  /**\n   * Human readable version of the estimated time.\n   */\n  get timeReadable() {\n    if (this._eta === Infinity) {\n      return t(\"estimating time left\");\n    } else if (this._eta < 10) {\n      return t(\"a few seconds left\");\n    } else if (this._eta < 60) {\n      return n(\"{seconds} seconds left\", \"{seconds} seconds left\", this._eta, { seconds: this._eta });\n    }\n    const hours = String(Math.floor(this._eta / 3600)).padStart(2, \"0\");\n    const minutes = String(Math.floor(this._eta % 3600 / 60)).padStart(2, \"0\");\n    const seconds = String(this._eta % 60).padStart(2, \"0\");\n    return t(\"{time} left\", { time: `${hours}:${minutes}:${seconds}` });\n  }\n  /**\n   * Transfer speed in bytes per second.\n   * Returns `-1` if not yet estimated.\n   */\n  get speed() {\n    return this._speed;\n  }\n  /**\n   * Get the speed in human readable format using file sizes like 10KB/s.\n   * Returns the empty string if not yet estimated.\n   */\n  get speedReadable() {\n    return this._speed > 0 ? `${formatFileSize(this._speed, true)}∕s` : \"\";\n  }\n}\nvar UploaderStatus = /* @__PURE__ */ ((UploaderStatus2) => {\n  UploaderStatus2[UploaderStatus2[\"IDLE\"] = 0] = \"IDLE\";\n  UploaderStatus2[UploaderStatus2[\"UPLOADING\"] = 1] = \"UPLOADING\";\n  UploaderStatus2[UploaderStatus2[\"PAUSED\"] = 2] = \"PAUSED\";\n  return UploaderStatus2;\n})(UploaderStatus || {});\nclass Uploader {\n  // Initialized via setter in the constructor\n  _destinationFolder;\n  _isPublic;\n  _customHeaders;\n  // Global upload queue\n  _uploadQueue = [];\n  _jobQueue = new PQueue({\n    // Maximum number of concurrent uploads\n    // @ts-expect-error TS2339 Object has no defined properties\n    concurrency: getCapabilities().files?.chunked_upload?.max_parallel_count ?? 5\n  });\n  _queueSize = 0;\n  _queueProgress = 0;\n  _queueStatus = 0;\n  _eta = new Eta();\n  _notifiers = [];\n  /**\n   * Initialize uploader\n   *\n   * @param {boolean} isPublic are we in public mode ?\n   * @param {Folder} destinationFolder the context folder to operate, relative to the root folder\n   */\n  constructor(isPublic = false, destinationFolder) {\n    this._isPublic = isPublic;\n    this._customHeaders = {};\n    if (!destinationFolder) {\n      const source = `${davRemoteURL}${davRootPath}`;\n      let owner;\n      if (isPublic) {\n        owner = \"anonymous\";\n      } else {\n        const user = getCurrentUser()?.uid;\n        if (!user) {\n          throw new Error(\"User is not logged in\");\n        }\n        owner = user;\n      }\n      destinationFolder = new Folder({\n        id: 0,\n        owner,\n        permissions: Permission.ALL,\n        root: davRootPath,\n        source\n      });\n    }\n    this.destination = destinationFolder;\n    logger.debug(\"Upload workspace initialized\", {\n      destination: this.destination,\n      root: this.root,\n      isPublic,\n      maxChunksSize: getMaxChunksSize()\n    });\n  }\n  /**\n   * Get the upload destination path relative to the root folder\n   */\n  get destination() {\n    return this._destinationFolder;\n  }\n  /**\n   * Set the upload destination path relative to the root folder\n   */\n  set destination(folder) {\n    if (!folder || folder.type !== FileType.Folder || !folder.source) {\n      throw new Error(\"Invalid destination folder\");\n    }\n    logger.debug(\"Destination set\", { folder });\n    this._destinationFolder = folder;\n  }\n  /**\n   * Get the root folder\n   */\n  get root() {\n    return this._destinationFolder.source;\n  }\n  /**\n   * Get registered custom headers for uploads\n   */\n  get customHeaders() {\n    return structuredClone(this._customHeaders);\n  }\n  /**\n   * Set a custom header\n   * @param name The header to set\n   * @param value The string value\n   */\n  setCustomHeader(name, value = \"\") {\n    this._customHeaders[name] = value;\n  }\n  /**\n   * Unset a custom header\n   * @param name The header to unset\n   */\n  deleteCustomerHeader(name) {\n    delete this._customHeaders[name];\n  }\n  /**\n   * Get the upload queue\n   */\n  get queue() {\n    return this._uploadQueue;\n  }\n  reset() {\n    this._eta.reset();\n    if (this._uploadQueue.length === 0 && this._jobQueue.size === 0) {\n      return;\n    }\n    this._uploadQueue.splice(0, this._uploadQueue.length);\n    this._jobQueue.clear();\n    this._queueSize = 0;\n    this._queueProgress = 0;\n    this._queueStatus = 0;\n    logger.debug(\"Uploader state reset\");\n  }\n  /**\n   * Pause any ongoing upload(s)\n   */\n  pause() {\n    this._eta.pause();\n    this._jobQueue.pause();\n    this._queueStatus = 2;\n    this.updateStats();\n    logger.debug(\"Uploader paused\");\n  }\n  /**\n   * Resume any pending upload(s)\n   */\n  start() {\n    this._eta.resume();\n    this._jobQueue.start();\n    this._queueStatus = 1;\n    this.updateStats();\n    logger.debug(\"Uploader resumed\");\n  }\n  /**\n   * Get the estimation for the uploading time.\n   */\n  get eta() {\n    return this._eta;\n  }\n  /**\n   * Get the upload queue stats\n   */\n  get info() {\n    return {\n      size: this._queueSize,\n      progress: this._queueProgress,\n      status: this._queueStatus\n    };\n  }\n  updateStats() {\n    const size = this._uploadQueue.map((upload2) => upload2.size).reduce((partialSum, a) => partialSum + a, 0);\n    const uploaded = this._uploadQueue.map((upload2) => upload2.uploaded).reduce((partialSum, a) => partialSum + a, 0);\n    this._eta.update(uploaded, size);\n    this._queueSize = size;\n    this._queueProgress = uploaded;\n    if (this._queueStatus !== 2) {\n      const pending = this._uploadQueue.find(({ status }) => [Status.INITIALIZED, Status.UPLOADING, Status.ASSEMBLING].includes(status));\n      if (this._jobQueue.size > 0 || pending) {\n        this._queueStatus = 1;\n      } else {\n        this.eta.reset();\n        this._queueStatus = 0;\n      }\n    }\n  }\n  addNotifier(notifier) {\n    this._notifiers.push(notifier);\n  }\n  /**\n   * Notify listeners of the upload completion\n   * @param upload The upload that finished\n   */\n  _notifyAll(upload2) {\n    for (const notifier of this._notifiers) {\n      try {\n        notifier(upload2);\n      } catch (error) {\n        logger.warn(\"Error in upload notifier\", { error, source: upload2.source });\n      }\n    }\n  }\n  /**\n   * Uploads multiple files or folders while preserving the relative path (if available)\n   * @param {string} destination The destination path relative to the root folder. e.g. /foo/bar (a file \"a.txt\" will be uploaded then to \"/foo/bar/a.txt\")\n   * @param {Array} files The files and/or folders to upload\n   * @param {Function} callback Callback that receives the nodes in the current folder and the current path to allow resolving conflicts, all nodes that are returned will be uploaded (if a folder does not exist it will be created)\n   * @return Cancelable promise that resolves to an array of uploads\n   *\n   * @example\n   * ```ts\n   * // For example this is from handling the onchange event of an input[type=file]\n   * async handleFiles(files: File[]) {\n   *   this.uploads = await this.uploader.batchUpload('uploads', files, this.handleConflicts)\n   * }\n   *\n   * async handleConflicts(nodes: File[], currentPath: string) {\n   *   const conflicts = getConflicts(nodes, this.fetchContent(currentPath))\n   *   if (conflicts.length === 0) {\n   *     // No conflicts so upload all\n   *     return nodes\n   *   } else {\n   *     // Open the conflict picker to resolve conflicts\n   *     try {\n   *       const { selected, renamed } = await openConflictPicker(currentPath, conflicts, this.fetchContent(currentPath), { recursive: true })\n   *       return [...selected, ...renamed]\n   *     } catch (e) {\n   *       return false\n   *     }\n   *   }\n   * }\n   * ```\n   */\n  batchUpload(destination, files, callback) {\n    if (!callback) {\n      callback = async (files2) => files2;\n    }\n    return new PCancelable(async (resolve, reject, onCancel) => {\n      const rootFolder = new Directory(\"\");\n      await rootFolder.addChildren(files);\n      const target = `${this.root.replace(/\\/$/, \"\")}/${destination.replace(/^\\//, \"\")}`;\n      const upload2 = new Upload(target, false, 0, rootFolder);\n      upload2.status = Status.UPLOADING;\n      this._uploadQueue.push(upload2);\n      logger.debug(\"Starting new batch upload\", { target });\n      try {\n        const client = davGetClient(this.root, this._customHeaders);\n        const promise = this.uploadDirectory(destination, rootFolder, callback, client);\n        onCancel(() => promise.cancel());\n        const uploads = await promise;\n        upload2.status = Status.FINISHED;\n        resolve(uploads);\n      } catch (error) {\n        if (isCancel(error) || error instanceof UploadCancelledError) {\n          logger.info(\"Upload cancelled by user\", { error });\n          upload2.status = Status.CANCELLED;\n          reject(new UploadCancelledError(error));\n        } else {\n          logger.error(\"Error in batch upload\", { error });\n          upload2.status = Status.FAILED;\n          reject(error);\n        }\n      } finally {\n        this._uploadQueue.splice(this._uploadQueue.indexOf(upload2), 1);\n        this._notifyAll(upload2);\n        this.updateStats();\n      }\n    });\n  }\n  /**\n   * Helper to create a directory wrapped inside an Upload class\n   * @param destination Destination where to create the directory\n   * @param directory The directory to create\n   * @param client The cached WebDAV client\n   */\n  createDirectory(destination, directory, client) {\n    const folderPath = normalize(`${destination}/${directory.name}`).replace(/\\/$/, \"\");\n    const rootPath = `${this.root.replace(/\\/$/, \"\")}/${folderPath.replace(/^\\//, \"\")}`;\n    if (!directory.name) {\n      throw new Error(\"Can not create empty directory\");\n    }\n    const currentUpload = new Upload(rootPath, false, 0, directory);\n    this._uploadQueue.push(currentUpload);\n    return new PCancelable(async (resolve, reject, onCancel) => {\n      const abort = new AbortController();\n      onCancel(() => abort.abort());\n      currentUpload.signal.addEventListener(\"abort\", () => reject(t(\"Upload has been cancelled\")));\n      await this._jobQueue.add(async () => {\n        currentUpload.status = Status.UPLOADING;\n        try {\n          await client.createDirectory(folderPath, { signal: abort.signal });\n          resolve(currentUpload);\n        } catch (error) {\n          if (isCancel(error) || error instanceof UploadCancelledError) {\n            currentUpload.status = Status.CANCELLED;\n            reject(new UploadCancelledError(error));\n          } else if (error && typeof error === \"object\" && \"status\" in error && error.status === 405) {\n            logger.debug(\"Directory already exists, writing into it\", { directory: directory.name });\n            currentUpload.status = Status.FINISHED;\n            resolve(currentUpload);\n          } else {\n            currentUpload.status = Status.FAILED;\n            reject(error);\n          }\n        } finally {\n          this._notifyAll(currentUpload);\n          this.updateStats();\n        }\n      });\n    });\n  }\n  // Helper for uploading directories (recursively)\n  uploadDirectory(destination, directory, callback, client) {\n    const folderPath = normalize(`${destination}/${directory.name}`).replace(/\\/$/, \"\");\n    return new PCancelable(async (resolve, reject, onCancel) => {\n      const abort = new AbortController();\n      onCancel(() => abort.abort());\n      const selectedForUpload = await callback(directory.children, folderPath);\n      if (selectedForUpload === false) {\n        logger.debug(\"Upload canceled by user\", { directory });\n        reject(new UploadCancelledError(\"Conflict resolution cancelled by user\"));\n        return;\n      } else if (selectedForUpload.length === 0 && directory.children.length > 0) {\n        logger.debug(\"Skipping directory, as all files were skipped by user\", { directory });\n        resolve([]);\n        return;\n      }\n      const directories = [];\n      const uploads = [];\n      abort.signal.addEventListener(\"abort\", () => {\n        directories.forEach((upload2) => upload2.cancel());\n        uploads.forEach((upload2) => upload2.cancel());\n      });\n      logger.debug(\"Start directory upload\", { directory });\n      try {\n        if (directory.name) {\n          uploads.push(this.createDirectory(destination, directory, client));\n          await uploads.at(-1);\n        }\n        for (const node of selectedForUpload) {\n          if (node instanceof Directory) {\n            directories.push(this.uploadDirectory(folderPath, node, callback, client));\n          } else {\n            uploads.push(this.upload(`${folderPath}/${node.name}`, node));\n          }\n        }\n        const resolvedUploads = await Promise.all(uploads);\n        const resolvedDirectoryUploads = await Promise.all(directories);\n        resolve([resolvedUploads, ...resolvedDirectoryUploads].flat());\n      } catch (e) {\n        abort.abort(e);\n        reject(e);\n      }\n    });\n  }\n  /**\n   * Upload a file to the given path\n   * @param {string} destination the destination path relative to the root folder. e.g. /foo/bar.txt\n   * @param {File|FileSystemFileEntry} fileHandle the file to upload\n   * @param {string} root the root folder to upload to\n   * @param retries number of retries\n   */\n  upload(destination, fileHandle, root, retries = 5) {\n    root = root || this.root;\n    const destinationPath = `${root.replace(/\\/$/, \"\")}/${destination.replace(/^\\//, \"\")}`;\n    const { origin } = new URL(destinationPath);\n    const encodedDestinationFile = origin + encodePath(destinationPath.slice(origin.length));\n    this.eta.resume();\n    logger.debug(`Uploading ${fileHandle.name} to ${encodedDestinationFile}`);\n    const promise = new PCancelable(async (resolve, reject, onCancel) => {\n      if (isFileSystemFileEntry(fileHandle)) {\n        fileHandle = await new Promise((resolve2) => fileHandle.file(resolve2, reject));\n      }\n      const file = fileHandle;\n      const supportsPublicChunking = getCapabilities().dav?.public_shares_chunking ?? false;\n      const maxChunkSize = getMaxChunksSize(\"size\" in file ? file.size : void 0);\n      const disabledChunkUpload = this._isPublic && !supportsPublicChunking || maxChunkSize === 0 || \"size\" in file && file.size < maxChunkSize;\n      const upload2 = new Upload(destinationPath, !disabledChunkUpload, file.size, file);\n      this._uploadQueue.push(upload2);\n      this.updateStats();\n      onCancel(upload2.cancel);\n      if (!disabledChunkUpload) {\n        logger.debug(\"Initializing chunked upload\", { file, upload: upload2 });\n        const tempUrl = await initChunkWorkspace(encodedDestinationFile, retries, this._isPublic, this._customHeaders);\n        const chunksQueue = [];\n        for (let chunk = 0; chunk < upload2.chunks; chunk++) {\n          const bufferStart = chunk * maxChunkSize;\n          const bufferEnd = Math.min(bufferStart + maxChunkSize, upload2.size);\n          const blob = () => getChunk(file, bufferStart, maxChunkSize);\n          const request2 = () => {\n            let chunkBytes = 0;\n            return uploadData(\n              `${tempUrl}/${chunk + 1}`,\n              blob,\n              {\n                signal: upload2.signal,\n                destinationFile: encodedDestinationFile,\n                retries,\n                onUploadProgress: ({ bytes }) => {\n                  const progressBytes = bytes * 0.9;\n                  chunkBytes += progressBytes;\n                  upload2.uploaded += progressBytes;\n                  this.updateStats();\n                },\n                onUploadRetry: () => {\n                  upload2.uploaded -= chunkBytes;\n                  chunkBytes = 0;\n                  this.updateStats();\n                },\n                headers: {\n                  ...this._customHeaders,\n                  ...this._mtimeHeader(file),\n                  \"OC-Total-Length\": file.size,\n                  \"Content-Type\": \"application/octet-stream\"\n                }\n              }\n            ).then(() => {\n              upload2.uploaded += bufferEnd - bufferStart - chunkBytes;\n              this.updateStats();\n            }).catch((error) => {\n              if (error?.response?.status === 507) {\n                logger.error(\"Upload failed, not enough space on the server or quota exceeded. Cancelling the remaining chunks\", { error, upload: upload2 });\n                upload2.cancel();\n                upload2.status = Status.FAILED;\n                throw error;\n              }\n              if (!isCancel(error)) {\n                logger.error(`Chunk ${chunk + 1} ${bufferStart} - ${bufferEnd} uploading failed`, { error, upload: upload2 });\n                upload2.cancel();\n                upload2.status = Status.FAILED;\n              }\n              throw error;\n            });\n          };\n          chunksQueue.push(this._jobQueue.add(request2));\n        }\n        const request = async () => {\n          try {\n            await Promise.all(chunksQueue);\n            upload2.status = Status.ASSEMBLING;\n            this.updateStats();\n            upload2.response = await axios.request({\n              method: \"MOVE\",\n              url: `${tempUrl}/.file`,\n              headers: {\n                ...this._customHeaders,\n                ...this._mtimeHeader(file),\n                \"OC-Total-Length\": file.size,\n                Destination: encodedDestinationFile\n              }\n            });\n            upload2.status = Status.FINISHED;\n            this.updateStats();\n            logger.debug(`Successfully uploaded ${file.name}`, { file, upload: upload2 });\n            resolve(upload2);\n          } catch (error) {\n            if (isCancel(error) || error instanceof UploadCancelledError) {\n              upload2.status = Status.CANCELLED;\n              reject(new UploadCancelledError(error));\n            } else {\n              upload2.status = Status.FAILED;\n              reject(t(\"Failed to assemble the chunks together\"));\n            }\n            axios.request({\n              method: \"DELETE\",\n              url: `${tempUrl}`\n            });\n          } finally {\n            this._notifyAll(upload2);\n          }\n        };\n        this._jobQueue.add(request);\n      } else {\n        logger.debug(\"Initializing regular upload\", { file, upload: upload2 });\n        const blob = await getChunk(file, 0, upload2.size);\n        const request = async () => {\n          try {\n            upload2.response = await uploadData(\n              encodedDestinationFile,\n              blob,\n              {\n                signal: upload2.signal,\n                onUploadProgress: ({ bytes }) => {\n                  upload2.uploaded += bytes * 0.9;\n                  this.updateStats();\n                },\n                onUploadRetry: () => {\n                  upload2.uploaded = 0;\n                  this.updateStats();\n                },\n                headers: {\n                  ...this._customHeaders,\n                  ...this._mtimeHeader(file),\n                  \"Content-Type\": file.type\n                }\n              }\n            );\n            upload2.uploaded = upload2.size;\n            this.updateStats();\n            logger.debug(`Successfully uploaded ${file.name}`, { file, upload: upload2 });\n            resolve(upload2);\n          } catch (error) {\n            if (isCancel(error) || error instanceof UploadCancelledError) {\n              upload2.status = Status.CANCELLED;\n              reject(new UploadCancelledError(error));\n              return;\n            }\n            if (error?.response) {\n              upload2.response = error.response;\n            }\n            upload2.status = Status.FAILED;\n            logger.error(`Failed uploading ${file.name}`, { error, file, upload: upload2 });\n            reject(t(\"Failed to upload the file\"));\n          }\n          this._notifyAll(upload2);\n        };\n        this._jobQueue.add(request);\n        this.updateStats();\n      }\n      this._jobQueue.onIdle().then(() => this.reset());\n      return upload2;\n    });\n    return promise;\n  }\n  /**\n   * Create modification time headers if valid value is available.\n   * It can be invalid on Android devices if SD cards with NTFS / FAT are used,\n   * as those files might use the NT epoch for time so the value will be negative.\n   *\n   * @param file The file to upload\n   */\n  _mtimeHeader(file) {\n    const mtime = Math.floor(file.lastModified / 1e3);\n    if (mtime > 0) {\n      return { \"X-OC-Mtime\": mtime };\n    }\n    return {};\n  }\n}\n/*!\n * SPDX-FileCopyrightText: 2022 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\nfunction getUploader(isPublic = isPublicShare(), forceRecreate = false) {\n  if (forceRecreate || window._nc_uploader === void 0) {\n    window._nc_uploader = new Uploader(isPublic);\n  }\n  return window._nc_uploader;\n}\nfunction upload(destinationPath, file) {\n  const uploader = getUploader();\n  uploader.upload(destinationPath, file);\n  return uploader;\n}\nfunction hasConflict(files, content) {\n  return getConflicts(files, content).length > 0;\n}\nfunction getConflicts(files, content) {\n  const contentNames = content.map((node) => node.basename);\n  const conflicts = files.filter((node) => {\n    const name = \"basename\" in node ? node.basename : node.name;\n    return contentNames.indexOf(name) !== -1;\n  });\n  return conflicts;\n}\n/*!\n * SPDX-FileCopyrightText: 2022 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\nasync function openConflictPicker(dirname, conflicts, content, options) {\n  const ConflictPicker = defineAsyncComponent(() => import(\"./ConflictPicker-DuPiUBHl.mjs\"));\n  return new Promise((resolve, reject) => {\n    const picker = new Vue({\n      name: \"ConflictPickerRoot\",\n      render: (h) => h(ConflictPicker, {\n        props: {\n          dirname,\n          conflicts,\n          content,\n          recursiveUpload: options?.recursive === true\n        },\n        on: {\n          submit(results) {\n            resolve(results);\n            picker.$destroy();\n            picker.$el?.parentNode?.removeChild(picker.$el);\n          },\n          cancel(error) {\n            reject(error ?? new Error(\"Canceled\"));\n            picker.$destroy();\n            picker.$el?.parentNode?.removeChild(picker.$el);\n          }\n        }\n      })\n    });\n    picker.$mount();\n    document.body.appendChild(picker.$el);\n  });\n}\nfunction showInvalidFilenameDialog(error) {\n  const InvalidFilenameDialog = defineAsyncComponent(() => import(\"./InvalidFilenameDialog-BM2VDeLo.mjs\"));\n  const { promise, reject, resolve } = Promise.withResolvers();\n  spawnDialog(\n    InvalidFilenameDialog,\n    {\n      error,\n      validateFilename\n    },\n    (...rest) => {\n      const [{ skip, rename }] = rest;\n      if (skip) {\n        resolve(false);\n      } else if (rename) {\n        resolve(rename);\n      } else {\n        reject();\n      }\n    }\n  );\n  return promise;\n}\n/*!\n * SPDX-FileCopyrightText: 2024 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\nfunction uploadConflictHandler(contentsCallback) {\n  return async (nodes, path) => {\n    try {\n      const content = await contentsCallback(path).catch(() => []);\n      const conflicts = getConflicts(nodes, content);\n      if (conflicts.length > 0) {\n        const { selected, renamed } = await openConflictPicker(path, conflicts, content, { recursive: true });\n        nodes = [\n          ...nodes.filter((node) => !conflicts.includes(node)),\n          ...selected,\n          ...renamed\n        ];\n      }\n      const filesToUpload = [];\n      for (const file of nodes) {\n        try {\n          validateFilename(file.name);\n          filesToUpload.push(file);\n        } catch (error) {\n          if (!(error instanceof InvalidFilenameError)) {\n            logger.error(`Unexpected error while validating ${file.name}`, { error });\n            throw error;\n          }\n          let newName = await showInvalidFilenameDialog(error);\n          if (newName !== false) {\n            newName = getUniqueName(newName, nodes.map((node) => node.name));\n            Object.defineProperty(file, \"name\", { value: newName });\n            filesToUpload.push(file);\n          }\n        }\n      }\n      if (filesToUpload.length === 0 && nodes.length > 0) {\n        const folder = basename(path);\n        showInfo(\n          folder ? t('Upload of \"{folder}\" has been skipped', { folder }) : t(\"Upload has been skipped\")\n        );\n      }\n      return filesToUpload;\n    } catch (error) {\n      logger.debug(\"Upload has been cancelled\", { error });\n      showWarning(t(\"Upload has been cancelled\"));\n      return false;\n    }\n  };\n}\nfunction normalizeComponent(scriptExports, render6, staticRenderFns, functionalTemplate, injectStyles, scopeId, moduleIdentifier, shadowMode) {\n  var options = typeof scriptExports === \"function\" ? scriptExports.options : scriptExports;\n  if (render6) {\n    options.render = render6;\n    options.staticRenderFns = staticRenderFns;\n    options._compiled = true;\n  }\n  if (scopeId) {\n    options._scopeId = \"data-v-\" + scopeId;\n  }\n  return {\n    exports: scriptExports,\n    options\n  };\n}\nconst _sfc_main$4 = {\n  name: \"CancelIcon\",\n  emits: [\"click\"],\n  props: {\n    title: {\n      type: String\n    },\n    fillColor: {\n      type: String,\n      default: \"currentColor\"\n    },\n    size: {\n      type: Number,\n      default: 24\n    }\n  }\n};\nvar _sfc_render$4 = function render() {\n  var _vm = this, _c = _vm._self._c;\n  return _c(\"span\", _vm._b({ staticClass: \"material-design-icon cancel-icon\", attrs: { \"aria-hidden\": _vm.title ? null : \"true\", \"aria-label\": _vm.title, \"role\": \"img\" }, on: { \"click\": function($event) {\n    return _vm.$emit(\"click\", $event);\n  } } }, \"span\", _vm.$attrs, false), [_c(\"svg\", { staticClass: \"material-design-icon__svg\", attrs: { \"fill\": _vm.fillColor, \"width\": _vm.size, \"height\": _vm.size, \"viewBox\": \"0 0 24 24\" } }, [_c(\"path\", { attrs: { \"d\": \"M12 2C17.5 2 22 6.5 22 12S17.5 22 12 22 2 17.5 2 12 6.5 2 12 2M12 4C10.1 4 8.4 4.6 7.1 5.7L18.3 16.9C19.3 15.5 20 13.8 20 12C20 7.6 16.4 4 12 4M16.9 18.3L5.7 7.1C4.6 8.4 4 10.1 4 12C4 16.4 7.6 20 12 20C13.9 20 15.6 19.4 16.9 18.3Z\" } }, [_vm.title ? _c(\"title\", [_vm._v(_vm._s(_vm.title))]) : _vm._e()])])]);\n};\nvar _sfc_staticRenderFns$4 = [];\nvar __component__$4 = /* @__PURE__ */ normalizeComponent(\n  _sfc_main$4,\n  _sfc_render$4,\n  _sfc_staticRenderFns$4,\n  false,\n  null,\n  null\n);\nconst IconCancel = __component__$4.exports;\nconst _sfc_main$3 = {\n  name: \"FolderUploadIcon\",\n  emits: [\"click\"],\n  props: {\n    title: {\n      type: String\n    },\n    fillColor: {\n      type: String,\n      default: \"currentColor\"\n    },\n    size: {\n      type: Number,\n      default: 24\n    }\n  }\n};\nvar _sfc_render$3 = function render2() {\n  var _vm = this, _c = _vm._self._c;\n  return _c(\"span\", _vm._b({ staticClass: \"material-design-icon folder-upload-icon\", attrs: { \"aria-hidden\": _vm.title ? null : \"true\", \"aria-label\": _vm.title, \"role\": \"img\" }, on: { \"click\": function($event) {\n    return _vm.$emit(\"click\", $event);\n  } } }, \"span\", _vm.$attrs, false), [_c(\"svg\", { staticClass: \"material-design-icon__svg\", attrs: { \"fill\": _vm.fillColor, \"width\": _vm.size, \"height\": _vm.size, \"viewBox\": \"0 0 24 24\" } }, [_c(\"path\", { attrs: { \"d\": \"M20,6A2,2 0 0,1 22,8V18A2,2 0 0,1 20,20H4A2,2 0 0,1 2,18V6A2,2 0 0,1 4,4H10L12,6H20M10.75,13H14V17H16V13H19.25L15,8.75\" } }, [_vm.title ? _c(\"title\", [_vm._v(_vm._s(_vm.title))]) : _vm._e()])])]);\n};\nvar _sfc_staticRenderFns$3 = [];\nvar __component__$3 = /* @__PURE__ */ normalizeComponent(\n  _sfc_main$3,\n  _sfc_render$3,\n  _sfc_staticRenderFns$3,\n  false,\n  null,\n  null\n);\nconst IconFolderUpload = __component__$3.exports;\nconst _sfc_main$2 = {\n  name: \"PlusIcon\",\n  emits: [\"click\"],\n  props: {\n    title: {\n      type: String\n    },\n    fillColor: {\n      type: String,\n      default: \"currentColor\"\n    },\n    size: {\n      type: Number,\n      default: 24\n    }\n  }\n};\nvar _sfc_render$2 = function render3() {\n  var _vm = this, _c = _vm._self._c;\n  return _c(\"span\", _vm._b({ staticClass: \"material-design-icon plus-icon\", attrs: { \"aria-hidden\": _vm.title ? null : \"true\", \"aria-label\": _vm.title, \"role\": \"img\" }, on: { \"click\": function($event) {\n    return _vm.$emit(\"click\", $event);\n  } } }, \"span\", _vm.$attrs, false), [_c(\"svg\", { staticClass: \"material-design-icon__svg\", attrs: { \"fill\": _vm.fillColor, \"width\": _vm.size, \"height\": _vm.size, \"viewBox\": \"0 0 24 24\" } }, [_c(\"path\", { attrs: { \"d\": \"M19,13H13V19H11V13H5V11H11V5H13V11H19V13Z\" } }, [_vm.title ? _c(\"title\", [_vm._v(_vm._s(_vm.title))]) : _vm._e()])])]);\n};\nvar _sfc_staticRenderFns$2 = [];\nvar __component__$2 = /* @__PURE__ */ normalizeComponent(\n  _sfc_main$2,\n  _sfc_render$2,\n  _sfc_staticRenderFns$2,\n  false,\n  null,\n  null\n);\nconst IconPlus = __component__$2.exports;\nconst _sfc_main$1 = {\n  name: \"UploadIcon\",\n  emits: [\"click\"],\n  props: {\n    title: {\n      type: String\n    },\n    fillColor: {\n      type: String,\n      default: \"currentColor\"\n    },\n    size: {\n      type: Number,\n      default: 24\n    }\n  }\n};\nvar _sfc_render$1 = function render4() {\n  var _vm = this, _c = _vm._self._c;\n  return _c(\"span\", _vm._b({ staticClass: \"material-design-icon upload-icon\", attrs: { \"aria-hidden\": _vm.title ? null : \"true\", \"aria-label\": _vm.title, \"role\": \"img\" }, on: { \"click\": function($event) {\n    return _vm.$emit(\"click\", $event);\n  } } }, \"span\", _vm.$attrs, false), [_c(\"svg\", { staticClass: \"material-design-icon__svg\", attrs: { \"fill\": _vm.fillColor, \"width\": _vm.size, \"height\": _vm.size, \"viewBox\": \"0 0 24 24\" } }, [_c(\"path\", { attrs: { \"d\": \"M9,16V10H5L12,3L19,10H15V16H9M5,20V18H19V20H5Z\" } }, [_vm.title ? _c(\"title\", [_vm._v(_vm._s(_vm.title))]) : _vm._e()])])]);\n};\nvar _sfc_staticRenderFns$1 = [];\nvar __component__$1 = /* @__PURE__ */ normalizeComponent(\n  _sfc_main$1,\n  _sfc_render$1,\n  _sfc_staticRenderFns$1,\n  false,\n  null,\n  null\n);\nconst IconUpload = __component__$1.exports;\nconst _sfc_main = defineComponent({\n  name: \"UploadPicker\",\n  components: {\n    IconCancel,\n    IconFolderUpload,\n    IconPlus,\n    IconUpload,\n    NcActionButton,\n    NcActionCaption,\n    NcActionSeparator,\n    NcActions,\n    NcButton,\n    NcIconSvgWrapper,\n    NcProgressBar\n  },\n  props: {\n    accept: {\n      type: Array,\n      default: null\n    },\n    disabled: {\n      type: Boolean,\n      default: false\n    },\n    multiple: {\n      type: Boolean,\n      default: false\n    },\n    /**\n     * Allow to disable the \"new\"-menu for this UploadPicker instance\n     */\n    noMenu: {\n      type: Boolean,\n      default: false\n    },\n    /**\n     * Allow to disable the button label\n     */\n    noLabel: {\n      type: Boolean,\n      default: false\n    },\n    /**\n     * Make the \"New\"-button primary color.\n     */\n    primary: {\n      type: Boolean,\n      default: false\n    },\n    destination: {\n      type: Folder,\n      default: void 0\n    },\n    allowFolders: {\n      type: Boolean,\n      default: false\n    },\n    /**\n     * List of file present in the destination folder\n     * It is also possible to provide a function that takes a relative path to the current directory and returns the content of it\n     * Note: If a function is passed it should return the current base directory when no path or an empty is passed\n     */\n    content: {\n      type: [Array, Function],\n      default: () => []\n    },\n    /**\n     * Overwrite forbidden characters (by default the capabilities of the server are used)\n     * @deprecated Deprecated and will be removed in the next major version\n     */\n    forbiddenCharacters: {\n      type: Array,\n      default: () => []\n    }\n  },\n  setup() {\n    return {\n      t,\n      // non reactive data / properties\n      progressTimeId: `nc-uploader-progress-${Math.random().toString(36).slice(7)}`\n    };\n  },\n  data() {\n    return {\n      newFileMenuEntries: [],\n      openedMenu: false,\n      uploadManager: getUploader()\n    };\n  },\n  computed: {\n    menuEntriesUpload() {\n      return this.newFileMenuEntries.filter((entry) => entry.category === NewMenuEntryCategory.UploadFromDevice);\n    },\n    menuEntriesNew() {\n      return this.newFileMenuEntries.filter((entry) => entry.category === NewMenuEntryCategory.CreateNew);\n    },\n    menuEntriesOther() {\n      return this.newFileMenuEntries.filter((entry) => entry.category === NewMenuEntryCategory.Other);\n    },\n    /**\n     * Check whether the current browser supports uploading directories\n     * Hint: This does not check if the current connection supports this, as some browsers require a secure context!\n     */\n    canUploadFolders() {\n      return this.allowFolders && \"webkitdirectory\" in document.createElement(\"input\");\n    },\n    queue() {\n      return this.uploadManager.queue;\n    },\n    hasFailure() {\n      return this.queue.some((upload2) => upload2.status === Status.FAILED);\n    },\n    isAssembling() {\n      return this.queue.some((upload2) => upload2.status === Status.ASSEMBLING);\n    },\n    isUploading() {\n      return this.queue.some((upload2) => upload2.status !== Status.CANCELLED);\n    },\n    isOnlyAssembling() {\n      return this.isAssembling && this.queue.every((upload2) => (\n        // ignore empty uploads or meta uploads\n        upload2.size === 0 || upload2.status === Status.ASSEMBLING || upload2.status === Status.FINISHED\n      ));\n    },\n    isPaused() {\n      return this.uploadManager.info?.status === UploaderStatus.PAUSED;\n    },\n    buttonLabel() {\n      return this.noMenu ? t(\"Upload\") : t(\"New\");\n    },\n    haveMenu() {\n      return !((this.noMenu || this.newFileMenuEntries.length === 0) && !this.canUploadFolders);\n    }\n  },\n  watch: {\n    allowFolders: {\n      immediate: true,\n      handler() {\n        if (typeof this.content !== \"function\" && this.allowFolders) {\n          logger.error(\"[UploadPicker] Setting `allowFolders` is only allowed if `content` is a function\");\n        }\n      }\n    },\n    destination(destination) {\n      this.setDestination(destination);\n    },\n    isPaused(isPaused) {\n      if (isPaused) {\n        this.$emit(\"paused\", this.queue);\n      } else {\n        this.$emit(\"resumed\", this.queue);\n      }\n    }\n  },\n  beforeMount() {\n    if (this.destination) {\n      this.setDestination(this.destination);\n    }\n    this.uploadManager.addNotifier(this.onUploadCompletion);\n    useHotKey(\"u\", this.onKeyDown, {\n      stop: true,\n      prevent: true,\n      shift: true\n    });\n    useHotKey(\"Escape\", this.onKeyDown, {\n      stop: true,\n      prevent: true\n    });\n    logger.debug(\"UploadPicker initialised\");\n  },\n  methods: {\n    etaTimeAndSpeed() {\n      const speed = this.uploadManager.eta.speedReadable;\n      if (speed) {\n        return `${this.uploadManager.eta.timeReadable} (${speed})`;\n      }\n      return this.uploadManager.eta.timeReadable;\n    },\n    /**\n     * Handle clicking a new-menu entry\n     * @param entry The entry that was clicked\n     */\n    async onClick(entry) {\n      entry.handler(\n        this.destination,\n        await this.getContent().catch(() => [])\n      );\n    },\n    /**\n     * Trigger file picker\n     * @param uploadFolders Upload folders\n     */\n    onTriggerPick(uploadFolders = false) {\n      const input = this.$refs.input;\n      if (this.canUploadFolders) {\n        input.webkitdirectory = uploadFolders;\n      }\n      this.$nextTick(() => input.click());\n    },\n    /**\n     * Helper for backwards compatibility that queries the content of the current directory\n     * @param path The current path\n     */\n    async getContent(path) {\n      return Array.isArray(this.content) ? this.content : await this.content(path);\n    },\n    /**\n     * Start uploading\n     */\n    async onPick() {\n      const input = this.$refs.input;\n      const files = input.files ? Array.from(input.files) : [];\n      try {\n        await this.uploadManager.batchUpload(\"\", files, uploadConflictHandler(this.getContent));\n      } catch (error) {\n        logger.debug(\"Error while uploading\", { error });\n      } finally {\n        this.resetForm();\n      }\n    },\n    resetForm() {\n      const form = this.$refs.form;\n      form?.reset();\n    },\n    /**\n     * Cancel ongoing queue\n     */\n    onCancel() {\n      this.uploadManager.queue.forEach((upload2) => {\n        upload2.cancel();\n      });\n      this.resetForm();\n    },\n    setDestination(destination) {\n      if (!this.destination) {\n        logger.debug(\"Invalid destination\");\n        return;\n      }\n      this.uploadManager.destination = destination;\n      this.newFileMenuEntries = getNewFileMenuEntries(destination);\n    },\n    onUploadCompletion(upload2) {\n      if (upload2.status === Status.FAILED) {\n        this.$emit(\"failed\", upload2);\n      } else {\n        this.$emit(\"uploaded\", upload2);\n      }\n    },\n    onKeyDown(event) {\n      if (event.key === \"u\") {\n        if (this.haveMenu) {\n          this.openedMenu = true;\n          return;\n        }\n        this.onTriggerPick();\n      }\n      if (event.key === \"Escape\" && this.openedMenu) {\n        this.openedMenu = false;\n      }\n    }\n  }\n});\nvar _sfc_render = function render5() {\n  var _vm = this, _c = _vm._self._c;\n  _vm._self._setupProxy;\n  return _vm.destination ? _c(\"form\", { ref: \"form\", staticClass: \"upload-picker\", class: { \"upload-picker--uploading\": _vm.isUploading, \"upload-picker--paused\": _vm.isPaused }, attrs: { \"data-cy-upload-picker\": \"\" } }, [!_vm.haveMenu ? _c(\"NcButton\", { attrs: { \"aria-label\": _vm.buttonLabel, \"disabled\": _vm.disabled, \"data-cy-upload-picker-add\": \"\", \"data-cy-upload-picker-menu-entry\": \"upload-file\", \"type\": _vm.primary ? \"primary\" : \"secondary\" }, on: { \"click\": function($event) {\n    return _vm.onTriggerPick();\n  } }, scopedSlots: _vm._u([{ key: \"icon\", fn: function() {\n    return [_c(\"IconPlus\", { attrs: { \"size\": 20 } })];\n  }, proxy: true }, !_vm.isUploading ? { key: \"default\", fn: function() {\n    return [_vm._v(\" \" + _vm._s(_vm.buttonLabel) + \" \")];\n  }, proxy: true } : null], null, true) }) : _c(\"NcActions\", { attrs: { \"aria-label\": _vm.buttonLabel, \"menu-name\": _vm.noLabel ? void 0 : _vm.buttonLabel, \"open\": _vm.openedMenu, \"type\": _vm.primary ? \"primary\" : \"secondary\" }, on: { \"update:open\": function($event) {\n    _vm.openedMenu = $event;\n  } }, scopedSlots: _vm._u([{ key: \"icon\", fn: function() {\n    return [_c(\"IconPlus\", { attrs: { \"size\": 20 } })];\n  }, proxy: true }], null, false, 1991456921) }, [_c(\"NcActionCaption\", { attrs: { \"name\": _vm.t(\"Upload from device\") } }), _c(\"NcActionButton\", { attrs: { \"data-cy-upload-picker-add\": \"\", \"data-cy-upload-picker-menu-entry\": \"upload-file\", \"close-after-click\": true }, on: { \"click\": function($event) {\n    return _vm.onTriggerPick();\n  } }, scopedSlots: _vm._u([{ key: \"icon\", fn: function() {\n    return [_c(\"IconUpload\", { attrs: { \"size\": 20 } })];\n  }, proxy: true }], null, false, 337456192) }, [_vm._v(\" \" + _vm._s(_vm.t(\"Upload files\")) + \" \")]), _vm.canUploadFolders ? _c(\"NcActionButton\", { attrs: { \"close-after-click\": \"\", \"data-cy-upload-picker-add-folders\": \"\", \"data-cy-upload-picker-menu-entry\": \"upload-folder\" }, on: { \"click\": function($event) {\n    return _vm.onTriggerPick(true);\n  } }, scopedSlots: _vm._u([{ key: \"icon\", fn: function() {\n    return [_c(\"IconFolderUpload\", { attrs: { \"size\": 20 } })];\n  }, proxy: true }], null, false, 931184598) }, [_vm._v(\" \" + _vm._s(_vm.t(\"Upload folders\")) + \" \")]) : _vm._e(), !_vm.noMenu ? _vm._l(_vm.menuEntriesUpload, function(entry) {\n    return _c(\"NcActionButton\", { key: entry.id, staticClass: \"upload-picker__menu-entry\", attrs: { \"icon\": entry.iconClass, \"close-after-click\": true, \"data-cy-upload-picker-menu-entry\": entry.id }, on: { \"click\": function($event) {\n      return _vm.onClick(entry);\n    } }, scopedSlots: _vm._u([entry.iconSvgInline ? { key: \"icon\", fn: function() {\n      return [_c(\"NcIconSvgWrapper\", { attrs: { \"svg\": entry.iconSvgInline } })];\n    }, proxy: true } : null], null, true) }, [_vm._v(\" \" + _vm._s(entry.displayName) + \" \")]);\n  }) : _vm._e(), !_vm.noMenu && _vm.menuEntriesNew.length > 0 ? [_c(\"NcActionSeparator\"), _c(\"NcActionCaption\", { attrs: { \"name\": _vm.t(\"Create new\") } }), _vm._l(_vm.menuEntriesNew, function(entry) {\n    return _c(\"NcActionButton\", { key: entry.id, staticClass: \"upload-picker__menu-entry\", attrs: { \"icon\": entry.iconClass, \"close-after-click\": true, \"data-cy-upload-picker-menu-entry\": entry.id }, on: { \"click\": function($event) {\n      return _vm.onClick(entry);\n    } }, scopedSlots: _vm._u([entry.iconSvgInline ? { key: \"icon\", fn: function() {\n      return [_c(\"NcIconSvgWrapper\", { attrs: { \"svg\": entry.iconSvgInline } })];\n    }, proxy: true } : null], null, true) }, [_vm._v(\" \" + _vm._s(entry.displayName) + \" \")]);\n  })] : _vm._e(), !_vm.noMenu && _vm.menuEntriesOther.length > 0 ? [_c(\"NcActionSeparator\"), _vm._l(_vm.menuEntriesOther, function(entry) {\n    return _c(\"NcActionButton\", { key: entry.id, staticClass: \"upload-picker__menu-entry\", attrs: { \"icon\": entry.iconClass, \"close-after-click\": true, \"data-cy-upload-picker-menu-entry\": entry.id }, on: { \"click\": function($event) {\n      return _vm.onClick(entry);\n    } }, scopedSlots: _vm._u([entry.iconSvgInline ? { key: \"icon\", fn: function() {\n      return [_c(\"NcIconSvgWrapper\", { attrs: { \"svg\": entry.iconSvgInline } })];\n    }, proxy: true } : null], null, true) }, [_vm._v(\" \" + _vm._s(entry.displayName) + \" \")]);\n  })] : _vm._e()], 2), _c(\"div\", { directives: [{ name: \"show\", rawName: \"v-show\", value: _vm.isUploading, expression: \"isUploading\" }], staticClass: \"upload-picker__progress\" }, [_c(\"NcProgressBar\", { attrs: { \"aria-label\": _vm.t(\"Upload progress\"), \"aria-describedby\": _vm.progressTimeId, \"data-cy-upload-picker-progress\": \"\", \"error\": _vm.hasFailure, \"value\": _vm.uploadManager.eta.progress, \"size\": \"medium\" } }), _c(\"p\", { attrs: { \"id\": _vm.progressTimeId, \"data-cy-upload-picker-progress-label\": \"\" } }, [_vm.isPaused ? _c(\"span\", [_vm._v(\" \" + _vm._s(_vm.t(\"paused\")) + \" \")]) : _vm.isOnlyAssembling ? _c(\"span\", [_vm._v(\" \" + _vm._s(_vm.t(\"assembling\")) + \" \")]) : _c(\"span\", { attrs: { \"title\": _vm.etaTimeAndSpeed() } }, [_vm._v(\" \" + _vm._s(_vm.uploadManager.eta.timeReadable) + \" \"), _vm.uploadManager.eta.speedReadable && _vm.uploadManager.eta.time >= 60 ? _c(\"span\", [_vm._v(\" (\" + _vm._s(_vm.uploadManager.eta.speedReadable) + \") \")]) : _vm._e()])])], 1), _vm.isUploading && !_vm.isOnlyAssembling ? _c(\"NcButton\", { staticClass: \"upload-picker__cancel\", attrs: { \"type\": \"tertiary\", \"aria-label\": _vm.t(\"Cancel uploads\"), \"data-cy-upload-picker-cancel\": \"\" }, on: { \"click\": _vm.onCancel }, scopedSlots: _vm._u([{ key: \"icon\", fn: function() {\n    return [_c(\"IconCancel\", { attrs: { \"size\": 20 } })];\n  }, proxy: true }], null, false, 3076329829) }) : _vm._e(), _c(\"input\", { ref: \"input\", staticClass: \"hidden-visually\", attrs: { \"accept\": _vm.accept?.join?.(\", \"), \"multiple\": _vm.multiple, \"data-cy-upload-picker-input\": \"\", \"type\": \"file\" }, on: { \"change\": _vm.onPick } })], 1) : _vm._e();\n};\nvar _sfc_staticRenderFns = [];\nvar __component__ = /* @__PURE__ */ normalizeComponent(\n  _sfc_main,\n  _sfc_render,\n  _sfc_staticRenderFns,\n  false,\n  null,\n  \"a66c1264\"\n);\nconst UploadPicker = __component__.exports;\nexport {\n  EtaStatus as E,\n  Status as S,\n  Upload as U,\n  isFileSystemFileEntry as a,\n  n as b,\n  Uploader as c,\n  UploaderStatus as d,\n  getConflicts as e,\n  uploadConflictHandler as f,\n  getUploader as g,\n  hasConflict as h,\n  isFileSystemEntry as i,\n  UploadPicker as j,\n  logger as l,\n  normalizeComponent as n,\n  openConflictPicker as o,\n  t,\n  upload as u\n};\n//# sourceMappingURL=index-DPkUyJ8g.mjs.map\n","// The module cache\nvar __webpack_module_cache__ = {};\n\n// The require function\nfunction __webpack_require__(moduleId) {\n\t// Check if module is in cache\n\tvar cachedModule = __webpack_module_cache__[moduleId];\n\tif (cachedModule !== undefined) {\n\t\treturn cachedModule.exports;\n\t}\n\t// Create a new module (and put it into the cache)\n\tvar module = __webpack_module_cache__[moduleId] = {\n\t\tid: moduleId,\n\t\tloaded: false,\n\t\texports: {}\n\t};\n\n\t// Execute the module function\n\t__webpack_modules__[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n\t// Flag the module as loaded\n\tmodule.loaded = true;\n\n\t// Return the exports of the module\n\treturn module.exports;\n}\n\n// expose the modules object (__webpack_modules__)\n__webpack_require__.m = __webpack_modules__;\n\n","// getDefaultExport function for compatibility with non-harmony modules\n__webpack_require__.n = (module) => {\n\tvar getter = module && module.__esModule ?\n\t\t() => (module['default']) :\n\t\t() => (module);\n\t__webpack_require__.d(getter, { a: getter });\n\treturn getter;\n};","// define getter functions for harmony exports\n__webpack_require__.d = (exports, definition) => {\n\tfor(var key in definition) {\n\t\tif(__webpack_require__.o(definition, key) && !__webpack_require__.o(exports, key)) {\n\t\t\tObject.defineProperty(exports, key, { enumerable: true, get: definition[key] });\n\t\t}\n\t}\n};","__webpack_require__.f = {};\n// This file contains only the entry chunk.\n// The chunk loading function for additional chunks\n__webpack_require__.e = (chunkId) => {\n\treturn Promise.all(Object.keys(__webpack_require__.f).reduce((promises, key) => {\n\t\t__webpack_require__.f[key](chunkId, promises);\n\t\treturn promises;\n\t}, []));\n};","// This function allow to reference async chunks\n__webpack_require__.u = (chunkId) => {\n\t// return url for filenames based on template\n\treturn \"\" + chunkId + \"-\" + chunkId + \".js?v=\" + {\"1035\":\"da08d310d18692ca4e27\",\"1140\":\"dd55e1cf2dab9870eea9\",\"1764\":\"3654558a3474ec02b609\",\"2221\":\"2dad9baace69cfd4a3be\",\"2457\":\"ce6348bfa704a5bf56fb\",\"3145\":\"3908fb4074194097d3f5\",\"4271\":\"101cdb0f1357424796fd\",\"4723\":\"934c36402dc782526ac6\",\"5448\":\"71cfe268d6f1213c4735\",\"5862\":\"580b9c2e231a9169a12f\",\"6015\":\"8ac07126adf0759a3464\",\"6798\":\"995524658ab188a2d123\",\"7471\":\"b4ac70873a3ab192efd0\",\"7859\":\"5bcb1bbacda3204063dd\",\"7910\":\"de857920f8beb5205bbc\",\"8815\":\"0f63c2eb085d7b08be1b\",\"9281\":\"29ef7f217a0c6b239922\",\"9906\":\"2806b05f6af5e826407f\"}[chunkId] + \"\";\n};","__webpack_require__.o = (obj, prop) => (Object.prototype.hasOwnProperty.call(obj, prop))","// define __esModule on exports\n__webpack_require__.r = (exports) => {\n\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n\t}\n\tObject.defineProperty(exports, '__esModule', { value: true });\n};","__webpack_require__.nmd = (module) => {\n\tmodule.paths = [];\n\tif (!module.children) module.children = [];\n\treturn module;\n};","__webpack_require__.j = 2882;","var scriptUrl;\nif (globalThis.importScripts) scriptUrl = globalThis.location + \"\";\nvar document = globalThis.document;\nif (!scriptUrl && document) {\n\tif (document.currentScript && document.currentScript.tagName.toUpperCase() === 'SCRIPT')\n\t\tscriptUrl = document.currentScript.src;\n\tif (!scriptUrl) {\n\t\tvar scripts = document.getElementsByTagName(\"script\");\n\t\tif(scripts.length) {\n\t\t\tvar i = scripts.length - 1;\n\t\t\twhile (i > -1 && (!scriptUrl || !/^http(s?):/.test(scriptUrl))) scriptUrl = scripts[i--].src;\n\t\t}\n\t}\n}\n// When supporting browsers where an automatic publicPath is not supported you must specify an output.publicPath manually via configuration\n// or pass an empty string (\"\") and set the __webpack_public_path__ variable from your code to use your own logic.\nif (!scriptUrl) throw new Error(\"Automatic publicPath is not supported in this browser\");\nscriptUrl = scriptUrl.replace(/^blob:/, \"\").replace(/#.*$/, \"\").replace(/\\?.*$/, \"\").replace(/\\/[^\\/]+$/, \"/\");\n__webpack_require__.p = scriptUrl;","__webpack_require__.b = (typeof document !== 'undefined' && document.baseURI) || self.location.href;\n\n// object to store loaded and loading chunks\n// undefined = chunk not loaded, null = chunk preloaded/prefetched\n// [resolve, reject, Promise] = chunk loading, 0 = chunk loaded\nvar installedChunks = {\n\t2882: 0,\n\t7471: 0\n};\n\n__webpack_require__.f.j = (chunkId, promises) => {\n\t\t// JSONP chunk loading for javascript\n\t\tvar installedChunkData = __webpack_require__.o(installedChunks, chunkId) ? installedChunks[chunkId] : undefined;\n\t\tif(installedChunkData !== 0) { // 0 means \"already installed\".\n\n\t\t\t// a Promise means \"currently loading\".\n\t\t\tif(installedChunkData) {\n\t\t\t\tpromises.push(installedChunkData[2]);\n\t\t\t} else {\n\t\t\t\tif(true) { // all chunks have JS\n\t\t\t\t\t// setup Promise in chunk cache\n\t\t\t\t\tvar promise = new Promise((resolve, reject) => (installedChunkData = installedChunks[chunkId] = [resolve, reject]));\n\t\t\t\t\tpromises.push(installedChunkData[2] = promise);\n\n\t\t\t\t\t// start chunk loading\n\t\t\t\t\tvar url = __webpack_require__.p + __webpack_require__.u(chunkId);\n\t\t\t\t\t// create error before stack unwound to get useful stacktrace later\n\t\t\t\t\tvar error = new Error();\n\t\t\t\t\tvar loadingEnded = (event) => {\n\t\t\t\t\t\tif(__webpack_require__.o(installedChunks, chunkId)) {\n\t\t\t\t\t\t\tinstalledChunkData = installedChunks[chunkId];\n\t\t\t\t\t\t\tif(installedChunkData !== 0) installedChunks[chunkId] = undefined;\n\t\t\t\t\t\t\tif(installedChunkData) {\n\t\t\t\t\t\t\t\tvar errorType = event && (event.type === 'load' ? 'missing' : event.type);\n\t\t\t\t\t\t\t\tvar realSrc = event && event.target && event.target.src;\n\t\t\t\t\t\t\t\terror.message = 'Loading chunk ' + chunkId + ' failed.\\n(' + errorType + ': ' + realSrc + ')';\n\t\t\t\t\t\t\t\terror.name = 'ChunkLoadError';\n\t\t\t\t\t\t\t\terror.type = errorType;\n\t\t\t\t\t\t\t\terror.request = realSrc;\n\t\t\t\t\t\t\t\tinstalledChunkData[1](error);\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t};\n\t\t\t\t\t__webpack_require__.l(url, loadingEnded, \"chunk-\" + chunkId, chunkId);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n};\n\n// no prefetching\n\n// no preloaded\n\n// no HMR\n\n// no HMR manifest\n\n__webpack_require__.O.j = (chunkId) => (installedChunks[chunkId] === 0);\n\n// install a JSONP callback for chunk loading\nvar webpackJsonpCallback = (parentChunkLoadingFunction, data) => {\n\tvar [chunkIds, moreModules, runtime] = data;\n\t// add \"moreModules\" to the modules object,\n\t// then flag all \"chunkIds\" as loaded and fire callback\n\tvar moduleId, chunkId, i = 0;\n\tif(chunkIds.some((id) => (installedChunks[id] !== 0))) {\n\t\tfor(moduleId in moreModules) {\n\t\t\tif(__webpack_require__.o(moreModules, moduleId)) {\n\t\t\t\t__webpack_require__.m[moduleId] = moreModules[moduleId];\n\t\t\t}\n\t\t}\n\t\tif(runtime) var result = runtime(__webpack_require__);\n\t}\n\tif(parentChunkLoadingFunction) parentChunkLoadingFunction(data);\n\tfor(;i < chunkIds.length; i++) {\n\t\tchunkId = chunkIds[i];\n\t\tif(__webpack_require__.o(installedChunks, chunkId) && installedChunks[chunkId]) {\n\t\t\tinstalledChunks[chunkId][0]();\n\t\t}\n\t\tinstalledChunks[chunkId] = 0;\n\t}\n\treturn __webpack_require__.O(result);\n}\n\nvar chunkLoadingGlobal = globalThis[\"webpackChunknextcloud_ui_legacy\"] = globalThis[\"webpackChunknextcloud_ui_legacy\"] || [];\nchunkLoadingGlobal.forEach(webpackJsonpCallback.bind(null, 0));\nchunkLoadingGlobal.push = webpackJsonpCallback.bind(null, chunkLoadingGlobal.push.bind(chunkLoadingGlobal));","__webpack_require__.nc = undefined;","// startup\n// Load entry module and return exports\n// This entry module depends on other loaded chunks and execution need to be delayed\nvar __webpack_exports__ = __webpack_require__.O(undefined, [4208], () => (__webpack_require__(65832)))\n__webpack_exports__ = __webpack_require__.O(__webpack_exports__);\n"],"names":["deferred","inProgress","dataWebpackPrefix","getLoggerBuilder","setApp","detectUser","build","script","name","props","to","type","String","required","where","default","disabled","Boolean","data","nodes","waiting","observer","parent","watch","value","this$1","this","disable","$nextTick","teardownObserver","bootObserver","move","mounted","Array","from","$el","childNodes","maybeMove","beforeDestroy","getComponentChildrenNode","computed","classes","methods","document","querySelector","prepend","getFragment","appendChild","fragment","createDocumentFragment","forEach","node","onMutations","mutations","shouldMove","i","length","mutation","filteredAddedNodes","addedNodes","filter","includes","removedNodes","MutationObserver","observe","body","childList","subtree","attributes","characterData","childObserver","find","target","parentNode","removeChild","disconnect","$vnode","componentOptions","children","map","elm","normalizeComponent","template","style","scopeId","isFunctionalTemplate","moduleIdentifier","shadowMode","createInjector","createInjectorSSR","createInjectorShadow","hook","options","render","staticRenderFns","_compiled","functional","_scopeId","context","ssrContext","__VUE_SSR_CONTEXT__","call","_registeredComponents","add","_ssrRegister","$root","$options","shadowRoot","originalRender","h","existing","beforeCreate","concat","HEAD","isOldIE","navigator","test","userAgent","toLowerCase","id","css","group","media","styles","ids","Set","has","code","source","sources","btoa","unescape","encodeURIComponent","JSON","stringify","element","createElement","setAttribute","undefined","head","getElementsByTagName","push","styleSheet","cssText","join","index","size","textNode","createTextNode","insertBefore","addStyle","__vue_script__","__vue_render__","_vm","_h","$createElement","_self","_c","class","_t","_withStripped","__vue_component__","inject","install","Vue","installed","component","GlobalVue","window","use","emits","title","fillColor","Number","_b","staticClass","attrs","on","$event","$emit","$attrs","_v","_s","_e","width","ref","isWide","isMedium","isNarrow","ResizeObserver","contentBoxSize","inlineSize","contentRect","updateObserver","el","unobserve","useFileListWidth","onMounted","readonly","allViews","shallowRef","visibleViews","view","hidden","initialized","useViews","navigation","getNavigation","addEventListener","views","useVisibleViews","queue","getQueue","PQueue","concurrency","MoveCopyAction","loadState","Permission","NONE","HintException","Error","Directory","File","constructor","contents","super","_defineProperty","_contents","_computeDirectorySize","lastModified","Date","now","_computeDirectoryMtime","directory","reduce","acc","file","entry","async","traverseTree","isFile","Promise","resolve","reject","logger","debug","entries","dirReader","createReader","getEntries","readEntries","results","error","readDirectory","all","flat","createDirectoryIfNotExists","path","davUrl","defaultRemoteURL","defaultRootPath","davClient","getClient","exists","createDirectory","recursive","stat","details","getDefaultPropfind","emit","resultToNode","resolveConflict","files","destination","conflicts","basename","uploads","selected","renamed","openConflictPicker","showInfo","t","info","warn","showWarning","dataTransferToFileTree","items","item","kind","getAsEntry","webkitGetAsEntry","warned","fileTree","DataTransferItem","getAsFile","showError","onDropExternalFiles","root","uploader","getUploader","hasConflict","uploadDirectoryContents","relativePath","upload","pause","start","errors","allSettled","result","status","showSuccess","onDropInternalFiles","isCopy","promises","fromAsync","method","overwrite","FileType","Folder","MOVE","some","dirname","startsWith","nameMapping","Map","otherNodes","getContents","getConflicts","nodesToRename","content","n","c","skipped","usedNames","newName","getUniqueName","ignoreFileExtension","set","actionFinished","mode","text","count","toast","showLoading","hideToast","createLoadingNotification","NodeStatus","LOADING","client","currentPath","destinationPath","get","COPY","copyFile","moveFile","isAxiosError","response","parser","DOMParser","message","parseFromString","textContent","handleCopyMoveNodesTo","useDragAndDropStore","defineStore","state","dragging","actions","selection","reset","useSelectionStore","lastSelection","lastSelectedIndex","setLastIndex","useUploaderStore","args","store","defineComponent","components","NcActionButton","NcBreadcrumbs","NcBreadcrumb","NcIconSvgWrapper","setup","activeStore","useActiveStore","filesStore","useFilesStore","pathsStore","usePathsStore","draggingStore","selectionStore","uploaderStore","isMenuOpen","activeFolder","isSharingEnabled","getCapabilities","files_sharing","isPublic","isPublicShare","canShare","permissions","SHARE","openSharingSidebar","getSidebar","open","mdiAccountPlus","mdiChevronDown","mdiChevronUp","mdiReload","dirs","split","replace","sections","dir","getFileSourceFromPath","getNodeFromSource","exact","getDirDisplayName","getTo","disableDrop","isUploadInProgress","wrapUploadProgressBar","viewIcon","activeView","icon","selectedFiles","draggingFiles","getNode","getPath","displayname","$route","params","query","fileid","onDragOver","event","dataTransfer","ctrlKey","dropEffect","onDrop","preventDefault","controller","AbortController","signal","folder","canDrop","CREATE","button","titleForSection","section","ariaForSection","styleTagTransform","setAttributes","insert","domAPI","insertStyleElement","locals","_setupProxy","scopedSlots","_u","key","fn","proxy","_l","nativeOn","TrayArrowDownIcon","currentFolder","Object","dragover","canUpload","isQuotaExceeded","cantUploadLabel","resetDragOver","debounce","mainContent","getElementById","onDragLeave","onContentDrop","beforeUnmount","removeEventListener","isForeignFile","types","currentTarget","contains","relatedTarget","clear","stopPropagation","lastUpload","findLast","UploadStatus","FAILED","webkitRelativePath","headers","$router","directives","rawName","expression","isFileListFilterWithUi","useFiltersStore","chips","filters","activeChips","values","sortedFilters","sort","a","b","order","filtersWithUI","addFilter","onFilterUpdateChips","onFilterUpdate","detail","registry","getFilesRegistry","initialFilters","getFileListFilters","filterId","findIndex","splice","removeFilter","subscribe","onViewChanged","initialize","_defineComponent","__name","__props","filterStore","visualFilters","hasActiveFilters","selectedFilter","boundary","__sfc","menuTriggerId","mdiArrowLeft","mdiFilterVariant","NcButton","NcPopover","_setup","$style","fileListFilters","iconSvgInline","displayName","fileListFilters__popoverContainer","tagName","tag","domProps","fileListFilters__popoverFilterView","Function","updateRootElement","currentView","replaceChildren","openedSubmenu","enabledSubmenuActions","enabledFileActions","record","action","isValidMenu","onBackToMenuClick","menuAction","$refs","focus","executeAction","currentNode","activeNode","_children","enabled","activeAction","success","exec","ArrowLeftIcon","CustomElementRender","NcActions","NcActionSeparator","NcLoadingIcon","mixins","actionsMixins","opened","gridMode","isActive","isLoading","actionContext","enabledInlineActions","inline","enabledRenderActions","renderInline","enabledMenuActions","DefaultType","HIDDEN","self","topActionsIds","renderedNonDestructiveActions","destructive","renderedDestructiveActions","openedMenu","getBoundariesElement","created","useHotKey","onKeyDown","stop","prevent","actionDisplayName","isLoadingAction","onActionClick","onMenuClose","onMenuClosed","refInFor","NcCheckboxRadioSwitch","keyboardStore","altKey","metaKey","shiftKey","onEvent","_initialized","useKeyboardStore","isSelected","ariaLabel","loadingLabel","onToggleSelect","ctrl","shift","onSelectionChange","newSelectedIndex","isAlreadySelected","Math","min","end","max","filesToSelect","slice","resetSelection","indexOf","_k","keyCode","apply","arguments","useRenamingStore","renamingNode","newNodeName","isRenaming","$reset","rename","oldName","trim","userConfig","useUserConfigStore","show_dialog_file_extension","oldExtension","extname","newExtension","promise","withResolvers","spawnDialog","defineAsyncComponent","showFileExtensionDialog","show_hidden","filename","showHiddenFileDialog","oldEncodedSource","encodedSource","axios","url","Destination","Overwrite","fetchNode","oldSource","getFilenameValidity","escape","validateFilename","InvalidFilenameError","reason","InvalidFilenameErrorReason","Character","char","segment","ReservedName","Extension","match","extension","NcTextField","renamingStore","userConfigStore","defaultFileAction","isRenamingSmallScreen","renameLabel","linkTo","is","tabindex","immediate","handler","renaming","startRenaming","input","renameInput","validity","checkIfNodeExists","setCustomValidity","reportValidity","sourceName","setSelectionRange","dispatchEvent","Event","stopRenaming","onRename","renameForm","checkValidity","nameContainer","model","callback","$$v","show_files_extensions","StarSvg","usePreviewImage","toValue","fallback","mime","previewUrl","generateUrl","URL","location","origin","href","crop","sizeX","sizeY","token","getSharingToken","searchParams","toString","etag","mtime","getTime","AccountGroupIcon","AccountPlusIcon","CollectivesIcon","FavoriteIcon","FileIcon","FolderIcon","FolderOpenIcon","KeyIcon","LinkIcon","NetworkIcon","TagIcon","toRef","crop_image_previews","backgroundFailed","backgroundLoaded","isFavorite","favorite","fileOverlay","PlayCircleIcon","folderOverlay","shareTypes","ShareType","Link","Email","hasBlurhash","canvas","drawBlurhash","previewImg","src","onBackgroundLoad","onBackgroundError","height","pixels","decode","ctx","getContext","imageData","createImageData","putImageData","_m","useFileActions","getFileActions","useRouteParameters","route","useRoute","fileId","parseInt","isNaN","openFile","openfile","toLocaleLowerCase","openDetails","opendetails","useActionsMenuStore","available","sidebar","hotkey","description","getSummaryFor","fileCount","folderCount","summary","fileSummary","folderSummary","hiddenSummary","extend","FileMultipleIcon","isSingleNode","isSingleFolder","totalSize","total","formatFileSize","update","preview","cloneNode","Preview","DragAndDropPreview","directive","vOnClickOutside","NcFile","Node","isMtimeAvailable","compact","provide","uniqueId","str","hash","charCodeAt","hashCode","currentRouteFileId","isFailedSource","canDrag","UPDATE","every","actionsMenuStore","getDate","crtime","mtimeOpacity","maxOpacityTime","timeDiff","opacityTime","color","round","newSource","resetState","closest","removeProperty","onRightClick","getBoundingClientRect","setProperty","clientX","left","clientY","top","isMoreThanOneSelected","execDefaultAction","metaKeyPressed","READ","downloadAttribute","parse","scope","isDownloadable","openDetailsIfAvailable","sidebarAction","onDragStart","clearData","image","$mount","$on","$off","getDragAndDropPreview","setDragImage","onDragEnd","FileEntryActions","FileEntryCheckbox","FileEntryName","FileEntryPreview","NcDateTime","FileEntryMixin","isMimeAvailable","isSizeAvailable","rowListeners","dragstart","contextmenu","dragleave","dragend","drop","columns","OC","MimeTypeList","names","baseType","ext","toUpperCase","sizeOpacity","pow","triggerDefaultAction","_g","column","inheritAttrs","r","_sfc_main","ariaLabelClose","actionsContainer","validator","iconPath","iconSvg","noClose","variant","slots","realVariant","canClose","hasActions","hasIcon","mdiClose","_sfc_render","_sfc_staticRenderFns","NcChip","exports","NcAvatar","fileListFilterChips","chip","onclick","user","searchStore","useSearchStore","getPinia","isVisible","onClick","header","queueUpdate","initialRender","mount","then","catch","destroyed","updated","classForColumn","initialViewConfig","useViewConfigStore","viewConfigs","getCurrentUser","put","viewId","onUpdate","getConfig","viewid","setSortingBy","toggleSortingDirection","sorting_direction","mapState","sortingMode","sorting_mode","defaultSortKey","isAscSorting","sortingDirection","toggleSortBy","MenuDown","MenuUp","filesSortingMixin","translate","FilesListTableHeaderButton","selectAllBind","label","checked","isAllSelected","indeterminate","isSomeSelected","selectedNodes","isNoneSelected","onToggleAll","ariaSortForMode","boundariesElement","inlineActions","loading","execBatch","childrenActionsIds","menuActions","areSomeNodesLoading","selectionSources","$set","failedSources","e","dataComponent","dataKey","dataSources","extraProps","scrollToIndex","caption","fileListWidth","beforeHeight","footerHeight","headerHeight","tableHeight","resizeObserver","isReady","bufferItems","columnCount","itemHeight","itemWidth","visibleRows","floor","rowCount","startIndex","firstColumnIndex","shownItems","renderedItems","oldItemsKeys","$_recycledPool","unusedKeys","keys","pop","random","substr","totalRowCount","ceil","tbodyStyle","rowsAbove","rowsBelow","paddingBlock","minHeight","scrollTo","oldColumnCount","updateHeightVariables","onScroll","before","footer","lastVisibleIndex","totalRows","clampedIndex","scrollTop","indexToScrollPos","_onScrollHandle","requestAnimationFrame","scrollPosToIndex","scrollPos","topScroll","clientHeight","theadHeight","thead","filterHeight","$scopedSlots","sorted","FileListFilterChips","FileListFilterToSearch","FilesListHeader","FilesListTableFooter","FilesListTableHeader","VirtualList","FilesListTableHeaderActions","View","show_mime_column","getFileListHeaders","FileEntry","FileEntryGrid","cantUpload","defaultCaption","isEmpty","handleOpenQueries","unselectFile","handleOpenFile","openSidebarForFile","scrollToFile","defaultAction","useEnabledFileActions","OCP","Files","Router","goToRoute","tableElement","table","tableTop","tableBottom","grid_view","setActiveNode","nextIndex","nextNode","useSidebarStore","activeTab","isOpen","hasContext","currentContext","currentActions","getActions","currentTabs","getTabs","tabId","setActiveTab","newTabs","close","tabs","getSidebarTabs","tab","getSidebarActions","_router","afterEach","defaultView","default_view","quota","BreadCrumbs","DragAndDropNotice","FileListFilters","FilesListVirtual","ListViewIcon","NcAppContent","NcEmptyContent","Teleport","UploadPicker","ViewGridIcon","IconAlertCircleOutline","IconReload","filtersStore","viewConfigStore","enableGridView","forbiddenCharacters","dirContents","enabledFileListActions","getFileListActions","useEnabledFileListActions","stopWatching","nextTick","loadingAction","dirContentsFiltered","getContent","normalizedPath","normalize","getNodesByPath","pageHeading","dirContentsSorted","customColumn","reverse","sortNodes","sortFavoritesFirst","sort_favorites_first","sortFoldersFirst","sort_folders_first","sortingOrder","aa","relative","bb","isEmptyDir","isRefreshing","toPreviousDir","gridViewButtonLabel","showCustomEmptyView","emptyView","debouncedFetchContent","useThrottleFn","fetchContent","show","customEmptyView","newView","oldView","newDir","oldDir","filesListVirtual","filterDirContent","onUpdatedNode","onUpdateSearch","unmounted","unsubscribe","once","abort","updateNodes","setRoot","service","addPath","fatal","isWebDAVClientError","humanizeWebDAVError","onUpload","onUploadFail","CANCELLED","doc","toggleGridView","execFileListAction","emptyTitle","emptyCaption","Intl","Collator","getLanguage","getCanonicalLocale","numeric","usage","collator","level","viewConfig","isExpanded","expanded","childViews","v","isDescendant","parentView","sortedChildViews","compare","hasChildViews","navigationRoute","childViewsLoaded","loadChildViews","maxLevel","onExpandCollapse","NcAppNavigationItem","sticky","childView","rootViews","sortViews","NcAppNavigationList","FilesNavigationListItem","filesNavigationList","remove","useRouter","beforeResolve","next","VIEW_ID","onUnmounted","onBeforeNavigation","isSearchView","searchLabel","mdiMagnify","mdiSearchWeb","NcAppNavigationSearch","throttle","delay","timeoutID","_ref","_ref$noTrailing","noTrailing","_ref$noLeading","noLeading","_ref$debounceMode","debounceMode","cancelled","lastExec","clearExistingTimeout","clearTimeout","wrapper","_len","arguments_","_key","elapsed","setTimeout","cancel","_ref2$upcomingOnly","upcomingOnly","ChartPie","NcProgressBar","loadingStorageStats","storageStats","storageStatsTitle","usedQuotaByte","used","quotaByte","storageStatsTooltip","beforeMount","throttleUpdateStorageStats","free","showStorageFullWarning","debounceUpdateStorageStats","_ref$atBegin","atBegin","updateStorageStats","slot","NcAppSettingsSection","NcFormBox","NcFormBoxSwitch","mdiAccountOutline","mdiFolderOutline","NcRadioGroup","NcRadioGroupButton","folder_tree","setting","onBeforeMount","onBeforeUnmount","apiSettings","OCA","Settings","settings","localeCompare","FilesAppSettingsLegacyApiEntry","actionHotkeys","hotkeyToString","parts","alt","NcAppSettingsShortcutsSection","NcHotkey","NcHotkeyList","show_dialog_deletion","webDavUrl","generateRemoteUrl","uid","webDavDocsUrl","appPasswordUrl","isTwoFactorEnabled","NcFormBoxButton","NcFormBoxCopyButton","showKeyboardShortcuts","scrollIntoView","behavior","NcAppSettingsDialog","FilesAppSettingsAppearance","FilesAppSettingsGeneral","FilesAppSettingsLegacyApi","FilesAppSettingsShortcuts","FilesAppSettingsWarnings","FilesAppSettingsWebDav","settingsOpened","currentViewId","watchEffect","setActive","NcAppNavigation","IconCog","FilesNavigationList","FilesNavigationSearch","NavigationQuota","FilesAppSettings","isFavourited","mdiStar","NcUserBubble","filesSidebarSubname","filesSidebarSubname__separator","owner","filesSidebarSubname__userBubble","N","Symbol","toStringTag","initializedTabs","active","onInit","customElements","whenDefined","NcAppSidebarTab","background","Image","onload","onClosed","onOpened","onToggle","NcAppSidebar","FilesSidebarSubname","FilesSidebarTab","router","old","new","useHotKeys","NcContent","FilesList","FilesNavigation","FilesSidebar","originalPush","prototype","ignoreDuplicateNavigation","originalReplace","isNavigationFailure","NavigationFailureType","duplicated","base","linkActiveClass","routes","redirect","stringifyQuery","queryString","onError","aborted","parentIntercept","fromDir","toDir","fromSource","currentRoute","parentFolder","RouterService","goTo","__webpack_nonce__","getCSPNonce","assign","PiniaVuePlugin","_settings","register","Setting","_classPrivateFieldInitSpec","_name","_options","_classPrivateFieldSet","_classPrivateFieldGet","FilesApp","pinia","getRootPath","propfindPayload","contentsResponse","getDirectoryContents","includeSelf","defaultGetContents","getDirectoryByPath","rootPath","searchNodes","getLocalSearch","search","getDavNameSpaces","getDavProperties","getBaseUrl","dummyFolder","getRemoteURL","onDeletedNode","onChangedView","fileStore","roots","getters","getNodes","getNodesById","getRoot","deleteNodes","delete","onCreatedNode","onMovedNode","onAddFavorite","ourNode","onRemoveFavorite","_nc_files_pinia","createPinia","paths","payload","deletePath","addNodeToParentChildren","deleteNodeFromParentChildren","oldPath","oldNode","parentSource","updateSearch","current","updateRouter","isSearch","initialUserConfig","___CSS_LOADER_EXPORT___","module","defaultDavProperties","defaultDavNamespaces","d","nc","oc","ocs","s","davProperties","prop","davNamespaces","ns","getRecentSearch","remoteURL","setHeaders","requesttoken","patch","headers2","fetch","getFavoriteNodes","davRoot","filesRoot","userId","permString","P","WRITE","DELETE","parsePermissions","lastmod","creationdate","nodeData","getcontentlength","hasPreview","gtBuilder","detectLocale","addTranslation","locale","json","gt","ngettext","bind","gettext","UploadCancelledError","cause","uploadData","uploadData2","uploadOptions","onUploadProgress","onUploadRetry","retries","Blob","destinationFile","request","retryDelay","retryCount","retryCondition","onRetry","getChunk","getMaxChunksSize","fileSize","maxChunkSize","appConfig","max_chunk_size","minimumChunkSize","Status","Status2","Upload","_source","_file","_isChunked","_chunks","_size","_uploaded","_startTime","_status","_controller","_response","chunked","chunks","isChunked","startTime","uploaded","isFileSystemFileEntry","o","FileSystemFileEntry","isFileSystemEntry","FileSystemEntry","_originalName","_path","sum","latest","originalName","getChild","addChildren","addChild","FileSystemDirectoryEntry","reader","child","filePath","relPath","Eta","_done","_total","_progress","_elapsedTime","_speed","_eta","Infinity","_cutoffTime","resume","cutoffTime","done","deltaDone","deltaTime","historyNeeded","alpha","filtered","eta","dispatchTypedEvent","CustomEvent","cancelable","progress","time","timeReadable","seconds","hours","padStart","minutes","speed","speedReadable","UploaderStatus","UploaderStatus2","Uploader","_destinationFolder","_isPublic","_customHeaders","_uploadQueue","_jobQueue","chunked_upload","max_parallel_count","_queueSize","_queueProgress","_queueStatus","_notifiers","destinationFolder","ALL","maxChunksSize","customHeaders","structuredClone","setCustomHeader","deleteCustomerHeader","updateStats","upload2","partialSum","pending","INITIALIZED","UPLOADING","ASSEMBLING","addNotifier","notifier","_notifyAll","batchUpload","files2","onCancel","rootFolder","uploadDirectory","FINISHED","folderPath","currentUpload","selectedForUpload","directories","at","fileHandle","encodedDestinationFile","resolve2","supportsPublicChunking","dav","public_shares_chunking","disabledChunkUpload","blob","bytes","_mtimeHeader","tempUrl","chunksWorkspace","initChunkWorkspace","chunksQueue","chunk","bufferStart","bufferEnd","request2","chunkBytes","progressBytes","onIdle","forceRecreate","_nc_uploader","contentNames","ConflictPicker","picker","recursiveUpload","submit","$destroy","showInvalidFilenameDialog","InvalidFilenameDialog","rest","skip","scriptExports","render6","functionalTemplate","injectStyles","IconCancel","IconFolderUpload","IconPlus","IconUpload","NcActionCaption","accept","multiple","noMenu","noLabel","primary","allowFolders","progressTimeId","newFileMenuEntries","uploadManager","menuEntriesUpload","category","UploadFromDevice","menuEntriesNew","CreateNew","menuEntriesOther","Other","canUploadFolders","hasFailure","isAssembling","isUploading","isOnlyAssembling","isPaused","PAUSED","buttonLabel","haveMenu","setDestination","onUploadCompletion","etaTimeAndSpeed","onTriggerPick","uploadFolders","webkitdirectory","click","isArray","onPick","contentsCallback","filesToUpload","defineProperty","resetForm","form","iconClass","__webpack_module_cache__","__webpack_require__","moduleId","cachedModule","loaded","__webpack_modules__","m","O","chunkIds","priority","notFulfilled","fulfilled","j","getter","__esModule","definition","enumerable","f","chunkId","u","obj","hasOwnProperty","l","needAttach","scripts","getAttribute","charset","onScriptComplete","prev","onerror","timeout","doneFns","nmd","scriptUrl","globalThis","importScripts","currentScript","p","baseURI","installedChunks","installedChunkData","errorType","realSrc","webpackJsonpCallback","parentChunkLoadingFunction","moreModules","runtime","chunkLoadingGlobal","__webpack_exports__"],"sourceRoot":""}
\ No newline at end of file
+{"version":3,"file":"files-main.js?v=7116d057ad561c218e52","mappings":"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","sources":["webpack:///nextcloud/webpack/runtime/chunk loaded","webpack:///nextcloud/webpack/runtime/load script","webpack:///nextcloud/apps/files/src/logger.ts","webpack:///nextcloud/node_modules/vue2-teleport/dist/teleport.esm.js","webpack:///nextcloud/node_modules/vue-material-design-icons/FormatListBulletedSquare.vue","webpack:///nextcloud/node_modules/vue-material-design-icons/FormatListBulletedSquare.vue?vue&type=script&lang=js","webpack://nextcloud/./node_modules/vue-material-design-icons/FormatListBulletedSquare.vue?5dae","webpack:///nextcloud/node_modules/vue-material-design-icons/FormatListBulletedSquare.vue?vue&type=template&id=64cece03","webpack:///nextcloud/node_modules/vue-material-design-icons/Reload.vue?vue&type=script&lang=js","webpack:///nextcloud/node_modules/vue-material-design-icons/Reload.vue","webpack://nextcloud/./node_modules/vue-material-design-icons/Reload.vue?2e35","webpack:///nextcloud/node_modules/vue-material-design-icons/Reload.vue?vue&type=template&id=39a07256","webpack:///nextcloud/node_modules/vue-material-design-icons/ViewGridOutline.vue?vue&type=script&lang=js","webpack:///nextcloud/node_modules/vue-material-design-icons/ViewGridOutline.vue","webpack://nextcloud/./node_modules/vue-material-design-icons/ViewGridOutline.vue?0216","webpack:///nextcloud/node_modules/vue-material-design-icons/ViewGridOutline.vue?vue&type=template&id=0c2dec16","webpack:///nextcloud/apps/files/src/components/BreadCrumbs.vue","webpack:///nextcloud/apps/files/src/composables/useFileListWidth.ts","webpack:///nextcloud/apps/files/src/composables/useViews.ts","webpack:///nextcloud/apps/files/src/actions/moveOrCopyActionUtils.ts","webpack:///nextcloud/apps/files/src/actions/moveOrCopyAction.ts","webpack:///nextcloud/apps/files/src/services/DropServiceUtils.ts","webpack:///nextcloud/apps/files/src/services/DropService.ts","webpack:///nextcloud/apps/files/src/store/dragging.ts","webpack:///nextcloud/apps/files/src/store/selection.ts","webpack:///nextcloud/apps/files/src/store/uploader.ts","webpack:///nextcloud/apps/files/src/components/BreadCrumbs.vue?vue&type=script&lang=ts","webpack://nextcloud/./apps/files/src/components/BreadCrumbs.vue?1045","webpack://nextcloud/./apps/files/src/components/BreadCrumbs.vue?d357","webpack:///nextcloud/apps/files/src/components/DragAndDropNotice.vue","webpack:///nextcloud/node_modules/vue-material-design-icons/TrayArrowDown.vue","webpack:///nextcloud/node_modules/vue-material-design-icons/TrayArrowDown.vue?vue&type=script&lang=js","webpack://nextcloud/./node_modules/vue-material-design-icons/TrayArrowDown.vue?a897","webpack:///nextcloud/node_modules/vue-material-design-icons/TrayArrowDown.vue?vue&type=template&id=5dbf2618","webpack:///nextcloud/apps/files/src/components/DragAndDropNotice.vue?vue&type=script&lang=ts","webpack://nextcloud/./apps/files/src/components/DragAndDropNotice.vue?e578","webpack://nextcloud/./apps/files/src/components/DragAndDropNotice.vue?a2e0","webpack:///nextcloud/apps/files/src/components/FileListFilter/FileListFilters.vue","webpack:///nextcloud/apps/files/src/store/filters.ts","webpack:///nextcloud/apps/files/src/components/FileListFilter/FileListFilters.vue?vue&type=script&setup=true&lang=ts","webpack://nextcloud/./apps/files/src/components/FileListFilter/FileListFilters.vue?5f13","webpack://nextcloud/./apps/files/src/components/FileListFilter/FileListFilters.vue?9837","webpack:///nextcloud/apps/files/src/components/FilesListVirtual.vue","webpack:///nextcloud/apps/files/src/components/CustomElementRender.vue","webpack:///nextcloud/apps/files/src/components/CustomElementRender.vue?vue&type=script&lang=ts","webpack://nextcloud/./apps/files/src/components/CustomElementRender.vue?5f5c","webpack:///nextcloud/apps/files/src/components/FileEntry/FileEntryActions.vue","webpack:///nextcloud/node_modules/vue-material-design-icons/ArrowLeft.vue","webpack:///nextcloud/node_modules/vue-material-design-icons/ArrowLeft.vue?vue&type=script&lang=js","webpack://nextcloud/./node_modules/vue-material-design-icons/ArrowLeft.vue?f857","webpack:///nextcloud/node_modules/vue-material-design-icons/ArrowLeft.vue?vue&type=template&id=16833c02","webpack:///nextcloud/apps/files/src/mixins/actionsMixin.ts","webpack:///nextcloud/apps/files/src/utils/actionUtils.ts","webpack:///nextcloud/apps/files/src/components/FileEntry/FileEntryActions.vue?vue&type=script&lang=ts","webpack://nextcloud/./apps/files/src/components/FileEntry/FileEntryActions.vue?bd19","webpack://nextcloud/./apps/files/src/components/FileEntry/FileEntryActions.vue?9338","webpack://nextcloud/./apps/files/src/components/FileEntry/FileEntryActions.vue?7b52","webpack:///nextcloud/apps/files/src/components/FileEntry/FileEntryCheckbox.vue","webpack:///nextcloud/apps/files/src/components/FileEntry/FileEntryCheckbox.vue?vue&type=script&lang=ts","webpack:///nextcloud/apps/files/src/store/keyboard.ts","webpack://nextcloud/./apps/files/src/components/FileEntry/FileEntryCheckbox.vue?a18b","webpack:///nextcloud/apps/files/src/components/FileEntry/FileEntryName.vue","webpack:///nextcloud/apps/files/src/store/renaming.ts","webpack:///nextcloud/apps/files/src/utils/filenameValidity.ts","webpack:///nextcloud/apps/files/src/components/FileEntry/FileEntryName.vue?vue&type=script&lang=ts","webpack://nextcloud/./apps/files/src/components/FileEntry/FileEntryName.vue?88e4","webpack://nextcloud/./apps/files/src/components/FileEntry/FileEntryName.vue?98a4","webpack:///nextcloud/apps/files/src/components/FileEntry/FileEntryPreview.vue","webpack:///nextcloud/node_modules/vue-material-design-icons/AccountGroup.vue","webpack:///nextcloud/node_modules/vue-material-design-icons/AccountGroup.vue?vue&type=script&lang=js","webpack://nextcloud/./node_modules/vue-material-design-icons/AccountGroup.vue?1c79","webpack:///nextcloud/node_modules/vue-material-design-icons/AccountGroup.vue?vue&type=template&id=fa2b1464","webpack:///nextcloud/node_modules/vue-material-design-icons/AccountPlus.vue?vue&type=script&lang=js","webpack:///nextcloud/node_modules/vue-material-design-icons/AccountPlus.vue","webpack://nextcloud/./node_modules/vue-material-design-icons/AccountPlus.vue?2818","webpack:///nextcloud/node_modules/vue-material-design-icons/AccountPlus.vue?vue&type=template&id=53a26aa0","webpack:///nextcloud/node_modules/vue-material-design-icons/FolderOpen.vue","webpack:///nextcloud/node_modules/vue-material-design-icons/FolderOpen.vue?vue&type=script&lang=js","webpack://nextcloud/./node_modules/vue-material-design-icons/FolderOpen.vue?6818","webpack:///nextcloud/node_modules/vue-material-design-icons/FolderOpen.vue?vue&type=template&id=ae0c5fc0","webpack:///nextcloud/node_modules/vue-material-design-icons/Key.vue?vue&type=script&lang=js","webpack:///nextcloud/node_modules/vue-material-design-icons/Key.vue","webpack://nextcloud/./node_modules/vue-material-design-icons/Key.vue?157c","webpack:///nextcloud/node_modules/vue-material-design-icons/Key.vue?vue&type=template&id=499b3412","webpack:///nextcloud/node_modules/vue-material-design-icons/NetworkOutline.vue","webpack:///nextcloud/node_modules/vue-material-design-icons/NetworkOutline.vue?vue&type=script&lang=js","webpack://nextcloud/./node_modules/vue-material-design-icons/NetworkOutline.vue?5a96","webpack:///nextcloud/node_modules/vue-material-design-icons/NetworkOutline.vue?vue&type=template&id=8f00cb50","webpack:///nextcloud/node_modules/vue-material-design-icons/PlayCircle.vue?vue&type=script&lang=js","webpack:///nextcloud/node_modules/vue-material-design-icons/PlayCircle.vue","webpack://nextcloud/./node_modules/vue-material-design-icons/PlayCircle.vue?0c26","webpack:///nextcloud/node_modules/vue-material-design-icons/PlayCircle.vue?vue&type=template&id=3cc1493c","webpack:///nextcloud/node_modules/vue-material-design-icons/Tag.vue?vue&type=script&lang=js","webpack:///nextcloud/node_modules/vue-material-design-icons/Tag.vue","webpack://nextcloud/./node_modules/vue-material-design-icons/Tag.vue?6116","webpack:///nextcloud/node_modules/vue-material-design-icons/Tag.vue?vue&type=template&id=356230e0","webpack:///nextcloud/apps/files/src/components/FileEntry/CollectivesIcon.vue?vue&type=script&lang=js","webpack:///nextcloud/apps/files/src/components/FileEntry/CollectivesIcon.vue","webpack://nextcloud/./apps/files/src/components/FileEntry/CollectivesIcon.vue?1937","webpack://nextcloud/./apps/files/src/components/FileEntry/CollectivesIcon.vue?949d","webpack:///nextcloud/apps/files/src/components/FileEntry/FavoriteIcon.vue","webpack:///nextcloud/apps/files/src/components/FileEntry/FavoriteIcon.vue?vue&type=script&lang=ts","webpack://nextcloud/./apps/files/src/components/FileEntry/FavoriteIcon.vue?227e","webpack://nextcloud/./apps/files/src/components/FileEntry/FavoriteIcon.vue?62c6","webpack:///nextcloud/apps/files/src/composables/usePreviewImage.ts","webpack:///nextcloud/apps/files/src/services/LivePhotos.ts","webpack:///nextcloud/apps/files/src/components/FileEntry/FileEntryPreview.vue?vue&type=script&lang=ts","webpack://nextcloud/./apps/files/src/components/FileEntry/FileEntryPreview.vue?8c1f","webpack:///nextcloud/apps/files/src/composables/useFileActions.ts","webpack:///nextcloud/apps/files/src/composables/useRouteParameters.ts","webpack:///nextcloud/apps/files/src/store/actionsmenu.ts","webpack:///nextcloud/apps/files/src/actions/sidebarAction.ts","webpack:///nextcloud/node_modules/vue-material-design-icons/FileMultiple.vue?vue&type=script&lang=js","webpack:///nextcloud/node_modules/vue-material-design-icons/FileMultiple.vue","webpack://nextcloud/./node_modules/vue-material-design-icons/FileMultiple.vue?6e9d","webpack:///nextcloud/node_modules/vue-material-design-icons/FileMultiple.vue?vue&type=template&id=15fca808","webpack:///nextcloud/apps/files/src/utils/fileUtils.ts","webpack:///nextcloud/apps/files/src/components/DragAndDropPreview.vue","webpack:///nextcloud/apps/files/src/components/DragAndDropPreview.vue?vue&type=script&lang=ts","webpack://nextcloud/./apps/files/src/components/DragAndDropPreview.vue?34b2","webpack://nextcloud/./apps/files/src/components/DragAndDropPreview.vue?36f6","webpack:///nextcloud/apps/files/src/utils/dragUtils.ts","webpack:///nextcloud/apps/files/src/components/FileEntryMixin.ts","webpack:///nextcloud/apps/files/src/utils/hashUtils.ts","webpack:///nextcloud/apps/files/src/utils/permissions.ts","webpack:///nextcloud/apps/files/src/components/FileEntry.vue","webpack:///nextcloud/apps/files/src/components/FileEntry.vue?vue&type=script&lang=ts","webpack://nextcloud/./apps/files/src/components/FileEntry.vue?da7c","webpack:///nextcloud/apps/files/src/components/FileEntryGrid.vue","webpack:///nextcloud/apps/files/src/components/FileEntryGrid.vue?vue&type=script&lang=ts","webpack://nextcloud/./apps/files/src/components/FileEntryGrid.vue?bb8e","webpack:///nextcloud/apps/files/src/components/FileListFilter/FileListFilterChips.vue","webpack://nextcloud/./node_modules/@nextcloud/vue/dist/assets/NcChip-DLfUzq07.css?b679","webpack:///nextcloud/node_modules/@nextcloud/vue/dist/Components/NcChip.mjs","webpack:///nextcloud/apps/files/src/components/FileListFilter/FileListFilterChips.vue?vue&type=script&setup=true&lang=ts","webpack://nextcloud/./apps/files/src/components/FileListFilter/FileListFilterChips.vue?d193","webpack://nextcloud/./apps/files/src/components/FileListFilter/FileListFilterChips.vue?e408","webpack:///nextcloud/apps/files/src/components/FileListFilter/FileListFilterToSearch.vue","webpack:///nextcloud/apps/files/src/components/FileListFilter/FileListFilterToSearch.vue?vue&type=script&setup=true&lang=ts","webpack://nextcloud/./apps/files/src/components/FileListFilter/FileListFilterToSearch.vue?feab","webpack:///nextcloud/apps/files/src/components/FilesListHeader.vue?vue&type=script&lang=ts","webpack:///nextcloud/apps/files/src/components/FilesListHeader.vue","webpack://nextcloud/./apps/files/src/components/FilesListHeader.vue?349b","webpack:///nextcloud/apps/files/src/components/FilesListTableFooter.vue","webpack:///nextcloud/apps/files/src/components/FilesListTableFooter.vue?vue&type=script&setup=true&lang=ts","webpack://nextcloud/./apps/files/src/components/FilesListTableFooter.vue?e251","webpack://nextcloud/./apps/files/src/components/FilesListTableFooter.vue?fa4c","webpack:///nextcloud/apps/files/src/components/FilesListTableHeader.vue","webpack:///nextcloud/apps/files/src/store/viewConfig.ts","webpack:///nextcloud/apps/files/src/mixins/filesSorting.ts","webpack:///nextcloud/apps/files/src/components/FilesListTableHeaderButton.vue?vue&type=script&lang=ts","webpack:///nextcloud/apps/files/src/components/FilesListTableHeaderButton.vue","webpack://nextcloud/./apps/files/src/components/FilesListTableHeaderButton.vue?9000","webpack://nextcloud/./apps/files/src/components/FilesListTableHeaderButton.vue?e364","webpack:///nextcloud/apps/files/src/components/FilesListTableHeader.vue?vue&type=script&lang=ts","webpack://nextcloud/./apps/files/src/components/FilesListTableHeader.vue?392f","webpack://nextcloud/./apps/files/src/components/FilesListTableHeader.vue?b1c9","webpack:///nextcloud/apps/files/src/components/FilesListTableHeaderActions.vue","webpack:///nextcloud/apps/files/src/components/FilesListTableHeaderActions.vue?vue&type=script&lang=ts","webpack://nextcloud/./apps/files/src/components/FilesListTableHeaderActions.vue?c063","webpack://nextcloud/./apps/files/src/components/FilesListTableHeaderActions.vue?9494","webpack:///nextcloud/apps/files/src/components/VirtualList.vue?vue&type=script&lang=ts","webpack:///nextcloud/apps/files/src/components/VirtualList.vue","webpack://nextcloud/./apps/files/src/components/VirtualList.vue?37fa","webpack:///nextcloud/apps/files/src/composables/useFileListHeaders.ts","webpack:///nextcloud/apps/files/src/components/FilesListVirtual.vue?vue&type=script&lang=ts","webpack://nextcloud/./apps/files/src/components/FilesListVirtual.vue?1950","webpack://nextcloud/./apps/files/src/components/FilesListVirtual.vue?290c","webpack://nextcloud/./apps/files/src/components/FilesListVirtual.vue?3555","webpack:///nextcloud/apps/files/src/composables/useFileListActions.ts","webpack:///nextcloud/apps/files/src/store/sidebar.ts","webpack:///nextcloud/apps/files/src/utils/filesViews.ts","webpack:///nextcloud/apps/files/src/views/FilesList.vue","webpack:///nextcloud/apps/files/src/utils/davUtils.ts","webpack:///nextcloud/apps/files/src/views/FilesList.vue?vue&type=script&lang=ts","webpack://nextcloud/./apps/files/src/views/FilesList.vue?6ae6","webpack://nextcloud/./apps/files/src/views/FilesList.vue?1e5b","webpack:///nextcloud/apps/files/src/views/FilesNavigation.vue","webpack:///nextcloud/node_modules/vue-material-design-icons/CogOutline.vue","webpack:///nextcloud/node_modules/vue-material-design-icons/CogOutline.vue?vue&type=script&lang=js","webpack://nextcloud/./node_modules/vue-material-design-icons/CogOutline.vue?045c","webpack:///nextcloud/node_modules/vue-material-design-icons/CogOutline.vue?vue&type=template&id=96fed70c","webpack:///nextcloud/apps/files/src/components/FilesNavigationList.vue","webpack:///nextcloud/apps/files/src/services/FolderTree.ts","webpack:///nextcloud/apps/files/src/components/FilesNavigationListItem.vue","webpack:///nextcloud/apps/files/src/components/FilesNavigationListItem.vue?vue&type=script&setup=true&lang=ts","webpack://nextcloud/./apps/files/src/components/FilesNavigationListItem.vue?adcc","webpack:///nextcloud/apps/files/src/components/FilesNavigationList.vue?vue&type=script&setup=true&lang=ts","webpack://nextcloud/./apps/files/src/components/FilesNavigationList.vue?a941","webpack://nextcloud/./apps/files/src/components/FilesNavigationList.vue?110b","webpack:///nextcloud/apps/files/src/components/FilesNavigationSearch.vue","webpack:///nextcloud/apps/files/src/components/FilesNavigationSearch.vue?vue&type=script&setup=true&lang=ts","webpack:///nextcloud/apps/files/src/composables/useBeforeNavigation.ts","webpack://nextcloud/./apps/files/src/components/FilesNavigationSearch.vue?a917","webpack:///nextcloud/node_modules/throttle-debounce/esm/index.js","webpack:///nextcloud/node_modules/vue-material-design-icons/ChartPieOutline.vue","webpack:///nextcloud/node_modules/vue-material-design-icons/ChartPieOutline.vue?vue&type=script&lang=js","webpack:///nextcloud/apps/files/src/components/NavigationQuota.vue?vue&type=script&lang=js","webpack:///nextcloud/apps/files/src/components/NavigationQuota.vue","webpack://nextcloud/./node_modules/vue-material-design-icons/ChartPieOutline.vue?0c3f","webpack:///nextcloud/node_modules/vue-material-design-icons/ChartPieOutline.vue?vue&type=template&id=a29cc97a","webpack://nextcloud/./apps/files/src/components/NavigationQuota.vue?b9c1","webpack://nextcloud/./apps/files/src/components/NavigationQuota.vue?2966","webpack://nextcloud/./apps/files/src/components/NavigationQuota.vue?08cb","webpack:///nextcloud/apps/files/src/views/FilesAppSettings.vue","webpack:///nextcloud/apps/files/src/components/FilesAppSettings/FilesAppSettingsAppearance.vue","webpack:///nextcloud/apps/files/src/components/FilesAppSettings/FilesAppSettingsAppearance.vue?vue&type=script&setup=true&lang=ts","webpack://nextcloud/./apps/files/src/components/FilesAppSettings/FilesAppSettingsAppearance.vue?f01b","webpack:///nextcloud/apps/files/src/components/FilesAppSettings/FilesAppSettingsGeneral.vue","webpack:///nextcloud/apps/files/src/components/FilesAppSettings/FilesAppSettingsGeneral.vue?vue&type=script&setup=true&lang=ts","webpack://nextcloud/./apps/files/src/components/FilesAppSettings/FilesAppSettingsGeneral.vue?3c4f","webpack:///nextcloud/apps/files/src/components/FilesAppSettings/FilesAppSettingsLegacyApiEntry.vue?vue&type=script&setup=true&lang=ts","webpack:///nextcloud/apps/files/src/components/FilesAppSettings/FilesAppSettingsLegacyApiEntry.vue","webpack://nextcloud/./apps/files/src/components/FilesAppSettings/FilesAppSettingsLegacyApiEntry.vue?4bf8","webpack:///nextcloud/apps/files/src/components/FilesAppSettings/FilesAppSettingsLegacyApi.vue?vue&type=script&setup=true&lang=ts","webpack:///nextcloud/apps/files/src/components/FilesAppSettings/FilesAppSettingsLegacyApi.vue","webpack://nextcloud/./apps/files/src/components/FilesAppSettings/FilesAppSettingsLegacyApi.vue?afdf","webpack:///nextcloud/apps/files/src/components/FilesAppSettings/FilesAppSettingsShortcuts.vue","webpack:///nextcloud/apps/files/src/components/FilesAppSettings/FilesAppSettingsShortcuts.vue?vue&type=script&setup=true&lang=ts","webpack://nextcloud/./apps/files/src/components/FilesAppSettings/FilesAppSettingsShortcuts.vue?09e9","webpack:///nextcloud/apps/files/src/components/FilesAppSettings/FilesAppSettingsWarnings.vue?vue&type=script&lang=ts&setup=true","webpack:///nextcloud/apps/files/src/components/FilesAppSettings/FilesAppSettingsWarnings.vue","webpack://nextcloud/./apps/files/src/components/FilesAppSettings/FilesAppSettingsWarnings.vue?ccbe","webpack:///nextcloud/apps/files/src/components/FilesAppSettings/FilesAppSettingsWebDav.vue","webpack:///nextcloud/apps/files/src/components/FilesAppSettings/FilesAppSettingsWebDav.vue?vue&type=script&lang=ts&setup=true","webpack://nextcloud/./apps/files/src/components/FilesAppSettings/FilesAppSettingsWebDav.vue?7317","webpack:///nextcloud/apps/files/src/views/FilesAppSettings.vue?vue&type=script&setup=true&lang=ts","webpack://nextcloud/./apps/files/src/views/FilesAppSettings.vue?38e4","webpack:///nextcloud/apps/files/src/views/FilesNavigation.vue?vue&type=script&setup=true&lang=ts","webpack://nextcloud/./apps/files/src/views/FilesNavigation.vue?d107","webpack://nextcloud/./apps/files/src/views/FilesNavigation.vue?e4aa","webpack:///nextcloud/apps/files/src/views/FilesSidebar.vue","webpack:///nextcloud/apps/files/src/components/FilesSidebar/FilesSidebarSubname.vue","webpack:///nextcloud/apps/files/src/components/FilesSidebar/FilesSidebarSubname.vue?vue&type=script&setup=true&lang=ts","webpack://nextcloud/./apps/files/src/components/FilesSidebar/FilesSidebarSubname.vue?0f62","webpack://nextcloud/./apps/files/src/components/FilesSidebar/FilesSidebarSubname.vue?bfcc","webpack:///nextcloud/apps/files/src/components/FilesSidebar/FilesSidebarTab.vue","webpack:///nextcloud/node_modules/@nextcloud/vue/dist/index.mjs","webpack:///nextcloud/apps/files/src/components/FilesSidebar/FilesSidebarTab.vue?vue&type=script&setup=true&lang=ts","webpack://nextcloud/./apps/files/src/components/FilesSidebar/FilesSidebarTab.vue?4ce1","webpack:///nextcloud/apps/files/src/views/FilesSidebar.vue?vue&type=script&setup=true&lang=ts","webpack://nextcloud/./apps/files/src/views/FilesSidebar.vue?66bc","webpack://nextcloud/./apps/files/src/views/FilesSidebar.vue?9144","webpack:///nextcloud/apps/files/src/FilesApp.vue","webpack:///nextcloud/apps/files/src/composables/useHotKeys.ts","webpack:///nextcloud/apps/files/src/FilesApp.vue?vue&type=script&setup=true&lang=ts","webpack://nextcloud/./apps/files/src/FilesApp.vue?597e","webpack:///nextcloud/apps/files/src/router/router.ts","webpack:///nextcloud/apps/files/src/services/RouterService.ts","webpack:///nextcloud/apps/files/src/main.ts","webpack:///nextcloud/apps/files/src/services/Settings.js","webpack:///nextcloud/apps/files/src/models/Setting.ts","webpack:///nextcloud/apps/files/src/services/Files.ts","webpack:///nextcloud/apps/files/src/services/WebDavSearch.ts","webpack:///nextcloud/apps/files/src/services/WebdavClient.ts","webpack:///nextcloud/apps/files/src/store/active.ts","webpack:///nextcloud/apps/files/src/store/files.ts","webpack:///nextcloud/apps/files/src/store/index.ts","webpack:///nextcloud/apps/files/src/store/paths.ts","webpack:///nextcloud/apps/files/src/store/search.ts","webpack:///nextcloud/apps/files/src/store/userconfig.ts","webpack:///nextcloud/apps/files/src/views/search.ts","webpack:///nextcloud/node_modules/@nextcloud/vue/dist/assets/NcChip-DLfUzq07.css","webpack:///nextcloud/apps/files/src/components/BreadCrumbs.vue?vue&type=style&index=0&id=86e9be62&prod&lang=scss&scoped=true","webpack:///nextcloud/apps/files/src/components/DragAndDropNotice.vue?vue&type=style&index=0&id=1e2b9696&prod&lang=scss&scoped=true","webpack:///nextcloud/apps/files/src/components/DragAndDropPreview.vue?vue&type=style&index=0&id=6c14765c&prod&lang=scss","webpack:///nextcloud/apps/files/src/components/FileEntry/FavoriteIcon.vue?vue&type=style&index=0&id=4505d262&prod&lang=scss&scoped=true","webpack:///nextcloud/apps/files/src/components/FileEntry/FileEntryActions.vue?vue&type=style&index=0&id=5f3391ea&prod&lang=scss","webpack:///nextcloud/apps/files/src/components/FileEntry/FileEntryActions.vue?vue&type=style&index=1&id=5f3391ea&prod&scoped=true&lang=scss","webpack:///nextcloud/apps/files/src/components/FileEntry/FileEntryName.vue?vue&type=style&index=0&id=3e8ca2b0&prod&scoped=true&lang=scss","webpack:///nextcloud/apps/files/src/components/FilesListTableFooter.vue?vue&type=style&index=0&id=378a6e4a&prod&scoped=true&lang=scss","webpack:///nextcloud/apps/files/src/components/FilesListTableHeader.vue?vue&type=style&index=0&id=228ab50c&prod&scoped=true&lang=scss","webpack:///nextcloud/apps/files/src/components/FilesListTableHeaderActions.vue?vue&type=style&index=0&id=4056bece&prod&scoped=true&lang=scss","webpack:///nextcloud/apps/files/src/components/FilesListTableHeaderButton.vue?vue&type=style&index=0&id=4a8557e6&prod&scoped=true&lang=scss","webpack:///nextcloud/apps/files/src/components/FilesListVirtual.vue?vue&type=style&index=0&id=1f794bec&prod&scoped=true&lang=scss","webpack:///nextcloud/apps/files/src/components/FilesListVirtual.vue?vue&type=style&index=1&id=1f794bec&prod&lang=scss","webpack:///nextcloud/apps/files/src/components/NavigationQuota.vue?vue&type=style&index=0&id=062ef4b2&prod&lang=scss&scoped=true","webpack:///nextcloud/apps/files/src/views/FilesList.vue?vue&type=style&index=0&id=ed23df10&prod&scoped=true&lang=scss","webpack:///nextcloud/apps/files/src/views/FilesNavigation.vue?vue&type=style&index=0&id=b3d7fbf2&prod&scoped=true&lang=scss","webpack:///nextcloud/apps/files/src/views/FilesSidebar.vue?vue&type=style&index=0&id=f91af60e&prod&lang=scss&scoped=true","webpack:///nextcloud/apps/files/src/components/FileListFilter/FileListFilterChips.vue?vue&type=style&index=0&id=690b69f8&prod&module=true&lang=css","webpack:///nextcloud/apps/files/src/components/FileListFilter/FileListFilters.vue?vue&type=style&index=0&id=4b9fd4ac&prod&module=true&lang=css","webpack:///nextcloud/apps/files/src/components/FilesNavigationList.vue?vue&type=style&index=0&id=1b62d532&prod&module=true&lang=css","webpack:///nextcloud/apps/files/src/components/FilesSidebar/FilesSidebarSubname.vue?vue&type=style&index=0&id=7bd1e3c0&prod&module=true&lang=css","webpack:///nextcloud/node_modules/@nextcloud/files/dist/dav.mjs","webpack:///nextcloud/node_modules/@nextcloud/upload/dist/chunks/index-DPkUyJ8g.mjs","webpack:///nextcloud/webpack/bootstrap","webpack:///nextcloud/webpack/runtime/compat get default export","webpack:///nextcloud/webpack/runtime/define property getters","webpack:///nextcloud/webpack/runtime/ensure chunk","webpack:///nextcloud/webpack/runtime/get javascript chunk filename","webpack:///nextcloud/webpack/runtime/hasOwnProperty shorthand","webpack:///nextcloud/webpack/runtime/make namespace object","webpack:///nextcloud/webpack/runtime/node module decorator","webpack:///nextcloud/webpack/runtime/runtimeId","webpack:///nextcloud/webpack/runtime/publicPath","webpack:///nextcloud/webpack/runtime/jsonp chunk loading","webpack:///nextcloud/webpack/runtime/nonce","webpack:///nextcloud/webpack/startup"],"sourcesContent":["var deferred = [];\n__webpack_require__.O = (result, chunkIds, fn, priority) => {\n\tif(chunkIds) {\n\t\tpriority = priority || 0;\n\t\tfor(var i = deferred.length; i > 0 && deferred[i - 1][2] > priority; i--) deferred[i] = deferred[i - 1];\n\t\tdeferred[i] = [chunkIds, fn, priority];\n\t\treturn;\n\t}\n\tvar notFulfilled = Infinity;\n\tfor (var i = 0; i < deferred.length; i++) {\n\t\tvar [chunkIds, fn, priority] = deferred[i];\n\t\tvar fulfilled = true;\n\t\tfor (var j = 0; j < chunkIds.length; j++) {\n\t\t\tif ((priority & 1 === 0 || notFulfilled >= priority) && Object.keys(__webpack_require__.O).every((key) => (__webpack_require__.O[key](chunkIds[j])))) {\n\t\t\t\tchunkIds.splice(j--, 1);\n\t\t\t} else {\n\t\t\t\tfulfilled = false;\n\t\t\t\tif(priority < notFulfilled) notFulfilled = priority;\n\t\t\t}\n\t\t}\n\t\tif(fulfilled) {\n\t\t\tdeferred.splice(i--, 1)\n\t\t\tvar r = fn();\n\t\t\tif (r !== undefined) result = r;\n\t\t}\n\t}\n\treturn result;\n};","var inProgress = {};\nvar dataWebpackPrefix = \"nextcloud-ui-legacy:\";\n// loadScript function to load a script via script tag\n__webpack_require__.l = (url, done, key, chunkId) => {\n\tif(inProgress[url]) { inProgress[url].push(done); return; }\n\tvar script, needAttach;\n\tif(key !== undefined) {\n\t\tvar scripts = document.getElementsByTagName(\"script\");\n\t\tfor(var i = 0; i < scripts.length; i++) {\n\t\t\tvar s = scripts[i];\n\t\t\tif(s.getAttribute(\"src\") == url || s.getAttribute(\"data-webpack\") == dataWebpackPrefix + key) { script = s; break; }\n\t\t}\n\t}\n\tif(!script) {\n\t\tneedAttach = true;\n\t\tscript = document.createElement('script');\n\n\t\tscript.charset = 'utf-8';\n\t\tif (__webpack_require__.nc) {\n\t\t\tscript.setAttribute(\"nonce\", __webpack_require__.nc);\n\t\t}\n\t\tscript.setAttribute(\"data-webpack\", dataWebpackPrefix + key);\n\n\t\tscript.src = url;\n\t}\n\tinProgress[url] = [done];\n\tvar onScriptComplete = (prev, event) => {\n\t\t// avoid mem leaks in IE.\n\t\tscript.onerror = script.onload = null;\n\t\tclearTimeout(timeout);\n\t\tvar doneFns = inProgress[url];\n\t\tdelete inProgress[url];\n\t\tscript.parentNode && script.parentNode.removeChild(script);\n\t\tdoneFns && doneFns.forEach((fn) => (fn(event)));\n\t\tif(prev) return prev(event);\n\t}\n\tvar timeout = setTimeout(onScriptComplete.bind(null, undefined, { type: 'timeout', target: script }), 120000);\n\tscript.onerror = onScriptComplete.bind(null, script.onerror);\n\tscript.onload = onScriptComplete.bind(null, script.onload);\n\tneedAttach && document.head.appendChild(script);\n};","/**\n * SPDX-FileCopyrightText: 2022 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\nimport { getLoggerBuilder } from '@nextcloud/logger';\nexport default getLoggerBuilder()\n    .setApp('files')\n    .detectUser()\n    .build();\n","//\n//\n//\n//\n//\n//\n\nvar script = {\n  name: 'teleport',\n  props: {\n    to: {\n      type: String,\n      required: true,\n    },\n    where: {\n      type: String,\n      default: 'after',\n    },\n    disabled: Boolean,\n  },\n  data: function data() {\n    return {\n      nodes: [],\n      waiting: false,\n      observer: null,\n      parent: null,\n    };\n  },\n  watch: {\n    to: 'maybeMove',\n    where: 'maybeMove',\n    disabled: function disabled(value) {\n      var this$1 = this;\n\n      if (value) {\n        this.disable();\n        // Ensure all event done.\n        this.$nextTick(function () {\n          this$1.teardownObserver();\n        });\n      } else {\n        this.bootObserver();\n        this.move();\n      }\n    },\n  },\n  mounted: function mounted() {\n    // Store a reference to the nodes\n    this.nodes = Array.from(this.$el.childNodes);\n\n    if (!this.disabled) {\n      this.bootObserver();\n    }\n\n    // Move slot content to target\n    this.maybeMove();\n  },\n  beforeDestroy: function beforeDestroy() {\n    // Fix nodes reference\n    this.nodes = this.getComponentChildrenNode();\n\n    // Move back\n    this.disable();\n\n    // Stop observing\n    this.teardownObserver();\n  },\n  computed: {\n    classes: function classes() {\n      if (this.disabled) {\n        return ['teleporter'];\n      }\n\n      return ['teleporter', 'hidden'];\n    },\n  },\n  methods: {\n    maybeMove: function maybeMove() {\n      if (!this.disabled) {\n        this.move();\n      }\n    },\n    move: function move() {\n      this.waiting = false;\n\n      this.parent = document.querySelector(this.to);\n\n      if (!this.parent) {\n        this.disable();\n\n        this.waiting = true;\n\n        return;\n      }\n\n      if (this.where === 'before') {\n        this.parent.prepend(this.getFragment());\n      } else {\n        this.parent.appendChild(this.getFragment());\n      }\n    },\n    disable: function disable() {\n      this.$el.appendChild(this.getFragment());\n      this.parent = null;\n    },\n    // Using a fragment is faster because it'll trigger only a single reflow\n    // See https://developer.mozilla.org/en-US/docs/Web/API/DocumentFragment\n    getFragment: function getFragment() {\n      var fragment = document.createDocumentFragment();\n\n      this.nodes.forEach(function (node) { return fragment.appendChild(node); });\n\n      return fragment;\n    },\n    onMutations: function onMutations(mutations) {\n      var this$1 = this;\n\n      // Makes sure the move operation is only done once\n      var shouldMove = false;\n\n      for (var i = 0; i < mutations.length; i++) {\n        var mutation = mutations[i];\n        var filteredAddedNodes = Array.from(mutation.addedNodes).filter(function (node) { return !this$1.nodes.includes(node); });\n\n        if (Array.from(mutation.removedNodes).includes(this.parent)) {\n          this.disable();\n          this.waiting = !this.disabled;\n        } else if (this.waiting && filteredAddedNodes.length > 0) {\n          shouldMove = true;\n        }\n      }\n\n      if (shouldMove) {\n        this.move();\n      }\n    },\n    bootObserver: function bootObserver() {\n      var this$1 = this;\n\n      if (this.observer) {\n        return;\n      }\n\n      this.observer = new MutationObserver(function (mutations) { return this$1.onMutations(mutations); });\n\n      this.observer.observe(document.body, {\n        childList: true,\n        subtree: true,\n        attributes: false,\n        characterData: false,\n      });\n\n      if (this.childObserver) {\n        return;\n      }\n      // watch childNodes change\n      this.childObserver = new MutationObserver(function (mutations) {\n        var childChangeRecord = mutations.find(function (i) { return i.target === this$1.$el; });\n        if (childChangeRecord) {\n          // Remove old nodes before update position.\n          this$1.nodes.forEach(function (node) { return node.parentNode && node.parentNode.removeChild(node); });\n          this$1.nodes = this$1.getComponentChildrenNode();\n          this$1.maybeMove();\n        }\n      });\n\n      this.childObserver.observe(this.$el, {\n        childList: true,\n        subtree: false,\n        attributes: false,\n        characterData: false,\n      });\n    },\n    teardownObserver: function teardownObserver() {\n      if (this.observer) {\n        this.observer.disconnect();\n        this.observer = null;\n      }\n      if (this.childObserver) {\n        this.childObserver.disconnect();\n        this.childObserver = null;\n      }\n    },\n    getComponentChildrenNode: function getComponentChildrenNode() {\n      return this.$vnode.componentOptions.children\n        .map(function (i) { return i.elm; })\n        .filter(function (i) { return i; });\n    },\n  },\n};\n\nfunction normalizeComponent(template, style, script, scopeId, isFunctionalTemplate, moduleIdentifier /* server only */, shadowMode, createInjector, createInjectorSSR, createInjectorShadow) {\r\n    if (typeof shadowMode !== 'boolean') {\r\n        createInjectorSSR = createInjector;\r\n        createInjector = shadowMode;\r\n        shadowMode = false;\r\n    }\r\n    // Vue.extend constructor export interop.\r\n    var options = typeof script === 'function' ? script.options : script;\r\n    // render functions\r\n    if (template && template.render) {\r\n        options.render = template.render;\r\n        options.staticRenderFns = template.staticRenderFns;\r\n        options._compiled = true;\r\n        // functional template\r\n        if (isFunctionalTemplate) {\r\n            options.functional = true;\r\n        }\r\n    }\r\n    // scopedId\r\n    if (scopeId) {\r\n        options._scopeId = scopeId;\r\n    }\r\n    var hook;\r\n    if (moduleIdentifier) {\r\n        // server build\r\n        hook = function (context) {\r\n            // 2.3 injection\r\n            context =\r\n                context || // cached call\r\n                    (this.$vnode && this.$vnode.ssrContext) || // stateful\r\n                    (this.parent && this.parent.$vnode && this.parent.$vnode.ssrContext); // functional\r\n            // 2.2 with runInNewContext: true\r\n            if (!context && typeof __VUE_SSR_CONTEXT__ !== 'undefined') {\r\n                context = __VUE_SSR_CONTEXT__;\r\n            }\r\n            // inject component styles\r\n            if (style) {\r\n                style.call(this, createInjectorSSR(context));\r\n            }\r\n            // register component module identifier for async chunk inference\r\n            if (context && context._registeredComponents) {\r\n                context._registeredComponents.add(moduleIdentifier);\r\n            }\r\n        };\r\n        // used by ssr in case component is cached and beforeCreate\r\n        // never gets called\r\n        options._ssrRegister = hook;\r\n    }\r\n    else if (style) {\r\n        hook = shadowMode\r\n            ? function (context) {\r\n                style.call(this, createInjectorShadow(context, this.$root.$options.shadowRoot));\r\n            }\r\n            : function (context) {\r\n                style.call(this, createInjector(context));\r\n            };\r\n    }\r\n    if (hook) {\r\n        if (options.functional) {\r\n            // register for functional component in vue file\r\n            var originalRender = options.render;\r\n            options.render = function renderWithStyleInjection(h, context) {\r\n                hook.call(context);\r\n                return originalRender(h, context);\r\n            };\r\n        }\r\n        else {\r\n            // inject component registration as beforeCreate hook\r\n            var existing = options.beforeCreate;\r\n            options.beforeCreate = existing ? [].concat(existing, hook) : [hook];\r\n        }\r\n    }\r\n    return script;\r\n}\n\nvar isOldIE = typeof navigator !== 'undefined' &&\r\n    /msie [6-9]\\\\b/.test(navigator.userAgent.toLowerCase());\r\nfunction createInjector(context) {\r\n    return function (id, style) { return addStyle(id, style); };\r\n}\r\nvar HEAD;\r\nvar styles = {};\r\nfunction addStyle(id, css) {\r\n    var group = isOldIE ? css.media || 'default' : id;\r\n    var style = styles[group] || (styles[group] = { ids: new Set(), styles: [] });\r\n    if (!style.ids.has(id)) {\r\n        style.ids.add(id);\r\n        var code = css.source;\r\n        if (css.map) {\r\n            // https://developer.chrome.com/devtools/docs/javascript-debugging\r\n            // this makes source maps inside style tags work properly in Chrome\r\n            code += '\\n/*# sourceURL=' + css.map.sources[0] + ' */';\r\n            // http://stackoverflow.com/a/26603875\r\n            code +=\r\n                '\\n/*# sourceMappingURL=data:application/json;base64,' +\r\n                    btoa(unescape(encodeURIComponent(JSON.stringify(css.map)))) +\r\n                    ' */';\r\n        }\r\n        if (!style.element) {\r\n            style.element = document.createElement('style');\r\n            style.element.type = 'text/css';\r\n            if (css.media)\r\n                { style.element.setAttribute('media', css.media); }\r\n            if (HEAD === undefined) {\r\n                HEAD = document.head || document.getElementsByTagName('head')[0];\r\n            }\r\n            HEAD.appendChild(style.element);\r\n        }\r\n        if ('styleSheet' in style.element) {\r\n            style.styles.push(code);\r\n            style.element.styleSheet.cssText = style.styles\r\n                .filter(Boolean)\r\n                .join('\\n');\r\n        }\r\n        else {\r\n            var index = style.ids.size - 1;\r\n            var textNode = document.createTextNode(code);\r\n            var nodes = style.element.childNodes;\r\n            if (nodes[index])\r\n                { style.element.removeChild(nodes[index]); }\r\n            if (nodes.length)\r\n                { style.element.insertBefore(textNode, nodes[index]); }\r\n            else\r\n                { style.element.appendChild(textNode); }\r\n        }\r\n    }\r\n}\n\n/* script */\nvar __vue_script__ = script;\n\n/* template */\nvar __vue_render__ = function() {\n  var _vm = this;\n  var _h = _vm.$createElement;\n  var _c = _vm._self._c || _h;\n  return _c(\"div\", { class: _vm.classes }, [_vm._t(\"default\")], 2)\n};\nvar __vue_staticRenderFns__ = [];\n__vue_render__._withStripped = true;\n\n  /* style */\n  var __vue_inject_styles__ = function (inject) {\n    if (!inject) { return }\n    inject(\"data-v-50f4b45b_0\", { source: \".hidden[data-v-50f4b45b] {\\n  visibility: hidden;\\n  display: none;\\n}\\n\\n/*# sourceMappingURL=Teleport.vue.map */\", map: {\"version\":3,\"sources\":[\"/home/shodan/Projects/vue2-teleport/src/Teleport.vue\",\"Teleport.vue\"],\"names\":[],\"mappings\":\"AA2LA;EACA,kBAAA;EACA,aAAA;AC1LA;;AAEA,uCAAuC\",\"file\":\"Teleport.vue\",\"sourcesContent\":[\"\\n\\n\\n\\n\\n\",\".hidden {\\n  visibility: hidden;\\n  display: none;\\n}\\n\\n/*# sourceMappingURL=Teleport.vue.map */\"]}, media: undefined });\n\n  };\n  /* scoped */\n  var __vue_scope_id__ = \"data-v-50f4b45b\";\n  /* module identifier */\n  var __vue_module_identifier__ = undefined;\n  /* functional template */\n  var __vue_is_functional_template__ = false;\n  /* style inject SSR */\n  \n  /* style inject shadow dom */\n  \n\n  \n  var __vue_component__ = /*#__PURE__*/normalizeComponent(\n    { render: __vue_render__, staticRenderFns: __vue_staticRenderFns__ },\n    __vue_inject_styles__,\n    __vue_script__,\n    __vue_scope_id__,\n    __vue_is_functional_template__,\n    __vue_module_identifier__,\n    false,\n    createInjector,\n    undefined,\n    undefined\n  );\n\n// Taken from https://vuejs.org/v2/cookbook/packaging-sfc-for-npm.html\n\n// Declare install function executed by Vue.use()\nfunction install (Vue) {\n  if (install.installed) { return; }\n\n  install.installed = true;\n  Vue.component('Teleport', __vue_component__);\n}\n\n// Create module definition for Vue.use()\nvar plugin = {\n  install: install,\n};\n\n// Auto-install when vue is found (eg. in browser via ","import mod from \"-!../vue-loader/lib/index.js??vue-loader-options!./FormatListBulletedSquare.vue?vue&type=script&lang=js\"; export default mod; export * from \"-!../vue-loader/lib/index.js??vue-loader-options!./FormatListBulletedSquare.vue?vue&type=script&lang=js\"","import { render, staticRenderFns } from \"./FormatListBulletedSquare.vue?vue&type=template&id=64cece03\"\nimport script from \"./FormatListBulletedSquare.vue?vue&type=script&lang=js\"\nexport * from \"./FormatListBulletedSquare.vue?vue&type=script&lang=js\"\n\n\n/* normalize component */\nimport normalizer from \"!../vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n  script,\n  render,\n  staticRenderFns,\n  false,\n  null,\n  null,\n  null\n  \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('span',_vm._b({staticClass:\"material-design-icon format-list-bulleted-square-icon\",attrs:{\"aria-hidden\":_vm.title ? null : 'true',\"aria-label\":_vm.title,\"role\":\"img\"},on:{\"click\":function($event){return _vm.$emit('click', $event)}}},'span',_vm.$attrs,false),[_c('svg',{staticClass:\"material-design-icon__svg\",attrs:{\"fill\":_vm.fillColor,\"width\":_vm.size,\"height\":_vm.size,\"viewBox\":\"0 0 24 24\"}},[_c('path',{attrs:{\"d\":\"M3,4H7V8H3V4M9,5V7H21V5H9M3,10H7V14H3V10M9,11V13H21V11H9M3,16H7V20H3V16M9,17V19H21V17H9\"}},[(_vm.title)?_c('title',[_vm._v(_vm._s(_vm.title))]):_vm._e()])])])\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import mod from \"-!../vue-loader/lib/index.js??vue-loader-options!./Reload.vue?vue&type=script&lang=js\"; export default mod; export * from \"-!../vue-loader/lib/index.js??vue-loader-options!./Reload.vue?vue&type=script&lang=js\"","\n\n","import { render, staticRenderFns } from \"./Reload.vue?vue&type=template&id=39a07256\"\nimport script from \"./Reload.vue?vue&type=script&lang=js\"\nexport * from \"./Reload.vue?vue&type=script&lang=js\"\n\n\n/* normalize component */\nimport normalizer from \"!../vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n  script,\n  render,\n  staticRenderFns,\n  false,\n  null,\n  null,\n  null\n  \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('span',_vm._b({staticClass:\"material-design-icon reload-icon\",attrs:{\"aria-hidden\":_vm.title ? null : 'true',\"aria-label\":_vm.title,\"role\":\"img\"},on:{\"click\":function($event){return _vm.$emit('click', $event)}}},'span',_vm.$attrs,false),[_c('svg',{staticClass:\"material-design-icon__svg\",attrs:{\"fill\":_vm.fillColor,\"width\":_vm.size,\"height\":_vm.size,\"viewBox\":\"0 0 24 24\"}},[_c('path',{attrs:{\"d\":\"M2 12C2 16.97 6.03 21 11 21C13.39 21 15.68 20.06 17.4 18.4L15.9 16.9C14.63 18.25 12.86 19 11 19C4.76 19 1.64 11.46 6.05 7.05C10.46 2.64 18 5.77 18 12H15L19 16H19.1L23 12H20C20 7.03 15.97 3 11 3C6.03 3 2 7.03 2 12Z\"}},[(_vm.title)?_c('title',[_vm._v(_vm._s(_vm.title))]):_vm._e()])])])\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import mod from \"-!../vue-loader/lib/index.js??vue-loader-options!./ViewGridOutline.vue?vue&type=script&lang=js\"; export default mod; export * from \"-!../vue-loader/lib/index.js??vue-loader-options!./ViewGridOutline.vue?vue&type=script&lang=js\"","\n\n","import { render, staticRenderFns } from \"./ViewGridOutline.vue?vue&type=template&id=0c2dec16\"\nimport script from \"./ViewGridOutline.vue?vue&type=script&lang=js\"\nexport * from \"./ViewGridOutline.vue?vue&type=script&lang=js\"\n\n\n/* normalize component */\nimport normalizer from \"!../vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n  script,\n  render,\n  staticRenderFns,\n  false,\n  null,\n  null,\n  null\n  \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('span',_vm._b({staticClass:\"material-design-icon view-grid-outline-icon\",attrs:{\"aria-hidden\":_vm.title ? null : 'true',\"aria-label\":_vm.title,\"role\":\"img\"},on:{\"click\":function($event){return _vm.$emit('click', $event)}}},'span',_vm.$attrs,false),[_c('svg',{staticClass:\"material-design-icon__svg\",attrs:{\"fill\":_vm.fillColor,\"width\":_vm.size,\"height\":_vm.size,\"viewBox\":\"0 0 24 24\"}},[_c('path',{attrs:{\"d\":\"M3 11H11V3H3M5 5H9V9H5M13 21H21V13H13M15 15H19V19H15M3 21H11V13H3M5 15H9V19H5M13 3V11H21V3M19 9H15V5H19Z\"}},[(_vm.title)?_c('title',[_vm._v(_vm._s(_vm.title))]):_vm._e()])])])\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","var render = function render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return _c('NcBreadcrumbs',{staticClass:\"files-list__breadcrumbs\",class:{ 'files-list__breadcrumbs--with-progress': _vm.wrapUploadProgressBar },attrs:{\"data-cy-files-content-breadcrumbs\":\"\",\"aria-label\":_vm.t('files', 'Current directory path')},scopedSlots:_vm._u([{key:\"actions\",fn:function(){return [_vm._t(\"actions\")]},proxy:true}],null,true)},_vm._l((_vm.sections),function(section,index){return _c('NcBreadcrumb',_vm._b({key:section.dir,attrs:{\"dir\":\"auto\",\"to\":section.to,\"force-icon-text\":index === 0 && !_vm.isNarrow,\"force-menu\":\"\",\"open\":_vm.isMenuOpen,\"title\":_vm.titleForSection(index, section),\"aria-description\":_vm.ariaForSection(section)},on:{\"update:open\":function($event){_vm.isMenuOpen=$event},\"drop\":function($event){return _vm.onDrop($event, section.dir)}},nativeOn:{\"dragover\":function($event){return _vm.onDragOver($event, section.dir)}},scopedSlots:_vm._u([(index === 0)?{key:\"icon\",fn:function(){return [_c('NcIconSvgWrapper',{attrs:{\"size\":20,\"svg\":_vm.viewIcon}})]},proxy:true}:null,(index === _vm.sections.length - 1)?{key:\"menu-icon\",fn:function(){return [_c('NcIconSvgWrapper',{attrs:{\"path\":_vm.isMenuOpen ? _vm.mdiChevronUp : _vm.mdiChevronDown}})]},proxy:true}:null,(index === _vm.sections.length - 1)?{key:\"default\",fn:function(){return [(_vm.canShare)?_c('NcActionButton',{attrs:{\"close-after-click\":\"\"},on:{\"click\":_vm.openSharingSidebar},scopedSlots:_vm._u([{key:\"icon\",fn:function(){return [_c('NcIconSvgWrapper',{attrs:{\"path\":_vm.mdiAccountPlus}})]},proxy:true}],null,true)},[_vm._v(\"\\n\\t\\t\\t\\t\"+_vm._s(_vm.t('files', 'Share'))+\"\\n\\t\\t\\t\")]):_vm._e(),_vm._v(\" \"),_c('NcActionButton',{attrs:{\"close-after-click\":\"\"},on:{\"click\":function($event){return _vm.$emit('reload')}},scopedSlots:_vm._u([{key:\"icon\",fn:function(){return [_c('NcIconSvgWrapper',{attrs:{\"path\":_vm.mdiReload}})]},proxy:true}],null,true)},[_vm._v(\"\\n\\t\\t\\t\\t\"+_vm._s(_vm.t('files', 'Reload content'))+\"\\n\\t\\t\\t\")])]},proxy:true}:null],null,true)},'NcBreadcrumb',section,false))}),1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","/*!\n * SPDX-FileCopyrightText: 2024 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\nimport { computed, onMounted, readonly, ref } from 'vue';\n/** The element we observe */\nlet element;\n/** The current width of the element */\nconst width = ref(0);\nconst isWide = computed(() => width.value >= 1024);\nconst isMedium = computed(() => width.value >= 512 && width.value < 1024);\nconst isNarrow = computed(() => width.value < 512);\nconst observer = new ResizeObserver(([element]) => {\n    if (!element) {\n        return;\n    }\n    const contentBoxSize = element.contentBoxSize?.[0];\n    if (contentBoxSize) {\n        // use the newer `contentBoxSize` property if available\n        width.value = contentBoxSize.inlineSize;\n    }\n    else {\n        // fall back to `contentRect`\n        width.value = element.contentRect.width;\n    }\n});\n/**\n * Update the observed element if needed and reconfigure the observer\n */\nfunction updateObserver() {\n    const el = document.querySelector('#app-content-vue') ?? document.body;\n    if (el !== element) {\n        // if already observing: stop observing the old element\n        if (element) {\n            observer.unobserve(element);\n        }\n        // observe the new element if needed\n        observer.observe(el);\n        element = el;\n    }\n}\n/**\n * Get the reactive width of the file list\n */\nexport function useFileListWidth() {\n    // Update the observer when the component is mounted (e.g. because this is the files app)\n    onMounted(updateObserver);\n    // Update the observer also in setup context, so we already have an initial value\n    updateObserver();\n    return {\n        width: readonly(width),\n        isWide,\n        isMedium,\n        isNarrow,\n    };\n}\n","/*!\n * SPDX-FileCopyrightText: 2026 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\nimport { getNavigation } from '@nextcloud/files';\nimport { computed, shallowRef } from 'vue';\nconst allViews = shallowRef([]);\nconst visibleViews = computed(() => allViews.value?.filter((view) => !view.hidden) ?? []);\nlet initialized = false;\n/**\n * Get all currently registered views.\n * Unline `Navigation.views` this is reactive and will update when new views are added or existing views are removed.\n */\nexport function useViews() {\n    if (!initialized) {\n        const navigation = getNavigation();\n        navigation.addEventListener('update', () => {\n            allViews.value = [...navigation.views];\n        });\n        allViews.value = [...navigation.views];\n        initialized = true;\n    }\n    return allViews;\n}\n/**\n * Get all non-hidden views.\n */\nexport function useVisibleViews() {\n    useViews();\n    return visibleViews;\n}\n","/*!\n * SPDX-FileCopyrightText: 2023 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\nimport { Permission } from '@nextcloud/files';\nimport { loadState } from '@nextcloud/initial-state';\nimport { isPublicShare } from '@nextcloud/sharing/public';\nimport PQueue from 'p-queue';\nconst sharePermissions = loadState('files_sharing', 'sharePermissions', Permission.NONE);\n// This is the processing queue. We only want to allow 3 concurrent requests\nlet queue;\n// Maximum number of concurrent operations\nconst MAX_CONCURRENCY = 5;\n/**\n * Get the processing queue\n */\nexport function getQueue() {\n    if (!queue) {\n        queue = new PQueue({ concurrency: MAX_CONCURRENCY });\n    }\n    return queue;\n}\nexport var MoveCopyAction;\n(function (MoveCopyAction) {\n    MoveCopyAction[\"MOVE\"] = \"Move\";\n    MoveCopyAction[\"COPY\"] = \"Copy\";\n    MoveCopyAction[\"MOVE_OR_COPY\"] = \"move-or-copy\";\n})(MoveCopyAction || (MoveCopyAction = {}));\n/**\n * Check if the given nodes can be moved\n *\n * @param nodes - The nodes to check\n */\nexport function canMove(nodes) {\n    const minPermission = nodes.reduce((min, node) => Math.min(min, node.permissions), Permission.ALL);\n    return Boolean(minPermission & Permission.DELETE);\n}\n/**\n * Check if the given nodes can be downloaded\n *\n * @param nodes - The nodes to check\n */\nexport function canDownload(nodes) {\n    return nodes.every((node) => {\n        const shareAttributes = JSON.parse(node.attributes?.['share-attributes'] ?? '[]');\n        return !shareAttributes.some((attribute) => attribute.scope === 'permissions' && attribute.value === false && attribute.key === 'download');\n    });\n}\n/**\n * Check if the given nodes can be copied\n *\n * @param nodes - The nodes to check\n */\nexport function canCopy(nodes) {\n    // a shared file cannot be copied if the download is disabled\n    if (!canDownload(nodes)) {\n        return false;\n    }\n    // it cannot be copied if the user has only view permissions\n    if (nodes.some((node) => node.permissions === Permission.NONE)) {\n        return false;\n    }\n    // on public shares all files have the same permission so copy is only possible if write permission is granted\n    if (isPublicShare()) {\n        return Boolean(sharePermissions & Permission.CREATE);\n    }\n    // otherwise permission is granted\n    return true;\n}\n","/*!\n * SPDX-FileCopyrightText: 2023 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\nimport FolderMoveSvg from '@mdi/svg/svg/folder-move-outline.svg?raw';\nimport CopyIconSvg from '@mdi/svg/svg/folder-multiple-outline.svg?raw';\nimport { isAxiosError } from '@nextcloud/axios';\nimport { FilePickerClosed, getFilePickerBuilder, openConflictPicker, showError, showLoading } from '@nextcloud/dialogs';\nimport { emit } from '@nextcloud/event-bus';\nimport { FileType, getUniqueName, NodeStatus, Permission } from '@nextcloud/files';\nimport { defaultRootPath, getClient, getDefaultPropfind, resultToNode } from '@nextcloud/files/dav';\nimport { t } from '@nextcloud/l10n';\nimport { getConflicts } from '@nextcloud/upload';\nimport { basename, join } from 'path';\nimport Vue from 'vue';\nimport logger from '../logger.ts';\nimport { getContents } from '../services/Files.ts';\nimport { canCopy, canMove, getQueue, MoveCopyAction } from './moveOrCopyActionUtils.ts';\n/**\n * Exception to hint the user about something.\n * The message is intended to be shown to the user.\n */\nexport class HintException extends Error {\n}\nexport const ACTION_COPY_MOVE = 'move-copy';\nexport const action = {\n    id: ACTION_COPY_MOVE,\n    order: 15,\n    displayName({ nodes }) {\n        switch (getActionForNodes(nodes)) {\n            case MoveCopyAction.MOVE:\n                return t('files', 'Move');\n            case MoveCopyAction.COPY:\n                return t('files', 'Copy');\n            case MoveCopyAction.MOVE_OR_COPY:\n                return t('files', 'Move or copy');\n        }\n    },\n    iconSvgInline: () => FolderMoveSvg,\n    enabled({ nodes, view }) {\n        // We can not copy or move in single file shares\n        if (view.id === 'public-file-share') {\n            return false;\n        }\n        // We only support moving/copying files within the user folder\n        if (!nodes.every((node) => node.root?.startsWith('/files/'))) {\n            return false;\n        }\n        return nodes.length > 0 && (canMove(nodes) || canCopy(nodes));\n    },\n    async exec(context) {\n        return this.execBatch(context)[0];\n    },\n    async execBatch({ nodes, folder }) {\n        const action = getActionForNodes(nodes);\n        const target = await openFilePickerForAction(action, folder.path, nodes);\n        // Handle cancellation silently\n        if (target === false) {\n            return nodes.map(() => null);\n        }\n        try {\n            const result = await Array.fromAsync(handleCopyMoveNodesTo(nodes, target.destination, target.action));\n            return result.map(() => true);\n        }\n        catch (error) {\n            logger.error(`Failed to ${target.action} node`, { nodes, error });\n            if (error instanceof HintException && !!error.message) {\n                showError(error.message);\n                // Silent action as we handle the toast\n                return nodes.map(() => null);\n            }\n            // We need to keep the selection on error!\n            // So we do not return null, and for batch action\n            return nodes.map(() => false);\n        }\n    },\n};\n/**\n * Handle the copy/move of a node to a destination\n * This can be imported and used by other scripts/components on server\n *\n * @param nodes The nodes to copy/move\n * @param destination The destination to copy/move the nodes to\n * @param method The method to use for the copy/move\n * @param overwrite Whether to overwrite the destination if it exists\n * @yields {AsyncGenerator} A promise that resolves when the copy/move is done\n */\nexport async function* handleCopyMoveNodesTo(nodes, destination, method, overwrite = false) {\n    if (!destination) {\n        return;\n    }\n    if (destination.type !== FileType.Folder) {\n        throw new Error(t('files', 'Destination is not a folder'));\n    }\n    // Do not allow to MOVE a node to the same folder it is already located\n    if (method === MoveCopyAction.MOVE && nodes.some((node) => node.dirname === destination.path)) {\n        throw new Error(t('files', 'This file/folder is already in that directory'));\n    }\n    /**\n     * Example:\n     * - node: /foo/bar/file.txt -> path = /foo/bar/file.txt, destination: /foo\n     *   Allow move of /foo does not start with /foo/bar/file.txt so allow\n     * - node: /foo , destination: /foo/bar\n     *   Do not allow as it would copy foo within itself\n     * - node: /foo/bar.txt, destination: /foo\n     *   Allow copy a file to the same directory\n     * - node: \"/foo/bar\", destination: \"/foo/bar 1\"\n     *   Allow to move or copy but we need to check with trailing / otherwise it would report false positive\n     */\n    if (nodes.some((node) => `${destination.path}/`.startsWith(`${node.path}/`))) {\n        throw new Error(t('files', 'You cannot move a file/folder onto itself or into a subfolder of itself'));\n    }\n    const nameMapping = new Map();\n    // Check for conflicts if we do not want to overwrite\n    if (!overwrite) {\n        const otherNodes = (await getContents(destination.path)).contents;\n        const conflicts = getConflicts(nodes, otherNodes);\n        const nodesToRename = [];\n        if (conflicts.length > 0) {\n            if (method === MoveCopyAction.MOVE) {\n                // Let the user choose what to do with the conflicting files\n                const content = otherNodes.filter((n) => conflicts.some((c) => c.basename === n.basename));\n                const result = await openConflictPicker(destination.path, conflicts, content);\n                if (!result) {\n                    // User cancelled\n                    return;\n                }\n                nodes = nodes.filter((n) => !result.skipped.includes(n));\n                nodesToRename.push(...result.renamed);\n            }\n            else {\n                // for COPY we always rename conflicting files\n                nodesToRename.push(...conflicts);\n            }\n            const usedNames = [...otherNodes, ...nodes.filter((n) => !conflicts.includes(n))].map((n) => n.basename);\n            for (const node of nodesToRename) {\n                const newName = getUniqueName(node.basename, usedNames, { ignoreFileExtension: node.type === FileType.Folder });\n                nameMapping.set(node.source, newName);\n                usedNames.push(newName); // add the new name to avoid duplicates for following re-namimgs\n            }\n        }\n    }\n    const actionFinished = createLoadingNotification(method, nodes.map((node) => node.basename), destination.path);\n    const queue = getQueue();\n    try {\n        for (const node of nodes) {\n            // Set loading state\n            Vue.set(node, 'status', NodeStatus.LOADING);\n            yield queue.add(async () => {\n                try {\n                    const client = getClient();\n                    const currentPath = join(defaultRootPath, node.path);\n                    const destinationPath = join(defaultRootPath, destination.path, nameMapping.get(node.source) ?? node.basename);\n                    if (method === MoveCopyAction.COPY) {\n                        await client.copyFile(currentPath, destinationPath);\n                        // If the node is copied into current directory the view needs to be updated\n                        if (node.dirname === destination.path) {\n                            const { data } = await client.stat(destinationPath, {\n                                details: true,\n                                data: getDefaultPropfind(),\n                            });\n                            emit('files:node:created', resultToNode(data));\n                        }\n                    }\n                    else {\n                        await client.moveFile(currentPath, destinationPath);\n                        // Delete the node as it will be fetched again\n                        // when navigating to the destination folder\n                        emit('files:node:deleted', node);\n                    }\n                }\n                catch (error) {\n                    logger.debug(`Error while trying to ${method === MoveCopyAction.COPY ? 'copy' : 'move'} node`, { node, error });\n                    if (isAxiosError(error)) {\n                        if (error.response?.status === 412) {\n                            throw new HintException(t('files', 'A file or folder with that name already exists in this folder'));\n                        }\n                        else if (error.response?.status === 423) {\n                            throw new HintException(t('files', 'The files are locked'));\n                        }\n                        else if (error.response?.status === 404) {\n                            throw new HintException(t('files', 'The file does not exist anymore'));\n                        }\n                        else if ('response' in error && error.response) {\n                            const parser = new DOMParser();\n                            const text = await error.response.text();\n                            const message = parser.parseFromString(text ?? '', 'text/xml')\n                                .querySelector('message')?.textContent;\n                            if (message) {\n                                throw new HintException(message);\n                            }\n                        }\n                    }\n                    throw error;\n                }\n                finally {\n                    Vue.set(node, 'status', undefined);\n                }\n            });\n        }\n    }\n    finally {\n        actionFinished();\n    }\n}\n/**\n * Return the action that is possible for the given nodes\n *\n * @param nodes The nodes to check against\n * @return The action that is possible for the given nodes\n */\nfunction getActionForNodes(nodes) {\n    if (canMove(nodes)) {\n        if (canCopy(nodes)) {\n            return MoveCopyAction.MOVE_OR_COPY;\n        }\n        return MoveCopyAction.MOVE;\n    }\n    // Assuming we can copy as the enabled checks for copy permissions\n    return MoveCopyAction.COPY;\n}\n/**\n * Create a loading notification toast\n *\n * @param mode The move or copy mode\n * @param sources Names of the nodes that are copied / moved\n * @param destination Destination path\n * @return Function to hide the notification\n */\nfunction createLoadingNotification(mode, sources, destination) {\n    const text = mode === MoveCopyAction.MOVE\n        ? (sources.length === 1\n            ? t('files', 'Moving \"{source}\" to \"{destination}\" …', { source: sources[0], destination })\n            : t('files', 'Moving {count} files to \"{destination}\" …', { count: sources.length, destination }))\n        : (sources.length === 1\n            ? t('files', 'Copying \"{source}\" to \"{destination}\" …', { source: sources[0], destination })\n            : t('files', 'Copying {count} files to \"{destination}\" …', { count: sources.length, destination }));\n    const toast = showLoading(text);\n    return () => toast && toast.hideToast();\n}\n/**\n * Open a file picker for the given action\n *\n * @param action The action to open the file picker for\n * @param dir The directory to start the file picker in\n * @param nodes The nodes to move/copy\n * @return The picked destination or false if cancelled by user\n */\nasync function openFilePickerForAction(action, dir = '/', nodes) {\n    const { resolve, reject, promise } = Promise.withResolvers();\n    const fileIDs = nodes.map((node) => node.fileid).filter(Boolean);\n    const filePicker = getFilePickerBuilder(t('files', 'Choose destination'))\n        .allowDirectories(true)\n        .setFilter((n) => {\n        // We don't want to show the current nodes in the file picker\n        return !fileIDs.includes(n.fileid);\n    })\n        .setCanPick((n) => {\n        const hasCreatePermissions = (n.permissions & Permission.CREATE) === Permission.CREATE;\n        return hasCreatePermissions;\n    })\n        .setMimeTypeFilter([])\n        .setMultiSelect(false)\n        .startAt(dir)\n        .setButtonFactory((selection, path) => {\n        const buttons = [];\n        const target = basename(path);\n        const dirnames = nodes.map((node) => node.dirname);\n        const paths = nodes.map((node) => node.path);\n        if (action === MoveCopyAction.COPY || action === MoveCopyAction.MOVE_OR_COPY) {\n            buttons.push({\n                label: target ? t('files', 'Copy to {target}', { target }, { escape: false, sanitize: false }) : t('files', 'Copy'),\n                variant: 'primary',\n                icon: CopyIconSvg,\n                async callback(destination) {\n                    resolve({\n                        destination: destination[0],\n                        action: MoveCopyAction.COPY,\n                    });\n                },\n            });\n        }\n        // Invalid MOVE targets (but valid copy targets)\n        if (dirnames.includes(path)) {\n            // This file/folder is already in that directory\n            return buttons;\n        }\n        if (paths.includes(path)) {\n            // You cannot move a file/folder onto itself\n            return buttons;\n        }\n        if (selection.some((node) => (node.permissions & Permission.CREATE) === 0)) {\n            // Missing 'CREATE' permissions for selected destination\n            return buttons;\n        }\n        if (action === MoveCopyAction.MOVE || action === MoveCopyAction.MOVE_OR_COPY) {\n            buttons.push({\n                label: target ? t('files', 'Move to {target}', { target }, undefined, { escape: false, sanitize: false }) : t('files', 'Move'),\n                variant: action === MoveCopyAction.MOVE ? 'primary' : 'secondary',\n                icon: FolderMoveSvg,\n                async callback(destination) {\n                    resolve({\n                        destination: destination[0],\n                        action: MoveCopyAction.MOVE,\n                    });\n                },\n            });\n        }\n        return buttons;\n    })\n        .build();\n    filePicker.pick()\n        .catch((error) => {\n        logger.debug(error);\n        if (error instanceof FilePickerClosed) {\n            resolve(false);\n        }\n        else {\n            reject(new Error(t('files', 'Move or copy operation failed')));\n        }\n    });\n    return promise;\n}\n","/*!\n * SPDX-FileCopyrightText: 2024 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\nimport { showInfo, showWarning } from '@nextcloud/dialogs';\nimport { emit } from '@nextcloud/event-bus';\nimport { defaultRemoteURL, defaultRootPath, getClient, getDefaultPropfind, resultToNode } from '@nextcloud/files/dav';\nimport { t } from '@nextcloud/l10n';\nimport { join } from '@nextcloud/paths';\nimport { openConflictPicker } from '@nextcloud/upload';\nimport logger from '../logger.ts';\n/**\n * This represents a Directory in the file tree\n * We extend the File class to better handling uploading\n * and stay as close as possible as the Filesystem API.\n * This also allow us to hijack the size or lastModified\n * properties to compute them dynamically.\n */\nexport class Directory extends File {\n    _contents;\n    constructor(name, contents = []) {\n        super([], name, { type: 'httpd/unix-directory' });\n        this._contents = contents;\n    }\n    set contents(contents) {\n        this._contents = contents;\n    }\n    get contents() {\n        return this._contents;\n    }\n    get size() {\n        return this._computeDirectorySize(this);\n    }\n    get lastModified() {\n        if (this._contents.length === 0) {\n            return Date.now();\n        }\n        return this._computeDirectoryMtime(this);\n    }\n    /**\n     * Get the last modification time of a file tree\n     * This is not perfect, but will get us a pretty good approximation\n     *\n     * @param directory the directory to traverse\n     */\n    _computeDirectoryMtime(directory) {\n        return directory.contents.reduce((acc, file) => {\n            return file.lastModified > acc\n                // If the file is a directory, the lastModified will\n                // also return the results of its _computeDirectoryMtime method\n                // Fancy recursion, huh?\n                ? file.lastModified\n                : acc;\n        }, 0);\n    }\n    /**\n     * Get the size of a file tree\n     *\n     * @param directory the directory to traverse\n     */\n    _computeDirectorySize(directory) {\n        return directory.contents.reduce((acc, entry) => {\n            // If the file is a directory, the size will\n            // also return the results of its _computeDirectorySize method\n            // Fancy recursion, huh?\n            return acc + entry.size;\n        }, 0);\n    }\n}\n/**\n * Traverse a file tree using the Filesystem API\n *\n * @param entry the entry to traverse\n */\nexport async function traverseTree(entry) {\n    // Handle file\n    if (entry.isFile) {\n        return new Promise((resolve, reject) => {\n            entry.file(resolve, reject);\n        });\n    }\n    // Handle directory\n    logger.debug('Handling recursive file tree', { entry: entry.name });\n    const directory = entry;\n    const entries = await readDirectory(directory);\n    const contents = (await Promise.all(entries.map(traverseTree))).flat();\n    return new Directory(directory.name, contents);\n}\n/**\n * Read a directory using Filesystem API\n *\n * @param directory the directory to read\n */\nfunction readDirectory(directory) {\n    const dirReader = directory.createReader();\n    return new Promise((resolve, reject) => {\n        const entries = [];\n        const getEntries = () => {\n            dirReader.readEntries((results) => {\n                if (results.length) {\n                    entries.push(...results);\n                    getEntries();\n                }\n                else {\n                    resolve(entries);\n                }\n            }, (error) => {\n                reject(error);\n            });\n        };\n        getEntries();\n    });\n}\n/**\n * @param path - The path relative to the dav root\n */\nexport async function createDirectoryIfNotExists(path) {\n    const davUrl = join(defaultRemoteURL, defaultRootPath);\n    const davClient = getClient(davUrl);\n    const dirExists = await davClient.exists(path);\n    if (!dirExists) {\n        logger.debug('Directory does not exist, creating it', { path });\n        await davClient.createDirectory(path, { recursive: true });\n        const stat = await davClient.stat(path, { details: true, data: getDefaultPropfind() });\n        emit('files:node:created', resultToNode(stat.data, defaultRootPath, davUrl));\n    }\n}\n/**\n * Resolve conflicts between existing files and incoming files\n *\n * @param files - incoming files\n * @param destination - destination folder\n * @param contents - existing contents of the destination folder\n */\nexport async function resolveConflict(files, destination, contents) {\n    try {\n        // List all conflicting files\n        const conflicts = files.filter((file) => {\n            return contents.find((node) => node.basename === (file instanceof File ? file.name : file.basename));\n        }).filter(Boolean);\n        // List of incoming files that are NOT in conflict\n        const uploads = files.filter((file) => {\n            return !conflicts.includes(file);\n        });\n        // Let the user choose what to do with the conflicting files\n        const { selected, renamed } = await openConflictPicker(destination.path, conflicts, contents);\n        logger.debug('Conflict resolution', { uploads, selected, renamed });\n        // If the user selected nothing, we cancel the upload\n        if (selected.length === 0 && renamed.length === 0 && uploads.length === 0) {\n            // User skipped\n            showInfo(t('files', 'Conflicts resolution skipped'));\n            logger.info('User skipped the conflict resolution');\n            return [];\n        }\n        // Update the list of files to upload\n        return [...uploads, ...selected, ...renamed];\n    }\n    catch (error) {\n        // User cancelled\n        logger.warn('User cancelled the upload', { error });\n        showWarning(t('files', 'Upload cancelled'));\n    }\n    return [];\n}\n","/*!\n * SPDX-FileCopyrightText: 2023 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\nimport { showError, showInfo, showSuccess, showWarning } from '@nextcloud/dialogs';\nimport { t } from '@nextcloud/l10n';\nimport { join } from '@nextcloud/paths';\nimport { getUploader, hasConflict } from '@nextcloud/upload';\nimport { handleCopyMoveNodesTo, HintException } from '../actions/moveOrCopyAction.ts';\nimport { MoveCopyAction } from '../actions/moveOrCopyActionUtils.ts';\nimport logger from '../logger.ts';\nimport { createDirectoryIfNotExists, Directory, resolveConflict, traverseTree } from './DropServiceUtils.ts';\n/**\n * This function converts a list of DataTransferItems to a file tree.\n * It uses the Filesystem API if available, otherwise it falls back to the File API.\n * The File API will NOT be available if the browser is not in a secure context (e.g. HTTP).\n * ⚠️ When using this method, you need to use it as fast as possible, as the DataTransferItems\n * will be cleared after the first access to the props of one of the entries.\n *\n * @param items the list of DataTransferItems\n */\nexport async function dataTransferToFileTree(items) {\n    // Check if the browser supports the Filesystem API\n    // We need to cache the entries to prevent Blink engine bug that clears\n    // the list (`data.items`) after first access props of one of the entries\n    const entries = items\n        .filter((item) => {\n        if (item.kind !== 'file') {\n            logger.debug('Skipping dropped item', { kind: item.kind, type: item.type });\n            return false;\n        }\n        return true;\n    }).map((item) => {\n        // MDN recommends to try both, as it might be renamed in the future\n        return item?.getAsEntry?.()\n            ?? item?.webkitGetAsEntry?.()\n            ?? item;\n    });\n    let warned = false;\n    const fileTree = new Directory('root');\n    // Traverse the file tree\n    for (const entry of entries) {\n        // Handle browser issues if Filesystem API is not available. Fallback to File API\n        if (entry instanceof DataTransferItem) {\n            logger.warn('Could not get FilesystemEntry of item, falling back to file');\n            const file = entry.getAsFile();\n            if (file === null) {\n                logger.warn('Could not process DataTransferItem', { type: entry.type, kind: entry.kind });\n                showError(t('files', 'One of the dropped files could not be processed'));\n                continue;\n            }\n            // Warn the user that the browser does not support the Filesystem API\n            // we therefore cannot upload directories recursively.\n            if (file.type === 'httpd/unix-directory' || !file.type) {\n                if (!warned) {\n                    logger.warn('Browser does not support Filesystem API. Directories will not be uploaded');\n                    showWarning(t('files', 'Your browser does not support the Filesystem API. Directories will not be uploaded'));\n                    warned = true;\n                }\n                continue;\n            }\n            fileTree.contents.push(file);\n            continue;\n        }\n        // Use Filesystem API\n        try {\n            fileTree.contents.push(await traverseTree(entry));\n        }\n        catch (error) {\n            // Do not throw, as we want to continue with the other files\n            logger.error('Error while traversing file tree', { error });\n        }\n    }\n    return fileTree;\n}\n/**\n * Handle dropping external files\n *\n * @param root - The root directory which should be uploaded\n * @param destination - The destination folder\n * @param contents - The contents of the destination folder\n */\nexport async function onDropExternalFiles(root, destination, contents) {\n    const uploader = getUploader();\n    // Check for conflicts on root elements\n    if (await hasConflict(root.contents, contents)) {\n        root.contents = await resolveConflict(root.contents, destination, contents);\n        if (root.contents.length === 0) {\n            // user cancelled the upload\n            return [];\n        }\n    }\n    else if (root.contents.length === 0) {\n        logger.info('No files to upload', { root });\n        showInfo(t('files', 'No files to upload'));\n        return [];\n    }\n    // Let's process the files\n    logger.debug(`Uploading files to ${destination.path}`, { root, contents: root.contents });\n    const queue = [];\n    const uploadDirectoryContents = async (directory, path) => {\n        for (const file of directory.contents) {\n            // This is the relative path to the resource\n            // from the current uploader destination\n            const relativePath = join(path, file.name);\n            // If the file is a directory, we need to create it first\n            // then browse its tree and upload its contents.\n            if (file instanceof Directory) {\n                try {\n                    logger.debug('Processing directory', { relativePath });\n                    await createDirectoryIfNotExists(relativePath);\n                    await uploadDirectoryContents(file, relativePath);\n                }\n                catch (error) {\n                    showError(t('files', 'Unable to create the directory {directory}', { directory: file.name }));\n                    logger.error('Unable to create the directory', { error, relativePath, directory: file });\n                }\n                continue;\n            }\n            // If we've reached a file, we can upload it\n            logger.debug('Uploading file to ' + join(destination.path, relativePath), { file });\n            // Overriding the root to avoid changing the current uploader context\n            queue.push(uploader.upload(relativePath, file, destination.source));\n        }\n    };\n    // Pause the uploader to prevent it from starting\n    // while we compute the queue\n    uploader.pause();\n    // Upload the files. Using '/' as the starting point\n    // as we already adjusted the uploader destination\n    await uploadDirectoryContents(root, '/');\n    uploader.start();\n    // Wait for all promises to settle\n    const results = await Promise.allSettled(queue);\n    // Check for errors\n    const errors = results.filter((result) => result.status === 'rejected');\n    if (errors.length > 0) {\n        logger.error('Error while uploading files', { errors });\n        showError(t('files', 'Some files could not be uploaded'));\n        return [];\n    }\n    logger.debug('Files uploaded successfully');\n    showSuccess(t('files', 'Files uploaded successfully'));\n    return Promise.all(queue);\n}\n/**\n * Handle dropping internal files\n *\n * @param nodes - The nodes being dropped\n * @param destination - The destination folder\n * @param contents - The contents of the destination folder\n * @param isCopy - Whether the operation is a copy\n */\nexport async function onDropInternalFiles(nodes, destination, contents, isCopy = false) {\n    // Check for conflicts on root elements\n    if (await hasConflict(nodes, contents)) {\n        nodes = await resolveConflict(nodes, destination, contents);\n    }\n    if (nodes.length === 0) {\n        logger.info('No files to process', { nodes });\n        showInfo(t('files', 'No files to process'));\n        return;\n    }\n    try {\n        const promises = Array.fromAsync(handleCopyMoveNodesTo(nodes, destination, isCopy ? MoveCopyAction.COPY : MoveCopyAction.MOVE));\n        await promises;\n        logger.debug('Files copy/move successful');\n        showSuccess(isCopy ? t('files', 'Files copied successfully') : t('files', 'Files moved successfully'));\n    }\n    catch (error) {\n        logger.error('Error while processing dropped files', { error });\n        if (error instanceof HintException) {\n            showError(error.message);\n        }\n        else {\n            showError(isCopy ? t('files', 'Some files could not be copied') : t('files', 'Some files could not be moved'));\n        }\n    }\n}\n","/**\n * SPDX-FileCopyrightText: 2023 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\nimport { defineStore } from 'pinia';\nimport Vue from 'vue';\nexport const useDragAndDropStore = defineStore('dragging', {\n    state: () => ({\n        dragging: [],\n    }),\n    actions: {\n        /**\n         * Set the selection of files being dragged currently\n         *\n         * @param selection array of node sources\n         */\n        set(selection = []) {\n            Vue.set(this, 'dragging', selection);\n        },\n        /**\n         * Reset the selection\n         */\n        reset() {\n            Vue.set(this, 'dragging', []);\n        },\n    },\n});\n","/**\n * SPDX-FileCopyrightText: 2023 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\nimport { defineStore } from 'pinia';\nimport Vue from 'vue';\nexport const useSelectionStore = defineStore('selection', {\n    state: () => ({\n        selected: [],\n        lastSelection: [],\n        lastSelectedIndex: null,\n    }),\n    actions: {\n        /**\n         * Set the selection of fileIds\n         *\n         * @param selection\n         */\n        set(selection = []) {\n            Vue.set(this, 'selected', [...new Set(selection)]);\n        },\n        /**\n         * Set the last selected index\n         *\n         * @param lastSelectedIndex\n         */\n        setLastIndex(lastSelectedIndex = null) {\n            // Update the last selection if we provided a new selection starting point\n            Vue.set(this, 'lastSelection', lastSelectedIndex ? this.selected : []);\n            Vue.set(this, 'lastSelectedIndex', lastSelectedIndex);\n        },\n        /**\n         * Reset the selection\n         */\n        reset() {\n            Vue.set(this, 'selected', []);\n            Vue.set(this, 'lastSelection', []);\n            Vue.set(this, 'lastSelectedIndex', null);\n        },\n    },\n});\n","/**\n * SPDX-FileCopyrightText: 2023 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\nimport { getUploader } from '@nextcloud/upload';\nimport { defineStore } from 'pinia';\nlet uploader;\n/**\n *\n * @param args\n */\nexport function useUploaderStore(...args) {\n    // Only init on runtime\n    uploader = getUploader();\n    const store = defineStore('uploader', {\n        state: () => ({\n            queue: uploader.queue,\n        }),\n    });\n    return store(...args);\n}\n","import mod from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/ts-loader/index.js??clonedRuleSet-6.use[1]!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./BreadCrumbs.vue?vue&type=script&lang=ts\"; export default mod; export * from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/ts-loader/index.js??clonedRuleSet-6.use[1]!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./BreadCrumbs.vue?vue&type=script&lang=ts\"","\n      import API from \"!../../../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\";\n      import domAPI from \"!../../../../node_modules/style-loader/dist/runtime/styleDomAPI.js\";\n      import insertFn from \"!../../../../node_modules/style-loader/dist/runtime/insertBySelector.js\";\n      import setAttributes from \"!../../../../node_modules/style-loader/dist/runtime/setAttributesWithoutAttributes.js\";\n      import insertStyleElement from \"!../../../../node_modules/style-loader/dist/runtime/insertStyleElement.js\";\n      import styleTagTransformFn from \"!../../../../node_modules/style-loader/dist/runtime/styleTagTransform.js\";\n      import content, * as namedExport from \"!!../../../../node_modules/css-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/sass-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./BreadCrumbs.vue?vue&type=style&index=0&id=86e9be62&prod&lang=scss&scoped=true\";\n      \n      \n\nvar options = {};\n\noptions.styleTagTransform = styleTagTransformFn;\noptions.setAttributes = setAttributes;\noptions.insert = insertFn.bind(null, \"head\");\noptions.domAPI = domAPI;\noptions.insertStyleElement = insertStyleElement;\n\nvar update = API(content, options);\n\n\n\nexport * from \"!!../../../../node_modules/css-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/sass-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./BreadCrumbs.vue?vue&type=style&index=0&id=86e9be62&prod&lang=scss&scoped=true\";\n       export default content && content.locals ? content.locals : undefined;\n","import { render, staticRenderFns } from \"./BreadCrumbs.vue?vue&type=template&id=86e9be62&scoped=true\"\nimport script from \"./BreadCrumbs.vue?vue&type=script&lang=ts\"\nexport * from \"./BreadCrumbs.vue?vue&type=script&lang=ts\"\nimport style0 from \"./BreadCrumbs.vue?vue&type=style&index=0&id=86e9be62&prod&lang=scss&scoped=true\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n  script,\n  render,\n  staticRenderFns,\n  false,\n  null,\n  \"86e9be62\",\n  null\n  \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return _c('div',{directives:[{name:\"show\",rawName:\"v-show\",value:(_vm.dragover),expression:\"dragover\"}],staticClass:\"files-list__drag-drop-notice\",attrs:{\"data-cy-files-drag-drop-area\":\"\"},on:{\"drop\":_vm.onDrop}},[_c('div',{staticClass:\"files-list__drag-drop-notice-wrapper\"},[(_vm.canUpload && !_vm.isQuotaExceeded)?[_c('TrayArrowDownIcon',{attrs:{\"size\":48}}),_vm._v(\" \"),_c('h3',{staticClass:\"files-list-drag-drop-notice__title\"},[_vm._v(\"\\n\\t\\t\\t\\t\"+_vm._s(_vm.t('files', 'Drag and drop files here to upload'))+\"\\n\\t\\t\\t\")])]:[_c('h3',{staticClass:\"files-list-drag-drop-notice__title\"},[_vm._v(\"\\n\\t\\t\\t\\t\"+_vm._s(_vm.cantUploadLabel)+\"\\n\\t\\t\\t\")])]],2)])\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n\n","import mod from \"-!../vue-loader/lib/index.js??vue-loader-options!./TrayArrowDown.vue?vue&type=script&lang=js\"; export default mod; export * from \"-!../vue-loader/lib/index.js??vue-loader-options!./TrayArrowDown.vue?vue&type=script&lang=js\"","import { render, staticRenderFns } from \"./TrayArrowDown.vue?vue&type=template&id=5dbf2618\"\nimport script from \"./TrayArrowDown.vue?vue&type=script&lang=js\"\nexport * from \"./TrayArrowDown.vue?vue&type=script&lang=js\"\n\n\n/* normalize component */\nimport normalizer from \"!../vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n  script,\n  render,\n  staticRenderFns,\n  false,\n  null,\n  null,\n  null\n  \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('span',_vm._b({staticClass:\"material-design-icon tray-arrow-down-icon\",attrs:{\"aria-hidden\":_vm.title ? null : 'true',\"aria-label\":_vm.title,\"role\":\"img\"},on:{\"click\":function($event){return _vm.$emit('click', $event)}}},'span',_vm.$attrs,false),[_c('svg',{staticClass:\"material-design-icon__svg\",attrs:{\"fill\":_vm.fillColor,\"width\":_vm.size,\"height\":_vm.size,\"viewBox\":\"0 0 24 24\"}},[_c('path',{attrs:{\"d\":\"M2 12H4V17H20V12H22V17C22 18.11 21.11 19 20 19H4C2.9 19 2 18.11 2 17V12M12 15L17.55 9.54L16.13 8.13L13 11.25V2H11V11.25L7.88 8.13L6.46 9.55L12 15Z\"}},[(_vm.title)?_c('title',[_vm._v(_vm._s(_vm.title))]):_vm._e()])])])\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import mod from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/ts-loader/index.js??clonedRuleSet-6.use[1]!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./DragAndDropNotice.vue?vue&type=script&lang=ts\"; export default mod; export * from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/ts-loader/index.js??clonedRuleSet-6.use[1]!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./DragAndDropNotice.vue?vue&type=script&lang=ts\"","\n      import API from \"!../../../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\";\n      import domAPI from \"!../../../../node_modules/style-loader/dist/runtime/styleDomAPI.js\";\n      import insertFn from \"!../../../../node_modules/style-loader/dist/runtime/insertBySelector.js\";\n      import setAttributes from \"!../../../../node_modules/style-loader/dist/runtime/setAttributesWithoutAttributes.js\";\n      import insertStyleElement from \"!../../../../node_modules/style-loader/dist/runtime/insertStyleElement.js\";\n      import styleTagTransformFn from \"!../../../../node_modules/style-loader/dist/runtime/styleTagTransform.js\";\n      import content, * as namedExport from \"!!../../../../node_modules/css-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/sass-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./DragAndDropNotice.vue?vue&type=style&index=0&id=1e2b9696&prod&lang=scss&scoped=true\";\n      \n      \n\nvar options = {};\n\noptions.styleTagTransform = styleTagTransformFn;\noptions.setAttributes = setAttributes;\noptions.insert = insertFn.bind(null, \"head\");\noptions.domAPI = domAPI;\noptions.insertStyleElement = insertStyleElement;\n\nvar update = API(content, options);\n\n\n\nexport * from \"!!../../../../node_modules/css-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/sass-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./DragAndDropNotice.vue?vue&type=style&index=0&id=1e2b9696&prod&lang=scss&scoped=true\";\n       export default content && content.locals ? content.locals : undefined;\n","import { render, staticRenderFns } from \"./DragAndDropNotice.vue?vue&type=template&id=1e2b9696&scoped=true\"\nimport script from \"./DragAndDropNotice.vue?vue&type=script&lang=ts\"\nexport * from \"./DragAndDropNotice.vue?vue&type=script&lang=ts\"\nimport style0 from \"./DragAndDropNotice.vue?vue&type=style&index=0&id=1e2b9696&prod&lang=scss&scoped=true\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n  script,\n  render,\n  staticRenderFns,\n  false,\n  null,\n  \"1e2b9696\",\n  null\n  \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return _c('div',{class:_vm.$style.fileListFilters,attrs:{\"data-test-id\":\"files-list-filters\"}},[(_setup.isWide)?_vm._l((_setup.visualFilters),function(filter){return _c(_setup.NcPopover,{key:filter.id,attrs:{\"boundary\":_setup.boundary},scopedSlots:_vm._u([{key:\"trigger\",fn:function(){return [_c(_setup.NcButton,{attrs:{\"variant\":\"tertiary\"},scopedSlots:_vm._u([{key:\"icon\",fn:function(){return [_c(_setup.NcIconSvgWrapper,{attrs:{\"svg\":filter.iconSvgInline}})]},proxy:true}],null,true)},[_vm._v(\"\\n\\t\\t\\t\\t\\t\"+_vm._s(filter.displayName)+\"\\n\\t\\t\\t\\t\")])]},proxy:true},{key:\"default\",fn:function(){return [_c('div',{class:_vm.$style.fileListFilters__popoverContainer},[_c(filter.tagName,{tag:\"component\",domProps:{\"filter\":filter}})],1)]},proxy:true}],null,true)})}):_c(_setup.NcPopover,{attrs:{\"boundary\":_setup.boundary,\"popup-role\":_setup.selectedFilter ? 'dialog' : 'menu'},on:{\"update:shown\":function($event){_setup.selectedFilter = undefined}},scopedSlots:_vm._u([{key:\"trigger\",fn:function(){return [_c(_setup.NcButton,{attrs:{\"id\":_setup.menuTriggerId,\"aria-label\":_setup.t('files', 'Filters'),\"pressed\":_setup.hasActiveFilters,\"variant\":\"tertiary\"},scopedSlots:_vm._u([{key:\"icon\",fn:function(){return [_c(_setup.NcIconSvgWrapper,{attrs:{\"path\":_setup.mdiFilterVariant}})]},proxy:true}])})]},proxy:true},{key:\"default\",fn:function(){return [(_setup.selectedFilter)?_c('div',{class:_vm.$style.fileListFilters__popoverFilterView},[_c(_setup.NcButton,{attrs:{\"wide\":\"\",\"variant\":\"tertiary\"},on:{\"click\":function($event){_setup.selectedFilter = undefined}},scopedSlots:_vm._u([{key:\"icon\",fn:function(){return [_c(_setup.NcIconSvgWrapper,{attrs:{\"directional\":\"\",\"path\":_setup.mdiArrowLeft}})]},proxy:true}],null,false,1066031977)},[_vm._v(\"\\n\\t\\t\\t\\t\\t\"+_vm._s(_setup.t('files', 'Back to filters'))+\"\\n\\t\\t\\t\\t\")]),_vm._v(\" \"),_c(_setup.selectedFilter.tagName,{tag:\"component\",domProps:{\"filter\":_setup.selectedFilter}})],1):[_c('ul',{class:_vm.$style.fileListFilters__popoverContainer,attrs:{\"aria-labelledby\":_setup.menuTriggerId,\"role\":\"menu\"}},_vm._l((_setup.visualFilters),function(filter){return _c('li',{key:filter.id,attrs:{\"role\":\"presentation\"}},[_c(_setup.NcButton,{attrs:{\"role\":\"menuitem\",\"alignment\":\"start\",\"variant\":\"tertiary\",\"wide\":\"\"},on:{\"click\":function($event){_setup.selectedFilter = filter}},scopedSlots:_vm._u([{key:\"icon\",fn:function(){return [_c(_setup.NcIconSvgWrapper,{attrs:{\"svg\":filter.iconSvgInline}})]},proxy:true}],null,true)},[_vm._v(\"\\n\\t\\t\\t\\t\\t\\t\\t\"+_vm._s(filter.displayName)+\"\\n\\t\\t\\t\\t\\t\\t\")])],1)}),0)]]},proxy:true}])})],2)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","/*!\n * SPDX-FileCopyrightText: 2024 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\nimport { emit, subscribe } from '@nextcloud/event-bus';\nimport { getFileListFilters, getFilesRegistry } from '@nextcloud/files';\nimport { defineStore } from 'pinia';\nimport { computed, ref } from 'vue';\nimport logger from '../logger.ts';\n/**\n * Check if the given value is an instance file list filter with mount function\n *\n * @param value The filter to check\n */\nfunction isFileListFilterWithUi(value) {\n    return 'tagName' in value;\n}\nexport const useFiltersStore = defineStore('filters', () => {\n    const chips = ref({});\n    const filters = ref([]);\n    /**\n     * Currently active filter chips\n     */\n    const activeChips = computed(() => Object.values(chips.value).flat());\n    /**\n     * Filters sorted by order\n     */\n    const sortedFilters = computed(() => filters.value.sort((a, b) => a.order - b.order));\n    /**\n     * All filters that provide a UI for visual controlling the filter state\n     */\n    const filtersWithUI = computed(() => sortedFilters.value.filter(isFileListFilterWithUi));\n    /**\n     * Register a new filter on the store.\n     * This will subscribe the store to the filters events.\n     *\n     * @param filter The filter to add\n     */\n    function addFilter(filter) {\n        filter.addEventListener('update:chips', onFilterUpdateChips);\n        filter.addEventListener('update:filter', onFilterUpdate);\n        filters.value.push(filter);\n        logger.debug('New file list filter registered', { id: filter.id });\n    }\n    /**\n     * Unregister a filter from the store.\n     * This will remove the filter from the store and unsubscribe the store from the filer events.\n     *\n     * @param filterId Id of the filter to remove\n     */\n    function removeFilter(filterId) {\n        const index = filters.value.findIndex(({ id }) => id === filterId);\n        if (index > -1) {\n            const [filter] = filters.value.splice(index, 1);\n            filter.removeEventListener('update:chips', onFilterUpdateChips);\n            filter.removeEventListener('update:filter', onFilterUpdate);\n            logger.debug('Files list filter unregistered', { id: filterId });\n        }\n    }\n    /**\n     * Event handler for filter update events\n     *\n     */\n    function onFilterUpdate() {\n        emit('files:filters:changed');\n    }\n    /**\n     * Event handler for filter chips updates\n     *\n     * @param event The update event\n     */\n    function onFilterUpdateChips(event) {\n        const id = event.target.id;\n        chips.value = {\n            ...chips.value,\n            [id]: [...event.detail],\n        };\n        logger.debug('File list filter chips updated', { filter: id, chips: event.detail });\n    }\n    initialize();\n    return {\n        // state\n        chips,\n        filters,\n        filtersWithUI,\n        // getters / computed\n        activeChips,\n        sortedFilters,\n    };\n    /**\n     * Initialize the store by registering event listeners and loading initial filters.\n     *\n     * @internal\n     */\n    function initialize() {\n        const registry = getFilesRegistry();\n        const initialFilters = getFileListFilters();\n        // handle adding and removing filters after initialization\n        registry.addEventListener('register:listFilter', (event) => {\n            addFilter(event.detail);\n        });\n        registry.addEventListener('unregister:listFilter', (event) => {\n            removeFilter(event.detail);\n        });\n        // register the initial filters\n        for (const filter of initialFilters) {\n            addFilter(filter);\n        }\n        // subscribe to file list view changes to reset the filters\n        subscribe('files:navigation:changed', onViewChanged);\n    }\n    /**\n     * Event handler that resets all filters if the file list view was changed.\n     *\n     * @internal\n     */\n    function onViewChanged() {\n        logger.debug('Reset all file list filters - view changed');\n        for (const filter of filters.value) {\n            if (filter.reset !== undefined) {\n                filter.reset();\n            }\n        }\n    }\n});\n","import mod from \"-!../../../../../node_modules/babel-loader/lib/index.js!../../../../../node_modules/ts-loader/index.js??clonedRuleSet-6.use[1]!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./FileListFilters.vue?vue&type=script&setup=true&lang=ts\"; export default mod; export * from \"-!../../../../../node_modules/babel-loader/lib/index.js!../../../../../node_modules/ts-loader/index.js??clonedRuleSet-6.use[1]!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./FileListFilters.vue?vue&type=script&setup=true&lang=ts\"","\n      import API from \"!../../../../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\";\n      import domAPI from \"!../../../../../node_modules/style-loader/dist/runtime/styleDomAPI.js\";\n      import insertFn from \"!../../../../../node_modules/style-loader/dist/runtime/insertBySelector.js\";\n      import setAttributes from \"!../../../../../node_modules/style-loader/dist/runtime/setAttributesWithoutAttributes.js\";\n      import insertStyleElement from \"!../../../../../node_modules/style-loader/dist/runtime/insertStyleElement.js\";\n      import styleTagTransformFn from \"!../../../../../node_modules/style-loader/dist/runtime/styleTagTransform.js\";\n      import content, * as namedExport from \"!!../../../../../node_modules/css-loader/dist/cjs.js??clonedRuleSet-3.use[1]!../../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./FileListFilters.vue?vue&type=style&index=0&id=4b9fd4ac&prod&module=true&lang=css\";\n      \n      \n\nvar options = {};\n\noptions.styleTagTransform = styleTagTransformFn;\noptions.setAttributes = setAttributes;\noptions.insert = insertFn.bind(null, \"head\");\noptions.domAPI = domAPI;\noptions.insertStyleElement = insertStyleElement;\n\nvar update = API(content, options);\n\n\n\nexport * from \"!!../../../../../node_modules/css-loader/dist/cjs.js??clonedRuleSet-3.use[1]!../../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./FileListFilters.vue?vue&type=style&index=0&id=4b9fd4ac&prod&module=true&lang=css\";\n       export default content && content.locals ? content.locals : undefined;\n","import { render, staticRenderFns } from \"./FileListFilters.vue?vue&type=template&id=4b9fd4ac\"\nimport script from \"./FileListFilters.vue?vue&type=script&setup=true&lang=ts\"\nexport * from \"./FileListFilters.vue?vue&type=script&setup=true&lang=ts\"\nimport style0 from \"./FileListFilters.vue?vue&type=style&index=0&id=4b9fd4ac&prod&module=true&lang=css\"\n\n\n\n\nfunction injectStyles (context) {\n  \n  this[\"$style\"] = (style0.locals || style0)\n\n}\n\n/* normalize component */\nimport normalizer from \"!../../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n  script,\n  render,\n  staticRenderFns,\n  false,\n  injectStyles,\n  null,\n  null\n  \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return _c('VirtualList',{ref:\"table\",attrs:{\"data-component\":_vm.userConfig.grid_view ? _vm.FileEntryGrid : _vm.FileEntry,\"data-key\":\"source\",\"data-sources\":_vm.nodes,\"grid-mode\":_vm.userConfig.grid_view,\"extra-props\":{\n\t\tisMimeAvailable: _vm.isMimeAvailable,\n\t\tisMtimeAvailable: _vm.isMtimeAvailable,\n\t\tisSizeAvailable: _vm.isSizeAvailable,\n\t\tnodes: _vm.nodes,\n\t},\"scroll-to-index\":_vm.scrollToIndex,\"caption\":_vm.caption},scopedSlots:_vm._u([{key:\"filters\",fn:function(){return [_c('FileListFilterToSearch'),_c('FileListFilterChips')]},proxy:true},(!_vm.isNoneSelected)?{key:\"header-overlay\",fn:function(){return [_c('span',{staticClass:\"files-list__selected\"},[_vm._v(\"\\n\\t\\t\\t\"+_vm._s(_vm.n('files', '{count} selected', '{count} selected', _vm.selectedNodes.length, { count: _vm.selectedNodes.length }))+\"\\n\\t\\t\")]),_vm._v(\" \"),_c('FilesListTableHeaderActions',{attrs:{\"current-view\":_vm.currentView,\"selected-nodes\":_vm.selectedNodes}})]},proxy:true}:null,{key:\"before\",fn:function(){return _vm._l((_vm.headers),function(header){return _c('FilesListHeader',{key:header.id,attrs:{\"current-folder\":_vm.currentFolder,\"current-view\":_vm.currentView,\"header\":header}})})},proxy:true},{key:\"header\",fn:function(){return [_c('FilesListTableHeader',{ref:\"thead\",attrs:{\"is-mime-available\":_vm.isMimeAvailable,\"is-mtime-available\":_vm.isMtimeAvailable,\"is-size-available\":_vm.isSizeAvailable,\"nodes\":_vm.nodes}})]},proxy:true},{key:\"empty\",fn:function(){return [_vm._t(\"empty\")]},proxy:true},{key:\"footer\",fn:function(){return [_c('FilesListTableFooter',{attrs:{\"current-view\":_vm.currentView,\"is-mime-available\":_vm.isMimeAvailable,\"is-mtime-available\":_vm.isMtimeAvailable,\"is-size-available\":_vm.isSizeAvailable,\"nodes\":_vm.nodes,\"summary\":_vm.summary}})]},proxy:true}],null,true)})\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('span')\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import mod from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/ts-loader/index.js??clonedRuleSet-6.use[1]!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./CustomElementRender.vue?vue&type=script&lang=ts\"; export default mod; export * from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/ts-loader/index.js??clonedRuleSet-6.use[1]!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./CustomElementRender.vue?vue&type=script&lang=ts\"","import { render, staticRenderFns } from \"./CustomElementRender.vue?vue&type=template&id=5eb63caa\"\nimport script from \"./CustomElementRender.vue?vue&type=script&lang=ts\"\nexport * from \"./CustomElementRender.vue?vue&type=script&lang=ts\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n  script,\n  render,\n  staticRenderFns,\n  false,\n  null,\n  null,\n  null\n  \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return _c('td',{staticClass:\"files-list__row-actions\",attrs:{\"data-cy-files-list-row-actions\":\"\"}},[_vm._l((_vm.enabledRenderActions),function(action){return _c('CustomElementRender',{key:action.id,staticClass:\"files-list__row-action--inline\",class:'files-list__row-action-' + action.id,attrs:{\"active-folder\":_vm.activeStore.activeFolder,\"active-view\":_vm.activeStore.activeView,\"render\":action.renderInline,\"source\":_vm.source}})}),_vm._v(\" \"),_c('NcActions',{ref:\"actionsMenu\",attrs:{\"boundaries-element\":_vm.getBoundariesElement,\"container\":_vm.getBoundariesElement,\"force-name\":true,\"variant\":\"tertiary\",\"force-menu\":_vm.enabledInlineActions.length === 0 /* forceMenu only if no inline actions */,\"inline\":_vm.enabledInlineActions.length,\"open\":_vm.openedMenu},on:{\"close\":_vm.onMenuClose,\"closed\":_vm.onMenuClosed}},[_vm._l((_vm.renderedNonDestructiveActions),function(action,index){return _c('NcActionButton',{key:action.id,ref:`action-${action.id}`,refInFor:true,staticClass:\"files-list__row-action\",class:{\n\t\t\t\t[`files-list__row-action-${action.id}`]: true,\n\t\t\t\t'files-list__row-action--inline': index < _vm.enabledInlineActions.length,\n\t\t\t\t'files-list__row-action--menu': _vm.isValidMenu(action),\n\t\t\t},attrs:{\"close-after-click\":!_vm.isValidMenu(action),\"data-cy-files-list-row-action\":action.id,\"is-menu\":_vm.isValidMenu(action),\"aria-label\":action.title?.(_vm.actionContext),\"title\":action.title?.(_vm.actionContext)},on:{\"click\":function($event){return _vm.onActionClick(action)}},scopedSlots:_vm._u([{key:\"icon\",fn:function(){return [(_vm.isLoadingAction(action))?_c('NcLoadingIcon'):_c('NcIconSvgWrapper',{staticClass:\"files-list__row-action-icon\",attrs:{\"svg\":action.iconSvgInline(_vm.actionContext)}})]},proxy:true}],null,true)},[_vm._v(\"\\n\\t\\t\\t\"+_vm._s(_vm.actionDisplayName(action))+\"\\n\\t\\t\")])}),_vm._v(\" \"),(_vm.renderedDestructiveActions.length > 0)?[_c('NcActionSeparator'),_vm._v(\" \"),_vm._l((_vm.renderedDestructiveActions),function(action,index){return _c('NcActionButton',{key:action.id,ref:`action-${action.id}`,refInFor:true,staticClass:\"files-list__row-action files-list__row-action--destructive\",class:{\n\t\t\t\t\t[`files-list__row-action-${action.id}`]: true,\n\t\t\t\t\t'files-list__row-action--inline': index < _vm.enabledInlineActions.length,\n\t\t\t\t\t'files-list__row-action--menu': _vm.isValidMenu(action),\n\t\t\t\t},attrs:{\"close-after-click\":!_vm.isValidMenu(action),\"data-cy-files-list-row-action\":action.id,\"is-menu\":_vm.isValidMenu(action),\"aria-label\":action.title?.(_vm.actionContext),\"title\":action.title?.(_vm.actionContext)},on:{\"click\":function($event){return _vm.onActionClick(action)}},scopedSlots:_vm._u([{key:\"icon\",fn:function(){return [(_vm.isLoadingAction(action))?_c('NcLoadingIcon'):_c('NcIconSvgWrapper',{staticClass:\"files-list__row-action-icon\",attrs:{\"svg\":action.iconSvgInline(_vm.actionContext)}})]},proxy:true}],null,true)},[_vm._v(\"\\n\\t\\t\\t\\t\"+_vm._s(_vm.actionDisplayName(action))+\"\\n\\t\\t\\t\")])})]:_vm._e(),_vm._v(\" \"),(_vm.openedSubmenu && _vm.enabledSubmenuActions[_vm.openedSubmenu?.id])?[_c('NcActionButton',{staticClass:\"files-list__row-action-back\",attrs:{\"data-cy-files-list-row-action\":\"menu-back\"},on:{\"click\":function($event){return _vm.onBackToMenuClick(_vm.openedSubmenu)}},scopedSlots:_vm._u([{key:\"icon\",fn:function(){return [_c('ArrowLeftIcon')]},proxy:true}],null,false,3001860362)},[_vm._v(\"\\n\\t\\t\\t\\t\"+_vm._s(_vm.t('files', 'Back'))+\"\\n\\t\\t\\t\")]),_vm._v(\" \"),_c('NcActionSeparator'),_vm._v(\" \"),_vm._l((_vm.enabledSubmenuActions[_vm.openedSubmenu?.id]),function(action){return _c('NcActionButton',{key:action.id,staticClass:\"files-list__row-action--submenu\",class:`files-list__row-action-${action.id}`,attrs:{\"close-after-click\":\"\",\"data-cy-files-list-row-action\":action.id,\"aria-label\":action.title?.(_vm.actionContext),\"title\":action.title?.(_vm.actionContext)},on:{\"click\":function($event){return _vm.onActionClick(action)}},scopedSlots:_vm._u([{key:\"icon\",fn:function(){return [(_vm.isLoadingAction(action))?_c('NcLoadingIcon'):_c('NcIconSvgWrapper',{attrs:{\"svg\":action.iconSvgInline(_vm.actionContext)}})]},proxy:true}],null,true)},[_vm._v(\"\\n\\t\\t\\t\\t\"+_vm._s(_vm.actionDisplayName(action))+\"\\n\\t\\t\\t\")])})]:_vm._e()],2)],2)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n\n","import mod from \"-!../vue-loader/lib/index.js??vue-loader-options!./ArrowLeft.vue?vue&type=script&lang=js\"; export default mod; export * from \"-!../vue-loader/lib/index.js??vue-loader-options!./ArrowLeft.vue?vue&type=script&lang=js\"","import { render, staticRenderFns } from \"./ArrowLeft.vue?vue&type=template&id=16833c02\"\nimport script from \"./ArrowLeft.vue?vue&type=script&lang=js\"\nexport * from \"./ArrowLeft.vue?vue&type=script&lang=js\"\n\n\n/* normalize component */\nimport normalizer from \"!../vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n  script,\n  render,\n  staticRenderFns,\n  false,\n  null,\n  null,\n  null\n  \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('span',_vm._b({staticClass:\"material-design-icon arrow-left-icon\",attrs:{\"aria-hidden\":_vm.title ? null : 'true',\"aria-label\":_vm.title,\"role\":\"img\"},on:{\"click\":function($event){return _vm.$emit('click', $event)}}},'span',_vm.$attrs,false),[_c('svg',{staticClass:\"material-design-icon__svg\",attrs:{\"fill\":_vm.fillColor,\"width\":_vm.size,\"height\":_vm.size,\"viewBox\":\"0 0 24 24\"}},[_c('path',{attrs:{\"d\":\"M20,11V13H8L13.5,18.5L12.08,19.92L4.16,12L12.08,4.08L13.5,5.5L8,11H20Z\"}},[(_vm.title)?_c('title',[_vm._v(_vm._s(_vm.title))]):_vm._e()])])])\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","/**\n * SPDX-FileCopyrightText: 2025 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\nimport { defineComponent } from 'vue';\nexport default defineComponent({\n    data() {\n        return {\n            openedSubmenu: null,\n        };\n    },\n    computed: {\n        enabledSubmenuActions() {\n            return this.enabledFileActions\n                .reduce((record, action) => {\n                if (action.parent !== undefined) {\n                    if (!record[action.parent]) {\n                        record[action.parent] = [];\n                    }\n                    record[action.parent].push(action);\n                }\n                return record;\n            }, {});\n        },\n    },\n    methods: {\n        /**\n         * Check if a menu is valid, meaning it is\n         * defined and has at least one action\n         *\n         * @param action The action to check\n         */\n        isValidMenu(action) {\n            return this.enabledSubmenuActions[action.id]?.length > 0;\n        },\n        async onBackToMenuClick(action) {\n            if (!action) {\n                return;\n            }\n            this.openedSubmenu = null;\n            // Wait for first render\n            await this.$nextTick();\n            // Focus the previous menu action button\n            this.$nextTick(() => {\n                // Focus the action button, test both batch and single action references\n                // as this mixin is used in both single and batch actions.\n                const menuAction = this.$refs[`action-batch-${action.id}`]?.[0]\n                    || this.$refs[`action-${action.id}`]?.[0];\n                if (menuAction) {\n                    menuAction.$el.querySelector('button')?.focus();\n                }\n            });\n        },\n    },\n});\n","import { showError, showSuccess } from '@nextcloud/dialogs';\nimport { NodeStatus } from '@nextcloud/files';\nimport { t } from '@nextcloud/l10n';\nimport Vue from 'vue';\nimport logger from '../logger.ts';\nimport { useActiveStore } from '../store/active.ts';\n/**\n * Execute an action on the current active node\n *\n * @param action The action to execute\n */\nexport async function executeAction(action) {\n    const activeStore = useActiveStore();\n    const currentFolder = activeStore.activeFolder;\n    const currentNode = activeStore.activeNode;\n    const currentView = activeStore.activeView;\n    if (!currentFolder || !currentNode || !currentView) {\n        logger.error('No active folder, node or view', { folder: currentFolder, node: currentNode, view: currentView });\n        return;\n    }\n    if (currentNode.status === NodeStatus.LOADING) {\n        logger.debug('Node is already loading', { node: currentNode });\n        return;\n    }\n    // @ts-expect-error _children is private\n    const contents = currentFolder?._children || [];\n    const context = {\n        nodes: [currentNode],\n        view: currentView,\n        folder: currentFolder,\n        contents,\n    };\n    if (!action.enabled(context)) {\n        logger.debug('Action is not not available for the current context', { action, node: currentNode, view: currentView });\n        return;\n    }\n    let displayName = action.id;\n    try {\n        displayName = action.displayName(context) || displayName;\n    }\n    catch (error) {\n        logger.error('Error while getting action display name', { action, error });\n    }\n    try {\n        // Set the loading marker\n        Vue.set(currentNode, 'status', NodeStatus.LOADING);\n        activeStore.activeAction = action;\n        const success = await action.exec(context);\n        // If the action returns null, we stay silent\n        if (success === null || success === undefined) {\n            return;\n        }\n        if (success) {\n            showSuccess(t('files', '{displayName}: done', { displayName }));\n            return;\n        }\n        showError(t('files', '{displayName}: failed', { displayName }));\n    }\n    catch (error) {\n        logger.error('Error while executing action', { action, error });\n        showError(t('files', '{displayName}: failed', { displayName }));\n    }\n    finally {\n        // Reset the loading marker\n        Vue.set(currentNode, 'status', undefined);\n        activeStore.activeAction = undefined;\n    }\n}\n","import mod from \"-!../../../../../node_modules/babel-loader/lib/index.js!../../../../../node_modules/ts-loader/index.js??clonedRuleSet-6.use[1]!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./FileEntryActions.vue?vue&type=script&lang=ts\"; export default mod; export * from \"-!../../../../../node_modules/babel-loader/lib/index.js!../../../../../node_modules/ts-loader/index.js??clonedRuleSet-6.use[1]!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./FileEntryActions.vue?vue&type=script&lang=ts\"","\n      import API from \"!../../../../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\";\n      import domAPI from \"!../../../../../node_modules/style-loader/dist/runtime/styleDomAPI.js\";\n      import insertFn from \"!../../../../../node_modules/style-loader/dist/runtime/insertBySelector.js\";\n      import setAttributes from \"!../../../../../node_modules/style-loader/dist/runtime/setAttributesWithoutAttributes.js\";\n      import insertStyleElement from \"!../../../../../node_modules/style-loader/dist/runtime/insertStyleElement.js\";\n      import styleTagTransformFn from \"!../../../../../node_modules/style-loader/dist/runtime/styleTagTransform.js\";\n      import content, * as namedExport from \"!!../../../../../node_modules/css-loader/dist/cjs.js!../../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../../node_modules/sass-loader/dist/cjs.js!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./FileEntryActions.vue?vue&type=style&index=0&id=5f3391ea&prod&lang=scss\";\n      \n      \n\nvar options = {};\n\noptions.styleTagTransform = styleTagTransformFn;\noptions.setAttributes = setAttributes;\noptions.insert = insertFn.bind(null, \"head\");\noptions.domAPI = domAPI;\noptions.insertStyleElement = insertStyleElement;\n\nvar update = API(content, options);\n\n\n\nexport * from \"!!../../../../../node_modules/css-loader/dist/cjs.js!../../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../../node_modules/sass-loader/dist/cjs.js!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./FileEntryActions.vue?vue&type=style&index=0&id=5f3391ea&prod&lang=scss\";\n       export default content && content.locals ? content.locals : undefined;\n","\n      import API from \"!../../../../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\";\n      import domAPI from \"!../../../../../node_modules/style-loader/dist/runtime/styleDomAPI.js\";\n      import insertFn from \"!../../../../../node_modules/style-loader/dist/runtime/insertBySelector.js\";\n      import setAttributes from \"!../../../../../node_modules/style-loader/dist/runtime/setAttributesWithoutAttributes.js\";\n      import insertStyleElement from \"!../../../../../node_modules/style-loader/dist/runtime/insertStyleElement.js\";\n      import styleTagTransformFn from \"!../../../../../node_modules/style-loader/dist/runtime/styleTagTransform.js\";\n      import content, * as namedExport from \"!!../../../../../node_modules/css-loader/dist/cjs.js!../../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../../node_modules/sass-loader/dist/cjs.js!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./FileEntryActions.vue?vue&type=style&index=1&id=5f3391ea&prod&scoped=true&lang=scss\";\n      \n      \n\nvar options = {};\n\noptions.styleTagTransform = styleTagTransformFn;\noptions.setAttributes = setAttributes;\noptions.insert = insertFn.bind(null, \"head\");\noptions.domAPI = domAPI;\noptions.insertStyleElement = insertStyleElement;\n\nvar update = API(content, options);\n\n\n\nexport * from \"!!../../../../../node_modules/css-loader/dist/cjs.js!../../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../../node_modules/sass-loader/dist/cjs.js!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./FileEntryActions.vue?vue&type=style&index=1&id=5f3391ea&prod&scoped=true&lang=scss\";\n       export default content && content.locals ? content.locals : undefined;\n","import { render, staticRenderFns } from \"./FileEntryActions.vue?vue&type=template&id=5f3391ea&scoped=true\"\nimport script from \"./FileEntryActions.vue?vue&type=script&lang=ts\"\nexport * from \"./FileEntryActions.vue?vue&type=script&lang=ts\"\nimport style0 from \"./FileEntryActions.vue?vue&type=style&index=0&id=5f3391ea&prod&lang=scss\"\nimport style1 from \"./FileEntryActions.vue?vue&type=style&index=1&id=5f3391ea&prod&scoped=true&lang=scss\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n  script,\n  render,\n  staticRenderFns,\n  false,\n  null,\n  \"5f3391ea\",\n  null\n  \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return _c('td',{staticClass:\"files-list__row-checkbox\",on:{\"keyup\":function($event){if(!$event.type.indexOf('key')&&_vm._k($event.keyCode,\"esc\",27,$event.key,[\"Esc\",\"Escape\"]))return null;if($event.ctrlKey||$event.shiftKey||$event.altKey||$event.metaKey)return null;return _vm.resetSelection.apply(null, arguments)}}},[(_vm.isLoading)?_c('NcLoadingIcon',{attrs:{\"name\":_vm.loadingLabel}}):_c('NcCheckboxRadioSwitch',{attrs:{\"aria-label\":_vm.ariaLabel,\"model-value\":_vm.isSelected,\"data-cy-files-list-row-checkbox\":\"\"},on:{\"update:modelValue\":_vm.onSelectionChange}})],1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import mod from \"-!../../../../../node_modules/babel-loader/lib/index.js!../../../../../node_modules/ts-loader/index.js??clonedRuleSet-6.use[1]!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./FileEntryCheckbox.vue?vue&type=script&lang=ts\"; export default mod; export * from \"-!../../../../../node_modules/babel-loader/lib/index.js!../../../../../node_modules/ts-loader/index.js??clonedRuleSet-6.use[1]!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./FileEntryCheckbox.vue?vue&type=script&lang=ts\"","/**\n * SPDX-FileCopyrightText: 2023 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\nimport { defineStore } from 'pinia';\nimport Vue from 'vue';\n/**\n * Observe various events and save the current\n * special keys states. Useful for checking the\n * current status of a key when executing a method.\n *\n * @param args\n */\nexport function useKeyboardStore(...args) {\n    const store = defineStore('keyboard', {\n        state: () => ({\n            altKey: false,\n            ctrlKey: false,\n            metaKey: false,\n            shiftKey: false,\n        }),\n        actions: {\n            onEvent(event) {\n                if (!event) {\n                    event = window.event;\n                }\n                Vue.set(this, 'altKey', !!event.altKey);\n                Vue.set(this, 'ctrlKey', !!event.ctrlKey);\n                Vue.set(this, 'metaKey', !!event.metaKey);\n                Vue.set(this, 'shiftKey', !!event.shiftKey);\n            },\n        },\n    });\n    const keyboardStore = store(...args);\n    // Make sure we only register the listeners once\n    if (!keyboardStore._initialized) {\n        window.addEventListener('keydown', keyboardStore.onEvent);\n        window.addEventListener('keyup', keyboardStore.onEvent);\n        window.addEventListener('mousemove', keyboardStore.onEvent);\n        keyboardStore._initialized = true;\n    }\n    return keyboardStore;\n}\n","import { render, staticRenderFns } from \"./FileEntryCheckbox.vue?vue&type=template&id=b10e52a2\"\nimport script from \"./FileEntryCheckbox.vue?vue&type=script&lang=ts\"\nexport * from \"./FileEntryCheckbox.vue?vue&type=script&lang=ts\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n  script,\n  render,\n  staticRenderFns,\n  false,\n  null,\n  null,\n  null\n  \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return (_vm.isRenaming)?_c('form',{directives:[{name:\"on-click-outside\",rawName:\"v-on-click-outside\",value:(_vm.onRename),expression:\"onRename\"}],ref:\"renameForm\",staticClass:\"files-list__row-rename\",attrs:{\"aria-label\":_vm.t('files', 'Rename file')},on:{\"submit\":function($event){$event.preventDefault();$event.stopPropagation();return _vm.onRename.apply(null, arguments)}}},[_c('NcTextField',{ref:\"renameInput\",attrs:{\"label\":_vm.renameLabel,\"autofocus\":\"\",\"required\":\"\",\"minlength\":1,\"enterkeyhint\":\"done\"},on:{\"keyup\":function($event){if(!$event.type.indexOf('key')&&_vm._k($event.keyCode,\"esc\",27,$event.key,[\"Esc\",\"Escape\"]))return null;return _vm.stopRenaming.apply(null, arguments)}},model:{value:(_vm.newName),callback:function ($$v) {_vm.newName=$$v},expression:\"newName\"}})],1):_c(_vm.linkTo.is,_vm._b({ref:\"basename\",tag:\"component\",staticClass:\"files-list__row-name-link\",attrs:{\"data-cy-files-list-row-name-link\":\"\"}},'component',_vm.linkTo.params,false),[_c('span',{staticClass:\"files-list__row-name-text\",attrs:{\"dir\":\"auto\"}},[_c('span',{staticClass:\"files-list__row-name-\",domProps:{\"textContent\":_vm._s(_vm.basename)}}),_vm._v(\" \"),(_vm.userConfigStore.userConfig.show_files_extensions)?_c('span',{staticClass:\"files-list__row-name-ext\",domProps:{\"textContent\":_vm._s(_vm.extension)}}):_vm._e()])])\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","/**\n * SPDX-FileCopyrightText: 2023 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\nimport axios, { isAxiosError } from '@nextcloud/axios';\nimport { emit, subscribe } from '@nextcloud/event-bus';\nimport { FileType, NodeStatus } from '@nextcloud/files';\nimport { t } from '@nextcloud/l10n';\nimport { basename, dirname, extname } from '@nextcloud/paths';\nimport { spawnDialog } from '@nextcloud/vue/functions/dialog';\nimport { defineStore } from 'pinia';\nimport Vue, { defineAsyncComponent, ref } from 'vue';\nimport logger from '../logger.ts';\nimport { fetchNode } from '../services/WebdavClient.ts';\nimport { useUserConfigStore } from './userconfig.ts';\nexport const useRenamingStore = defineStore('renaming', () => {\n    /**\n     * The currently renamed node\n     */\n    const renamingNode = ref();\n    /**\n     * The new name of the currently renamed node\n     */\n    const newNodeName = ref('');\n    /**\n     * Internal flag to only allow calling `rename` once.\n     */\n    const isRenaming = ref(false);\n    /**\n     * Execute the renaming.\n     * This will rename the node set as `renamingNode` to the configured new name `newName`.\n     *\n     * @return true if success, false if skipped (e.g. new and old name are the same)\n     * @throws {Error} if renaming fails, details are set in the error message\n     */\n    async function rename() {\n        if (renamingNode.value === undefined) {\n            throw new Error('No node is currently being renamed');\n        }\n        const oldName = renamingNode.value.basename;\n        let newName = newNodeName.value.trim();\n        if (newName === oldName) {\n            return false;\n        }\n        // Only rename once so we use this as some kind of mutex\n        if (isRenaming.value) {\n            return false;\n        }\n        isRenaming.value = true;\n        const userConfig = useUserConfigStore();\n        let node = renamingNode.value;\n        Vue.set(node, 'status', NodeStatus.LOADING);\n        try {\n            if (userConfig.userConfig.show_dialog_file_extension) {\n                const oldExtension = extname(oldName);\n                const newExtension = extname(newName);\n                // Check for extension change for files\n                if (node.type === FileType.File\n                    && oldExtension !== newExtension\n                    && !(await showFileExtensionDialog(oldExtension, newExtension))) {\n                    // user selected to use the old extension\n                    newName = basename(newName, newExtension) + oldExtension;\n                    if (oldName === newName) {\n                        return false;\n                    }\n                }\n                if (!userConfig.userConfig.show_hidden\n                    && newName.startsWith('.')\n                    && !oldName.startsWith('.')\n                    && !(await showHiddenFileDialog(newName))) {\n                    return false;\n                }\n            }\n            const oldEncodedSource = node.encodedSource;\n            // rename the node\n            node.rename(newName);\n            logger.debug('Moving file to', { destination: node.encodedSource, oldEncodedSource });\n            // create MOVE request\n            await axios({\n                method: 'MOVE',\n                url: oldEncodedSource,\n                headers: {\n                    Destination: node.encodedSource,\n                    Overwrite: 'F',\n                },\n            });\n            // Update mime type if extension changed\n            // as other related informations might have changed\n            // on the backend but it is really hard to know on the front\n            if (extname(oldName) !== extname(newName)) {\n                node = await fetchNode(node.path);\n            }\n            // Success 🎉\n            emit('files:node:updated', node);\n            emit('files:node:renamed', node);\n            emit('files:node:moved', {\n                node,\n                oldSource: `${dirname(node.source)}/${oldName}`,\n            });\n            // Reset the state not changed\n            if (renamingNode.value === node) {\n                $reset();\n            }\n            return true;\n        }\n        catch (error) {\n            logger.error('Error while renaming file', { error });\n            // Rename back as it failed\n            node.rename(oldName);\n            if (isAxiosError(error)) {\n                // TODO: 409 means current folder does not exist, redirect ?\n                if (error?.response?.status === 404) {\n                    throw new Error(t('files', 'Could not rename \"{oldName}\", it does not exist any more', { oldName }));\n                }\n                else if (error?.response?.status === 412) {\n                    throw new Error(t('files', 'The name \"{newName}\" is already used in the folder \"{dir}\". Please choose a different name.', {\n                        newName,\n                        dir: basename(renamingNode.value.dirname),\n                    }));\n                }\n            }\n            // Unknown error\n            throw new Error(t('files', 'Could not rename \"{oldName}\"', { oldName }));\n        }\n        finally {\n            Vue.set(node, 'status', undefined);\n            isRenaming.value = false;\n        }\n    }\n    /**\n     * Reset the store state\n     */\n    function $reset() {\n        newNodeName.value = '';\n        renamingNode.value = undefined;\n    }\n    // Make sure we only register the listeners once\n    subscribe('files:node:rename', (node) => {\n        renamingNode.value = node;\n        newNodeName.value = node.basename;\n    });\n    return {\n        $reset,\n        newNodeName,\n        rename,\n        renamingNode,\n    };\n});\n/**\n * Show a dialog asking user for confirmation about changing the file extension.\n *\n * @param oldExtension the old file name extension\n * @param newExtension the new file name extension\n */\nasync function showFileExtensionDialog(oldExtension, newExtension) {\n    const { promise, resolve } = Promise.withResolvers();\n    await spawnDialog(defineAsyncComponent(() => import('../views/DialogConfirmFileExtension.vue')), { oldExtension, newExtension }, resolve);\n    return promise;\n}\n/**\n * Show a dialog asking user for confirmation about renaming a file to a hidden file.\n *\n * @param filename - The new filename\n */\nasync function showHiddenFileDialog(filename) {\n    const { promise, resolve } = Promise.withResolvers();\n    await spawnDialog(defineAsyncComponent(() => import('../views/DialogConfirmFileHidden.vue')), { filename }, resolve);\n    return promise;\n}\n","/*!\n * SPDX-FileCopyrightText: 2024 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\nimport { InvalidFilenameError, InvalidFilenameErrorReason, validateFilename } from '@nextcloud/files';\nimport { t } from '@nextcloud/l10n';\n/**\n * Get the validity of a filename (empty if valid).\n * This can be used for `setCustomValidity` on input elements\n *\n * @param name The filename\n * @param escape Escape the matched string in the error (only set when used in HTML)\n */\nexport function getFilenameValidity(name, escape = false) {\n    if (name.trim() === '') {\n        return t('files', 'Filename must not be empty.');\n    }\n    try {\n        validateFilename(name);\n        return '';\n    }\n    catch (error) {\n        if (!(error instanceof InvalidFilenameError)) {\n            throw error;\n        }\n        switch (error.reason) {\n            case InvalidFilenameErrorReason.Character:\n                return t('files', '\"{char}\" is not allowed inside a filename.', { char: error.segment }, undefined, { escape });\n            case InvalidFilenameErrorReason.ReservedName:\n                return t('files', '\"{segment}\" is a reserved name and not allowed for filenames.', { segment: error.segment }, undefined, { escape: false });\n            case InvalidFilenameErrorReason.Extension:\n                if (error.segment.match(/\\.[a-z]/i)) {\n                    return t('files', '\"{extension}\" is not an allowed filetype.', { extension: error.segment }, undefined, { escape: false });\n                }\n                return t('files', 'Filenames must not end with \"{extension}\".', { extension: error.segment }, undefined, { escape: false });\n            default:\n                return t('files', 'Invalid filename.');\n        }\n    }\n}\n","import mod from \"-!../../../../../node_modules/babel-loader/lib/index.js!../../../../../node_modules/ts-loader/index.js??clonedRuleSet-6.use[1]!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./FileEntryName.vue?vue&type=script&lang=ts\"; export default mod; export * from \"-!../../../../../node_modules/babel-loader/lib/index.js!../../../../../node_modules/ts-loader/index.js??clonedRuleSet-6.use[1]!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./FileEntryName.vue?vue&type=script&lang=ts\"","\n      import API from \"!../../../../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\";\n      import domAPI from \"!../../../../../node_modules/style-loader/dist/runtime/styleDomAPI.js\";\n      import insertFn from \"!../../../../../node_modules/style-loader/dist/runtime/insertBySelector.js\";\n      import setAttributes from \"!../../../../../node_modules/style-loader/dist/runtime/setAttributesWithoutAttributes.js\";\n      import insertStyleElement from \"!../../../../../node_modules/style-loader/dist/runtime/insertStyleElement.js\";\n      import styleTagTransformFn from \"!../../../../../node_modules/style-loader/dist/runtime/styleTagTransform.js\";\n      import content, * as namedExport from \"!!../../../../../node_modules/css-loader/dist/cjs.js!../../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../../node_modules/sass-loader/dist/cjs.js!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./FileEntryName.vue?vue&type=style&index=0&id=3e8ca2b0&prod&scoped=true&lang=scss\";\n      \n      \n\nvar options = {};\n\noptions.styleTagTransform = styleTagTransformFn;\noptions.setAttributes = setAttributes;\noptions.insert = insertFn.bind(null, \"head\");\noptions.domAPI = domAPI;\noptions.insertStyleElement = insertStyleElement;\n\nvar update = API(content, options);\n\n\n\nexport * from \"!!../../../../../node_modules/css-loader/dist/cjs.js!../../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../../node_modules/sass-loader/dist/cjs.js!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./FileEntryName.vue?vue&type=style&index=0&id=3e8ca2b0&prod&scoped=true&lang=scss\";\n       export default content && content.locals ? content.locals : undefined;\n","import { render, staticRenderFns } from \"./FileEntryName.vue?vue&type=template&id=3e8ca2b0&scoped=true\"\nimport script from \"./FileEntryName.vue?vue&type=script&lang=ts\"\nexport * from \"./FileEntryName.vue?vue&type=script&lang=ts\"\nimport style0 from \"./FileEntryName.vue?vue&type=style&index=0&id=3e8ca2b0&prod&scoped=true&lang=scss\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n  script,\n  render,\n  staticRenderFns,\n  false,\n  null,\n  \"3e8ca2b0\",\n  null\n  \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return _c('span',{staticClass:\"files-list__row-icon\"},[(_vm.source.type === 'folder')?[(_vm.dragover)?_vm._m(0):[_vm._m(1),_vm._v(\" \"),(_vm.folderOverlay)?_c(_vm.folderOverlay,{tag:\"component\",staticClass:\"files-list__row-icon-overlay\"}):_vm._e()]]:(_vm.previewUrl)?_c('span',{staticClass:\"files-list__row-icon-preview-container\"},[(_vm.hasBlurhash && (_vm.backgroundFailed === true || !_vm.backgroundLoaded))?_c('canvas',{ref:\"canvas\",staticClass:\"files-list__row-icon-blurhash\",attrs:{\"aria-hidden\":\"true\"}}):_vm._e(),_vm._v(\" \"),(_vm.backgroundFailed !== true)?_c('img',{key:_vm.source.fileid,ref:\"previewImg\",staticClass:\"files-list__row-icon-preview\",class:{ 'files-list__row-icon-preview--loaded': _vm.backgroundFailed === false },attrs:{\"alt\":\"\",\"loading\":\"lazy\",\"src\":_vm.previewUrl},on:{\"error\":_vm.onBackgroundError,\"load\":_vm.onBackgroundLoad}}):_vm._e()]):_vm._m(2),_vm._v(\" \"),(_vm.isFavorite)?_c('span',{staticClass:\"files-list__row-icon-favorite\"},[_vm._m(3)],1):_vm._e(),_vm._v(\" \"),(_vm.fileOverlay)?_c(_vm.fileOverlay,{tag:\"component\",staticClass:\"files-list__row-icon-overlay files-list__row-icon-overlay--file\"}):_vm._e()],2)\n}\nvar staticRenderFns = [function (){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return _c('FolderOpenIcon')\n},function (){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return _c('FolderIcon')\n},function (){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return _c('FileIcon')\n},function (){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return _c('FavoriteIcon')\n}]\n\nexport { render, staticRenderFns }","\n\n","import mod from \"-!../vue-loader/lib/index.js??vue-loader-options!./AccountGroup.vue?vue&type=script&lang=js\"; export default mod; export * from \"-!../vue-loader/lib/index.js??vue-loader-options!./AccountGroup.vue?vue&type=script&lang=js\"","import { render, staticRenderFns } from \"./AccountGroup.vue?vue&type=template&id=fa2b1464\"\nimport script from \"./AccountGroup.vue?vue&type=script&lang=js\"\nexport * from \"./AccountGroup.vue?vue&type=script&lang=js\"\n\n\n/* normalize component */\nimport normalizer from \"!../vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n  script,\n  render,\n  staticRenderFns,\n  false,\n  null,\n  null,\n  null\n  \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('span',_vm._b({staticClass:\"material-design-icon account-group-icon\",attrs:{\"aria-hidden\":_vm.title ? null : 'true',\"aria-label\":_vm.title,\"role\":\"img\"},on:{\"click\":function($event){return _vm.$emit('click', $event)}}},'span',_vm.$attrs,false),[_c('svg',{staticClass:\"material-design-icon__svg\",attrs:{\"fill\":_vm.fillColor,\"width\":_vm.size,\"height\":_vm.size,\"viewBox\":\"0 0 24 24\"}},[_c('path',{attrs:{\"d\":\"M12,5.5A3.5,3.5 0 0,1 15.5,9A3.5,3.5 0 0,1 12,12.5A3.5,3.5 0 0,1 8.5,9A3.5,3.5 0 0,1 12,5.5M5,8C5.56,8 6.08,8.15 6.53,8.42C6.38,9.85 6.8,11.27 7.66,12.38C7.16,13.34 6.16,14 5,14A3,3 0 0,1 2,11A3,3 0 0,1 5,8M19,8A3,3 0 0,1 22,11A3,3 0 0,1 19,14C17.84,14 16.84,13.34 16.34,12.38C17.2,11.27 17.62,9.85 17.47,8.42C17.92,8.15 18.44,8 19,8M5.5,18.25C5.5,16.18 8.41,14.5 12,14.5C15.59,14.5 18.5,16.18 18.5,18.25V20H5.5V18.25M0,20V18.5C0,17.11 1.89,15.94 4.45,15.6C3.86,16.28 3.5,17.22 3.5,18.25V20H0M24,20H20.5V18.25C20.5,17.22 20.14,16.28 19.55,15.6C22.11,15.94 24,17.11 24,18.5V20Z\"}},[(_vm.title)?_c('title',[_vm._v(_vm._s(_vm.title))]):_vm._e()])])])\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import mod from \"-!../vue-loader/lib/index.js??vue-loader-options!./AccountPlus.vue?vue&type=script&lang=js\"; export default mod; export * from \"-!../vue-loader/lib/index.js??vue-loader-options!./AccountPlus.vue?vue&type=script&lang=js\"","\n\n","import { render, staticRenderFns } from \"./AccountPlus.vue?vue&type=template&id=53a26aa0\"\nimport script from \"./AccountPlus.vue?vue&type=script&lang=js\"\nexport * from \"./AccountPlus.vue?vue&type=script&lang=js\"\n\n\n/* normalize component */\nimport normalizer from \"!../vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n  script,\n  render,\n  staticRenderFns,\n  false,\n  null,\n  null,\n  null\n  \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('span',_vm._b({staticClass:\"material-design-icon account-plus-icon\",attrs:{\"aria-hidden\":_vm.title ? null : 'true',\"aria-label\":_vm.title,\"role\":\"img\"},on:{\"click\":function($event){return _vm.$emit('click', $event)}}},'span',_vm.$attrs,false),[_c('svg',{staticClass:\"material-design-icon__svg\",attrs:{\"fill\":_vm.fillColor,\"width\":_vm.size,\"height\":_vm.size,\"viewBox\":\"0 0 24 24\"}},[_c('path',{attrs:{\"d\":\"M15,14C12.33,14 7,15.33 7,18V20H23V18C23,15.33 17.67,14 15,14M6,10V7H4V10H1V12H4V15H6V12H9V10M15,12A4,4 0 0,0 19,8A4,4 0 0,0 15,4A4,4 0 0,0 11,8A4,4 0 0,0 15,12Z\"}},[(_vm.title)?_c('title',[_vm._v(_vm._s(_vm.title))]):_vm._e()])])])\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n\n","import mod from \"-!../vue-loader/lib/index.js??vue-loader-options!./FolderOpen.vue?vue&type=script&lang=js\"; export default mod; export * from \"-!../vue-loader/lib/index.js??vue-loader-options!./FolderOpen.vue?vue&type=script&lang=js\"","import { render, staticRenderFns } from \"./FolderOpen.vue?vue&type=template&id=ae0c5fc0\"\nimport script from \"./FolderOpen.vue?vue&type=script&lang=js\"\nexport * from \"./FolderOpen.vue?vue&type=script&lang=js\"\n\n\n/* normalize component */\nimport normalizer from \"!../vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n  script,\n  render,\n  staticRenderFns,\n  false,\n  null,\n  null,\n  null\n  \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('span',_vm._b({staticClass:\"material-design-icon folder-open-icon\",attrs:{\"aria-hidden\":_vm.title ? null : 'true',\"aria-label\":_vm.title,\"role\":\"img\"},on:{\"click\":function($event){return _vm.$emit('click', $event)}}},'span',_vm.$attrs,false),[_c('svg',{staticClass:\"material-design-icon__svg\",attrs:{\"fill\":_vm.fillColor,\"width\":_vm.size,\"height\":_vm.size,\"viewBox\":\"0 0 24 24\"}},[_c('path',{attrs:{\"d\":\"M19,20H4C2.89,20 2,19.1 2,18V6C2,4.89 2.89,4 4,4H10L12,6H19A2,2 0 0,1 21,8H21L4,8V18L6.14,10H23.21L20.93,18.5C20.7,19.37 19.92,20 19,20Z\"}},[(_vm.title)?_c('title',[_vm._v(_vm._s(_vm.title))]):_vm._e()])])])\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import mod from \"-!../vue-loader/lib/index.js??vue-loader-options!./Key.vue?vue&type=script&lang=js\"; export default mod; export * from \"-!../vue-loader/lib/index.js??vue-loader-options!./Key.vue?vue&type=script&lang=js\"","\n\n","import { render, staticRenderFns } from \"./Key.vue?vue&type=template&id=499b3412\"\nimport script from \"./Key.vue?vue&type=script&lang=js\"\nexport * from \"./Key.vue?vue&type=script&lang=js\"\n\n\n/* normalize component */\nimport normalizer from \"!../vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n  script,\n  render,\n  staticRenderFns,\n  false,\n  null,\n  null,\n  null\n  \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('span',_vm._b({staticClass:\"material-design-icon key-icon\",attrs:{\"aria-hidden\":_vm.title ? null : 'true',\"aria-label\":_vm.title,\"role\":\"img\"},on:{\"click\":function($event){return _vm.$emit('click', $event)}}},'span',_vm.$attrs,false),[_c('svg',{staticClass:\"material-design-icon__svg\",attrs:{\"fill\":_vm.fillColor,\"width\":_vm.size,\"height\":_vm.size,\"viewBox\":\"0 0 24 24\"}},[_c('path',{attrs:{\"d\":\"M7 14C5.9 14 5 13.1 5 12S5.9 10 7 10 9 10.9 9 12 8.1 14 7 14M12.6 10C11.8 7.7 9.6 6 7 6C3.7 6 1 8.7 1 12S3.7 18 7 18C9.6 18 11.8 16.3 12.6 14H16V18H20V14H23V10H12.6Z\"}},[(_vm.title)?_c('title',[_vm._v(_vm._s(_vm.title))]):_vm._e()])])])\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n\n","import mod from \"-!../vue-loader/lib/index.js??vue-loader-options!./NetworkOutline.vue?vue&type=script&lang=js\"; export default mod; export * from \"-!../vue-loader/lib/index.js??vue-loader-options!./NetworkOutline.vue?vue&type=script&lang=js\"","import { render, staticRenderFns } from \"./NetworkOutline.vue?vue&type=template&id=8f00cb50\"\nimport script from \"./NetworkOutline.vue?vue&type=script&lang=js\"\nexport * from \"./NetworkOutline.vue?vue&type=script&lang=js\"\n\n\n/* normalize component */\nimport normalizer from \"!../vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n  script,\n  render,\n  staticRenderFns,\n  false,\n  null,\n  null,\n  null\n  \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('span',_vm._b({staticClass:\"material-design-icon network-outline-icon\",attrs:{\"aria-hidden\":_vm.title ? null : 'true',\"aria-label\":_vm.title,\"role\":\"img\"},on:{\"click\":function($event){return _vm.$emit('click', $event)}}},'span',_vm.$attrs,false),[_c('svg',{staticClass:\"material-design-icon__svg\",attrs:{\"fill\":_vm.fillColor,\"width\":_vm.size,\"height\":_vm.size,\"viewBox\":\"0 0 24 24\"}},[_c('path',{attrs:{\"d\":\"M15,20A1,1 0 0,0 14,19H13V17H17A2,2 0 0,0 19,15V5A2,2 0 0,0 17,3H7A2,2 0 0,0 5,5V15A2,2 0 0,0 7,17H11V19H10A1,1 0 0,0 9,20H2V22H9A1,1 0 0,0 10,23H14A1,1 0 0,0 15,22H22V20H15M7,15V5H17V15H7Z\"}},[(_vm.title)?_c('title',[_vm._v(_vm._s(_vm.title))]):_vm._e()])])])\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import mod from \"-!../vue-loader/lib/index.js??vue-loader-options!./PlayCircle.vue?vue&type=script&lang=js\"; export default mod; export * from \"-!../vue-loader/lib/index.js??vue-loader-options!./PlayCircle.vue?vue&type=script&lang=js\"","\n\n","import { render, staticRenderFns } from \"./PlayCircle.vue?vue&type=template&id=3cc1493c\"\nimport script from \"./PlayCircle.vue?vue&type=script&lang=js\"\nexport * from \"./PlayCircle.vue?vue&type=script&lang=js\"\n\n\n/* normalize component */\nimport normalizer from \"!../vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n  script,\n  render,\n  staticRenderFns,\n  false,\n  null,\n  null,\n  null\n  \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('span',_vm._b({staticClass:\"material-design-icon play-circle-icon\",attrs:{\"aria-hidden\":_vm.title ? null : 'true',\"aria-label\":_vm.title,\"role\":\"img\"},on:{\"click\":function($event){return _vm.$emit('click', $event)}}},'span',_vm.$attrs,false),[_c('svg',{staticClass:\"material-design-icon__svg\",attrs:{\"fill\":_vm.fillColor,\"width\":_vm.size,\"height\":_vm.size,\"viewBox\":\"0 0 24 24\"}},[_c('path',{attrs:{\"d\":\"M10,16.5V7.5L16,12M12,2A10,10 0 0,0 2,12A10,10 0 0,0 12,22A10,10 0 0,0 22,12A10,10 0 0,0 12,2Z\"}},[(_vm.title)?_c('title',[_vm._v(_vm._s(_vm.title))]):_vm._e()])])])\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import mod from \"-!../vue-loader/lib/index.js??vue-loader-options!./Tag.vue?vue&type=script&lang=js\"; export default mod; export * from \"-!../vue-loader/lib/index.js??vue-loader-options!./Tag.vue?vue&type=script&lang=js\"","\n\n","import { render, staticRenderFns } from \"./Tag.vue?vue&type=template&id=356230e0\"\nimport script from \"./Tag.vue?vue&type=script&lang=js\"\nexport * from \"./Tag.vue?vue&type=script&lang=js\"\n\n\n/* normalize component */\nimport normalizer from \"!../vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n  script,\n  render,\n  staticRenderFns,\n  false,\n  null,\n  null,\n  null\n  \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('span',_vm._b({staticClass:\"material-design-icon tag-icon\",attrs:{\"aria-hidden\":_vm.title ? null : 'true',\"aria-label\":_vm.title,\"role\":\"img\"},on:{\"click\":function($event){return _vm.$emit('click', $event)}}},'span',_vm.$attrs,false),[_c('svg',{staticClass:\"material-design-icon__svg\",attrs:{\"fill\":_vm.fillColor,\"width\":_vm.size,\"height\":_vm.size,\"viewBox\":\"0 0 24 24\"}},[_c('path',{attrs:{\"d\":\"M5.5,7A1.5,1.5 0 0,1 4,5.5A1.5,1.5 0 0,1 5.5,4A1.5,1.5 0 0,1 7,5.5A1.5,1.5 0 0,1 5.5,7M21.41,11.58L12.41,2.58C12.05,2.22 11.55,2 11,2H4C2.89,2 2,2.89 2,4V11C2,11.55 2.22,12.05 2.59,12.41L11.58,21.41C11.95,21.77 12.45,22 13,22C13.55,22 14.05,21.77 14.41,21.41L21.41,14.41C21.78,14.05 22,13.55 22,13C22,12.44 21.77,11.94 21.41,11.58Z\"}},[(_vm.title)?_c('title',[_vm._v(_vm._s(_vm.title))]):_vm._e()])])])\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import mod from \"-!../../../../../node_modules/babel-loader/lib/index.js!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./CollectivesIcon.vue?vue&type=script&lang=js\"; export default mod; export * from \"-!../../../../../node_modules/babel-loader/lib/index.js!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./CollectivesIcon.vue?vue&type=script&lang=js\"","\n\n\n\n","import { render, staticRenderFns } from \"./CollectivesIcon.vue?vue&type=template&id=dc7ddfee\"\nimport script from \"./CollectivesIcon.vue?vue&type=script&lang=js\"\nexport * from \"./CollectivesIcon.vue?vue&type=script&lang=js\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n  script,\n  render,\n  staticRenderFns,\n  false,\n  null,\n  null,\n  null\n  \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('span',_vm._b({staticClass:\"material-design-icon collectives-icon\",attrs:{\"aria-hidden\":!_vm.title,\"aria-label\":_vm.title,\"role\":\"img\"},on:{\"click\":function($event){return _vm.$emit('click', $event)}}},'span',_vm.$attrs,false),[_c('svg',{staticClass:\"material-design-icon__svg\",attrs:{\"fill\":_vm.fillColor,\"width\":_vm.size,\"height\":_vm.size,\"viewBox\":\"0 0 16 16\"}},[_c('path',{attrs:{\"d\":\"M2.9,8.8c0-1.2,0.4-2.4,1.2-3.3L0.3,6c-0.2,0-0.3,0.3-0.1,0.4l2.7,2.6C2.9,9,2.9,8.9,2.9,8.8z\"}}),_vm._v(\" \"),_c('path',{attrs:{\"d\":\"M8,3.7c0.7,0,1.3,0.1,1.9,0.4L8.2,0.6c-0.1-0.2-0.3-0.2-0.4,0L6.1,4C6.7,3.8,7.3,3.7,8,3.7z\"}}),_vm._v(\" \"),_c('path',{attrs:{\"d\":\"M3.7,11.5L3,15.2c0,0.2,0.2,0.4,0.4,0.3l3.3-1.7C5.4,13.4,4.4,12.6,3.7,11.5z\"}}),_vm._v(\" \"),_c('path',{attrs:{\"d\":\"M15.7,6l-3.7-0.5c0.7,0.9,1.2,2,1.2,3.3c0,0.1,0,0.2,0,0.3l2.7-2.6C15.9,6.3,15.9,6.1,15.7,6z\"}}),_vm._v(\" \"),_c('path',{attrs:{\"d\":\"M12.3,11.5c-0.7,1.1-1.8,1.9-3,2.2l3.3,1.7c0.2,0.1,0.4-0.1,0.4-0.3L12.3,11.5z\"}}),_vm._v(\" \"),_c('path',{attrs:{\"d\":\"M9.6,10.1c-0.4,0.5-1,0.8-1.6,0.8c-1.1,0-2-0.9-2.1-2C5.9,7.7,6.8,6.7,8,6.7c0.6,0,1.1,0.3,1.5,0.7 c0.1,0.1,0.1,0.1,0.2,0.1h1.4c0.2,0,0.4-0.2,0.3-0.5c-0.7-1.3-2.1-2.2-3.8-2.1C5.8,5,4.3,6.6,4.1,8.5C4,10.8,5.8,12.7,8,12.7 c1.6,0,2.9-0.9,3.5-2.3c0.1-0.2-0.1-0.4-0.3-0.4H9.9C9.8,10,9.7,10,9.6,10.1z\"}})])])\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","var render = function render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return _c('NcIconSvgWrapper',{staticClass:\"favorite-marker-icon\",attrs:{\"name\":_vm.t('files', 'Favorite'),\"svg\":_vm.StarSvg}})\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import mod from \"-!../../../../../node_modules/babel-loader/lib/index.js!../../../../../node_modules/ts-loader/index.js??clonedRuleSet-6.use[1]!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./FavoriteIcon.vue?vue&type=script&lang=ts\"; export default mod; export * from \"-!../../../../../node_modules/babel-loader/lib/index.js!../../../../../node_modules/ts-loader/index.js??clonedRuleSet-6.use[1]!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./FavoriteIcon.vue?vue&type=script&lang=ts\"","\n      import API from \"!../../../../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\";\n      import domAPI from \"!../../../../../node_modules/style-loader/dist/runtime/styleDomAPI.js\";\n      import insertFn from \"!../../../../../node_modules/style-loader/dist/runtime/insertBySelector.js\";\n      import setAttributes from \"!../../../../../node_modules/style-loader/dist/runtime/setAttributesWithoutAttributes.js\";\n      import insertStyleElement from \"!../../../../../node_modules/style-loader/dist/runtime/insertStyleElement.js\";\n      import styleTagTransformFn from \"!../../../../../node_modules/style-loader/dist/runtime/styleTagTransform.js\";\n      import content, * as namedExport from \"!!../../../../../node_modules/css-loader/dist/cjs.js!../../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../../node_modules/sass-loader/dist/cjs.js!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./FavoriteIcon.vue?vue&type=style&index=0&id=4505d262&prod&lang=scss&scoped=true\";\n      \n      \n\nvar options = {};\n\noptions.styleTagTransform = styleTagTransformFn;\noptions.setAttributes = setAttributes;\noptions.insert = insertFn.bind(null, \"head\");\noptions.domAPI = domAPI;\noptions.insertStyleElement = insertStyleElement;\n\nvar update = API(content, options);\n\n\n\nexport * from \"!!../../../../../node_modules/css-loader/dist/cjs.js!../../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../../node_modules/sass-loader/dist/cjs.js!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./FavoriteIcon.vue?vue&type=style&index=0&id=4505d262&prod&lang=scss&scoped=true\";\n       export default content && content.locals ? content.locals : undefined;\n","import { render, staticRenderFns } from \"./FavoriteIcon.vue?vue&type=template&id=4505d262&scoped=true\"\nimport script from \"./FavoriteIcon.vue?vue&type=script&lang=ts\"\nexport * from \"./FavoriteIcon.vue?vue&type=script&lang=ts\"\nimport style0 from \"./FavoriteIcon.vue?vue&type=style&index=0&id=4505d262&prod&lang=scss&scoped=true\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n  script,\n  render,\n  staticRenderFns,\n  false,\n  null,\n  \"4505d262\",\n  null\n  \n)\n\nexport default component.exports","/*!\n * SPDX-FileCopyrightText: 2025 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\nimport { FileType } from '@nextcloud/files';\nimport { generateUrl } from '@nextcloud/router';\nimport { getSharingToken, isPublicShare } from '@nextcloud/sharing/public';\nimport { toValue } from '@vueuse/core';\nimport { computed } from 'vue';\n/**\n * Get the preview URL for a given node.\n *\n * @param node - The node to get the preview for\n * @param options - The preview options\n * @param options.crop - Whether to crop the preview (default: true)\n * @param options.fallback - Whether to use a mime type icon as fallback (default: true)\n * @param options.size - The size of the preview in pixels (default: 128). Can be a number or a tuple [width, height]\n */\nexport function usePreviewImage(node, options = {}) {\n    return computed(() => {\n        const source = toValue(node);\n        if (!source) {\n            return;\n        }\n        if (source.type === FileType.Folder) {\n            return;\n        }\n        const fallback = toValue(options).fallback ?? true;\n        if (source.attributes['has-preview'] !== true\n            && source.mime !== undefined\n            && source.mime !== 'application/octet-stream') {\n            if (!fallback) {\n                return;\n            }\n            const previewUrl = generateUrl('/core/mimeicon?mime={mime}', {\n                mime: source.mime,\n            });\n            const url = new URL(window.location.origin + previewUrl);\n            return url.href;\n        }\n        const crop = toValue(options).crop ?? true;\n        const [sizeX, sizeY] = [toValue(options).size ?? 128].flat();\n        try {\n            const previewUrl = source.attributes.previewUrl\n                || (isPublicShare()\n                    ? generateUrl('/apps/files_sharing/publicpreview/{token}?file={file}', {\n                        token: getSharingToken(),\n                        file: source.path,\n                    })\n                    : generateUrl('/core/preview?fileId={fileid}', {\n                        fileid: String(source.fileid),\n                    }));\n            const url = new URL(window.location.origin + previewUrl);\n            // Request tiny previews\n            url.searchParams.set('x', sizeX.toString());\n            url.searchParams.set('y', (sizeY ?? sizeX).toString());\n            url.searchParams.set('mimeFallback', fallback.toString());\n            // Etag to force refresh preview on change\n            const etag = source.attributes.etag || source.mtime?.getTime() || '';\n            url.searchParams.set('v', etag.slice(0, 6));\n            // Handle cropping\n            url.searchParams.set('a', crop ? '0' : '1');\n            return url.href;\n        }\n        catch {\n            return;\n        }\n    });\n}\n","import { registerDavProperty } from '@nextcloud/files/dav';\n/**\n *\n */\nexport function initLivePhotos() {\n    registerDavProperty('nc:metadata-files-live-photo', { nc: 'http://nextcloud.org/ns' });\n}\n/**\n * @param node - The node\n */\nexport function isLivePhoto(node) {\n    return node.attributes['metadata-files-live-photo'] !== undefined;\n}\n","import mod from \"-!../../../../../node_modules/babel-loader/lib/index.js!../../../../../node_modules/ts-loader/index.js??clonedRuleSet-6.use[1]!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./FileEntryPreview.vue?vue&type=script&lang=ts\"; export default mod; export * from \"-!../../../../../node_modules/babel-loader/lib/index.js!../../../../../node_modules/ts-loader/index.js??clonedRuleSet-6.use[1]!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./FileEntryPreview.vue?vue&type=script&lang=ts\"","import { render, staticRenderFns } from \"./FileEntryPreview.vue?vue&type=template&id=88cf63a4\"\nimport script from \"./FileEntryPreview.vue?vue&type=script&lang=ts\"\nexport * from \"./FileEntryPreview.vue?vue&type=script&lang=ts\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n  script,\n  render,\n  staticRenderFns,\n  false,\n  null,\n  null,\n  null\n  \n)\n\nexport default component.exports","/*!\n * SPDX-FileCopyrightText: 2026 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\nimport { getFileActions, getFilesRegistry } from '@nextcloud/files';\nimport { toValue } from '@vueuse/core';\nimport { computed, readonly, ref } from 'vue';\nconst actions = ref();\n/**\n * Get the registered and sorted file actions.\n */\nexport function useFileActions() {\n    if (!actions.value) {\n        // if not initialized by other component yet, initialize and subscribe to registry changes\n        actions.value = getFileActions();\n        getFilesRegistry().addEventListener('register:action', () => {\n            actions.value = getFileActions();\n        });\n    }\n    return readonly(actions);\n}\n/**\n * Get the enabled file actions for the given context.\n *\n * @param context - The context to check the enabled state of the actions against\n */\nexport function useEnabledFileActions(context) {\n    const actions = useFileActions();\n    return computed(() => actions.value\n        .filter((action) => action.enabled === undefined\n        || action.enabled(toValue(context)))\n        .sort((a, b) => (a.order ?? 0) - (b.order ?? 0)));\n}\n","/*!\n * SPDX-FileCopyrightText: 2024 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\nimport { computed } from 'vue';\nimport { useRoute } from 'vue-router/composables';\n/**\n * Get information about the current route\n */\nexport function useRouteParameters() {\n    const route = useRoute();\n    /**\n     * Get the path of the current active directory\n     */\n    const directory = computed(() => String(route.query.dir || '/')\n        // Remove any trailing slash but leave root slash\n        .replace(/^(.+)\\/$/, '$1'));\n    /**\n     * Get the current fileId used on the route\n     */\n    const fileId = computed(() => {\n        const fileId = Number.parseInt(route.params.fileid ?? '0') || null;\n        return Number.isNaN(fileId) ? null : fileId;\n    });\n    /**\n     * State of `openFile` route param\n     */\n    const openFile = computed(() => 'openfile' in route.query\n        && (typeof route.query.openfile !== 'string'\n            || route.query.openfile.toLocaleLowerCase() !== 'false'));\n    // if `opendetails` is set it is considered truthy, but allow to explicitly set it to 'false'\n    const openDetails = computed(() => 'opendetails' in route.query\n        && (typeof route.query.opendetails !== 'string'\n            || route.query.opendetails.toLocaleLowerCase() !== 'false'));\n    return {\n        /** Path of currently open directory */\n        directory,\n        /** Current active fileId */\n        fileId,\n        /** Should the active node should be opened (`openFile` route param) */\n        openFile,\n        /** Should the details sidebar be shown (`openDetails` route param) */\n        openDetails,\n    };\n}\n","/**\n * SPDX-FileCopyrightText: 2023 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\nimport { defineStore } from 'pinia';\nexport const useActionsMenuStore = defineStore('actionsmenu', {\n    state: () => ({\n        opened: null,\n    }),\n});\n","/*!\n * SPDX-FileCopyrightText: 2023 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\nimport InformationSvg from '@mdi/svg/svg/information-outline.svg?raw';\nimport { getSidebar, Permission } from '@nextcloud/files';\nimport { t } from '@nextcloud/l10n';\nimport { isPublicShare } from '@nextcloud/sharing/public';\nimport logger from '../logger.ts';\nexport const ACTION_DETAILS = 'details';\nexport const action = {\n    id: ACTION_DETAILS,\n    displayName: () => t('files', 'Details'),\n    iconSvgInline: () => InformationSvg,\n    // Sidebar currently supports user folder only, /files/USER\n    enabled: ({ nodes }) => {\n        const node = nodes[0];\n        if (nodes.length !== 1 || !node) {\n            return false;\n        }\n        const sidebar = getSidebar();\n        if (!sidebar.available) {\n            return false;\n        }\n        if (isPublicShare()) {\n            return false;\n        }\n        return node.root.startsWith('/files/') && node.permissions !== Permission.NONE;\n    },\n    async exec({ nodes }) {\n        const sidebar = getSidebar();\n        const [node] = nodes;\n        try {\n            // If the sidebar is already open for the current file, do nothing\n            if (sidebar.node?.source === node.source) {\n                logger.debug('Sidebar already open for this file', { node });\n                return null;\n            }\n            sidebar.open(node, 'sharing');\n            return null;\n        }\n        catch (error) {\n            logger.error('Error while opening sidebar', { error });\n            return false;\n        }\n    },\n    order: -50,\n    hotkey: {\n        key: 'D',\n        description: t('files', 'Open the details sidebar'),\n    },\n};\n","import mod from \"-!../vue-loader/lib/index.js??vue-loader-options!./FileMultiple.vue?vue&type=script&lang=js\"; export default mod; export * from \"-!../vue-loader/lib/index.js??vue-loader-options!./FileMultiple.vue?vue&type=script&lang=js\"","\n\n","import { render, staticRenderFns } from \"./FileMultiple.vue?vue&type=template&id=15fca808\"\nimport script from \"./FileMultiple.vue?vue&type=script&lang=js\"\nexport * from \"./FileMultiple.vue?vue&type=script&lang=js\"\n\n\n/* normalize component */\nimport normalizer from \"!../vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n  script,\n  render,\n  staticRenderFns,\n  false,\n  null,\n  null,\n  null\n  \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('span',_vm._b({staticClass:\"material-design-icon file-multiple-icon\",attrs:{\"aria-hidden\":_vm.title ? null : 'true',\"aria-label\":_vm.title,\"role\":\"img\"},on:{\"click\":function($event){return _vm.$emit('click', $event)}}},'span',_vm.$attrs,false),[_c('svg',{staticClass:\"material-design-icon__svg\",attrs:{\"fill\":_vm.fillColor,\"width\":_vm.size,\"height\":_vm.size,\"viewBox\":\"0 0 24 24\"}},[_c('path',{attrs:{\"d\":\"M15,7H20.5L15,1.5V7M8,0H16L22,6V18A2,2 0 0,1 20,20H8C6.89,20 6,19.1 6,18V2A2,2 0 0,1 8,0M4,4V22H20V24H4A2,2 0 0,1 2,22V4H4Z\"}},[(_vm.title)?_c('title',[_vm._v(_vm._s(_vm.title))]):_vm._e()])])])\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","/**\n * SPDX-FileCopyrightText: 2021 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\nimport { FileType, } from '@nextcloud/files';\nimport { n } from '@nextcloud/l10n';\n/**\n * Extract dir and name from file path\n *\n * @param path - The full path\n * @return [dirPath, fileName]\n */\nexport function extractFilePaths(path) {\n    const pathSections = path.split('/');\n    const fileName = pathSections[pathSections.length - 1];\n    const dirPath = pathSections.slice(0, pathSections.length - 1).join('/');\n    return [dirPath, fileName];\n}\n/**\n * Generate a translated summary of an array of nodes\n *\n * @param nodes - The nodes to summarize\n * @param hidden - The number of hidden nodes\n */\nexport function getSummaryFor(nodes, hidden = 0) {\n    const fileCount = nodes.filter((node) => node.type === FileType.File).length;\n    const folderCount = nodes.filter((node) => node.type === FileType.Folder).length;\n    const summary = [];\n    if (fileCount > 0 || folderCount === 0) {\n        const fileSummary = n('files', '%n file', '%n files', fileCount);\n        summary.push(fileSummary);\n    }\n    if (folderCount > 0) {\n        const folderSummary = n('files', '%n folder', '%n folders', folderCount);\n        summary.push(folderSummary);\n    }\n    if (hidden > 0) {\n        // TRANSLATORS: This is the number of hidden files or folders\n        const hiddenSummary = n('files', '%n hidden', '%n hidden', hidden);\n        summary.push(hiddenSummary);\n    }\n    return summary.join(' · ');\n}\n","var render = function render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return _c('div',{staticClass:\"files-list-drag-image\"},[_c('span',{staticClass:\"files-list-drag-image__icon\"},[_c('span',{ref:\"previewImg\"}),_vm._v(\" \"),(_vm.isSingleFolder)?_c('FolderIcon'):_c('FileMultipleIcon')],1),_vm._v(\" \"),_c('span',{staticClass:\"files-list-drag-image__name\"},[_vm._v(_vm._s(_vm.name))])])\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import mod from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/ts-loader/index.js??clonedRuleSet-6.use[1]!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./DragAndDropPreview.vue?vue&type=script&lang=ts\"; export default mod; export * from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/ts-loader/index.js??clonedRuleSet-6.use[1]!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./DragAndDropPreview.vue?vue&type=script&lang=ts\"","\n      import API from \"!../../../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\";\n      import domAPI from \"!../../../../node_modules/style-loader/dist/runtime/styleDomAPI.js\";\n      import insertFn from \"!../../../../node_modules/style-loader/dist/runtime/insertBySelector.js\";\n      import setAttributes from \"!../../../../node_modules/style-loader/dist/runtime/setAttributesWithoutAttributes.js\";\n      import insertStyleElement from \"!../../../../node_modules/style-loader/dist/runtime/insertStyleElement.js\";\n      import styleTagTransformFn from \"!../../../../node_modules/style-loader/dist/runtime/styleTagTransform.js\";\n      import content, * as namedExport from \"!!../../../../node_modules/css-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/sass-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./DragAndDropPreview.vue?vue&type=style&index=0&id=6c14765c&prod&lang=scss\";\n      \n      \n\nvar options = {};\n\noptions.styleTagTransform = styleTagTransformFn;\noptions.setAttributes = setAttributes;\noptions.insert = insertFn.bind(null, \"head\");\noptions.domAPI = domAPI;\noptions.insertStyleElement = insertStyleElement;\n\nvar update = API(content, options);\n\n\n\nexport * from \"!!../../../../node_modules/css-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/sass-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./DragAndDropPreview.vue?vue&type=style&index=0&id=6c14765c&prod&lang=scss\";\n       export default content && content.locals ? content.locals : undefined;\n","import { render, staticRenderFns } from \"./DragAndDropPreview.vue?vue&type=template&id=6c14765c\"\nimport script from \"./DragAndDropPreview.vue?vue&type=script&lang=ts\"\nexport * from \"./DragAndDropPreview.vue?vue&type=script&lang=ts\"\nimport style0 from \"./DragAndDropPreview.vue?vue&type=style&index=0&id=6c14765c&prod&lang=scss\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n  script,\n  render,\n  staticRenderFns,\n  false,\n  null,\n  null,\n  null\n  \n)\n\nexport default component.exports","import Vue from 'vue';\nimport DragAndDropPreview from '../components/DragAndDropPreview.vue';\nconst Preview = Vue.extend(DragAndDropPreview);\nlet preview;\n/**\n *\n * @param nodes\n */\nexport async function getDragAndDropPreview(nodes) {\n    return new Promise((resolve) => {\n        if (!preview) {\n            preview = new Preview().$mount();\n            document.body.appendChild(preview.$el);\n        }\n        preview.update(nodes);\n        preview.$on('loaded', () => {\n            resolve(preview.$el);\n            preview.$off('loaded');\n        });\n    });\n}\n","/**\n * SPDX-FileCopyrightText: 2024 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\nimport { showError } from '@nextcloud/dialogs';\nimport { FileType, Folder, File as NcFile, Node, NodeStatus, Permission } from '@nextcloud/files';\nimport { t } from '@nextcloud/l10n';\nimport { generateUrl } from '@nextcloud/router';\nimport { isPublicShare } from '@nextcloud/sharing/public';\nimport { vOnClickOutside } from '@vueuse/components';\nimport { extname } from 'path';\nimport Vue, { computed, defineComponent } from 'vue';\nimport { action as sidebarAction } from '../actions/sidebarAction.ts';\nimport logger from '../logger.ts';\nimport { dataTransferToFileTree, onDropExternalFiles, onDropInternalFiles } from '../services/DropService.ts';\nimport { getDragAndDropPreview } from '../utils/dragUtils.ts';\nimport { hashCode } from '../utils/hashUtils.ts';\nimport { isDownloadable } from '../utils/permissions.ts';\nVue.directive('onClickOutside', vOnClickOutside);\nexport default defineComponent({\n    props: {\n        source: {\n            type: [Folder, NcFile, Node],\n            required: true,\n        },\n        nodes: {\n            type: Array,\n            required: true,\n        },\n        isMtimeAvailable: {\n            type: Boolean,\n            default: false,\n        },\n        compact: {\n            type: Boolean,\n            default: false,\n        },\n    },\n    provide() {\n        return {\n            defaultFileAction: computed(() => this.defaultFileAction),\n            enabledFileActions: computed(() => this.enabledFileActions),\n        };\n    },\n    data() {\n        return {\n            dragover: false,\n            gridMode: false,\n        };\n    },\n    computed: {\n        fileid() {\n            return this.source.fileid ?? 0;\n        },\n        uniqueId() {\n            return hashCode(this.source.source);\n        },\n        isLoading() {\n            return this.source.status === NodeStatus.LOADING;\n        },\n        /**\n         * The display name of the current node\n         * Either the nodes filename or a custom display name (e.g. for shares)\n         */\n        displayName() {\n            // basename fallback needed for apps using old `@nextcloud/files` prior 3.6.0\n            return this.source.displayname || this.source.basename;\n        },\n        /**\n         * The display name without extension\n         */\n        basename() {\n            if (this.extension === '') {\n                return this.displayName;\n            }\n            return this.displayName.slice(0, 0 - this.extension.length);\n        },\n        /**\n         * The extension of the file\n         */\n        extension() {\n            if (this.source.type === FileType.Folder) {\n                return '';\n            }\n            return extname(this.displayName);\n        },\n        draggingFiles() {\n            return this.draggingStore.dragging;\n        },\n        selectedFiles() {\n            return this.selectionStore.selected;\n        },\n        isSelected() {\n            return this.selectedFiles.includes(this.source.source);\n        },\n        isRenaming() {\n            return this.renamingStore.renamingNode === this.source;\n        },\n        isRenamingSmallScreen() {\n            return this.isRenaming && this.isNarrow;\n        },\n        isActive() {\n            // Not using activeNode here because we want to\n            // be reactive to the url change directly\n            return String(this.fileid) === String(this.currentRouteFileId);\n        },\n        /**\n         * Check if the source is in a failed state after an API request\n         */\n        isFailedSource() {\n            return this.source.status === NodeStatus.FAILED;\n        },\n        canDrag() {\n            if (this.isRenaming) {\n                return false;\n            }\n            // Ignore if the node is not available\n            if (this.isFailedSource) {\n                return false;\n            }\n            const canDrag = (node) => {\n                return (node?.permissions & Permission.UPDATE) !== 0;\n            };\n            // If we're dragging a selection, we need to check all files\n            if (this.selectedFiles.length > 0) {\n                const nodes = this.selectedFiles.map((source) => this.filesStore.getNode(source));\n                return nodes.every(canDrag);\n            }\n            return canDrag(this.source);\n        },\n        canDrop() {\n            if (this.source.type !== FileType.Folder) {\n                return false;\n            }\n            // Ignore if the node is not available\n            if (this.isFailedSource) {\n                return false;\n            }\n            // If the current folder is also being dragged, we can't drop it on itself\n            if (this.draggingFiles.includes(this.source.source)) {\n                return false;\n            }\n            return (this.source.permissions & Permission.CREATE) !== 0;\n        },\n        openedMenu: {\n            get() {\n                return this.actionsMenuStore.opened === this.uniqueId.toString();\n            },\n            set(opened) {\n                // If the menu is opened on another file entry, we ignore closed events\n                if (opened === false && this.actionsMenuStore.opened !== this.uniqueId.toString()) {\n                    return;\n                }\n                // If opened, we specify the current file id\n                // else we set it to null to close the menu\n                this.actionsMenuStore.opened = opened\n                    ? this.uniqueId.toString()\n                    : null;\n            },\n        },\n        mtime() {\n            // If the mtime is not a valid date, return it as is\n            if (this.source.mtime && !isNaN(this.source.mtime.getDate())) {\n                return this.source.mtime;\n            }\n            if (this.source.crtime && !isNaN(this.source.crtime.getDate())) {\n                return this.source.crtime;\n            }\n            return null;\n        },\n        mtimeOpacity() {\n            if (!this.mtime) {\n                return {};\n            }\n            // The time when we start reducing the opacity\n            const maxOpacityTime = 31 * 24 * 60 * 60 * 1000; // 31 days\n            // everything older than the maxOpacityTime will have the same value\n            const timeDiff = Date.now() - this.mtime.getTime();\n            if (timeDiff < 0) {\n                // this means we have an invalid mtime which is in the future!\n                return {};\n            }\n            // inversed time difference from 0 to maxOpacityTime (which would mean today)\n            const opacityTime = Math.max(0, maxOpacityTime - timeDiff);\n            // 100 = today, 0 = 31 days ago or older\n            const percentage = Math.round(opacityTime * 100 / maxOpacityTime);\n            return {\n                color: `color-mix(in srgb, var(--color-main-text) ${percentage}%, var(--color-text-maxcontrast))`,\n            };\n        },\n        /**\n         * Sorted actions that are enabled for this node\n         */\n        enabledFileActions() {\n            if (this.source.status === NodeStatus.FAILED) {\n                return [];\n            }\n            return this.actions\n                .filter((action) => {\n                if (!action.enabled) {\n                    return true;\n                }\n                // In case something goes wrong, since we don't want to break\n                // the entire list, we filter out actions that throw an error.\n                try {\n                    return action.enabled({\n                        nodes: [this.source],\n                        view: this.activeView,\n                        folder: this.activeFolder,\n                        contents: this.nodes,\n                    });\n                }\n                catch (error) {\n                    logger.error('Error while checking action', { action, error });\n                    return false;\n                }\n            })\n                .sort((a, b) => (a.order || 0) - (b.order || 0));\n        },\n        defaultFileAction() {\n            return this.enabledFileActions.find((action) => action.default !== undefined);\n        },\n    },\n    watch: {\n        /**\n         * When the source changes, reset the preview\n         * and fetch the new one.\n         *\n         * @param newSource The new value of the source prop\n         * @param oldSource The previous value\n         */\n        source(newSource, oldSource) {\n            if (newSource.source !== oldSource.source) {\n                this.resetState();\n            }\n        },\n        openedMenu() {\n            // Checking if the menu is really closed and not\n            // just a change in the open state to another file entry.\n            if (this.actionsMenuStore.opened === null) {\n                // Reset any right menu position potentially set\n                logger.debug('All actions menu closed, resetting right menu position...');\n                const root = this.$el?.closest('main.app-content');\n                if (root !== null) {\n                    root.style.removeProperty('--mouse-pos-x');\n                    root.style.removeProperty('--mouse-pos-y');\n                }\n            }\n        },\n    },\n    beforeDestroy() {\n        this.resetState();\n    },\n    methods: {\n        resetState() {\n            // Reset the preview state\n            this.$refs?.preview?.reset?.();\n            // Close menu\n            this.openedMenu = false;\n        },\n        // Open the actions menu on right click\n        onRightClick(event) {\n            // If already opened, fallback to default browser\n            if (this.openedMenu) {\n                return;\n            }\n            // Ignore right click if the node is not available\n            if (this.isFailedSource) {\n                return;\n            }\n            // The grid mode is compact enough to not care about\n            // the actions menu mouse position\n            if (!this.gridMode) {\n                // Actions menu is contained within the app content\n                const root = this.$el?.closest('main.app-content');\n                const contentRect = root.getBoundingClientRect();\n                // Using Math.min/max to prevent the menu from going out of the AppContent\n                // 200 = max width of the menu\n                logger.debug('Setting actions menu position...');\n                root.style.setProperty('--mouse-pos-x', Math.max(0, event.clientX - contentRect.left - 200) + 'px');\n                root.style.setProperty('--mouse-pos-y', Math.max(0, event.clientY - contentRect.top) + 'px');\n            }\n            else {\n                // Reset any right menu position potentially set\n                const root = this.$el?.closest('main.app-content');\n                root.style.removeProperty('--mouse-pos-x');\n                root.style.removeProperty('--mouse-pos-y');\n            }\n            // If the clicked row is in the selection, open global menu\n            const isMoreThanOneSelected = this.selectedFiles.length > 1;\n            this.actionsMenuStore.opened = this.isSelected && isMoreThanOneSelected ? 'global' : this.uniqueId.toString();\n            // Prevent any browser defaults\n            event.preventDefault();\n            event.stopPropagation();\n        },\n        execDefaultAction(event) {\n            // Ignore click if we are renaming\n            if (this.isRenaming) {\n                return;\n            }\n            // Ignore right click (button & 2) and any auxiliary button expect mouse-wheel (button & 4)\n            if (Boolean(event.button & 2) || event.button > 4) {\n                return;\n            }\n            // Ignore if the node is not available\n            if (this.isFailedSource) {\n                return;\n            }\n            // if ctrl+click / cmd+click (MacOS uses the meta key) or middle mouse button (button & 4), open in new tab\n            // also if there is no default action use this as a fallback\n            const metaKeyPressed = event.ctrlKey || event.metaKey || event.button === 1;\n            if (metaKeyPressed || !this.defaultFileAction) {\n                // If no download permission, then we can not allow to download (direct link) the files\n                if (!isDownloadable(this.source)) {\n                    return;\n                }\n                const url = isPublicShare()\n                    ? this.source.encodedSource\n                    : generateUrl('/f/{fileId}', { fileId: this.fileid });\n                event.preventDefault();\n                event.stopPropagation();\n                // Open the file in a new tab if the meta key or the middle mouse button is clicked\n                window.open(url, metaKeyPressed ? '_blank' : '_self');\n                return;\n            }\n            // every special case handled so just execute the default action\n            event.preventDefault();\n            event.stopPropagation();\n            // Execute the first default action if any\n            this.defaultFileAction.exec({\n                nodes: [this.source],\n                folder: this.activeFolder,\n                contents: this.nodes,\n                view: this.activeView,\n            });\n        },\n        openDetailsIfAvailable(event) {\n            event.preventDefault();\n            event.stopPropagation();\n            if (sidebarAction?.enabled?.({\n                nodes: [this.source],\n                folder: this.activeFolder,\n                contents: this.nodes,\n                view: this.activeView,\n            })) {\n                sidebarAction.exec({\n                    nodes: [this.source],\n                    folder: this.activeFolder,\n                    contents: this.nodes,\n                    view: this.activeView,\n                });\n            }\n        },\n        onDragOver(event) {\n            this.dragover = this.canDrop;\n            if (!this.canDrop) {\n                event.dataTransfer.dropEffect = 'none';\n                return;\n            }\n            // Handle copy/move drag and drop\n            if (event.ctrlKey) {\n                event.dataTransfer.dropEffect = 'copy';\n            }\n            else {\n                event.dataTransfer.dropEffect = 'move';\n            }\n        },\n        onDragLeave(event) {\n            // Counter bubbling, make sure we're ending the drag\n            // only when we're leaving the current element\n            const currentTarget = event.currentTarget;\n            if (currentTarget?.contains(event.relatedTarget)) {\n                return;\n            }\n            this.dragover = false;\n        },\n        async onDragStart(event) {\n            event.stopPropagation();\n            if (!this.canDrag || !this.fileid) {\n                event.preventDefault();\n                event.stopPropagation();\n                return;\n            }\n            logger.debug('Drag started', { event });\n            // Make sure that we're not dragging a file like the preview\n            event.dataTransfer?.clearData?.();\n            // Reset any renaming\n            this.renamingStore.$reset();\n            // Dragging set of files, if we're dragging a file\n            // that is already selected, we use the entire selection\n            if (this.selectedFiles.includes(this.source.source)) {\n                this.draggingStore.set(this.selectedFiles);\n            }\n            else {\n                this.draggingStore.set([this.source.source]);\n            }\n            const nodes = this.draggingStore.dragging\n                .map((source) => this.filesStore.getNode(source));\n            const image = await getDragAndDropPreview(nodes);\n            event.dataTransfer?.setDragImage(image, -10, -10);\n        },\n        onDragEnd() {\n            this.draggingStore.reset();\n            this.dragover = false;\n            logger.debug('Drag ended');\n        },\n        async onDrop(event) {\n            // skip if native drop like text drag and drop from files names\n            if (!this.draggingFiles && !event.dataTransfer?.items?.length) {\n                return;\n            }\n            event.preventDefault();\n            event.stopPropagation();\n            // Caching the selection\n            const selection = this.draggingFiles;\n            const items = [...event.dataTransfer?.items || []];\n            // We need to process the dataTransfer ASAP before the\n            // browser clears it. This is why we cache the items too.\n            const fileTree = await dataTransferToFileTree(items);\n            // We might not have the target directory fetched yet\n            const contents = await this.activeView?.getContents(this.source.path);\n            const folder = contents?.folder;\n            if (!folder) {\n                showError(this.t('files', 'Target folder does not exist any more'));\n                return;\n            }\n            // If another button is pressed, cancel it. This\n            // allows cancelling the drag with the right click.\n            if (!this.canDrop || event.button) {\n                return;\n            }\n            const isCopy = event.ctrlKey;\n            this.dragover = false;\n            logger.debug('Dropped', { event, folder, selection, fileTree });\n            // Check whether we're uploading files\n            if (selection.length === 0 && fileTree.contents.length > 0) {\n                await onDropExternalFiles(fileTree, folder, contents.contents);\n                return;\n            }\n            // Else we're moving/copying files\n            const nodes = selection.map((source) => this.filesStore.getNode(source));\n            await onDropInternalFiles(nodes, folder, contents.contents, isCopy);\n            // Reset selection after we dropped the files\n            // if the dropped files are within the selection\n            if (selection.some((source) => this.selectedFiles.includes(source))) {\n                logger.debug('Dropped selection, resetting select store...');\n                this.selectionStore.reset();\n            }\n        },\n        t,\n    },\n});\n","/**\n * SPDX-FileCopyrightText: 2023 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\n/**\n * Simple non-secure hashing function similar to Java's `hashCode`\n *\n * @param str The string to hash\n * @return a non secure hash of the string\n */\nexport function hashCode(str) {\n    let hash = 0;\n    for (let i = 0; i < str.length; i++) {\n        hash = ((hash << 5) - hash + str.charCodeAt(i)) | 0;\n    }\n    return (hash >>> 0);\n}\n","/*!\n * SPDX-FileCopyrightText: 2024 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\nimport { Permission } from '@nextcloud/files';\n/**\n * Check permissions on the node if it can be downloaded\n *\n * @param node The node to check\n * @return True if downloadable, false otherwise\n */\nexport function isDownloadable(node) {\n    if ((node.permissions & Permission.READ) === 0) {\n        return false;\n    }\n    // check hide-download property of shares\n    if (node.attributes['hide-download'] === true\n        || node.attributes['hide-download'] === 'true') {\n        return false;\n    }\n    // If the mount type is a share, ensure it got download permissions.\n    if (node.attributes['share-attributes']) {\n        const shareAttributes = JSON.parse(node.attributes['share-attributes'] || '[]');\n        const downloadAttribute = shareAttributes.find(({ scope, key }) => scope === 'permissions' && key === 'download');\n        if (downloadAttribute !== undefined) {\n            return downloadAttribute.value === true;\n        }\n    }\n    return true;\n}\n/**\n * Check permissions on the node if it can be synced/open locally\n *\n * @param node The node to check\n * @return True if syncable, false otherwise\n */\nexport function isSyncable(node) {\n    if (!node.isDavResource) {\n        return false;\n    }\n    if ((node.permissions & Permission.WRITE) === 0) {\n        return false;\n    }\n    // Syncable has the same permissions as downloadable for now\n    return isDownloadable(node);\n}\n","var render = function render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return _c('tr',_vm._g({staticClass:\"files-list__row\",class:{\n\t\t'files-list__row--dragover': _vm.dragover,\n\t\t'files-list__row--loading': _vm.isLoading,\n\t\t'files-list__row--active': _vm.isActive,\n\t},attrs:{\"data-cy-files-list-row\":\"\",\"data-cy-files-list-row-fileid\":_vm.fileid,\"data-cy-files-list-row-name\":_vm.source.basename,\"draggable\":_vm.canDrag}},_vm.rowListeners),[(_vm.isFailedSource)?_c('span',{staticClass:\"files-list__row--failed\"}):_vm._e(),_vm._v(\" \"),_c('FileEntryCheckbox',{attrs:{\"fileid\":_vm.fileid,\"is-loading\":_vm.isLoading,\"nodes\":_vm.nodes,\"source\":_vm.source}}),_vm._v(\" \"),_c('td',{staticClass:\"files-list__row-name\",attrs:{\"data-cy-files-list-row-name\":\"\"}},[_c('FileEntryPreview',{ref:\"preview\",attrs:{\"source\":_vm.source,\"dragover\":_vm.dragover},nativeOn:{\"auxclick\":function($event){return _vm.execDefaultAction.apply(null, arguments)},\"click\":function($event){return _vm.execDefaultAction.apply(null, arguments)}}}),_vm._v(\" \"),_c('FileEntryName',{ref:\"name\",attrs:{\"basename\":_vm.basename,\"extension\":_vm.extension,\"source\":_vm.source},nativeOn:{\"auxclick\":function($event){return _vm.execDefaultAction.apply(null, arguments)},\"click\":function($event){return _vm.execDefaultAction.apply(null, arguments)}}})],1),_vm._v(\" \"),_c('FileEntryActions',{directives:[{name:\"show\",rawName:\"v-show\",value:(!_vm.isRenamingSmallScreen),expression:\"!isRenamingSmallScreen\"}],ref:\"actions\",class:`files-list__row-actions-${_vm.uniqueId}`,attrs:{\"opened\":_vm.openedMenu,\"source\":_vm.source},on:{\"update:opened\":function($event){_vm.openedMenu=$event}}}),_vm._v(\" \"),(_vm.isMimeAvailable)?_c('td',{staticClass:\"files-list__row-mime\",attrs:{\"title\":_vm.mime,\"data-cy-files-list-row-mime\":\"\"},on:{\"click\":_vm.openDetailsIfAvailable}},[_c('span',[_vm._v(_vm._s(_vm.mime))])]):_vm._e(),_vm._v(\" \"),(!_vm.compact && _vm.isSizeAvailable)?_c('td',{staticClass:\"files-list__row-size\",style:(_vm.sizeOpacity),attrs:{\"data-cy-files-list-row-size\":\"\"},on:{\"click\":_vm.openDetailsIfAvailable}},[_c('span',[_vm._v(_vm._s(_vm.size))])]):_vm._e(),_vm._v(\" \"),(!_vm.compact && _vm.isMtimeAvailable)?_c('td',{staticClass:\"files-list__row-mtime\",style:(_vm.mtimeOpacity),attrs:{\"data-cy-files-list-row-mtime\":\"\"},on:{\"click\":_vm.openDetailsIfAvailable}},[(_vm.mtime)?_c('NcDateTime',{attrs:{\"ignore-seconds\":\"\",\"timestamp\":_vm.mtime}}):_c('span',[_vm._v(_vm._s(_vm.t('files', 'Unknown date')))])],1):_vm._e(),_vm._v(\" \"),_vm._l((_vm.columns),function(column){return _c('td',{key:column.id,staticClass:\"files-list__row-column-custom\",class:`files-list__row-${_vm.activeView.id}-${column.id}`,attrs:{\"data-cy-files-list-row-column-custom\":column.id},on:{\"click\":_vm.openDetailsIfAvailable}},[_c('CustomElementRender',{attrs:{\"active-folder\":_vm.activeFolder,\"active-view\":_vm.activeView,\"render\":column.render,\"source\":_vm.source}})],1)})],2)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import mod from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/ts-loader/index.js??clonedRuleSet-6.use[1]!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./FileEntry.vue?vue&type=script&lang=ts\"; export default mod; export * from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/ts-loader/index.js??clonedRuleSet-6.use[1]!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./FileEntry.vue?vue&type=script&lang=ts\"","import { render, staticRenderFns } from \"./FileEntry.vue?vue&type=template&id=4f64df34\"\nimport script from \"./FileEntry.vue?vue&type=script&lang=ts\"\nexport * from \"./FileEntry.vue?vue&type=script&lang=ts\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n  script,\n  render,\n  staticRenderFns,\n  false,\n  null,\n  null,\n  null\n  \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return _c('tr',{staticClass:\"files-list__row\",class:{ 'files-list__row--active': _vm.isActive, 'files-list__row--dragover': _vm.dragover, 'files-list__row--loading': _vm.isLoading },attrs:{\"data-cy-files-list-row\":\"\",\"data-cy-files-list-row-fileid\":_vm.fileid,\"data-cy-files-list-row-name\":_vm.source.basename,\"draggable\":_vm.canDrag},on:{\"contextmenu\":_vm.onRightClick,\"dragover\":_vm.onDragOver,\"dragleave\":_vm.onDragLeave,\"dragstart\":_vm.onDragStart,\"dragend\":_vm.onDragEnd,\"drop\":_vm.onDrop}},[(_vm.isFailedSource)?_c('span',{staticClass:\"files-list__row--failed\"}):_vm._e(),_vm._v(\" \"),_c('FileEntryCheckbox',{attrs:{\"fileid\":_vm.fileid,\"is-loading\":_vm.isLoading,\"nodes\":_vm.nodes,\"source\":_vm.source}}),_vm._v(\" \"),_c('td',{staticClass:\"files-list__row-name\",attrs:{\"data-cy-files-list-row-name\":\"\"}},[_c('FileEntryPreview',{ref:\"preview\",attrs:{\"dragover\":_vm.dragover,\"grid-mode\":true,\"source\":_vm.source},nativeOn:{\"auxclick\":function($event){return _vm.execDefaultAction.apply(null, arguments)},\"click\":function($event){return _vm.execDefaultAction.apply(null, arguments)}}}),_vm._v(\" \"),_c('FileEntryName',{ref:\"name\",attrs:{\"basename\":_vm.basename,\"extension\":_vm.extension,\"source\":_vm.source},nativeOn:{\"auxclick\":function($event){return _vm.execDefaultAction.apply(null, arguments)},\"click\":function($event){return _vm.execDefaultAction.apply(null, arguments)}}})],1),_vm._v(\" \"),(!_vm.compact && _vm.isMtimeAvailable)?_c('td',{staticClass:\"files-list__row-mtime\",style:(_vm.mtimeOpacity),attrs:{\"data-cy-files-list-row-mtime\":\"\"},on:{\"click\":_vm.openDetailsIfAvailable}},[(_vm.mtime)?_c('NcDateTime',{attrs:{\"ignore-seconds\":\"\",\"timestamp\":_vm.mtime}}):_vm._e()],1):_vm._e(),_vm._v(\" \"),_c('FileEntryActions',{ref:\"actions\",class:`files-list__row-actions-${_vm.uniqueId}`,attrs:{\"opened\":_vm.openedMenu,\"grid-mode\":true,\"source\":_vm.source},on:{\"update:opened\":function($event){_vm.openedMenu=$event}}})],1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import mod from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/ts-loader/index.js??clonedRuleSet-6.use[1]!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./FileEntryGrid.vue?vue&type=script&lang=ts\"; export default mod; export * from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/ts-loader/index.js??clonedRuleSet-6.use[1]!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./FileEntryGrid.vue?vue&type=script&lang=ts\"","import { render, staticRenderFns } from \"./FileEntryGrid.vue?vue&type=template&id=c13970d8\"\nimport script from \"./FileEntryGrid.vue?vue&type=script&lang=ts\"\nexport * from \"./FileEntryGrid.vue?vue&type=script&lang=ts\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n  script,\n  render,\n  staticRenderFns,\n  false,\n  null,\n  null,\n  null\n  \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return (_setup.activeChips.length > 0)?_c('ul',{class:_vm.$style.fileListFilterChips,attrs:{\"aria-label\":_setup.t('files', 'Active filters')}},_vm._l((_setup.activeChips),function(chip,index){return _c('li',{key:index},[_c(_setup.NcChip,{attrs:{\"aria-label-close\":_setup.t('files', 'Remove filter'),\"icon-svg\":chip.icon,\"text\":chip.text},on:{\"close\":chip.onclick},scopedSlots:_vm._u([(chip.user)?{key:\"icon\",fn:function(){return [_c(_setup.NcAvatar,{attrs:{\"disable-menu\":\"\",\"hide-status\":\"\",\"size\":24,\"user\":chip.user}})]},proxy:true}:null],null,true)})],1)}),0):_vm._e()\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n      import API from \"!../../../../style-loader/dist/runtime/injectStylesIntoStyleTag.js\";\n      import domAPI from \"!../../../../style-loader/dist/runtime/styleDomAPI.js\";\n      import insertFn from \"!../../../../style-loader/dist/runtime/insertBySelector.js\";\n      import setAttributes from \"!../../../../style-loader/dist/runtime/setAttributesWithoutAttributes.js\";\n      import insertStyleElement from \"!../../../../style-loader/dist/runtime/insertStyleElement.js\";\n      import styleTagTransformFn from \"!../../../../style-loader/dist/runtime/styleTagTransform.js\";\n      import content, * as namedExport from \"!!../../../../css-loader/dist/cjs.js!./NcChip-DLfUzq07.css\";\n      \n      \n\nvar options = {};\n\noptions.styleTagTransform = styleTagTransformFn;\noptions.setAttributes = setAttributes;\noptions.insert = insertFn.bind(null, \"head\");\noptions.domAPI = domAPI;\noptions.insertStyleElement = insertStyleElement;\n\nvar update = API(content, options);\n\n\n\nexport * from \"!!../../../../css-loader/dist/cjs.js!./NcChip-DLfUzq07.css\";\n       export default content && content.locals ? content.locals : undefined;\n","import '../assets/NcChip-DLfUzq07.css';\nimport { c as mdiClose } from \"../chunks/mdi-DkJglNiS.mjs\";\nimport { useSlots, computed } from \"vue\";\nimport { N as NcActionButton } from \"../chunks/NcActionButton-1gSJfFUC.mjs\";\nimport { N as NcActions } from \"../chunks/NcActions-B7LKaVy0.mjs\";\nimport { N as NcIconSvgWrapper } from \"../chunks/NcIconSvgWrapper-Bui9PhAS.mjs\";\nimport { r as register, m as t18, a as t } from \"../chunks/_l10n-Dpecfv0B.mjs\";\nimport { n as normalizeComponent } from \"../chunks/_plugin-vue2_normalizer-DU4iP6Vu.mjs\";\nregister(t18);\nconst _sfc_main = {\n  __name: \"NcChip\",\n  props: {\n    /**\n     * aria label to set on the close button\n     *\n     * @default 'Close'\n     */\n    ariaLabelClose: {\n      type: String,\n      default: t(\"Close\")\n    },\n    /**\n     * Container for the actions\n     */\n    actionsContainer: {\n      type: String,\n      default: \"body\"\n    },\n    /**\n     * Main text of the chip.\n     */\n    text: {\n      type: String,\n      default: \"\"\n    },\n    /**\n     * Set the chips design variant-\n     *\n     * This sets the background style of the chip, similar to NcButton's `variant`.\n     *\n     * @deprecated will be removed with v9 - use `variant` instead.\n     */\n    type: {\n      type: String,\n      default: \"secondary\",\n      validator: (value) => [\"primary\", \"secondary\", \"tertiary\", \"error\", \"warning\", \"success\"].includes(value)\n    },\n    /**\n     * SVG path of the icon to use, this takes precedence over `iconSVG`.\n     * For example icon paths from `@mdi/js` can be used.\n     */\n    iconPath: {\n      type: String,\n      default: null\n    },\n    /**\n     * Inline SVG to use as the icon\n     */\n    iconSvg: {\n      type: String,\n      default: null\n    },\n    /**\n     * Set to true to prevent the close button to be shown\n     */\n    noClose: {\n      type: Boolean,\n      default: false\n    },\n    /**\n     * Set the chips design variant-\n     *\n     * This sets the background style of the chip, similar to NcButton's `variant`.\n     *\n     * @since 8.24.0\n     */\n    variant: {\n      type: String,\n      default: \"secondary\",\n      validator: (value) => [\"primary\", \"secondary\", \"tertiary\", \"error\", \"warning\", \"success\"].includes(value)\n    }\n  },\n  emits: [\"close\"],\n  setup(__props, { emit }) {\n    const props = __props;\n    const slots = useSlots();\n    const realVariant = computed(() => props.type !== \"secondary\" ? props.type : props.variant);\n    const canClose = computed(() => !props.noClose);\n    const hasActions = () => Boolean(slots.actions?.());\n    const hasIcon = () => Boolean(props.iconPath || props.iconSvg || !!slots.icon?.());\n    return { __sfc: true, props, emit, slots, realVariant, canClose, hasActions, hasIcon, mdiClose, NcActionButton, NcActions, NcIconSvgWrapper };\n  }\n};\nvar _sfc_render = function render() {\n  var _vm = this, _c = _vm._self._c, _setup = _vm._self._setupProxy;\n  return _c(\"div\", { staticClass: \"nc-chip\", class: {\n    [`nc-chip--${_setup.realVariant}`]: true,\n    \"nc-chip--no-actions\": _vm.noClose && !_setup.hasActions(),\n    \"nc-chip--no-icon\": !_setup.hasIcon()\n  } }, [_setup.hasIcon() ? _c(\"span\", { staticClass: \"nc-chip__icon\" }, [_vm._t(\"icon\", function() {\n    return [_vm.iconPath || _vm.iconSvg ? _c(_setup.NcIconSvgWrapper, { attrs: { \"inline\": \"\", \"path\": _vm.iconPath, \"svg\": _vm.iconPath ? void 0 : _vm.iconSvg, \"size\": 18 } }) : _vm._e()];\n  })], 2) : _vm._e(), _c(\"span\", { staticClass: \"nc-chip__text\" }, [_vm._t(\"default\", function() {\n    return [_vm._v(_vm._s(_vm.text))];\n  })], 2), _setup.canClose || _setup.hasActions() ? _c(_setup.NcActions, { staticClass: \"nc-chip__actions\", attrs: { \"container\": _vm.actionsContainer, \"force-menu\": !_setup.canClose, \"variant\": \"tertiary-no-background\" } }, [_setup.canClose ? _c(_setup.NcActionButton, { attrs: { \"close-after-click\": \"\" }, on: { \"click\": function($event) {\n    return _setup.emit(\"close\");\n  } }, scopedSlots: _vm._u([{ key: \"icon\", fn: function() {\n    return [_c(_setup.NcIconSvgWrapper, { attrs: { \"path\": _setup.mdiClose, \"size\": 20 } })];\n  }, proxy: true }], null, false, 2547223506) }, [_vm._v(\" \" + _vm._s(_vm.ariaLabelClose) + \" \")]) : _vm._e(), _vm._t(\"actions\")], 2) : _vm._e()], 1);\n};\nvar _sfc_staticRenderFns = [];\nvar __component__ = /* @__PURE__ */ normalizeComponent(\n  _sfc_main,\n  _sfc_render,\n  _sfc_staticRenderFns,\n  false,\n  null,\n  \"c8e429a5\"\n);\nconst NcChip = __component__.exports;\nexport {\n  NcChip as default\n};\n//# sourceMappingURL=NcChip.mjs.map\n","import mod from \"-!../../../../../node_modules/babel-loader/lib/index.js!../../../../../node_modules/ts-loader/index.js??clonedRuleSet-6.use[1]!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./FileListFilterChips.vue?vue&type=script&setup=true&lang=ts\"; export default mod; export * from \"-!../../../../../node_modules/babel-loader/lib/index.js!../../../../../node_modules/ts-loader/index.js??clonedRuleSet-6.use[1]!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./FileListFilterChips.vue?vue&type=script&setup=true&lang=ts\"","\n      import API from \"!../../../../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\";\n      import domAPI from \"!../../../../../node_modules/style-loader/dist/runtime/styleDomAPI.js\";\n      import insertFn from \"!../../../../../node_modules/style-loader/dist/runtime/insertBySelector.js\";\n      import setAttributes from \"!../../../../../node_modules/style-loader/dist/runtime/setAttributesWithoutAttributes.js\";\n      import insertStyleElement from \"!../../../../../node_modules/style-loader/dist/runtime/insertStyleElement.js\";\n      import styleTagTransformFn from \"!../../../../../node_modules/style-loader/dist/runtime/styleTagTransform.js\";\n      import content, * as namedExport from \"!!../../../../../node_modules/css-loader/dist/cjs.js??clonedRuleSet-3.use[1]!../../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./FileListFilterChips.vue?vue&type=style&index=0&id=690b69f8&prod&module=true&lang=css\";\n      \n      \n\nvar options = {};\n\noptions.styleTagTransform = styleTagTransformFn;\noptions.setAttributes = setAttributes;\noptions.insert = insertFn.bind(null, \"head\");\noptions.domAPI = domAPI;\noptions.insertStyleElement = insertStyleElement;\n\nvar update = API(content, options);\n\n\n\nexport * from \"!!../../../../../node_modules/css-loader/dist/cjs.js??clonedRuleSet-3.use[1]!../../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./FileListFilterChips.vue?vue&type=style&index=0&id=690b69f8&prod&module=true&lang=css\";\n       export default content && content.locals ? content.locals : undefined;\n","import { render, staticRenderFns } from \"./FileListFilterChips.vue?vue&type=template&id=690b69f8\"\nimport script from \"./FileListFilterChips.vue?vue&type=script&setup=true&lang=ts\"\nexport * from \"./FileListFilterChips.vue?vue&type=script&setup=true&lang=ts\"\nimport style0 from \"./FileListFilterChips.vue?vue&type=style&index=0&id=690b69f8&prod&module=true&lang=css\"\n\n\n\n\nfunction injectStyles (context) {\n  \n  this[\"$style\"] = (style0.locals || style0)\n\n}\n\n/* normalize component */\nimport normalizer from \"!../../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n  script,\n  render,\n  staticRenderFns,\n  false,\n  injectStyles,\n  null,\n  null\n  \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return (_setup.isVisible)?_c(_setup.NcButton,{attrs:{\"size\":\"small\"},on:{\"click\":_setup.onClick}},[_vm._v(\"\\n\\t\"+_vm._s(_setup.t('files', 'Search everywhere'))+\"\\n\")]):_vm._e()\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import mod from \"-!../../../../../node_modules/babel-loader/lib/index.js!../../../../../node_modules/ts-loader/index.js??clonedRuleSet-6.use[1]!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./FileListFilterToSearch.vue?vue&type=script&setup=true&lang=ts\"; export default mod; export * from \"-!../../../../../node_modules/babel-loader/lib/index.js!../../../../../node_modules/ts-loader/index.js??clonedRuleSet-6.use[1]!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./FileListFilterToSearch.vue?vue&type=script&setup=true&lang=ts\"","import { render, staticRenderFns } from \"./FileListFilterToSearch.vue?vue&type=template&id=f1a11948\"\nimport script from \"./FileListFilterToSearch.vue?vue&type=script&setup=true&lang=ts\"\nexport * from \"./FileListFilterToSearch.vue?vue&type=script&setup=true&lang=ts\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n  script,\n  render,\n  staticRenderFns,\n  false,\n  null,\n  null,\n  null\n  \n)\n\nexport default component.exports","import mod from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/ts-loader/index.js??clonedRuleSet-6.use[1]!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./FilesListHeader.vue?vue&type=script&lang=ts\"; export default mod; export * from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/ts-loader/index.js??clonedRuleSet-6.use[1]!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./FilesListHeader.vue?vue&type=script&lang=ts\"","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('div',{directives:[{name:\"show\",rawName:\"v-show\",value:(_vm.enabled),expression:\"enabled\"}],class:`files-list__header-${_vm.header.id}`},[_c('span',{ref:\"mount\"})])\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import { render, staticRenderFns } from \"./FilesListHeader.vue?vue&type=template&id=272fbca3\"\nimport script from \"./FilesListHeader.vue?vue&type=script&lang=ts\"\nexport * from \"./FilesListHeader.vue?vue&type=script&lang=ts\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n  script,\n  render,\n  staticRenderFns,\n  false,\n  null,\n  null,\n  null\n  \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return _c('tr',[_c('th',{staticClass:\"files-list__row-checkbox\"},[_c('span',{staticClass:\"hidden-visually\"},[_vm._v(_vm._s(_setup.t('files', 'Total rows summary')))])]),_vm._v(\" \"),_c('td',{staticClass:\"files-list__row-name\"},[_c('span',{staticClass:\"files-list__row-icon\"}),_vm._v(\" \"),_c('span',[_vm._v(_vm._s(_vm.summary))])]),_vm._v(\" \"),_c('td',{staticClass:\"files-list__row-actions\"}),_vm._v(\" \"),(_vm.isMimeAvailable)?_c('td',{staticClass:\"files-list__column files-list__row-mime\"}):_vm._e(),_vm._v(\" \"),(_vm.isSizeAvailable)?_c('td',{staticClass:\"files-list__column files-list__row-size\"},[_c('span',[_vm._v(_vm._s(_setup.totalSize))])]):_vm._e(),_vm._v(\" \"),(_vm.isMtimeAvailable)?_c('td',{staticClass:\"files-list__column files-list__row-mtime\"}):_vm._e(),_vm._v(\" \"),_vm._l((_setup.columns),function(column){return _c('th',{key:column.id,class:_setup.classForColumn(column)},[_c('span',[_vm._v(_vm._s(column.summary?.(_vm.nodes, _vm.currentView)))])])})],2)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import mod from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/ts-loader/index.js??clonedRuleSet-6.use[1]!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./FilesListTableFooter.vue?vue&type=script&setup=true&lang=ts\"; export default mod; export * from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/ts-loader/index.js??clonedRuleSet-6.use[1]!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./FilesListTableFooter.vue?vue&type=script&setup=true&lang=ts\"","\n      import API from \"!../../../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\";\n      import domAPI from \"!../../../../node_modules/style-loader/dist/runtime/styleDomAPI.js\";\n      import insertFn from \"!../../../../node_modules/style-loader/dist/runtime/insertBySelector.js\";\n      import setAttributes from \"!../../../../node_modules/style-loader/dist/runtime/setAttributesWithoutAttributes.js\";\n      import insertStyleElement from \"!../../../../node_modules/style-loader/dist/runtime/insertStyleElement.js\";\n      import styleTagTransformFn from \"!../../../../node_modules/style-loader/dist/runtime/styleTagTransform.js\";\n      import content, * as namedExport from \"!!../../../../node_modules/css-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/sass-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./FilesListTableFooter.vue?vue&type=style&index=0&id=378a6e4a&prod&scoped=true&lang=scss\";\n      \n      \n\nvar options = {};\n\noptions.styleTagTransform = styleTagTransformFn;\noptions.setAttributes = setAttributes;\noptions.insert = insertFn.bind(null, \"head\");\noptions.domAPI = domAPI;\noptions.insertStyleElement = insertStyleElement;\n\nvar update = API(content, options);\n\n\n\nexport * from \"!!../../../../node_modules/css-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/sass-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./FilesListTableFooter.vue?vue&type=style&index=0&id=378a6e4a&prod&scoped=true&lang=scss\";\n       export default content && content.locals ? content.locals : undefined;\n","import { render, staticRenderFns } from \"./FilesListTableFooter.vue?vue&type=template&id=378a6e4a&scoped=true\"\nimport script from \"./FilesListTableFooter.vue?vue&type=script&setup=true&lang=ts\"\nexport * from \"./FilesListTableFooter.vue?vue&type=script&setup=true&lang=ts\"\nimport style0 from \"./FilesListTableFooter.vue?vue&type=style&index=0&id=378a6e4a&prod&scoped=true&lang=scss\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n  script,\n  render,\n  staticRenderFns,\n  false,\n  null,\n  \"378a6e4a\",\n  null\n  \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return _c('tr',{staticClass:\"files-list__row-head\"},[_c('th',{staticClass:\"files-list__column files-list__row-checkbox\",on:{\"keyup\":function($event){if(!$event.type.indexOf('key')&&_vm._k($event.keyCode,\"esc\",27,$event.key,[\"Esc\",\"Escape\"]))return null;if($event.ctrlKey||$event.shiftKey||$event.altKey||$event.metaKey)return null;return _vm.resetSelection.apply(null, arguments)}}},[_c('NcCheckboxRadioSwitch',_vm._b({attrs:{\"data-cy-files-list-selection-checkbox\":\"\"},on:{\"update:model-value\":_vm.onToggleAll}},'NcCheckboxRadioSwitch',_vm.selectAllBind,false))],1),_vm._v(\" \"),_c('th',{staticClass:\"files-list__column files-list__row-name files-list__column--sortable\",attrs:{\"aria-sort\":_vm.ariaSortForMode('basename')}},[_c('span',{staticClass:\"files-list__row-icon\"}),_vm._v(\" \"),_c('FilesListTableHeaderButton',{attrs:{\"name\":_vm.t('files', 'Name'),\"mode\":\"basename\"}})],1),_vm._v(\" \"),_c('th',{staticClass:\"files-list__row-actions\"}),_vm._v(\" \"),(_vm.isMimeAvailable)?_c('th',{staticClass:\"files-list__column files-list__row-mime\",class:{ 'files-list__column--sortable': _vm.isMimeAvailable },attrs:{\"aria-sort\":_vm.ariaSortForMode('mime')}},[_c('FilesListTableHeaderButton',{attrs:{\"name\":_vm.t('files', 'File type'),\"mode\":\"mime\"}})],1):_vm._e(),_vm._v(\" \"),(_vm.isSizeAvailable)?_c('th',{staticClass:\"files-list__column files-list__row-size\",class:{ 'files-list__column--sortable': _vm.isSizeAvailable },attrs:{\"aria-sort\":_vm.ariaSortForMode('size')}},[_c('FilesListTableHeaderButton',{attrs:{\"name\":_vm.t('files', 'Size'),\"mode\":\"size\"}})],1):_vm._e(),_vm._v(\" \"),(_vm.isMtimeAvailable)?_c('th',{staticClass:\"files-list__column files-list__row-mtime\",class:{ 'files-list__column--sortable': _vm.isMtimeAvailable },attrs:{\"aria-sort\":_vm.ariaSortForMode('mtime')}},[_c('FilesListTableHeaderButton',{attrs:{\"name\":_vm.t('files', 'Modified'),\"mode\":\"mtime\"}})],1):_vm._e(),_vm._v(\" \"),_vm._l((_vm.columns),function(column){return _c('th',{key:column.id,class:_vm.classForColumn(column),attrs:{\"aria-sort\":_vm.ariaSortForMode(column.id)}},[(!!column.sort)?_c('FilesListTableHeaderButton',{attrs:{\"name\":column.title,\"mode\":column.id}}):_c('span',[_vm._v(\"\\n\\t\\t\\t\"+_vm._s(column.title)+\"\\n\\t\\t\")])],1)})],2)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","/**\n * SPDX-FileCopyrightText: 2023 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\nimport { getCurrentUser } from '@nextcloud/auth';\nimport axios from '@nextcloud/axios';\nimport { emit, subscribe } from '@nextcloud/event-bus';\nimport { loadState } from '@nextcloud/initial-state';\nimport { generateUrl } from '@nextcloud/router';\nimport { defineStore } from 'pinia';\nimport { ref, set } from 'vue';\nconst initialViewConfig = loadState('files', 'viewConfigs', {});\nexport const useViewConfigStore = defineStore('viewconfig', () => {\n    const viewConfigs = ref({ ...initialViewConfig });\n    /**\n     * Get the config for a specific view\n     *\n     * @param viewid Id of the view to fet the config for\n     */\n    function getConfig(viewid) {\n        return viewConfigs.value[viewid] || {};\n    }\n    /**\n     * Update the view config local store\n     *\n     * @param viewId The id of the view to update\n     * @param key The config key to update\n     * @param value The new value\n     */\n    function onUpdate(viewId, key, value) {\n        if (!(viewId in viewConfigs.value)) {\n            set(viewConfigs.value, viewId, {});\n        }\n        set(viewConfigs.value[viewId], key, value);\n    }\n    /**\n     * Update the view config local store AND on server side\n     *\n     * @param view Id of the view to update\n     * @param key Config key to update\n     * @param value New value\n     */\n    async function update(view, key, value) {\n        if (getCurrentUser() !== null) {\n            await axios.put(generateUrl('/apps/files/api/v1/views'), {\n                value,\n                view,\n                key,\n            });\n        }\n        emit('files:view-config:updated', { view, key, value });\n    }\n    /**\n     * Set the sorting key AND sort by ASC\n     * The key param must be a valid key of a File object\n     * If not found, will be searched within the File attributes\n     *\n     * @param key Key to sort by\n     * @param view View to set the sorting key for\n     */\n    function setSortingBy(key = 'basename', view = 'files') {\n        // Save new config\n        update(view, 'sorting_mode', key);\n        update(view, 'sorting_direction', 'asc');\n    }\n    /**\n     * Toggle the sorting direction\n     *\n     * @param viewId id of the view to set the sorting order for\n     */\n    function toggleSortingDirection(viewId = 'files') {\n        const config = viewConfigs.value[viewId] || { sorting_direction: 'asc' };\n        const newDirection = config.sorting_direction === 'asc' ? 'desc' : 'asc';\n        // Save new config\n        update(viewId, 'sorting_direction', newDirection);\n    }\n    // Initialize event listener\n    subscribe('files:view-config:updated', ({ view, key, value }) => onUpdate(view, key, value));\n    return {\n        viewConfigs,\n        getConfig,\n        setSortingBy,\n        toggleSortingDirection,\n        update,\n    };\n});\n","/*!\n * SPDX-FileCopyrightText: 2023 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\nimport { mapState } from 'pinia';\nimport Vue from 'vue';\nimport { useActiveStore } from '../store/active.ts';\nimport { useViewConfigStore } from '../store/viewConfig.ts';\nexport default Vue.extend({\n    setup() {\n        const activeStore = useActiveStore();\n        return {\n            activeStore,\n        };\n    },\n    computed: {\n        ...mapState(useViewConfigStore, ['getConfig', 'setSortingBy', 'toggleSortingDirection']),\n        /**\n         * Get the sorting mode for the current view\n         */\n        sortingMode() {\n            return this.getConfig(this.activeStore.activeView?.id)?.sorting_mode\n                || this.activeStore.activeView?.defaultSortKey\n                || 'basename';\n        },\n        /**\n         * Get the sorting direction for the current view\n         */\n        isAscSorting() {\n            const sortingDirection = this.getConfig(this.activeStore.activeView?.id)?.sorting_direction;\n            return sortingDirection !== 'desc';\n        },\n    },\n    methods: {\n        toggleSortBy(key) {\n            // If we're already sorting by this key, flip the direction\n            if (this.sortingMode === key) {\n                this.toggleSortingDirection(this.activeStore.activeView?.id);\n                return;\n            }\n            // else sort ASC by this new key\n            this.setSortingBy(key, this.activeStore.activeView?.id);\n        },\n    },\n});\n","import mod from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/ts-loader/index.js??clonedRuleSet-6.use[1]!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./FilesListTableHeaderButton.vue?vue&type=script&lang=ts\"; export default mod; export * from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/ts-loader/index.js??clonedRuleSet-6.use[1]!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./FilesListTableHeaderButton.vue?vue&type=script&lang=ts\"","var render = function render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return _c('NcButton',{staticClass:\"files-list__column-sort-button\",class:[{\n\t\t'files-list__column-sort-button--active': _vm.sortingMode === _vm.mode,\n\t\t'files-list__column-sort-button--size': _vm.sortingMode === 'size',\n\t}],attrs:{\"alignment\":_vm.mode === 'size' ? 'end' : 'start-reverse',\"variant\":\"tertiary\",\"title\":_vm.name},on:{\"click\":function($event){return _vm.toggleSortBy(_vm.mode)}},scopedSlots:_vm._u([{key:\"icon\",fn:function(){return [(_vm.sortingMode !== _vm.mode || _vm.isAscSorting)?_c('MenuUp',{staticClass:\"files-list__column-sort-button-icon\"}):_c('MenuDown',{staticClass:\"files-list__column-sort-button-icon\"})]},proxy:true}])},[_vm._v(\" \"),_c('span',{staticClass:\"files-list__column-sort-button-text\"},[_vm._v(_vm._s(_vm.name))])])\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n      import API from \"!../../../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\";\n      import domAPI from \"!../../../../node_modules/style-loader/dist/runtime/styleDomAPI.js\";\n      import insertFn from \"!../../../../node_modules/style-loader/dist/runtime/insertBySelector.js\";\n      import setAttributes from \"!../../../../node_modules/style-loader/dist/runtime/setAttributesWithoutAttributes.js\";\n      import insertStyleElement from \"!../../../../node_modules/style-loader/dist/runtime/insertStyleElement.js\";\n      import styleTagTransformFn from \"!../../../../node_modules/style-loader/dist/runtime/styleTagTransform.js\";\n      import content, * as namedExport from \"!!../../../../node_modules/css-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/sass-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./FilesListTableHeaderButton.vue?vue&type=style&index=0&id=4a8557e6&prod&scoped=true&lang=scss\";\n      \n      \n\nvar options = {};\n\noptions.styleTagTransform = styleTagTransformFn;\noptions.setAttributes = setAttributes;\noptions.insert = insertFn.bind(null, \"head\");\noptions.domAPI = domAPI;\noptions.insertStyleElement = insertStyleElement;\n\nvar update = API(content, options);\n\n\n\nexport * from \"!!../../../../node_modules/css-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/sass-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./FilesListTableHeaderButton.vue?vue&type=style&index=0&id=4a8557e6&prod&scoped=true&lang=scss\";\n       export default content && content.locals ? content.locals : undefined;\n","import { render, staticRenderFns } from \"./FilesListTableHeaderButton.vue?vue&type=template&id=4a8557e6&scoped=true\"\nimport script from \"./FilesListTableHeaderButton.vue?vue&type=script&lang=ts\"\nexport * from \"./FilesListTableHeaderButton.vue?vue&type=script&lang=ts\"\nimport style0 from \"./FilesListTableHeaderButton.vue?vue&type=style&index=0&id=4a8557e6&prod&scoped=true&lang=scss\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n  script,\n  render,\n  staticRenderFns,\n  false,\n  null,\n  \"4a8557e6\",\n  null\n  \n)\n\nexport default component.exports","import mod from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/ts-loader/index.js??clonedRuleSet-6.use[1]!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./FilesListTableHeader.vue?vue&type=script&lang=ts\"; export default mod; export * from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/ts-loader/index.js??clonedRuleSet-6.use[1]!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./FilesListTableHeader.vue?vue&type=script&lang=ts\"","\n      import API from \"!../../../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\";\n      import domAPI from \"!../../../../node_modules/style-loader/dist/runtime/styleDomAPI.js\";\n      import insertFn from \"!../../../../node_modules/style-loader/dist/runtime/insertBySelector.js\";\n      import setAttributes from \"!../../../../node_modules/style-loader/dist/runtime/setAttributesWithoutAttributes.js\";\n      import insertStyleElement from \"!../../../../node_modules/style-loader/dist/runtime/insertStyleElement.js\";\n      import styleTagTransformFn from \"!../../../../node_modules/style-loader/dist/runtime/styleTagTransform.js\";\n      import content, * as namedExport from \"!!../../../../node_modules/css-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/sass-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./FilesListTableHeader.vue?vue&type=style&index=0&id=228ab50c&prod&scoped=true&lang=scss\";\n      \n      \n\nvar options = {};\n\noptions.styleTagTransform = styleTagTransformFn;\noptions.setAttributes = setAttributes;\noptions.insert = insertFn.bind(null, \"head\");\noptions.domAPI = domAPI;\noptions.insertStyleElement = insertStyleElement;\n\nvar update = API(content, options);\n\n\n\nexport * from \"!!../../../../node_modules/css-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/sass-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./FilesListTableHeader.vue?vue&type=style&index=0&id=228ab50c&prod&scoped=true&lang=scss\";\n       export default content && content.locals ? content.locals : undefined;\n","import { render, staticRenderFns } from \"./FilesListTableHeader.vue?vue&type=template&id=228ab50c&scoped=true\"\nimport script from \"./FilesListTableHeader.vue?vue&type=script&lang=ts\"\nexport * from \"./FilesListTableHeader.vue?vue&type=script&lang=ts\"\nimport style0 from \"./FilesListTableHeader.vue?vue&type=style&index=0&id=228ab50c&prod&scoped=true&lang=scss\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n  script,\n  render,\n  staticRenderFns,\n  false,\n  null,\n  \"228ab50c\",\n  null\n  \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return _c('div',{staticClass:\"files-list__column files-list__row-actions-batch\",attrs:{\"data-cy-files-list-selection-actions\":\"\"}},[_c('NcActions',{ref:\"actionsMenu\",attrs:{\"open\":_vm.openedMenu,\"container\":\"#app-content-vue\",\"boundaries-element\":_vm.boundariesElement,\"disabled\":!!_vm.loading || _vm.areSomeNodesLoading,\"force-name\":true,\"inline\":_vm.enabledInlineActions.length,\"menu-name\":_vm.enabledInlineActions.length <= 1 ? _vm.t('files', 'Actions') : undefined},on:{\"update:open\":function($event){_vm.openedMenu=$event},\"close\":function($event){_vm.openedSubmenu = null}}},[_vm._l((_vm.enabledMenuActions),function(action){return _c('NcActionButton',{key:action.id,ref:`action-batch-${action.id}`,refInFor:true,class:{\n\t\t\t\t[`files-list__row-actions-batch-${action.id}`]: true,\n\t\t\t\t[`files-list__row-actions-batch--menu`]: _vm.isValidMenu(action),\n\t\t\t},attrs:{\"close-after-click\":!_vm.isValidMenu(action),\"data-cy-files-list-selection-action\":action.id,\"is-menu\":_vm.isValidMenu(action),\"aria-label\":action.displayName(_vm.actionContext) + ' ' + _vm.t('files', '(selected)') /** TRANSLATORS: Selected like 'selected files and folders' */,\"title\":action.title?.(_vm.actionContext)},on:{\"click\":function($event){return _vm.onActionClick(action)}},scopedSlots:_vm._u([{key:\"icon\",fn:function(){return [(_vm.loading === action.id)?_c('NcLoadingIcon',{attrs:{\"size\":18}}):_c('NcIconSvgWrapper',{attrs:{\"svg\":action.iconSvgInline(_vm.actionContext)}})]},proxy:true}],null,true)},[_vm._v(\"\\n\\t\\t\\t\"+_vm._s(action.displayName(_vm.actionContext))+\"\\n\\t\\t\")])}),_vm._v(\" \"),(_vm.openedSubmenu && _vm.enabledSubmenuActions[_vm.openedSubmenu?.id])?[_c('NcActionButton',{staticClass:\"files-list__row-actions-batch-back\",attrs:{\"data-cy-files-list-selection-action\":\"menu-back\"},on:{\"click\":function($event){return _vm.onBackToMenuClick(_vm.openedSubmenu)}},scopedSlots:_vm._u([{key:\"icon\",fn:function(){return [_c('ArrowLeftIcon')]},proxy:true}],null,false,3001860362)},[_vm._v(\"\\n\\t\\t\\t\\t\"+_vm._s(_vm.t('files', 'Back'))+\"\\n\\t\\t\\t\")]),_vm._v(\" \"),_c('NcActionSeparator'),_vm._v(\" \"),_vm._l((_vm.enabledSubmenuActions[_vm.openedSubmenu?.id]),function(action){return _c('NcActionButton',{key:action.id,staticClass:\"files-list__row-actions-batch--submenu\",class:`files-list__row-actions-batch-${action.id}`,attrs:{\"close-after-click\":\"\",\"data-cy-files-list-selection-action\":action.id,\"aria-label\":action.displayName(_vm.actionContext) + ' ' + _vm.t('files', '(selected)') /** TRANSLATORS: Selected like 'selected files and folders' */,\"title\":action.title?.(_vm.actionContext)},on:{\"click\":function($event){return _vm.onActionClick(action)}},scopedSlots:_vm._u([{key:\"icon\",fn:function(){return [(_vm.loading === action.id)?_c('NcLoadingIcon',{attrs:{\"size\":18}}):_c('NcIconSvgWrapper',{attrs:{\"svg\":action.iconSvgInline(_vm.actionContext)}})]},proxy:true}],null,true)},[_vm._v(\"\\n\\t\\t\\t\\t\"+_vm._s(action.displayName(_vm.actionContext))+\"\\n\\t\\t\\t\")])})]:_vm._e()],2)],1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import mod from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/ts-loader/index.js??clonedRuleSet-6.use[1]!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./FilesListTableHeaderActions.vue?vue&type=script&lang=ts\"; export default mod; export * from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/ts-loader/index.js??clonedRuleSet-6.use[1]!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./FilesListTableHeaderActions.vue?vue&type=script&lang=ts\"","\n      import API from \"!../../../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\";\n      import domAPI from \"!../../../../node_modules/style-loader/dist/runtime/styleDomAPI.js\";\n      import insertFn from \"!../../../../node_modules/style-loader/dist/runtime/insertBySelector.js\";\n      import setAttributes from \"!../../../../node_modules/style-loader/dist/runtime/setAttributesWithoutAttributes.js\";\n      import insertStyleElement from \"!../../../../node_modules/style-loader/dist/runtime/insertStyleElement.js\";\n      import styleTagTransformFn from \"!../../../../node_modules/style-loader/dist/runtime/styleTagTransform.js\";\n      import content, * as namedExport from \"!!../../../../node_modules/css-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/sass-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./FilesListTableHeaderActions.vue?vue&type=style&index=0&id=4056bece&prod&scoped=true&lang=scss\";\n      \n      \n\nvar options = {};\n\noptions.styleTagTransform = styleTagTransformFn;\noptions.setAttributes = setAttributes;\noptions.insert = insertFn.bind(null, \"head\");\noptions.domAPI = domAPI;\noptions.insertStyleElement = insertStyleElement;\n\nvar update = API(content, options);\n\n\n\nexport * from \"!!../../../../node_modules/css-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/sass-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./FilesListTableHeaderActions.vue?vue&type=style&index=0&id=4056bece&prod&scoped=true&lang=scss\";\n       export default content && content.locals ? content.locals : undefined;\n","import { render, staticRenderFns } from \"./FilesListTableHeaderActions.vue?vue&type=template&id=4056bece&scoped=true\"\nimport script from \"./FilesListTableHeaderActions.vue?vue&type=script&lang=ts\"\nexport * from \"./FilesListTableHeaderActions.vue?vue&type=script&lang=ts\"\nimport style0 from \"./FilesListTableHeaderActions.vue?vue&type=style&index=0&id=4056bece&prod&scoped=true&lang=scss\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n  script,\n  render,\n  staticRenderFns,\n  false,\n  null,\n  \"4056bece\",\n  null\n  \n)\n\nexport default component.exports","import mod from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/ts-loader/index.js??clonedRuleSet-6.use[1]!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./VirtualList.vue?vue&type=script&lang=ts\"; export default mod; export * from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/ts-loader/index.js??clonedRuleSet-6.use[1]!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./VirtualList.vue?vue&type=script&lang=ts\"","var render = function render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return _c('div',{staticClass:\"files-list\",class:{ 'files-list--grid': _vm.gridMode },attrs:{\"data-cy-files-list\":\"\"},on:{\"&scroll\":function($event){return _vm.onScroll.apply(null, arguments)}}},[_c('div',{ref:\"before\",staticClass:\"files-list__before\"},[_vm._t(\"before\")],2),_vm._v(\" \"),_c('div',{ref:\"filters\",staticClass:\"files-list__filters\"},[_vm._t(\"filters\")],2),_vm._v(\" \"),(!!_vm.$scopedSlots['header-overlay'])?_c('div',{staticClass:\"files-list__thead-overlay\"},[_vm._t(\"header-overlay\")],2):_vm._e(),_vm._v(\" \"),(_vm.dataSources.length === 0)?_c('div',{staticClass:\"files-list__empty\"},[_vm._t(\"empty\")],2):_vm._e(),_vm._v(\" \"),_c('table',{staticClass:\"files-list__table\",class:{\n\t\t\t'files-list__table--with-thead-overlay': !!_vm.$scopedSlots['header-overlay'],\n\t\t\t'files-list__table--hidden': _vm.dataSources.length === 0,\n\t\t},attrs:{\"aria-hidden\":_vm.dataSources.length === 0,\"inert\":_vm.dataSources.length === 0}},[(_vm.caption)?_c('caption',{staticClass:\"hidden-visually\"},[_vm._v(\"\\n\\t\\t\\t\"+_vm._s(_vm.caption)+\"\\n\\t\\t\")]):_vm._e(),_vm._v(\" \"),_c('thead',{ref:\"thead\",staticClass:\"files-list__thead\",attrs:{\"data-cy-files-list-thead\":\"\"}},[_vm._t(\"header\")],2),_vm._v(\" \"),_c('tbody',{staticClass:\"files-list__tbody\",style:(_vm.tbodyStyle),attrs:{\"data-cy-files-list-tbody\":\"\"}},_vm._l((_vm.renderedItems),function({ key, item },i){return _c(_vm.dataComponent,_vm._b({key:key,tag:\"component\",attrs:{\"source\":item,\"index\":i}},'component',_vm.extraProps,false))}),1),_vm._v(\" \"),_c('tfoot',{ref:\"footer\",staticClass:\"files-list__tfoot\",attrs:{\"data-cy-files-list-tfoot\":\"\"}},[_vm._t(\"footer\")],2)])])\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import { render, staticRenderFns } from \"./VirtualList.vue?vue&type=template&id=097bcb72\"\nimport script from \"./VirtualList.vue?vue&type=script&lang=ts\"\nexport * from \"./VirtualList.vue?vue&type=script&lang=ts\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n  script,\n  render,\n  staticRenderFns,\n  false,\n  null,\n  null,\n  null\n  \n)\n\nexport default component.exports","/*!\n * SPDX-FileCopyrightText: 2025 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\nimport { getFileListHeaders, getFilesRegistry } from '@nextcloud/files';\nimport { computed, ref } from 'vue';\nconst headers = ref();\nconst sorted = computed(() => [...(headers.value ?? [])].sort((a, b) => a.order - b.order));\n/**\n * Get the registered and sorted file list headers.\n */\nexport function useFileListHeaders() {\n    if (!headers.value) {\n        // if not initialized by other component yet, initialize and subscribe to registry changes\n        headers.value = getFileListHeaders();\n        getFilesRegistry().addEventListener('register:listHeader', () => {\n            headers.value = getFileListHeaders();\n        });\n    }\n    return sorted;\n}\n","import mod from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/ts-loader/index.js??clonedRuleSet-6.use[1]!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./FilesListVirtual.vue?vue&type=script&lang=ts\"; export default mod; export * from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/ts-loader/index.js??clonedRuleSet-6.use[1]!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./FilesListVirtual.vue?vue&type=script&lang=ts\"","\n      import API from \"!../../../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\";\n      import domAPI from \"!../../../../node_modules/style-loader/dist/runtime/styleDomAPI.js\";\n      import insertFn from \"!../../../../node_modules/style-loader/dist/runtime/insertBySelector.js\";\n      import setAttributes from \"!../../../../node_modules/style-loader/dist/runtime/setAttributesWithoutAttributes.js\";\n      import insertStyleElement from \"!../../../../node_modules/style-loader/dist/runtime/insertStyleElement.js\";\n      import styleTagTransformFn from \"!../../../../node_modules/style-loader/dist/runtime/styleTagTransform.js\";\n      import content, * as namedExport from \"!!../../../../node_modules/css-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/sass-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./FilesListVirtual.vue?vue&type=style&index=0&id=1f794bec&prod&scoped=true&lang=scss\";\n      \n      \n\nvar options = {};\n\noptions.styleTagTransform = styleTagTransformFn;\noptions.setAttributes = setAttributes;\noptions.insert = insertFn.bind(null, \"head\");\noptions.domAPI = domAPI;\noptions.insertStyleElement = insertStyleElement;\n\nvar update = API(content, options);\n\n\n\nexport * from \"!!../../../../node_modules/css-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/sass-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./FilesListVirtual.vue?vue&type=style&index=0&id=1f794bec&prod&scoped=true&lang=scss\";\n       export default content && content.locals ? content.locals : undefined;\n","\n      import API from \"!../../../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\";\n      import domAPI from \"!../../../../node_modules/style-loader/dist/runtime/styleDomAPI.js\";\n      import insertFn from \"!../../../../node_modules/style-loader/dist/runtime/insertBySelector.js\";\n      import setAttributes from \"!../../../../node_modules/style-loader/dist/runtime/setAttributesWithoutAttributes.js\";\n      import insertStyleElement from \"!../../../../node_modules/style-loader/dist/runtime/insertStyleElement.js\";\n      import styleTagTransformFn from \"!../../../../node_modules/style-loader/dist/runtime/styleTagTransform.js\";\n      import content, * as namedExport from \"!!../../../../node_modules/css-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/sass-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./FilesListVirtual.vue?vue&type=style&index=1&id=1f794bec&prod&lang=scss\";\n      \n      \n\nvar options = {};\n\noptions.styleTagTransform = styleTagTransformFn;\noptions.setAttributes = setAttributes;\noptions.insert = insertFn.bind(null, \"head\");\noptions.domAPI = domAPI;\noptions.insertStyleElement = insertStyleElement;\n\nvar update = API(content, options);\n\n\n\nexport * from \"!!../../../../node_modules/css-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/sass-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./FilesListVirtual.vue?vue&type=style&index=1&id=1f794bec&prod&lang=scss\";\n       export default content && content.locals ? content.locals : undefined;\n","import { render, staticRenderFns } from \"./FilesListVirtual.vue?vue&type=template&id=1f794bec&scoped=true\"\nimport script from \"./FilesListVirtual.vue?vue&type=script&lang=ts\"\nexport * from \"./FilesListVirtual.vue?vue&type=script&lang=ts\"\nimport style0 from \"./FilesListVirtual.vue?vue&type=style&index=0&id=1f794bec&prod&scoped=true&lang=scss\"\nimport style1 from \"./FilesListVirtual.vue?vue&type=style&index=1&id=1f794bec&prod&lang=scss\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n  script,\n  render,\n  staticRenderFns,\n  false,\n  null,\n  \"1f794bec\",\n  null\n  \n)\n\nexport default component.exports","/*!\n * SPDX-FileCopyrightText: 2026 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\nimport { getFileListActions, getFilesRegistry } from '@nextcloud/files';\nimport { toValue } from '@vueuse/core';\nimport { computed, ref } from 'vue';\nconst actions = ref();\nconst sorted = computed(() => [...(actions.value ?? [])].sort((a, b) => a.order - b.order));\n/**\n * Get the registered and sorted file list actions.\n */\nexport function useFileListActions() {\n    if (!actions.value) {\n        // if not initialized by other component yet, initialize and subscribe to registry changes\n        actions.value = getFileListActions();\n        getFilesRegistry().addEventListener('register:listAction', () => {\n            actions.value = getFileListActions();\n        });\n    }\n    return sorted;\n}\n/**\n * Get the enabled file list actions for the given folder, contents and view.\n *\n * @param folder - The current folder\n * @param contents - The contents of the current folder\n * @param view - The current view\n */\nexport function useEnabledFileListActions(folder, contents, view) {\n    const actions = useFileListActions();\n    return computed(() => {\n        if (toValue(folder) === undefined || toValue(view) === undefined) {\n            return [];\n        }\n        return actions.value.filter((action) => action.enabled === undefined\n            || action.enabled({ folder: toValue(folder), contents: toValue(contents), view: toValue(view) }));\n    });\n}\n","/*!\n * SPDX-FileCopyrightText: 2025 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\nimport { subscribe } from '@nextcloud/event-bus';\nimport { getSidebarActions, getSidebarTabs } from '@nextcloud/files';\nimport { defineStore } from 'pinia';\nimport { computed, readonly, ref, watch } from 'vue';\nimport logger from '../logger.ts';\nimport { useActiveStore } from './active.ts';\nimport { useFilesStore } from './files.ts';\nexport const useSidebarStore = defineStore('sidebar', () => {\n    const activeTab = ref();\n    const isOpen = ref(false);\n    const activeStore = useActiveStore();\n    const currentNode = computed(() => isOpen.value ? activeStore.activeNode : undefined);\n    const hasContext = computed(() => !!(currentNode.value && activeStore.activeFolder && activeStore.activeView));\n    const currentContext = computed(() => {\n        if (!hasContext.value) {\n            return;\n        }\n        return {\n            node: currentNode.value,\n            folder: activeStore.activeFolder,\n            view: activeStore.activeView,\n        };\n    });\n    const currentActions = computed(() => currentContext.value ? getActions(currentContext.value) : []);\n    const currentTabs = computed(() => currentContext.value ? getTabs(currentContext.value) : []);\n    /**\n     * Open the sidebar for a given node and optional tab ID.\n     *\n     * @param node - The node to display in the sidebar.\n     * @param tabId - Optional ID of the tab to activate.\n     */\n    function open(node, tabId) {\n        if (!(node && activeStore.activeFolder && activeStore.activeView)) {\n            logger.debug('sidebar: cannot open sidebar because the active folder or view is not set.', {\n                node,\n                activeFolder: activeStore.activeFolder,\n                activeView: activeStore.activeView,\n            });\n            throw new Error('Cannot open sidebar because the active folder or view is not set.');\n        }\n        if (isOpen.value && currentNode.value?.source === node.source) {\n            logger.debug('sidebar: already open for current node');\n            if (tabId) {\n                logger.debug('sidebar: already open for current node - switching tab', { tabId });\n                setActiveTab(tabId);\n            }\n            return;\n        }\n        const newTabs = getTabs({\n            node,\n            folder: activeStore.activeFolder,\n            view: activeStore.activeView,\n        });\n        if (tabId && !newTabs.find(({ id }) => id === tabId)) {\n            logger.warn(`sidebar: cannot open tab '${tabId}' because it is not available for the current context.`);\n            activeTab.value = newTabs[0]?.id;\n        }\n        else {\n            activeTab.value = tabId ?? newTabs[0]?.id;\n        }\n        logger.debug(`sidebar: opening for ${node.displayname}`, { node });\n        activeStore.activeNode = node;\n        isOpen.value = true;\n    }\n    /**\n     * Close the sidebar.\n     */\n    function close() {\n        isOpen.value = false;\n    }\n    /**\n     * Get the available tabs for the sidebar.\n     * If a context is provided, only tabs enabled for that context are returned.\n     *\n     * @param context - Optional context to filter the available tabs.\n     */\n    function getTabs(context) {\n        let tabs = getSidebarTabs();\n        if (context) {\n            tabs = tabs.filter((tab) => tab.enabled === undefined || tab.enabled(context));\n        }\n        return tabs.sort((a, b) => a.order - b.order);\n    }\n    /**\n     * Get the available actions for the sidebar.\n     * If a context is provided, only actions enabled for that context are returned.\n     *\n     * @param context - Optional context to filter the available actions.\n     */\n    function getActions(context) {\n        let actions = getSidebarActions();\n        if (context) {\n            actions = actions.filter((action) => action.enabled === undefined || action.enabled(context));\n        }\n        return actions.sort((a, b) => a.order - b.order);\n    }\n    /**\n     * Set the active tab in the sidebar.\n     *\n     * @param tabId - The ID of the tab to activate.\n     */\n    function setActiveTab(tabId) {\n        if (!currentTabs.value.find(({ id }) => id === tabId)) {\n            throw new Error(`Cannot set sidebar tab '${tabId}' because it is not available for the current context.`);\n        }\n        activeTab.value = tabId;\n    }\n    // update the current node if updated\n    subscribe('files:node:updated', (node) => {\n        if (node.source === currentNode.value?.source) {\n            activeStore.activeNode = node;\n        }\n    });\n    // close the sidebar if the current node is deleted\n    subscribe('files:node:deleted', (node) => {\n        if (node.fileid === currentNode.value?.fileid) {\n            close();\n        }\n    });\n    subscribe('viewer:sidebar:open', ({ source }) => {\n        const filesStore = useFilesStore();\n        const node = filesStore.getNode(source);\n        if (node) {\n            logger.debug('sidebar: opening for node from Viewer.', { node });\n            open(node);\n        }\n        else {\n            logger.error(`sidebar: cannot open for node '${source}' because it was not found in the current view.`);\n        }\n    });\n    let initialized = false;\n    // close sidebar when parameter is removed from url\n    subscribe('files:list:updated', () => {\n        if (!initialized) {\n            initialized = true;\n            window.OCP.Files.Router._router.afterEach((to, from) => {\n                if ((from.query && ('opendetails' in from.query))\n                    && (to.query && !('opendetails' in to.query))) {\n                    logger.debug('sidebar: closing because \"opendetails\" query parameter was removed from URL.');\n                    close();\n                }\n            });\n        }\n    });\n    // watch open state and update URL query parameters\n    watch(isOpen, (isOpen) => {\n        const params = { ...(window.OCP?.Files?.Router?.params ?? {}) };\n        const query = { ...(window.OCP?.Files?.Router?.query ?? {}) };\n        logger.debug(`sidebar: current node changed: ${isOpen ? 'open' : 'closed'}`, { query, params, node: activeStore.activeNode });\n        if (!isOpen && ('opendetails' in query)) {\n            delete query.opendetails;\n            window.OCP.Files.Router.goToRoute(null, params, query, true);\n        }\n        if (isOpen && !('opendetails' in query)) {\n            window.OCP.Files.Router.goToRoute(null, params, {\n                ...query,\n                opendetails: 'true',\n            }, true);\n        }\n    });\n    return {\n        activeTab,\n        currentActions,\n        currentContext,\n        currentNode,\n        currentTabs,\n        hasContext,\n        isOpen: readonly(isOpen),\n        open,\n        close,\n        getActions,\n        getTabs,\n        setActiveTab,\n    };\n});\n","/**\n * SPDX-FileCopyrightText: 2024 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\nimport { loadState } from '@nextcloud/initial-state';\n/**\n * Check whether the personal files view can be shown\n */\nexport function hasPersonalFilesView() {\n    const storageStats = loadState('files', 'storageStats', { quota: -1 });\n    // Don't show this view if the user has no storage quota\n    return storageStats.quota !== 0;\n}\n/**\n * Get the default files view\n */\nexport function defaultView() {\n    const { default_view: defaultView } = loadState('files', 'config', { default_view: 'files' });\n    // the default view - only use the personal one if it is enabled\n    if (defaultView !== 'personal' || hasPersonalFilesView()) {\n        return defaultView;\n    }\n    return 'files';\n}\n","var render = function render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return _c('NcAppContent',{attrs:{\"page-heading\":_vm.pageHeading,\"data-cy-files-content\":\"\"}},[_c('div',{staticClass:\"files-list__header\",class:{ 'files-list__header--public': _vm.isPublic }},[_c(_vm.isNarrow ? 'Teleport' : 'div',{tag:\"component\",attrs:{\"to\":_vm.isNarrow ? 'body' : undefined}},[(_vm.canUpload && !_vm.isQuotaExceeded && _vm.currentFolder)?_c('UploadPicker',{staticClass:\"files-list__header-upload-button\",class:{ 'files-list__header-upload-button--narrow': _vm.isNarrow },attrs:{\"allow-folders\":\"\",\"no-label\":_vm.isNarrow,\"content\":_vm.getContent,\"destination\":_vm.currentFolder,\"forbidden-characters\":_vm.forbiddenCharacters,\"multiple\":\"\",\"primary\":\"\"},on:{\"failed\":_vm.onUploadFail,\"uploaded\":_vm.onUpload}}):_vm._e()],1),_vm._v(\" \"),_c('BreadCrumbs',{attrs:{\"path\":_vm.directory},on:{\"reload\":_vm.fetchContent}}),_vm._v(\" \"),(_vm.isRefreshing)?_c('NcLoadingIcon',{staticClass:\"files-list__refresh-icon\",attrs:{\"name\":_vm.t('files', 'File list is reloading')}}):_vm._e(),_vm._v(\" \"),_c('NcActions',{staticClass:\"files-list__header-actions\",attrs:{\"inline\":1,\"variant\":\"tertiary\",\"force-name\":\"\"}},_vm._l((_vm.enabledFileListActions),function(action){return _c('NcActionButton',{key:action.id,attrs:{\"disabled\":!!_vm.loadingAction,\"data-cy-files-list-action\":action.id,\"close-after-click\":\"\"},on:{\"click\":function($event){return _vm.execFileListAction(action)}},scopedSlots:_vm._u([{key:\"icon\",fn:function(){return [(_vm.loadingAction === action.id)?_c('NcLoadingIcon',{attrs:{\"size\":18}}):(action.iconSvgInline !== undefined && _vm.currentView)?_c('NcIconSvgWrapper',{attrs:{\"svg\":action.iconSvgInline(_vm.currentView)}}):_vm._e()]},proxy:true}],null,true)},[_vm._v(\"\\n\\t\\t\\t\\t\"+_vm._s(_vm.actionDisplayName(action))+\"\\n\\t\\t\\t\")])}),1),_vm._v(\" \"),_c('FileListFilters'),_vm._v(\" \"),(_vm.enableGridView)?_c('NcButton',{staticClass:\"files-list__header-grid-button\",attrs:{\"aria-label\":_vm.gridViewButtonLabel,\"title\":_vm.gridViewButtonLabel,\"variant\":\"tertiary\"},on:{\"click\":_vm.toggleGridView},scopedSlots:_vm._u([{key:\"icon\",fn:function(){return [(_vm.userConfig.grid_view)?_c('ListViewIcon'):_c('ViewGridIcon')]},proxy:true}],null,false,1682960703)}):_vm._e()],1),_vm._v(\" \"),(!_vm.loading && _vm.canUpload && _vm.currentFolder)?_c('DragAndDropNotice',{attrs:{\"current-folder\":_vm.currentFolder}}):_vm._e(),_vm._v(\" \"),(!_vm.currentView)?_c('NcLoadingIcon',{staticClass:\"files-list__loading-icon\",attrs:{\"size\":38,\"name\":_vm.t('files', 'Loading current folder')}}):_c('FilesListVirtual',{ref:\"filesListVirtual\",attrs:{\"current-folder\":_vm.currentFolder,\"current-view\":_vm.currentView,\"nodes\":_vm.dirContentsSorted,\"summary\":_vm.summary},scopedSlots:_vm._u([{key:\"empty\",fn:function(){return [(_vm.loading && !_vm.isRefreshing)?_c('NcLoadingIcon',{staticClass:\"files-list__loading-icon\",attrs:{\"size\":38,\"name\":_vm.t('files', 'Loading current folder')}}):(_vm.error)?_c('NcEmptyContent',{attrs:{\"name\":_vm.error,\"data-cy-files-content-error\":\"\"},scopedSlots:_vm._u([{key:\"action\",fn:function(){return [_c('NcButton',{attrs:{\"variant\":\"secondary\"},on:{\"click\":_vm.fetchContent},scopedSlots:_vm._u([{key:\"icon\",fn:function(){return [_c('IconReload',{attrs:{\"size\":20}})]},proxy:true}])},[_vm._v(\"\\n\\t\\t\\t\\t\\t\\t\"+_vm._s(_vm.t('files', 'Retry'))+\"\\n\\t\\t\\t\\t\\t\")])]},proxy:true},{key:\"icon\",fn:function(){return [_c('IconAlertCircleOutline')]},proxy:true}])}):(_vm.currentView?.emptyView)?_c('div',{staticClass:\"files-list__empty-view-wrapper\"},[_c('div',{ref:\"customEmptyView\"})]):_c('NcEmptyContent',{attrs:{\"name\":_vm.currentView?.emptyTitle || _vm.t('files', 'No files in here'),\"description\":_vm.currentView?.emptyCaption || _vm.t('files', 'Upload some content or sync with your devices!'),\"data-cy-files-content-empty\":\"\"},scopedSlots:_vm._u([(_vm.directory !== '/')?{key:\"action\",fn:function(){return [(_vm.canUpload && !_vm.isQuotaExceeded)?_c('UploadPicker',{staticClass:\"files-list__header-upload-button\",attrs:{\"allow-folders\":\"\",\"content\":_vm.getContent,\"destination\":_vm.currentFolder,\"forbidden-characters\":_vm.forbiddenCharacters,\"multiple\":\"\"},on:{\"failed\":_vm.onUploadFail,\"uploaded\":_vm.onUpload}}):_c('NcButton',{attrs:{\"to\":_vm.toPreviousDir,\"variant\":\"primary\"}},[_vm._v(\"\\n\\t\\t\\t\\t\\t\\t\"+_vm._s(_vm.t('files', 'Go back'))+\"\\n\\t\\t\\t\\t\\t\")])]},proxy:true}:null,{key:\"icon\",fn:function(){return [_c('NcIconSvgWrapper',{attrs:{\"svg\":_vm.currentView?.icon}})]},proxy:true}],null,true)})]},proxy:true}])})],1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","/**\n * SPDX-FileCopyrightText: 2019 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\nimport { t } from '@nextcloud/l10n';\n/**\n * Whether error is a WebDAVClientError\n *\n * @param error - Any exception\n * @return - Whether error is a WebDAVClientError\n */\nfunction isWebDAVClientError(error) {\n    return error instanceof Error && 'status' in error && 'response' in error;\n}\n/**\n * Get a localized error message from webdav request\n *\n * @param error - An exception from webdav request\n * @return Localized error message for end user\n */\nexport function humanizeWebDAVError(error) {\n    if (error instanceof Error) {\n        if (isWebDAVClientError(error)) {\n            const status = error.status || error.response?.status || 0;\n            if ([400, 404, 405].includes(status)) {\n                return t('files', 'Folder not found');\n            }\n            else if (status === 403) {\n                return t('files', 'This operation is forbidden');\n            }\n            else if (status === 500) {\n                return t('files', 'This folder is unavailable, please try again later or contact the administration');\n            }\n            else if (status === 503) {\n                return t('files', 'Storage is temporarily not available');\n            }\n        }\n        // We don't need to show abortion error to the user as those are expected.\n        if (error.name === 'AbortError') {\n            return null;\n        }\n        return t('files', 'Unexpected error: {error}', { error: error.message });\n    }\n    return t('files', 'Unknown error');\n}\n","import mod from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/ts-loader/index.js??clonedRuleSet-6.use[1]!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./FilesList.vue?vue&type=script&lang=ts\"; export default mod; export * from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/ts-loader/index.js??clonedRuleSet-6.use[1]!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./FilesList.vue?vue&type=script&lang=ts\"","\n      import API from \"!../../../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\";\n      import domAPI from \"!../../../../node_modules/style-loader/dist/runtime/styleDomAPI.js\";\n      import insertFn from \"!../../../../node_modules/style-loader/dist/runtime/insertBySelector.js\";\n      import setAttributes from \"!../../../../node_modules/style-loader/dist/runtime/setAttributesWithoutAttributes.js\";\n      import insertStyleElement from \"!../../../../node_modules/style-loader/dist/runtime/insertStyleElement.js\";\n      import styleTagTransformFn from \"!../../../../node_modules/style-loader/dist/runtime/styleTagTransform.js\";\n      import content, * as namedExport from \"!!../../../../node_modules/css-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/sass-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./FilesList.vue?vue&type=style&index=0&id=ed23df10&prod&scoped=true&lang=scss\";\n      \n      \n\nvar options = {};\n\noptions.styleTagTransform = styleTagTransformFn;\noptions.setAttributes = setAttributes;\noptions.insert = insertFn.bind(null, \"head\");\noptions.domAPI = domAPI;\noptions.insertStyleElement = insertStyleElement;\n\nvar update = API(content, options);\n\n\n\nexport * from \"!!../../../../node_modules/css-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/sass-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./FilesList.vue?vue&type=style&index=0&id=ed23df10&prod&scoped=true&lang=scss\";\n       export default content && content.locals ? content.locals : undefined;\n","import { render, staticRenderFns } from \"./FilesList.vue?vue&type=template&id=ed23df10&scoped=true\"\nimport script from \"./FilesList.vue?vue&type=script&lang=ts\"\nexport * from \"./FilesList.vue?vue&type=script&lang=ts\"\nimport style0 from \"./FilesList.vue?vue&type=style&index=0&id=ed23df10&prod&scoped=true&lang=scss\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n  script,\n  render,\n  staticRenderFns,\n  false,\n  null,\n  \"ed23df10\",\n  null\n  \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return _c(_setup.NcAppNavigation,{staticClass:\"files-navigation\",attrs:{\"data-cy-files-navigation\":\"\",\"aria-label\":_setup.t('files', 'Files')},scopedSlots:_vm._u([{key:\"search\",fn:function(){return [_c(_setup.FilesNavigationSearch)]},proxy:true},{key:\"default\",fn:function(){return [_c(_setup.FilesNavigationList),_vm._v(\" \"),_c(_setup.FilesAppSettings,{attrs:{\"open\":_setup.settingsOpened,\"data-cy-files-navigation-settings\":\"\"},on:{\"update:open\":function($event){_setup.settingsOpened=$event},\"close\":function($event){_setup.settingsOpened = false}}})]},proxy:true},{key:\"footer\",fn:function(){return [_c('ul',{staticClass:\"app-navigation-entry__settings\"},[_c(_setup.NavigationQuota),_vm._v(\" \"),_c(_setup.NcAppNavigationItem,{attrs:{\"name\":_setup.t('files', 'Files settings'),\"data-cy-files-navigation-settings-button\":\"\"},on:{\"click\":function($event){$event.preventDefault();$event.stopPropagation();_setup.settingsOpened = true}}},[_c(_setup.IconCog,{attrs:{\"slot\":\"icon\",\"size\":20},slot:\"icon\"})],1)],1)]},proxy:true}])})\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n\n","import mod from \"-!../vue-loader/lib/index.js??vue-loader-options!./CogOutline.vue?vue&type=script&lang=js\"; export default mod; export * from \"-!../vue-loader/lib/index.js??vue-loader-options!./CogOutline.vue?vue&type=script&lang=js\"","import { render, staticRenderFns } from \"./CogOutline.vue?vue&type=template&id=96fed70c\"\nimport script from \"./CogOutline.vue?vue&type=script&lang=js\"\nexport * from \"./CogOutline.vue?vue&type=script&lang=js\"\n\n\n/* normalize component */\nimport normalizer from \"!../vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n  script,\n  render,\n  staticRenderFns,\n  false,\n  null,\n  null,\n  null\n  \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('span',_vm._b({staticClass:\"material-design-icon cog-outline-icon\",attrs:{\"aria-hidden\":_vm.title ? null : 'true',\"aria-label\":_vm.title,\"role\":\"img\"},on:{\"click\":function($event){return _vm.$emit('click', $event)}}},'span',_vm.$attrs,false),[_c('svg',{staticClass:\"material-design-icon__svg\",attrs:{\"fill\":_vm.fillColor,\"width\":_vm.size,\"height\":_vm.size,\"viewBox\":\"0 0 24 24\"}},[_c('path',{attrs:{\"d\":\"M12,8A4,4 0 0,1 16,12A4,4 0 0,1 12,16A4,4 0 0,1 8,12A4,4 0 0,1 12,8M12,10A2,2 0 0,0 10,12A2,2 0 0,0 12,14A2,2 0 0,0 14,12A2,2 0 0,0 12,10M10,22C9.75,22 9.54,21.82 9.5,21.58L9.13,18.93C8.5,18.68 7.96,18.34 7.44,17.94L4.95,18.95C4.73,19.03 4.46,18.95 4.34,18.73L2.34,15.27C2.21,15.05 2.27,14.78 2.46,14.63L4.57,12.97L4.5,12L4.57,11L2.46,9.37C2.27,9.22 2.21,8.95 2.34,8.73L4.34,5.27C4.46,5.05 4.73,4.96 4.95,5.05L7.44,6.05C7.96,5.66 8.5,5.32 9.13,5.07L9.5,2.42C9.54,2.18 9.75,2 10,2H14C14.25,2 14.46,2.18 14.5,2.42L14.87,5.07C15.5,5.32 16.04,5.66 16.56,6.05L19.05,5.05C19.27,4.96 19.54,5.05 19.66,5.27L21.66,8.73C21.79,8.95 21.73,9.22 21.54,9.37L19.43,11L19.5,12L19.43,13L21.54,14.63C21.73,14.78 21.79,15.05 21.66,15.27L19.66,18.73C19.54,18.95 19.27,19.04 19.05,18.95L16.56,17.95C16.04,18.34 15.5,18.68 14.87,18.93L14.5,21.58C14.46,21.82 14.25,22 14,22H10M11.25,4L10.88,6.61C9.68,6.86 8.62,7.5 7.85,8.39L5.44,7.35L4.69,8.65L6.8,10.2C6.4,11.37 6.4,12.64 6.8,13.8L4.68,15.36L5.43,16.66L7.86,15.62C8.63,16.5 9.68,17.14 10.87,17.38L11.24,20H12.76L13.13,17.39C14.32,17.14 15.37,16.5 16.14,15.62L18.57,16.66L19.32,15.36L17.2,13.81C17.6,12.64 17.6,11.37 17.2,10.2L19.31,8.65L18.56,7.35L16.15,8.39C15.38,7.5 14.32,6.86 13.12,6.62L12.75,4H11.25Z\"}},[(_vm.title)?_c('title',[_vm._v(_vm._s(_vm.title))]):_vm._e()])])])\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","var render = function render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return _c(_setup.NcAppNavigationList,{class:_vm.$style.filesNavigationList,attrs:{\"aria-label\":_setup.t('files', 'Views')}},_vm._l((_setup.rootViews),function(view){return _c(_setup.FilesNavigationListItem,{key:view.id,attrs:{\"view\":view}})}),1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","/**\n * SPDX-FileCopyrightText: 2024 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\nimport { getCurrentUser } from '@nextcloud/auth';\nimport axios from '@nextcloud/axios';\nimport { getRemoteURL } from '@nextcloud/files/dav';\nimport { getCanonicalLocale, getLanguage } from '@nextcloud/l10n';\nimport { dirname, encodePath, join } from '@nextcloud/paths';\nimport { generateOcsUrl } from '@nextcloud/router';\nimport { getContents as getFiles } from './Files.ts';\nexport const folderTreeId = 'folders';\nexport const sourceRoot = `${getRemoteURL()}/files/${getCurrentUser()?.uid}`;\nconst collator = Intl.Collator([getLanguage(), getCanonicalLocale()], {\n    numeric: true,\n    usage: 'sort',\n});\nconst compareNodes = (a, b) => collator.compare(a.displayName ?? a.basename, b.displayName ?? b.basename);\n/**\n * Get all tree nodes recursively\n *\n * @param tree - The tree to process\n * @param currentPath - The current path\n * @param nodes - The nodes collected so far\n */\nfunction getTreeNodes(tree, currentPath = '/', nodes = []) {\n    const sortedTree = tree.toSorted(compareNodes);\n    for (const { id, basename, displayName, children } of sortedTree) {\n        const path = join(currentPath, basename);\n        const source = `${sourceRoot}${path}`;\n        const node = {\n            source,\n            encodedSource: encodeSource(source),\n            path,\n            fileid: id,\n            basename,\n        };\n        if (displayName) {\n            node.displayName = displayName;\n        }\n        nodes.push(node);\n        if (children.length > 0) {\n            getTreeNodes(children, path, nodes);\n        }\n    }\n    return nodes;\n}\n/**\n * Get folder tree nodes\n *\n * @param path - The path to get the tree from\n * @param depth - The depth to fetch\n * @param withParents - Whether to include parent folders in the response\n */\nexport async function getFolderTreeNodes(path = '/', depth = 1, withParents = false) {\n    const { data: tree } = await axios.get(generateOcsUrl('/apps/files/api/v1/folder-tree'), {\n        params: new URLSearchParams({ path, depth: String(depth), withParents: String(withParents) }),\n    });\n    const nodes = getTreeNodes(tree, withParents ? '/' : path);\n    return nodes;\n}\nexport const getContents = (path, options) => getFiles(path, options);\n/**\n * Encode source URL\n *\n * @param source - The source URL\n */\nexport function encodeSource(source) {\n    const { origin } = new URL(source);\n    return origin + encodePath(source.slice(origin.length));\n}\n/**\n * Get parent source URL\n *\n * @param source - The source URL\n */\nexport function getSourceParent(source) {\n    const parent = dirname(source);\n    if (parent === sourceRoot) {\n        return folderTreeId;\n    }\n    return `${folderTreeId}::${encodeSource(parent)}`;\n}\n","var render = function render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return _c(_setup.NcAppNavigationItem,{staticClass:\"files-navigation__item\",attrs:{\"allow-collapse\":\"\",\"loading\":_setup.isLoading,\"data-cy-files-navigation-item\":_vm.view.id,\"exact\":_setup.hasChildViews /* eslint-disable-line @nextcloud/vue/no-deprecated-props */,\"name\":_vm.view.name,\"open\":_setup.isExpanded,\"pinned\":_vm.view.sticky,\"to\":_setup.navigationRoute},on:{\"update:open\":_setup.onExpandCollapse},scopedSlots:_vm._u([(_vm.view.icon)?{key:\"icon\",fn:function(){return [_c(_setup.NcIconSvgWrapper,{attrs:{\"svg\":_vm.view.icon}})]},proxy:true}:null],null,true)},[_vm._v(\" \"),(!_setup.hasChildViews && !_setup.childViewsLoaded && _vm.view.loadChildViews)?_c('li',{directives:[{name:\"show\",rawName:\"v-show\",value:(false),expression:\"false\"}],attrs:{\"role\":\"presentation\"}}):_vm._e(),_vm._v(\" \"),_vm._l((_setup.sortedChildViews),function(childView){return _c('FilesNavigationListItem',{key:childView.id,attrs:{\"level\":_vm.level + 1,\"view\":childView}})})],2)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import mod from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/ts-loader/index.js??clonedRuleSet-6.use[1]!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./FilesNavigationListItem.vue?vue&type=script&setup=true&lang=ts\"; export default mod; export * from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/ts-loader/index.js??clonedRuleSet-6.use[1]!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./FilesNavigationListItem.vue?vue&type=script&setup=true&lang=ts\"","import { render, staticRenderFns } from \"./FilesNavigationListItem.vue?vue&type=template&id=04ff00a1\"\nimport script from \"./FilesNavigationListItem.vue?vue&type=script&setup=true&lang=ts\"\nexport * from \"./FilesNavigationListItem.vue?vue&type=script&setup=true&lang=ts\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n  script,\n  render,\n  staticRenderFns,\n  false,\n  null,\n  null,\n  null\n  \n)\n\nexport default component.exports","import mod from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/ts-loader/index.js??clonedRuleSet-6.use[1]!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./FilesNavigationList.vue?vue&type=script&setup=true&lang=ts\"; export default mod; export * from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/ts-loader/index.js??clonedRuleSet-6.use[1]!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./FilesNavigationList.vue?vue&type=script&setup=true&lang=ts\"","\n      import API from \"!../../../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\";\n      import domAPI from \"!../../../../node_modules/style-loader/dist/runtime/styleDomAPI.js\";\n      import insertFn from \"!../../../../node_modules/style-loader/dist/runtime/insertBySelector.js\";\n      import setAttributes from \"!../../../../node_modules/style-loader/dist/runtime/setAttributesWithoutAttributes.js\";\n      import insertStyleElement from \"!../../../../node_modules/style-loader/dist/runtime/insertStyleElement.js\";\n      import styleTagTransformFn from \"!../../../../node_modules/style-loader/dist/runtime/styleTagTransform.js\";\n      import content, * as namedExport from \"!!../../../../node_modules/css-loader/dist/cjs.js??clonedRuleSet-3.use[1]!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./FilesNavigationList.vue?vue&type=style&index=0&id=1b62d532&prod&module=true&lang=css\";\n      \n      \n\nvar options = {};\n\noptions.styleTagTransform = styleTagTransformFn;\noptions.setAttributes = setAttributes;\noptions.insert = insertFn.bind(null, \"head\");\noptions.domAPI = domAPI;\noptions.insertStyleElement = insertStyleElement;\n\nvar update = API(content, options);\n\n\n\nexport * from \"!!../../../../node_modules/css-loader/dist/cjs.js??clonedRuleSet-3.use[1]!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./FilesNavigationList.vue?vue&type=style&index=0&id=1b62d532&prod&module=true&lang=css\";\n       export default content && content.locals ? content.locals : undefined;\n","import { render, staticRenderFns } from \"./FilesNavigationList.vue?vue&type=template&id=1b62d532\"\nimport script from \"./FilesNavigationList.vue?vue&type=script&setup=true&lang=ts\"\nexport * from \"./FilesNavigationList.vue?vue&type=script&setup=true&lang=ts\"\nimport style0 from \"./FilesNavigationList.vue?vue&type=style&index=0&id=1b62d532&prod&module=true&lang=css\"\n\n\n\n\nfunction injectStyles (context) {\n  \n  this[\"$style\"] = (style0.locals || style0)\n\n}\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n  script,\n  render,\n  staticRenderFns,\n  false,\n  injectStyles,\n  null,\n  null\n  \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return _c(_setup.NcAppNavigationSearch,{attrs:{\"label\":_setup.searchLabel},scopedSlots:_vm._u([{key:\"actions\",fn:function(){return [_c(_setup.NcActions,{attrs:{\"aria-label\":_setup.t('files', 'Search scope options'),\"disabled\":_setup.isSearchView},scopedSlots:_vm._u([{key:\"icon\",fn:function(){return [_c(_setup.NcIconSvgWrapper,{attrs:{\"path\":_setup.searchStore.scope === 'globally' ? _setup.mdiSearchWeb : _setup.mdiMagnify}})]},proxy:true}])},[_vm._v(\" \"),_c(_setup.NcActionButton,{attrs:{\"close-after-click\":\"\"},on:{\"click\":function($event){_setup.searchStore.scope = 'filter'}},scopedSlots:_vm._u([{key:\"icon\",fn:function(){return [_c(_setup.NcIconSvgWrapper,{attrs:{\"path\":_setup.mdiMagnify}})]},proxy:true}])},[_vm._v(\"\\n\\t\\t\\t\\t\"+_vm._s(_setup.t('files', 'Search here'))+\"\\n\\t\\t\\t\")]),_vm._v(\" \"),_c(_setup.NcActionButton,{attrs:{\"close-after-click\":\"\"},on:{\"click\":function($event){_setup.searchStore.scope = 'globally'}},scopedSlots:_vm._u([{key:\"icon\",fn:function(){return [_c(_setup.NcIconSvgWrapper,{attrs:{\"path\":_setup.mdiSearchWeb}})]},proxy:true}])},[_vm._v(\"\\n\\t\\t\\t\\t\"+_vm._s(_setup.t('files', 'Search everywhere'))+\"\\n\\t\\t\\t\")])],1)]},proxy:true}]),model:{value:(_setup.searchStore.query),callback:function ($$v) {_vm.$set(_setup.searchStore, \"query\", $$v)},expression:\"searchStore.query\"}})\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import mod from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/ts-loader/index.js??clonedRuleSet-6.use[1]!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./FilesNavigationSearch.vue?vue&type=script&setup=true&lang=ts\"; export default mod; export * from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/ts-loader/index.js??clonedRuleSet-6.use[1]!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./FilesNavigationSearch.vue?vue&type=script&setup=true&lang=ts\"","/**\n * SPDX-FileCopyrightText: 2025 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\nimport { onUnmounted } from 'vue';\nimport { useRouter } from 'vue-router/composables';\n/**\n * Helper until we use Vue-Router v4 (Vue3).\n *\n * @param fn - The navigation guard\n */\nexport function onBeforeNavigation(fn) {\n    const router = useRouter();\n    const remove = router.beforeResolve(fn);\n    onUnmounted(remove);\n}\n","import { render, staticRenderFns } from \"./FilesNavigationSearch.vue?vue&type=template&id=7f26c822\"\nimport script from \"./FilesNavigationSearch.vue?vue&type=script&setup=true&lang=ts\"\nexport * from \"./FilesNavigationSearch.vue?vue&type=script&setup=true&lang=ts\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n  script,\n  render,\n  staticRenderFns,\n  false,\n  null,\n  null,\n  null\n  \n)\n\nexport default component.exports","/* eslint-disable no-undefined,no-param-reassign,no-shadow */\n\n/**\n * Throttle execution of a function. Especially useful for rate limiting\n * execution of handlers on events like resize and scroll.\n *\n * @param {number} delay -                  A zero-or-greater delay in milliseconds. For event callbacks, values around 100 or 250 (or even higher)\n *                                            are most useful.\n * @param {Function} callback -               A function to be executed after delay milliseconds. The `this` context and all arguments are passed through,\n *                                            as-is, to `callback` when the throttled-function is executed.\n * @param {object} [options] -              An object to configure options.\n * @param {boolean} [options.noTrailing] -   Optional, defaults to false. If noTrailing is true, callback will only execute every `delay` milliseconds\n *                                            while the throttled-function is being called. If noTrailing is false or unspecified, callback will be executed\n *                                            one final time after the last throttled-function call. (After the throttled-function has not been called for\n *                                            `delay` milliseconds, the internal counter is reset).\n * @param {boolean} [options.noLeading] -   Optional, defaults to false. If noLeading is false, the first throttled-function call will execute callback\n *                                            immediately. If noLeading is true, the first the callback execution will be skipped. It should be noted that\n *                                            callback will never executed if both noLeading = true and noTrailing = true.\n * @param {boolean} [options.debounceMode] - If `debounceMode` is true (at begin), schedule `clear` to execute after `delay` ms. If `debounceMode` is\n *                                            false (at end), schedule `callback` to execute after `delay` ms.\n *\n * @returns {Function} A new, throttled, function.\n */\nfunction throttle (delay, callback, options) {\n  var _ref = options || {},\n    _ref$noTrailing = _ref.noTrailing,\n    noTrailing = _ref$noTrailing === void 0 ? false : _ref$noTrailing,\n    _ref$noLeading = _ref.noLeading,\n    noLeading = _ref$noLeading === void 0 ? false : _ref$noLeading,\n    _ref$debounceMode = _ref.debounceMode,\n    debounceMode = _ref$debounceMode === void 0 ? undefined : _ref$debounceMode;\n  /*\n   * After wrapper has stopped being called, this timeout ensures that\n   * `callback` is executed at the proper times in `throttle` and `end`\n   * debounce modes.\n   */\n  var timeoutID;\n  var cancelled = false;\n\n  // Keep track of the last time `callback` was executed.\n  var lastExec = 0;\n\n  // Function to clear existing timeout\n  function clearExistingTimeout() {\n    if (timeoutID) {\n      clearTimeout(timeoutID);\n    }\n  }\n\n  // Function to cancel next exec\n  function cancel(options) {\n    var _ref2 = options || {},\n      _ref2$upcomingOnly = _ref2.upcomingOnly,\n      upcomingOnly = _ref2$upcomingOnly === void 0 ? false : _ref2$upcomingOnly;\n    clearExistingTimeout();\n    cancelled = !upcomingOnly;\n  }\n\n  /*\n   * The `wrapper` function encapsulates all of the throttling / debouncing\n   * functionality and when executed will limit the rate at which `callback`\n   * is executed.\n   */\n  function wrapper() {\n    for (var _len = arguments.length, arguments_ = new Array(_len), _key = 0; _key < _len; _key++) {\n      arguments_[_key] = arguments[_key];\n    }\n    var self = this;\n    var elapsed = Date.now() - lastExec;\n    if (cancelled) {\n      return;\n    }\n\n    // Execute `callback` and update the `lastExec` timestamp.\n    function exec() {\n      lastExec = Date.now();\n      callback.apply(self, arguments_);\n    }\n\n    /*\n     * If `debounceMode` is true (at begin) this is used to clear the flag\n     * to allow future `callback` executions.\n     */\n    function clear() {\n      timeoutID = undefined;\n    }\n    if (!noLeading && debounceMode && !timeoutID) {\n      /*\n       * Since `wrapper` is being called for the first time and\n       * `debounceMode` is true (at begin), execute `callback`\n       * and noLeading != true.\n       */\n      exec();\n    }\n    clearExistingTimeout();\n    if (debounceMode === undefined && elapsed > delay) {\n      if (noLeading) {\n        /*\n         * In throttle mode with noLeading, if `delay` time has\n         * been exceeded, update `lastExec` and schedule `callback`\n         * to execute after `delay` ms.\n         */\n        lastExec = Date.now();\n        if (!noTrailing) {\n          timeoutID = setTimeout(debounceMode ? clear : exec, delay);\n        }\n      } else {\n        /*\n         * In throttle mode without noLeading, if `delay` time has been exceeded, execute\n         * `callback`.\n         */\n        exec();\n      }\n    } else if (noTrailing !== true) {\n      /*\n       * In trailing throttle mode, since `delay` time has not been\n       * exceeded, schedule `callback` to execute `delay` ms after most\n       * recent execution.\n       *\n       * If `debounceMode` is true (at begin), schedule `clear` to execute\n       * after `delay` ms.\n       *\n       * If `debounceMode` is false (at end), schedule `callback` to\n       * execute after `delay` ms.\n       */\n      timeoutID = setTimeout(debounceMode ? clear : exec, debounceMode === undefined ? delay - elapsed : delay);\n    }\n  }\n  wrapper.cancel = cancel;\n\n  // Return the wrapper function.\n  return wrapper;\n}\n\n/* eslint-disable no-undefined */\n\n/**\n * Debounce execution of a function. Debouncing, unlike throttling,\n * guarantees that a function is only executed a single time, either at the\n * very beginning of a series of calls, or at the very end.\n *\n * @param {number} delay -               A zero-or-greater delay in milliseconds. For event callbacks, values around 100 or 250 (or even higher) are most useful.\n * @param {Function} callback -          A function to be executed after delay milliseconds. The `this` context and all arguments are passed through, as-is,\n *                                        to `callback` when the debounced-function is executed.\n * @param {object} [options] -           An object to configure options.\n * @param {boolean} [options.atBegin] -  Optional, defaults to false. If atBegin is false or unspecified, callback will only be executed `delay` milliseconds\n *                                        after the last debounced-function call. If atBegin is true, callback will be executed only at the first debounced-function call.\n *                                        (After the throttled-function has not been called for `delay` milliseconds, the internal counter is reset).\n *\n * @returns {Function} A new, debounced function.\n */\nfunction debounce (delay, callback, options) {\n  var _ref = options || {},\n    _ref$atBegin = _ref.atBegin,\n    atBegin = _ref$atBegin === void 0 ? false : _ref$atBegin;\n  return throttle(delay, callback, {\n    debounceMode: atBegin !== false\n  });\n}\n\nexport { debounce, throttle };\n//# sourceMappingURL=index.js.map\n","\n\n","import mod from \"-!../vue-loader/lib/index.js??vue-loader-options!./ChartPieOutline.vue?vue&type=script&lang=js\"; export default mod; export * from \"-!../vue-loader/lib/index.js??vue-loader-options!./ChartPieOutline.vue?vue&type=script&lang=js\"","import mod from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./NavigationQuota.vue?vue&type=script&lang=js\"; export default mod; export * from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./NavigationQuota.vue?vue&type=script&lang=js\"","\n\n\n\n\n\n","import { render, staticRenderFns } from \"./ChartPieOutline.vue?vue&type=template&id=a29cc97a\"\nimport script from \"./ChartPieOutline.vue?vue&type=script&lang=js\"\nexport * from \"./ChartPieOutline.vue?vue&type=script&lang=js\"\n\n\n/* normalize component */\nimport normalizer from \"!../vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n  script,\n  render,\n  staticRenderFns,\n  false,\n  null,\n  null,\n  null\n  \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('span',_vm._b({staticClass:\"material-design-icon chart-pie-outline-icon\",attrs:{\"aria-hidden\":_vm.title ? null : 'true',\"aria-label\":_vm.title,\"role\":\"img\"},on:{\"click\":function($event){return _vm.$emit('click', $event)}}},'span',_vm.$attrs,false),[_c('svg',{staticClass:\"material-design-icon__svg\",attrs:{\"fill\":_vm.fillColor,\"width\":_vm.size,\"height\":_vm.size,\"viewBox\":\"0 0 24 24\"}},[_c('path',{attrs:{\"d\":\"M13 11H19.95Q19.58 8.25 17.66 6.34 15.75 4.43 13 4.05M11 19.95V4.05Q8 4.43 6 6.69 4 8.95 4 12T6 17.31Q8 19.58 11 19.95M13 19.95Q15.75 19.6 17.68 17.68 19.6 15.75 19.95 13H13M12 12M12 22Q9.93 22 8.1 21.21 6.28 20.43 4.93 19.08 3.58 17.73 2.79 15.9 2 14.08 2 12T2.79 8.1Q3.58 6.28 4.93 4.93 6.28 3.58 8.1 2.79 9.93 2 12 2T15.89 2.79Q17.7 3.58 19.06 4.94 20.43 6.3 21.21 8.11 22 9.93 22 12 22 14.05 21.21 15.88 20.43 17.7 19.08 19.06 17.73 20.43 15.9 21.21 14.08 22 12 22Z\"}},[(_vm.title)?_c('title',[_vm._v(_vm._s(_vm.title))]):_vm._e()])])])\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n      import API from \"!../../../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\";\n      import domAPI from \"!../../../../node_modules/style-loader/dist/runtime/styleDomAPI.js\";\n      import insertFn from \"!../../../../node_modules/style-loader/dist/runtime/insertBySelector.js\";\n      import setAttributes from \"!../../../../node_modules/style-loader/dist/runtime/setAttributesWithoutAttributes.js\";\n      import insertStyleElement from \"!../../../../node_modules/style-loader/dist/runtime/insertStyleElement.js\";\n      import styleTagTransformFn from \"!../../../../node_modules/style-loader/dist/runtime/styleTagTransform.js\";\n      import content, * as namedExport from \"!!../../../../node_modules/css-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/sass-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./NavigationQuota.vue?vue&type=style&index=0&id=062ef4b2&prod&lang=scss&scoped=true\";\n      \n      \n\nvar options = {};\n\noptions.styleTagTransform = styleTagTransformFn;\noptions.setAttributes = setAttributes;\noptions.insert = insertFn.bind(null, \"head\");\noptions.domAPI = domAPI;\noptions.insertStyleElement = insertStyleElement;\n\nvar update = API(content, options);\n\n\n\nexport * from \"!!../../../../node_modules/css-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/sass-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./NavigationQuota.vue?vue&type=style&index=0&id=062ef4b2&prod&lang=scss&scoped=true\";\n       export default content && content.locals ? content.locals : undefined;\n","import { render, staticRenderFns } from \"./NavigationQuota.vue?vue&type=template&id=062ef4b2&scoped=true\"\nimport script from \"./NavigationQuota.vue?vue&type=script&lang=js\"\nexport * from \"./NavigationQuota.vue?vue&type=script&lang=js\"\nimport style0 from \"./NavigationQuota.vue?vue&type=style&index=0&id=062ef4b2&prod&lang=scss&scoped=true\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n  script,\n  render,\n  staticRenderFns,\n  false,\n  null,\n  \"062ef4b2\",\n  null\n  \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;return (_vm.storageStats)?_c('NcAppNavigationItem',{staticClass:\"app-navigation-entry__settings-quota\",class:{ 'app-navigation-entry__settings-quota--not-unlimited': _vm.storageStats.quota >= 0 },attrs:{\"aria-description\":_vm.t('files', 'Storage information'),\"loading\":_vm.loadingStorageStats,\"name\":_vm.storageStatsTitle,\"title\":_vm.storageStatsTooltip,\"data-cy-files-navigation-settings-quota\":\"\"},on:{\"click\":function($event){$event.stopPropagation();$event.preventDefault();return _vm.debounceUpdateStorageStats.apply(null, arguments)}}},[_c('ChartPie',{attrs:{\"slot\":\"icon\",\"size\":20},slot:\"icon\"}),_vm._v(\" \"),(_vm.storageStats.quota >= 0)?_c('NcProgressBar',{attrs:{\"slot\":\"extra\",\"aria-label\":_vm.t('files', 'Storage quota'),\"error\":_vm.storageStats.relative > 80,\"value\":Math.min(_vm.storageStats.relative, 100)},slot:\"extra\"}):_vm._e()],1):_vm._e()\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","var render = function render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return _c(_setup.NcAppSettingsDialog,{attrs:{\"legacy\":false,\"name\":_setup.t('files', 'Files settings'),\"no-version\":\"\",\"open\":_vm.open,\"show-navigation\":\"\"},on:{\"update:open\":function($event){return _setup.emit('close')}}},[_c(_setup.FilesAppSettingsGeneral),_vm._v(\" \"),_c(_setup.FilesAppSettingsAppearance),_vm._v(\" \"),_c(_setup.FilesAppSettingsLegacyApi),_vm._v(\" \"),_c(_setup.FilesAppSettingsWarnings),_vm._v(\" \"),_c(_setup.FilesAppSettingsWebDav),_vm._v(\" \"),_c(_setup.FilesAppSettingsShortcuts)],1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","var render = function render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return _c(_setup.NcAppSettingsSection,{attrs:{\"id\":\"appearance\",\"name\":_setup.t('files', 'Appearance')}},[_c(_setup.NcFormBox,[_c(_setup.NcFormBoxSwitch,{attrs:{\"label\":_setup.t('files', 'Show hidden files')},on:{\"update:modelValue\":function($event){return _setup.store.update('show_hidden', $event)}},model:{value:(_setup.store.userConfig.show_hidden),callback:function ($$v) {_vm.$set(_setup.store.userConfig, \"show_hidden\", $$v)},expression:\"store.userConfig.show_hidden\"}}),_vm._v(\" \"),_c(_setup.NcFormBoxSwitch,{attrs:{\"label\":_setup.t('files', 'Show file type column')},on:{\"update:modelValue\":function($event){return _setup.store.update('show_mime_column', $event)}},model:{value:(_setup.store.userConfig.show_mime_column),callback:function ($$v) {_vm.$set(_setup.store.userConfig, \"show_mime_column\", $$v)},expression:\"store.userConfig.show_mime_column\"}}),_vm._v(\" \"),_c(_setup.NcFormBoxSwitch,{attrs:{\"label\":_setup.t('files', 'Show file extensions')},on:{\"update:modelValue\":function($event){return _setup.store.update('show_files_extensions', $event)}},model:{value:(_setup.store.userConfig.show_files_extensions),callback:function ($$v) {_vm.$set(_setup.store.userConfig, \"show_files_extensions\", $$v)},expression:\"store.userConfig.show_files_extensions\"}}),_vm._v(\" \"),_c(_setup.NcFormBoxSwitch,{attrs:{\"label\":_setup.t('files', 'Crop image previews')},on:{\"update:modelValue\":function($event){return _setup.store.update('crop_image_previews', $event)}},model:{value:(_setup.store.userConfig.crop_image_previews),callback:function ($$v) {_vm.$set(_setup.store.userConfig, \"crop_image_previews\", $$v)},expression:\"store.userConfig.crop_image_previews\"}})],1)],1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import mod from \"-!../../../../../node_modules/babel-loader/lib/index.js!../../../../../node_modules/ts-loader/index.js??clonedRuleSet-6.use[1]!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./FilesAppSettingsAppearance.vue?vue&type=script&setup=true&lang=ts\"; export default mod; export * from \"-!../../../../../node_modules/babel-loader/lib/index.js!../../../../../node_modules/ts-loader/index.js??clonedRuleSet-6.use[1]!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./FilesAppSettingsAppearance.vue?vue&type=script&setup=true&lang=ts\"","import { render, staticRenderFns } from \"./FilesAppSettingsAppearance.vue?vue&type=template&id=1d0fcc36\"\nimport script from \"./FilesAppSettingsAppearance.vue?vue&type=script&setup=true&lang=ts\"\nexport * from \"./FilesAppSettingsAppearance.vue?vue&type=script&setup=true&lang=ts\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n  script,\n  render,\n  staticRenderFns,\n  false,\n  null,\n  null,\n  null\n  \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return _c(_setup.NcAppSettingsSection,{attrs:{\"id\":\"settings\",\"name\":_setup.t('files', 'General')}},[_c(_setup.NcFormBox,[_c(_setup.NcFormBoxSwitch,{attrs:{\"label\":_setup.t('files', 'Sort favorites first')},on:{\"update:modelValue\":function($event){return _setup.store.update('sort_favorites_first', $event)}},model:{value:(_setup.store.userConfig.sort_favorites_first),callback:function ($$v) {_vm.$set(_setup.store.userConfig, \"sort_favorites_first\", $$v)},expression:\"store.userConfig.sort_favorites_first\"}}),_vm._v(\" \"),_c(_setup.NcFormBoxSwitch,{attrs:{\"label\":_setup.t('files', 'Sort folders before files')},on:{\"update:modelValue\":function($event){return _setup.store.update('sort_folders_first', $event)}},model:{value:(_setup.store.userConfig.sort_folders_first),callback:function ($$v) {_vm.$set(_setup.store.userConfig, \"sort_folders_first\", $$v)},expression:\"store.userConfig.sort_folders_first\"}}),_vm._v(\" \"),_c(_setup.NcFormBoxSwitch,{attrs:{\"label\":_setup.t('files', 'Enable folder tree view')},on:{\"update:modelValue\":function($event){return _setup.store.update('folder_tree', $event)}},model:{value:(_setup.store.userConfig.folder_tree),callback:function ($$v) {_vm.$set(_setup.store.userConfig, \"folder_tree\", $$v)},expression:\"store.userConfig.folder_tree\"}})],1),_vm._v(\" \"),_c(_setup.NcRadioGroup,{attrs:{\"label\":_setup.t('files', 'Default view')},on:{\"update:modelValue\":function($event){return _setup.store.update('default_view', $event)}},model:{value:(_setup.store.userConfig.default_view),callback:function ($$v) {_vm.$set(_setup.store.userConfig, \"default_view\", $$v)},expression:\"store.userConfig.default_view\"}},[_c(_setup.NcRadioGroupButton,{attrs:{\"label\":_setup.t('files', 'All files'),\"value\":\"files\"},scopedSlots:_vm._u([{key:\"icon\",fn:function(){return [_c(_setup.NcIconSvgWrapper,{attrs:{\"path\":_setup.mdiFolderOutline}})]},proxy:true}])}),_vm._v(\" \"),_c(_setup.NcRadioGroupButton,{attrs:{\"label\":_setup.t('files', 'Personal files'),\"value\":\"personal\"},scopedSlots:_vm._u([{key:\"icon\",fn:function(){return [_c(_setup.NcIconSvgWrapper,{attrs:{\"path\":_setup.mdiAccountOutline}})]},proxy:true}])})],1)],1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import mod from \"-!../../../../../node_modules/babel-loader/lib/index.js!../../../../../node_modules/ts-loader/index.js??clonedRuleSet-6.use[1]!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./FilesAppSettingsGeneral.vue?vue&type=script&setup=true&lang=ts\"; export default mod; export * from \"-!../../../../../node_modules/babel-loader/lib/index.js!../../../../../node_modules/ts-loader/index.js??clonedRuleSet-6.use[1]!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./FilesAppSettingsGeneral.vue?vue&type=script&setup=true&lang=ts\"","import { render, staticRenderFns } from \"./FilesAppSettingsGeneral.vue?vue&type=template&id=286756ea\"\nimport script from \"./FilesAppSettingsGeneral.vue?vue&type=script&setup=true&lang=ts\"\nexport * from \"./FilesAppSettingsGeneral.vue?vue&type=script&setup=true&lang=ts\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n  script,\n  render,\n  staticRenderFns,\n  false,\n  null,\n  null,\n  null\n  \n)\n\nexport default component.exports","import mod from \"-!../../../../../node_modules/babel-loader/lib/index.js!../../../../../node_modules/ts-loader/index.js??clonedRuleSet-6.use[1]!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./FilesAppSettingsLegacyApiEntry.vue?vue&type=script&setup=true&lang=ts\"; export default mod; export * from \"-!../../../../../node_modules/babel-loader/lib/index.js!../../../../../node_modules/ts-loader/index.js??clonedRuleSet-6.use[1]!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./FilesAppSettingsLegacyApiEntry.vue?vue&type=script&setup=true&lang=ts\"","var render = function render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return _c('div',{ref:\"el\"})\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import { render, staticRenderFns } from \"./FilesAppSettingsLegacyApiEntry.vue?vue&type=template&id=6d8612e1\"\nimport script from \"./FilesAppSettingsLegacyApiEntry.vue?vue&type=script&setup=true&lang=ts\"\nexport * from \"./FilesAppSettingsLegacyApiEntry.vue?vue&type=script&setup=true&lang=ts\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n  script,\n  render,\n  staticRenderFns,\n  false,\n  null,\n  null,\n  null\n  \n)\n\nexport default component.exports","import mod from \"-!../../../../../node_modules/babel-loader/lib/index.js!../../../../../node_modules/ts-loader/index.js??clonedRuleSet-6.use[1]!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./FilesAppSettingsLegacyApi.vue?vue&type=script&setup=true&lang=ts\"; export default mod; export * from \"-!../../../../../node_modules/babel-loader/lib/index.js!../../../../../node_modules/ts-loader/index.js??clonedRuleSet-6.use[1]!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./FilesAppSettingsLegacyApi.vue?vue&type=script&setup=true&lang=ts\"","var render = function render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return (_setup.apiSettings.length !== 0)?_c(_setup.NcAppSettingsSection,{attrs:{\"id\":\"api-settings\",\"name\":_setup.t('files', 'Additional settings')}},_vm._l((_setup.apiSettings),function(setting){return _c(_setup.FilesAppSettingsLegacyApiEntry,{key:setting.name,attrs:{\"setting\":setting}})}),1):_vm._e()\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import { render, staticRenderFns } from \"./FilesAppSettingsLegacyApi.vue?vue&type=template&id=f4559f9c\"\nimport script from \"./FilesAppSettingsLegacyApi.vue?vue&type=script&setup=true&lang=ts\"\nexport * from \"./FilesAppSettingsLegacyApi.vue?vue&type=script&setup=true&lang=ts\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n  script,\n  render,\n  staticRenderFns,\n  false,\n  null,\n  null,\n  null\n  \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return _c(_setup.NcAppSettingsShortcutsSection,[_c(_setup.NcHotkeyList,{attrs:{\"label\":_setup.t('files', 'Actions')}},[_c(_setup.NcHotkey,{attrs:{\"label\":_setup.t('files', 'File actions'),\"hotkey\":\"A\"}}),_vm._v(\" \"),_vm._l((_setup.actionHotkeys),function(hotkey){return _c(_setup.NcHotkey,{key:hotkey.id,attrs:{\"label\":hotkey.label,\"hotkey\":hotkey.hotkey}})})],2),_vm._v(\" \"),_c(_setup.NcHotkeyList,{attrs:{\"label\":_setup.t('files', 'Selection')}},[_c(_setup.NcHotkey,{attrs:{\"label\":_setup.t('files', 'Select all files'),\"hotkey\":\"Control A\"}}),_vm._v(\" \"),_c(_setup.NcHotkey,{attrs:{\"label\":_setup.t('files', 'Deselect all'),\"hotkey\":\"Escape\"}}),_vm._v(\" \"),_c(_setup.NcHotkey,{attrs:{\"label\":_setup.t('files', 'Select or deselect'),\"hotkey\":\"Control Space\"}}),_vm._v(\" \"),_c(_setup.NcHotkey,{attrs:{\"label\":_setup.t('files', 'Select a range'),\"hotkey\":\"Control Shift Space\"}})],1),_vm._v(\" \"),_c(_setup.NcHotkeyList,{attrs:{\"label\":_setup.t('files', 'Navigation')}},[_c(_setup.NcHotkey,{attrs:{\"label\":_setup.t('files', 'Go to parent folder'),\"hotkey\":\"Alt ArrowUp\"}}),_vm._v(\" \"),_c(_setup.NcHotkey,{attrs:{\"label\":_setup.t('files', 'Go to file above'),\"hotkey\":\"ArrowUp\"}}),_vm._v(\" \"),_c(_setup.NcHotkey,{attrs:{\"label\":_setup.t('files', 'Go to file below'),\"hotkey\":\"ArrowDown\"}}),_vm._v(\" \"),_c(_setup.NcHotkey,{attrs:{\"label\":_setup.t('files', 'Go left in grid'),\"hotkey\":\"ArrowLeft\"}}),_vm._v(\" \"),_c(_setup.NcHotkey,{attrs:{\"label\":_setup.t('files', 'Go right in grid'),\"hotkey\":\"ArrowRight\"}})],1),_vm._v(\" \"),_c(_setup.NcHotkeyList,{attrs:{\"label\":_setup.t('files', 'View')}},[_c(_setup.NcHotkey,{attrs:{\"label\":_setup.t('files', 'Toggle grid view'),\"hotkey\":\"V\"}}),_vm._v(\" \"),_c(_setup.NcHotkey,{attrs:{\"label\":_setup.t('files', 'Show those shortcuts'),\"hotkey\":\"?\"}})],1)],1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import mod from \"-!../../../../../node_modules/babel-loader/lib/index.js!../../../../../node_modules/ts-loader/index.js??clonedRuleSet-6.use[1]!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./FilesAppSettingsShortcuts.vue?vue&type=script&setup=true&lang=ts\"; export default mod; export * from \"-!../../../../../node_modules/babel-loader/lib/index.js!../../../../../node_modules/ts-loader/index.js??clonedRuleSet-6.use[1]!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./FilesAppSettingsShortcuts.vue?vue&type=script&setup=true&lang=ts\"","import { render, staticRenderFns } from \"./FilesAppSettingsShortcuts.vue?vue&type=template&id=5a8abf86\"\nimport script from \"./FilesAppSettingsShortcuts.vue?vue&type=script&setup=true&lang=ts\"\nexport * from \"./FilesAppSettingsShortcuts.vue?vue&type=script&setup=true&lang=ts\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n  script,\n  render,\n  staticRenderFns,\n  false,\n  null,\n  null,\n  null\n  \n)\n\nexport default component.exports","import mod from \"-!../../../../../node_modules/babel-loader/lib/index.js!../../../../../node_modules/ts-loader/index.js??clonedRuleSet-6.use[1]!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./FilesAppSettingsWarnings.vue?vue&type=script&lang=ts&setup=true\"; export default mod; export * from \"-!../../../../../node_modules/babel-loader/lib/index.js!../../../../../node_modules/ts-loader/index.js??clonedRuleSet-6.use[1]!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./FilesAppSettingsWarnings.vue?vue&type=script&lang=ts&setup=true\"","var render = function render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return _c(_setup.NcAppSettingsSection,{attrs:{\"id\":\"warning\",\"name\":_setup.t('files', 'Warnings')}},[_c(_setup.NcFormBox,[_c(_setup.NcFormBoxSwitch,{attrs:{\"label\":_setup.t('files', 'Warn before changing a file extension')},on:{\"update:modelValue\":function($event){return _setup.store.update('show_dialog_file_extension', $event)}},model:{value:(_setup.store.userConfig.show_dialog_file_extension),callback:function ($$v) {_vm.$set(_setup.store.userConfig, \"show_dialog_file_extension\", $$v)},expression:\"store.userConfig.show_dialog_file_extension\"}}),_vm._v(\" \"),_c(_setup.NcFormBoxSwitch,{attrs:{\"label\":_setup.t('files', 'Warn before deleting a file')},on:{\"update:modelValue\":function($event){return _setup.store.update('show_dialog_deletion', $event)}},model:{value:(_setup.store.userConfig.show_dialog_deletion),callback:function ($$v) {_vm.$set(_setup.store.userConfig, \"show_dialog_deletion\", $$v)},expression:\"store.userConfig.show_dialog_deletion\"}})],1)],1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import { render, staticRenderFns } from \"./FilesAppSettingsWarnings.vue?vue&type=template&id=02608f74\"\nimport script from \"./FilesAppSettingsWarnings.vue?vue&type=script&lang=ts&setup=true\"\nexport * from \"./FilesAppSettingsWarnings.vue?vue&type=script&lang=ts&setup=true\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n  script,\n  render,\n  staticRenderFns,\n  false,\n  null,\n  null,\n  null\n  \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return _c(_setup.NcAppSettingsSection,{attrs:{\"id\":\"webdav\",\"name\":\"WebDAV\"}},[_c(_setup.NcFormBox,[_c(_setup.NcFormBoxCopyButton,{attrs:{\"label\":_setup.t('files', 'WebDAV URL'),\"value\":_setup.webDavUrl}}),_vm._v(\" \"),(_setup.isTwoFactorEnabled)?_c(_setup.NcFormBoxButton,{attrs:{\"label\":_setup.t('files', 'Create an app password'),\"description\":_setup.t('files', 'Required for WebDAV authentication because Two-Factor Authentication is enabled for this account.'),\"href\":_setup.appPasswordUrl,\"target\":\"_blank\"}}):_vm._e(),_vm._v(\" \"),_c(_setup.NcFormBoxButton,{attrs:{\"label\":_setup.t('files', 'How to access files using WebDAV'),\"href\":_setup.webDavDocsUrl,\"target\":\"_blank\"}})],1)],1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import mod from \"-!../../../../../node_modules/babel-loader/lib/index.js!../../../../../node_modules/ts-loader/index.js??clonedRuleSet-6.use[1]!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./FilesAppSettingsWebDav.vue?vue&type=script&lang=ts&setup=true\"; export default mod; export * from \"-!../../../../../node_modules/babel-loader/lib/index.js!../../../../../node_modules/ts-loader/index.js??clonedRuleSet-6.use[1]!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./FilesAppSettingsWebDav.vue?vue&type=script&lang=ts&setup=true\"","import { render, staticRenderFns } from \"./FilesAppSettingsWebDav.vue?vue&type=template&id=601f53e8\"\nimport script from \"./FilesAppSettingsWebDav.vue?vue&type=script&lang=ts&setup=true\"\nexport * from \"./FilesAppSettingsWebDav.vue?vue&type=script&lang=ts&setup=true\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n  script,\n  render,\n  staticRenderFns,\n  false,\n  null,\n  null,\n  null\n  \n)\n\nexport default component.exports","import mod from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/ts-loader/index.js??clonedRuleSet-6.use[1]!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./FilesAppSettings.vue?vue&type=script&setup=true&lang=ts\"; export default mod; export * from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/ts-loader/index.js??clonedRuleSet-6.use[1]!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./FilesAppSettings.vue?vue&type=script&setup=true&lang=ts\"","import { render, staticRenderFns } from \"./FilesAppSettings.vue?vue&type=template&id=72195bd8\"\nimport script from \"./FilesAppSettings.vue?vue&type=script&setup=true&lang=ts\"\nexport * from \"./FilesAppSettings.vue?vue&type=script&setup=true&lang=ts\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n  script,\n  render,\n  staticRenderFns,\n  false,\n  null,\n  null,\n  null\n  \n)\n\nexport default component.exports","import mod from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/ts-loader/index.js??clonedRuleSet-6.use[1]!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./FilesNavigation.vue?vue&type=script&setup=true&lang=ts\"; export default mod; export * from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/ts-loader/index.js??clonedRuleSet-6.use[1]!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./FilesNavigation.vue?vue&type=script&setup=true&lang=ts\"","\n      import API from \"!../../../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\";\n      import domAPI from \"!../../../../node_modules/style-loader/dist/runtime/styleDomAPI.js\";\n      import insertFn from \"!../../../../node_modules/style-loader/dist/runtime/insertBySelector.js\";\n      import setAttributes from \"!../../../../node_modules/style-loader/dist/runtime/setAttributesWithoutAttributes.js\";\n      import insertStyleElement from \"!../../../../node_modules/style-loader/dist/runtime/insertStyleElement.js\";\n      import styleTagTransformFn from \"!../../../../node_modules/style-loader/dist/runtime/styleTagTransform.js\";\n      import content, * as namedExport from \"!!../../../../node_modules/css-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/sass-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./FilesNavigation.vue?vue&type=style&index=0&id=b3d7fbf2&prod&scoped=true&lang=scss\";\n      \n      \n\nvar options = {};\n\noptions.styleTagTransform = styleTagTransformFn;\noptions.setAttributes = setAttributes;\noptions.insert = insertFn.bind(null, \"head\");\noptions.domAPI = domAPI;\noptions.insertStyleElement = insertStyleElement;\n\nvar update = API(content, options);\n\n\n\nexport * from \"!!../../../../node_modules/css-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/sass-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./FilesNavigation.vue?vue&type=style&index=0&id=b3d7fbf2&prod&scoped=true&lang=scss\";\n       export default content && content.locals ? content.locals : undefined;\n","import { render, staticRenderFns } from \"./FilesNavigation.vue?vue&type=template&id=b3d7fbf2&scoped=true\"\nimport script from \"./FilesNavigation.vue?vue&type=script&setup=true&lang=ts\"\nexport * from \"./FilesNavigation.vue?vue&type=script&setup=true&lang=ts\"\nimport style0 from \"./FilesNavigation.vue?vue&type=style&index=0&id=b3d7fbf2&prod&scoped=true&lang=scss\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n  script,\n  render,\n  staticRenderFns,\n  false,\n  null,\n  \"b3d7fbf2\",\n  null\n  \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return _c(_setup.NcAppSidebar,{attrs:{\"data-cy-sidebar\":\"\",\"force-menu\":\"\",\"active\":_setup.sidebar.activeTab,\"background\":_setup.background,\"empty\":!_setup.sidebar.hasContext,\"loading\":!_setup.sidebar.hasContext,\"name\":_setup.sidebar.currentNode?.displayname ?? _setup.t('files', 'Loading …'),\"no-toggle\":\"\",\"open\":_setup.sidebar.isOpen},on:{\"update:active\":function($event){return _vm.$set(_setup.sidebar, \"activeTab\", $event)},\"closed\":_setup.onClosed,\"opened\":_setup.onOpened,\"update:open\":_setup.onToggle},scopedSlots:_vm._u([(_setup.sidebar.currentNode)?{key:\"subname\",fn:function(){return [_c(_setup.FilesSidebarSubname,{attrs:{\"node\":_setup.sidebar.currentNode}})]},proxy:true}:null,(_setup.sidebar.currentContext)?{key:\"secondary-actions\",fn:function(){return _vm._l((_setup.sidebar.currentActions),function(action){return _c(_setup.NcActionButton,{key:action.id,attrs:{\"close-after-click\":\"\"},on:{\"click\":function($event){return action.onClick(_setup.sidebar.currentContext)}},scopedSlots:_vm._u([{key:\"icon\",fn:function(){return [_c(_setup.NcIconSvgWrapper,{attrs:{\"svg\":action.iconSvgInline(_setup.sidebar.currentContext)}})]},proxy:true}],null,true)},[_vm._v(\"\\n\\t\\t\\t\"+_vm._s(action.displayName(_setup.sidebar.currentContext))+\"\\n\\t\\t\")])})},proxy:true}:null],null,true)},[_vm._v(\" \"),_vm._v(\" \"),(_setup.sidebar.hasContext)?_vm._l((_setup.sidebar.currentTabs),function(tab){return _c(_setup.FilesSidebarTab,{key:tab.id,attrs:{\"active\":_setup.sidebar.activeTab === tab.id,\"tab\":tab}})}):_vm._e()],2)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","var render = function render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return _c('div',{class:_vm.$style.filesSidebarSubname},[(_setup.isFavourited)?_c(_setup.NcIconSvgWrapper,{attrs:{\"inline\":\"\",\"path\":_setup.mdiStar,\"name\":_setup.t('files', 'Favorite')}}):_vm._e(),_vm._v(\" \"),_c('span',[_vm._v(_vm._s(_setup.size))]),_vm._v(\" \"),(_vm.node.mtime)?_c('span',[_c('span',{class:_vm.$style.filesSidebarSubname__separator},[_vm._v(\"•\")]),_vm._v(\" \"),_c(_setup.NcDateTime,{attrs:{\"timestamp\":_vm.node.mtime}})],1):_vm._e(),_vm._v(\" \"),(_vm.node.owner)?[_c('span',{class:_vm.$style.filesSidebarSubname__separator},[_vm._v(\"•\")]),_vm._v(\" \"),_c(_setup.NcUserBubble,{class:_vm.$style.filesSidebarSubname__userBubble,attrs:{\"title\":_setup.t('files', 'Owner'),\"user\":_vm.node.owner,\"display-name\":_vm.node.attributes['owner-display-name']}})]:_vm._e()],2)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import mod from \"-!../../../../../node_modules/babel-loader/lib/index.js!../../../../../node_modules/ts-loader/index.js??clonedRuleSet-6.use[1]!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./FilesSidebarSubname.vue?vue&type=script&setup=true&lang=ts\"; export default mod; export * from \"-!../../../../../node_modules/babel-loader/lib/index.js!../../../../../node_modules/ts-loader/index.js??clonedRuleSet-6.use[1]!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./FilesSidebarSubname.vue?vue&type=script&setup=true&lang=ts\"","\n      import API from \"!../../../../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\";\n      import domAPI from \"!../../../../../node_modules/style-loader/dist/runtime/styleDomAPI.js\";\n      import insertFn from \"!../../../../../node_modules/style-loader/dist/runtime/insertBySelector.js\";\n      import setAttributes from \"!../../../../../node_modules/style-loader/dist/runtime/setAttributesWithoutAttributes.js\";\n      import insertStyleElement from \"!../../../../../node_modules/style-loader/dist/runtime/insertStyleElement.js\";\n      import styleTagTransformFn from \"!../../../../../node_modules/style-loader/dist/runtime/styleTagTransform.js\";\n      import content, * as namedExport from \"!!../../../../../node_modules/css-loader/dist/cjs.js??clonedRuleSet-3.use[1]!../../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./FilesSidebarSubname.vue?vue&type=style&index=0&id=7bd1e3c0&prod&module=true&lang=css\";\n      \n      \n\nvar options = {};\n\noptions.styleTagTransform = styleTagTransformFn;\noptions.setAttributes = setAttributes;\noptions.insert = insertFn.bind(null, \"head\");\noptions.domAPI = domAPI;\noptions.insertStyleElement = insertStyleElement;\n\nvar update = API(content, options);\n\n\n\nexport * from \"!!../../../../../node_modules/css-loader/dist/cjs.js??clonedRuleSet-3.use[1]!../../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./FilesSidebarSubname.vue?vue&type=style&index=0&id=7bd1e3c0&prod&module=true&lang=css\";\n       export default content && content.locals ? content.locals : undefined;\n","import { render, staticRenderFns } from \"./FilesSidebarSubname.vue?vue&type=template&id=7bd1e3c0\"\nimport script from \"./FilesSidebarSubname.vue?vue&type=script&setup=true&lang=ts\"\nexport * from \"./FilesSidebarSubname.vue?vue&type=script&setup=true&lang=ts\"\nimport style0 from \"./FilesSidebarSubname.vue?vue&type=style&index=0&id=7bd1e3c0&prod&module=true&lang=css\"\n\n\n\n\nfunction injectStyles (context) {\n  \n  this[\"$style\"] = (style0.locals || style0)\n\n}\n\n/* normalize component */\nimport normalizer from \"!../../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n  script,\n  render,\n  staticRenderFns,\n  false,\n  injectStyles,\n  null,\n  null\n  \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return _c(_setup.NcAppSidebarTab,{attrs:{\"id\":_vm.tab.id,\"order\":_vm.tab.order,\"name\":_vm.tab.displayName},scopedSlots:_vm._u([{key:\"icon\",fn:function(){return [_c(_setup.NcIconSvgWrapper,{attrs:{\"svg\":_vm.tab.iconSvgInline}})]},proxy:true}])},[_vm._v(\" \"),(_setup.loading)?_c(_setup.NcEmptyContent,{scopedSlots:_vm._u([{key:\"icon\",fn:function(){return [_c(_setup.NcLoadingIcon)]},proxy:true}],null,false,1675040227)}):_c(_vm.tab.tagName,{tag:\"component\",domProps:{\"active\":_vm.active,\"node\":_setup.sidebar.currentNode,\"folder\":_setup.activeStore.activeFolder,\"view\":_setup.activeStore.activeView}})],1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import { N as NcActionButton } from \"./chunks/NcActionButton-1gSJfFUC.mjs\";\nimport { N as NcActionButtonGroup } from \"./chunks/NcActionButtonGroup-BxvJmEwM.mjs\";\nimport NcActionCaption from \"./Components/NcActionCaption.mjs\";\nimport { N as NcActionCheckbox } from \"./chunks/NcActionCheckbox-23CmleUh.mjs\";\nimport { N as NcActionInput } from \"./chunks/NcActionInput-BLfZBCFj.mjs\";\nimport NcActionLink from \"./Components/NcActionLink.mjs\";\nimport { N as NcActionRadio } from \"./chunks/NcActionRadio-Dd3CsuiD.mjs\";\nimport NcActionRouter from \"./Components/NcActionRouter.mjs\";\nimport { N as NcActions } from \"./chunks/NcActions-B7LKaVy0.mjs\";\nimport NcActionSeparator from \"./Components/NcActionSeparator.mjs\";\nimport NcActionText from \"./Components/NcActionText.mjs\";\nimport { N as NcActionTextEditable } from \"./chunks/NcActionTextEditable-CIsAP-pp.mjs\";\nimport { N as NcAppContent } from \"./chunks/NcAppContent-BQbYzcUh.mjs\";\nimport NcAppContentDetails from \"./Components/NcAppContentDetails.mjs\";\nimport NcAppContentList from \"./Components/NcAppContentList.mjs\";\nimport { N as NcAppNavigation } from \"./chunks/NcAppNavigation-Cu8LpQSI.mjs\";\nimport { N as NcAppNavigationCaption } from \"./chunks/NcAppNavigationCaption-CQaKs-Zf.mjs\";\nimport NcAppNavigationIconBullet from \"./Components/NcAppNavigationIconBullet.mjs\";\nimport { N as NcAppNavigationItem } from \"./chunks/NcAppNavigationItem-ryrQ6jep.mjs\";\nimport NcAppNavigationList from \"./Components/NcAppNavigationList.mjs\";\nimport { N as NcAppNavigationNew } from \"./chunks/NcAppNavigationNew-t3Rkrwjh.mjs\";\nimport { N as NcAppNavigationNewItem } from \"./chunks/NcAppNavigationNewItem-_8ozWEv3.mjs\";\nimport { N as NcAppNavigationSearch } from \"./chunks/NcAppNavigationSearch-CSih_quP.mjs\";\nimport { N as NcAppNavigationSettings } from \"./chunks/NcAppNavigationSettings-Eseo9MMQ.mjs\";\nimport NcAppNavigationSpacer from \"./Components/NcAppNavigationSpacer.mjs\";\nimport { N as NcAppSettingsDialog } from \"./chunks/NcAppSettingsDialog-zwmLtX7z.mjs\";\nimport { N as NcAppSettingsSection } from \"./chunks/NcAppSettingsSection-BjQllLEA.mjs\";\nimport { N as NcAppSettingsShortcutsSection } from \"./chunks/NcAppSettingsShortcutsSection-CiLZpXkV.mjs\";\nimport { N as NcAppSidebar } from \"./chunks/NcAppSidebar-BiIeJ3p1.mjs\";\nimport { N as NcAppSidebarHeader } from \"./chunks/NcAppSidebarHeader-CBE4tNYb.mjs\";\nimport NcAppSidebarTab from \"./Components/NcAppSidebarTab.mjs\";\nimport { N as NcAssistantButton } from \"./chunks/NcAssistantButton-Cp9x57gS.mjs\";\nimport NcAssistantContent from \"./Components/NcAssistantContent.mjs\";\nimport { N as NcAssistantIcon } from \"./chunks/NcAssistantIcon-DCx6AaSW.mjs\";\nimport { N as NcAvatar } from \"./chunks/NcAvatar-OCD_HmOb.mjs\";\nimport { u } from \"./chunks/NcAvatar-OCD_HmOb.mjs\";\nimport { N as NcBlurHash } from \"./chunks/NcBlurHash-KSj0HXbX.mjs\";\nimport { N as NcBreadcrumb } from \"./chunks/NcBreadcrumb-UmBT5BsM.mjs\";\nimport { N as NcBreadcrumbs } from \"./chunks/NcBreadcrumbs-B8iMbaQb.mjs\";\nimport { N as NcButton } from \"./chunks/NcButton-Dz2O6cSU.mjs\";\nimport { N as NcCheckboxRadioSwitch } from \"./chunks/NcCheckboxRadioSwitch-Di43R9CE.mjs\";\nimport { N as NcCollectionList } from \"./chunks/NcCollectionList-C-LCG1Ob.mjs\";\nimport { N as NcColorPicker } from \"./chunks/NcColorPicker-DPUDuNp4.mjs\";\nimport { N as NcContent } from \"./chunks/NcContent-mCqWZXj_.mjs\";\nimport { N as NcCounterBubble } from \"./chunks/NcCounterBubble-oxV8oMlX.mjs\";\nimport { N as NcDashboardWidget } from \"./chunks/NcDashboardWidget-CrInkRLf.mjs\";\nimport { N as NcDashboardWidgetItem } from \"./chunks/NcDashboardWidgetItem-DwvrP3Fa.mjs\";\nimport { N as NcDateTime } from \"./chunks/NcDateTime-enXYuwj8.mjs\";\nimport NcDateTimePicker from \"./Components/NcDateTimePicker.mjs\";\nimport NcDateTimePickerNative from \"./Components/NcDateTimePickerNative.mjs\";\nimport { N as NcDialog } from \"./chunks/NcDialog-Bu9xyU24.mjs\";\nimport { N as NcDialogButton } from \"./chunks/NcDialogButton-DGBhiACK.mjs\";\nimport NcEllipsisedOption from \"./Components/NcEllipsisedOption.mjs\";\nimport { N as NcEmojiPicker } from \"./chunks/NcEmojiPicker-DOFfHZjX.mjs\";\nimport NcEmptyContent from \"./Components/NcEmptyContent.mjs\";\nimport { N as NcFormBox } from \"./chunks/NcFormBox-DtoCXLMx.mjs\";\nimport { N as NcFormBoxButton } from \"./chunks/NcFormBoxButton-BQi11xQX.mjs\";\nimport { N as NcFormBoxCopyButton } from \"./chunks/NcFormBoxCopyButton-DtJpZ971.mjs\";\nimport { N as NcFormBoxSwitch } from \"./chunks/NcFormBoxSwitch-E6sxPL4n.mjs\";\nimport { N as NcFormGroup } from \"./chunks/NcFormGroup-DblLoFMf.mjs\";\nimport NcGuestContent from \"./Components/NcGuestContent.mjs\";\nimport { N as NcHeaderButton } from \"./chunks/NcHeaderButton-Dvo1_Bwc.mjs\";\nimport { N as NcHeaderMenu } from \"./chunks/NcHeaderMenu-Cuh8ay0F.mjs\";\nimport { N as NcHighlight } from \"./chunks/index-CxTT94_h.mjs\";\nimport { N as NcHotkey } from \"./chunks/NcHotkey-Cv2Je6eF.mjs\";\nimport { N as NcHotkeyList } from \"./chunks/NcHotkeyList-CrAcIN70.mjs\";\nimport { N as NcIconSvgWrapper } from \"./chunks/NcIconSvgWrapper-Bui9PhAS.mjs\";\nimport { N as NcInputField } from \"./chunks/NcInputField-DyXCCIOM.mjs\";\nimport { N as NcListItem } from \"./chunks/NcListItem-DzezqYDz.mjs\";\nimport { N as NcListItemIcon } from \"./chunks/NcListItemIcon-BKWOSFfG.mjs\";\nimport NcLoadingIcon from \"./Components/NcLoadingIcon.mjs\";\nimport NcModal from \"./Components/NcModal.mjs\";\nimport NcNoteCard from \"./Components/NcNoteCard.mjs\";\nimport { N as NcPasswordField } from \"./chunks/NcPasswordField-Di_KXR_G.mjs\";\nimport { N as NcPopover } from \"./chunks/NcPopover-UAg26Qdd.mjs\";\nimport { N as NcProgressBar } from \"./chunks/NcProgressBar-D7zYeXBH.mjs\";\nimport { N as NcRadioGroup } from \"./chunks/NcRadioGroup-BbBX9X2J.mjs\";\nimport { N as NcRadioGroupButton } from \"./chunks/NcRadioGroupButton-BkxlxjIA.mjs\";\nimport { N as NcRelatedResourcesPanel } from \"./chunks/NcRelatedResourcesPanel-MmhCAbd4.mjs\";\nimport { N as NcMentionBubble } from \"./chunks/index-TmAR7I2T.mjs\";\nimport { r } from \"./chunks/index-TmAR7I2T.mjs\";\nimport { N as NcAutoCompleteResult, a as NcRichContenteditable } from \"./chunks/NcRichContenteditable-BDjKhFe3.mjs\";\nimport \"@nextcloud/auth\";\nimport \"@nextcloud/axios\";\nimport \"@nextcloud/router\";\nimport \"@nextcloud/sharing/public\";\nimport \"@vueuse/core\";\nimport \"vue\";\nimport \"vue-router\";\nimport { a, g, b, c, s, d } from \"./chunks/referencePickerModal-BqYhlLYA.mjs\";\nimport { N, h, c as c2, i, e, r as r2, f, a as a2 } from \"./chunks/customPickerElements-DLFtgReB.mjs\";\nimport \"unist-builder\";\nimport \"unist-util-visit\";\nimport \"./chunks/logger-D3RVzcfQ.mjs\";\nimport { N as NcRichText } from \"./chunks/NcRichText-DTzKWfUk.mjs\";\nimport { N as NcSelect } from \"./chunks/NcSelect-BD9fhCVy.mjs\";\nimport { N as NcTextField } from \"./chunks/NcTextField-DLlQozKA.mjs\";\nimport \"@nextcloud/event-bus\";\nimport { N as NcSavingIndicatorIcon } from \"./chunks/NcSavingIndicatorIcon-U7AIamCl.mjs\";\nimport { N as NcSelectTags } from \"./chunks/NcSelectTags-AFttsKK_.mjs\";\nimport { N as NcSelectUsers } from \"./chunks/NcSelectUsers-BRDGLoPt.mjs\";\nimport { N as NcSettingsInputText } from \"./chunks/NcSettingsInputText-BeLtzRuE.mjs\";\nimport { N as NcSettingsSection } from \"./chunks/NcSettingsSection-CCJrqjyc.mjs\";\nimport { N as NcSettingsSelectGroup } from \"./chunks/NcSettingsSelectGroup-BqSdPsYY.mjs\";\nimport { N as NcTextArea } from \"./chunks/NcTextArea-DaYLP_Lc.mjs\";\nimport { N as NcThemeProvider } from \"./chunks/NcThemeProvider-BA_zMjAf.mjs\";\nimport { N as NcTimezonePicker } from \"./chunks/NcTimezonePicker-DTdF1yG4.mjs\";\nimport { N as NcUserBubble } from \"./chunks/NcUserBubble-CWgceS0Q.mjs\";\nimport { N as NcUserStatusIcon } from \"./chunks/NcUserStatusIcon-BjrsTrss.mjs\";\nimport NcVNodes from \"./Components/NcVNodes.mjs\";\nimport { useFormatDateTime, useFormatRelativeTime, useFormatTime } from \"./Composables/useFormatDateTime.mjs\";\nimport { useHotKey } from \"./Composables/useHotKey.mjs\";\nimport { useIsDarkTheme, useIsDarkThemeElement } from \"./Composables/useIsDarkTheme.mjs\";\nimport { isFullscreenState, useIsFullscreen } from \"./Composables/useIsFullscreen.mjs\";\nimport { MOBILE_BREAKPOINT, MOBILE_SMALL_BREAKPOINT, isMobileState, useIsMobile, useIsSmallMobile } from \"./Composables/useIsMobile.mjs\";\nimport { isA11yActivation } from \"./Functions/a11y.mjs\";\nimport { getEnabledContactsMenuActions, registerContactsMenuAction } from \"./Functions/contactsMenu.mjs\";\nimport { spawnDialog } from \"./Functions/dialog.mjs\";\nimport { E, a as a3, e as e2, g as g2, s as s2 } from \"./chunks/emoji-BY_D0V5K.mjs\";\nimport { checkIfDarkTheme, isDarkTheme } from \"./Functions/isDarkTheme.mjs\";\nimport { preloadImage } from \"./Functions/preloadImage.mjs\";\nimport { usernameToColor } from \"./Functions/usernameToColor.mjs\";\nimport directive from \"./Directives/Focus.mjs\";\nimport directive$1 from \"./Directives/Linkify.mjs\";\nimport \"./Directives/Tooltip.mjs\";\nimport { default as default2 } from \"./Mixins/clickOutsideOptions.mjs\";\nimport { default as default3 } from \"./Mixins/isFullscreen.mjs\";\nimport { default as default4 } from \"./Mixins/isMobile.mjs\";\nimport { VTooltip } from \"floating-vue\";\nimport { VTooltip as VTooltip2 } from \"floating-vue\";\nconst NcComponents = /* @__PURE__ */ Object.freeze(/* @__PURE__ */ Object.defineProperty({\n  __proto__: null,\n  NcActionButton,\n  NcActionButtonGroup,\n  NcActionCaption,\n  NcActionCheckbox,\n  NcActionInput,\n  NcActionLink,\n  NcActionRadio,\n  NcActionRouter,\n  NcActionSeparator,\n  NcActionText,\n  NcActionTextEditable,\n  NcActions,\n  NcAppContent,\n  NcAppContentDetails,\n  NcAppContentList,\n  NcAppNavigation,\n  NcAppNavigationCaption,\n  NcAppNavigationIconBullet,\n  NcAppNavigationItem,\n  NcAppNavigationList,\n  NcAppNavigationNew,\n  NcAppNavigationNewItem,\n  NcAppNavigationSearch,\n  NcAppNavigationSettings,\n  NcAppNavigationSpacer,\n  NcAppSettingsDialog,\n  NcAppSettingsSection,\n  NcAppSettingsSectionShortcuts: NcAppSettingsShortcutsSection,\n  NcAppSettingsShortcutsSection,\n  NcAppSidebar,\n  NcAppSidebarHeader,\n  NcAppSidebarTab,\n  NcAssistantButton,\n  NcAssistantContent,\n  NcAssistantIcon,\n  NcAutoCompleteResult,\n  NcAvatar,\n  NcBlurHash,\n  NcBreadcrumb,\n  NcBreadcrumbs,\n  NcButton,\n  NcCheckboxRadioSwitch,\n  NcCollectionList,\n  NcColorPicker,\n  NcContent,\n  NcCounterBubble,\n  NcDashboardWidget,\n  NcDashboardWidgetItem,\n  NcDateTime,\n  NcDateTimePicker,\n  NcDateTimePickerNative,\n  NcDialog,\n  NcDialogButton,\n  NcEllipsisedOption,\n  NcEmojiPicker,\n  NcEmptyContent,\n  NcFormBox,\n  NcFormBoxButton,\n  NcFormBoxCopyButton,\n  NcFormBoxSwitch,\n  NcFormGroup,\n  NcGuestContent,\n  NcHeaderButton,\n  NcHeaderMenu,\n  NcHighlight,\n  NcHotkey,\n  NcHotkeyList,\n  NcIconSvgWrapper,\n  NcInputField,\n  NcListItem,\n  NcListItemIcon,\n  NcLoadingIcon,\n  NcMentionBubble,\n  NcModal,\n  NcNoteCard,\n  NcPasswordField,\n  NcPopover,\n  NcProgressBar,\n  NcRadioGroup,\n  NcRadioGroupButton,\n  NcRelatedResourcesPanel,\n  NcRichContenteditable,\n  NcRichText,\n  NcSavingIndicatorIcon,\n  NcSelect,\n  NcSelectTags,\n  NcSelectUsers,\n  NcSettingsInputText,\n  NcSettingsSection,\n  NcSettingsSelectGroup,\n  NcTextArea,\n  NcTextField,\n  NcThemeProvider,\n  NcTimezonePicker,\n  NcUserBubble,\n  NcUserStatusIcon,\n  NcVNodes\n}, Symbol.toStringTag, { value: \"Module\" }));\nconst NcDirectives = /* @__PURE__ */ Object.freeze(/* @__PURE__ */ Object.defineProperty({\n  __proto__: null,\n  Focus: directive,\n  Linkify: directive$1,\n  Tooltip: VTooltip\n}, Symbol.toStringTag, { value: \"Module\" }));\nconst NextcloudVuePlugin = {\n  install(Vue) {\n    Object.entries(NcComponents).forEach(([name, component]) => {\n      Vue.component(component.name || name, component);\n    });\n    Object.entries(NcDirectives).forEach(([name, directive2]) => {\n      Vue.directive(name, directive2);\n    });\n  }\n};\nexport {\n  E as EmojiSkinTone,\n  directive as Focus,\n  directive$1 as Linkify,\n  MOBILE_BREAKPOINT,\n  MOBILE_SMALL_BREAKPOINT,\n  NcActionButton,\n  NcActionButtonGroup,\n  NcActionCaption,\n  NcActionCheckbox,\n  NcActionInput,\n  NcActionLink,\n  NcActionRadio,\n  NcActionRouter,\n  NcActionSeparator,\n  NcActionText,\n  NcActionTextEditable,\n  NcActions,\n  NcAppContent,\n  NcAppContentDetails,\n  NcAppContentList,\n  NcAppNavigation,\n  NcAppNavigationCaption,\n  NcAppNavigationIconBullet,\n  NcAppNavigationItem,\n  NcAppNavigationList,\n  NcAppNavigationNew,\n  NcAppNavigationNewItem,\n  NcAppNavigationSearch,\n  NcAppNavigationSettings,\n  NcAppNavigationSpacer,\n  NcAppSettingsDialog,\n  NcAppSettingsSection,\n  NcAppSettingsShortcutsSection as NcAppSettingsSectionShortcuts,\n  NcAppSettingsShortcutsSection,\n  NcAppSidebar,\n  NcAppSidebarHeader,\n  NcAppSidebarTab,\n  NcAssistantButton,\n  NcAssistantContent,\n  NcAssistantIcon,\n  NcAutoCompleteResult,\n  NcAvatar,\n  NcBlurHash,\n  NcBreadcrumb,\n  NcBreadcrumbs,\n  NcButton,\n  NcCheckboxRadioSwitch,\n  NcCollectionList,\n  NcColorPicker,\n  NcContent,\n  NcCounterBubble,\n  N as NcCustomPickerRenderResult,\n  NcDashboardWidget,\n  NcDashboardWidgetItem,\n  NcDateTime,\n  NcDateTimePicker,\n  NcDateTimePickerNative,\n  NcDialog,\n  NcDialogButton,\n  NcEllipsisedOption,\n  NcEmojiPicker,\n  NcEmptyContent,\n  NcFormBox,\n  NcFormBoxButton,\n  NcFormBoxCopyButton,\n  NcFormBoxSwitch,\n  NcFormGroup,\n  NcGuestContent,\n  NcHeaderButton,\n  NcHeaderMenu,\n  NcHighlight,\n  NcHotkey,\n  NcHotkeyList,\n  NcIconSvgWrapper,\n  NcInputField,\n  NcListItem,\n  NcListItemIcon,\n  NcLoadingIcon,\n  NcMentionBubble,\n  NcModal,\n  NcNoteCard,\n  NcPasswordField,\n  NcPopover,\n  NcProgressBar,\n  NcRadioGroup,\n  NcRadioGroupButton,\n  NcRelatedResourcesPanel,\n  NcRichContenteditable,\n  NcRichText,\n  NcSavingIndicatorIcon,\n  NcSelect,\n  NcSelectTags,\n  NcSelectUsers,\n  NcSettingsInputText,\n  NcSettingsSection,\n  NcSettingsSelectGroup,\n  NcTextArea,\n  NcTextField,\n  NcThemeProvider,\n  NcTimezonePicker,\n  NcUserBubble,\n  NcUserStatusIcon,\n  NcVNodes,\n  NextcloudVuePlugin,\n  VTooltip2 as Tooltip,\n  a as anyLinkProviderId,\n  checkIfDarkTheme,\n  default2 as clickOutsideOptions,\n  a3 as emojiAddRecent,\n  e2 as emojiSearch,\n  g2 as getCurrentSkinTone,\n  getEnabledContactsMenuActions,\n  g as getLinkWithPicker,\n  b as getProvider,\n  c as getProviders,\n  h as hasInteractiveView,\n  isA11yActivation,\n  c2 as isCustomPickerElementRegistered,\n  isDarkTheme,\n  default3 as isFullscreen,\n  isFullscreenState,\n  default4 as isMobile,\n  isMobileState,\n  i as isWidgetRegistered,\n  preloadImage,\n  registerContactsMenuAction,\n  e as registerCustomPickerElement,\n  r2 as registerWidget,\n  f as renderCustomPickerElement,\n  a2 as renderWidget,\n  r as richEditor,\n  s as searchProvider,\n  s2 as setCurrentSkinTone,\n  d as sortProviders,\n  spawnDialog,\n  useFormatDateTime,\n  useFormatRelativeTime,\n  useFormatTime,\n  useHotKey,\n  useIsDarkTheme,\n  useIsDarkThemeElement,\n  useIsFullscreen,\n  useIsMobile,\n  useIsSmallMobile,\n  u as userStatus,\n  usernameToColor\n};\n//# sourceMappingURL=index.mjs.map\n","import mod from \"-!../../../../../node_modules/babel-loader/lib/index.js!../../../../../node_modules/ts-loader/index.js??clonedRuleSet-6.use[1]!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./FilesSidebarTab.vue?vue&type=script&setup=true&lang=ts\"; export default mod; export * from \"-!../../../../../node_modules/babel-loader/lib/index.js!../../../../../node_modules/ts-loader/index.js??clonedRuleSet-6.use[1]!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./FilesSidebarTab.vue?vue&type=script&setup=true&lang=ts\"","import { render, staticRenderFns } from \"./FilesSidebarTab.vue?vue&type=template&id=6b69fc23\"\nimport script from \"./FilesSidebarTab.vue?vue&type=script&setup=true&lang=ts\"\nexport * from \"./FilesSidebarTab.vue?vue&type=script&setup=true&lang=ts\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n  script,\n  render,\n  staticRenderFns,\n  false,\n  null,\n  null,\n  null\n  \n)\n\nexport default component.exports","import mod from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/ts-loader/index.js??clonedRuleSet-6.use[1]!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./FilesSidebar.vue?vue&type=script&setup=true&lang=ts\"; export default mod; export * from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/ts-loader/index.js??clonedRuleSet-6.use[1]!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./FilesSidebar.vue?vue&type=script&setup=true&lang=ts\"","\n      import API from \"!../../../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\";\n      import domAPI from \"!../../../../node_modules/style-loader/dist/runtime/styleDomAPI.js\";\n      import insertFn from \"!../../../../node_modules/style-loader/dist/runtime/insertBySelector.js\";\n      import setAttributes from \"!../../../../node_modules/style-loader/dist/runtime/setAttributesWithoutAttributes.js\";\n      import insertStyleElement from \"!../../../../node_modules/style-loader/dist/runtime/insertStyleElement.js\";\n      import styleTagTransformFn from \"!../../../../node_modules/style-loader/dist/runtime/styleTagTransform.js\";\n      import content, * as namedExport from \"!!../../../../node_modules/css-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/sass-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./FilesSidebar.vue?vue&type=style&index=0&id=f91af60e&prod&lang=scss&scoped=true\";\n      \n      \n\nvar options = {};\n\noptions.styleTagTransform = styleTagTransformFn;\noptions.setAttributes = setAttributes;\noptions.insert = insertFn.bind(null, \"head\");\noptions.domAPI = domAPI;\noptions.insertStyleElement = insertStyleElement;\n\nvar update = API(content, options);\n\n\n\nexport * from \"!!../../../../node_modules/css-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/sass-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./FilesSidebar.vue?vue&type=style&index=0&id=f91af60e&prod&lang=scss&scoped=true\";\n       export default content && content.locals ? content.locals : undefined;\n","import { render, staticRenderFns } from \"./FilesSidebar.vue?vue&type=template&id=f91af60e&scoped=true\"\nimport script from \"./FilesSidebar.vue?vue&type=script&setup=true&lang=ts\"\nexport * from \"./FilesSidebar.vue?vue&type=script&setup=true&lang=ts\"\nimport style0 from \"./FilesSidebar.vue?vue&type=style&index=0&id=f91af60e&prod&lang=scss&scoped=true\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n  script,\n  render,\n  staticRenderFns,\n  false,\n  null,\n  \"f91af60e\",\n  null\n  \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return _c(_setup.NcContent,{attrs:{\"app-name\":\"files\"}},[(!_setup.isPublic)?_c(_setup.FilesNavigation):_vm._e(),_vm._v(\" \"),_c(_setup.FilesList,{attrs:{\"is-public\":_setup.isPublic}}),_vm._v(\" \"),(!_setup.isPublic)?_c(_setup.FilesSidebar):_vm._e()],1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","/*!\n * SPDX-FileCopyrightText: 2023 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\nimport { getFileActions } from '@nextcloud/files';\nimport { useHotKey } from '@nextcloud/vue/composables/useHotKey';\nimport { dirname } from 'path';\nimport { useRoute, useRouter } from 'vue-router/composables';\nimport logger from '../logger.ts';\nimport { useUserConfigStore } from '../store/userconfig.ts';\nimport { executeAction } from '../utils/actionUtils.ts';\nimport { useRouteParameters } from './useRouteParameters.ts';\n/**\n * This register the hotkeys for the Files app.\n * As much as possible, we try to have all the hotkeys in one place.\n * Please make sure to add tests for the hotkeys after adding a new one.\n */\nexport function useHotKeys() {\n    const userConfigStore = useUserConfigStore();\n    const { directory } = useRouteParameters();\n    const router = useRouter();\n    const route = useRoute();\n    const actions = getFileActions();\n    for (const action of actions) {\n        if (!action.hotkey) {\n            continue;\n        }\n        const key = action.hotkey.key.match(/^[a-z]$/)\n            ? action.hotkey.key.toUpperCase()\n            : action.hotkey.key;\n        logger.debug(`Register hotkey for action \"${action.id}\"`);\n        useHotKey(key, () => executeAction(action), {\n            stop: true,\n            prevent: true,\n            alt: action.hotkey.alt,\n            ctrl: action.hotkey.ctrl,\n            shift: action.hotkey.shift,\n        });\n    }\n    // alt+up go to parent directory\n    useHotKey('ArrowUp', goToParentDir, {\n        stop: true,\n        prevent: true,\n        alt: true,\n    });\n    // v toggle grid view\n    useHotKey('v', toggleGridView, {\n        stop: true,\n        prevent: true,\n    });\n    logger.debug('Hotkeys registered');\n    /**\n     * Use the router to go to the parent directory\n     */\n    function goToParentDir() {\n        const dir = dirname(directory.value);\n        logger.debug('Navigating to parent directory', { dir });\n        router.push({ params: { ...route.params }, query: { ...route.query, dir } });\n    }\n    /**\n     * Toggle the grid view\n     */\n    function toggleGridView() {\n        const value = userConfigStore.userConfig.grid_view;\n        logger.debug('Toggling grid view', { old: value, new: !value });\n        userConfigStore.update('grid_view', !value);\n    }\n}\n","import mod from \"-!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/ts-loader/index.js??clonedRuleSet-6.use[1]!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./FilesApp.vue?vue&type=script&setup=true&lang=ts\"; export default mod; export * from \"-!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/ts-loader/index.js??clonedRuleSet-6.use[1]!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./FilesApp.vue?vue&type=script&setup=true&lang=ts\"","import { render, staticRenderFns } from \"./FilesApp.vue?vue&type=template&id=e1f85142\"\nimport script from \"./FilesApp.vue?vue&type=script&setup=true&lang=ts\"\nexport * from \"./FilesApp.vue?vue&type=script&setup=true&lang=ts\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n  script,\n  render,\n  staticRenderFns,\n  false,\n  null,\n  null,\n  null\n  \n)\n\nexport default component.exports","/*\n * SPDX-FileCopyrightText: 2022 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\nimport { subscribe } from '@nextcloud/event-bus';\nimport { generateUrl } from '@nextcloud/router';\nimport { relative } from 'path';\nimport queryString from 'query-string';\nimport Vue from 'vue';\nimport Router, { isNavigationFailure, NavigationFailureType } from 'vue-router';\nimport logger from '../logger.ts';\nimport { useFilesStore } from '../store/files.ts';\nimport { getPinia } from '../store/index.ts';\nimport { usePathsStore } from '../store/paths.ts';\nimport { defaultView } from '../utils/filesViews.ts';\nVue.use(Router);\n// Prevent router from throwing errors when we're already on the page we're trying to go to\nconst originalPush = Router.prototype.push;\nRouter.prototype.push = (function (...args) {\n    if (args.length > 1) {\n        return originalPush.call(this, ...args);\n    }\n    return originalPush.call(this, args[0]).catch(ignoreDuplicateNavigation);\n});\nconst originalReplace = Router.prototype.replace;\nRouter.prototype.replace = (function (...args) {\n    if (args.length > 1) {\n        return originalReplace.call(this, ...args);\n    }\n    return originalReplace.call(this, args[0]).catch(ignoreDuplicateNavigation);\n});\n/**\n * Ignore duplicated-navigation error but forward real exceptions\n *\n * @param error The thrown error\n */\nfunction ignoreDuplicateNavigation(error) {\n    if (isNavigationFailure(error, NavigationFailureType.duplicated)) {\n        logger.debug('Ignoring duplicated navigation from vue-router', { error });\n    }\n    else {\n        throw error;\n    }\n}\nconst router = new Router({\n    mode: 'history',\n    // if index.php is in the url AND we got this far, then it's working:\n    // let's keep using index.php in the url\n    base: generateUrl('/apps/files'),\n    linkActiveClass: 'active',\n    routes: [\n        {\n            path: '/',\n            // Pretending we're using the default view\n            redirect: { name: 'filelist', params: { view: defaultView() } },\n        },\n        {\n            path: '/:view/:fileid(\\\\d+)?',\n            name: 'filelist',\n            props: true,\n        },\n    ],\n    // Custom stringifyQuery to prevent encoding of slashes in the url\n    stringifyQuery(query) {\n        const result = queryString.stringify(query).replace(/%2F/gmi, '/');\n        return result ? ('?' + result) : '';\n    },\n});\n// Handle aborted navigation (NavigationGuards) gracefully\nrouter.onError((error) => {\n    if (isNavigationFailure(error, NavigationFailureType.aborted)) {\n        logger.debug('Navigation was aboorted', { error });\n    }\n    else {\n        throw error;\n    }\n});\n// If navigating back from a folder to a parent folder,\n// we need to keep the current dir fileid so it's highlighted\n// and scrolled into view.\nrouter.beforeResolve((to, from, next) => {\n    if (to.params?.parentIntercept) {\n        delete to.params.parentIntercept;\n        return next();\n    }\n    if (to.params.view !== from.params.view) {\n        // skip if different views\n        return next();\n    }\n    const fromDir = (from.query?.dir || '/');\n    const toDir = (to.query?.dir || '/');\n    // We are going back to a parent directory\n    if (relative(fromDir, toDir) === '..') {\n        const { getNode } = useFilesStore();\n        const { getPath } = usePathsStore();\n        if (!from.params.view) {\n            logger.error('No current view id found, cannot navigate to parent directory', { fromDir, toDir });\n            return next();\n        }\n        // Get the previous parent's file id\n        const fromSource = getPath(from.params.view, fromDir);\n        if (!fromSource) {\n            logger.error('No source found for the parent directory', { fromDir, toDir });\n            return next();\n        }\n        const fileId = getNode(fromSource)?.fileid;\n        if (!fileId) {\n            logger.error('No fileid found for the parent directory', { fromDir, toDir, fromSource });\n            return next();\n        }\n        logger.debug('Navigating back to parent directory', { fromDir, toDir, fileId });\n        return next({\n            name: 'filelist',\n            query: to.query,\n            params: {\n                ...to.params,\n                fileid: String(fileId),\n                // Prevents the beforeEach from being called again\n                parentIntercept: 'true',\n            },\n            // Replace the current history entry\n            replace: true,\n        });\n    }\n    // else, we just continue\n    next();\n});\nsubscribe('files:node:deleted', (node) => {\n    if (router.currentRoute.params.fileid === String(node.fileid)) {\n        const params = { ...router.currentRoute.params };\n        const { getPath } = usePathsStore(getPinia());\n        const { getNode } = useFilesStore(getPinia());\n        const source = getPath(router.currentRoute.params.view, node.dirname);\n        const parentFolder = getNode(source);\n        if (source && parentFolder) {\n            params.fileid = String(parentFolder.fileid);\n        }\n        else {\n            delete params.fileid;\n        }\n        const query = { ...router.currentRoute.query };\n        delete query.opendetails;\n        delete query.openfile;\n        router.replace({\n            ...router.currentRoute,\n            name: router.currentRoute.name,\n            params,\n            query,\n        });\n    }\n});\nexport default router;\n","/*!\n * SPDX-FileCopyrightText: 2023 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\nexport default class RouterService {\n    // typescript compiles this to `#router` to make it private even in JS,\n    // but in TS it needs to be called without the visibility specifier\n    router;\n    constructor(router) {\n        this.router = router;\n    }\n    get name() {\n        return this.router.currentRoute.name;\n    }\n    get query() {\n        return this.router.currentRoute.query || {};\n    }\n    get params() {\n        return this.router.currentRoute.params || {};\n    }\n    /**\n     * This is a protected getter only for internal use\n     *\n     */\n    get _router() {\n        return this.router;\n    }\n    /**\n     * Trigger a route change on the files app\n     *\n     * @param path the url path, eg: '/trashbin?dir=/Deleted'\n     * @param replace replace the current history\n     * @see https://router.vuejs.org/guide/essentials/navigation.html#navigate-to-a-different-location\n     */\n    goTo(path, replace = false) {\n        return this.router.push({\n            path,\n            replace,\n        });\n    }\n    /**\n     * Trigger a route change on the files App\n     *\n     * @param name - The route name or null to keep current route and just update params/query\n     * @param params the route parameters\n     * @param query the url query parameters\n     * @param replace replace the current history\n     * @see https://router.vuejs.org/guide/essentials/navigation.html#navigate-to-a-different-location\n     */\n    goToRoute(name, params, query, replace) {\n        name ??= this.router.currentRoute.name;\n        const location = { name, query, params };\n        if (replace) {\n            return this._router.replace(location);\n        }\n        return this._router.push(location);\n    }\n}\n","/**\n * SPDX-FileCopyrightText: 2023 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\nimport { getCSPNonce } from '@nextcloud/auth';\nimport { PiniaVuePlugin } from 'pinia';\nimport Vue from 'vue';\nimport FilesApp from './FilesApp.vue';\nimport SettingsModel from './models/Setting.ts';\nimport router from './router/router.ts';\nimport RouterService from './services/RouterService.ts';\nimport SettingsService from './services/Settings.js';\nimport { getPinia } from './store/index.ts';\n__webpack_nonce__ = getCSPNonce();\n// Init private and public Files namespace\nwindow.OCA.Files = window.OCA.Files ?? {};\nwindow.OCP.Files = window.OCP.Files ?? {};\n// Expose router\nif (!window.OCP.Files.Router) {\n    const Router = new RouterService(router);\n    Object.assign(window.OCP.Files, { Router });\n}\n// Init Pinia store\nVue.use(PiniaVuePlugin);\n// Init Files App Settings Service\nconst Settings = new SettingsService();\nObject.assign(window.OCA.Files, { Settings });\nObject.assign(window.OCA.Files.Settings, { Setting: SettingsModel });\nconst FilesAppVue = Vue.extend(FilesApp);\nnew FilesAppVue({\n    router: window.OCP.Files.Router._router,\n    pinia: getPinia(),\n}).$mount('#content');\n","/**\n * SPDX-FileCopyrightText: 2019 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\n\nimport logger from '../logger.ts'\n\nexport default class Settings {\n\t_settings\n\n\tconstructor() {\n\t\tthis._settings = []\n\t\tlogger.debug('OCA.Files.Settings initialized')\n\t}\n\n\t/**\n\t * Register a new setting\n\t *\n\t * @since 19.0.0\n\t * @param {OCA.Files.Settings.Setting} view element to add to settings\n\t * @return {boolean} whether registering was successful\n\t */\n\tregister(view) {\n\t\tif (this._settings.filter((e) => e.name === view.name).length > 0) {\n\t\t\tlogger.error('A setting with the same name is already registered')\n\t\t\treturn false\n\t\t}\n\t\tthis._settings.push(view)\n\t\treturn true\n\t}\n\n\t/**\n\t * All settings elements\n\t *\n\t * @return {OCA.Files.Settings.Setting[]} All currently registered settings\n\t */\n\tget settings() {\n\t\treturn this._settings\n\t}\n}\n","/**\n * SPDX-FileCopyrightText: 2019 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\nexport default class Setting {\n    #name;\n    #options;\n    /**\n     * Create a new files app setting\n     *\n     * @param name - The name of this setting\n     * @param options - The setting options\n     * @param options.el - Function that returns an unmounted dom element to be added\n     * @param options.open - Callback for when setting is added\n     * @param options.close - Callback for when setting is closed\n     * @param options.order - The order of this setting, lower numbers are shown first\n     * @since 19.0.0\n     */\n    constructor(name, options) {\n        this.#name = name;\n        this.#options = {\n            open: () => { },\n            close: () => { },\n            order: 0,\n            ...options,\n        };\n        if (typeof this.#options.el !== 'function') {\n            throw new Error('Setting must have an `el` function that returns a DOM element');\n        }\n        if (typeof this.#name !== 'string') {\n            throw new Error('Setting must have a `name` string');\n        }\n        if (typeof this.#options.order !== 'number') {\n            throw new Error('Setting must have an `order` number');\n        }\n    }\n    get name() {\n        return this.#name;\n    }\n    get el() {\n        return this.#options.el;\n    }\n    get open() {\n        return this.#options.open;\n    }\n    get close() {\n        return this.#options.close;\n    }\n    get order() {\n        return this.#options.order;\n    }\n}\n","import { getDefaultPropfind, getRootPath, resultToNode } from '@nextcloud/files/dav';\nimport { join } from 'path';\nimport logger from '../logger.ts';\nimport { useFilesStore } from '../store/files.ts';\nimport { getPinia } from '../store/index.ts';\nimport { useSearchStore } from '../store/search.ts';\nimport { client } from './WebdavClient.ts';\nimport { searchNodes } from './WebDavSearch.ts';\n/**\n * Get contents implementation for the files view.\n * This also allows to fetch local search results when the user is currently filtering.\n *\n * @param path - The path to query\n * @param options - Options\n * @param options.signal - Abort signal to cancel the request\n */\nexport async function getContents(path = '/', options) {\n    const searchStore = useSearchStore(getPinia());\n    if (searchStore.query.length < 3) {\n        return await defaultGetContents(path, options);\n    }\n    return await getLocalSearch(path, searchStore.query, options?.signal);\n}\n/**\n * Generic `getContents` implementation for the users files.\n *\n * @param path - The path to get the contents\n * @param options - Options\n * @param options.signal - Abort signal to cancel the request\n */\nexport async function defaultGetContents(path, options) {\n    path = join(getRootPath(), path);\n    const propfindPayload = getDefaultPropfind();\n    const contentsResponse = await client.getDirectoryContents(path, {\n        details: true,\n        data: propfindPayload,\n        includeSelf: true,\n        signal: options?.signal,\n    });\n    const root = contentsResponse.data[0];\n    const contents = contentsResponse.data.slice(1);\n    if (root?.filename !== path && `${root?.filename}/` !== path) {\n        logger.debug(`Exepected \"${path}\" but got filename \"${root.filename}\" instead.`);\n        throw new Error('Root node does not match requested path');\n    }\n    return {\n        folder: resultToNode(root),\n        contents: contents.map((result) => {\n            try {\n                return resultToNode(result);\n            }\n            catch (error) {\n                logger.error(`Invalid node detected '${result.basename}'`, { error });\n                return null;\n            }\n        }).filter(Boolean),\n    };\n}\n/**\n * Get the local search results for the current folder.\n *\n * @param path - The path\n * @param query - The current search query\n * @param signal - The aboort signal\n */\nasync function getLocalSearch(path, query, signal) {\n    const filesStore = useFilesStore(getPinia());\n    let folder = filesStore.getDirectoryByPath('files', path);\n    if (!folder) {\n        const rootPath = join(getRootPath(), path);\n        const stat = await client.stat(rootPath, { details: true });\n        folder = resultToNode(stat.data);\n    }\n    const contents = await searchNodes(query, { dir: path, signal });\n    return {\n        folder,\n        contents,\n    };\n}\n","/*!\n * SPDX-FileCopyrightText: 2025 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\nimport { getCurrentUser } from '@nextcloud/auth';\nimport { defaultRootPath, getDavNameSpaces, getDavProperties, resultToNode } from '@nextcloud/files/dav';\nimport { getBaseUrl } from '@nextcloud/router';\nimport logger from '../logger.ts';\nimport { client } from './WebdavClient.ts';\n/**\n * Search for nodes matching the given query.\n *\n * @param query - Search query\n * @param options - Options\n * @param options.dir - The base directory to scope the search to\n * @param options.signal - Abort signal for the request\n */\nexport async function searchNodes(query, { dir, signal }) {\n    const user = getCurrentUser();\n    if (!user) {\n        // the search plugin only works for user roots\n        return [];\n    }\n    query = query.trim();\n    if (query.length < 3) {\n        // the search plugin only works with queries of at least 3 characters\n        return [];\n    }\n    if (dir && !dir.startsWith('/')) {\n        dir = `/${dir}`;\n    }\n    logger.debug('Searching for nodes', { query, dir });\n    const { data } = await client.search('/', {\n        details: true,\n        signal,\n        data: `\n\n\t \n\t\t \n\t\t\t \n\t\t\t ${getDavProperties()}\n\t\t\t \n\t\t \n\t\t \n\t\t\t \n\t\t\t\t /files/${user.uid}${dir || ''}\n\t\t\t\t infinity\n\t\t\t \n\t\t \n\t\t \n\t\t\t \n\t\t\t\t \n\t\t\t\t\t \n\t\t\t\t \n\t\t\t\t %${query.replace('%', '')}%\n\t\t\t \n\t\t \n\t\t \n\t\n`,\n    });\n    // check if the request was aborted\n    if (signal?.aborted) {\n        return [];\n    }\n    // otherwise return the result mapped to Nextcloud nodes\n    return data.results.map((result) => resultToNode(result, defaultRootPath, getBaseUrl()));\n}\n","/*!\n * SPDX-FileCopyrightText: 2023 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\nimport { getClient, getDefaultPropfind, getRootPath, resultToNode } from '@nextcloud/files/dav';\nexport const client = getClient();\n/**\n * Fetches a node from the given path\n *\n * @param path - The path to fetch the node from\n */\nexport async function fetchNode(path) {\n    const propfindPayload = getDefaultPropfind();\n    const result = await client.stat(`${getRootPath()}${path}`, {\n        details: true,\n        data: propfindPayload,\n    });\n    return resultToNode(result.data);\n}\n","/*!\n * SPDX-FileCopyrightText: 2024 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\nimport { getCurrentUser } from '@nextcloud/auth';\nimport { subscribe } from '@nextcloud/event-bus';\nimport { Folder, getNavigation, Permission } from '@nextcloud/files';\nimport { getRemoteURL, getRootPath } from '@nextcloud/files/dav';\nimport { defineStore } from 'pinia';\nimport { ref, shallowRef, watch } from 'vue';\nimport logger from '../logger.ts';\n// Temporary fake folder to use until we have the first valid folder\n// fetched and cached. This allow us to mount the FilesListVirtual\n// at all time and avoid unmount/mount and undesired rendering issues.\nconst dummyFolder = new Folder({\n    id: 0,\n    source: getRemoteURL() + getRootPath(),\n    root: getRootPath(),\n    owner: getCurrentUser()?.uid || null,\n    permissions: Permission.NONE,\n});\nexport const useActiveStore = defineStore('active', () => {\n    /**\n     * The currently active action\n     */\n    const activeAction = shallowRef();\n    /**\n     * The current active node within the folder\n     */\n    const activeNode = ref();\n    /**\n     * The current active view\n     */\n    const activeView = shallowRef();\n    /**\n     * The currently active folder\n     */\n    const activeFolder = ref(dummyFolder);\n    // Set the active node on the router params\n    watch(activeNode, () => {\n        if (typeof activeNode.value?.fileid !== 'number' || activeNode.value.fileid === activeFolder.value?.fileid) {\n            return;\n        }\n        logger.debug('Updating active fileid in URL query', { fileid: activeNode.value.fileid });\n        window.OCP.Files.Router.goToRoute(null, { ...window.OCP.Files.Router.params, fileid: String(activeNode.value.fileid) }, { ...window.OCP.Files.Router.query }, true);\n    });\n    initialize();\n    /**\n     * Unset the active node if deleted\n     *\n     * @param node - The node thats deleted\n     */\n    function onDeletedNode(node) {\n        if (activeNode.value && activeNode.value.source === node.source) {\n            activeNode.value = undefined;\n        }\n    }\n    /**\n     * Callback to update the current active view\n     *\n     * @param view - The new active view\n     */\n    function onChangedView(view = null) {\n        logger.debug('Setting active view', { view });\n        activeView.value = view ?? undefined;\n        activeNode.value = undefined;\n    }\n    /**\n     * Initalize the store - connect all event listeners.\n     *\n     */\n    function initialize() {\n        const navigation = getNavigation();\n        onChangedView(navigation.active);\n        // Make sure we only register the listeners once\n        subscribe('files:node:deleted', onDeletedNode);\n        // Or you can react to changes of the current active view\n        navigation.addEventListener('updateActive', (event) => {\n            onChangedView(event.detail);\n        });\n    }\n    return {\n        activeAction,\n        activeFolder,\n        activeNode,\n        activeView,\n    };\n});\n","/**\n * SPDX-FileCopyrightText: 2023 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\nimport { subscribe } from '@nextcloud/event-bus';\nimport { defineStore } from 'pinia';\nimport Vue from 'vue';\nimport logger from '../logger.ts';\nimport { fetchNode } from '../services/WebdavClient.ts';\nimport { usePathsStore } from './paths.ts';\n/**\n *\n * @param args\n */\nexport function useFilesStore(...args) {\n    const store = defineStore('files', {\n        state: () => ({\n            files: {},\n            roots: {},\n        }),\n        getters: {\n            /**\n             * Get a file or folder by its source\n             *\n             * @param state\n             */\n            getNode: (state) => (source) => state.files[source],\n            /**\n             * Get a list of files or folders by their IDs\n             * Note: does not return undefined values\n             *\n             * @param state\n             */\n            getNodes: (state) => (sources) => sources\n                .map((source) => state.files[source])\n                .filter(Boolean),\n            /**\n             * Get files or folders by their file ID\n             * Multiple nodes can have the same file ID but different sources\n             * (e.g. in a shared context)\n             *\n             * @param state\n             */\n            getNodesById: (state) => (fileId) => Object.values(state.files).filter((node) => node.fileid === fileId),\n            /**\n             * Get the root folder of a service\n             *\n             * @param state\n             */\n            getRoot: (state) => (service) => state.roots[service],\n        },\n        actions: {\n            /**\n             * Get cached directory matching a given path\n             *\n             * @param service - The service (files view)\n             * @param path - The path relative within the service\n             * @return The folder if found\n             */\n            getDirectoryByPath(service, path) {\n                const pathsStore = usePathsStore();\n                let folder;\n                // Get the containing folder from path store\n                if (!path || path === '/') {\n                    folder = this.getRoot(service);\n                }\n                else {\n                    const source = pathsStore.getPath(service, path);\n                    if (source) {\n                        folder = this.getNode(source);\n                    }\n                }\n                return folder;\n            },\n            /**\n             * Get cached child nodes within a given path\n             *\n             * @param service - The service (files view)\n             * @param path - The path relative within the service\n             * @return Array of cached nodes within the path\n             */\n            getNodesByPath(service, path) {\n                const folder = this.getDirectoryByPath(service, path);\n                // If we found a cache entry and the cache entry was already loaded (has children) then use it\n                return (folder?._children ?? [])\n                    .map((source) => this.getNode(source))\n                    .filter(Boolean);\n            },\n            updateNodes(nodes) {\n                // Update the store all at once\n                const files = nodes.reduce((acc, node) => {\n                    if (!node.fileid) {\n                        logger.error('Trying to update/set a node without fileid', { node });\n                        return acc;\n                    }\n                    acc[node.source] = node;\n                    return acc;\n                }, {});\n                Vue.set(this, 'files', { ...this.files, ...files });\n            },\n            deleteNodes(nodes) {\n                nodes.forEach((node) => {\n                    if (node.source) {\n                        Vue.delete(this.files, node.source);\n                    }\n                });\n            },\n            setRoot({ service, root }) {\n                Vue.set(this.roots, service, root);\n            },\n            onDeletedNode(node) {\n                this.deleteNodes([node]);\n            },\n            onCreatedNode(node) {\n                this.updateNodes([node]);\n            },\n            onMovedNode({ node, oldSource }) {\n                if (!node.fileid) {\n                    logger.error('Trying to update/set a node without fileid', { node });\n                    return;\n                }\n                // Update the path of the node\n                Vue.delete(this.files, oldSource);\n                this.updateNodes([node]);\n            },\n            async onUpdatedNode(node) {\n                if (!node.fileid) {\n                    logger.error('Trying to update/set a node without fileid', { node });\n                    return;\n                }\n                // If we have multiple nodes with the same file ID, we need to update all of them\n                const nodes = this.getNodesById(node.fileid);\n                if (nodes.length > 1) {\n                    await Promise.all(nodes.map((node) => fetchNode(node.path))).then(this.updateNodes);\n                    logger.debug(nodes.length + ' nodes updated in store', { fileid: node.fileid });\n                    return;\n                }\n                // If we have only one node with the file ID, we can update it directly\n                if (nodes.length === 1 && node.source === nodes[0].source) {\n                    this.updateNodes([node]);\n                    return;\n                }\n                // Otherwise, it means we receive an event for a node that is not in the store\n                fetchNode(node.path).then((n) => this.updateNodes([n]));\n            },\n            // Handlers for legacy sidebar (no real nodes support)\n            onAddFavorite(node) {\n                const ourNode = this.getNode(node.source);\n                if (ourNode) {\n                    Vue.set(ourNode.attributes, 'favorite', 1);\n                }\n            },\n            onRemoveFavorite(node) {\n                const ourNode = this.getNode(node.source);\n                if (ourNode) {\n                    Vue.set(ourNode.attributes, 'favorite', 0);\n                }\n            },\n        },\n    });\n    const fileStore = store(...args);\n    // Make sure we only register the listeners once\n    if (!fileStore._initialized) {\n        subscribe('files:node:created', fileStore.onCreatedNode);\n        subscribe('files:node:deleted', fileStore.onDeletedNode);\n        subscribe('files:node:updated', fileStore.onUpdatedNode);\n        subscribe('files:node:moved', fileStore.onMovedNode);\n        // legacy sidebar\n        subscribe('files:favorites:added', fileStore.onAddFavorite);\n        subscribe('files:favorites:removed', fileStore.onRemoveFavorite);\n        fileStore._initialized = true;\n    }\n    return fileStore;\n}\n","/**\n * SPDX-FileCopyrightText: 2024 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\nimport { createPinia } from 'pinia';\n/**\n * Get the Pinia instance for the Files app.\n */\nexport function getPinia() {\n    if (window._nc_files_pinia) {\n        return window._nc_files_pinia;\n    }\n    window._nc_files_pinia = createPinia();\n    return window._nc_files_pinia;\n}\n","/**\n * SPDX-FileCopyrightText: 2023 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\nimport { subscribe } from '@nextcloud/event-bus';\nimport { File, FileType, getNavigation } from '@nextcloud/files';\nimport { dirname } from '@nextcloud/paths';\nimport { defineStore } from 'pinia';\nimport Vue from 'vue';\nimport logger from '../logger.ts';\nimport { useFilesStore } from './files.ts';\n/**\n *\n * @param args\n */\nexport function usePathsStore(...args) {\n    const files = useFilesStore(...args);\n    const store = defineStore('paths', {\n        state: () => ({\n            paths: {},\n        }),\n        getters: {\n            getPath: (state) => {\n                return (service, path) => {\n                    if (!state.paths[service]) {\n                        return undefined;\n                    }\n                    return state.paths[service][path];\n                };\n            },\n        },\n        actions: {\n            addPath(payload) {\n                // If it doesn't exists, init the service state\n                if (!this.paths[payload.service]) {\n                    Vue.set(this.paths, payload.service, {});\n                }\n                // Now we can set the provided path\n                Vue.set(this.paths[payload.service], payload.path, payload.source);\n            },\n            deletePath(service, path) {\n                // skip if service does not exist\n                if (!this.paths[service]) {\n                    return;\n                }\n                Vue.delete(this.paths[service], path);\n            },\n            onCreatedNode(node) {\n                const service = getNavigation()?.active?.id || 'files';\n                if (!node.fileid) {\n                    logger.error('Node has no fileid', { node });\n                    return;\n                }\n                // Only add path if it's a folder\n                if (node.type === FileType.Folder) {\n                    this.addPath({\n                        service,\n                        path: node.path,\n                        source: node.source,\n                    });\n                }\n                // Update parent folder children if exists\n                // If the folder is the root, get it and update it\n                this.addNodeToParentChildren(node);\n            },\n            onDeletedNode(node) {\n                const service = getNavigation()?.active?.id || 'files';\n                if (node.type === FileType.Folder) {\n                    // Delete the path\n                    this.deletePath(service, node.path);\n                }\n                this.deleteNodeFromParentChildren(node);\n            },\n            onMovedNode({ node, oldSource }) {\n                const service = getNavigation()?.active?.id || 'files';\n                // Update the path of the node\n                if (node.type === FileType.Folder) {\n                    // Delete the old path if it exists\n                    const oldPath = Object.entries(this.paths[service]).find(([, source]) => source === oldSource);\n                    if (oldPath?.[0]) {\n                        this.deletePath(service, oldPath[0]);\n                    }\n                    // Add the new path\n                    this.addPath({\n                        service,\n                        path: node.path,\n                        source: node.source,\n                    });\n                }\n                // Dummy simple clone of the renamed node from a previous state\n                const oldNode = new File({\n                    source: oldSource,\n                    owner: node.owner,\n                    mime: node.mime,\n                    root: node.root,\n                });\n                this.deleteNodeFromParentChildren(oldNode);\n                this.addNodeToParentChildren(node);\n            },\n            deleteNodeFromParentChildren(node) {\n                const service = getNavigation()?.active?.id || 'files';\n                // Update children of a root folder\n                const parentSource = dirname(node.source);\n                const folder = (node.dirname === '/' ? files.getRoot(service) : files.getNode(parentSource));\n                if (folder) {\n                    // ensure sources are unique\n                    const children = new Set(folder._children ?? []);\n                    children.delete(node.source);\n                    Vue.set(folder, '_children', [...children.values()]);\n                    logger.debug('Children updated', { parent: folder, node, children: folder._children });\n                    return;\n                }\n                logger.debug('Parent path does not exists, skipping children update', { node });\n            },\n            addNodeToParentChildren(node) {\n                const service = getNavigation()?.active?.id || 'files';\n                // Update children of a root folder\n                const parentSource = dirname(node.source);\n                const folder = (node.dirname === '/' ? files.getRoot(service) : files.getNode(parentSource));\n                if (folder) {\n                    // ensure sources are unique\n                    const children = new Set(folder._children ?? []);\n                    children.add(node.source);\n                    Vue.set(folder, '_children', [...children.values()]);\n                    logger.debug('Children updated', { parent: folder, node, children: folder._children });\n                    return;\n                }\n                logger.debug('Parent path does not exists, skipping children update', { node });\n            },\n        },\n    });\n    const pathsStore = store(...args);\n    // Make sure we only register the listeners once\n    if (!pathsStore._initialized) {\n        subscribe('files:node:created', pathsStore.onCreatedNode);\n        subscribe('files:node:deleted', pathsStore.onDeletedNode);\n        subscribe('files:node:moved', pathsStore.onMovedNode);\n        pathsStore._initialized = true;\n    }\n    return pathsStore;\n}\n","/*!\n * SPDX-FileCopyrightText: 2025 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\nimport { emit, subscribe } from '@nextcloud/event-bus';\nimport debounce from 'debounce';\nimport { defineStore } from 'pinia';\nimport { ref, watch } from 'vue';\nimport logger from '../logger.ts';\nimport { VIEW_ID } from '../views/search.ts';\nexport const useSearchStore = defineStore('search', () => {\n    /**\n     * The current search query\n     */\n    const query = ref('');\n    /**\n     * Scope of the search.\n     * Scopes:\n     * - filter: only filter current file list\n     * - globally: search everywhere\n     */\n    const scope = ref('filter');\n    // reset the base if query is cleared\n    watch(scope, updateSearch);\n    watch(query, (old, current) => {\n        // skip if only whitespaces changed\n        if (old.trim() === current.trim()) {\n            return;\n        }\n        updateSearch();\n    });\n    // initialize the search store\n    initialize();\n    /**\n     * Debounced update of the current route\n     *\n     */\n    const updateRouter = debounce((isSearch) => {\n        const router = window.OCP.Files.Router;\n        router.goToRoute(undefined, {\n            view: VIEW_ID,\n        }, {\n            query: query.value,\n        }, isSearch);\n    });\n    /**\n     * Handle updating the filter if needed.\n     * Also update the search view by updating the current route if needed.\n     *\n     */\n    function updateSearch() {\n        // emit the search event to update the filter\n        emit('files:search:updated', { query: query.value, scope: scope.value });\n        const router = window.OCP.Files.Router;\n        // if we are on the search view and the query was unset or scope was set to 'filter' we need to move back to the files view\n        if (router.params.view === VIEW_ID && (query.value === '' || scope.value === 'filter')) {\n            scope.value = 'filter';\n            return router.goToRoute(undefined, {\n                view: 'files',\n            }, {\n                ...router.query,\n                query: undefined,\n            });\n        }\n        // for the filter scope we do not need to adjust the current route anymore\n        // also if the query is empty we do not need to do anything\n        if (scope.value === 'filter' || !query.value) {\n            return;\n        }\n        const isSearch = router.params.view === VIEW_ID;\n        logger.debug('Update route for updated search query', { query: query.value, isSearch });\n        updateRouter(isSearch);\n    }\n    /**\n     * Event handler that resets the store if the file list view was changed.\n     *\n     * @param view - The new view that is active\n     */\n    function onViewChanged(view) {\n        if (view.id !== VIEW_ID) {\n            query.value = '';\n            scope.value = 'filter';\n        }\n    }\n    /**\n     * Initialize the store from the router if needed\n     */\n    function initialize() {\n        subscribe('files:navigation:changed', onViewChanged);\n        const router = window.OCP.Files.Router;\n        // if we initially load the search view (e.g. hard page refresh)\n        // then we need to initialize the store from the router\n        if (router.params.view === VIEW_ID) {\n            query.value = [router.query.query].flat()[0] ?? '';\n            if (query.value) {\n                scope.value = 'globally';\n                logger.debug('Directly navigated to search view', { query: query.value });\n            }\n            else {\n                // we do not have any query so we need to move to the files list\n                logger.info('Directly navigated to search view without any query, redirect to files view.');\n                router.goToRoute(undefined, {\n                    ...router.params,\n                    view: 'files',\n                }, {\n                    ...router.query,\n                    query: undefined,\n                }, true);\n            }\n        }\n    }\n    return {\n        query,\n        scope,\n    };\n});\n","/**\n * SPDX-FileCopyrightText: 2023 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\nimport { getCurrentUser } from '@nextcloud/auth';\nimport axios from '@nextcloud/axios';\nimport { emit, subscribe } from '@nextcloud/event-bus';\nimport { loadState } from '@nextcloud/initial-state';\nimport { generateUrl } from '@nextcloud/router';\nimport { defineStore } from 'pinia';\nimport { ref, set } from 'vue';\nconst initialUserConfig = loadState('files', 'config', {\n    crop_image_previews: true,\n    default_view: 'files',\n    folder_tree: true,\n    grid_view: false,\n    show_files_extensions: true,\n    show_hidden: false,\n    show_mime_column: true,\n    sort_favorites_first: true,\n    sort_folders_first: true,\n    show_dialog_deletion: false,\n    show_dialog_file_extension: true,\n});\nexport const useUserConfigStore = defineStore('userconfig', () => {\n    const userConfig = ref({ ...initialUserConfig });\n    /**\n     * Update the user config local store\n     *\n     * @param key The config key\n     * @param value The new value\n     */\n    function onUpdate(key, value) {\n        set(userConfig.value, key, value);\n    }\n    /**\n     * Update the user config local store AND on server side\n     *\n     * @param key The config key\n     * @param value The new value\n     */\n    async function update(key, value) {\n        // only update if a user is logged in (not the case for public shares)\n        if (getCurrentUser() !== null) {\n            await axios.put(generateUrl('/apps/files/api/v1/config/{key}', { key }), {\n                value,\n            });\n        }\n        emit('files:config:updated', { key, value });\n    }\n    // Register the event listener\n    subscribe('files:config:updated', ({ key, value }) => onUpdate(key, value));\n    return {\n        userConfig,\n        update,\n    };\n});\n","/**\n * SPDX-FileCopyrightText: 2023 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\nimport MagnifySvg from '@mdi/svg/svg/magnify.svg?raw';\nimport { getNavigation, View } from '@nextcloud/files';\nimport { t } from '@nextcloud/l10n';\nimport Vue from 'vue';\nimport { getContents } from '../services/Search.ts';\nimport { VIEW_ID as FILES_VIEW_ID } from './files.ts';\nexport const VIEW_ID = 'search';\n/**\n * Register the search-in-files view\n */\nexport function registerSearchView() {\n    let instance;\n    let view;\n    const Navigation = getNavigation();\n    Navigation.register(new View({\n        id: VIEW_ID,\n        name: t('files', 'Search'),\n        caption: t('files', 'Search results within your files.'),\n        async emptyView(el) {\n            if (!view) {\n                view = (await import('./SearchEmptyView.vue')).default;\n            }\n            else {\n                instance.$destroy();\n            }\n            instance = new Vue(view);\n            instance.$mount(el);\n        },\n        icon: MagnifySvg,\n        order: 10,\n        parent: FILES_VIEW_ID,\n        // it should be shown expanded\n        expanded: true,\n        // this view is hidden by default and only shown when active\n        hidden: true,\n        getContents,\n    }));\n}\n","// Imports\nimport ___CSS_LOADER_API_SOURCEMAP_IMPORT___ from \"../../../../css-loader/dist/runtime/sourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, `/**\n * SPDX-FileCopyrightText: 2019 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\n/**\n * SPDX-FileCopyrightText: 2021 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\n/*\n* Ensure proper alignment of the vue material icons\n*/\n.material-design-icon[data-v-c8e429a5] {\n  display: flex;\n  align-self: center;\n  justify-self: center;\n  align-items: center;\n  justify-content: center;\n}\n.nc-chip[data-v-c8e429a5] {\n  --chip-size: 24px;\n  --chip-radius: calc(var(--chip-size) / 2);\n  height: var(--chip-size);\n  max-width: fit-content;\n  display: flex;\n  flex-direction: row;\n  align-items: center;\n  border-radius: var(--chip-radius);\n  background-color: var(--color-background-hover);\n}\n.nc-chip--primary[data-v-c8e429a5] {\n  background-color: var(--color-primary-element);\n  color: var(--color-primary-element-text);\n}\n.nc-chip--secondary[data-v-c8e429a5] {\n  background-color: var(--color-primary-element-light);\n  color: var(--color-primary-element-light-text);\n}\n.nc-chip--error[data-v-c8e429a5] {\n  background-color: var(--color-error);\n  color: var(--color-error-text);\n}\n.nc-chip--warning[data-v-c8e429a5] {\n  background-color: var(--color-warning);\n  color: var(--color-warning-text);\n}\n.nc-chip--success[data-v-c8e429a5] {\n  background-color: var(--color-success);\n  color: var(--color-success-text);\n}\n.nc-chip--no-actions .nc-chip__text[data-v-c8e429a5] {\n  padding-inline-end: calc(2 * var(--default-grid-baseline));\n}\n.nc-chip--no-icon .nc-chip__text[data-v-c8e429a5] {\n  padding-inline-start: calc(2 * var(--default-grid-baseline));\n}\n.nc-chip__text[data-v-c8e429a5] {\n  flex: 1 auto;\n  overflow: hidden;\n  text-overflow: ellipsis;\n  text-wrap: nowrap;\n}\n.nc-chip__icon[data-v-c8e429a5] {\n  flex: 0 0 var(--chip-size);\n  margin-inline-end: var(--default-grid-baseline);\n  line-height: 1;\n  display: flex;\n  align-items: center;\n  justify-content: center;\n  overflow: hidden;\n  height: var(--chip-size);\n  width: var(--chip-size);\n}\n.nc-chip__actions[data-v-c8e429a5] {\n  flex: 0 0 var(--chip-size);\n  --default-clickable-area: var(--chip-size);\n  --border-radius-element: var(--chip-radius);\n}`, \"\",{\"version\":3,\"sources\":[\"webpack://./node_modules/@nextcloud/vue/dist/assets/NcChip-DLfUzq07.css\"],\"names\":[],\"mappings\":\"AAAA;;;EAGE;AACF;;;EAGE;AACF;;CAEC;AACD;EACE,aAAa;EACb,kBAAkB;EAClB,oBAAoB;EACpB,mBAAmB;EACnB,uBAAuB;AACzB;AACA;EACE,iBAAiB;EACjB,yCAAyC;EACzC,wBAAwB;EACxB,sBAAsB;EACtB,aAAa;EACb,mBAAmB;EACnB,mBAAmB;EACnB,iCAAiC;EACjC,+CAA+C;AACjD;AACA;EACE,8CAA8C;EAC9C,wCAAwC;AAC1C;AACA;EACE,oDAAoD;EACpD,8CAA8C;AAChD;AACA;EACE,oCAAoC;EACpC,8BAA8B;AAChC;AACA;EACE,sCAAsC;EACtC,gCAAgC;AAClC;AACA;EACE,sCAAsC;EACtC,gCAAgC;AAClC;AACA;EACE,0DAA0D;AAC5D;AACA;EACE,4DAA4D;AAC9D;AACA;EACE,YAAY;EACZ,gBAAgB;EAChB,uBAAuB;EACvB,iBAAiB;AACnB;AACA;EACE,0BAA0B;EAC1B,+CAA+C;EAC/C,cAAc;EACd,aAAa;EACb,mBAAmB;EACnB,uBAAuB;EACvB,gBAAgB;EAChB,wBAAwB;EACxB,uBAAuB;AACzB;AACA;EACE,0BAA0B;EAC1B,0CAA0C;EAC1C,2CAA2C;AAC7C\",\"sourcesContent\":[\"/**\\n * SPDX-FileCopyrightText: 2019 Nextcloud GmbH and Nextcloud contributors\\n * SPDX-License-Identifier: AGPL-3.0-or-later\\n */\\n/**\\n * SPDX-FileCopyrightText: 2021 Nextcloud GmbH and Nextcloud contributors\\n * SPDX-License-Identifier: AGPL-3.0-or-later\\n */\\n/*\\n* Ensure proper alignment of the vue material icons\\n*/\\n.material-design-icon[data-v-c8e429a5] {\\n  display: flex;\\n  align-self: center;\\n  justify-self: center;\\n  align-items: center;\\n  justify-content: center;\\n}\\n.nc-chip[data-v-c8e429a5] {\\n  --chip-size: 24px;\\n  --chip-radius: calc(var(--chip-size) / 2);\\n  height: var(--chip-size);\\n  max-width: fit-content;\\n  display: flex;\\n  flex-direction: row;\\n  align-items: center;\\n  border-radius: var(--chip-radius);\\n  background-color: var(--color-background-hover);\\n}\\n.nc-chip--primary[data-v-c8e429a5] {\\n  background-color: var(--color-primary-element);\\n  color: var(--color-primary-element-text);\\n}\\n.nc-chip--secondary[data-v-c8e429a5] {\\n  background-color: var(--color-primary-element-light);\\n  color: var(--color-primary-element-light-text);\\n}\\n.nc-chip--error[data-v-c8e429a5] {\\n  background-color: var(--color-error);\\n  color: var(--color-error-text);\\n}\\n.nc-chip--warning[data-v-c8e429a5] {\\n  background-color: var(--color-warning);\\n  color: var(--color-warning-text);\\n}\\n.nc-chip--success[data-v-c8e429a5] {\\n  background-color: var(--color-success);\\n  color: var(--color-success-text);\\n}\\n.nc-chip--no-actions .nc-chip__text[data-v-c8e429a5] {\\n  padding-inline-end: calc(2 * var(--default-grid-baseline));\\n}\\n.nc-chip--no-icon .nc-chip__text[data-v-c8e429a5] {\\n  padding-inline-start: calc(2 * var(--default-grid-baseline));\\n}\\n.nc-chip__text[data-v-c8e429a5] {\\n  flex: 1 auto;\\n  overflow: hidden;\\n  text-overflow: ellipsis;\\n  text-wrap: nowrap;\\n}\\n.nc-chip__icon[data-v-c8e429a5] {\\n  flex: 0 0 var(--chip-size);\\n  margin-inline-end: var(--default-grid-baseline);\\n  line-height: 1;\\n  display: flex;\\n  align-items: center;\\n  justify-content: center;\\n  overflow: hidden;\\n  height: var(--chip-size);\\n  width: var(--chip-size);\\n}\\n.nc-chip__actions[data-v-c8e429a5] {\\n  flex: 0 0 var(--chip-size);\\n  --default-clickable-area: var(--chip-size);\\n  --border-radius-element: var(--chip-radius);\\n}\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_SOURCEMAP_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/sourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, `.files-list__breadcrumbs[data-v-86e9be62]{flex:1 1 100% !important;width:100%;height:100%;margin:0;min-width:0}.files-list__breadcrumbs[data-v-86e9be62]  a{cursor:pointer !important}.files-list__breadcrumbs--with-progress[data-v-86e9be62]{flex-direction:column !important;align-items:flex-start !important}`, \"\",{\"version\":3,\"sources\":[\"webpack://./apps/files/src/components/BreadCrumbs.vue\"],\"names\":[],\"mappings\":\"AACA,0CAEC,wBAAA,CACA,UAAA,CACA,WAAA,CACA,QAAA,CACA,WAAA,CAGC,6CACC,yBAAA,CAIF,yDACC,gCAAA,CACA,iCAAA\",\"sourcesContent\":[\"\\n.files-list__breadcrumbs {\\n\\t// Take as much space as possible\\n\\tflex: 1 1 100% !important;\\n\\twidth: 100%;\\n\\theight: 100%;\\n\\tmargin: 0;\\n\\tmin-width: 0;\\n\\n\\t:deep() {\\n\\t\\ta {\\n\\t\\t\\tcursor: pointer !important;\\n\\t\\t}\\n\\t}\\n\\n\\t&--with-progress {\\n\\t\\tflex-direction: column !important;\\n\\t\\talign-items: flex-start !important;\\n\\t}\\n}\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_SOURCEMAP_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/sourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, `.files-list__drag-drop-notice[data-v-1e2b9696]{display:flex;align-items:center;justify-content:center;width:100%;min-height:102px;margin:0;user-select:none;color:var(--color-text-maxcontrast);background-color:var(--color-main-background);border-color:#000}.files-list__drag-drop-notice h3[data-v-1e2b9696]{margin-inline-start:16px;color:inherit}.files-list__drag-drop-notice-wrapper[data-v-1e2b9696]{display:flex;align-items:center;justify-content:center;height:15vh;max-height:70%;padding:0 5vw;border:2px var(--color-border-dark) dashed;border-radius:var(--border-radius-large)}`, \"\",{\"version\":3,\"sources\":[\"webpack://./apps/files/src/components/DragAndDropNotice.vue\"],\"names\":[],\"mappings\":\"AACA,+CACC,YAAA,CACA,kBAAA,CACA,sBAAA,CACA,UAAA,CAEA,gBAAA,CACA,QAAA,CACA,gBAAA,CACA,mCAAA,CACA,6CAAA,CACA,iBAAA,CAEA,kDACC,wBAAA,CACA,aAAA,CAGD,uDACC,YAAA,CACA,kBAAA,CACA,sBAAA,CACA,WAAA,CACA,cAAA,CACA,aAAA,CACA,0CAAA,CACA,wCAAA\",\"sourcesContent\":[\"\\n.files-list__drag-drop-notice {\\n\\tdisplay: flex;\\n\\talign-items: center;\\n\\tjustify-content: center;\\n\\twidth: 100%;\\n\\t// Breadcrumbs height + row thead height\\n\\tmin-height: calc(58px + 44px);\\n\\tmargin: 0;\\n\\tuser-select: none;\\n\\tcolor: var(--color-text-maxcontrast);\\n\\tbackground-color: var(--color-main-background);\\n\\tborder-color: black;\\n\\n\\th3 {\\n\\t\\tmargin-inline-start: 16px;\\n\\t\\tcolor: inherit;\\n\\t}\\n\\n\\t&-wrapper {\\n\\t\\tdisplay: flex;\\n\\t\\talign-items: center;\\n\\t\\tjustify-content: center;\\n\\t\\theight: 15vh;\\n\\t\\tmax-height: 70%;\\n\\t\\tpadding: 0 5vw;\\n\\t\\tborder: 2px var(--color-border-dark) dashed;\\n\\t\\tborder-radius: var(--border-radius-large);\\n\\t}\\n}\\n\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_SOURCEMAP_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/sourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, `.files-list-drag-image{position:absolute;top:-9999px;inset-inline-start:-9999px;display:flex;overflow:hidden;align-items:center;height:34px;padding:6px 12px;background:var(--color-main-background)}.files-list-drag-image__icon,.files-list-drag-image .files-list__row-icon-preview-container{display:flex;overflow:hidden;align-items:center;justify-content:center;width:22px;height:22px;border-radius:var(--border-radius)}.files-list-drag-image__icon{overflow:visible;margin-inline-end:12px}.files-list-drag-image__icon img{max-width:100%;max-height:100%}.files-list-drag-image__icon .material-design-icon{color:var(--color-text-maxcontrast)}.files-list-drag-image__icon .material-design-icon.folder-icon{color:var(--color-primary-element)}.files-list-drag-image__icon>span{display:flex}.files-list-drag-image__icon>span>.files-list__row-icon-preview-container+.files-list__row-icon-preview-container{margin-top:6px;margin-inline-start:-16px}.files-list-drag-image__icon>span>.files-list__row-icon-preview-container+.files-list__row-icon-preview-container+.files-list__row-icon-preview-container{margin-top:12px}.files-list-drag-image__icon>span:not(:empty)+*{display:none}.files-list-drag-image__name{overflow:hidden;white-space:nowrap;text-overflow:ellipsis}`, \"\",{\"version\":3,\"sources\":[\"webpack://./apps/files/src/components/DragAndDropPreview.vue\"],\"names\":[],\"mappings\":\"AAIA,uBACC,iBAAA,CACA,WAAA,CACA,0BAAA,CACA,YAAA,CACA,eAAA,CACA,kBAAA,CACA,WAAA,CACA,gBAAA,CACA,uCAAA,CAEA,4FAEC,YAAA,CACA,eAAA,CACA,kBAAA,CACA,sBAAA,CACA,UAAA,CACA,WAAA,CACA,kCAAA,CAGD,6BACC,gBAAA,CACA,sBAAA,CAEA,iCACC,cAAA,CACA,eAAA,CAGD,mDACC,mCAAA,CACA,+DACC,kCAAA,CAKF,kCACC,YAAA,CAIA,kHACC,cA/CU,CAgDV,yBAAA,CACA,0JACC,eAAA,CAMF,gDACC,YAAA,CAKH,6BACC,eAAA,CACA,kBAAA,CACA,sBAAA\",\"sourcesContent\":[\"\\n$size: 28px;\\n$stack-shift: 6px;\\n\\n.files-list-drag-image {\\n\\tposition: absolute;\\n\\ttop: -9999px;\\n\\tinset-inline-start: -9999px;\\n\\tdisplay: flex;\\n\\toverflow: hidden;\\n\\talign-items: center;\\n\\theight: $size + $stack-shift;\\n\\tpadding: $stack-shift $stack-shift * 2;\\n\\tbackground: var(--color-main-background);\\n\\n\\t&__icon,\\n\\t.files-list__row-icon-preview-container {\\n\\t\\tdisplay: flex;\\n\\t\\toverflow: hidden;\\n\\t\\talign-items: center;\\n\\t\\tjustify-content: center;\\n\\t\\twidth: $size - $stack-shift;\\n\\t\\theight: $size - $stack-shift;;\\n\\t\\tborder-radius: var(--border-radius);\\n\\t}\\n\\n\\t&__icon {\\n\\t\\toverflow: visible;\\n\\t\\tmargin-inline-end: $stack-shift * 2;\\n\\n\\t\\timg {\\n\\t\\t\\tmax-width: 100%;\\n\\t\\t\\tmax-height: 100%;\\n\\t\\t}\\n\\n\\t\\t.material-design-icon {\\n\\t\\t\\tcolor: var(--color-text-maxcontrast);\\n\\t\\t\\t&.folder-icon {\\n\\t\\t\\t\\tcolor: var(--color-primary-element);\\n\\t\\t\\t}\\n\\t\\t}\\n\\n\\t\\t// Previews container\\n\\t\\t> span {\\n\\t\\t\\tdisplay: flex;\\n\\n\\t\\t\\t// Stack effect if more than one element\\n\\t\\t\\t// Max 3 elements\\n\\t\\t\\t> .files-list__row-icon-preview-container + .files-list__row-icon-preview-container {\\n\\t\\t\\t\\tmargin-top: $stack-shift;\\n\\t\\t\\t\\tmargin-inline-start: $stack-shift * 2 - $size;\\n\\t\\t\\t\\t& + .files-list__row-icon-preview-container {\\n\\t\\t\\t\\t\\tmargin-top: $stack-shift * 2;\\n\\t\\t\\t\\t}\\n\\t\\t\\t}\\n\\n\\t\\t\\t// If we have manually clone the preview,\\n\\t\\t\\t// let's hide any fallback icons\\n\\t\\t\\t&:not(:empty) + * {\\n\\t\\t\\t\\tdisplay: none;\\n\\t\\t\\t}\\n\\t\\t}\\n\\t}\\n\\n\\t&__name {\\n\\t\\toverflow: hidden;\\n\\t\\twhite-space: nowrap;\\n\\t\\ttext-overflow: ellipsis;\\n\\t}\\n}\\n\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_SOURCEMAP_IMPORT___ from \"../../../../../node_modules/css-loader/dist/runtime/sourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, `.favorite-marker-icon[data-v-4505d262]{color:var(--color-favorite);min-width:unset !important;min-height:unset !important}.favorite-marker-icon[data-v-4505d262]  svg{width:20px !important;height:20px !important;max-width:unset !important;max-height:unset !important}.favorite-marker-icon[data-v-4505d262]  svg path{stroke:var(--color-main-background);stroke-width:8px;stroke-linejoin:round;paint-order:stroke}`, \"\",{\"version\":3,\"sources\":[\"webpack://./apps/files/src/components/FileEntry/FavoriteIcon.vue\"],\"names\":[],\"mappings\":\"AACA,uCACC,2BAAA,CAEA,0BAAA,CACG,2BAAA,CAGF,4CAEC,qBAAA,CACA,sBAAA,CAGA,0BAAA,CACA,2BAAA,CAGA,iDACC,mCAAA,CACA,gBAAA,CACA,qBAAA,CACA,kBAAA\",\"sourcesContent\":[\"\\n.favorite-marker-icon {\\n\\tcolor: var(--color-favorite);\\n\\t// Override NcIconSvgWrapper defaults (clickable area)\\n\\tmin-width: unset !important;\\n    min-height: unset !important;\\n\\n\\t:deep() {\\n\\t\\tsvg {\\n\\t\\t\\t// We added a stroke for a11y so we must increase the size to include the stroke\\n\\t\\t\\twidth: 20px !important;\\n\\t\\t\\theight: 20px !important;\\n\\n\\t\\t\\t// Override NcIconSvgWrapper defaults of 20px\\n\\t\\t\\tmax-width: unset !important;\\n\\t\\t\\tmax-height: unset !important;\\n\\n\\t\\t\\t// Sow a border around the icon for better contrast\\n\\t\\t\\tpath {\\n\\t\\t\\t\\tstroke: var(--color-main-background);\\n\\t\\t\\t\\tstroke-width: 8px;\\n\\t\\t\\t\\tstroke-linejoin: round;\\n\\t\\t\\t\\tpaint-order: stroke;\\n\\t\\t\\t}\\n\\t\\t}\\n\\t}\\n}\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_SOURCEMAP_IMPORT___ from \"../../../../../node_modules/css-loader/dist/runtime/sourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, `main.app-content[style*=mouse-pos-x] .v-popper__popper{transform:translate3d(var(--mouse-pos-x), var(--mouse-pos-y), 0px) !important}main.app-content[style*=mouse-pos-x] .v-popper__popper[data-popper-placement=top]{transform:translate3d(var(--mouse-pos-x), calc(var(--mouse-pos-y) - 50vh + 34px), 0px) !important}main.app-content[style*=mouse-pos-x] .v-popper__popper .v-popper__arrow-container{display:none}`, \"\",{\"version\":3,\"sources\":[\"webpack://./apps/files/src/components/FileEntry/FileEntryActions.vue\"],\"names\":[],\"mappings\":\"AAGA,uDACC,6EAAA,CAGA,kFAEC,iGAAA,CAGD,kFACC,YAAA\",\"sourcesContent\":[\"\\n// Allow right click to define the position of the menu\\n// only if defined\\nmain.app-content[style*=\\\"mouse-pos-x\\\"] .v-popper__popper {\\n\\ttransform: translate3d(var(--mouse-pos-x), var(--mouse-pos-y), 0px) !important;\\n\\n\\t// If the menu is too close to the bottom, we move it up\\n\\t&[data-popper-placement=\\\"top\\\"] {\\n\\t\\t// 34px added to align with the top of the cursor\\n\\t\\ttransform: translate3d(var(--mouse-pos-x), calc(var(--mouse-pos-y) - 50vh + 34px), 0px) !important;\\n\\t}\\n\\t// Hide arrow if floating\\n\\t.v-popper__arrow-container {\\n\\t\\tdisplay: none;\\n\\t}\\n}\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_SOURCEMAP_IMPORT___ from \"../../../../../node_modules/css-loader/dist/runtime/sourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, `.files-list__row-action[data-v-5f3391ea]{--max-icon-size: calc(var(--default-clickable-area) - 2 * var(--default-grid-baseline))}.files-list__row-action.files-list__row-action--inline[data-v-5f3391ea]{--max-icon-size: var(--default-clickable-area)}.files-list__row-action .files-list__row-action-icon[data-v-5f3391ea] svg{max-height:var(--max-icon-size) !important;max-width:var(--max-icon-size) !important}.files-list__row-action.files-list__row-action--destructive[data-v-5f3391ea] ::deep(button){color:var(--color-text-error) !important}`, \"\",{\"version\":3,\"sources\":[\"webpack://./apps/files/src/components/FileEntry/FileEntryActions.vue\"],\"names\":[],\"mappings\":\"AACA,yCACC,uFAAA,CAGA,wEACC,8CAAA,CAID,0EACC,0CAAA,CACA,yCAAA,CAIA,4FACC,wCAAA\",\"sourcesContent\":[\"\\n.files-list__row-action {\\n\\t--max-icon-size: calc(var(--default-clickable-area) - 2 * var(--default-grid-baseline));\\n\\n\\t// inline icons can have clickable area size so they still fit into the row\\n\\t&.files-list__row-action--inline {\\n\\t\\t--max-icon-size: var(--default-clickable-area);\\n\\t}\\n\\n\\t// Some icons exceed the default size so we need to enforce a max width and height\\n\\t.files-list__row-action-icon :deep(svg) {\\n\\t\\tmax-height: var(--max-icon-size) !important;\\n\\t\\tmax-width: var(--max-icon-size) !important;\\n\\t}\\n\\n\\t&.files-list__row-action--destructive {\\n\\t\\t::deep(button) {\\n\\t\\t\\tcolor: var(--color-text-error) !important;\\n\\t\\t}\\n\\t}\\n}\\n\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_SOURCEMAP_IMPORT___ from \"../../../../../node_modules/css-loader/dist/runtime/sourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, `button.files-list__row-name-link[data-v-3e8ca2b0]{background-color:unset;border:none;font-weight:normal}button.files-list__row-name-link[data-v-3e8ca2b0]:active{background-color:unset !important}`, \"\",{\"version\":3,\"sources\":[\"webpack://./apps/files/src/components/FileEntry/FileEntryName.vue\"],\"names\":[],\"mappings\":\"AACA,kDACC,sBAAA,CACA,WAAA,CACA,kBAAA,CAEA,yDAEC,iCAAA\",\"sourcesContent\":[\"\\nbutton.files-list__row-name-link {\\n\\tbackground-color: unset;\\n\\tborder: none;\\n\\tfont-weight: normal;\\n\\n\\t&:active {\\n\\t\\t// No active styles - handled by the row entry\\n\\t\\tbackground-color: unset !important;\\n\\t}\\n}\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_SOURCEMAP_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/sourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, `tr[data-v-378a6e4a]{margin-bottom:var(--body-container-margin);border-top:1px solid var(--color-border);background-color:rgba(0,0,0,0) !important;border-bottom:none !important}tr td[data-v-378a6e4a]{user-select:none;color:var(--color-text-maxcontrast) !important}`, \"\",{\"version\":3,\"sources\":[\"webpack://./apps/files/src/components/FilesListTableFooter.vue\"],\"names\":[],\"mappings\":\"AAEA,oBACC,0CAAA,CACA,wCAAA,CAEA,yCAAA,CACA,6BAAA,CAEA,uBACC,gBAAA,CAEA,8CAAA\",\"sourcesContent\":[\"\\n// Scoped row\\ntr {\\n\\tmargin-bottom: var(--body-container-margin);\\n\\tborder-top: 1px solid var(--color-border);\\n\\t// Prevent hover effect on the whole row\\n\\tbackground-color: transparent !important;\\n\\tborder-bottom: none !important;\\n\\n\\ttd {\\n\\t\\tuser-select: none;\\n\\t\\t// Make sure the cell colors don't apply to column headers\\n\\t\\tcolor: var(--color-text-maxcontrast) !important;\\n\\t}\\n}\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_SOURCEMAP_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/sourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, `.files-list__column[data-v-228ab50c]{user-select:none;color:var(--color-text-maxcontrast) !important}.files-list__column--sortable[data-v-228ab50c]{cursor:pointer}`, \"\",{\"version\":3,\"sources\":[\"webpack://./apps/files/src/components/FilesListTableHeader.vue\"],\"names\":[],\"mappings\":\"AACA,qCACC,gBAAA,CAEA,8CAAA,CAEA,+CACC,cAAA\",\"sourcesContent\":[\"\\n.files-list__column {\\n\\tuser-select: none;\\n\\t// Make sure the cell colors don't apply to column headers\\n\\tcolor: var(--color-text-maxcontrast) !important;\\n\\n\\t&--sortable {\\n\\t\\tcursor: pointer;\\n\\t}\\n}\\n\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_SOURCEMAP_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/sourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, `.files-list__row-actions-batch[data-v-4056bece]{flex:1 1 100% !important;max-width:100%}`, \"\",{\"version\":3,\"sources\":[\"webpack://./apps/files/src/components/FilesListTableHeaderActions.vue\"],\"names\":[],\"mappings\":\"AACA,gDACC,wBAAA,CACA,cAAA\",\"sourcesContent\":[\"\\n.files-list__row-actions-batch {\\n\\tflex: 1 1 100% !important;\\n\\tmax-width: 100%;\\n}\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_SOURCEMAP_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/sourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, `.files-list__column-sort-button[data-v-4a8557e6]{margin:0 calc(var(--button-padding, var(--cell-margin))*-1);min-width:calc(100% - 3*var(--cell-margin)) !important}.files-list__column-sort-button-text[data-v-4a8557e6]{color:var(--color-text-maxcontrast);font-weight:normal}.files-list__column-sort-button-icon[data-v-4a8557e6]{color:var(--color-text-maxcontrast);opacity:0;transition:opacity var(--animation-quick);inset-inline-start:-10px}.files-list__column-sort-button--size .files-list__column-sort-button-icon[data-v-4a8557e6]{inset-inline-start:10px}.files-list__column-sort-button--active .files-list__column-sort-button-icon[data-v-4a8557e6],.files-list__column-sort-button:hover .files-list__column-sort-button-icon[data-v-4a8557e6],.files-list__column-sort-button:focus .files-list__column-sort-button-icon[data-v-4a8557e6],.files-list__column-sort-button:active .files-list__column-sort-button-icon[data-v-4a8557e6]{opacity:1}`, \"\",{\"version\":3,\"sources\":[\"webpack://./apps/files/src/components/FilesListTableHeaderButton.vue\"],\"names\":[],\"mappings\":\"AACA,iDAEC,2DAAA,CACA,sDAAA,CAEA,sDACC,mCAAA,CACA,kBAAA,CAGD,sDACC,mCAAA,CACA,SAAA,CACA,yCAAA,CACA,wBAAA,CAGD,4FACC,uBAAA,CAGD,mXAIC,SAAA\",\"sourcesContent\":[\"\\n.files-list__column-sort-button {\\n\\t// Compensate for cells margin\\n\\tmargin: 0 calc(var(--button-padding, var(--cell-margin)) * -1);\\n\\tmin-width: calc(100% - 3 * var(--cell-margin))!important;\\n\\n\\t&-text {\\n\\t\\tcolor: var(--color-text-maxcontrast);\\n\\t\\tfont-weight: normal;\\n\\t}\\n\\n\\t&-icon {\\n\\t\\tcolor: var(--color-text-maxcontrast);\\n\\t\\topacity: 0;\\n\\t\\ttransition: opacity var(--animation-quick);\\n\\t\\tinset-inline-start: -10px;\\n\\t}\\n\\n\\t&--size &-icon {\\n\\t\\tinset-inline-start: 10px;\\n\\t}\\n\\n\\t&--active &-icon,\\n\\t&:hover &-icon,\\n\\t&:focus &-icon,\\n\\t&:active &-icon {\\n\\t\\topacity: 1;\\n\\t}\\n}\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_SOURCEMAP_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/sourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, `.files-list[data-v-1f794bec]{--row-height: 44px;--cell-margin: 14px;--checkbox-padding: calc((var(--row-height) - var(--checkbox-size)) / 2);--checkbox-size: 24px;--clickable-area: var(--default-clickable-area);--icon-preview-size: 24px;--fixed-block-start-position: calc(var(--clickable-area-small) + var(--default-grid-baseline, 4px));display:flex;flex-direction:column;overflow:auto;height:100%;will-change:scroll-position}.files-list[data-v-1f794bec]:has(.files-list__filters:empty){--fixed-block-start-position: 0px}.files-list[data-v-1f794bec]  tbody{will-change:padding;contain:layout paint style;display:flex;flex-direction:column;width:100%;position:relative}.files-list[data-v-1f794bec]  tbody tr{contain:strict}.files-list[data-v-1f794bec]  tbody tr:hover,.files-list[data-v-1f794bec]  tbody tr:focus{background-color:var(--color-background-dark)}.files-list[data-v-1f794bec]  .files-list__before{display:flex;flex-direction:column}.files-list[data-v-1f794bec]  .files-list__selected{padding-inline-end:12px;white-space:nowrap;font-variant-numeric:tabular-nums}.files-list[data-v-1f794bec]  .files-list__table{display:block}.files-list[data-v-1f794bec]  .files-list__table.files-list__table--with-thead-overlay{margin-block-start:calc(-1*var(--row-height))}.files-list[data-v-1f794bec]  .files-list__table--hidden{visibility:hidden;z-index:-1;opacity:0}.files-list[data-v-1f794bec]  .files-list__filters{display:flex;gap:var(--default-grid-baseline);box-sizing:border-box;position:sticky;top:0;background-color:var(--color-main-background);z-index:10;padding-inline:var(--row-height) var(--default-grid-baseline, 4px);height:var(--fixed-block-start-position);width:100%}.files-list[data-v-1f794bec]  .files-list__filters:not(:empty){padding-block:calc(var(--default-grid-baseline, 4px)/2)}.files-list[data-v-1f794bec]  .files-list__thead-overlay{position:sticky;top:var(--fixed-block-start-position);margin-inline-start:var(--row-height);z-index:20;display:flex;align-items:center;background-color:var(--color-main-background);border-block-end:1px solid var(--color-border);height:var(--row-height);flex:0 0 var(--row-height)}.files-list[data-v-1f794bec]  .files-list__thead,.files-list[data-v-1f794bec]  .files-list__tfoot{display:flex;flex-direction:column;width:100%;background-color:var(--color-main-background)}.files-list[data-v-1f794bec]  .files-list__thead{position:sticky;z-index:10;top:var(--fixed-block-start-position)}.files-list[data-v-1f794bec]  .files-list__empty{display:flex;flex-direction:column;align-items:center;justify-content:center;width:100%;height:100%}.files-list[data-v-1f794bec]  tr{position:relative;display:flex;align-items:center;width:100%;border-block-end:1px solid var(--color-border);box-sizing:border-box;user-select:none;height:var(--row-height)}.files-list[data-v-1f794bec]  td,.files-list[data-v-1f794bec]  th{display:flex;align-items:center;flex:0 0 auto;justify-content:start;width:var(--row-height);height:var(--row-height);margin:0;padding:0;color:var(--color-text-maxcontrast);border:none}.files-list[data-v-1f794bec]  td span,.files-list[data-v-1f794bec]  th span{overflow:hidden;white-space:nowrap;text-overflow:ellipsis}.files-list[data-v-1f794bec]  .files-list__row--failed{position:absolute;display:block;top:0;inset-inline:0;bottom:0;opacity:.1;z-index:-1;background:var(--color-error)}.files-list[data-v-1f794bec]  .files-list__row-checkbox{justify-content:center}.files-list[data-v-1f794bec]  .files-list__row-checkbox .checkbox-radio-switch{display:flex;justify-content:center;--icon-size: var(--checkbox-size)}.files-list[data-v-1f794bec]  .files-list__row-checkbox .checkbox-radio-switch label.checkbox-radio-switch__label{width:var(--clickable-area);height:var(--clickable-area);margin:0;padding:calc((var(--clickable-area) - var(--checkbox-size))/2)}.files-list[data-v-1f794bec]  .files-list__row-checkbox .checkbox-radio-switch .checkbox-radio-switch__icon{margin:0 !important}.files-list[data-v-1f794bec]  .files-list__row:hover,.files-list[data-v-1f794bec]  .files-list__row:focus,.files-list[data-v-1f794bec]  .files-list__row:active,.files-list[data-v-1f794bec]  .files-list__row--active,.files-list[data-v-1f794bec]  .files-list__row--dragover{background-color:var(--color-background-hover);--color-text-maxcontrast: var(--color-main-text)}.files-list[data-v-1f794bec]  .files-list__row:hover>*,.files-list[data-v-1f794bec]  .files-list__row:focus>*,.files-list[data-v-1f794bec]  .files-list__row:active>*,.files-list[data-v-1f794bec]  .files-list__row--active>*,.files-list[data-v-1f794bec]  .files-list__row--dragover>*{--color-border: var(--color-border-dark)}.files-list[data-v-1f794bec]  .files-list__row:hover .favorite-marker-icon svg path,.files-list[data-v-1f794bec]  .files-list__row:focus .favorite-marker-icon svg path,.files-list[data-v-1f794bec]  .files-list__row:active .favorite-marker-icon svg path,.files-list[data-v-1f794bec]  .files-list__row--active .favorite-marker-icon svg path,.files-list[data-v-1f794bec]  .files-list__row--dragover .favorite-marker-icon svg path{stroke:var(--color-background-hover)}.files-list[data-v-1f794bec]  .files-list__row--dragover *{pointer-events:none}.files-list[data-v-1f794bec]  .files-list__row-icon{position:relative;display:flex;overflow:visible;align-items:center;flex:0 0 var(--icon-preview-size);justify-content:center;width:var(--icon-preview-size);height:100%;margin-inline-end:var(--checkbox-padding);color:var(--color-primary-element)}.files-list[data-v-1f794bec]  .files-list__row-icon *{cursor:pointer}.files-list[data-v-1f794bec]  .files-list__row-icon>span{justify-content:flex-start}.files-list[data-v-1f794bec]  .files-list__row-icon>span:not(.files-list__row-icon-favorite) svg{width:var(--icon-preview-size);height:var(--icon-preview-size)}.files-list[data-v-1f794bec]  .files-list__row-icon>span.folder-icon,.files-list[data-v-1f794bec]  .files-list__row-icon>span.folder-open-icon{margin:-3px}.files-list[data-v-1f794bec]  .files-list__row-icon>span.folder-icon svg,.files-list[data-v-1f794bec]  .files-list__row-icon>span.folder-open-icon svg{width:calc(var(--icon-preview-size) + 6px);height:calc(var(--icon-preview-size) + 6px)}.files-list[data-v-1f794bec]  .files-list__row-icon-preview-container{position:relative;overflow:hidden;width:var(--icon-preview-size);height:var(--icon-preview-size);border-radius:var(--border-radius)}.files-list[data-v-1f794bec]  .files-list__row-icon-blurhash{position:absolute;inset-block-start:0;inset-inline-start:0;height:100%;width:100%;object-fit:cover}.files-list[data-v-1f794bec]  .files-list__row-icon-preview{object-fit:contain;object-position:center;height:100%;width:100%}.files-list[data-v-1f794bec]  .files-list__row-icon-preview:not(.files-list__row-icon-preview--loaded){background:var(--color-loading-dark)}.files-list[data-v-1f794bec]  .files-list__row-icon-favorite{position:absolute;top:0px;inset-inline-end:-10px}.files-list[data-v-1f794bec]  .files-list__row-icon-overlay{position:absolute;max-height:calc(var(--icon-preview-size)*.6);max-width:calc(var(--icon-preview-size)*.6);color:var(--color-primary-element-text);margin-block-start:2px}.files-list[data-v-1f794bec]  .files-list__row-icon-overlay--file{color:var(--color-main-text);background:var(--color-main-background);border-radius:100%}.files-list[data-v-1f794bec]  .files-list__row-name{overflow:hidden;flex:1 1 auto}.files-list[data-v-1f794bec]  .files-list__row-name button.files-list__row-name-link{display:flex;align-items:center;text-align:start;width:100%;height:100%;min-width:0;margin:0;padding:0}.files-list[data-v-1f794bec]  .files-list__row-name button.files-list__row-name-link:focus-visible{outline:none !important}.files-list[data-v-1f794bec]  .files-list__row-name button.files-list__row-name-link:focus .files-list__row-name-text{outline:var(--border-width-input-focused) solid var(--color-main-text) !important;border-radius:var(--border-radius-element)}.files-list[data-v-1f794bec]  .files-list__row-name button.files-list__row-name-link:focus:not(:focus-visible) .files-list__row-name-text{outline:none !important}.files-list[data-v-1f794bec]  .files-list__row-name .files-list__row-name-text{color:var(--color-main-text);padding:var(--default-grid-baseline) calc(2*var(--default-grid-baseline));padding-inline-start:-10px;display:inline-flex}.files-list[data-v-1f794bec]  .files-list__row-name .files-list__row-name-ext{color:var(--color-text-maxcontrast);overflow:visible}.files-list[data-v-1f794bec]  .files-list__row-rename{width:100%;max-width:600px}.files-list[data-v-1f794bec]  .files-list__row-rename input{width:100%;margin-inline-start:-8px;padding:2px 6px;border-width:2px}.files-list[data-v-1f794bec]  .files-list__row-rename input:invalid{border-color:var(--color-border-error);color:var(--color-text-error)}.files-list[data-v-1f794bec]  .files-list__row-actions{width:auto}.files-list[data-v-1f794bec]  .files-list__row-actions~td,.files-list[data-v-1f794bec]  .files-list__row-actions~th{margin:0 var(--cell-margin)}.files-list[data-v-1f794bec]  .files-list__row-actions button .button-vue__text{font-weight:normal}.files-list[data-v-1f794bec]  .files-list__row-action--inline{margin-inline-end:7px}.files-list[data-v-1f794bec]  .files-list__row-mime,.files-list[data-v-1f794bec]  .files-list__row-mtime,.files-list[data-v-1f794bec]  .files-list__row-size{color:var(--color-text-maxcontrast)}.files-list[data-v-1f794bec]  .files-list__row-size{width:calc(var(--row-height)*2);justify-content:flex-end}.files-list[data-v-1f794bec]  .files-list__row-mtime{width:calc(var(--row-height)*2.5)}.files-list[data-v-1f794bec]  .files-list__row-mime{width:calc(var(--row-height)*3.5)}.files-list[data-v-1f794bec]  .files-list__row-column-custom{width:calc(var(--row-height)*2.5)}@media screen and (max-width: 512px){.files-list[data-v-1f794bec] .files-list__filters{padding-inline:var(--default-grid-baseline, 4px)}}`, \"\",{\"version\":3,\"sources\":[\"webpack://./apps/files/src/components/FilesListVirtual.vue\"],\"names\":[],\"mappings\":\"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\",\"sourcesContent\":[\"\\n.files-list {\\n\\t--row-height: 44px;\\n\\t--cell-margin: 14px;\\n\\n\\t--checkbox-padding: calc((var(--row-height) - var(--checkbox-size)) / 2);\\n\\t--checkbox-size: 24px;\\n\\t--clickable-area: var(--default-clickable-area);\\n\\t--icon-preview-size: 24px;\\n\\n\\t--fixed-block-start-position: calc(var(--clickable-area-small) + var(--default-grid-baseline, 4px));\\n\\tdisplay: flex;\\n\\tflex-direction: column;\\n\\toverflow: auto;\\n\\theight: 100%;\\n\\twill-change: scroll-position;\\n\\n\\t&:has(&__filters:empty) {\\n\\t\\t--fixed-block-start-position: 0px;\\n\\t}\\n\\n\\t& :deep() {\\n\\t\\t// Table head, body and footer\\n\\t\\ttbody {\\n\\t\\t\\twill-change: padding;\\n\\t\\t\\tcontain: layout paint style;\\n\\t\\t\\tdisplay: flex;\\n\\t\\t\\tflex-direction: column;\\n\\t\\t\\twidth: 100%;\\n\\t\\t\\t// Necessary for virtual scrolling absolute\\n\\t\\t\\tposition: relative;\\n\\n\\t\\t\\t/* Hover effect on tbody lines only */\\n\\t\\t\\ttr {\\n\\t\\t\\t\\tcontain: strict;\\n\\t\\t\\t\\t&:hover,\\n\\t\\t\\t\\t&:focus {\\n\\t\\t\\t\\t\\tbackground-color: var(--color-background-dark);\\n\\t\\t\\t\\t}\\n\\t\\t\\t}\\n\\t\\t}\\n\\n\\t\\t// Before table and thead\\n\\t\\t.files-list__before {\\n\\t\\t\\tdisplay: flex;\\n\\t\\t\\tflex-direction: column;\\n\\t\\t}\\n\\n\\t\\t.files-list__selected {\\n\\t\\t\\tpadding-inline-end: 12px;\\n\\t\\t\\twhite-space: nowrap;\\n\\t\\t\\tfont-variant-numeric: tabular-nums;\\n\\t\\t}\\n\\n\\t\\t.files-list__table {\\n\\t\\t\\tdisplay: block;\\n\\n\\t\\t\\t&.files-list__table--with-thead-overlay {\\n\\t\\t\\t\\t// Hide the table header below the overlay\\n\\t\\t\\t\\tmargin-block-start: calc(-1 * var(--row-height));\\n\\t\\t\\t}\\n\\n\\t\\t\\t// Visually hide the table when there are no files\\n\\t\\t\\t&--hidden {\\n\\t\\t\\t\\tvisibility: hidden;\\n\\t\\t\\t\\tz-index: -1;\\n\\t\\t\\t\\topacity: 0;\\n\\t\\t\\t}\\n\\t\\t}\\n\\n\\t\\t.files-list__filters {\\n\\t\\t\\tdisplay: flex;\\n\\t\\t\\tgap: var(--default-grid-baseline);\\n\\t\\t\\tbox-sizing: border-box;\\n\\n\\t\\t\\t// Pinned on top when scrolling above table header\\n\\t\\t\\tposition: sticky;\\n\\t\\t\\ttop: 0;\\n\\t\\t\\t// ensure there is a background to hide the file list on scroll\\n\\t\\t\\tbackground-color: var(--color-main-background);\\n\\t\\t\\tz-index: 10;\\n\\t\\t\\t// fixed the size\\n\\t\\t\\tpadding-inline: var(--row-height) var(--default-grid-baseline, 4px);\\n\\t\\t\\theight: var(--fixed-block-start-position);\\n\\t\\t\\twidth: 100%;\\n\\n\\t\\t\\t&:not(:empty) {\\n\\t\\t\\t\\tpadding-block: calc(var(--default-grid-baseline, 4px) / 2);\\n\\t\\t\\t}\\n\\t\\t}\\n\\n\\t\\t.files-list__thead-overlay {\\n\\t\\t\\t// Pinned on top when scrolling\\n\\t\\t\\tposition: sticky;\\n\\t\\t\\ttop: var(--fixed-block-start-position);\\n\\t\\t\\t// Save space for a row checkbox\\n\\t\\t\\tmargin-inline-start: var(--row-height);\\n\\t\\t\\t// More than .files-list__thead\\n\\t\\t\\tz-index: 20;\\n\\n\\t\\t\\tdisplay: flex;\\n\\t\\t\\talign-items: center;\\n\\n\\t\\t\\t// Reuse row styles\\n\\t\\t\\tbackground-color: var(--color-main-background);\\n\\t\\t\\tborder-block-end: 1px solid var(--color-border);\\n\\t\\t\\theight: var(--row-height);\\n\\t\\t\\tflex: 0 0 var(--row-height);\\n\\t\\t}\\n\\n\\t\\t.files-list__thead,\\n\\t\\t.files-list__tfoot {\\n\\t\\t\\tdisplay: flex;\\n\\t\\t\\tflex-direction: column;\\n\\t\\t\\twidth: 100%;\\n\\t\\t\\tbackground-color: var(--color-main-background);\\n\\t\\t}\\n\\n\\t\\t// Table header\\n\\t\\t.files-list__thead {\\n\\t\\t\\t// Pinned on top when scrolling\\n\\t\\t\\tposition: sticky;\\n\\t\\t\\tz-index: 10;\\n\\t\\t\\ttop: var(--fixed-block-start-position);\\n\\t\\t}\\n\\n\\t\\t// Empty content\\n\\t\\t.files-list__empty {\\n\\t\\t\\tdisplay: flex;\\n\\t\\t\\tflex-direction: column;\\n\\t\\t\\talign-items: center;\\n\\t\\t\\tjustify-content: center;\\n\\t\\t\\twidth: 100%;\\n\\t\\t\\theight: 100%;\\n\\t\\t}\\n\\n\\t\\ttr {\\n\\t\\t\\tposition: relative;\\n\\t\\t\\tdisplay: flex;\\n\\t\\t\\talign-items: center;\\n\\t\\t\\twidth: 100%;\\n\\t\\t\\tborder-block-end: 1px solid var(--color-border);\\n\\t\\t\\tbox-sizing: border-box;\\n\\t\\t\\tuser-select: none;\\n\\t\\t\\theight: var(--row-height);\\n\\t\\t}\\n\\n\\t\\ttd, th {\\n\\t\\t\\tdisplay: flex;\\n\\t\\t\\talign-items: center;\\n\\t\\t\\tflex: 0 0 auto;\\n\\t\\t\\tjustify-content: start;\\n\\t\\t\\twidth: var(--row-height);\\n\\t\\t\\theight: var(--row-height);\\n\\t\\t\\tmargin: 0;\\n\\t\\t\\tpadding: 0;\\n\\t\\t\\tcolor: var(--color-text-maxcontrast);\\n\\t\\t\\tborder: none;\\n\\n\\t\\t\\t// Columns should try to add any text\\n\\t\\t\\t// node wrapped in a span. That should help\\n\\t\\t\\t// with the ellipsis on overflow.\\n\\t\\t\\tspan {\\n\\t\\t\\t\\toverflow: hidden;\\n\\t\\t\\t\\twhite-space: nowrap;\\n\\t\\t\\t\\ttext-overflow: ellipsis;\\n\\t\\t\\t}\\n\\t\\t}\\n\\n\\t\\t.files-list__row--failed {\\n\\t\\t\\tposition: absolute;\\n\\t\\t\\tdisplay: block;\\n\\t\\t\\ttop: 0;\\n\\t\\t\\tinset-inline: 0;\\n\\t\\t\\tbottom: 0;\\n\\t\\t\\topacity: .1;\\n\\t\\t\\tz-index: -1;\\n\\t\\t\\tbackground: var(--color-error);\\n\\t\\t}\\n\\n\\t\\t.files-list__row-checkbox {\\n\\t\\t\\tjustify-content: center;\\n\\n\\t\\t\\t.checkbox-radio-switch {\\n\\t\\t\\t\\tdisplay: flex;\\n\\t\\t\\t\\tjustify-content: center;\\n\\n\\t\\t\\t\\t--icon-size: var(--checkbox-size);\\n\\n\\t\\t\\t\\tlabel.checkbox-radio-switch__label {\\n\\t\\t\\t\\t\\twidth: var(--clickable-area);\\n\\t\\t\\t\\t\\theight: var(--clickable-area);\\n\\t\\t\\t\\t\\tmargin: 0;\\n\\t\\t\\t\\t\\tpadding: calc((var(--clickable-area) - var(--checkbox-size)) / 2);\\n\\t\\t\\t\\t}\\n\\n\\t\\t\\t\\t.checkbox-radio-switch__icon {\\n\\t\\t\\t\\t\\tmargin: 0 !important;\\n\\t\\t\\t\\t}\\n\\t\\t\\t}\\n\\t\\t}\\n\\n\\t\\t.files-list__row {\\n\\t\\t\\t&:hover, &:focus, &:active, &--active, &--dragover {\\n\\t\\t\\t\\t// WCAG AA compliant\\n\\t\\t\\t\\tbackground-color: var(--color-background-hover);\\n\\t\\t\\t\\t// text-maxcontrast have been designed to pass WCAG AA over\\n\\t\\t\\t\\t// a white background, we need to adjust then.\\n\\t\\t\\t\\t--color-text-maxcontrast: var(--color-main-text);\\n\\t\\t\\t\\t> * {\\n\\t\\t\\t\\t\\t--color-border: var(--color-border-dark);\\n\\t\\t\\t\\t}\\n\\n\\t\\t\\t\\t// Hover state of the row should also change the favorite markers background\\n\\t\\t\\t\\t.favorite-marker-icon svg path {\\n\\t\\t\\t\\t\\tstroke: var(--color-background-hover);\\n\\t\\t\\t\\t}\\n\\t\\t\\t}\\n\\n\\t\\t\\t&--dragover * {\\n\\t\\t\\t\\t// Prevent dropping on row children\\n\\t\\t\\t\\tpointer-events: none;\\n\\t\\t\\t}\\n\\t\\t}\\n\\n\\t\\t// Entry preview or mime icon\\n\\t\\t.files-list__row-icon {\\n\\t\\t\\tposition: relative;\\n\\t\\t\\tdisplay: flex;\\n\\t\\t\\toverflow: visible;\\n\\t\\t\\talign-items: center;\\n\\t\\t\\t// No shrinking or growing allowed\\n\\t\\t\\tflex: 0 0 var(--icon-preview-size);\\n\\t\\t\\tjustify-content: center;\\n\\t\\t\\twidth: var(--icon-preview-size);\\n\\t\\t\\theight: 100%;\\n\\t\\t\\t// Show same padding as the checkbox right padding for visual balance\\n\\t\\t\\tmargin-inline-end: var(--checkbox-padding);\\n\\t\\t\\tcolor: var(--color-primary-element);\\n\\n\\t\\t\\t// Icon is also clickable\\n\\t\\t\\t* {\\n\\t\\t\\t\\tcursor: pointer;\\n\\t\\t\\t}\\n\\n\\t\\t\\t& > span {\\n\\t\\t\\t\\tjustify-content: flex-start;\\n\\n\\t\\t\\t\\t&:not(.files-list__row-icon-favorite) svg {\\n\\t\\t\\t\\t\\twidth: var(--icon-preview-size);\\n\\t\\t\\t\\t\\theight: var(--icon-preview-size);\\n\\t\\t\\t\\t}\\n\\n\\t\\t\\t\\t// Slightly increase the size of the folder icon\\n\\t\\t\\t\\t&.folder-icon,\\n\\t\\t\\t\\t&.folder-open-icon {\\n\\t\\t\\t\\t\\tmargin: -3px;\\n\\t\\t\\t\\t\\tsvg {\\n\\t\\t\\t\\t\\t\\twidth: calc(var(--icon-preview-size) + 6px);\\n\\t\\t\\t\\t\\t\\theight: calc(var(--icon-preview-size) + 6px);\\n\\t\\t\\t\\t\\t}\\n\\t\\t\\t\\t}\\n\\t\\t\\t}\\n\\n\\t\\t\\t&-preview-container {\\n\\t\\t\\t\\tposition: relative; // Needed for the blurshash to be positioned correctly\\n\\t\\t\\t\\toverflow: hidden;\\n\\t\\t\\t\\twidth: var(--icon-preview-size);\\n\\t\\t\\t\\theight: var(--icon-preview-size);\\n\\t\\t\\t\\tborder-radius: var(--border-radius);\\n\\t\\t\\t}\\n\\n\\t\\t\\t&-blurhash {\\n\\t\\t\\t\\tposition: absolute;\\n\\t\\t\\t\\tinset-block-start: 0;\\n\\t\\t\\t\\tinset-inline-start: 0;\\n\\t\\t\\t\\theight: 100%;\\n\\t\\t\\t\\twidth: 100%;\\n\\t\\t\\t\\tobject-fit: cover;\\n\\t\\t\\t}\\n\\n\\t\\t\\t&-preview {\\n\\t\\t\\t\\t// Center and contain the preview\\n\\t\\t\\t\\tobject-fit: contain;\\n\\t\\t\\t\\tobject-position: center;\\n\\n\\t\\t\\t\\theight: 100%;\\n\\t\\t\\t\\twidth: 100%;\\n\\n\\t\\t\\t\\t/* Preview not loaded animation effect */\\n\\t\\t\\t\\t&:not(.files-list__row-icon-preview--loaded) {\\n\\t\\t\\t\\t\\tbackground: var(--color-loading-dark);\\n\\t\\t\\t\\t\\t// animation: preview-gradient-fade 1.2s ease-in-out infinite;\\n\\t\\t\\t\\t}\\n\\t\\t\\t}\\n\\n\\t\\t\\t&-favorite {\\n\\t\\t\\t\\tposition: absolute;\\n\\t\\t\\t\\ttop: 0px;\\n\\t\\t\\t\\tinset-inline-end: -10px;\\n\\t\\t\\t}\\n\\n\\t\\t\\t// File and folder overlay\\n\\t\\t\\t&-overlay {\\n\\t\\t\\t\\tposition: absolute;\\n\\t\\t\\t\\tmax-height: calc(var(--icon-preview-size) * 0.6);\\n\\t\\t\\t\\tmax-width: calc(var(--icon-preview-size) * 0.6);\\n\\t\\t\\t\\tcolor: var(--color-primary-element-text);\\n\\t\\t\\t\\t// better alignment with the folder icon\\n\\t\\t\\t\\tmargin-block-start: 2px;\\n\\n\\t\\t\\t\\t// Improve icon contrast with a background for files\\n\\t\\t\\t\\t&--file {\\n\\t\\t\\t\\t\\tcolor: var(--color-main-text);\\n\\t\\t\\t\\t\\tbackground: var(--color-main-background);\\n\\t\\t\\t\\t\\tborder-radius: 100%;\\n\\t\\t\\t\\t}\\n\\t\\t\\t}\\n\\t\\t}\\n\\n\\t\\t// Entry link\\n\\t\\t.files-list__row-name {\\n\\t\\t\\t// Prevent link from overflowing\\n\\t\\t\\toverflow: hidden;\\n\\t\\t\\t// Take as much space as possible\\n\\t\\t\\tflex: 1 1 auto;\\n\\n\\t\\t\\tbutton.files-list__row-name-link {\\n\\t\\t\\t\\tdisplay: flex;\\n\\t\\t\\t\\talign-items: center;\\n\\t\\t\\t\\ttext-align: start;\\n\\t\\t\\t\\t// Fill cell height and width\\n\\t\\t\\t\\twidth: 100%;\\n\\t\\t\\t\\theight: 100%;\\n\\t\\t\\t\\t// Necessary for flex grow to work\\n\\t\\t\\t\\tmin-width: 0;\\n\\t\\t\\t\\tmargin: 0;\\n\\t\\t\\t\\tpadding: 0;\\n\\n\\t\\t\\t\\t// Already added to the inner text, see rule below\\n\\t\\t\\t\\t&:focus-visible {\\n\\t\\t\\t\\t\\toutline: none !important;\\n\\t\\t\\t\\t}\\n\\n\\t\\t\\t\\t// Keyboard indicator a11y\\n\\t\\t\\t\\t&:focus .files-list__row-name-text {\\n\\t\\t\\t\\t\\toutline: var(--border-width-input-focused) solid var(--color-main-text) !important;\\n\\t\\t\\t\\t\\tborder-radius: var(--border-radius-element);\\n\\t\\t\\t\\t}\\n\\t\\t\\t\\t&:focus:not(:focus-visible) .files-list__row-name-text {\\n\\t\\t\\t\\t\\toutline: none !important;\\n\\t\\t\\t\\t}\\n\\t\\t\\t}\\n\\n\\t\\t\\t.files-list__row-name-text {\\n\\t\\t\\t\\tcolor: var(--color-main-text);\\n\\t\\t\\t\\t// Make some space for the outline\\n\\t\\t\\t\\tpadding: var(--default-grid-baseline) calc(2 * var(--default-grid-baseline));\\n\\t\\t\\t\\tpadding-inline-start: -10px;\\n\\t\\t\\t\\t// Align two name and ext\\n\\t\\t\\t\\tdisplay: inline-flex;\\n\\t\\t\\t}\\n\\n\\t\\t\\t.files-list__row-name-ext {\\n\\t\\t\\t\\tcolor: var(--color-text-maxcontrast);\\n\\t\\t\\t\\t// always show the extension\\n\\t\\t\\t\\toverflow: visible;\\n\\t\\t\\t}\\n\\t\\t}\\n\\n\\t\\t// Rename form\\n\\t\\t.files-list__row-rename {\\n\\t\\t\\twidth: 100%;\\n\\t\\t\\tmax-width: 600px;\\n\\t\\t\\tinput {\\n\\t\\t\\t\\twidth: 100%;\\n\\t\\t\\t\\t// Align with text, 0 - padding - border\\n\\t\\t\\t\\tmargin-inline-start: -8px;\\n\\t\\t\\t\\tpadding: 2px 6px;\\n\\t\\t\\t\\tborder-width: 2px;\\n\\n\\t\\t\\t\\t&:invalid {\\n\\t\\t\\t\\t\\t// Show red border on invalid input\\n\\t\\t\\t\\t\\tborder-color: var(--color-border-error);\\n\\t\\t\\t\\t\\tcolor: var(--color-text-error);\\n\\t\\t\\t\\t}\\n\\t\\t\\t}\\n\\t\\t}\\n\\n\\t\\t.files-list__row-actions {\\n\\t\\t\\t// take as much space as necessary\\n\\t\\t\\twidth: auto;\\n\\n\\t\\t\\t// Add margin to all cells after the actions\\n\\t\\t\\t& ~ td,\\n\\t\\t\\t& ~ th {\\n\\t\\t\\t\\tmargin: 0 var(--cell-margin);\\n\\t\\t\\t}\\n\\n\\t\\t\\tbutton {\\n\\t\\t\\t\\t.button-vue__text {\\n\\t\\t\\t\\t\\t// Remove bold from default button styling\\n\\t\\t\\t\\t\\tfont-weight: normal;\\n\\t\\t\\t\\t}\\n\\t\\t\\t}\\n\\t\\t}\\n\\n\\t\\t.files-list__row-action--inline {\\n\\t\\t\\tmargin-inline-end: 7px;\\n\\t\\t}\\n\\n\\t\\t.files-list__row-mime,\\n\\t\\t.files-list__row-mtime,\\n\\t\\t.files-list__row-size {\\n\\t\\t\\tcolor: var(--color-text-maxcontrast);\\n\\t\\t}\\n\\n\\t\\t.files-list__row-size {\\n\\t\\t\\twidth: calc(var(--row-height) * 2);\\n\\t\\t\\t// Right align content/text\\n\\t\\t\\tjustify-content: flex-end;\\n\\t\\t}\\n\\n\\t\\t.files-list__row-mtime {\\n\\t\\t\\twidth: calc(var(--row-height) * 2.5);\\n\\t\\t}\\n\\n\\t\\t.files-list__row-mime {\\n\\t\\t\\twidth: calc(var(--row-height) * 3.5);\\n\\t\\t}\\n\\n\\t\\t.files-list__row-column-custom {\\n\\t\\t\\twidth: calc(var(--row-height) * 2.5);\\n\\t\\t}\\n\\t}\\n}\\n\\n@media screen and (max-width: 512px) {\\n\\t.files-list :deep(.files-list__filters) {\\n\\t\\t// Reduce padding on mobile\\n\\t\\tpadding-inline: var(--default-grid-baseline, 4px);\\n\\t}\\n}\\n\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_SOURCEMAP_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/sourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, `.files-list--grid tbody.files-list__tbody{--item-padding: 16px;--icon-preview-size: 166px;--name-height: var(--default-clickable-area);--mtime-height: calc(var(--font-size-small) + var(--default-grid-baseline));--row-width: calc(var(--icon-preview-size) + var(--item-padding) * 2);--row-height: calc(var(--icon-preview-size) + var(--name-height) + var(--mtime-height) + var(--item-padding) * 2);--checkbox-padding: 0px;display:grid;grid-template-columns:repeat(auto-fill, var(--row-width));align-content:center;align-items:center;justify-content:space-around;justify-items:center}.files-list--grid tbody.files-list__tbody tr{display:flex;flex-direction:column;width:var(--row-width);height:var(--row-height);border:none;border-radius:var(--border-radius-large);padding:var(--item-padding)}.files-list--grid tbody.files-list__tbody .files-list__row-checkbox{position:absolute;z-index:9;top:calc(var(--item-padding)/2);inset-inline-start:calc(var(--item-padding)/2);overflow:hidden;--checkbox-container-size: 44px;width:var(--checkbox-container-size);height:var(--checkbox-container-size)}.files-list--grid tbody.files-list__tbody .files-list__row-checkbox .checkbox-radio-switch__content::after{content:\"\";width:16px;height:16px;position:absolute;inset-inline-start:50%;margin-inline-start:-8px;z-index:-1;background:var(--color-main-background)}.files-list--grid tbody.files-list__tbody .files-list__row-icon-favorite{position:absolute;top:0;inset-inline-end:0;display:flex;align-items:center;justify-content:center;width:var(--clickable-area);height:var(--clickable-area)}.files-list--grid tbody.files-list__tbody .files-list__row-name{display:flex;flex-direction:column;width:var(--icon-preview-size);height:calc(var(--icon-preview-size) + var(--name-height));overflow:visible}.files-list--grid tbody.files-list__tbody .files-list__row-name span.files-list__row-icon{width:var(--icon-preview-size);height:var(--icon-preview-size)}.files-list--grid tbody.files-list__tbody .files-list__row-name .files-list__row-name-text{margin:0;margin-inline-start:-4px;padding:0px 4px}.files-list--grid tbody.files-list__tbody .files-list__row-mtime{width:var(--icon-preview-size);height:var(--mtime-height);font-size:var(--font-size-small)}.files-list--grid tbody.files-list__tbody .files-list__row-actions{position:absolute;inset-inline-end:calc(var(--clickable-area)/4);inset-block-end:calc(var(--mtime-height)/2);width:var(--clickable-area);height:var(--clickable-area)}@media screen and (max-width: 768px){.files-list--grid tbody.files-list__tbody{--mtime-height: 0px}.files-list--grid tbody.files-list__tbody .files-list__row-actions{inset-block-end:var(--item-padding)}.files-list--grid tbody.files-list__tbody .files-list__row-name-text{padding-inline-end:var(--clickable-area) !important}}`, \"\",{\"version\":3,\"sources\":[\"webpack://./apps/files/src/components/FilesListVirtual.vue\"],\"names\":[],\"mappings\":\"AAEA,0CACC,oBAAA,CACA,0BAAA,CACA,4CAAA,CACA,2EAAA,CACA,qEAAA,CACA,iHAAA,CACA,uBAAA,CACA,YAAA,CACA,yDAAA,CAEA,oBAAA,CACA,kBAAA,CACA,4BAAA,CACA,oBAAA,CAEA,6CACC,YAAA,CACA,qBAAA,CACA,sBAAA,CACA,wBAAA,CACA,WAAA,CACA,wCAAA,CACA,2BAAA,CAID,oEACC,iBAAA,CACA,SAAA,CACA,+BAAA,CACA,8CAAA,CACA,eAAA,CACA,+BAAA,CACA,oCAAA,CACA,qCAAA,CAGA,2GACC,UAAA,CACA,UAAA,CACA,WAAA,CACA,iBAAA,CACA,sBAAA,CACA,wBAAA,CACA,UAAA,CACA,uCAAA,CAKF,yEACC,iBAAA,CACA,KAAA,CACA,kBAAA,CACA,YAAA,CACA,kBAAA,CACA,sBAAA,CACA,2BAAA,CACA,4BAAA,CAGD,gEACC,YAAA,CACA,qBAAA,CACA,8BAAA,CACA,0DAAA,CAEA,gBAAA,CAEA,0FACC,8BAAA,CACA,+BAAA,CAGD,2FACC,QAAA,CAEA,wBAAA,CACA,eAAA,CAIF,iEACC,8BAAA,CACA,0BAAA,CACA,gCAAA,CAGD,mEACC,iBAAA,CACA,8CAAA,CACA,2CAAA,CACA,2BAAA,CACA,4BAAA,CAIF,qCAEC,0CACC,mBAAA,CAGA,mEACC,mCAAA,CAID,qEACC,mDAAA,CAAA\",\"sourcesContent\":[\"\\n// Grid mode\\n.files-list--grid tbody.files-list__tbody {\\n\\t--item-padding: 16px;\\n\\t--icon-preview-size: 166px;\\n\\t--name-height: var(--default-clickable-area);\\n\\t--mtime-height: calc(var(--font-size-small) + var(--default-grid-baseline));\\n\\t--row-width: calc(var(--icon-preview-size) + var(--item-padding) * 2);\\n\\t--row-height: calc(var(--icon-preview-size) + var(--name-height) + var(--mtime-height) + var(--item-padding) * 2);\\n\\t--checkbox-padding: 0px;\\n\\tdisplay: grid;\\n\\tgrid-template-columns: repeat(auto-fill, var(--row-width));\\n\\n\\talign-content: center;\\n\\talign-items: center;\\n\\tjustify-content: space-around;\\n\\tjustify-items: center;\\n\\n\\ttr {\\n\\t\\tdisplay: flex;\\n\\t\\tflex-direction: column;\\n\\t\\twidth: var(--row-width);\\n\\t\\theight: var(--row-height);\\n\\t\\tborder: none;\\n\\t\\tborder-radius: var(--border-radius-large);\\n\\t\\tpadding: var(--item-padding);\\n\\t}\\n\\n\\t// Checkbox in the top left\\n\\t.files-list__row-checkbox {\\n\\t\\tposition: absolute;\\n\\t\\tz-index: 9;\\n\\t\\ttop: calc(var(--item-padding) / 2);\\n\\t\\tinset-inline-start: calc(var(--item-padding) / 2);\\n\\t\\toverflow: hidden;\\n\\t\\t--checkbox-container-size: 44px;\\n\\t\\twidth: var(--checkbox-container-size);\\n\\t\\theight: var(--checkbox-container-size);\\n\\n\\t\\t// Add a background to the checkbox so we do not see the image through it.\\n\\t\\t.checkbox-radio-switch__content::after {\\n\\t\\t\\tcontent: '';\\n\\t\\t\\twidth: 16px;\\n\\t\\t\\theight: 16px;\\n\\t\\t\\tposition: absolute;\\n\\t\\t\\tinset-inline-start: 50%;\\n\\t\\t\\tmargin-inline-start: -8px;\\n\\t\\t\\tz-index: -1;\\n\\t\\t\\tbackground: var(--color-main-background);\\n\\t\\t}\\n\\t}\\n\\n\\t// Star icon in the top right\\n\\t.files-list__row-icon-favorite {\\n\\t\\tposition: absolute;\\n\\t\\ttop: 0;\\n\\t\\tinset-inline-end: 0;\\n\\t\\tdisplay: flex;\\n\\t\\talign-items: center;\\n\\t\\tjustify-content: center;\\n\\t\\twidth: var(--clickable-area);\\n\\t\\theight: var(--clickable-area);\\n\\t}\\n\\n\\t.files-list__row-name {\\n\\t\\tdisplay: flex;\\n\\t\\tflex-direction: column;\\n\\t\\twidth: var(--icon-preview-size);\\n\\t\\theight: calc(var(--icon-preview-size) + var(--name-height));\\n\\t\\t// Ensure that the name outline is visible.\\n\\t\\toverflow: visible;\\n\\n\\t\\tspan.files-list__row-icon {\\n\\t\\t\\twidth: var(--icon-preview-size);\\n\\t\\t\\theight: var(--icon-preview-size);\\n\\t\\t}\\n\\n\\t\\t.files-list__row-name-text {\\n\\t\\t\\tmargin: 0;\\n\\t\\t\\t// Ensure that the outline is not too close to the text.\\n\\t\\t\\tmargin-inline-start: -4px;\\n\\t\\t\\tpadding: 0px 4px;\\n\\t\\t}\\n\\t}\\n\\n\\t.files-list__row-mtime {\\n\\t\\twidth: var(--icon-preview-size);\\n\\t\\theight: var(--mtime-height);\\n\\t\\tfont-size: var(--font-size-small);\\n\\t}\\n\\n\\t.files-list__row-actions {\\n\\t\\tposition: absolute;\\n\\t\\tinset-inline-end: calc(var(--clickable-area) / 4);\\n\\t\\tinset-block-end: calc(var(--mtime-height) / 2);\\n\\t\\twidth: var(--clickable-area);\\n\\t\\theight: var(--clickable-area);\\n\\t}\\n}\\n\\n@media screen and (max-width: 768px) {\\n\\t// there is no mtime\\n\\t.files-list--grid tbody.files-list__tbody {\\n\\t\\t--mtime-height: 0px;\\n\\n\\t\\t// so we move the action to the name\\n\\t\\t.files-list__row-actions {\\n\\t\\t\\tinset-block-end: var(--item-padding);\\n\\t\\t}\\n\\n\\t\\t// and we need to keep space on the name for the actions\\n\\t\\t.files-list__row-name-text {\\n\\t\\t\\tpadding-inline-end: var(--clickable-area) !important;\\n\\t\\t}\\n\\t}\\n}\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_SOURCEMAP_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/sourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, `.app-navigation-entry__settings-quota[data-v-062ef4b2]{--app-navigation-quota-margin: calc((var(--default-clickable-area) - 24px) / 2)}.app-navigation-entry__settings-quota--not-unlimited[data-v-062ef4b2] .app-navigation-entry__name{line-height:1;margin-top:var(--app-navigation-quota-margin)}.app-navigation-entry__settings-quota progress[data-v-062ef4b2]{position:absolute;bottom:var(--app-navigation-quota-margin);margin-inline-start:var(--default-clickable-area);width:calc(100% - 1.5*var(--default-clickable-area))}`, \"\",{\"version\":3,\"sources\":[\"webpack://./apps/files/src/components/NavigationQuota.vue\"],\"names\":[],\"mappings\":\"AAEA,uDAEC,+EAAA,CAEA,kGACC,aAAA,CACA,6CAAA,CAGD,gEACC,iBAAA,CACA,yCAAA,CACA,iDAAA,CACA,oDAAA\",\"sourcesContent\":[\"\\n// User storage stats display\\n.app-navigation-entry__settings-quota {\\n\\t// Align title with progress and icon\\n\\t--app-navigation-quota-margin: calc((var(--default-clickable-area) - 24px) / 2); // 20px icon size and 4px progress bar\\n\\n\\t&--not-unlimited :deep(.app-navigation-entry__name) {\\n\\t\\tline-height: 1;\\n\\t\\tmargin-top: var(--app-navigation-quota-margin);\\n\\t}\\n\\n\\tprogress {\\n\\t\\tposition: absolute;\\n\\t\\tbottom: var(--app-navigation-quota-margin);\\n\\t\\tmargin-inline-start: var(--default-clickable-area);\\n\\t\\twidth: calc(100% - (1.5 * var(--default-clickable-area)));\\n\\t}\\n}\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_SOURCEMAP_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/sourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, `.toast-loading-icon{margin-inline-start:-4px;min-width:26px}.app-content[data-v-ed23df10]{display:flex;overflow:hidden;flex-direction:column;max-height:100%;position:relative !important}.files-list__header[data-v-ed23df10]{display:flex;gap:var(--default-grid-baseline);align-items:center;flex:0 0;max-width:100%;margin-block:var(--app-navigation-padding, 4px);margin-inline:calc(var(--default-clickable-area) + 2*var(--app-navigation-padding, 4px)) var(--app-navigation-padding, 4px)}.files-list__header--public[data-v-ed23df10]{margin-inline:0 var(--app-navigation-padding, 4px)}.files-list__header>*[data-v-ed23df10]{flex:0 0}.files-list__header-actions[data-v-ed23df10]{min-width:fit-content !important}.files-list__header-upload-button--narrow[data-v-ed23df10]{position:fixed;inset-block-end:calc(1.5*var(--default-grid-baseline));inset-inline-end:calc(1.5*var(--default-grid-baseline))}.files-list__before[data-v-ed23df10]{display:flex;flex-direction:column;gap:calc(var(--default-grid-baseline)*2);margin-inline:calc(var(--default-clickable-area) + 2*var(--app-navigation-padding))}.files-list__empty-view-wrapper[data-v-ed23df10]{display:flex;height:100%}.files-list__refresh-icon[data-v-ed23df10]{flex:0 0 var(--default-clickable-area);width:var(--default-clickable-area);height:var(--default-clickable-area)}.files-list__loading-icon[data-v-ed23df10]{margin:auto}`, \"\",{\"version\":3,\"sources\":[\"webpack://./apps/files/src/views/FilesList.vue\"],\"names\":[],\"mappings\":\"AACA,oBAEC,wBAAA,CAEA,cAAA,CAGD,8BAEC,YAAA,CACA,eAAA,CACA,qBAAA,CACA,eAAA,CACA,4BAAA,CAIA,qCACC,YAAA,CACA,gCAAA,CACA,kBAAA,CAEA,QAAA,CACA,cAAA,CAEA,+CAAA,CACA,2HAAA,CAEA,6CAEC,kDAAA,CAGD,uCAGC,QAAA,CAGD,6CACC,gCAAA,CAIF,2DAEC,cAAA,CACA,sDAAA,CACA,uDAAA,CAGD,qCACC,YAAA,CACA,qBAAA,CACA,wCAAA,CACA,mFAAA,CAGD,iDACC,YAAA,CACA,WAAA,CAGD,2CACC,sCAAA,CACA,mCAAA,CACA,oCAAA,CAGD,2CACC,WAAA\",\"sourcesContent\":[\"\\n:global(.toast-loading-icon) {\\n\\t// Reduce start margin (it was made for text but this is an icon)\\n\\tmargin-inline-start: -4px;\\n\\t// 16px icon + 5px on both sides\\n\\tmin-width: 26px;\\n}\\n\\n.app-content {\\n\\t// Virtual list needs to be full height and is scrollable\\n\\tdisplay: flex;\\n\\toverflow: hidden;\\n\\tflex-direction: column;\\n\\tmax-height: 100%;\\n\\tposition: relative !important;\\n}\\n\\n.files-list {\\n\\t&__header {\\n\\t\\tdisplay: flex;\\n\\t\\tgap: var(--default-grid-baseline);\\n\\t\\talign-items: center;\\n\\t\\t// Do not grow or shrink (vertically)\\n\\t\\tflex: 0 0;\\n\\t\\tmax-width: 100%;\\n\\t\\t// Align with the navigation toggle icon\\n\\t\\tmargin-block: var(--app-navigation-padding, 4px);\\n\\t\\tmargin-inline: calc(var(--default-clickable-area) + 2 * var(--app-navigation-padding, 4px)) var(--app-navigation-padding, 4px);\\n\\n\\t\\t&--public {\\n\\t\\t\\t// There is no navigation toggle on public shares\\n\\t\\t\\tmargin-inline: 0 var(--app-navigation-padding, 4px);\\n\\t\\t}\\n\\n\\t\\t>* {\\n\\t\\t\\t// Do not grow or shrink (horizontally)\\n\\t\\t\\t// Only the breadcrumbs shrinks\\n\\t\\t\\tflex: 0 0;\\n\\t\\t}\\n\\n\\t\\t&-actions {\\n\\t\\t\\tmin-width: fit-content !important;\\n\\t\\t}\\n\\t}\\n\\n\\t&__header-upload-button--narrow {\\n\\t\\t// this is teleported to body on narrow screens\\n\\t\\tposition: fixed;\\n\\t\\tinset-block-end: calc(1.5 * var(--default-grid-baseline));\\n\\t\\tinset-inline-end: calc(1.5 * var(--default-grid-baseline));\\n\\t}\\n\\n\\t&__before {\\n\\t\\tdisplay: flex;\\n\\t\\tflex-direction: column;\\n\\t\\tgap: calc(var(--default-grid-baseline) * 2);\\n\\t\\tmargin-inline: calc(var(--default-clickable-area) + 2 * var(--app-navigation-padding));\\n\\t}\\n\\n\\t&__empty-view-wrapper {\\n\\t\\tdisplay: flex;\\n\\t\\theight: 100%;\\n\\t}\\n\\n\\t&__refresh-icon {\\n\\t\\tflex: 0 0 var(--default-clickable-area);\\n\\t\\twidth: var(--default-clickable-area);\\n\\t\\theight: var(--default-clickable-area);\\n\\t}\\n\\n\\t&__loading-icon {\\n\\t\\tmargin: auto;\\n\\t}\\n}\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_SOURCEMAP_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/sourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, `.app-navigation[data-v-b3d7fbf2] .app-navigation-entry.active .button-vue.icon-collapse:not(:hover){color:var(--color-primary-element-text)}.app-navigation>ul.app-navigation__list[data-v-b3d7fbf2]{padding-bottom:var(--default-grid-baseline, 4px)}.app-navigation-entry__settings[data-v-b3d7fbf2]{height:auto !important;overflow:hidden !important;padding-top:0 !important;flex:0 0 auto}.files-navigation[data-v-b3d7fbf2] .app-navigation__content > ul.app-navigation__list{will-change:scroll-position}`, \"\",{\"version\":3,\"sources\":[\"webpack://./apps/files/src/views/FilesNavigation.vue\"],\"names\":[],\"mappings\":\"AAEC,oGACC,uCAAA,CAGD,yDAEC,gDAAA,CAIF,iDACC,sBAAA,CACA,0BAAA,CACA,wBAAA,CAEA,aAAA,CAIA,sFACC,2BAAA\",\"sourcesContent\":[\"\\n.app-navigation {\\n\\t:deep(.app-navigation-entry.active .button-vue.icon-collapse:not(:hover)) {\\n\\t\\tcolor: var(--color-primary-element-text);\\n\\t}\\n\\n\\t> ul.app-navigation__list {\\n\\t\\t// Use flex gap value for more elegant spacing\\n\\t\\tpadding-bottom: var(--default-grid-baseline, 4px);\\n\\t}\\n}\\n\\n.app-navigation-entry__settings {\\n\\theight: auto !important;\\n\\toverflow: hidden !important;\\n\\tpadding-top: 0 !important;\\n\\t// Prevent shrinking or growing\\n\\tflex: 0 0 auto;\\n}\\n\\n.files-navigation {\\n\\t:deep(.app-navigation__content > ul.app-navigation__list) {\\n\\t\\twill-change: scroll-position;\\n\\t}\\n}\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_SOURCEMAP_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/sourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, `.app-sidebar--has-preview[data-v-f91af60e] .app-sidebar-header__figure{background-size:cover}.app-sidebar--has-preview[data-v-f91af60e][data-mimetype=\"text/plain\"] .app-sidebar-header__figure,.app-sidebar--has-preview[data-v-f91af60e][data-mimetype=\"text/markdown\"] .app-sidebar-header__figure{background-size:contain}.app-sidebar--full[data-v-f91af60e]{position:fixed !important;z-index:2025 !important;top:0 !important;height:100% !important}.app-sidebar[data-v-f91af60e] .app-sidebar-header__description{margin:0 16px 4px 16px !important}.app-sidebar .svg-icon[data-v-f91af60e] svg{width:20px;height:20px;fill:currentColor}.sidebar__description[data-v-f91af60e]{display:flex;flex-direction:column;width:100%;gap:8px 0}`, \"\",{\"version\":3,\"sources\":[\"webpack://./apps/files/src/views/FilesSidebar.vue\"],\"names\":[],\"mappings\":\"AAGE,uEACC,qBAAA,CAKA,yMACC,uBAAA,CAKH,oCACC,yBAAA,CACA,uBAAA,CACA,gBAAA,CACA,sBAAA,CAIA,+DACC,iCAAA,CAKD,4CACC,UAAA,CACA,WAAA,CACA,iBAAA,CAKH,uCACE,YAAA,CACA,qBAAA,CACA,UAAA,CACA,SAAA\",\"sourcesContent\":[\"\\n.app-sidebar {\\n\\t&--has-preview:deep {\\n\\t\\t.app-sidebar-header__figure {\\n\\t\\t\\tbackground-size: cover;\\n\\t\\t}\\n\\n\\t\\t&[data-mimetype=\\\"text/plain\\\"],\\n\\t\\t&[data-mimetype=\\\"text/markdown\\\"] {\\n\\t\\t\\t.app-sidebar-header__figure {\\n\\t\\t\\t\\tbackground-size: contain;\\n\\t\\t\\t}\\n\\t\\t}\\n\\t}\\n\\n\\t&--full {\\n\\t\\tposition: fixed !important;\\n\\t\\tz-index: 2025 !important;\\n\\t\\ttop: 0 !important;\\n\\t\\theight: 100% !important;\\n\\t}\\n\\n\\t:deep {\\n\\t\\t.app-sidebar-header__description {\\n\\t\\t\\tmargin: 0 16px 4px 16px !important;\\n\\t\\t}\\n\\t}\\n\\n\\t.svg-icon {\\n\\t\\t:deep(svg) {\\n\\t\\t\\twidth: 20px;\\n\\t\\t\\theight: 20px;\\n\\t\\t\\tfill: currentColor;\\n\\t\\t}\\n\\t}\\n}\\n\\n.sidebar__description {\\n\\t\\tdisplay: flex;\\n\\t\\tflex-direction: column;\\n\\t\\twidth: 100%;\\n\\t\\tgap: 8px 0;\\n\\t}\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_SOURCEMAP_IMPORT___ from \"../../../../../node_modules/css-loader/dist/runtime/sourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, `\n._fileListFilterChips_yBylg {\n\tdisplay: flex;\n\tgap: var(--default-grid-baseline);\n}\n`, \"\",{\"version\":3,\"sources\":[\"webpack://./apps/files/src/components/FileListFilter/FileListFilterChips.vue\"],\"names\":[],\"mappings\":\";AAwCA;CACA,aAAA;CACA,iCAAA;AACA\",\"sourcesContent\":[\"\\n\\n\\n\\n\\n\\n\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\n___CSS_LOADER_EXPORT___.locals = {\n\t\"fileListFilterChips\": `_fileListFilterChips_yBylg`\n};\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_SOURCEMAP_IMPORT___ from \"../../../../../node_modules/css-loader/dist/runtime/sourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, `\n._fileListFilters_dNswU {\n\tdisplay: flex;\n\tflex-direction: row;\n\tgap: var(--default-grid-baseline);\n\tmargin-inline-end: var(--default-grid-baseline);\n\theight: 100%;\n\twidth: 100%;\n}\n._fileListFilters__popoverFilterView_fJWbD {\n\tbox-sizing: border-box;\n\tdisplay: flex;\n\tflex-direction: column;\n\tgap: calc(2 * var(--default-grid-baseline));\n\tpadding: calc(var(--default-grid-baseline) / 2);\n\tmin-width: calc(7 * var(--default-clickable-area));\n}\n._fileListFilters__popoverContainer_A30Cl {\n\tbox-sizing: border-box;\n\tpadding: calc(var(--default-grid-baseline) / 2);\n\tmin-width: calc(7 * var(--default-clickable-area));\n}\n._fileListFilters__filter_bCU2H {\n\tdisplay: flex;\n\talign-items: start;\n\tjustify-content: start;\n\tgap: calc(var(--default-grid-baseline, 4px) * 2);\n> * {\n\t\tflex: 0 1 fit-content;\n}\n}\n._fileListFilters__active_ECsmY {\n\tdisplay: flex;\n\tflex-direction: row;\n\tgap: calc(var(--default-grid-baseline, 4px) * 2);\n}\n`, \"\",{\"version\":3,\"sources\":[\"webpack://./apps/files/src/components/FileListFilter/FileListFilters.vue\"],\"names\":[],\"mappings\":\";AAkGA;CACA,aAAA;CACA,mBAAA;CACA,iCAAA;CACA,+CAAA;CACA,YAAA;CACA,WAAA;AACA;AAEA;CACA,sBAAA;CACA,aAAA;CACA,sBAAA;CACA,2CAAA;CACA,+CAAA;CACA,kDAAA;AACA;AAEA;CACA,sBAAA;CACA,+CAAA;CACA,kDAAA;AACA;AAEA;CACA,aAAA;CACA,kBAAA;CACA,sBAAA;CACA,gDAAA;AAEA;EACA,qBAAA;AACA;AACA;AAEA;CACA,aAAA;CACA,mBAAA;CACA,gDAAA;AACA\",\"sourcesContent\":[\"\\n\\n\\n\\n\\n\\n\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\n___CSS_LOADER_EXPORT___.locals = {\n\t\"fileListFilters\": `_fileListFilters_dNswU`,\n\t\"fileListFilters__popoverFilterView\": `_fileListFilters__popoverFilterView_fJWbD`,\n\t\"fileListFilters__popoverContainer\": `_fileListFilters__popoverContainer_A30Cl`,\n\t\"fileListFilters__filter\": `_fileListFilters__filter_bCU2H`,\n\t\"fileListFilters__active\": `_fileListFilters__active_ECsmY`\n};\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_SOURCEMAP_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/sourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, `\n._filesNavigationList_MBZVA {\n\theight: 100%; /* Fill all available space for sticky views */\n}\n`, \"\",{\"version\":3,\"sources\":[\"webpack://./apps/files/src/components/FilesNavigationList.vue\"],\"names\":[],\"mappings\":\";AAsDA;CACA,YAAA,EAAA,8CAAA;AACA\",\"sourcesContent\":[\"\\n\\n\\n\\n\\n\\n\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\n___CSS_LOADER_EXPORT___.locals = {\n\t\"filesNavigationList\": `_filesNavigationList_MBZVA`\n};\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_SOURCEMAP_IMPORT___ from \"../../../../../node_modules/css-loader/dist/runtime/sourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, `\n._filesSidebarSubname_yXZVi {\n\tdisplay: flex;\n\talign-items: center;\n\tflex-wrap: wrap;\n\tgap: 0 8px;\n}\n._filesSidebarSubname__separator__OQUr {\n\tdisplay: inline-block;\n\tfont-weight: bold !important;\n}\n._filesSidebarSubname__userBubble_XTdWm {\n\tdisplay: inline-flex !important;\n}\n`, \"\",{\"version\":3,\"sources\":[\"webpack://./apps/files/src/components/FilesSidebar/FilesSidebarSubname.vue\"],\"names\":[],\"mappings\":\";AAiDA;CACA,aAAA;CACA,mBAAA;CACA,eAAA;CACA,UAAA;AACA;AAEA;CACA,qBAAA;CACA,4BAAA;AACA;AAEA;CACA,+BAAA;AACA\",\"sourcesContent\":[\"\\n\\n\\n\\n\\n\\n\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\n___CSS_LOADER_EXPORT___.locals = {\n\t\"filesSidebarSubname\": `_filesSidebarSubname_yXZVi`,\n\t\"filesSidebarSubname__separator\": `_filesSidebarSubname__separator__OQUr`,\n\t\"filesSidebarSubname__userBubble\": `_filesSidebarSubname__userBubble_XTdWm`\n};\nexport default ___CSS_LOADER_EXPORT___;\n","import { getCurrentUser, onRequestTokenUpdate, getRequestToken } from \"@nextcloud/auth\";\nimport { generateRemoteUrl } from \"@nextcloud/router\";\nimport { isPublicShare, getSharingToken } from \"@nextcloud/sharing/public\";\nimport { createClient, getPatcher } from \"webdav\";\nimport { P as Permission, s as scopedGlobals, l as logger, c as NodeStatus, a as File, b as Folder } from \"./chunks/folder-29HuacU_.mjs\";\nimport \"@nextcloud/paths\";\n/*!\n * SPDX-FileCopyrightText: 2023 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\nfunction parsePermissions(permString = \"\") {\n  let permissions = Permission.NONE;\n  if (!permString) {\n    return permissions;\n  }\n  if (permString.includes(\"G\")) {\n    permissions |= Permission.READ;\n  }\n  if (permString.includes(\"W\")) {\n    permissions |= Permission.WRITE;\n  }\n  if (permString.includes(\"CK\")) {\n    permissions |= Permission.CREATE;\n  }\n  if (permString.includes(\"NV\")) {\n    permissions |= Permission.UPDATE;\n  }\n  if (permString.includes(\"D\")) {\n    permissions |= Permission.DELETE;\n  }\n  if (permString.includes(\"R\")) {\n    permissions |= Permission.SHARE;\n  }\n  return permissions;\n}\nconst defaultDavProperties = [\n  \"d:getcontentlength\",\n  \"d:getcontenttype\",\n  \"d:getetag\",\n  \"d:getlastmodified\",\n  \"d:creationdate\",\n  \"d:displayname\",\n  \"d:quota-available-bytes\",\n  \"d:resourcetype\",\n  \"nc:has-preview\",\n  \"nc:is-encrypted\",\n  \"nc:mount-type\",\n  \"oc:comments-unread\",\n  \"oc:favorite\",\n  \"oc:fileid\",\n  \"oc:owner-display-name\",\n  \"oc:owner-id\",\n  \"oc:permissions\",\n  \"oc:size\"\n];\nconst defaultDavNamespaces = {\n  d: \"DAV:\",\n  nc: \"http://nextcloud.org/ns\",\n  oc: \"http://owncloud.org/ns\",\n  ocs: \"http://open-collaboration-services.org/ns\"\n};\nfunction registerDavProperty(prop, namespace = { nc: \"http://nextcloud.org/ns\" }) {\n  scopedGlobals.davNamespaces ??= { ...defaultDavNamespaces };\n  scopedGlobals.davProperties ??= [...defaultDavProperties];\n  const namespaces = { ...scopedGlobals.davNamespaces, ...namespace };\n  if (scopedGlobals.davProperties.find((search) => search === prop)) {\n    logger.warn(`${prop} already registered`, { prop });\n    return false;\n  }\n  if (prop.startsWith(\"<\") || prop.split(\":\").length !== 2) {\n    logger.error(`${prop} is not valid. See example: 'oc:fileid'`, { prop });\n    return false;\n  }\n  const ns = prop.split(\":\")[0];\n  if (!namespaces[ns]) {\n    logger.error(`${prop} namespace unknown`, { prop, namespaces });\n    return false;\n  }\n  scopedGlobals.davProperties.push(prop);\n  scopedGlobals.davNamespaces = namespaces;\n  return true;\n}\nfunction getDavProperties() {\n  scopedGlobals.davProperties ??= [...defaultDavProperties];\n  return scopedGlobals.davProperties.map((prop) => `<${prop} />`).join(\" \");\n}\nfunction getDavNameSpaces() {\n  scopedGlobals.davNamespaces ??= { ...defaultDavNamespaces };\n  return Object.keys(scopedGlobals.davNamespaces).map((ns) => `xmlns:${ns}=\"${scopedGlobals.davNamespaces?.[ns]}\"`).join(\" \");\n}\nfunction getDefaultPropfind() {\n  return `\n\t\t\n\t\t\t\n\t\t\t\t${getDavProperties()}\n\t\t\t\n\t\t`;\n}\nfunction getFavoritesReport() {\n  return `\n\t\t\n\t\t\t\n\t\t\t\t${getDavProperties()}\n\t\t\t\n\t\t\t\n\t\t\t\t1\n\t\t\t\n\t\t`;\n}\nfunction getRecentSearch(lastModified) {\n  return `\n\n\t\n\t\t\n\t\t\t\n\t\t\t\t${getDavProperties()}\n\t\t\t\n\t\t\n\t\t\n\t\t\t\n\t\t\t\t/files/${getCurrentUser()?.uid}/\n\t\t\t\tinfinity\n\t\t\t\n\t\t\n\t\t\n\t\t\t\n\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\thttpd/unix-directory\n\t\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\t0\n\t\t\t\t\t\n\t\t\t\t\n\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t${lastModified}\n\t\t\t\t\n\t\t\t\n\t\t\n\t\t\n\t\t\t\n\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\n\t\t\t\t\n\t\t\t\n\t\t\n\t\t\n\t\t\t100\n\t\t\t0\n\t\t\n\t\n`;\n}\nfunction getRootPath() {\n  if (isPublicShare()) {\n    return `/files/${getSharingToken()}`;\n  }\n  return `/files/${getCurrentUser()?.uid}`;\n}\nconst defaultRootPath = getRootPath();\nfunction getRemoteURL() {\n  const url = generateRemoteUrl(\"dav\");\n  if (isPublicShare()) {\n    return url.replace(\"remote.php\", \"public.php\");\n  }\n  return url;\n}\nconst defaultRemoteURL = getRemoteURL();\nfunction getClient(remoteURL = defaultRemoteURL, headers = {}) {\n  const client = createClient(remoteURL, { headers });\n  function setHeaders(token) {\n    client.setHeaders({\n      ...headers,\n      // Add this so the server knows it is an request from the browser\n      \"X-Requested-With\": \"XMLHttpRequest\",\n      // Inject user auth\n      requesttoken: token ?? \"\"\n    });\n  }\n  onRequestTokenUpdate(setHeaders);\n  setHeaders(getRequestToken());\n  const patcher = getPatcher();\n  patcher.patch(\"fetch\", (url, options) => {\n    const headers2 = options.headers;\n    if (headers2?.method) {\n      options.method = headers2.method;\n      delete headers2.method;\n    }\n    return fetch(url, options);\n  });\n  return client;\n}\nasync function getFavoriteNodes(options = {}) {\n  const client = options.client ?? getClient();\n  const path = options.path ?? \"/\";\n  const davRoot = options.davRoot ?? defaultRootPath;\n  const contentsResponse = await client.getDirectoryContents(`${davRoot}${path}`, {\n    signal: options.signal,\n    details: true,\n    data: getFavoritesReport(),\n    headers: {\n      // see getClient for patched webdav client\n      method: \"REPORT\"\n    },\n    includeSelf: true\n  });\n  return contentsResponse.data.filter((node) => node.filename !== path).map((result) => resultToNode(result, davRoot));\n}\nfunction resultToNode(node, filesRoot = defaultRootPath, remoteURL = defaultRemoteURL) {\n  let userId = getCurrentUser()?.uid;\n  if (isPublicShare()) {\n    userId = userId ?? \"anonymous\";\n  } else if (!userId) {\n    throw new Error(\"No user id found\");\n  }\n  const props = node.props;\n  const permissions = parsePermissions(props?.permissions);\n  const owner = String(props?.[\"owner-id\"] || userId);\n  const id = props.fileid || 0;\n  const mtime = new Date(Date.parse(node.lastmod));\n  const crtime = new Date(Date.parse(props.creationdate));\n  const nodeData = {\n    id,\n    source: `${remoteURL}${node.filename}`,\n    mtime: !isNaN(mtime.getTime()) && mtime.getTime() !== 0 ? mtime : void 0,\n    crtime: !isNaN(crtime.getTime()) && crtime.getTime() !== 0 ? crtime : void 0,\n    mime: node.mime || \"application/octet-stream\",\n    // Manually cast to work around for https://github.com/perry-mitchell/webdav-client/pull/380\n    displayname: props.displayname !== void 0 ? String(props.displayname) : void 0,\n    size: props?.size || Number.parseInt(props.getcontentlength || \"0\"),\n    // The fileid is set to -1 for failed requests\n    status: id < 0 ? NodeStatus.FAILED : void 0,\n    permissions,\n    owner,\n    root: filesRoot,\n    attributes: {\n      ...node,\n      ...props,\n      hasPreview: props?.[\"has-preview\"]\n    }\n  };\n  delete nodeData.attributes?.props;\n  return node.type === \"file\" ? new File(nodeData) : new Folder(nodeData);\n}\nexport {\n  defaultDavNamespaces,\n  defaultDavProperties,\n  defaultRemoteURL,\n  defaultRootPath,\n  getClient,\n  getDavNameSpaces,\n  getDavProperties,\n  getDefaultPropfind,\n  getFavoriteNodes,\n  getFavoritesReport,\n  getRecentSearch,\n  getRemoteURL,\n  getRootPath,\n  parsePermissions,\n  registerDavProperty,\n  resultToNode\n};\n//# sourceMappingURL=dav.mjs.map\n","import '../assets/index-BGmULkk-.css';\nimport { getSharingToken, isPublicShare } from \"@nextcloud/sharing/public\";\nimport { getCurrentUser } from \"@nextcloud/auth\";\nimport { formatFileSize, Folder, davRemoteURL, davRootPath, Permission, FileType, davGetClient, validateFilename, InvalidFilenameError, getUniqueName, getNewFileMenuEntries, NewMenuEntryCategory } from \"@nextcloud/files\";\nimport { basename, encodePath } from \"@nextcloud/paths\";\nimport { normalize } from \"path\";\nimport { getCapabilities } from \"@nextcloud/capabilities\";\nimport axios, { isCancel } from \"@nextcloud/axios\";\nimport PCancelable from \"p-cancelable\";\nimport PQueue from \"p-queue\";\nimport { getGettextBuilder } from \"@nextcloud/l10n/gettext\";\nimport { getBaseUrl, generateRemoteUrl } from \"@nextcloud/router\";\nimport axiosRetry, { exponentialDelay, isNetworkOrIdempotentRequestError } from \"axios-retry\";\nimport { getLoggerBuilder } from \"@nextcloud/logger\";\nimport { TypedEventTarget } from \"typescript-event-target\";\nimport Vue, { defineAsyncComponent, defineComponent } from \"vue\";\nimport { showInfo, showWarning } from \"@nextcloud/dialogs\";\nimport { spawnDialog } from \"@nextcloud/vue/functions/dialog\";\nimport { useHotKey } from \"@nextcloud/vue/dist/Composables/useHotKey.js\";\nimport NcActionButton from \"@nextcloud/vue/dist/Components/NcActionButton.js\";\nimport NcActionCaption from \"@nextcloud/vue/dist/Components/NcActionCaption.js\";\nimport NcActionSeparator from \"@nextcloud/vue/dist/Components/NcActionSeparator.js\";\nimport NcActions from \"@nextcloud/vue/dist/Components/NcActions.js\";\nimport NcButton from \"@nextcloud/vue/dist/Components/NcButton.js\";\nimport NcIconSvgWrapper from \"@nextcloud/vue/dist/Components/NcIconSvgWrapper.js\";\nimport NcProgressBar from \"@nextcloud/vue/dist/Components/NcProgressBar.js\";\nconst gtBuilder = getGettextBuilder().detectLocale();\n[{ \"locale\": \"af\", \"json\": { \"charset\": \"utf-8\", \"headers\": { \"Last-Translator\": \"Transifex Bot <>, 2022\", \"Language-Team\": \"Afrikaans (https://www.transifex.com/nextcloud/teams/64236/af/)\", \"Content-Type\": \"text/plain; charset=UTF-8\", \"Language\": \"af\", \"Plural-Forms\": \"nplurals=2; plural=(n != 1);\" }, \"translations\": { \"\": { \"\": { \"msgid\": \"\", \"comments\": { \"translator\": \"\\nTranslators:\\nTransifex Bot <>, 2022\\n\" }, \"msgstr\": [\"Last-Translator: Transifex Bot <>, 2022\\nLanguage-Team: Afrikaans (https://www.transifex.com/nextcloud/teams/64236/af/)\\nContent-Type: text/plain; charset=UTF-8\\nLanguage: af\\nPlural-Forms: nplurals=2; plural=(n != 1);\\n\"] }, \"{estimate} seconds left\": { \"msgid\": \"{estimate} seconds left\", \"msgstr\": [\"\"] }, \"{hours} hours and {minutes} minutes left\": { \"msgid\": \"{hours} hours and {minutes} minutes left\", \"msgstr\": [\"\"] }, \"{minutes} minutes left\": { \"msgid\": \"{minutes} minutes left\", \"msgstr\": [\"\"] }, \"a few seconds left\": { \"msgid\": \"a few seconds left\", \"msgstr\": [\"\"] }, \"Add\": { \"msgid\": \"Add\", \"msgstr\": [\"\"] }, \"Cancel uploads\": { \"msgid\": \"Cancel uploads\", \"msgstr\": [\"\"] }, \"estimating time left\": { \"msgid\": \"estimating time left\", \"msgstr\": [\"\"] }, \"paused\": { \"msgid\": \"paused\", \"msgstr\": [\"\"] } } } } }, { \"locale\": \"ar\", \"json\": { \"charset\": \"utf-8\", \"headers\": { \"Last-Translator\": \"Ali , 2025\", \"Language-Team\": \"Arabic (https://app.transifex.com/nextcloud/teams/64236/ar/)\", \"Content-Type\": \"text/plain; charset=UTF-8\", \"Language\": \"ar\", \"Plural-Forms\": \"nplurals=6; plural=n==0 ? 0 : n==1 ? 1 : n==2 ? 2 : n%100>=3 && n%100<=10 ? 3 : n%100>=11 && n%100<=99 ? 4 : 5;\" }, \"translations\": { \"\": { \"\": { \"msgid\": \"\", \"comments\": { \"translator\": \"\\nTranslators:\\nJoas Schilling, 2024\\nabu.s3ud, 2024\\nAli , 2025\\n\" }, \"msgstr\": [\"Last-Translator: Ali , 2025\\nLanguage-Team: Arabic (https://app.transifex.com/nextcloud/teams/64236/ar/)\\nContent-Type: text/plain; charset=UTF-8\\nLanguage: ar\\nPlural-Forms: nplurals=6; plural=n==0 ? 0 : n==1 ? 1 : n==2 ? 2 : n%100>=3 && n%100<=10 ? 3 : n%100>=11 && n%100<=99 ? 4 : 5;\\n\"] }, '\"{segment}\" is a forbidden file or folder name.': { \"msgid\": '\"{segment}\" is a forbidden file or folder name.', \"msgstr\": ['\"{segment}\" هو اسم ممنوع لملف أو مجلد.'] }, '\"{segment}\" is a forbidden file type.': { \"msgid\": '\"{segment}\" is a forbidden file type.', \"msgstr\": ['\"{segment}\" هو نوع ممنوع أن يكون لملف.'] }, '\"{segment}\" is not allowed inside a file or folder name.': { \"msgid\": '\"{segment}\" is not allowed inside a file or folder name.', \"msgstr\": ['\"{segment}\" هو غير مسموح به في اسم ملف أو مجلد.'] }, \"{count} file conflict\": { \"msgid\": \"{count} file conflict\", \"msgid_plural\": \"{count} files conflict\", \"msgstr\": [\"{count} ملف متعارض\", \"{count} ملف متعارض\", \"{count} ملفان متعارضان\", \"{count} ملف متعارض\", \"{count} ملفات متعارضة\", \"{count} ملفات متعارضة\"] }, \"{count} file conflict in {dirname}\": { \"msgid\": \"{count} file conflict in {dirname}\", \"msgid_plural\": \"{count} file conflicts in {dirname}\", \"msgstr\": [\"{count} ملف متعارض في {dirname}\", \"{count} ملف متعارض في {dirname}\", \"{count} ملفان متعارضان في {dirname}\", \"{count} ملف متعارض في {dirname}\", \"{count} ملفات متعارضة في {dirname}\", \"{count} ملفات متعارضة في {dirname}\"] }, \"{seconds} seconds left\": { \"msgid\": \"{seconds} seconds left\", \"msgid_plural\": \"{seconds} seconds left\", \"msgstr\": [\"مازال {seconds} ثوانٍ\", \"مازال {seconds} ثوانٍ\", \"مازال {seconds} ثوانٍ\", \"مازال {seconds} ثوانٍ\", \"مازال {seconds} ثوانٍ\", \"مازال {seconds} ثوانٍ\"] }, \"{time} left\": { \"msgid\": \"{time} left\", \"comments\": { \"extracted\": \"TRANSLATORS time has the format 00:00:00\" }, \"msgstr\": [\"{time} متبقية\"] }, \"a few seconds left\": { \"msgid\": \"a few seconds left\", \"msgstr\": [\"بضع ثوانٍ متبقية\"] }, \"assembling\": { \"msgid\": \"assembling\", \"msgstr\": [\"تجميع\"] }, \"Cancel\": { \"msgid\": \"Cancel\", \"msgstr\": [\"إلغاء\"] }, \"Cancel the entire operation\": { \"msgid\": \"Cancel the entire operation\", \"msgstr\": [\"إلغِ العملية بالكامل\"] }, \"Cancel uploads\": { \"msgid\": \"Cancel uploads\", \"msgstr\": [\"إلغاء عمليات رفع الملفات\"] }, \"Continue\": { \"msgid\": \"Continue\", \"msgstr\": [\"إستمر\"] }, \"Create new\": { \"msgid\": \"Create new\", \"msgstr\": [\"إنشاء جديد\"] }, \"estimating time left\": { \"msgid\": \"estimating time left\", \"msgstr\": [\"تقدير الوقت المتبقي\"] }, \"Existing version\": { \"msgid\": \"Existing version\", \"msgstr\": [\"الإصدار الحالي\"] }, \"Failed to assemble the chunks together\": { \"msgid\": \"Failed to assemble the chunks together\", \"msgstr\": [\"تعذّرت إعادة تجميع الكتل معاً \"] }, \"Failed to upload the file\": { \"msgid\": \"Failed to upload the file\", \"msgstr\": [\"تعذّر رفع الملف\"] }, 'Filenames must not end with \"{segment}\".': { \"msgid\": 'Filenames must not end with \"{segment}\".', \"msgstr\": ['غير مسموح ان ينتهي اسم الملف بـ \"{segment}\".'] }, \"If you select both versions, the incoming file will have a number added to its name.\": { \"msgid\": \"If you select both versions, the incoming file will have a number added to its name.\", \"msgstr\": [\"إذا اخترت الاحتفاظ بالنسختين فسيتم إلحاق رقم عداد آخر اسم الملف الوارد.\"] }, \"Invalid filename\": { \"msgid\": \"Invalid filename\", \"msgstr\": [\"اسم ملف غير صحيح\"] }, \"Last modified date unknown\": { \"msgid\": \"Last modified date unknown\", \"msgstr\": [\"تاريخ آخر تعديل غير معروف\"] }, \"New\": { \"msgid\": \"New\", \"msgstr\": [\"جديد\"] }, \"New filename\": { \"msgid\": \"New filename\", \"msgstr\": [\"اسم ملف جديد\"] }, \"New version\": { \"msgid\": \"New version\", \"msgstr\": [\"نسخة جديدة\"] }, \"paused\": { \"msgid\": \"paused\", \"msgstr\": [\"مُجمَّد\"] }, \"Preview image\": { \"msgid\": \"Preview image\", \"msgstr\": [\"معاينة الصورة\"] }, \"Rename\": { \"msgid\": \"Rename\", \"msgstr\": [\"تغيير التسمية\"] }, \"Select all checkboxes\": { \"msgid\": \"Select all checkboxes\", \"msgstr\": [\"حدِّد كل صناديق الخيارات\"] }, \"Select all existing files\": { \"msgid\": \"Select all existing files\", \"msgstr\": [\"حدِّد كل الملفات الموجودة\"] }, \"Select all new files\": { \"msgid\": \"Select all new files\", \"msgstr\": [\"حدِّد كل الملفات الجديدة\"] }, \"Skip\": { \"msgid\": \"Skip\", \"msgstr\": [\"تخطِّي\"] }, \"Skip this file\": { \"msgid\": \"Skip this file\", \"msgid_plural\": \"Skip {count} files\", \"msgstr\": [\"تخطَّ {count} ملف\", \"تخطَّ {count} ملف\", \"تخطَّ {count} ملف\", \"تخطَّ {count} ملف\", \"تخطَّ {count} ملف\", \"تخطَّ {count} ملف\"] }, \"Unknown size\": { \"msgid\": \"Unknown size\", \"msgstr\": [\"حجم غير معلوم\"] }, \"Upload\": { \"msgid\": \"Upload\", \"msgstr\": [\"رفع الملفات\"] }, \"Upload files\": { \"msgid\": \"Upload files\", \"msgstr\": [\"رفع ملفات\"] }, \"Upload folders\": { \"msgid\": \"Upload folders\", \"msgstr\": [\"رفع مجلدات\"] }, \"Upload from device\": { \"msgid\": \"Upload from device\", \"msgstr\": [\"الرفع من جهاز \"] }, \"Upload has been cancelled\": { \"msgid\": \"Upload has been cancelled\", \"msgstr\": [\"تمّ إلغاء عملية رفع الملفات\"] }, \"Upload has been skipped\": { \"msgid\": \"Upload has been skipped\", \"msgstr\": [\"تمّ تجاوز الرفع\"] }, 'Upload of \"{folder}\" has been skipped': { \"msgid\": 'Upload of \"{folder}\" has been skipped', \"msgstr\": ['رفع \"{folder}\" تمّ تجاوزه'] }, \"Upload progress\": { \"msgid\": \"Upload progress\", \"msgstr\": [\"تقدُّم الرفع \"] }, \"When an incoming folder is selected, any conflicting files within it will also be overwritten.\": { \"msgid\": \"When an incoming folder is selected, any conflicting files within it will also be overwritten.\", \"msgstr\": [\"عند تحديد مجلد وارد، أي ملفات متعارضة بداخله ستتم الكتابة فوقها.\"] }, \"When an incoming folder is selected, the content is written into the existing folder and a recursive conflict resolution is performed.\": { \"msgid\": \"When an incoming folder is selected, the content is written into the existing folder and a recursive conflict resolution is performed.\", \"msgstr\": [\"عند تحديد مجلد وارد، ستتم كتابة المحتوى في المجلد الموجود و سيتم تنفيذ حل التعارض بشكل تعاوُدي.\"] }, \"Which files do you want to keep?\": { \"msgid\": \"Which files do you want to keep?\", \"msgstr\": [\"أيُّ الملفات ترغب في الإبقاء عليها؟\"] }, \"You can either rename the file, skip this file or cancel the whole operation.\": { \"msgid\": \"You can either rename the file, skip this file or cancel the whole operation.\", \"msgstr\": [\"يمكنك إمّا تغيير اسم الملف، أو تجاوزه، أو إلغاء العملية برُمَّتها.\"] }, \"You need to select at least one version of each file to continue.\": { \"msgid\": \"You need to select at least one version of each file to continue.\", \"msgstr\": [\"يجب أن تختار نسخة واحدة على الأقل من كل ملف للاستمرار.\"] } } } } }, { \"locale\": \"ast\", \"json\": { \"charset\": \"utf-8\", \"headers\": { \"Last-Translator\": \"enolp , 2023\", \"Language-Team\": \"Asturian (https://app.transifex.com/nextcloud/teams/64236/ast/)\", \"Content-Type\": \"text/plain; charset=UTF-8\", \"Language\": \"ast\", \"Plural-Forms\": \"nplurals=2; plural=(n != 1);\" }, \"translations\": { \"\": { \"\": { \"msgid\": \"\", \"comments\": { \"translator\": \"\\nTranslators:\\nenolp , 2023\\n\" }, \"msgstr\": [\"Last-Translator: enolp , 2023\\nLanguage-Team: Asturian (https://app.transifex.com/nextcloud/teams/64236/ast/)\\nContent-Type: text/plain; charset=UTF-8\\nLanguage: ast\\nPlural-Forms: nplurals=2; plural=(n != 1);\\n\"] }, \"{count} file conflict\": { \"msgid\": \"{count} file conflict\", \"msgid_plural\": \"{count} files conflict\", \"msgstr\": [\"{count} ficheru en coflictu\", \"{count} ficheros en coflictu\"] }, \"{count} file conflict in {dirname}\": { \"msgid\": \"{count} file conflict in {dirname}\", \"msgid_plural\": \"{count} file conflicts in {dirname}\", \"msgstr\": [\"{count} ficheru en coflictu en {dirname}\", \"{count} ficheros en coflictu en {dirname}\"] }, \"{seconds} seconds left\": { \"msgid\": \"{seconds} seconds left\", \"msgstr\": [\"Queden {seconds} segundos\"] }, \"{time} left\": { \"msgid\": \"{time} left\", \"comments\": { \"extracted\": \"TRANSLATORS time has the format 00:00:00\" }, \"msgstr\": [\"Tiempu que queda: {time}\"] }, \"a few seconds left\": { \"msgid\": \"a few seconds left\", \"msgstr\": [\"queden unos segundos\"] }, \"Cancel uploads\": { \"msgid\": \"Cancel uploads\", \"msgstr\": [\"Encaboxar les xubes\"] }, \"Continue\": { \"msgid\": \"Continue\", \"msgstr\": [\"Siguir\"] }, \"estimating time left\": { \"msgid\": \"estimating time left\", \"msgstr\": [\"estimando'l tiempu que falta\"] }, \"Existing version\": { \"msgid\": \"Existing version\", \"msgstr\": [\"Versión esistente\"] }, \"If you select both versions, the copied file will have a number added to its name.\": { \"msgid\": \"If you select both versions, the copied file will have a number added to its name.\", \"msgstr\": [\"Si seleiciones dambes versiones, el ficheru copiáu va tener un númberu amestáu al so nome.\"] }, \"Last modified date unknown\": { \"msgid\": \"Last modified date unknown\", \"msgstr\": [\"La data de la última modificación ye desconocida\"] }, \"New\": { \"msgid\": \"New\", \"msgstr\": [\"Nuevu\"] }, \"New version\": { \"msgid\": \"New version\", \"msgstr\": [\"Versión nueva\"] }, \"paused\": { \"msgid\": \"paused\", \"msgstr\": [\"en posa\"] }, \"Preview image\": { \"msgid\": \"Preview image\", \"msgstr\": [\"Previsualizar la imaxe\"] }, \"Select all checkboxes\": { \"msgid\": \"Select all checkboxes\", \"msgstr\": [\"Marcar toles caxelles\"] }, \"Select all existing files\": { \"msgid\": \"Select all existing files\", \"msgstr\": [\"Seleicionar tolos ficheros esistentes\"] }, \"Select all new files\": { \"msgid\": \"Select all new files\", \"msgstr\": [\"Seleicionar tolos ficheros nuevos\"] }, \"Skip this file\": { \"msgid\": \"Skip this file\", \"msgid_plural\": \"Skip {count} files\", \"msgstr\": [\"Saltar esti ficheru\", \"Saltar {count} ficheros\"] }, \"Unknown size\": { \"msgid\": \"Unknown size\", \"msgstr\": [\"Tamañu desconocíu\"] }, \"Upload cancelled\": { \"msgid\": \"Upload cancelled\", \"msgstr\": [\"Encaboxóse la xuba\"] }, \"Upload files\": { \"msgid\": \"Upload files\", \"msgstr\": [\"Xubir ficheros\"] }, \"Upload progress\": { \"msgid\": \"Upload progress\", \"msgstr\": [\"Xuba en cursu\"] }, \"Which files do you want to keep?\": { \"msgid\": \"Which files do you want to keep?\", \"msgstr\": [\"¿Qué ficheros quies caltener?\"] }, \"You need to select at least one version of each file to continue.\": { \"msgid\": \"You need to select at least one version of each file to continue.\", \"msgstr\": [\"Tienes de seleicionar polo menos una versión de cada ficheru pa siguir.\"] } } } } }, { \"locale\": \"az\", \"json\": { \"charset\": \"utf-8\", \"headers\": { \"Last-Translator\": \"Rashad Aliyev , 2023\", \"Language-Team\": \"Azerbaijani (https://app.transifex.com/nextcloud/teams/64236/az/)\", \"Content-Type\": \"text/plain; charset=UTF-8\", \"Language\": \"az\", \"Plural-Forms\": \"nplurals=2; plural=(n != 1);\" }, \"translations\": { \"\": { \"\": { \"msgid\": \"\", \"comments\": { \"translator\": \"\\nTranslators:\\nRashad Aliyev , 2023\\n\" }, \"msgstr\": [\"Last-Translator: Rashad Aliyev , 2023\\nLanguage-Team: Azerbaijani (https://app.transifex.com/nextcloud/teams/64236/az/)\\nContent-Type: text/plain; charset=UTF-8\\nLanguage: az\\nPlural-Forms: nplurals=2; plural=(n != 1);\\n\"] }, \"{seconds} seconds left\": { \"msgid\": \"{seconds} seconds left\", \"msgstr\": [\"{seconds} saniyə qalıb\"] }, \"{time} left\": { \"msgid\": \"{time} left\", \"comments\": { \"extracted\": \"time has the format 00:00:00\" }, \"msgstr\": [\"{time} qalıb\"] }, \"a few seconds left\": { \"msgid\": \"a few seconds left\", \"msgstr\": [\"bir neçə saniyə qalıb\"] }, \"Add\": { \"msgid\": \"Add\", \"msgstr\": [\"Əlavə et\"] }, \"Cancel uploads\": { \"msgid\": \"Cancel uploads\", \"msgstr\": [\"Yükləməni imtina et\"] }, \"estimating time left\": { \"msgid\": \"estimating time left\", \"msgstr\": [\"Təxmini qalan vaxt\"] }, \"paused\": { \"msgid\": \"paused\", \"msgstr\": [\"pauzadadır\"] }, \"Upload files\": { \"msgid\": \"Upload files\", \"msgstr\": [\"Faylları yüklə\"] } } } } }, { \"locale\": \"be\", \"json\": { \"charset\": \"utf-8\", \"headers\": { \"Last-Translator\": \"Transifex Bot <>, 2022\", \"Language-Team\": \"Belarusian (https://www.transifex.com/nextcloud/teams/64236/be/)\", \"Content-Type\": \"text/plain; charset=UTF-8\", \"Language\": \"be\", \"Plural-Forms\": \"nplurals=4; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%10<=4 && (n%100<12 || n%100>14) ? 1 : n%10==0 || (n%10>=5 && n%10<=9) || (n%100>=11 && n%100<=14)? 2 : 3);\" }, \"translations\": { \"\": { \"\": { \"msgid\": \"\", \"comments\": { \"translator\": \"\\nTranslators:\\nTransifex Bot <>, 2022\\n\" }, \"msgstr\": [\"Last-Translator: Transifex Bot <>, 2022\\nLanguage-Team: Belarusian (https://www.transifex.com/nextcloud/teams/64236/be/)\\nContent-Type: text/plain; charset=UTF-8\\nLanguage: be\\nPlural-Forms: nplurals=4; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%10<=4 && (n%100<12 || n%100>14) ? 1 : n%10==0 || (n%10>=5 && n%10<=9) || (n%100>=11 && n%100<=14)? 2 : 3);\\n\"] }, \"{estimate} seconds left\": { \"msgid\": \"{estimate} seconds left\", \"msgstr\": [\"\"] }, \"{hours} hours and {minutes} minutes left\": { \"msgid\": \"{hours} hours and {minutes} minutes left\", \"msgstr\": [\"\"] }, \"{minutes} minutes left\": { \"msgid\": \"{minutes} minutes left\", \"msgstr\": [\"\"] }, \"a few seconds left\": { \"msgid\": \"a few seconds left\", \"msgstr\": [\"\"] }, \"Add\": { \"msgid\": \"Add\", \"msgstr\": [\"\"] }, \"Cancel uploads\": { \"msgid\": \"Cancel uploads\", \"msgstr\": [\"\"] }, \"estimating time left\": { \"msgid\": \"estimating time left\", \"msgstr\": [\"\"] }, \"paused\": { \"msgid\": \"paused\", \"msgstr\": [\"\"] } } } } }, { \"locale\": \"bg\", \"json\": { \"charset\": \"utf-8\", \"headers\": { \"Last-Translator\": \"Transifex Bot <>, 2022\", \"Language-Team\": \"Bulgarian (Bulgaria) (https://www.transifex.com/nextcloud/teams/64236/bg_BG/)\", \"Content-Type\": \"text/plain; charset=UTF-8\", \"Language\": \"bg_BG\", \"Plural-Forms\": \"nplurals=2; plural=(n != 1);\" }, \"translations\": { \"\": { \"\": { \"msgid\": \"\", \"comments\": { \"translator\": \"\\nTranslators:\\nTransifex Bot <>, 2022\\n\" }, \"msgstr\": [\"Last-Translator: Transifex Bot <>, 2022\\nLanguage-Team: Bulgarian (Bulgaria) (https://www.transifex.com/nextcloud/teams/64236/bg_BG/)\\nContent-Type: text/plain; charset=UTF-8\\nLanguage: bg_BG\\nPlural-Forms: nplurals=2; plural=(n != 1);\\n\"] }, \"{estimate} seconds left\": { \"msgid\": \"{estimate} seconds left\", \"msgstr\": [\"\"] }, \"{hours} hours and {minutes} minutes left\": { \"msgid\": \"{hours} hours and {minutes} minutes left\", \"msgstr\": [\"\"] }, \"{minutes} minutes left\": { \"msgid\": \"{minutes} minutes left\", \"msgstr\": [\"\"] }, \"a few seconds left\": { \"msgid\": \"a few seconds left\", \"msgstr\": [\"\"] }, \"Add\": { \"msgid\": \"Add\", \"msgstr\": [\"\"] }, \"Cancel uploads\": { \"msgid\": \"Cancel uploads\", \"msgstr\": [\"\"] }, \"estimating time left\": { \"msgid\": \"estimating time left\", \"msgstr\": [\"\"] }, \"paused\": { \"msgid\": \"paused\", \"msgstr\": [\"\"] } } } } }, { \"locale\": \"bn_BD\", \"json\": { \"charset\": \"utf-8\", \"headers\": { \"Last-Translator\": \"Transifex Bot <>, 2022\", \"Language-Team\": \"Bengali (Bangladesh) (https://www.transifex.com/nextcloud/teams/64236/bn_BD/)\", \"Content-Type\": \"text/plain; charset=UTF-8\", \"Language\": \"bn_BD\", \"Plural-Forms\": \"nplurals=2; plural=(n != 1);\" }, \"translations\": { \"\": { \"\": { \"msgid\": \"\", \"comments\": { \"translator\": \"\\nTranslators:\\nTransifex Bot <>, 2022\\n\" }, \"msgstr\": [\"Last-Translator: Transifex Bot <>, 2022\\nLanguage-Team: Bengali (Bangladesh) (https://www.transifex.com/nextcloud/teams/64236/bn_BD/)\\nContent-Type: text/plain; charset=UTF-8\\nLanguage: bn_BD\\nPlural-Forms: nplurals=2; plural=(n != 1);\\n\"] }, \"{estimate} seconds left\": { \"msgid\": \"{estimate} seconds left\", \"msgstr\": [\"\"] }, \"{hours} hours and {minutes} minutes left\": { \"msgid\": \"{hours} hours and {minutes} minutes left\", \"msgstr\": [\"\"] }, \"{minutes} minutes left\": { \"msgid\": \"{minutes} minutes left\", \"msgstr\": [\"\"] }, \"a few seconds left\": { \"msgid\": \"a few seconds left\", \"msgstr\": [\"\"] }, \"Add\": { \"msgid\": \"Add\", \"msgstr\": [\"\"] }, \"Cancel uploads\": { \"msgid\": \"Cancel uploads\", \"msgstr\": [\"\"] }, \"estimating time left\": { \"msgid\": \"estimating time left\", \"msgstr\": [\"\"] }, \"paused\": { \"msgid\": \"paused\", \"msgstr\": [\"\"] } } } } }, { \"locale\": \"br\", \"json\": { \"charset\": \"utf-8\", \"headers\": { \"Last-Translator\": \"Transifex Bot <>, 2022\", \"Language-Team\": \"Breton (https://www.transifex.com/nextcloud/teams/64236/br/)\", \"Content-Type\": \"text/plain; charset=UTF-8\", \"Language\": \"br\", \"Plural-Forms\": \"nplurals=5; plural=((n%10 == 1) && (n%100 != 11) && (n%100 !=71) && (n%100 !=91) ? 0 :(n%10 == 2) && (n%100 != 12) && (n%100 !=72) && (n%100 !=92) ? 1 :(n%10 ==3 || n%10==4 || n%10==9) && (n%100 < 10 || n% 100 > 19) && (n%100 < 70 || n%100 > 79) && (n%100 < 90 || n%100 > 99) ? 2 :(n != 0 && n % 1000000 == 0) ? 3 : 4);\" }, \"translations\": { \"\": { \"\": { \"msgid\": \"\", \"comments\": { \"translator\": \"\\nTranslators:\\nTransifex Bot <>, 2022\\n\" }, \"msgstr\": [\"Last-Translator: Transifex Bot <>, 2022\\nLanguage-Team: Breton (https://www.transifex.com/nextcloud/teams/64236/br/)\\nContent-Type: text/plain; charset=UTF-8\\nLanguage: br\\nPlural-Forms: nplurals=5; plural=((n%10 == 1) && (n%100 != 11) && (n%100 !=71) && (n%100 !=91) ? 0 :(n%10 == 2) && (n%100 != 12) && (n%100 !=72) && (n%100 !=92) ? 1 :(n%10 ==3 || n%10==4 || n%10==9) && (n%100 < 10 || n% 100 > 19) && (n%100 < 70 || n%100 > 79) && (n%100 < 90 || n%100 > 99) ? 2 :(n != 0 && n % 1000000 == 0) ? 3 : 4);\\n\"] }, \"{estimate} seconds left\": { \"msgid\": \"{estimate} seconds left\", \"msgstr\": [\"\"] }, \"{hours} hours and {minutes} minutes left\": { \"msgid\": \"{hours} hours and {minutes} minutes left\", \"msgstr\": [\"\"] }, \"{minutes} minutes left\": { \"msgid\": \"{minutes} minutes left\", \"msgstr\": [\"\"] }, \"a few seconds left\": { \"msgid\": \"a few seconds left\", \"msgstr\": [\"\"] }, \"Add\": { \"msgid\": \"Add\", \"msgstr\": [\"\"] }, \"Cancel uploads\": { \"msgid\": \"Cancel uploads\", \"msgstr\": [\"\"] }, \"estimating time left\": { \"msgid\": \"estimating time left\", \"msgstr\": [\"\"] }, \"paused\": { \"msgid\": \"paused\", \"msgstr\": [\"\"] } } } } }, { \"locale\": \"bs\", \"json\": { \"charset\": \"utf-8\", \"headers\": { \"Last-Translator\": \"Transifex Bot <>, 2022\", \"Language-Team\": \"Bosnian (https://www.transifex.com/nextcloud/teams/64236/bs/)\", \"Content-Type\": \"text/plain; charset=UTF-8\", \"Language\": \"bs\", \"Plural-Forms\": \"nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);\" }, \"translations\": { \"\": { \"\": { \"msgid\": \"\", \"comments\": { \"translator\": \"\\nTranslators:\\nTransifex Bot <>, 2022\\n\" }, \"msgstr\": [\"Last-Translator: Transifex Bot <>, 2022\\nLanguage-Team: Bosnian (https://www.transifex.com/nextcloud/teams/64236/bs/)\\nContent-Type: text/plain; charset=UTF-8\\nLanguage: bs\\nPlural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);\\n\"] }, \"{estimate} seconds left\": { \"msgid\": \"{estimate} seconds left\", \"msgstr\": [\"\"] }, \"{hours} hours and {minutes} minutes left\": { \"msgid\": \"{hours} hours and {minutes} minutes left\", \"msgstr\": [\"\"] }, \"{minutes} minutes left\": { \"msgid\": \"{minutes} minutes left\", \"msgstr\": [\"\"] }, \"a few seconds left\": { \"msgid\": \"a few seconds left\", \"msgstr\": [\"\"] }, \"Add\": { \"msgid\": \"Add\", \"msgstr\": [\"\"] }, \"Cancel uploads\": { \"msgid\": \"Cancel uploads\", \"msgstr\": [\"\"] }, \"estimating time left\": { \"msgid\": \"estimating time left\", \"msgstr\": [\"\"] }, \"paused\": { \"msgid\": \"paused\", \"msgstr\": [\"\"] } } } } }, { \"locale\": \"ca\", \"json\": { \"charset\": \"utf-8\", \"headers\": { \"Last-Translator\": \"Leandro Navarro , 2025\", \"Language-Team\": \"Catalan (https://app.transifex.com/nextcloud/teams/64236/ca/)\", \"Content-Type\": \"text/plain; charset=UTF-8\", \"Language\": \"ca\", \"Plural-Forms\": \"nplurals=2; plural=(n != 1);\" }, \"translations\": { \"\": { \"\": { \"msgid\": \"\", \"comments\": { \"translator\": \"\\nTranslators:\\nJoas Schilling, 2024\\nv v , 2025\\nLeandro Navarro , 2025\\n\" }, \"msgstr\": [\"Last-Translator: Leandro Navarro , 2025\\nLanguage-Team: Catalan (https://app.transifex.com/nextcloud/teams/64236/ca/)\\nContent-Type: text/plain; charset=UTF-8\\nLanguage: ca\\nPlural-Forms: nplurals=2; plural=(n != 1);\\n\"] }, '\"{segment}\" is a forbidden file or folder name.': { \"msgid\": '\"{segment}\" is a forbidden file or folder name.', \"msgstr\": ['\"{segment}\" és un nom de fitxer o carpeta prohibit.'] }, '\"{segment}\" is a forbidden file type.': { \"msgid\": '\"{segment}\" is a forbidden file type.', \"msgstr\": ['\"{segment}\" és un tipus de fitxer prohibit.'] }, '\"{segment}\" is not allowed inside a file or folder name.': { \"msgid\": '\"{segment}\" is not allowed inside a file or folder name.', \"msgstr\": ['\"{segment}\" no és permès dins del nom de fitxer o carpeta.'] }, \"{count} file conflict\": { \"msgid\": \"{count} file conflict\", \"msgid_plural\": \"{count} files conflict\", \"msgstr\": [\"{count}fitxer en conflicte\", \"{count} fitxer en conflicte\"] }, \"{count} file conflict in {dirname}\": { \"msgid\": \"{count} file conflict in {dirname}\", \"msgid_plural\": \"{count} file conflicts in {dirname}\", \"msgstr\": [\"{count} conflicte de fitxers a {dirname}\", \"{count} conflictes de fitxers a {dirname}\"] }, \"{seconds} seconds left\": { \"msgid\": \"{seconds} seconds left\", \"msgid_plural\": \"{seconds} seconds left\", \"msgstr\": [\"{seconds} segon restant\", \"{seconds} segons restants\"] }, \"{time} left\": { \"msgid\": \"{time} left\", \"comments\": { \"extracted\": \"TRANSLATORS time has the format 00:00:00\" }, \"msgstr\": [\"Queden {time}\"] }, \"a few seconds left\": { \"msgid\": \"a few seconds left\", \"msgstr\": [\"queden uns segons\"] }, \"assembling\": { \"msgid\": \"assembling\", \"msgstr\": [\"assemblatge\"] }, \"Cancel\": { \"msgid\": \"Cancel\", \"msgstr\": [\"Cancel·lar\"] }, \"Cancel the entire operation\": { \"msgid\": \"Cancel the entire operation\", \"msgstr\": [\"Cancel·lar l'operació sencera\"] }, \"Cancel uploads\": { \"msgid\": \"Cancel uploads\", \"msgstr\": [\"Cancel·la les pujades\"] }, \"Continue\": { \"msgid\": \"Continue\", \"msgstr\": [\"Continuar\"] }, \"Create new\": { \"msgid\": \"Create new\", \"msgstr\": [\"Crea nou\"] }, \"estimating time left\": { \"msgid\": \"estimating time left\", \"msgstr\": [\"s’està estimant el temps restant\"] }, \"Existing version\": { \"msgid\": \"Existing version\", \"msgstr\": [\"Existing version\"] }, \"Failed to assemble the chunks together\": { \"msgid\": \"Failed to assemble the chunks together\", \"msgstr\": [\"No s'han pogut acoblar els trossos\"] }, \"Failed to upload the file\": { \"msgid\": \"Failed to upload the file\", \"msgstr\": [\"No s'ha pogut pujar el fitxer\"] }, 'Filenames must not end with \"{segment}\".': { \"msgid\": 'Filenames must not end with \"{segment}\".', \"msgstr\": [`Els noms de fitxer no han d'acabar en \"{segment}\".`] }, \"If you select both versions, the incoming file will have a number added to its name.\": { \"msgid\": \"If you select both versions, the incoming file will have a number added to its name.\", \"msgstr\": [\"Si seleccioneu les dues versions, el fitxer entrant tindrà un número afegit al seu nom.\"] }, \"Invalid filename\": { \"msgid\": \"Invalid filename\", \"msgstr\": [\"Nom de fitxer no vàlid\"] }, \"Last modified date unknown\": { \"msgid\": \"Last modified date unknown\", \"msgstr\": [\"Data de la darrera modificació desconeguda\"] }, \"New\": { \"msgid\": \"New\", \"msgstr\": [\"Nou\"] }, \"New filename\": { \"msgid\": \"New filename\", \"msgstr\": [\"Nou nom de fitxer\"] }, \"New version\": { \"msgid\": \"New version\", \"msgstr\": [\"Nova versió\"] }, \"paused\": { \"msgid\": \"paused\", \"msgstr\": [\"en pausa\"] }, \"Preview image\": { \"msgid\": \"Preview image\", \"msgstr\": [\"Imatge de vista prèvia\"] }, \"Rename\": { \"msgid\": \"Rename\", \"msgstr\": [\"Canviar el nom\"] }, \"Select all checkboxes\": { \"msgid\": \"Select all checkboxes\", \"msgstr\": [\"Seleccioneu totes les caselles de selecció\"] }, \"Select all existing files\": { \"msgid\": \"Select all existing files\", \"msgstr\": [\"Seleccioneu tots els fitxers existents\"] }, \"Select all new files\": { \"msgid\": \"Select all new files\", \"msgstr\": [\"Seleccioneu tots el fitxers nous\"] }, \"Skip\": { \"msgid\": \"Skip\", \"msgstr\": [\"Saltar\"] }, \"Skip {count} file\": { \"msgid\": \"Skip {count} file\", \"msgid_plural\": \"Skip {count} files\", \"msgstr\": [\"Omet {count} fitxer\", \"Omet {count} fitxers\"] }, \"Skip this file\": { \"msgid\": \"Skip this file\", \"msgstr\": [\"Omet aquest fitxer\"] }, \"Unknown size\": { \"msgid\": \"Unknown size\", \"msgstr\": [\"Mida desconeguda\"] }, \"Upload\": { \"msgid\": \"Upload\", \"msgstr\": [\"Pujar\"] }, \"Upload files\": { \"msgid\": \"Upload files\", \"msgstr\": [\"Puja els fitxers\"] }, \"Upload folders\": { \"msgid\": \"Upload folders\", \"msgstr\": [\"Pujar les carpetes\"] }, \"Upload from device\": { \"msgid\": \"Upload from device\", \"msgstr\": [\"Pujada des del dispositiu\"] }, \"Upload has been cancelled\": { \"msgid\": \"Upload has been cancelled\", \"msgstr\": [\"La pujada s'ha cancel·lat\"] }, \"Upload has been skipped\": { \"msgid\": \"Upload has been skipped\", \"msgstr\": [\"S'ha omès la pujada\"] }, 'Upload of \"{folder}\" has been skipped': { \"msgid\": 'Upload of \"{folder}\" has been skipped', \"msgstr\": [`S'ha omès la pujada de \"{folder}\"`] }, \"Upload progress\": { \"msgid\": \"Upload progress\", \"msgstr\": [\"Procés de pujada\"] }, \"When an incoming folder is selected, any conflicting files within it will also be overwritten.\": { \"msgid\": \"When an incoming folder is selected, any conflicting files within it will also be overwritten.\", \"msgstr\": [\"Quan es selecciona una carpeta d'entrada, també es sobreescriuran els fitxers en conflicte dins d'ella.\"] }, \"When an incoming folder is selected, the content is written into the existing folder and a recursive conflict resolution is performed.\": { \"msgid\": \"When an incoming folder is selected, the content is written into the existing folder and a recursive conflict resolution is performed.\", \"msgstr\": [\"Quan es selecciona una carpeta d'entrada, el contingut s'escriu a la carpeta existent i es realitza una resolució recursiva de conflictes.\"] }, \"Which files do you want to keep?\": { \"msgid\": \"Which files do you want to keep?\", \"msgstr\": [\"Quins fitxers vols conservar?\"] }, \"You can either rename the file, skip this file or cancel the whole operation.\": { \"msgid\": \"You can either rename the file, skip this file or cancel the whole operation.\", \"msgstr\": [\"Podeu canviar el nom del fitxer, saltar aquest fitxer o cancel·lar tota l'operació.\"] }, \"You need to select at least one version of each file to continue.\": { \"msgid\": \"You need to select at least one version of each file to continue.\", \"msgstr\": [\"Heu de seleccionar almenys una versió de cada fitxer per continuar.\"] } } } } }, { \"locale\": \"cs\", \"json\": { \"charset\": \"utf-8\", \"headers\": { \"Last-Translator\": \"Pavel Borecki , 2025\", \"Language-Team\": \"Czech (Czech Republic) (https://app.transifex.com/nextcloud/teams/64236/cs_CZ/)\", \"Content-Type\": \"text/plain; charset=UTF-8\", \"Language\": \"cs_CZ\", \"Plural-Forms\": \"nplurals=4; plural=(n == 1 && n % 1 == 0) ? 0 : (n >= 2 && n <= 4 && n % 1 == 0) ? 1: (n % 1 != 0 ) ? 2 : 3;\" }, \"translations\": { \"\": { \"\": { \"msgid\": \"\", \"comments\": { \"translator\": \"\\nTranslators:\\nJoas Schilling, 2024\\nMichal Šmahel , 2024\\nMartin Hankovec, 2024\\nAppukonrad , 2024\\nPavel Borecki , 2025\\n\" }, \"msgstr\": [\"Last-Translator: Pavel Borecki , 2025\\nLanguage-Team: Czech (Czech Republic) (https://app.transifex.com/nextcloud/teams/64236/cs_CZ/)\\nContent-Type: text/plain; charset=UTF-8\\nLanguage: cs_CZ\\nPlural-Forms: nplurals=4; plural=(n == 1 && n % 1 == 0) ? 0 : (n >= 2 && n <= 4 && n % 1 == 0) ? 1: (n % 1 != 0 ) ? 2 : 3;\\n\"] }, '\"{segment}\" is a forbidden file or folder name.': { \"msgid\": '\"{segment}\" is a forbidden file or folder name.', \"msgstr\": [\"„{segment}“ není povoleno použít jako název souboru či složky.\"] }, '\"{segment}\" is a forbidden file type.': { \"msgid\": '\"{segment}\" is a forbidden file type.', \"msgstr\": [\"„{segment}“ není povoleného typu souboru.\"] }, '\"{segment}\" is not allowed inside a file or folder name.': { \"msgid\": '\"{segment}\" is not allowed inside a file or folder name.', \"msgstr\": [\"„{segment}“ není povoleno použít v rámci názvu souboru či složky.\"] }, \"{count} file conflict\": { \"msgid\": \"{count} file conflict\", \"msgid_plural\": \"{count} files conflict\", \"msgstr\": [\"{count} kolize souborů\", \"{count} kolize souborů\", \"{count} kolizí souborů\", \"{count} kolize souborů\"] }, \"{count} file conflict in {dirname}\": { \"msgid\": \"{count} file conflict in {dirname}\", \"msgid_plural\": \"{count} file conflicts in {dirname}\", \"msgstr\": [\"{count} kolize souboru v {dirname}\", \"{count} kolize souboru v {dirname}\", \"{count} kolizí souborů v {dirname}\", \"{count} kolize souboru v {dirname}\"] }, \"{seconds} seconds left\": { \"msgid\": \"{seconds} seconds left\", \"msgid_plural\": \"{seconds} seconds left\", \"msgstr\": [\"zbývá {seconds}\", \"zbývají {seconds}\", \"zbývá {seconds}\", \"zbývají {seconds}\"] }, \"{time} left\": { \"msgid\": \"{time} left\", \"comments\": { \"extracted\": \"TRANSLATORS time has the format 00:00:00\" }, \"msgstr\": [\"zbývá {time}\"] }, \"a few seconds left\": { \"msgid\": \"a few seconds left\", \"msgstr\": [\"zbývá několik sekund\"] }, \"assembling\": { \"msgid\": \"assembling\", \"msgstr\": [\"sestavování\"] }, \"Cancel\": { \"msgid\": \"Cancel\", \"msgstr\": [\"Zrušit\"] }, \"Cancel the entire operation\": { \"msgid\": \"Cancel the entire operation\", \"msgstr\": [\"Zrušit celou operaci\"] }, \"Cancel uploads\": { \"msgid\": \"Cancel uploads\", \"msgstr\": [\"Zrušit nahrávání\"] }, \"Continue\": { \"msgid\": \"Continue\", \"msgstr\": [\"Pokračovat\"] }, \"Create new\": { \"msgid\": \"Create new\", \"msgstr\": [\"Vytvořit nový\"] }, \"estimating time left\": { \"msgid\": \"estimating time left\", \"msgstr\": [\"odhaduje se zbývající čas\"] }, \"Existing version\": { \"msgid\": \"Existing version\", \"msgstr\": [\"Existující verze\"] }, \"Failed to assemble the chunks together\": { \"msgid\": \"Failed to assemble the chunks together\", \"msgstr\": [\"Shluky se nepodařilo dát dohromady\"] }, \"Failed to upload the file\": { \"msgid\": \"Failed to upload the file\", \"msgstr\": [\"Soubor se nepodařilo nahrát\"] }, 'Filenames must not end with \"{segment}\".': { \"msgid\": 'Filenames must not end with \"{segment}\".', \"msgstr\": [\"Názvy souborů nemohou končit na „{segment}“.\"] }, \"If you select both versions, the incoming file will have a number added to its name.\": { \"msgid\": \"If you select both versions, the incoming file will have a number added to its name.\", \"msgstr\": [\"Pokud vyberete obě verze, příchozí soubor bude mít ke jménu přidánu číslici.\"] }, \"Invalid filename\": { \"msgid\": \"Invalid filename\", \"msgstr\": [\"Neplatný název souboru\"] }, \"Last modified date unknown\": { \"msgid\": \"Last modified date unknown\", \"msgstr\": [\"Neznámé datum poslední úpravy\"] }, \"New\": { \"msgid\": \"New\", \"msgstr\": [\"Nové\"] }, \"New filename\": { \"msgid\": \"New filename\", \"msgstr\": [\"Nový název souboru\"] }, \"New version\": { \"msgid\": \"New version\", \"msgstr\": [\"Nová verze\"] }, \"paused\": { \"msgid\": \"paused\", \"msgstr\": [\"pozastaveno\"] }, \"Preview image\": { \"msgid\": \"Preview image\", \"msgstr\": [\"Náhled obrázku\"] }, \"Rename\": { \"msgid\": \"Rename\", \"msgstr\": [\"Přejmenovat\"] }, \"Select all checkboxes\": { \"msgid\": \"Select all checkboxes\", \"msgstr\": [\"Označit všechny zaškrtávací kolonky\"] }, \"Select all existing files\": { \"msgid\": \"Select all existing files\", \"msgstr\": [\"Vybrat veškeré stávající soubory\"] }, \"Select all new files\": { \"msgid\": \"Select all new files\", \"msgstr\": [\"Vybrat veškeré nové soubory\"] }, \"Skip\": { \"msgid\": \"Skip\", \"msgstr\": [\"Přeskočit\"] }, \"Skip {count} file\": { \"msgid\": \"Skip {count} file\", \"msgid_plural\": \"Skip {count} files\", \"msgstr\": [\"Přeskočit {count} soubor\", \"Přeskočit {count} soubory\", \"Přeskočit {count} souborů\", \"Přeskočit {count} soubory\"] }, \"Skip this file\": { \"msgid\": \"Skip this file\", \"msgstr\": [\"Přeskočit tento soubor\"] }, \"Unknown size\": { \"msgid\": \"Unknown size\", \"msgstr\": [\"Neznámá velikost\"] }, \"Upload\": { \"msgid\": \"Upload\", \"msgstr\": [\"Nahrát\"] }, \"Upload files\": { \"msgid\": \"Upload files\", \"msgstr\": [\"Nahrát soubory\"] }, \"Upload folders\": { \"msgid\": \"Upload folders\", \"msgstr\": [\"Nahrát složky\"] }, \"Upload from device\": { \"msgid\": \"Upload from device\", \"msgstr\": [\"Nahrát ze zařízení\"] }, \"Upload has been cancelled\": { \"msgid\": \"Upload has been cancelled\", \"msgstr\": [\"Nahrávání bylo zrušeno\"] }, \"Upload has been skipped\": { \"msgid\": \"Upload has been skipped\", \"msgstr\": [\"Nahrání bylo přeskočeno\"] }, 'Upload of \"{folder}\" has been skipped': { \"msgid\": 'Upload of \"{folder}\" has been skipped', \"msgstr\": [\"Nahrání „{folder}“ bylo přeskočeno\"] }, \"Upload progress\": { \"msgid\": \"Upload progress\", \"msgstr\": [\"Postup v nahrávání\"] }, \"When an incoming folder is selected, any conflicting files within it will also be overwritten.\": { \"msgid\": \"When an incoming folder is selected, any conflicting files within it will also be overwritten.\", \"msgstr\": [\"Po výběru příchozí složky budou rovněž přepsány všechny v ní obsažené konfliktní soubory\"] }, \"When an incoming folder is selected, the content is written into the existing folder and a recursive conflict resolution is performed.\": { \"msgid\": \"When an incoming folder is selected, the content is written into the existing folder and a recursive conflict resolution is performed.\", \"msgstr\": [\"Když je vybrána příchozí složka, obsah je zapsán do existující složky a je provedeno rekurzivní řešení kolizí.\"] }, \"Which files do you want to keep?\": { \"msgid\": \"Which files do you want to keep?\", \"msgstr\": [\"Které soubory si přejete ponechat?\"] }, \"You can either rename the file, skip this file or cancel the whole operation.\": { \"msgid\": \"You can either rename the file, skip this file or cancel the whole operation.\", \"msgstr\": [\"Soubor je možné buď přejmenovat, přeskočit nebo celou operaci zrušit.\"] }, \"You need to select at least one version of each file to continue.\": { \"msgid\": \"You need to select at least one version of each file to continue.\", \"msgstr\": [\"Aby bylo možné pokračovat, je třeba vybrat alespoň jednu verzi od každého souboru.\"] } } } } }, { \"locale\": \"cy_GB\", \"json\": { \"charset\": \"utf-8\", \"headers\": { \"Last-Translator\": \"Transifex Bot <>, 2022\", \"Language-Team\": \"Welsh (United Kingdom) (https://www.transifex.com/nextcloud/teams/64236/cy_GB/)\", \"Content-Type\": \"text/plain; charset=UTF-8\", \"Language\": \"cy_GB\", \"Plural-Forms\": \"nplurals=4; plural=(n==1) ? 0 : (n==2) ? 1 : (n != 8 && n != 11) ? 2 : 3;\" }, \"translations\": { \"\": { \"\": { \"msgid\": \"\", \"comments\": { \"translator\": \"\\nTranslators:\\nTransifex Bot <>, 2022\\n\" }, \"msgstr\": [\"Last-Translator: Transifex Bot <>, 2022\\nLanguage-Team: Welsh (United Kingdom) (https://www.transifex.com/nextcloud/teams/64236/cy_GB/)\\nContent-Type: text/plain; charset=UTF-8\\nLanguage: cy_GB\\nPlural-Forms: nplurals=4; plural=(n==1) ? 0 : (n==2) ? 1 : (n != 8 && n != 11) ? 2 : 3;\\n\"] }, \"{estimate} seconds left\": { \"msgid\": \"{estimate} seconds left\", \"msgstr\": [\"\"] }, \"{hours} hours and {minutes} minutes left\": { \"msgid\": \"{hours} hours and {minutes} minutes left\", \"msgstr\": [\"\"] }, \"{minutes} minutes left\": { \"msgid\": \"{minutes} minutes left\", \"msgstr\": [\"\"] }, \"a few seconds left\": { \"msgid\": \"a few seconds left\", \"msgstr\": [\"\"] }, \"Add\": { \"msgid\": \"Add\", \"msgstr\": [\"\"] }, \"Cancel uploads\": { \"msgid\": \"Cancel uploads\", \"msgstr\": [\"\"] }, \"estimating time left\": { \"msgid\": \"estimating time left\", \"msgstr\": [\"\"] }, \"paused\": { \"msgid\": \"paused\", \"msgstr\": [\"\"] } } } } }, { \"locale\": \"da\", \"json\": { \"charset\": \"utf-8\", \"headers\": { \"Last-Translator\": \"Finn Sommer , 2025\", \"Language-Team\": \"Danish (https://app.transifex.com/nextcloud/teams/64236/da/)\", \"Content-Type\": \"text/plain; charset=UTF-8\", \"Language\": \"da\", \"Plural-Forms\": \"nplurals=2; plural=(n != 1);\" }, \"translations\": { \"\": { \"\": { \"msgid\": \"\", \"comments\": { \"translator\": \"\\nTranslators:\\nJoas Schilling, 2024\\nRasmus Rosendahl-Kaa, 2024\\nMartin Bonde , 2025\\nFinn Sommer , 2025\\n\" }, \"msgstr\": [\"Last-Translator: Finn Sommer , 2025\\nLanguage-Team: Danish (https://app.transifex.com/nextcloud/teams/64236/da/)\\nContent-Type: text/plain; charset=UTF-8\\nLanguage: da\\nPlural-Forms: nplurals=2; plural=(n != 1);\\n\"] }, '\"{segment}\" is a forbidden file or folder name.': { \"msgid\": '\"{segment}\" is a forbidden file or folder name.', \"msgstr\": ['\"{segment}\" er et forbudt fil- eller mappenavn.'] }, '\"{segment}\" is a forbidden file type.': { \"msgid\": '\"{segment}\" is a forbidden file type.', \"msgstr\": ['\"{segment}\" er en forbudt filtype.'] }, '\"{segment}\" is not allowed inside a file or folder name.': { \"msgid\": '\"{segment}\" is not allowed inside a file or folder name.', \"msgstr\": ['\"{segment}\" er ikke tilladt i et fil- eller mappenavn.'] }, \"{count} file conflict\": { \"msgid\": \"{count} file conflict\", \"msgid_plural\": \"{count} files conflict\", \"msgstr\": [\"{count} fil konflikt\", \"{count} filer i konflikt\"] }, \"{count} file conflict in {dirname}\": { \"msgid\": \"{count} file conflict in {dirname}\", \"msgid_plural\": \"{count} file conflicts in {dirname}\", \"msgstr\": [\"{count} fil konflikt i {dirname}\", \"{count} filer i konflikt i {dirname}\"] }, \"{seconds} seconds left\": { \"msgid\": \"{seconds} seconds left\", \"msgid_plural\": \"{seconds} seconds left\", \"msgstr\": [\"{sekunder} sekunder tilbage\", \"{sekunder} sekunder tilbage\"] }, \"{time} left\": { \"msgid\": \"{time} left\", \"comments\": { \"extracted\": \"TRANSLATORS time has the format 00:00:00\" }, \"msgstr\": [\"{time} tilbage\"] }, \"a few seconds left\": { \"msgid\": \"a few seconds left\", \"msgstr\": [\"et par sekunder tilbage\"] }, \"assembling\": { \"msgid\": \"assembling\", \"msgstr\": [\"samling\"] }, \"Cancel\": { \"msgid\": \"Cancel\", \"msgstr\": [\"Annuller\"] }, \"Cancel the entire operation\": { \"msgid\": \"Cancel the entire operation\", \"msgstr\": [\"Annuller hele handlingen\"] }, \"Cancel uploads\": { \"msgid\": \"Cancel uploads\", \"msgstr\": [\"Annuller uploads\"] }, \"Continue\": { \"msgid\": \"Continue\", \"msgstr\": [\"Fortsæt\"] }, \"Create new\": { \"msgid\": \"Create new\", \"msgstr\": [\"Opret ny\"] }, \"estimating time left\": { \"msgid\": \"estimating time left\", \"msgstr\": [\"estimering af resterende tid\"] }, \"Existing version\": { \"msgid\": \"Existing version\", \"msgstr\": [\"Eksisterende version\"] }, \"Failed to assemble the chunks together\": { \"msgid\": \"Failed to assemble the chunks together\", \"msgstr\": [\"Mislykkedes at samle stumperne sammen\"] }, \"Failed to upload the file\": { \"msgid\": \"Failed to upload the file\", \"msgstr\": [\"Kunne ikke uploade filen\"] }, 'Filenames must not end with \"{segment}\".': { \"msgid\": 'Filenames must not end with \"{segment}\".', \"msgstr\": ['Filnavne må ikke slutte med \"{segment}\".'] }, \"If you select both versions, the incoming file will have a number added to its name.\": { \"msgid\": \"If you select both versions, the incoming file will have a number added to its name.\", \"msgstr\": [\"Hvis du vælger begge versioner, vil den indkommende fil have et nummer tilføjet til sit navn.\"] }, \"Invalid filename\": { \"msgid\": \"Invalid filename\", \"msgstr\": [\"Ugyldigt filnavn\"] }, \"Last modified date unknown\": { \"msgid\": \"Last modified date unknown\", \"msgstr\": [\"Sidste modifikationsdato ukendt\"] }, \"New\": { \"msgid\": \"New\", \"msgstr\": [\"Ny\"] }, \"New filename\": { \"msgid\": \"New filename\", \"msgstr\": [\"Nyt filnavn\"] }, \"New version\": { \"msgid\": \"New version\", \"msgstr\": [\"Ny version\"] }, \"paused\": { \"msgid\": \"paused\", \"msgstr\": [\"pauset\"] }, \"Preview image\": { \"msgid\": \"Preview image\", \"msgstr\": [\"Forhåndsvisning af billede\"] }, \"Rename\": { \"msgid\": \"Rename\", \"msgstr\": [\"Omdøb\"] }, \"Select all checkboxes\": { \"msgid\": \"Select all checkboxes\", \"msgstr\": [\"Vælg alle felter\"] }, \"Select all existing files\": { \"msgid\": \"Select all existing files\", \"msgstr\": [\"Vælg alle eksisterende filer\"] }, \"Select all new files\": { \"msgid\": \"Select all new files\", \"msgstr\": [\"Vælg alle nye filer\"] }, \"Skip\": { \"msgid\": \"Skip\", \"msgstr\": [\"Spring over\"] }, \"Skip {count} file\": { \"msgid\": \"Skip {count} file\", \"msgid_plural\": \"Skip {count} files\", \"msgstr\": [\"Spring {count} fil over\", \"Spring {count} fil over\"] }, \"Skip this file\": { \"msgid\": \"Skip this file\", \"msgstr\": [\"Spring denne fil over\"] }, \"Unknown size\": { \"msgid\": \"Unknown size\", \"msgstr\": [\"Ukendt størrelse\"] }, \"Upload\": { \"msgid\": \"Upload\", \"msgstr\": [\"Upload\"] }, \"Upload files\": { \"msgid\": \"Upload files\", \"msgstr\": [\"Upload filer\"] }, \"Upload folders\": { \"msgid\": \"Upload folders\", \"msgstr\": [\"Upload mapper\"] }, \"Upload from device\": { \"msgid\": \"Upload from device\", \"msgstr\": [\"Upload fra enhed\"] }, \"Upload has been cancelled\": { \"msgid\": \"Upload has been cancelled\", \"msgstr\": [\"Upload er blevet annulleret\"] }, \"Upload has been skipped\": { \"msgid\": \"Upload has been skipped\", \"msgstr\": [\"Upload er blevet sprunget over\"] }, 'Upload of \"{folder}\" has been skipped': { \"msgid\": 'Upload of \"{folder}\" has been skipped', \"msgstr\": ['Upload af \"{folder}\" er blevet sprunget over'] }, \"Upload progress\": { \"msgid\": \"Upload progress\", \"msgstr\": [\"Upload fremskridt\"] }, \"When an incoming folder is selected, any conflicting files within it will also be overwritten.\": { \"msgid\": \"When an incoming folder is selected, any conflicting files within it will also be overwritten.\", \"msgstr\": [\"Når en indgående mappe er valgt, vil alle modstridende filer i den også blive overskrevet.\"] }, \"When an incoming folder is selected, the content is written into the existing folder and a recursive conflict resolution is performed.\": { \"msgid\": \"When an incoming folder is selected, the content is written into the existing folder and a recursive conflict resolution is performed.\", \"msgstr\": [\"Når en indkommende mappe er valgt, vil dens indhold blive skrevet ind i den eksisterende mappe og en rekursiv konfliktløsning udføres.\"] }, \"Which files do you want to keep?\": { \"msgid\": \"Which files do you want to keep?\", \"msgstr\": [\"Hvilke filer ønsker du at beholde?\"] }, \"You can either rename the file, skip this file or cancel the whole operation.\": { \"msgid\": \"You can either rename the file, skip this file or cancel the whole operation.\", \"msgstr\": [\"Du kan enten omdøbe filen, springe denne fil over eller annullere hele handlingen.\"] }, \"You need to select at least one version of each file to continue.\": { \"msgid\": \"You need to select at least one version of each file to continue.\", \"msgstr\": [\"Du skal vælge mindst én version af hver fil for at fortsætte.\"] } } } } }, { \"locale\": \"de\", \"json\": { \"charset\": \"utf-8\", \"headers\": { \"Last-Translator\": \"Martin Wilichowski, 2025\", \"Language-Team\": \"German (https://app.transifex.com/nextcloud/teams/64236/de/)\", \"Content-Type\": \"text/plain; charset=UTF-8\", \"Language\": \"de\", \"Plural-Forms\": \"nplurals=2; plural=(n != 1);\" }, \"translations\": { \"\": { \"\": { \"msgid\": \"\", \"comments\": { \"translator\": \"\\nTranslators:\\nJoas Schilling, 2024\\nAndy Scherzinger , 2024\\nMark Ziegler , 2025\\nMario Siegmann , 2025\\nMartin Wilichowski, 2025\\n\" }, \"msgstr\": [\"Last-Translator: Martin Wilichowski, 2025\\nLanguage-Team: German (https://app.transifex.com/nextcloud/teams/64236/de/)\\nContent-Type: text/plain; charset=UTF-8\\nLanguage: de\\nPlural-Forms: nplurals=2; plural=(n != 1);\\n\"] }, '\"{segment}\" is a forbidden file or folder name.': { \"msgid\": '\"{segment}\" is a forbidden file or folder name.', \"msgstr\": ['\"{segment}\" ist ein verbotener Datei- oder Ordnername.'] }, '\"{segment}\" is a forbidden file type.': { \"msgid\": '\"{segment}\" is a forbidden file type.', \"msgstr\": ['\"{segment}\" ist ein verbotener Dateityp.'] }, '\"{segment}\" is not allowed inside a file or folder name.': { \"msgid\": '\"{segment}\" is not allowed inside a file or folder name.', \"msgstr\": ['\"{segment}\" ist in einem Datei- oder Ordnernamen nicht zulässig.'] }, \"{count} file conflict\": { \"msgid\": \"{count} file conflict\", \"msgid_plural\": \"{count} files conflict\", \"msgstr\": [\"{count} Datei-Konflikt\", \"{count} Datei-Konflikte\"] }, \"{count} file conflict in {dirname}\": { \"msgid\": \"{count} file conflict in {dirname}\", \"msgid_plural\": \"{count} file conflicts in {dirname}\", \"msgstr\": [\"{count} Datei-Konflikt in {dirname}\", \"{count} Datei-Konflikte in {dirname}\"] }, \"{seconds} seconds left\": { \"msgid\": \"{seconds} seconds left\", \"msgid_plural\": \"{seconds} seconds left\", \"msgstr\": [\"{seconds} Sekunde verbleibt\", \"{seconds} Sekunden verbleiben\"] }, \"{time} left\": { \"msgid\": \"{time} left\", \"comments\": { \"extracted\": \"TRANSLATORS time has the format 00:00:00\" }, \"msgstr\": [\"{time} verbleibend\"] }, \"a few seconds left\": { \"msgid\": \"a few seconds left\", \"msgstr\": [\"ein paar Sekunden verbleiben\"] }, \"assembling\": { \"msgid\": \"assembling\", \"msgstr\": [\"zusammenfügen\"] }, \"Cancel\": { \"msgid\": \"Cancel\", \"msgstr\": [\"Abbrechen\"] }, \"Cancel the entire operation\": { \"msgid\": \"Cancel the entire operation\", \"msgstr\": [\"Den gesamten Vorgang abbrechen\"] }, \"Cancel uploads\": { \"msgid\": \"Cancel uploads\", \"msgstr\": [\"Hochladen abbrechen\"] }, \"Continue\": { \"msgid\": \"Continue\", \"msgstr\": [\"Fortsetzen\"] }, \"Create new\": { \"msgid\": \"Create new\", \"msgstr\": [\"Neu erstellen\"] }, \"estimating time left\": { \"msgid\": \"estimating time left\", \"msgstr\": [\"Berechne verbleibende Zeit\"] }, \"Existing version\": { \"msgid\": \"Existing version\", \"msgstr\": [\"Vorhandene Version\"] }, \"Failed to assemble the chunks together\": { \"msgid\": \"Failed to assemble the chunks together\", \"msgstr\": [\"Die Teile konnten nicht zusammengefügt werden\"] }, \"Failed to upload the file\": { \"msgid\": \"Failed to upload the file\", \"msgstr\": [\"Die Datei konnte nicht hochgeladen werden\"] }, 'Filenames must not end with \"{segment}\".': { \"msgid\": 'Filenames must not end with \"{segment}\".', \"msgstr\": ['Dateinamen dürfen nicht mit \"{segment}\" enden.'] }, \"If you select both versions, the incoming file will have a number added to its name.\": { \"msgid\": \"If you select both versions, the incoming file will have a number added to its name.\", \"msgstr\": [\"Wenn du beide Versionen auswählst, wird der eingehenden Datei eine Nummer zum Namen hinzugefügt.\"] }, \"Invalid filename\": { \"msgid\": \"Invalid filename\", \"msgstr\": [\"Ungültiger Dateiname\"] }, \"Last modified date unknown\": { \"msgid\": \"Last modified date unknown\", \"msgstr\": [\"Datum der letzten Änderung unbekannt\"] }, \"New\": { \"msgid\": \"New\", \"msgstr\": [\"Neu\"] }, \"New filename\": { \"msgid\": \"New filename\", \"msgstr\": [\"Neuer Dateiname\"] }, \"New version\": { \"msgid\": \"New version\", \"msgstr\": [\"Neue Version\"] }, \"paused\": { \"msgid\": \"paused\", \"msgstr\": [\"Pausiert\"] }, \"Preview image\": { \"msgid\": \"Preview image\", \"msgstr\": [\"Vorschaubild\"] }, \"Rename\": { \"msgid\": \"Rename\", \"msgstr\": [\"Umbenennen\"] }, \"Select all checkboxes\": { \"msgid\": \"Select all checkboxes\", \"msgstr\": [\"Alle Kontrollkästchen aktivieren\"] }, \"Select all existing files\": { \"msgid\": \"Select all existing files\", \"msgstr\": [\"Alle vorhandenen Dateien auswählen\"] }, \"Select all new files\": { \"msgid\": \"Select all new files\", \"msgstr\": [\"Alle neuen Dateien auswählen\"] }, \"Skip\": { \"msgid\": \"Skip\", \"msgstr\": [\"Überspringen\"] }, \"Skip {count} file\": { \"msgid\": \"Skip {count} file\", \"msgid_plural\": \"Skip {count} files\", \"msgstr\": [\"{count} Datei überspringen\", \"{count} Dateien überspringen\"] }, \"Skip this file\": { \"msgid\": \"Skip this file\", \"msgstr\": [\"Diese Datei überspringen\"] }, \"Unknown size\": { \"msgid\": \"Unknown size\", \"msgstr\": [\"Unbekannte Größe\"] }, \"Upload\": { \"msgid\": \"Upload\", \"msgstr\": [\"Hochladen\"] }, \"Upload files\": { \"msgid\": \"Upload files\", \"msgstr\": [\"Dateien hochladen\"] }, \"Upload folders\": { \"msgid\": \"Upload folders\", \"msgstr\": [\"Ordner hochladen\"] }, \"Upload from device\": { \"msgid\": \"Upload from device\", \"msgstr\": [\"Vom Gerät hochladen\"] }, \"Upload has been cancelled\": { \"msgid\": \"Upload has been cancelled\", \"msgstr\": [\"Das Hochladen wurde abgebrochen\"] }, \"Upload has been skipped\": { \"msgid\": \"Upload has been skipped\", \"msgstr\": [\"Das Hochladen wurde übersprungen\"] }, 'Upload of \"{folder}\" has been skipped': { \"msgid\": 'Upload of \"{folder}\" has been skipped', \"msgstr\": ['Das Hochladen von \"{folder}\" wurde übersprungen'] }, \"Upload progress\": { \"msgid\": \"Upload progress\", \"msgstr\": [\"Fortschritt beim Hochladen\"] }, \"When an incoming folder is selected, any conflicting files within it will also be overwritten.\": { \"msgid\": \"When an incoming folder is selected, any conflicting files within it will also be overwritten.\", \"msgstr\": [\"Wenn ein eingehender Ordner ausgewählt wird, werden alle darin enthaltenen Konfliktdateien ebenfalls überschrieben.\"] }, \"When an incoming folder is selected, the content is written into the existing folder and a recursive conflict resolution is performed.\": { \"msgid\": \"When an incoming folder is selected, the content is written into the existing folder and a recursive conflict resolution is performed.\", \"msgstr\": [\"Bei Auswahl eines eingehenden Ordners wird der Inhalt in den vorhandenen Ordner geschrieben und eine rekursive Konfliktlösung durchgeführt.\"] }, \"Which files do you want to keep?\": { \"msgid\": \"Which files do you want to keep?\", \"msgstr\": [\"Welche Dateien möchtest du behalten?\"] }, \"You can either rename the file, skip this file or cancel the whole operation.\": { \"msgid\": \"You can either rename the file, skip this file or cancel the whole operation.\", \"msgstr\": [\"Du kannst die Datei entweder umbenennen, diese Datei überspringen oder den gesamten Vorgang abbrechen.\"] }, \"You need to select at least one version of each file to continue.\": { \"msgid\": \"You need to select at least one version of each file to continue.\", \"msgstr\": [\"Du musst mindestens eine Version jeder Datei auswählen, um fortzufahren.\"] } } } } }, { \"locale\": \"de_DE\", \"json\": { \"charset\": \"utf-8\", \"headers\": { \"Last-Translator\": \"Martin Wilichowski, 2025\", \"Language-Team\": \"German (Germany) (https://app.transifex.com/nextcloud/teams/64236/de_DE/)\", \"Content-Type\": \"text/plain; charset=UTF-8\", \"Language\": \"de_DE\", \"Plural-Forms\": \"nplurals=2; plural=(n != 1);\" }, \"translations\": { \"\": { \"\": { \"msgid\": \"\", \"comments\": { \"translator\": \"\\nTranslators:\\nJoas Schilling, 2024\\nMark Ziegler , 2025\\nMario Siegmann , 2025\\nMartin Wilichowski, 2025\\n\" }, \"msgstr\": [\"Last-Translator: Martin Wilichowski, 2025\\nLanguage-Team: German (Germany) (https://app.transifex.com/nextcloud/teams/64236/de_DE/)\\nContent-Type: text/plain; charset=UTF-8\\nLanguage: de_DE\\nPlural-Forms: nplurals=2; plural=(n != 1);\\n\"] }, '\"{segment}\" is a forbidden file or folder name.': { \"msgid\": '\"{segment}\" is a forbidden file or folder name.', \"msgstr\": ['\"{segment}\" ist ein verbotener Datei- oder Ordnername.'] }, '\"{segment}\" is a forbidden file type.': { \"msgid\": '\"{segment}\" is a forbidden file type.', \"msgstr\": ['\"{segment}\" ist ein verbotener Dateityp.'] }, '\"{segment}\" is not allowed inside a file or folder name.': { \"msgid\": '\"{segment}\" is not allowed inside a file or folder name.', \"msgstr\": ['\"{segment}\" ist in einem Datei- oder Ordnernamen nicht zulässig.'] }, \"{count} file conflict\": { \"msgid\": \"{count} file conflict\", \"msgid_plural\": \"{count} files conflict\", \"msgstr\": [\"{count} Datei-Konflikt\", \"{count} Datei-Konflikte\"] }, \"{count} file conflict in {dirname}\": { \"msgid\": \"{count} file conflict in {dirname}\", \"msgid_plural\": \"{count} file conflicts in {dirname}\", \"msgstr\": [\"{count} Datei-Konflikt in {dirname}\", \"{count} Datei-Konflikte in {dirname}\"] }, \"{seconds} seconds left\": { \"msgid\": \"{seconds} seconds left\", \"msgid_plural\": \"{seconds} seconds left\", \"msgstr\": [\"{seconds} Sekunde verbleibt\", \"{seconds} Sekunden verbleiben\"] }, \"{time} left\": { \"msgid\": \"{time} left\", \"comments\": { \"extracted\": \"TRANSLATORS time has the format 00:00:00\" }, \"msgstr\": [\"{time} verbleibend\"] }, \"a few seconds left\": { \"msgid\": \"a few seconds left\", \"msgstr\": [\"ein paar Sekunden verbleiben\"] }, \"assembling\": { \"msgid\": \"assembling\", \"msgstr\": [\"zusammenfügen\"] }, \"Cancel\": { \"msgid\": \"Cancel\", \"msgstr\": [\"Abbrechen\"] }, \"Cancel the entire operation\": { \"msgid\": \"Cancel the entire operation\", \"msgstr\": [\"Den gesamten Vorgang abbrechen\"] }, \"Cancel uploads\": { \"msgid\": \"Cancel uploads\", \"msgstr\": [\"Hochladen abbrechen\"] }, \"Continue\": { \"msgid\": \"Continue\", \"msgstr\": [\"Fortsetzen\"] }, \"Create new\": { \"msgid\": \"Create new\", \"msgstr\": [\"Neu erstellen\"] }, \"estimating time left\": { \"msgid\": \"estimating time left\", \"msgstr\": [\"Berechne verbleibende Zeit\"] }, \"Existing version\": { \"msgid\": \"Existing version\", \"msgstr\": [\"Vorhandene Version\"] }, \"Failed to assemble the chunks together\": { \"msgid\": \"Failed to assemble the chunks together\", \"msgstr\": [\"Die Teile konnten nicht zusammengefügt werden\"] }, \"Failed to upload the file\": { \"msgid\": \"Failed to upload the file\", \"msgstr\": [\"Die Datei konnte nicht hochgeladen werden\"] }, 'Filenames must not end with \"{segment}\".': { \"msgid\": 'Filenames must not end with \"{segment}\".', \"msgstr\": ['Dateinamen dürfen nicht mit \"{segment}\" enden.'] }, \"If you select both versions, the incoming file will have a number added to its name.\": { \"msgid\": \"If you select both versions, the incoming file will have a number added to its name.\", \"msgstr\": [\"Wenn Sie beide Versionen auswählen, wird der eingehenden Datei eine Nummer zum Namen hinzugefügt.\"] }, \"Invalid filename\": { \"msgid\": \"Invalid filename\", \"msgstr\": [\"Ungültiger Dateiname\"] }, \"Last modified date unknown\": { \"msgid\": \"Last modified date unknown\", \"msgstr\": [\"Datum der letzten Änderung unbekannt\"] }, \"New\": { \"msgid\": \"New\", \"msgstr\": [\"Neu\"] }, \"New filename\": { \"msgid\": \"New filename\", \"msgstr\": [\"Neuer Dateiname\"] }, \"New version\": { \"msgid\": \"New version\", \"msgstr\": [\"Neue Version\"] }, \"paused\": { \"msgid\": \"paused\", \"msgstr\": [\"Pausiert\"] }, \"Preview image\": { \"msgid\": \"Preview image\", \"msgstr\": [\"Vorschaubild\"] }, \"Rename\": { \"msgid\": \"Rename\", \"msgstr\": [\"Umbenennen\"] }, \"Select all checkboxes\": { \"msgid\": \"Select all checkboxes\", \"msgstr\": [\"Alle Kontrollkästchen aktivieren\"] }, \"Select all existing files\": { \"msgid\": \"Select all existing files\", \"msgstr\": [\"Alle vorhandenen Dateien auswählen\"] }, \"Select all new files\": { \"msgid\": \"Select all new files\", \"msgstr\": [\"Alle neuen Dateien auswählen\"] }, \"Skip\": { \"msgid\": \"Skip\", \"msgstr\": [\"Überspringen\"] }, \"Skip {count} file\": { \"msgid\": \"Skip {count} file\", \"msgid_plural\": \"Skip {count} files\", \"msgstr\": [\"{count} Datei überspringen\", \"{count} Dateien überspringen\"] }, \"Skip this file\": { \"msgid\": \"Skip this file\", \"msgstr\": [\"Diese Datei überspringen\"] }, \"Unknown size\": { \"msgid\": \"Unknown size\", \"msgstr\": [\"Unbekannte Größe\"] }, \"Upload\": { \"msgid\": \"Upload\", \"msgstr\": [\"Hochladen\"] }, \"Upload files\": { \"msgid\": \"Upload files\", \"msgstr\": [\"Dateien hochladen\"] }, \"Upload folders\": { \"msgid\": \"Upload folders\", \"msgstr\": [\"Ordner hochladen\"] }, \"Upload from device\": { \"msgid\": \"Upload from device\", \"msgstr\": [\"Vom Gerät hochladen\"] }, \"Upload has been cancelled\": { \"msgid\": \"Upload has been cancelled\", \"msgstr\": [\"Das Hochladen wurde abgebrochen\"] }, \"Upload has been skipped\": { \"msgid\": \"Upload has been skipped\", \"msgstr\": [\"Das Hochladen wurde übersprungen\"] }, 'Upload of \"{folder}\" has been skipped': { \"msgid\": 'Upload of \"{folder}\" has been skipped', \"msgstr\": ['Das Hochladen von \"{folder}\" wurde übersprungen'] }, \"Upload progress\": { \"msgid\": \"Upload progress\", \"msgstr\": [\"Fortschritt beim Hochladen\"] }, \"When an incoming folder is selected, any conflicting files within it will also be overwritten.\": { \"msgid\": \"When an incoming folder is selected, any conflicting files within it will also be overwritten.\", \"msgstr\": [\"Wenn ein eingehender Ordner ausgewählt wird, werden alle darin enthaltenen Konfliktdateien ebenfalls überschrieben.\"] }, \"When an incoming folder is selected, the content is written into the existing folder and a recursive conflict resolution is performed.\": { \"msgid\": \"When an incoming folder is selected, the content is written into the existing folder and a recursive conflict resolution is performed.\", \"msgstr\": [\"Bei Auswahl eines eingehenden Ordners wird der Inhalt in den vorhandenen Ordner geschrieben und eine rekursive Konfliktlösung durchgeführt.\"] }, \"Which files do you want to keep?\": { \"msgid\": \"Which files do you want to keep?\", \"msgstr\": [\"Welche Dateien möchten Sie behalten?\"] }, \"You can either rename the file, skip this file or cancel the whole operation.\": { \"msgid\": \"You can either rename the file, skip this file or cancel the whole operation.\", \"msgstr\": [\"Sie können die Datei entweder umbenennen, diese Datei überspringen oder den gesamten Vorgang abbrechen.\"] }, \"You need to select at least one version of each file to continue.\": { \"msgid\": \"You need to select at least one version of each file to continue.\", \"msgstr\": [\"Sie müssen mindestens eine Version jeder Datei auswählen, um fortzufahren.\"] } } } } }, { \"locale\": \"el\", \"json\": { \"charset\": \"utf-8\", \"headers\": { \"Last-Translator\": \"Γιάννος, 2025\", \"Language-Team\": \"Greek (https://app.transifex.com/nextcloud/teams/64236/el/)\", \"Content-Type\": \"text/plain; charset=UTF-8\", \"Language\": \"el\", \"Plural-Forms\": \"nplurals=2; plural=(n != 1);\" }, \"translations\": { \"\": { \"\": { \"msgid\": \"\", \"comments\": { \"translator\": \"\\nTranslators:\\nJoas Schilling, 2024\\nEfstathios Iosifidis , 2025\\nΓιάννος, 2025\\n\" }, \"msgstr\": [\"Last-Translator: Γιάννος, 2025\\nLanguage-Team: Greek (https://app.transifex.com/nextcloud/teams/64236/el/)\\nContent-Type: text/plain; charset=UTF-8\\nLanguage: el\\nPlural-Forms: nplurals=2; plural=(n != 1);\\n\"] }, '\"{segment}\" is a forbidden file or folder name.': { \"msgid\": '\"{segment}\" is a forbidden file or folder name.', \"msgstr\": ['\"{segment}\" είναι απαγορευμένο όνομα αρχείου ή φακέλου.'] }, '\"{segment}\" is a forbidden file type.': { \"msgid\": '\"{segment}\" is a forbidden file type.', \"msgstr\": ['Το \"{segment}\" είναι απαγορευμένος τύπος αρχείου.'] }, '\"{segment}\" is not allowed inside a file or folder name.': { \"msgid\": '\"{segment}\" is not allowed inside a file or folder name.', \"msgstr\": ['Το \"{segment}\" δεν επιτρέπεται μέσα στο όνομα ενός αρχείου ή φακέλου.'] }, \"{count} file conflict\": { \"msgid\": \"{count} file conflict\", \"msgid_plural\": \"{count} files conflict\", \"msgstr\": [\"{count} αρχείο σε διένεξη\", \"{count} αρχεία σε διένεξη\"] }, \"{count} file conflict in {dirname}\": { \"msgid\": \"{count} file conflict in {dirname}\", \"msgid_plural\": \"{count} file conflicts in {dirname}\", \"msgstr\": [\"{count} αρχείο σε διένεξη στον φάκελο {dirname}\", \"{count} αρχεία σε διένεξη στον φάκελο {dirname}\"] }, \"{seconds} seconds left\": { \"msgid\": \"{seconds} seconds left\", \"msgid_plural\": \"{seconds} seconds left\", \"msgstr\": [\"Απομένει {seconds} δευτερόλεπτο\", \"Απομένουν {seconds} δευτερόλεπτα\"] }, \"{time} left\": { \"msgid\": \"{time} left\", \"comments\": { \"extracted\": \"TRANSLATORS time has the format 00:00:00\" }, \"msgstr\": [\"απομένουν {time}\"] }, \"a few seconds left\": { \"msgid\": \"a few seconds left\", \"msgstr\": [\"απομένουν λίγα δευτερόλεπτα\"] }, \"assembling\": { \"msgid\": \"assembling\", \"msgstr\": [\"συναρμολόγηση\"] }, \"Cancel\": { \"msgid\": \"Cancel\", \"msgstr\": [\"Ακύρωση\"] }, \"Cancel the entire operation\": { \"msgid\": \"Cancel the entire operation\", \"msgstr\": [\"Ακύρωση όλης της λειτουργίας\"] }, \"Cancel uploads\": { \"msgid\": \"Cancel uploads\", \"msgstr\": [\"Ακύρωση μεταφορτώσεων\"] }, \"Continue\": { \"msgid\": \"Continue\", \"msgstr\": [\"Συνέχεια\"] }, \"Create new\": { \"msgid\": \"Create new\", \"msgstr\": [\"Δημιουργία νέου\"] }, \"estimating time left\": { \"msgid\": \"estimating time left\", \"msgstr\": [\"εκτίμηση του χρόνου που απομένει\"] }, \"Existing version\": { \"msgid\": \"Existing version\", \"msgstr\": [\"Υπάρχουσα έκδοση\"] }, \"Failed to assemble the chunks together\": { \"msgid\": \"Failed to assemble the chunks together\", \"msgstr\": [\"Αποτυχία συναρμολόγησης των κομματιών\"] }, \"Failed to upload the file\": { \"msgid\": \"Failed to upload the file\", \"msgstr\": [\"Αποτυχία μεταφόρτωσης του αρχείου\"] }, 'Filenames must not end with \"{segment}\".': { \"msgid\": 'Filenames must not end with \"{segment}\".', \"msgstr\": ['Τα ονόματα αρχείων δεν πρέπει να τελειώνουν με \"{segment}\".'] }, \"If you select both versions, the incoming file will have a number added to its name.\": { \"msgid\": \"If you select both versions, the incoming file will have a number added to its name.\", \"msgstr\": [\"Αν επιλέξετε και τις δύο εκδόσεις, το εισερχόμενο αρχείο θα έχει έναν αριθμό προσαρτημένο στο όνομά του.\"] }, \"Invalid filename\": { \"msgid\": \"Invalid filename\", \"msgstr\": [\"Μη έγκυρο όνομα αρχείου\"] }, \"Last modified date unknown\": { \"msgid\": \"Last modified date unknown\", \"msgstr\": [\"Άγνωστη ημερομηνία τελευταίας τροποποίησης\"] }, \"New\": { \"msgid\": \"New\", \"msgstr\": [\"Νέο\"] }, \"New filename\": { \"msgid\": \"New filename\", \"msgstr\": [\"Νέο όνομα αρχείου\"] }, \"New version\": { \"msgid\": \"New version\", \"msgstr\": [\"Νέα έκδοση\"] }, \"paused\": { \"msgid\": \"paused\", \"msgstr\": [\"σε παύση\"] }, \"Preview image\": { \"msgid\": \"Preview image\", \"msgstr\": [\"Προεπισκόπηση εικόνας\"] }, \"Rename\": { \"msgid\": \"Rename\", \"msgstr\": [\"Μετονομασία\"] }, \"Select all checkboxes\": { \"msgid\": \"Select all checkboxes\", \"msgstr\": [\"Επιλογή όλων των πλαισίων ελέγχου\"] }, \"Select all existing files\": { \"msgid\": \"Select all existing files\", \"msgstr\": [\"Επιλογή όλων των υπαρχόντων αρχείων\"] }, \"Select all new files\": { \"msgid\": \"Select all new files\", \"msgstr\": [\"Επιλογή όλων των νέων αρχείων\"] }, \"Skip\": { \"msgid\": \"Skip\", \"msgstr\": [\"Παράλειψη\"] }, \"Skip {count} file\": { \"msgid\": \"Skip {count} file\", \"msgid_plural\": \"Skip {count} files\", \"msgstr\": [\"Παράλειψη {count} αρχείου\", \"Παράλειψη {count} αρχείων\"] }, \"Skip this file\": { \"msgid\": \"Skip this file\", \"msgstr\": [\"Παραλείψτε αυτό το αρχείο\"] }, \"Unknown size\": { \"msgid\": \"Unknown size\", \"msgstr\": [\"Άγνωστο μέγεθος\"] }, \"Upload\": { \"msgid\": \"Upload\", \"msgstr\": [\"Μεταφόρτωση\"] }, \"Upload files\": { \"msgid\": \"Upload files\", \"msgstr\": [\"Μεταφόρτωση αρχείων\"] }, \"Upload folders\": { \"msgid\": \"Upload folders\", \"msgstr\": [\"Μεταφόρτωση φακέλων\"] }, \"Upload from device\": { \"msgid\": \"Upload from device\", \"msgstr\": [\"Μεταφόρτωση από συσκευή\"] }, \"Upload has been cancelled\": { \"msgid\": \"Upload has been cancelled\", \"msgstr\": [\"Η μεταφόρτωση ακυρώθηκε\"] }, \"Upload has been skipped\": { \"msgid\": \"Upload has been skipped\", \"msgstr\": [\"Η μεταφόρτωση παραλείφθηκε\"] }, 'Upload of \"{folder}\" has been skipped': { \"msgid\": 'Upload of \"{folder}\" has been skipped', \"msgstr\": ['Η μεταφόρτωση του \"{folder}\" παραλείφθηκε'] }, \"Upload progress\": { \"msgid\": \"Upload progress\", \"msgstr\": [\"Πρόοδος μεταφόρτωσης\"] }, \"When an incoming folder is selected, any conflicting files within it will also be overwritten.\": { \"msgid\": \"When an incoming folder is selected, any conflicting files within it will also be overwritten.\", \"msgstr\": [\"Όταν επιλέγεται ένας εισερχόμενος φάκελος, όλα τα αρχεία σε διένεξη μέσα σε αυτόν θα αντικατασταθούν.\"] }, \"When an incoming folder is selected, the content is written into the existing folder and a recursive conflict resolution is performed.\": { \"msgid\": \"When an incoming folder is selected, the content is written into the existing folder and a recursive conflict resolution is performed.\", \"msgstr\": [\"Όταν επιλέγεται ένας εισερχόμενος φάκελος, το περιεχόμενό του γράφεται στον υπάρχοντα φάκελο και εκτελείται αναδρομική επίλυση διενέξεων.\"] }, \"Which files do you want to keep?\": { \"msgid\": \"Which files do you want to keep?\", \"msgstr\": [\"Ποια αρχεία θέλετε να διατηρήσετε;\"] }, \"You can either rename the file, skip this file or cancel the whole operation.\": { \"msgid\": \"You can either rename the file, skip this file or cancel the whole operation.\", \"msgstr\": [\"Μπορείτε είτε να μετονομάσετε το αρχείο, να παραλείψετε αυτό το αρχείο ή να ακυρώσετε όλη τη λειτουργία.\"] }, \"You need to select at least one version of each file to continue.\": { \"msgid\": \"You need to select at least one version of each file to continue.\", \"msgstr\": [\"Πρέπει να επιλέξετε τουλάχιστον μία έκδοση κάθε αρχείου για να συνεχίσετε.\"] } } } } }, { \"locale\": \"en_GB\", \"json\": { \"charset\": \"utf-8\", \"headers\": { \"Last-Translator\": \"Andi Chandler , 2025\", \"Language-Team\": \"English (United Kingdom) (https://app.transifex.com/nextcloud/teams/64236/en_GB/)\", \"Content-Type\": \"text/plain; charset=UTF-8\", \"Language\": \"en_GB\", \"Plural-Forms\": \"nplurals=2; plural=(n != 1);\" }, \"translations\": { \"\": { \"\": { \"msgid\": \"\", \"comments\": { \"translator\": \"\\nTranslators:\\nJoas Schilling, 2024\\nAndi Chandler , 2025\\n\" }, \"msgstr\": [\"Last-Translator: Andi Chandler , 2025\\nLanguage-Team: English (United Kingdom) (https://app.transifex.com/nextcloud/teams/64236/en_GB/)\\nContent-Type: text/plain; charset=UTF-8\\nLanguage: en_GB\\nPlural-Forms: nplurals=2; plural=(n != 1);\\n\"] }, '\"{segment}\" is a forbidden file or folder name.': { \"msgid\": '\"{segment}\" is a forbidden file or folder name.', \"msgstr\": ['\"{segment}\" is a forbidden file or folder name.'] }, '\"{segment}\" is a forbidden file type.': { \"msgid\": '\"{segment}\" is a forbidden file type.', \"msgstr\": ['\"{segment}\" is a forbidden file type.'] }, '\"{segment}\" is not allowed inside a file or folder name.': { \"msgid\": '\"{segment}\" is not allowed inside a file or folder name.', \"msgstr\": ['\"{segment}\" is not allowed inside a file or folder name.'] }, \"{count} file conflict\": { \"msgid\": \"{count} file conflict\", \"msgid_plural\": \"{count} files conflict\", \"msgstr\": [\"{count} file conflict\", \"{count} files conflict\"] }, \"{count} file conflict in {dirname}\": { \"msgid\": \"{count} file conflict in {dirname}\", \"msgid_plural\": \"{count} file conflicts in {dirname}\", \"msgstr\": [\"{count} file conflict in {dirname}\", \"{count} file conflicts in {dirname}\"] }, \"{seconds} seconds left\": { \"msgid\": \"{seconds} seconds left\", \"msgid_plural\": \"{seconds} seconds left\", \"msgstr\": [\"{seconds} seconds left\", \"{seconds} seconds left\"] }, \"{time} left\": { \"msgid\": \"{time} left\", \"comments\": { \"extracted\": \"TRANSLATORS time has the format 00:00:00\" }, \"msgstr\": [\"{time} left\"] }, \"a few seconds left\": { \"msgid\": \"a few seconds left\", \"msgstr\": [\"a few seconds left\"] }, \"assembling\": { \"msgid\": \"assembling\", \"msgstr\": [\"assembling\"] }, \"Cancel\": { \"msgid\": \"Cancel\", \"msgstr\": [\"Cancel\"] }, \"Cancel the entire operation\": { \"msgid\": \"Cancel the entire operation\", \"msgstr\": [\"Cancel the entire operation\"] }, \"Cancel uploads\": { \"msgid\": \"Cancel uploads\", \"msgstr\": [\"Cancel uploads\"] }, \"Continue\": { \"msgid\": \"Continue\", \"msgstr\": [\"Continue\"] }, \"Create new\": { \"msgid\": \"Create new\", \"msgstr\": [\"Create new\"] }, \"estimating time left\": { \"msgid\": \"estimating time left\", \"msgstr\": [\"estimating time left\"] }, \"Existing version\": { \"msgid\": \"Existing version\", \"msgstr\": [\"Existing version\"] }, \"Failed to assemble the chunks together\": { \"msgid\": \"Failed to assemble the chunks together\", \"msgstr\": [\"Failed to assemble the chunks together\"] }, \"Failed to upload the file\": { \"msgid\": \"Failed to upload the file\", \"msgstr\": [\"Failed to upload the file\"] }, 'Filenames must not end with \"{segment}\".': { \"msgid\": 'Filenames must not end with \"{segment}\".', \"msgstr\": ['Filenames must not end with \"{segment}\".'] }, \"If you select both versions, the incoming file will have a number added to its name.\": { \"msgid\": \"If you select both versions, the incoming file will have a number added to its name.\", \"msgstr\": [\"If you select both versions, the incoming file will have a number added to its name.\"] }, \"Invalid filename\": { \"msgid\": \"Invalid filename\", \"msgstr\": [\"Invalid filename\"] }, \"Last modified date unknown\": { \"msgid\": \"Last modified date unknown\", \"msgstr\": [\"Last modified date unknown\"] }, \"New\": { \"msgid\": \"New\", \"msgstr\": [\"New\"] }, \"New filename\": { \"msgid\": \"New filename\", \"msgstr\": [\"New filename\"] }, \"New version\": { \"msgid\": \"New version\", \"msgstr\": [\"New version\"] }, \"paused\": { \"msgid\": \"paused\", \"msgstr\": [\"paused\"] }, \"Preview image\": { \"msgid\": \"Preview image\", \"msgstr\": [\"Preview image\"] }, \"Rename\": { \"msgid\": \"Rename\", \"msgstr\": [\"Rename\"] }, \"Select all checkboxes\": { \"msgid\": \"Select all checkboxes\", \"msgstr\": [\"Select all checkboxes\"] }, \"Select all existing files\": { \"msgid\": \"Select all existing files\", \"msgstr\": [\"Select all existing files\"] }, \"Select all new files\": { \"msgid\": \"Select all new files\", \"msgstr\": [\"Select all new files\"] }, \"Skip\": { \"msgid\": \"Skip\", \"msgstr\": [\"Skip\"] }, \"Skip {count} file\": { \"msgid\": \"Skip {count} file\", \"msgid_plural\": \"Skip {count} files\", \"msgstr\": [\"Skip {count} file\", \"Skip {count} files\"] }, \"Skip this file\": { \"msgid\": \"Skip this file\", \"msgstr\": [\"Skip this file\"] }, \"Unknown size\": { \"msgid\": \"Unknown size\", \"msgstr\": [\"Unknown size\"] }, \"Upload\": { \"msgid\": \"Upload\", \"msgstr\": [\"Upload\"] }, \"Upload files\": { \"msgid\": \"Upload files\", \"msgstr\": [\"Upload files\"] }, \"Upload folders\": { \"msgid\": \"Upload folders\", \"msgstr\": [\"Upload folders\"] }, \"Upload from device\": { \"msgid\": \"Upload from device\", \"msgstr\": [\"Upload from device\"] }, \"Upload has been cancelled\": { \"msgid\": \"Upload has been cancelled\", \"msgstr\": [\"Upload has been cancelled\"] }, \"Upload has been skipped\": { \"msgid\": \"Upload has been skipped\", \"msgstr\": [\"Upload has been skipped\"] }, 'Upload of \"{folder}\" has been skipped': { \"msgid\": 'Upload of \"{folder}\" has been skipped', \"msgstr\": ['Upload of \"{folder}\" has been skipped'] }, \"Upload progress\": { \"msgid\": \"Upload progress\", \"msgstr\": [\"Upload progress\"] }, \"When an incoming folder is selected, any conflicting files within it will also be overwritten.\": { \"msgid\": \"When an incoming folder is selected, any conflicting files within it will also be overwritten.\", \"msgstr\": [\"When an incoming folder is selected, any conflicting files within it will also be overwritten.\"] }, \"When an incoming folder is selected, the content is written into the existing folder and a recursive conflict resolution is performed.\": { \"msgid\": \"When an incoming folder is selected, the content is written into the existing folder and a recursive conflict resolution is performed.\", \"msgstr\": [\"When an incoming folder is selected, the content is written into the existing folder and a recursive conflict resolution is performed.\"] }, \"Which files do you want to keep?\": { \"msgid\": \"Which files do you want to keep?\", \"msgstr\": [\"Which files do you want to keep?\"] }, \"You can either rename the file, skip this file or cancel the whole operation.\": { \"msgid\": \"You can either rename the file, skip this file or cancel the whole operation.\", \"msgstr\": [\"You can either rename the file, skip this file or cancel the whole operation.\"] }, \"You need to select at least one version of each file to continue.\": { \"msgid\": \"You need to select at least one version of each file to continue.\", \"msgstr\": [\"You need to select at least one version of each file to continue.\"] } } } } }, { \"locale\": \"eo\", \"json\": { \"charset\": \"utf-8\", \"headers\": { \"Last-Translator\": \"Transifex Bot <>, 2022\", \"Language-Team\": \"Esperanto (https://www.transifex.com/nextcloud/teams/64236/eo/)\", \"Content-Type\": \"text/plain; charset=UTF-8\", \"Language\": \"eo\", \"Plural-Forms\": \"nplurals=2; plural=(n != 1);\" }, \"translations\": { \"\": { \"\": { \"msgid\": \"\", \"comments\": { \"translator\": \"\\nTranslators:\\nTransifex Bot <>, 2022\\n\" }, \"msgstr\": [\"Last-Translator: Transifex Bot <>, 2022\\nLanguage-Team: Esperanto (https://www.transifex.com/nextcloud/teams/64236/eo/)\\nContent-Type: text/plain; charset=UTF-8\\nLanguage: eo\\nPlural-Forms: nplurals=2; plural=(n != 1);\\n\"] }, \"{estimate} seconds left\": { \"msgid\": \"{estimate} seconds left\", \"msgstr\": [\"\"] }, \"{hours} hours and {minutes} minutes left\": { \"msgid\": \"{hours} hours and {minutes} minutes left\", \"msgstr\": [\"\"] }, \"{minutes} minutes left\": { \"msgid\": \"{minutes} minutes left\", \"msgstr\": [\"\"] }, \"a few seconds left\": { \"msgid\": \"a few seconds left\", \"msgstr\": [\"\"] }, \"Add\": { \"msgid\": \"Add\", \"msgstr\": [\"\"] }, \"Cancel uploads\": { \"msgid\": \"Cancel uploads\", \"msgstr\": [\"\"] }, \"estimating time left\": { \"msgid\": \"estimating time left\", \"msgstr\": [\"\"] }, \"paused\": { \"msgid\": \"paused\", \"msgstr\": [\"\"] } } } } }, { \"locale\": \"es\", \"json\": { \"charset\": \"utf-8\", \"headers\": { \"Last-Translator\": \"Julio C. Ortega, 2025\", \"Language-Team\": \"Spanish (https://app.transifex.com/nextcloud/teams/64236/es/)\", \"Content-Type\": \"text/plain; charset=UTF-8\", \"Language\": \"es\", \"Plural-Forms\": \"nplurals=3; plural=n == 1 ? 0 : n != 0 && n % 1000000 == 0 ? 1 : 2;\" }, \"translations\": { \"\": { \"\": { \"msgid\": \"\", \"comments\": { \"translator\": \"\\nTranslators:\\nJoas Schilling, 2024\\nFranciscoFJ , 2024\\nJulio C. Ortega, 2025\\n\" }, \"msgstr\": [\"Last-Translator: Julio C. Ortega, 2025\\nLanguage-Team: Spanish (https://app.transifex.com/nextcloud/teams/64236/es/)\\nContent-Type: text/plain; charset=UTF-8\\nLanguage: es\\nPlural-Forms: nplurals=3; plural=n == 1 ? 0 : n != 0 && n % 1000000 == 0 ? 1 : 2;\\n\"] }, '\"{segment}\" is a forbidden file or folder name.': { \"msgid\": '\"{segment}\" is a forbidden file or folder name.', \"msgstr\": ['\"{segment}\" es un nombre de archivo o carpeta no permitido.'] }, '\"{segment}\" is a forbidden file type.': { \"msgid\": '\"{segment}\" is a forbidden file type.', \"msgstr\": ['\"{segment}\" es un tipo de archivo no permitido.'] }, '\"{segment}\" is not allowed inside a file or folder name.': { \"msgid\": '\"{segment}\" is not allowed inside a file or folder name.', \"msgstr\": ['\"{segment}\" no está permitido dentro del nombre de un archivo o carpeta.'] }, \"{count} file conflict\": { \"msgid\": \"{count} file conflict\", \"msgid_plural\": \"{count} files conflict\", \"msgstr\": [\"{count} conflicto de archivo\", \"{count} conflictos de archivo\", \"{count} conflictos de archivo\"] }, \"{count} file conflict in {dirname}\": { \"msgid\": \"{count} file conflict in {dirname}\", \"msgid_plural\": \"{count} file conflicts in {dirname}\", \"msgstr\": [\"{count} conflicto de archivo en {dirname}\", \"{count} conflictos de archivo en {dirname}\", \"{count} conflictos de archivo en {dirname}\"] }, \"{seconds} seconds left\": { \"msgid\": \"{seconds} seconds left\", \"msgid_plural\": \"{seconds} seconds left\", \"msgstr\": [\"queda {seconds} segundo\", \"quedan {seconds} segundos\", \"quedan {seconds} segundos\"] }, \"{time} left\": { \"msgid\": \"{time} left\", \"comments\": { \"extracted\": \"TRANSLATORS time has the format 00:00:00\" }, \"msgstr\": [\"{time} restante\"] }, \"a few seconds left\": { \"msgid\": \"a few seconds left\", \"msgstr\": [\"quedan unos segundos\"] }, \"assembling\": { \"msgid\": \"assembling\", \"msgstr\": [\"ensamblando\"] }, \"Cancel\": { \"msgid\": \"Cancel\", \"msgstr\": [\"Cancelar\"] }, \"Cancel the entire operation\": { \"msgid\": \"Cancel the entire operation\", \"msgstr\": [\"Cancelar toda la operación\"] }, \"Cancel uploads\": { \"msgid\": \"Cancel uploads\", \"msgstr\": [\"Cancelar subidas\"] }, \"Continue\": { \"msgid\": \"Continue\", \"msgstr\": [\"Continuar\"] }, \"Create new\": { \"msgid\": \"Create new\", \"msgstr\": [\"Crear nuevo\"] }, \"estimating time left\": { \"msgid\": \"estimating time left\", \"msgstr\": [\"estimando tiempo restante\"] }, \"Existing version\": { \"msgid\": \"Existing version\", \"msgstr\": [\"Versión existente\"] }, \"Failed to assemble the chunks together\": { \"msgid\": \"Failed to assemble the chunks together\", \"msgstr\": [\"Fallo al ensamblar todas las partes juntas\"] }, \"Failed to upload the file\": { \"msgid\": \"Failed to upload the file\", \"msgstr\": [\"Fallo al cargar el archivo\"] }, 'Filenames must not end with \"{segment}\".': { \"msgid\": 'Filenames must not end with \"{segment}\".', \"msgstr\": ['Los nombres de archivo no deben terminar en \"{segment}\".'] }, \"If you select both versions, the incoming file will have a number added to its name.\": { \"msgid\": \"If you select both versions, the incoming file will have a number added to its name.\", \"msgstr\": [\"Si selecciona ambas versionas, el archivo entrante le será agregado un número a su nombre.\"] }, \"Invalid filename\": { \"msgid\": \"Invalid filename\", \"msgstr\": [\"Nombre de archivo inválido\"] }, \"Last modified date unknown\": { \"msgid\": \"Last modified date unknown\", \"msgstr\": [\"Última fecha de modificación desconocida\"] }, \"New\": { \"msgid\": \"New\", \"msgstr\": [\"Nuevo\"] }, \"New filename\": { \"msgid\": \"New filename\", \"msgstr\": [\"Nuevo nombre de archivo\"] }, \"New version\": { \"msgid\": \"New version\", \"msgstr\": [\"Nueva versión\"] }, \"paused\": { \"msgid\": \"paused\", \"msgstr\": [\"pausado\"] }, \"Preview image\": { \"msgid\": \"Preview image\", \"msgstr\": [\"Previsualizar imagen\"] }, \"Rename\": { \"msgid\": \"Rename\", \"msgstr\": [\"Renombrar\"] }, \"Select all checkboxes\": { \"msgid\": \"Select all checkboxes\", \"msgstr\": [\"Seleccionar todas las casillas de verificación\"] }, \"Select all existing files\": { \"msgid\": \"Select all existing files\", \"msgstr\": [\"Seleccionar todos los archivos existentes\"] }, \"Select all new files\": { \"msgid\": \"Select all new files\", \"msgstr\": [\"Seleccionar todos los archivos nuevos\"] }, \"Skip\": { \"msgid\": \"Skip\", \"msgstr\": [\"Saltar\"] }, \"Skip {count} file\": { \"msgid\": \"Skip {count} file\", \"msgid_plural\": \"Skip {count} files\", \"msgstr\": [\"Omitir {count} archivo\", \"Omitir {count} archivos\", \"Omitir {count} archivos\"] }, \"Skip this file\": { \"msgid\": \"Skip this file\", \"msgstr\": [\"Omitir este archivo\"] }, \"Unknown size\": { \"msgid\": \"Unknown size\", \"msgstr\": [\"Tamaño desconocido\"] }, \"Upload\": { \"msgid\": \"Upload\", \"msgstr\": [\"Cargar\"] }, \"Upload files\": { \"msgid\": \"Upload files\", \"msgstr\": [\"Subir archivos\"] }, \"Upload folders\": { \"msgid\": \"Upload folders\", \"msgstr\": [\"Subir carpetas\"] }, \"Upload from device\": { \"msgid\": \"Upload from device\", \"msgstr\": [\"Subir desde dispositivo\"] }, \"Upload has been cancelled\": { \"msgid\": \"Upload has been cancelled\", \"msgstr\": [\"La subida ha sido cancelada\"] }, \"Upload has been skipped\": { \"msgid\": \"Upload has been skipped\", \"msgstr\": [\"La carga fue omitida\"] }, 'Upload of \"{folder}\" has been skipped': { \"msgid\": 'Upload of \"{folder}\" has been skipped', \"msgstr\": ['La carga de \"{folder}\" ha sido omitida'] }, \"Upload progress\": { \"msgid\": \"Upload progress\", \"msgstr\": [\"Progreso de la subida\"] }, \"When an incoming folder is selected, any conflicting files within it will also be overwritten.\": { \"msgid\": \"When an incoming folder is selected, any conflicting files within it will also be overwritten.\", \"msgstr\": [\"Cuando una carpeta entrante es seleccionada, cualquier de los archivos en conflictos también serán sobre-escritos.\"] }, \"When an incoming folder is selected, the content is written into the existing folder and a recursive conflict resolution is performed.\": { \"msgid\": \"When an incoming folder is selected, the content is written into the existing folder and a recursive conflict resolution is performed.\", \"msgstr\": [\"Cuando una carpeta entrante es seleccionada, el contenido es escrito en la carpeta existente y se realizará una resolución de conflictos recursiva.\"] }, \"Which files do you want to keep?\": { \"msgid\": \"Which files do you want to keep?\", \"msgstr\": [\"¿Qué archivos desea conservar?\"] }, \"You can either rename the file, skip this file or cancel the whole operation.\": { \"msgid\": \"You can either rename the file, skip this file or cancel the whole operation.\", \"msgstr\": [\"Puede o bien, renombrar el archivo, omitirlo, o, cancelar toda la operación.\"] }, \"You need to select at least one version of each file to continue.\": { \"msgid\": \"You need to select at least one version of each file to continue.\", \"msgstr\": [\"Debe seleccionar al menos una versión de cada archivo para continuar.\"] } } } } }, { \"locale\": \"es_419\", \"json\": { \"charset\": \"utf-8\", \"headers\": { \"Last-Translator\": \"ALEJANDRO CASTRO, 2022\", \"Language-Team\": \"Spanish (Latin America) (https://www.transifex.com/nextcloud/teams/64236/es_419/)\", \"Content-Type\": \"text/plain; charset=UTF-8\", \"Language\": \"es_419\", \"Plural-Forms\": \"nplurals=3; plural=n == 1 ? 0 : n != 0 && n % 1000000 == 0 ? 1 : 2;\" }, \"translations\": { \"\": { \"\": { \"msgid\": \"\", \"comments\": { \"translator\": \"\\nTranslators:\\nALEJANDRO CASTRO, 2022\\n\" }, \"msgstr\": [\"Last-Translator: ALEJANDRO CASTRO, 2022\\nLanguage-Team: Spanish (Latin America) (https://www.transifex.com/nextcloud/teams/64236/es_419/)\\nContent-Type: text/plain; charset=UTF-8\\nLanguage: es_419\\nPlural-Forms: nplurals=3; plural=n == 1 ? 0 : n != 0 && n % 1000000 == 0 ? 1 : 2;\\n\"] }, \"{seconds} seconds left\": { \"msgid\": \"{seconds} seconds left\", \"msgstr\": [\"{seconds} segundos restantes\"] }, \"{time} left\": { \"msgid\": \"{time} left\", \"comments\": { \"extracted\": \"time has the format 00:00:00\" }, \"msgstr\": [\"{tiempo} restante\"] }, \"a few seconds left\": { \"msgid\": \"a few seconds left\", \"msgstr\": [\"quedan pocos segundos\"] }, \"Add\": { \"msgid\": \"Add\", \"msgstr\": [\"agregar\"] }, \"Cancel uploads\": { \"msgid\": \"Cancel uploads\", \"msgstr\": [\"Cancelar subidas\"] }, \"estimating time left\": { \"msgid\": \"estimating time left\", \"msgstr\": [\"estimando tiempo restante\"] }, \"paused\": { \"msgid\": \"paused\", \"msgstr\": [\"pausado\"] }, \"Upload files\": { \"msgid\": \"Upload files\", \"msgstr\": [\"Subir archivos\"] } } } } }, { \"locale\": \"es_AR\", \"json\": { \"charset\": \"utf-8\", \"headers\": { \"Last-Translator\": \"Matías Campo Hoet , 2024\", \"Language-Team\": \"Spanish (Argentina) (https://app.transifex.com/nextcloud/teams/64236/es_AR/)\", \"Content-Type\": \"text/plain; charset=UTF-8\", \"Language\": \"es_AR\", \"Plural-Forms\": \"nplurals=3; plural=n == 1 ? 0 : n != 0 && n % 1000000 == 0 ? 1 : 2;\" }, \"translations\": { \"\": { \"\": { \"msgid\": \"\", \"comments\": { \"translator\": \"\\nTranslators:\\nJoas Schilling, 2024\\nMatías Campo Hoet , 2024\\n\" }, \"msgstr\": [\"Last-Translator: Matías Campo Hoet , 2024\\nLanguage-Team: Spanish (Argentina) (https://app.transifex.com/nextcloud/teams/64236/es_AR/)\\nContent-Type: text/plain; charset=UTF-8\\nLanguage: es_AR\\nPlural-Forms: nplurals=3; plural=n == 1 ? 0 : n != 0 && n % 1000000 == 0 ? 1 : 2;\\n\"] }, '\"{filename}\" contains invalid characters, how do you want to continue?': { \"msgid\": '\"{filename}\" contains invalid characters, how do you want to continue?', \"msgstr\": ['\"{filename}\" contiene caracteres inválidos, ¿cómo desea continuar?'] }, \"{count} file conflict\": { \"msgid\": \"{count} file conflict\", \"msgid_plural\": \"{count} files conflict\", \"msgstr\": [\"{count} conflicto de archivo\", \"{count} conflictos de archivo\", \"{count} conflictos de archivo\"] }, \"{count} file conflict in {dirname}\": { \"msgid\": \"{count} file conflict in {dirname}\", \"msgid_plural\": \"{count} file conflicts in {dirname}\", \"msgstr\": [\"{count} conflicto de archivo en {dirname}\", \"{count} conflictos de archivo en {dirname}\", \"{count} conflictos de archivo en {dirname}\"] }, \"{seconds} seconds left\": { \"msgid\": \"{seconds} seconds left\", \"msgstr\": [\"{seconds} segundos restantes\"] }, \"{time} left\": { \"msgid\": \"{time} left\", \"comments\": { \"extracted\": \"TRANSLATORS time has the format 00:00:00\" }, \"msgstr\": [\"{time} restante\"] }, \"a few seconds left\": { \"msgid\": \"a few seconds left\", \"msgstr\": [\"quedan unos segundos\"] }, \"Cancel\": { \"msgid\": \"Cancel\", \"msgstr\": [\"Cancelar\"] }, \"Cancel the entire operation\": { \"msgid\": \"Cancel the entire operation\", \"msgstr\": [\"Cancelar toda la operación\"] }, \"Cancel uploads\": { \"msgid\": \"Cancel uploads\", \"msgstr\": [\"Cancelar subidas\"] }, \"Continue\": { \"msgid\": \"Continue\", \"msgstr\": [\"Continuar\"] }, \"Create new\": { \"msgid\": \"Create new\", \"msgstr\": [\"Crear nuevo\"] }, \"estimating time left\": { \"msgid\": \"estimating time left\", \"msgstr\": [\"estimando tiempo restante\"] }, \"Existing version\": { \"msgid\": \"Existing version\", \"msgstr\": [\"Versión existente\"] }, \"If you select both versions, the incoming file will have a number added to its name.\": { \"msgid\": \"If you select both versions, the incoming file will have a number added to its name.\", \"msgstr\": [\"Si selecciona ambas versionas, se agregará un número al nombre del archivo entrante.\"] }, \"Invalid file name\": { \"msgid\": \"Invalid file name\", \"msgstr\": [\"Nombre de archivo inválido\"] }, \"Last modified date unknown\": { \"msgid\": \"Last modified date unknown\", \"msgstr\": [\"Fecha de última modificación desconocida\"] }, \"New\": { \"msgid\": \"New\", \"msgstr\": [\"Nuevo\"] }, \"New version\": { \"msgid\": \"New version\", \"msgstr\": [\"Nueva versión\"] }, \"paused\": { \"msgid\": \"paused\", \"msgstr\": [\"pausado\"] }, \"Preview image\": { \"msgid\": \"Preview image\", \"msgstr\": [\"Vista previa de imagen\"] }, \"Rename\": { \"msgid\": \"Rename\", \"msgstr\": [\"Renombrar\"] }, \"Select all checkboxes\": { \"msgid\": \"Select all checkboxes\", \"msgstr\": [\"Seleccionar todas las casillas de verificación\"] }, \"Select all existing files\": { \"msgid\": \"Select all existing files\", \"msgstr\": [\"Seleccionar todos los archivos existentes\"] }, \"Select all new files\": { \"msgid\": \"Select all new files\", \"msgstr\": [\"Seleccionar todos los archivos nuevos\"] }, \"Skip\": { \"msgid\": \"Skip\", \"msgstr\": [\"Omitir\"] }, \"Skip this file\": { \"msgid\": \"Skip this file\", \"msgid_plural\": \"Skip {count} files\", \"msgstr\": [\"Omitir este archivo\", \"Omitir {count} archivos\", \"Omitir {count} archivos\"] }, \"Unknown size\": { \"msgid\": \"Unknown size\", \"msgstr\": [\"Tamaño desconocido\"] }, \"Upload files\": { \"msgid\": \"Upload files\", \"msgstr\": [\"Cargar archivos\"] }, \"Upload folders\": { \"msgid\": \"Upload folders\", \"msgstr\": [\"Cargar carpetas\"] }, \"Upload from device\": { \"msgid\": \"Upload from device\", \"msgstr\": [\"Cargar desde dispositivo\"] }, \"Upload has been cancelled\": { \"msgid\": \"Upload has been cancelled\", \"msgstr\": [\"Carga cancelada\"] }, \"Upload progress\": { \"msgid\": \"Upload progress\", \"msgstr\": [\"Progreso de la carga\"] }, \"When an incoming folder is selected, any conflicting files within it will also be overwritten.\": { \"msgid\": \"When an incoming folder is selected, any conflicting files within it will also be overwritten.\", \"msgstr\": [\"Cuando una carpeta entrante es seleccionada, cualquier archivo en conflicto dentro de la misma también serán sobreescritos.\"] }, \"When an incoming folder is selected, the content is written into the existing folder and a recursive conflict resolution is performed.\": { \"msgid\": \"When an incoming folder is selected, the content is written into the existing folder and a recursive conflict resolution is performed.\", \"msgstr\": [\"Cuando una carpeta entrante es seleccionada, el contenido se escribe en la carpeta existente y se realiza una resolución de conflictos recursiva.\"] }, \"Which files do you want to keep?\": { \"msgid\": \"Which files do you want to keep?\", \"msgstr\": [\"¿Qué archivos desea conservar?\"] }, \"You need to select at least one version of each file to continue.\": { \"msgid\": \"You need to select at least one version of each file to continue.\", \"msgstr\": [\"Debe seleccionar al menos una versión de cada archivo para continuar.\"] } } } } }, { \"locale\": \"es_CL\", \"json\": { \"charset\": \"utf-8\", \"headers\": { \"Last-Translator\": \"Transifex Bot <>, 2022\", \"Language-Team\": \"Spanish (Chile) (https://www.transifex.com/nextcloud/teams/64236/es_CL/)\", \"Content-Type\": \"text/plain; charset=UTF-8\", \"Language\": \"es_CL\", \"Plural-Forms\": \"nplurals=3; plural=n == 1 ? 0 : n != 0 && n % 1000000 == 0 ? 1 : 2;\" }, \"translations\": { \"\": { \"\": { \"msgid\": \"\", \"comments\": { \"translator\": \"\\nTranslators:\\nTransifex Bot <>, 2022\\n\" }, \"msgstr\": [\"Last-Translator: Transifex Bot <>, 2022\\nLanguage-Team: Spanish (Chile) (https://www.transifex.com/nextcloud/teams/64236/es_CL/)\\nContent-Type: text/plain; charset=UTF-8\\nLanguage: es_CL\\nPlural-Forms: nplurals=3; plural=n == 1 ? 0 : n != 0 && n % 1000000 == 0 ? 1 : 2;\\n\"] }, \"{estimate} seconds left\": { \"msgid\": \"{estimate} seconds left\", \"msgstr\": [\"\"] }, \"{hours} hours and {minutes} minutes left\": { \"msgid\": \"{hours} hours and {minutes} minutes left\", \"msgstr\": [\"\"] }, \"{minutes} minutes left\": { \"msgid\": \"{minutes} minutes left\", \"msgstr\": [\"\"] }, \"a few seconds left\": { \"msgid\": \"a few seconds left\", \"msgstr\": [\"\"] }, \"Add\": { \"msgid\": \"Add\", \"msgstr\": [\"\"] }, \"Cancel uploads\": { \"msgid\": \"Cancel uploads\", \"msgstr\": [\"\"] }, \"estimating time left\": { \"msgid\": \"estimating time left\", \"msgstr\": [\"\"] }, \"paused\": { \"msgid\": \"paused\", \"msgstr\": [\"\"] } } } } }, { \"locale\": \"es_CO\", \"json\": { \"charset\": \"utf-8\", \"headers\": { \"Last-Translator\": \"Transifex Bot <>, 2022\", \"Language-Team\": \"Spanish (Colombia) (https://www.transifex.com/nextcloud/teams/64236/es_CO/)\", \"Content-Type\": \"text/plain; charset=UTF-8\", \"Language\": \"es_CO\", \"Plural-Forms\": \"nplurals=3; plural=n == 1 ? 0 : n != 0 && n % 1000000 == 0 ? 1 : 2;\" }, \"translations\": { \"\": { \"\": { \"msgid\": \"\", \"comments\": { \"translator\": \"\\nTranslators:\\nTransifex Bot <>, 2022\\n\" }, \"msgstr\": [\"Last-Translator: Transifex Bot <>, 2022\\nLanguage-Team: Spanish (Colombia) (https://www.transifex.com/nextcloud/teams/64236/es_CO/)\\nContent-Type: text/plain; charset=UTF-8\\nLanguage: es_CO\\nPlural-Forms: nplurals=3; plural=n == 1 ? 0 : n != 0 && n % 1000000 == 0 ? 1 : 2;\\n\"] }, \"{estimate} seconds left\": { \"msgid\": \"{estimate} seconds left\", \"msgstr\": [\"\"] }, \"{hours} hours and {minutes} minutes left\": { \"msgid\": \"{hours} hours and {minutes} minutes left\", \"msgstr\": [\"\"] }, \"{minutes} minutes left\": { \"msgid\": \"{minutes} minutes left\", \"msgstr\": [\"\"] }, \"a few seconds left\": { \"msgid\": \"a few seconds left\", \"msgstr\": [\"\"] }, \"Add\": { \"msgid\": \"Add\", \"msgstr\": [\"\"] }, \"Cancel uploads\": { \"msgid\": \"Cancel uploads\", \"msgstr\": [\"\"] }, \"estimating time left\": { \"msgid\": \"estimating time left\", \"msgstr\": [\"\"] }, \"paused\": { \"msgid\": \"paused\", \"msgstr\": [\"\"] } } } } }, { \"locale\": \"es_CR\", \"json\": { \"charset\": \"utf-8\", \"headers\": { \"Last-Translator\": \"Transifex Bot <>, 2022\", \"Language-Team\": \"Spanish (Costa Rica) (https://www.transifex.com/nextcloud/teams/64236/es_CR/)\", \"Content-Type\": \"text/plain; charset=UTF-8\", \"Language\": \"es_CR\", \"Plural-Forms\": \"nplurals=3; plural=n == 1 ? 0 : n != 0 && n % 1000000 == 0 ? 1 : 2;\" }, \"translations\": { \"\": { \"\": { \"msgid\": \"\", \"comments\": { \"translator\": \"\\nTranslators:\\nTransifex Bot <>, 2022\\n\" }, \"msgstr\": [\"Last-Translator: Transifex Bot <>, 2022\\nLanguage-Team: Spanish (Costa Rica) (https://www.transifex.com/nextcloud/teams/64236/es_CR/)\\nContent-Type: text/plain; charset=UTF-8\\nLanguage: es_CR\\nPlural-Forms: nplurals=3; plural=n == 1 ? 0 : n != 0 && n % 1000000 == 0 ? 1 : 2;\\n\"] }, \"{estimate} seconds left\": { \"msgid\": \"{estimate} seconds left\", \"msgstr\": [\"\"] }, \"{hours} hours and {minutes} minutes left\": { \"msgid\": \"{hours} hours and {minutes} minutes left\", \"msgstr\": [\"\"] }, \"{minutes} minutes left\": { \"msgid\": \"{minutes} minutes left\", \"msgstr\": [\"\"] }, \"a few seconds left\": { \"msgid\": \"a few seconds left\", \"msgstr\": [\"\"] }, \"Add\": { \"msgid\": \"Add\", \"msgstr\": [\"\"] }, \"Cancel uploads\": { \"msgid\": \"Cancel uploads\", \"msgstr\": [\"\"] }, \"estimating time left\": { \"msgid\": \"estimating time left\", \"msgstr\": [\"\"] }, \"paused\": { \"msgid\": \"paused\", \"msgstr\": [\"\"] } } } } }, { \"locale\": \"es_DO\", \"json\": { \"charset\": \"utf-8\", \"headers\": { \"Last-Translator\": \"Transifex Bot <>, 2022\", \"Language-Team\": \"Spanish (Dominican Republic) (https://www.transifex.com/nextcloud/teams/64236/es_DO/)\", \"Content-Type\": \"text/plain; charset=UTF-8\", \"Language\": \"es_DO\", \"Plural-Forms\": \"nplurals=3; plural=n == 1 ? 0 : n != 0 && n % 1000000 == 0 ? 1 : 2;\" }, \"translations\": { \"\": { \"\": { \"msgid\": \"\", \"comments\": { \"translator\": \"\\nTranslators:\\nTransifex Bot <>, 2022\\n\" }, \"msgstr\": [\"Last-Translator: Transifex Bot <>, 2022\\nLanguage-Team: Spanish (Dominican Republic) (https://www.transifex.com/nextcloud/teams/64236/es_DO/)\\nContent-Type: text/plain; charset=UTF-8\\nLanguage: es_DO\\nPlural-Forms: nplurals=3; plural=n == 1 ? 0 : n != 0 && n % 1000000 == 0 ? 1 : 2;\\n\"] }, \"{estimate} seconds left\": { \"msgid\": \"{estimate} seconds left\", \"msgstr\": [\"\"] }, \"{hours} hours and {minutes} minutes left\": { \"msgid\": \"{hours} hours and {minutes} minutes left\", \"msgstr\": [\"\"] }, \"{minutes} minutes left\": { \"msgid\": \"{minutes} minutes left\", \"msgstr\": [\"\"] }, \"a few seconds left\": { \"msgid\": \"a few seconds left\", \"msgstr\": [\"\"] }, \"Add\": { \"msgid\": \"Add\", \"msgstr\": [\"\"] }, \"Cancel uploads\": { \"msgid\": \"Cancel uploads\", \"msgstr\": [\"\"] }, \"estimating time left\": { \"msgid\": \"estimating time left\", \"msgstr\": [\"\"] }, \"paused\": { \"msgid\": \"paused\", \"msgstr\": [\"\"] } } } } }, { \"locale\": \"es_EC\", \"json\": { \"charset\": \"utf-8\", \"headers\": { \"Last-Translator\": \"Transifex Bot <>, 2022\", \"Language-Team\": \"Spanish (Ecuador) (https://www.transifex.com/nextcloud/teams/64236/es_EC/)\", \"Content-Type\": \"text/plain; charset=UTF-8\", \"Language\": \"es_EC\", \"Plural-Forms\": \"nplurals=3; plural=n == 1 ? 0 : n != 0 && n % 1000000 == 0 ? 1 : 2;\" }, \"translations\": { \"\": { \"\": { \"msgid\": \"\", \"comments\": { \"translator\": \"\\nTranslators:\\nTransifex Bot <>, 2022\\n\" }, \"msgstr\": [\"Last-Translator: Transifex Bot <>, 2022\\nLanguage-Team: Spanish (Ecuador) (https://www.transifex.com/nextcloud/teams/64236/es_EC/)\\nContent-Type: text/plain; charset=UTF-8\\nLanguage: es_EC\\nPlural-Forms: nplurals=3; plural=n == 1 ? 0 : n != 0 && n % 1000000 == 0 ? 1 : 2;\\n\"] }, \"{estimate} seconds left\": { \"msgid\": \"{estimate} seconds left\", \"msgstr\": [\"\"] }, \"{hours} hours and {minutes} minutes left\": { \"msgid\": \"{hours} hours and {minutes} minutes left\", \"msgstr\": [\"\"] }, \"{minutes} minutes left\": { \"msgid\": \"{minutes} minutes left\", \"msgstr\": [\"\"] }, \"a few seconds left\": { \"msgid\": \"a few seconds left\", \"msgstr\": [\"\"] }, \"Add\": { \"msgid\": \"Add\", \"msgstr\": [\"\"] }, \"Cancel uploads\": { \"msgid\": \"Cancel uploads\", \"msgstr\": [\"\"] }, \"estimating time left\": { \"msgid\": \"estimating time left\", \"msgstr\": [\"\"] }, \"paused\": { \"msgid\": \"paused\", \"msgstr\": [\"\"] } } } } }, { \"locale\": \"es_GT\", \"json\": { \"charset\": \"utf-8\", \"headers\": { \"Last-Translator\": \"Transifex Bot <>, 2022\", \"Language-Team\": \"Spanish (Guatemala) (https://www.transifex.com/nextcloud/teams/64236/es_GT/)\", \"Content-Type\": \"text/plain; charset=UTF-8\", \"Language\": \"es_GT\", \"Plural-Forms\": \"nplurals=3; plural=n == 1 ? 0 : n != 0 && n % 1000000 == 0 ? 1 : 2;\" }, \"translations\": { \"\": { \"\": { \"msgid\": \"\", \"comments\": { \"translator\": \"\\nTranslators:\\nTransifex Bot <>, 2022\\n\" }, \"msgstr\": [\"Last-Translator: Transifex Bot <>, 2022\\nLanguage-Team: Spanish (Guatemala) (https://www.transifex.com/nextcloud/teams/64236/es_GT/)\\nContent-Type: text/plain; charset=UTF-8\\nLanguage: es_GT\\nPlural-Forms: nplurals=3; plural=n == 1 ? 0 : n != 0 && n % 1000000 == 0 ? 1 : 2;\\n\"] }, \"{estimate} seconds left\": { \"msgid\": \"{estimate} seconds left\", \"msgstr\": [\"\"] }, \"{hours} hours and {minutes} minutes left\": { \"msgid\": \"{hours} hours and {minutes} minutes left\", \"msgstr\": [\"\"] }, \"{minutes} minutes left\": { \"msgid\": \"{minutes} minutes left\", \"msgstr\": [\"\"] }, \"a few seconds left\": { \"msgid\": \"a few seconds left\", \"msgstr\": [\"\"] }, \"Add\": { \"msgid\": \"Add\", \"msgstr\": [\"\"] }, \"Cancel uploads\": { \"msgid\": \"Cancel uploads\", \"msgstr\": [\"\"] }, \"estimating time left\": { \"msgid\": \"estimating time left\", \"msgstr\": [\"\"] }, \"paused\": { \"msgid\": \"paused\", \"msgstr\": [\"\"] } } } } }, { \"locale\": \"es_HN\", \"json\": { \"charset\": \"utf-8\", \"headers\": { \"Last-Translator\": \"Transifex Bot <>, 2022\", \"Language-Team\": \"Spanish (Honduras) (https://www.transifex.com/nextcloud/teams/64236/es_HN/)\", \"Content-Type\": \"text/plain; charset=UTF-8\", \"Language\": \"es_HN\", \"Plural-Forms\": \"nplurals=3; plural=n == 1 ? 0 : n != 0 && n % 1000000 == 0 ? 1 : 2;\" }, \"translations\": { \"\": { \"\": { \"msgid\": \"\", \"comments\": { \"translator\": \"\\nTranslators:\\nTransifex Bot <>, 2022\\n\" }, \"msgstr\": [\"Last-Translator: Transifex Bot <>, 2022\\nLanguage-Team: Spanish (Honduras) (https://www.transifex.com/nextcloud/teams/64236/es_HN/)\\nContent-Type: text/plain; charset=UTF-8\\nLanguage: es_HN\\nPlural-Forms: nplurals=3; plural=n == 1 ? 0 : n != 0 && n % 1000000 == 0 ? 1 : 2;\\n\"] }, \"{estimate} seconds left\": { \"msgid\": \"{estimate} seconds left\", \"msgstr\": [\"\"] }, \"{hours} hours and {minutes} minutes left\": { \"msgid\": \"{hours} hours and {minutes} minutes left\", \"msgstr\": [\"\"] }, \"{minutes} minutes left\": { \"msgid\": \"{minutes} minutes left\", \"msgstr\": [\"\"] }, \"a few seconds left\": { \"msgid\": \"a few seconds left\", \"msgstr\": [\"\"] }, \"Add\": { \"msgid\": \"Add\", \"msgstr\": [\"\"] }, \"Cancel uploads\": { \"msgid\": \"Cancel uploads\", \"msgstr\": [\"\"] }, \"estimating time left\": { \"msgid\": \"estimating time left\", \"msgstr\": [\"\"] }, \"paused\": { \"msgid\": \"paused\", \"msgstr\": [\"\"] } } } } }, { \"locale\": \"es_MX\", \"json\": { \"charset\": \"utf-8\", \"headers\": { \"Last-Translator\": \"Jehu Marcos Herrera Puentes, 2024\", \"Language-Team\": \"Spanish (Mexico) (https://app.transifex.com/nextcloud/teams/64236/es_MX/)\", \"Content-Type\": \"text/plain; charset=UTF-8\", \"Language\": \"es_MX\", \"Plural-Forms\": \"nplurals=3; plural=n == 1 ? 0 : n != 0 && n % 1000000 == 0 ? 1 : 2;\" }, \"translations\": { \"\": { \"\": { \"msgid\": \"\", \"comments\": { \"translator\": \"\\nTranslators:\\nJoas Schilling, 2024\\nJehu Marcos Herrera Puentes, 2024\\n\" }, \"msgstr\": [\"Last-Translator: Jehu Marcos Herrera Puentes, 2024\\nLanguage-Team: Spanish (Mexico) (https://app.transifex.com/nextcloud/teams/64236/es_MX/)\\nContent-Type: text/plain; charset=UTF-8\\nLanguage: es_MX\\nPlural-Forms: nplurals=3; plural=n == 1 ? 0 : n != 0 && n % 1000000 == 0 ? 1 : 2;\\n\"] }, '\"{filename}\" contains invalid characters, how do you want to continue?': { \"msgid\": '\"{filename}\" contains invalid characters, how do you want to continue?', \"msgstr\": ['\"{filename}\" contiene caracteres inválidos, ¿Cómo desea continuar?'] }, \"{count} file conflict\": { \"msgid\": \"{count} file conflict\", \"msgid_plural\": \"{count} files conflict\", \"msgstr\": [\"{count} conflicto de archivo\", \"{count} conflictos de archivo\", \"{count} archivos en conflicto\"] }, \"{count} file conflict in {dirname}\": { \"msgid\": \"{count} file conflict in {dirname}\", \"msgid_plural\": \"{count} file conflicts in {dirname}\", \"msgstr\": [\"{count} archivo en conflicto en {dirname}\", \"{count} archivos en conflicto en {dirname}\", \"{count} archivo en conflicto en {dirname}\"] }, \"{seconds} seconds left\": { \"msgid\": \"{seconds} seconds left\", \"msgstr\": [\"{seconds} segundos restantes\"] }, \"{time} left\": { \"msgid\": \"{time} left\", \"comments\": { \"extracted\": \"TRANSLATORS time has the format 00:00:00\" }, \"msgstr\": [\"{tiempo} restante\"] }, \"a few seconds left\": { \"msgid\": \"a few seconds left\", \"msgstr\": [\"quedan pocos segundos\"] }, \"Cancel\": { \"msgid\": \"Cancel\", \"msgstr\": [\"Cancelar\"] }, \"Cancel the entire operation\": { \"msgid\": \"Cancel the entire operation\", \"msgstr\": [\"Cancelar toda la operación\"] }, \"Cancel uploads\": { \"msgid\": \"Cancel uploads\", \"msgstr\": [\"Cancelar subidas\"] }, \"Continue\": { \"msgid\": \"Continue\", \"msgstr\": [\"Continuar\"] }, \"Create new\": { \"msgid\": \"Create new\", \"msgstr\": [\"Crear nuevo\"] }, \"estimating time left\": { \"msgid\": \"estimating time left\", \"msgstr\": [\"estimando tiempo restante\"] }, \"Existing version\": { \"msgid\": \"Existing version\", \"msgstr\": [\"Versión existente\"] }, \"If you select both versions, the incoming file will have a number added to its name.\": { \"msgid\": \"If you select both versions, the incoming file will have a number added to its name.\", \"msgstr\": [\"Si selecciona ambas versionas, se agregará un número al nombre del archivo entrante.\"] }, \"Invalid file name\": { \"msgid\": \"Invalid file name\", \"msgstr\": [\"Nombre de archivo inválido\"] }, \"Last modified date unknown\": { \"msgid\": \"Last modified date unknown\", \"msgstr\": [\"Fecha de última modificación desconocida\"] }, \"New\": { \"msgid\": \"New\", \"msgstr\": [\"Nuevo\"] }, \"New version\": { \"msgid\": \"New version\", \"msgstr\": [\"Nueva versión\"] }, \"paused\": { \"msgid\": \"paused\", \"msgstr\": [\"en pausa\"] }, \"Preview image\": { \"msgid\": \"Preview image\", \"msgstr\": [\"Previsualizar imagen\"] }, \"Rename\": { \"msgid\": \"Rename\", \"msgstr\": [\"Renombrar\"] }, \"Select all checkboxes\": { \"msgid\": \"Select all checkboxes\", \"msgstr\": [\"Seleccionar todas las casillas de verificación\"] }, \"Select all existing files\": { \"msgid\": \"Select all existing files\", \"msgstr\": [\"Seleccionar todos los archivos existentes\"] }, \"Select all new files\": { \"msgid\": \"Select all new files\", \"msgstr\": [\"Seleccionar todos los archivos nuevos\"] }, \"Skip\": { \"msgid\": \"Skip\", \"msgstr\": [\"Omitir\"] }, \"Skip this file\": { \"msgid\": \"Skip this file\", \"msgid_plural\": \"Skip {count} files\", \"msgstr\": [\"Omitir este archivo\", \"Omitir {count} archivos\", \"Omitir {count} archivos\"] }, \"Unknown size\": { \"msgid\": \"Unknown size\", \"msgstr\": [\"Tamaño desconocido\"] }, \"Upload files\": { \"msgid\": \"Upload files\", \"msgstr\": [\"Subir archivos\"] }, \"Upload folders\": { \"msgid\": \"Upload folders\", \"msgstr\": [\"Subir carpetas\"] }, \"Upload from device\": { \"msgid\": \"Upload from device\", \"msgstr\": [\"Subir desde dispositivo\"] }, \"Upload has been cancelled\": { \"msgid\": \"Upload has been cancelled\", \"msgstr\": [\"La subida ha sido cancelada\"] }, \"Upload progress\": { \"msgid\": \"Upload progress\", \"msgstr\": [\"Progreso de la subida\"] }, \"When an incoming folder is selected, any conflicting files within it will also be overwritten.\": { \"msgid\": \"When an incoming folder is selected, any conflicting files within it will also be overwritten.\", \"msgstr\": [\"Cuando una carpeta entrante es seleccionada, cualquier archivo en conflicto dentro de la misma también será sobrescrito.\"] }, \"When an incoming folder is selected, the content is written into the existing folder and a recursive conflict resolution is performed.\": { \"msgid\": \"When an incoming folder is selected, the content is written into the existing folder and a recursive conflict resolution is performed.\", \"msgstr\": [\"Cuando una carpeta entrante es seleccionada, el contenido se escribe en la carpeta existente y se realiza una resolución de conflictos recursiva.\"] }, \"Which files do you want to keep?\": { \"msgid\": \"Which files do you want to keep?\", \"msgstr\": [\"¿Cuáles archivos desea conservar?\"] }, \"You need to select at least one version of each file to continue.\": { \"msgid\": \"You need to select at least one version of each file to continue.\", \"msgstr\": [\"Debe seleccionar al menos una versión de cada archivo para continuar.\"] } } } } }, { \"locale\": \"es_NI\", \"json\": { \"charset\": \"utf-8\", \"headers\": { \"Last-Translator\": \"Transifex Bot <>, 2022\", \"Language-Team\": \"Spanish (Nicaragua) (https://www.transifex.com/nextcloud/teams/64236/es_NI/)\", \"Content-Type\": \"text/plain; charset=UTF-8\", \"Language\": \"es_NI\", \"Plural-Forms\": \"nplurals=3; plural=n == 1 ? 0 : n != 0 && n % 1000000 == 0 ? 1 : 2;\" }, \"translations\": { \"\": { \"\": { \"msgid\": \"\", \"comments\": { \"translator\": \"\\nTranslators:\\nTransifex Bot <>, 2022\\n\" }, \"msgstr\": [\"Last-Translator: Transifex Bot <>, 2022\\nLanguage-Team: Spanish (Nicaragua) (https://www.transifex.com/nextcloud/teams/64236/es_NI/)\\nContent-Type: text/plain; charset=UTF-8\\nLanguage: es_NI\\nPlural-Forms: nplurals=3; plural=n == 1 ? 0 : n != 0 && n % 1000000 == 0 ? 1 : 2;\\n\"] }, \"{estimate} seconds left\": { \"msgid\": \"{estimate} seconds left\", \"msgstr\": [\"\"] }, \"{hours} hours and {minutes} minutes left\": { \"msgid\": \"{hours} hours and {minutes} minutes left\", \"msgstr\": [\"\"] }, \"{minutes} minutes left\": { \"msgid\": \"{minutes} minutes left\", \"msgstr\": [\"\"] }, \"a few seconds left\": { \"msgid\": \"a few seconds left\", \"msgstr\": [\"\"] }, \"Add\": { \"msgid\": \"Add\", \"msgstr\": [\"\"] }, \"Cancel uploads\": { \"msgid\": \"Cancel uploads\", \"msgstr\": [\"\"] }, \"estimating time left\": { \"msgid\": \"estimating time left\", \"msgstr\": [\"\"] }, \"paused\": { \"msgid\": \"paused\", \"msgstr\": [\"\"] } } } } }, { \"locale\": \"es_PA\", \"json\": { \"charset\": \"utf-8\", \"headers\": { \"Last-Translator\": \"Transifex Bot <>, 2022\", \"Language-Team\": \"Spanish (Panama) (https://www.transifex.com/nextcloud/teams/64236/es_PA/)\", \"Content-Type\": \"text/plain; charset=UTF-8\", \"Language\": \"es_PA\", \"Plural-Forms\": \"nplurals=3; plural=n == 1 ? 0 : n != 0 && n % 1000000 == 0 ? 1 : 2;\" }, \"translations\": { \"\": { \"\": { \"msgid\": \"\", \"comments\": { \"translator\": \"\\nTranslators:\\nTransifex Bot <>, 2022\\n\" }, \"msgstr\": [\"Last-Translator: Transifex Bot <>, 2022\\nLanguage-Team: Spanish (Panama) (https://www.transifex.com/nextcloud/teams/64236/es_PA/)\\nContent-Type: text/plain; charset=UTF-8\\nLanguage: es_PA\\nPlural-Forms: nplurals=3; plural=n == 1 ? 0 : n != 0 && n % 1000000 == 0 ? 1 : 2;\\n\"] }, \"{estimate} seconds left\": { \"msgid\": \"{estimate} seconds left\", \"msgstr\": [\"\"] }, \"{hours} hours and {minutes} minutes left\": { \"msgid\": \"{hours} hours and {minutes} minutes left\", \"msgstr\": [\"\"] }, \"{minutes} minutes left\": { \"msgid\": \"{minutes} minutes left\", \"msgstr\": [\"\"] }, \"a few seconds left\": { \"msgid\": \"a few seconds left\", \"msgstr\": [\"\"] }, \"Add\": { \"msgid\": \"Add\", \"msgstr\": [\"\"] }, \"Cancel uploads\": { \"msgid\": \"Cancel uploads\", \"msgstr\": [\"\"] }, \"estimating time left\": { \"msgid\": \"estimating time left\", \"msgstr\": [\"\"] }, \"paused\": { \"msgid\": \"paused\", \"msgstr\": [\"\"] } } } } }, { \"locale\": \"es_PE\", \"json\": { \"charset\": \"utf-8\", \"headers\": { \"Last-Translator\": \"Transifex Bot <>, 2022\", \"Language-Team\": \"Spanish (Peru) (https://www.transifex.com/nextcloud/teams/64236/es_PE/)\", \"Content-Type\": \"text/plain; charset=UTF-8\", \"Language\": \"es_PE\", \"Plural-Forms\": \"nplurals=3; plural=n == 1 ? 0 : n != 0 && n % 1000000 == 0 ? 1 : 2;\" }, \"translations\": { \"\": { \"\": { \"msgid\": \"\", \"comments\": { \"translator\": \"\\nTranslators:\\nTransifex Bot <>, 2022\\n\" }, \"msgstr\": [\"Last-Translator: Transifex Bot <>, 2022\\nLanguage-Team: Spanish (Peru) (https://www.transifex.com/nextcloud/teams/64236/es_PE/)\\nContent-Type: text/plain; charset=UTF-8\\nLanguage: es_PE\\nPlural-Forms: nplurals=3; plural=n == 1 ? 0 : n != 0 && n % 1000000 == 0 ? 1 : 2;\\n\"] }, \"{estimate} seconds left\": { \"msgid\": \"{estimate} seconds left\", \"msgstr\": [\"\"] }, \"{hours} hours and {minutes} minutes left\": { \"msgid\": \"{hours} hours and {minutes} minutes left\", \"msgstr\": [\"\"] }, \"{minutes} minutes left\": { \"msgid\": \"{minutes} minutes left\", \"msgstr\": [\"\"] }, \"a few seconds left\": { \"msgid\": \"a few seconds left\", \"msgstr\": [\"\"] }, \"Add\": { \"msgid\": \"Add\", \"msgstr\": [\"\"] }, \"Cancel uploads\": { \"msgid\": \"Cancel uploads\", \"msgstr\": [\"\"] }, \"estimating time left\": { \"msgid\": \"estimating time left\", \"msgstr\": [\"\"] }, \"paused\": { \"msgid\": \"paused\", \"msgstr\": [\"\"] } } } } }, { \"locale\": \"es_PR\", \"json\": { \"charset\": \"utf-8\", \"headers\": { \"Last-Translator\": \"Transifex Bot <>, 2022\", \"Language-Team\": \"Spanish (Puerto Rico) (https://www.transifex.com/nextcloud/teams/64236/es_PR/)\", \"Content-Type\": \"text/plain; charset=UTF-8\", \"Language\": \"es_PR\", \"Plural-Forms\": \"nplurals=3; plural=n == 1 ? 0 : n != 0 && n % 1000000 == 0 ? 1 : 2;\" }, \"translations\": { \"\": { \"\": { \"msgid\": \"\", \"comments\": { \"translator\": \"\\nTranslators:\\nTransifex Bot <>, 2022\\n\" }, \"msgstr\": [\"Last-Translator: Transifex Bot <>, 2022\\nLanguage-Team: Spanish (Puerto Rico) (https://www.transifex.com/nextcloud/teams/64236/es_PR/)\\nContent-Type: text/plain; charset=UTF-8\\nLanguage: es_PR\\nPlural-Forms: nplurals=3; plural=n == 1 ? 0 : n != 0 && n % 1000000 == 0 ? 1 : 2;\\n\"] }, \"{estimate} seconds left\": { \"msgid\": \"{estimate} seconds left\", \"msgstr\": [\"\"] }, \"{hours} hours and {minutes} minutes left\": { \"msgid\": \"{hours} hours and {minutes} minutes left\", \"msgstr\": [\"\"] }, \"{minutes} minutes left\": { \"msgid\": \"{minutes} minutes left\", \"msgstr\": [\"\"] }, \"a few seconds left\": { \"msgid\": \"a few seconds left\", \"msgstr\": [\"\"] }, \"Add\": { \"msgid\": \"Add\", \"msgstr\": [\"\"] }, \"Cancel uploads\": { \"msgid\": \"Cancel uploads\", \"msgstr\": [\"\"] }, \"estimating time left\": { \"msgid\": \"estimating time left\", \"msgstr\": [\"\"] }, \"paused\": { \"msgid\": \"paused\", \"msgstr\": [\"\"] } } } } }, { \"locale\": \"es_PY\", \"json\": { \"charset\": \"utf-8\", \"headers\": { \"Last-Translator\": \"Transifex Bot <>, 2022\", \"Language-Team\": \"Spanish (Paraguay) (https://www.transifex.com/nextcloud/teams/64236/es_PY/)\", \"Content-Type\": \"text/plain; charset=UTF-8\", \"Language\": \"es_PY\", \"Plural-Forms\": \"nplurals=3; plural=n == 1 ? 0 : n != 0 && n % 1000000 == 0 ? 1 : 2;\" }, \"translations\": { \"\": { \"\": { \"msgid\": \"\", \"comments\": { \"translator\": \"\\nTranslators:\\nTransifex Bot <>, 2022\\n\" }, \"msgstr\": [\"Last-Translator: Transifex Bot <>, 2022\\nLanguage-Team: Spanish (Paraguay) (https://www.transifex.com/nextcloud/teams/64236/es_PY/)\\nContent-Type: text/plain; charset=UTF-8\\nLanguage: es_PY\\nPlural-Forms: nplurals=3; plural=n == 1 ? 0 : n != 0 && n % 1000000 == 0 ? 1 : 2;\\n\"] }, \"{estimate} seconds left\": { \"msgid\": \"{estimate} seconds left\", \"msgstr\": [\"\"] }, \"{hours} hours and {minutes} minutes left\": { \"msgid\": \"{hours} hours and {minutes} minutes left\", \"msgstr\": [\"\"] }, \"{minutes} minutes left\": { \"msgid\": \"{minutes} minutes left\", \"msgstr\": [\"\"] }, \"a few seconds left\": { \"msgid\": \"a few seconds left\", \"msgstr\": [\"\"] }, \"Add\": { \"msgid\": \"Add\", \"msgstr\": [\"\"] }, \"Cancel uploads\": { \"msgid\": \"Cancel uploads\", \"msgstr\": [\"\"] }, \"estimating time left\": { \"msgid\": \"estimating time left\", \"msgstr\": [\"\"] }, \"paused\": { \"msgid\": \"paused\", \"msgstr\": [\"\"] } } } } }, { \"locale\": \"es_SV\", \"json\": { \"charset\": \"utf-8\", \"headers\": { \"Last-Translator\": \"Transifex Bot <>, 2022\", \"Language-Team\": \"Spanish (El Salvador) (https://www.transifex.com/nextcloud/teams/64236/es_SV/)\", \"Content-Type\": \"text/plain; charset=UTF-8\", \"Language\": \"es_SV\", \"Plural-Forms\": \"nplurals=2; plural=n == 1 ? 0 : n != 0 && n % 1000000 == 0 ? 1 : 2;\" }, \"translations\": { \"\": { \"\": { \"msgid\": \"\", \"comments\": { \"translator\": \"\\nTranslators:\\nTransifex Bot <>, 2022\\n\" }, \"msgstr\": [\"Last-Translator: Transifex Bot <>, 2022\\nLanguage-Team: Spanish (El Salvador) (https://www.transifex.com/nextcloud/teams/64236/es_SV/)\\nContent-Type: text/plain; charset=UTF-8\\nLanguage: es_SV\\nPlural-Forms: nplurals=2; plural=n == 1 ? 0 : n != 0 && n % 1000000 == 0 ? 1 : 2;\\n\"] }, \"{estimate} seconds left\": { \"msgid\": \"{estimate} seconds left\", \"msgstr\": [\"\"] }, \"{hours} hours and {minutes} minutes left\": { \"msgid\": \"{hours} hours and {minutes} minutes left\", \"msgstr\": [\"\"] }, \"{minutes} minutes left\": { \"msgid\": \"{minutes} minutes left\", \"msgstr\": [\"\"] }, \"a few seconds left\": { \"msgid\": \"a few seconds left\", \"msgstr\": [\"\"] }, \"Add\": { \"msgid\": \"Add\", \"msgstr\": [\"\"] }, \"Cancel uploads\": { \"msgid\": \"Cancel uploads\", \"msgstr\": [\"\"] }, \"estimating time left\": { \"msgid\": \"estimating time left\", \"msgstr\": [\"\"] }, \"paused\": { \"msgid\": \"paused\", \"msgstr\": [\"\"] } } } } }, { \"locale\": \"es_UY\", \"json\": { \"charset\": \"utf-8\", \"headers\": { \"Last-Translator\": \"Transifex Bot <>, 2022\", \"Language-Team\": \"Spanish (Uruguay) (https://www.transifex.com/nextcloud/teams/64236/es_UY/)\", \"Content-Type\": \"text/plain; charset=UTF-8\", \"Language\": \"es_UY\", \"Plural-Forms\": \"nplurals=3; plural=n == 1 ? 0 : n != 0 && n % 1000000 == 0 ? 1 : 2;\" }, \"translations\": { \"\": { \"\": { \"msgid\": \"\", \"comments\": { \"translator\": \"\\nTranslators:\\nTransifex Bot <>, 2022\\n\" }, \"msgstr\": [\"Last-Translator: Transifex Bot <>, 2022\\nLanguage-Team: Spanish (Uruguay) (https://www.transifex.com/nextcloud/teams/64236/es_UY/)\\nContent-Type: text/plain; charset=UTF-8\\nLanguage: es_UY\\nPlural-Forms: nplurals=3; plural=n == 1 ? 0 : n != 0 && n % 1000000 == 0 ? 1 : 2;\\n\"] }, \"{estimate} seconds left\": { \"msgid\": \"{estimate} seconds left\", \"msgstr\": [\"\"] }, \"{hours} hours and {minutes} minutes left\": { \"msgid\": \"{hours} hours and {minutes} minutes left\", \"msgstr\": [\"\"] }, \"{minutes} minutes left\": { \"msgid\": \"{minutes} minutes left\", \"msgstr\": [\"\"] }, \"a few seconds left\": { \"msgid\": \"a few seconds left\", \"msgstr\": [\"\"] }, \"Add\": { \"msgid\": \"Add\", \"msgstr\": [\"\"] }, \"Cancel uploads\": { \"msgid\": \"Cancel uploads\", \"msgstr\": [\"\"] }, \"estimating time left\": { \"msgid\": \"estimating time left\", \"msgstr\": [\"\"] }, \"paused\": { \"msgid\": \"paused\", \"msgstr\": [\"\"] } } } } }, { \"locale\": \"et_EE\", \"json\": { \"charset\": \"utf-8\", \"headers\": { \"Last-Translator\": \"Priit Jõerüüt , 2025\", \"Language-Team\": \"Estonian (Estonia) (https://app.transifex.com/nextcloud/teams/64236/et_EE/)\", \"Content-Type\": \"text/plain; charset=UTF-8\", \"Language\": \"et_EE\", \"Plural-Forms\": \"nplurals=2; plural=(n != 1);\" }, \"translations\": { \"\": { \"\": { \"msgid\": \"\", \"comments\": { \"translator\": \"\\nTranslators:\\nJoas Schilling, 2024\\nPriit Jõerüüt , 2025\\n\" }, \"msgstr\": [\"Last-Translator: Priit Jõerüüt , 2025\\nLanguage-Team: Estonian (Estonia) (https://app.transifex.com/nextcloud/teams/64236/et_EE/)\\nContent-Type: text/plain; charset=UTF-8\\nLanguage: et_EE\\nPlural-Forms: nplurals=2; plural=(n != 1);\\n\"] }, '\"{segment}\" is a forbidden file or folder name.': { \"msgid\": '\"{segment}\" is a forbidden file or folder name.', \"msgstr\": [\"„{segment}“ on keelatud faili- või kausta nimi.\"] }, '\"{segment}\" is a forbidden file type.': { \"msgid\": '\"{segment}\" is a forbidden file type.', \"msgstr\": [\"„{segment}“ on keelatud failitüüp.\"] }, '\"{segment}\" is not allowed inside a file or folder name.': { \"msgid\": '\"{segment}\" is not allowed inside a file or folder name.', \"msgstr\": [\"„{segment}“ pole faili- või kausta nimes lubatud.\"] }, \"{count} file conflict\": { \"msgid\": \"{count} file conflict\", \"msgid_plural\": \"{count} files conflict\", \"msgstr\": [\"{count} fail on vastuolus\", \"{count} faili on vastuolus\"] }, \"{count} file conflict in {dirname}\": { \"msgid\": \"{count} file conflict in {dirname}\", \"msgid_plural\": \"{count} file conflicts in {dirname}\", \"msgstr\": [\"{count} fail on vastuolus „{dirname}“ kaustas\", \"{count} faili on vastuolus „{dirname}“ kaustas\"] }, \"{seconds} seconds left\": { \"msgid\": \"{seconds} seconds left\", \"msgid_plural\": \"{seconds} seconds left\", \"msgstr\": [\"jäänud {seconds} sekund\", \"jäänud {seconds} sekundit\"] }, \"{time} left\": { \"msgid\": \"{time} left\", \"comments\": { \"extracted\": \"TRANSLATORS time has the format 00:00:00\" }, \"msgstr\": [\"aega jäänud {time} \"] }, \"a few seconds left\": { \"msgid\": \"a few seconds left\", \"msgstr\": [\"jäänud mõni sekund\"] }, \"assembling\": { \"msgid\": \"assembling\", \"msgstr\": [\"koostamisel\"] }, \"Cancel\": { \"msgid\": \"Cancel\", \"msgstr\": [\"Katkesta\"] }, \"Cancel the entire operation\": { \"msgid\": \"Cancel the entire operation\", \"msgstr\": [\"Katkesta kogu tegevus\"] }, \"Cancel uploads\": { \"msgid\": \"Cancel uploads\", \"msgstr\": [\"Katkesta üleslaadimine\"] }, \"Continue\": { \"msgid\": \"Continue\", \"msgstr\": [\"Jätka\"] }, \"Create new\": { \"msgid\": \"Create new\", \"msgstr\": [\"Loo uus\"] }, \"estimating time left\": { \"msgid\": \"estimating time left\", \"msgstr\": [\"hinnanguline järelejäänud aeg\"] }, \"Existing version\": { \"msgid\": \"Existing version\", \"msgstr\": [\"Olemasolev versioon\"] }, \"Failed to assemble the chunks together\": { \"msgid\": \"Failed to assemble the chunks together\", \"msgstr\": [\"Tükkide koostamine üheks tervikuks ei õnnestunud\"] }, \"Failed to upload the file\": { \"msgid\": \"Failed to upload the file\", \"msgstr\": [\"Faili üleslaadimine ei õnnestunud\"] }, 'Filenames must not end with \"{segment}\".': { \"msgid\": 'Filenames must not end with \"{segment}\".', \"msgstr\": [\"Failinime lõpus ei tohi olla „{segment}“.\"] }, \"If you select both versions, the incoming file will have a number added to its name.\": { \"msgid\": \"If you select both versions, the incoming file will have a number added to its name.\", \"msgstr\": [\"Kui sa valid mõlemad versioonid, lisatakse kopeeritud faili nimele number.\"] }, \"Invalid filename\": { \"msgid\": \"Invalid filename\", \"msgstr\": [\"Vigane failinimi\"] }, \"Last modified date unknown\": { \"msgid\": \"Last modified date unknown\", \"msgstr\": [\"Viimase muutmise kuupäev pole teada\"] }, \"New\": { \"msgid\": \"New\", \"msgstr\": [\"Uus\"] }, \"New filename\": { \"msgid\": \"New filename\", \"msgstr\": [\"Uus failinimi\"] }, \"New version\": { \"msgid\": \"New version\", \"msgstr\": [\"Uus versioon\"] }, \"paused\": { \"msgid\": \"paused\", \"msgstr\": [\"pausil\"] }, \"Preview image\": { \"msgid\": \"Preview image\", \"msgstr\": [\"Vaata pildi eelvaadet\"] }, \"Rename\": { \"msgid\": \"Rename\", \"msgstr\": [\"Muuda nime\"] }, \"Select all checkboxes\": { \"msgid\": \"Select all checkboxes\", \"msgstr\": [\"Vali kõik märkeruudud\"] }, \"Select all existing files\": { \"msgid\": \"Select all existing files\", \"msgstr\": [\"Vali kõik olemasolevad failid\"] }, \"Select all new files\": { \"msgid\": \"Select all new files\", \"msgstr\": [\"Vali kõik uued failid\"] }, \"Skip\": { \"msgid\": \"Skip\", \"msgstr\": [\"Jäta vahele\"] }, \"Skip {count} file\": { \"msgid\": \"Skip {count} file\", \"msgid_plural\": \"Skip {count} files\", \"msgstr\": [\"Jäta vahele {count} fail\", \"Jäta vahele {count} faili\"] }, \"Skip this file\": { \"msgid\": \"Skip this file\", \"msgstr\": [\"Jäta vahele see fail\"] }, \"Unknown size\": { \"msgid\": \"Unknown size\", \"msgstr\": [\"Tundmatu suurus\"] }, \"Upload\": { \"msgid\": \"Upload\", \"msgstr\": [\"Laadi üles\"] }, \"Upload files\": { \"msgid\": \"Upload files\", \"msgstr\": [\"Laadi failid üles\"] }, \"Upload folders\": { \"msgid\": \"Upload folders\", \"msgstr\": [\"Laadi kaustad üles\"] }, \"Upload from device\": { \"msgid\": \"Upload from device\", \"msgstr\": [\"Laadi üles seadmest\"] }, \"Upload has been cancelled\": { \"msgid\": \"Upload has been cancelled\", \"msgstr\": [\"Üleslaadimine on katkestatud\"] }, \"Upload has been skipped\": { \"msgid\": \"Upload has been skipped\", \"msgstr\": [\"Üleslaadimine on vahele jäetud\"] }, 'Upload of \"{folder}\" has been skipped': { \"msgid\": 'Upload of \"{folder}\" has been skipped', \"msgstr\": [\"„{folder}“ kausta üleslaadimine on vahele jäetud\"] }, \"Upload progress\": { \"msgid\": \"Upload progress\", \"msgstr\": [\"Üleslaadimise edenemine\"] }, \"When an incoming folder is selected, any conflicting files within it will also be overwritten.\": { \"msgid\": \"When an incoming folder is selected, any conflicting files within it will also be overwritten.\", \"msgstr\": [\"Kui saabuvate failide kaust on valitud, siis seal asuvad vastuoluliste nimedega failid kirjutatakse samuti üle.\"] }, \"When an incoming folder is selected, the content is written into the existing folder and a recursive conflict resolution is performed.\": { \"msgid\": \"When an incoming folder is selected, the content is written into the existing folder and a recursive conflict resolution is performed.\", \"msgstr\": [\"Kui saabuvate failide kaust on valitud, siis sisu kirjutatakse olemasolevasse kausta ja käivitatakse rekursiivne vastuolude haldus.\"] }, \"Which files do you want to keep?\": { \"msgid\": \"Which files do you want to keep?\", \"msgstr\": [\"Milliseid faile soovid säilitada?\"] }, \"You can either rename the file, skip this file or cancel the whole operation.\": { \"msgid\": \"You can either rename the file, skip this file or cancel the whole operation.\", \"msgstr\": [\"Sa võid kas faili nime muuta, ta vahele jätta või kogu tegevuse katkestada.\"] }, \"You need to select at least one version of each file to continue.\": { \"msgid\": \"You need to select at least one version of each file to continue.\", \"msgstr\": [\"Jätkamiseks pead valima vähemalt ühe versiooni igast failist.\"] } } } } }, { \"locale\": \"eu\", \"json\": { \"charset\": \"utf-8\", \"headers\": { \"Last-Translator\": \"Unai Tolosa Pontesta , 2022\", \"Language-Team\": \"Basque (https://www.transifex.com/nextcloud/teams/64236/eu/)\", \"Content-Type\": \"text/plain; charset=UTF-8\", \"Language\": \"eu\", \"Plural-Forms\": \"nplurals=2; plural=(n != 1);\" }, \"translations\": { \"\": { \"\": { \"msgid\": \"\", \"comments\": { \"translator\": \"\\nTranslators:\\nUnai Tolosa Pontesta , 2022\\n\" }, \"msgstr\": [\"Last-Translator: Unai Tolosa Pontesta , 2022\\nLanguage-Team: Basque (https://www.transifex.com/nextcloud/teams/64236/eu/)\\nContent-Type: text/plain; charset=UTF-8\\nLanguage: eu\\nPlural-Forms: nplurals=2; plural=(n != 1);\\n\"] }, \"{seconds} seconds left\": { \"msgid\": \"{seconds} seconds left\", \"msgstr\": [\"{seconds} segundo geratzen dira\"] }, \"{time} left\": { \"msgid\": \"{time} left\", \"comments\": { \"extracted\": \"time has the format 00:00:00\" }, \"msgstr\": [\"{time} geratzen da\"] }, \"a few seconds left\": { \"msgid\": \"a few seconds left\", \"msgstr\": [\"segundo batzuk geratzen dira\"] }, \"Add\": { \"msgid\": \"Add\", \"msgstr\": [\"Gehitu\"] }, \"Cancel uploads\": { \"msgid\": \"Cancel uploads\", \"msgstr\": [\"Ezeztatu igoerak\"] }, \"estimating time left\": { \"msgid\": \"estimating time left\", \"msgstr\": [\"kalkulatutako geratzen den denbora\"] }, \"paused\": { \"msgid\": \"paused\", \"msgstr\": [\"geldituta\"] }, \"Upload files\": { \"msgid\": \"Upload files\", \"msgstr\": [\"Igo fitxategiak\"] } } } } }, { \"locale\": \"fa\", \"json\": { \"charset\": \"utf-8\", \"headers\": { \"Last-Translator\": \"Alireza Rashidi, 2025\", \"Language-Team\": \"Persian (https://app.transifex.com/nextcloud/teams/64236/fa/)\", \"Content-Type\": \"text/plain; charset=UTF-8\", \"Language\": \"fa\", \"Plural-Forms\": \"nplurals=2; plural=(n > 1);\" }, \"translations\": { \"\": { \"\": { \"msgid\": \"\", \"comments\": { \"translator\": \"\\nTranslators:\\nJoas Schilling, 2024\\nreza reza , 2024\\nAlireza Rashidi, 2025\\n\" }, \"msgstr\": [\"Last-Translator: Alireza Rashidi, 2025\\nLanguage-Team: Persian (https://app.transifex.com/nextcloud/teams/64236/fa/)\\nContent-Type: text/plain; charset=UTF-8\\nLanguage: fa\\nPlural-Forms: nplurals=2; plural=(n > 1);\\n\"] }, '\"{segment}\" is a forbidden file or folder name.': { \"msgid\": '\"{segment}\" is a forbidden file or folder name.', \"msgstr\": [\"{segment} یک نام فایل یا پوشه ممنوعه است.\"] }, '\"{segment}\" is a forbidden file type.': { \"msgid\": '\"{segment}\" is a forbidden file type.', \"msgstr\": [\"{segment} یک نوع فایل ممنوعه است.\"] }, '\"{segment}\" is not allowed inside a file or folder name.': { \"msgid\": '\"{segment}\" is not allowed inside a file or folder name.', \"msgstr\": [\"{segment} داخل نام فایل یا پوشه مجاز نیست.\"] }, \"{count} file conflict\": { \"msgid\": \"{count} file conflict\", \"msgid_plural\": \"{count} files conflict\", \"msgstr\": [\"{count} تداخل فایل\", \"{count} تداخل فایل‌ها\"] }, \"{count} file conflict in {dirname}\": { \"msgid\": \"{count} file conflict in {dirname}\", \"msgid_plural\": \"{count} file conflicts in {dirname}\", \"msgstr\": [\"{count} پرونده با {dirname} ناسازگاری داشت\", \"{count} پرونده با {dirname} ناسازگاری داشت\"] }, \"{seconds} seconds left\": { \"msgid\": \"{seconds} seconds left\", \"msgid_plural\": \"{seconds} seconds left\", \"msgstr\": [\"{seconds} ثانیه مانده\", \"{seconds} ثانیه مانده\"] }, \"{time} left\": { \"msgid\": \"{time} left\", \"comments\": { \"extracted\": \"TRANSLATORS time has the format 00:00:00\" }, \"msgstr\": [\"{time} باقی مانده\"] }, \"a few seconds left\": { \"msgid\": \"a few seconds left\", \"msgstr\": [\"چند ثانیه مانده\"] }, \"assembling\": { \"msgid\": \"assembling\", \"msgstr\": [\"سرهم کردن\"] }, \"Cancel\": { \"msgid\": \"Cancel\", \"msgstr\": [\"رد کردن\"] }, \"Cancel the entire operation\": { \"msgid\": \"Cancel the entire operation\", \"msgstr\": [\"رد کردن کل عملیات\"] }, \"Cancel uploads\": { \"msgid\": \"Cancel uploads\", \"msgstr\": [\"رد کردن بارگذاری\"] }, \"Continue\": { \"msgid\": \"Continue\", \"msgstr\": [\"ادامه\"] }, \"Create new\": { \"msgid\": \"Create new\", \"msgstr\": [\"ساخت جدید\"] }, \"estimating time left\": { \"msgid\": \"estimating time left\", \"msgstr\": [\"تخمین زمان باقی مانده\"] }, \"Existing version\": { \"msgid\": \"Existing version\", \"msgstr\": [\"نگارش موجود\"] }, \"Failed to assemble the chunks together\": { \"msgid\": \"Failed to assemble the chunks together\", \"msgstr\": [\"نتوانست تکه‌های را به سرهم کند\"] }, \"Failed to upload the file\": { \"msgid\": \"Failed to upload the file\", \"msgstr\": [\"نتوانست پرونده را بارگذاری کند\"] }, 'Filenames must not end with \"{segment}\".': { \"msgid\": 'Filenames must not end with \"{segment}\".', \"msgstr\": [\"نام پرونده نباید با {segment} پایان یابد.\"] }, \"If you select both versions, the incoming file will have a number added to its name.\": { \"msgid\": \"If you select both versions, the incoming file will have a number added to its name.\", \"msgstr\": [\"اگر هر دو نسخه را انتخاب کنید، یک عدد به نام پرونده ورودی اضافه خواهد شد.\"] }, \"Invalid filename\": { \"msgid\": \"Invalid filename\", \"msgstr\": [\"نام پرونده نامعتبر\"] }, \"Last modified date unknown\": { \"msgid\": \"Last modified date unknown\", \"msgstr\": [\"آخرین تاریخ تغییر نامشخص\"] }, \"New\": { \"msgid\": \"New\", \"msgstr\": [\"جدید\"] }, \"New filename\": { \"msgid\": \"New filename\", \"msgstr\": [\"نام فایل جدید\"] }, \"New version\": { \"msgid\": \"New version\", \"msgstr\": [\"نسخه جدید\"] }, \"paused\": { \"msgid\": \"paused\", \"msgstr\": [\"مکث کردن\"] }, \"Preview image\": { \"msgid\": \"Preview image\", \"msgstr\": [\"پیش نمایش تصویر\"] }, \"Rename\": { \"msgid\": \"Rename\", \"msgstr\": [\"تغییر نام\"] }, \"Select all checkboxes\": { \"msgid\": \"Select all checkboxes\", \"msgstr\": [\"انتخاب همه چک‌باکس‌ها\"] }, \"Select all existing files\": { \"msgid\": \"Select all existing files\", \"msgstr\": [\"انتخاب همه فایل‌های موجود\"] }, \"Select all new files\": { \"msgid\": \"Select all new files\", \"msgstr\": [\"انتخاب همه فایل‌های جدید\"] }, \"Skip\": { \"msgid\": \"Skip\", \"msgstr\": [\"رد شدن\"] }, \"Skip this file\": { \"msgid\": \"Skip this file\", \"msgid_plural\": \"Skip {count} files\", \"msgstr\": [\"رد شدن از \", \"رد شدن از {count} فایل\"] }, \"Unknown size\": { \"msgid\": \"Unknown size\", \"msgstr\": [\"اندازه نامشخص\"] }, \"Upload\": { \"msgid\": \"Upload\", \"msgstr\": [\"بارگذاری\"] }, \"Upload files\": { \"msgid\": \"Upload files\", \"msgstr\": [\"بارگذاری پرونده‌ها\"] }, \"Upload folders\": { \"msgid\": \"Upload folders\", \"msgstr\": [\"بارگذاری پوشه‌ها\"] }, \"Upload from device\": { \"msgid\": \"Upload from device\", \"msgstr\": [\"بارگذاری از دستگاه\"] }, \"Upload has been cancelled\": { \"msgid\": \"Upload has been cancelled\", \"msgstr\": [\"بارگذاری رد شده است\"] }, \"Upload has been skipped\": { \"msgid\": \"Upload has been skipped\", \"msgstr\": [\"بارگذاری نادیده گرفته شده است\"] }, 'Upload of \"{folder}\" has been skipped': { \"msgid\": 'Upload of \"{folder}\" has been skipped', \"msgstr\": [\"بارگذاری {folder} نادیده گرفته شده است\"] }, \"Upload progress\": { \"msgid\": \"Upload progress\", \"msgstr\": [\"روند بارگذاری\"] }, \"When an incoming folder is selected, any conflicting files within it will also be overwritten.\": { \"msgid\": \"When an incoming folder is selected, any conflicting files within it will also be overwritten.\", \"msgstr\": [\"هنگامی که یک پوشه ورودی انتخاب می‌شود، هر فایل متناقضی در آن نیز بازنویسی می‌شود.\"] }, \"When an incoming folder is selected, the content is written into the existing folder and a recursive conflict resolution is performed.\": { \"msgid\": \"When an incoming folder is selected, the content is written into the existing folder and a recursive conflict resolution is performed.\", \"msgstr\": [\"هنگامی که یک پوشه دریافتی انتخاب می شود ، محتوا در پوشه موجود نوشته می شود و حل ناسازگاری بازگشتی انجام می شود.\"] }, \"Which files do you want to keep?\": { \"msgid\": \"Which files do you want to keep?\", \"msgstr\": [\"کدام پرونده‌ها را می‌خواهید نگه دارید؟\"] }, \"You can either rename the file, skip this file or cancel the whole operation.\": { \"msgid\": \"You can either rename the file, skip this file or cancel the whole operation.\", \"msgstr\": [\"می‌توانید نام پرونده را تغییر دهید، از این پرونده رد شوید یا کل عملیات را رد کنید.\"] }, \"You need to select at least one version of each file to continue.\": { \"msgid\": \"You need to select at least one version of each file to continue.\", \"msgstr\": [\"برای ادامه باید دست‌کم یک نگارش از هر پرونده را انتخاب کنید.\"] } } } } }, { \"locale\": \"fi\", \"json\": { \"charset\": \"utf-8\", \"headers\": { \"Last-Translator\": \"Jiri Grönroos , 2025\", \"Language-Team\": \"Finnish (Finland) (https://app.transifex.com/nextcloud/teams/64236/fi_FI/)\", \"Content-Type\": \"text/plain; charset=UTF-8\", \"Language\": \"fi_FI\", \"Plural-Forms\": \"nplurals=2; plural=(n != 1);\" }, \"translations\": { \"\": { \"\": { \"msgid\": \"\", \"comments\": { \"translator\": \"\\nTranslators:\\nJoas Schilling, 2024\\nthingumy, 2024\\nteemue, 2024\\nJiri Grönroos , 2025\\n\" }, \"msgstr\": [\"Last-Translator: Jiri Grönroos , 2025\\nLanguage-Team: Finnish (Finland) (https://app.transifex.com/nextcloud/teams/64236/fi_FI/)\\nContent-Type: text/plain; charset=UTF-8\\nLanguage: fi_FI\\nPlural-Forms: nplurals=2; plural=(n != 1);\\n\"] }, '\"{segment}\" is a forbidden file or folder name.': { \"msgid\": '\"{segment}\" is a forbidden file or folder name.', \"msgstr\": ['\"{segment}\" on kielletty tiedoston tai hakemiston nimi.'] }, '\"{segment}\" is a forbidden file type.': { \"msgid\": '\"{segment}\" is a forbidden file type.', \"msgstr\": ['\"{segment}\" on kielletty tiedostotyyppi.'] }, '\"{segment}\" is not allowed inside a file or folder name.': { \"msgid\": '\"{segment}\" is not allowed inside a file or folder name.', \"msgstr\": ['\"{segment}\" ei ole sallittu tiedoston tai hakemiston nimessä.'] }, \"{count} file conflict\": { \"msgid\": \"{count} file conflict\", \"msgid_plural\": \"{count} files conflict\", \"msgstr\": [\"{count} tiedoston ristiriita\", \"{count} tiedoston ristiriita\"] }, \"{count} file conflict in {dirname}\": { \"msgid\": \"{count} file conflict in {dirname}\", \"msgid_plural\": \"{count} file conflicts in {dirname}\", \"msgstr\": [\"{count} tiedoston ristiriita kansiossa {dirname}\", \"{count} tiedoston ristiriita kansiossa {dirname}\"] }, \"{seconds} seconds left\": { \"msgid\": \"{seconds} seconds left\", \"msgid_plural\": \"{seconds} seconds left\", \"msgstr\": [\"{seconds} sekunti jäljellä\", \"{seconds} sekuntia jäljellä\"] }, \"{time} left\": { \"msgid\": \"{time} left\", \"comments\": { \"extracted\": \"TRANSLATORS time has the format 00:00:00\" }, \"msgstr\": [\"{time} jäljellä\"] }, \"a few seconds left\": { \"msgid\": \"a few seconds left\", \"msgstr\": [\"muutama sekunti jäljellä\"] }, \"assembling\": { \"msgid\": \"assembling\", \"msgstr\": [\"kootaan\"] }, \"Cancel\": { \"msgid\": \"Cancel\", \"msgstr\": [\"Peruuta\"] }, \"Cancel the entire operation\": { \"msgid\": \"Cancel the entire operation\", \"msgstr\": [\"Peruuta koko toimenpide\"] }, \"Cancel uploads\": { \"msgid\": \"Cancel uploads\", \"msgstr\": [\"Peruuta lähetykset\"] }, \"Continue\": { \"msgid\": \"Continue\", \"msgstr\": [\"Jatka\"] }, \"Create new\": { \"msgid\": \"Create new\", \"msgstr\": [\"Luo uusi\"] }, \"estimating time left\": { \"msgid\": \"estimating time left\", \"msgstr\": [\"arvioidaan jäljellä olevaa aikaa\"] }, \"Existing version\": { \"msgid\": \"Existing version\", \"msgstr\": [\"Olemassa oleva versio\"] }, \"Failed to assemble the chunks together\": { \"msgid\": \"Failed to assemble the chunks together\", \"msgstr\": [\"Palojen kokoaminen yhteen epäonnistui\"] }, \"Failed to upload the file\": { \"msgid\": \"Failed to upload the file\", \"msgstr\": [\"Tiedoston lähetys epäonnistui\"] }, 'Filenames must not end with \"{segment}\".': { \"msgid\": 'Filenames must not end with \"{segment}\".', \"msgstr\": ['Tiedoston nimi ei saa päättyä \"{segment}\"'] }, \"If you select both versions, the incoming file will have a number added to its name.\": { \"msgid\": \"If you select both versions, the incoming file will have a number added to its name.\", \"msgstr\": [\"Jos valitset molemmat versiot, saapuvan tiedoston nimeen lisätään numero.\"] }, \"Invalid filename\": { \"msgid\": \"Invalid filename\", \"msgstr\": [\"Kielletty/väärä tiedoston nimi\"] }, \"Last modified date unknown\": { \"msgid\": \"Last modified date unknown\", \"msgstr\": [\"Viimeisin muokkauspäivä on tuntematon\"] }, \"New\": { \"msgid\": \"New\", \"msgstr\": [\"Uusi\"] }, \"New filename\": { \"msgid\": \"New filename\", \"msgstr\": [\"Uusi tiedostonimi\"] }, \"New version\": { \"msgid\": \"New version\", \"msgstr\": [\"Uusi versio\"] }, \"paused\": { \"msgid\": \"paused\", \"msgstr\": [\"keskeytetty\"] }, \"Preview image\": { \"msgid\": \"Preview image\", \"msgstr\": [\"Esikatsele kuva\"] }, \"Rename\": { \"msgid\": \"Rename\", \"msgstr\": [\"Nimeä uudelleen\"] }, \"Select all checkboxes\": { \"msgid\": \"Select all checkboxes\", \"msgstr\": [\"Valitse kaikki valintaruudut\"] }, \"Select all existing files\": { \"msgid\": \"Select all existing files\", \"msgstr\": [\"Valitse kaikki olemassa olevat tiedostot\"] }, \"Select all new files\": { \"msgid\": \"Select all new files\", \"msgstr\": [\"Valitse kaikki uudet tiedostot\"] }, \"Skip\": { \"msgid\": \"Skip\", \"msgstr\": [\"Ohita\"] }, \"Skip this file\": { \"msgid\": \"Skip this file\", \"msgid_plural\": \"Skip {count} files\", \"msgstr\": [\"Ohita tämä tiedosto\", \"Ohita {count} tiedostoa\"] }, \"Unknown size\": { \"msgid\": \"Unknown size\", \"msgstr\": [\"Tuntematon koko\"] }, \"Upload\": { \"msgid\": \"Upload\", \"msgstr\": [\"Lähetä\"] }, \"Upload files\": { \"msgid\": \"Upload files\", \"msgstr\": [\"Lähetä tiedostoja\"] }, \"Upload folders\": { \"msgid\": \"Upload folders\", \"msgstr\": [\"Lähetä kansioita\"] }, \"Upload from device\": { \"msgid\": \"Upload from device\", \"msgstr\": [\"Lähetä laitteelta\"] }, \"Upload has been cancelled\": { \"msgid\": \"Upload has been cancelled\", \"msgstr\": [\"Lähetys on peruttu\"] }, \"Upload has been skipped\": { \"msgid\": \"Upload has been skipped\", \"msgstr\": [\"Lähetys on ohitettu\"] }, 'Upload of \"{folder}\" has been skipped': { \"msgid\": 'Upload of \"{folder}\" has been skipped', \"msgstr\": ['Hakemiston \"{folder}\" lähetys on ohitettu'] }, \"Upload progress\": { \"msgid\": \"Upload progress\", \"msgstr\": [\"Lähetyksen edistyminen\"] }, \"When an incoming folder is selected, any conflicting files within it will also be overwritten.\": { \"msgid\": \"When an incoming folder is selected, any conflicting files within it will also be overwritten.\", \"msgstr\": [\"Valittuasi saapuvien kansion, kaikki ristiriitaiset tiedostot kansiossa ylikirjoitetaan.\"] }, \"When an incoming folder is selected, the content is written into the existing folder and a recursive conflict resolution is performed.\": { \"msgid\": \"When an incoming folder is selected, the content is written into the existing folder and a recursive conflict resolution is performed.\", \"msgstr\": [\"Valittuasi saapuvien kansion, sisältö kirjoitetaan olemassaolevaan kansioon ja suoritetaan rekursiivinen ristiriitojen poisto.\"] }, \"Which files do you want to keep?\": { \"msgid\": \"Which files do you want to keep?\", \"msgstr\": [\"Mitkä tiedostot haluat säilyttää?\"] }, \"You can either rename the file, skip this file or cancel the whole operation.\": { \"msgid\": \"You can either rename the file, skip this file or cancel the whole operation.\", \"msgstr\": [\"Voit joko nimetä tiedoston uudelleen, ohittaa tämän tiedoston tai peruuttaa koko toiminnon.\"] }, \"You need to select at least one version of each file to continue.\": { \"msgid\": \"You need to select at least one version of each file to continue.\", \"msgstr\": [\"Sinun täytyy valita vähintään yksi versio jokaisesta tiedostosta jatkaaksesi.\"] } } } } }, { \"locale\": \"fo\", \"json\": { \"charset\": \"utf-8\", \"headers\": { \"Last-Translator\": \"Transifex Bot <>, 2022\", \"Language-Team\": \"Faroese (https://www.transifex.com/nextcloud/teams/64236/fo/)\", \"Content-Type\": \"text/plain; charset=UTF-8\", \"Language\": \"fo\", \"Plural-Forms\": \"nplurals=2; plural=(n != 1);\" }, \"translations\": { \"\": { \"\": { \"msgid\": \"\", \"comments\": { \"translator\": \"\\nTranslators:\\nTransifex Bot <>, 2022\\n\" }, \"msgstr\": [\"Last-Translator: Transifex Bot <>, 2022\\nLanguage-Team: Faroese (https://www.transifex.com/nextcloud/teams/64236/fo/)\\nContent-Type: text/plain; charset=UTF-8\\nLanguage: fo\\nPlural-Forms: nplurals=2; plural=(n != 1);\\n\"] }, \"{estimate} seconds left\": { \"msgid\": \"{estimate} seconds left\", \"msgstr\": [\"\"] }, \"{hours} hours and {minutes} minutes left\": { \"msgid\": \"{hours} hours and {minutes} minutes left\", \"msgstr\": [\"\"] }, \"{minutes} minutes left\": { \"msgid\": \"{minutes} minutes left\", \"msgstr\": [\"\"] }, \"a few seconds left\": { \"msgid\": \"a few seconds left\", \"msgstr\": [\"\"] }, \"Add\": { \"msgid\": \"Add\", \"msgstr\": [\"\"] }, \"Cancel uploads\": { \"msgid\": \"Cancel uploads\", \"msgstr\": [\"\"] }, \"estimating time left\": { \"msgid\": \"estimating time left\", \"msgstr\": [\"\"] }, \"paused\": { \"msgid\": \"paused\", \"msgstr\": [\"\"] } } } } }, { \"locale\": \"fr\", \"json\": { \"charset\": \"utf-8\", \"headers\": { \"Last-Translator\": \"Caro Leviia, 2025\", \"Language-Team\": \"French (https://app.transifex.com/nextcloud/teams/64236/fr/)\", \"Content-Type\": \"text/plain; charset=UTF-8\", \"Language\": \"fr\", \"Plural-Forms\": \"nplurals=3; plural=(n == 0 || n == 1) ? 0 : n != 0 && n % 1000000 == 0 ? 1 : 2;\" }, \"translations\": { \"\": { \"\": { \"msgid\": \"\", \"comments\": { \"translator\": \"\\nTranslators:\\nJoas Schilling, 2024\\nBenoit Pruneau, 2024\\nJEEEEEEEEEEEEEEEEEEEEEED, 2024\\nJérôme HERBINET, 2024\\nacazenave, 2024\\nLisa Cintosh, 2025\\nLdm Public , 2025\\nCaro Leviia, 2025\\n\" }, \"msgstr\": [\"Last-Translator: Caro Leviia, 2025\\nLanguage-Team: French (https://app.transifex.com/nextcloud/teams/64236/fr/)\\nContent-Type: text/plain; charset=UTF-8\\nLanguage: fr\\nPlural-Forms: nplurals=3; plural=(n == 0 || n == 1) ? 0 : n != 0 && n % 1000000 == 0 ? 1 : 2;\\n\"] }, '\"{segment}\" is a forbidden file or folder name.': { \"msgid\": '\"{segment}\" is a forbidden file or folder name.', \"msgstr\": ['\"{segment}\" est un nom de fichier ou de dossier interdit.'] }, '\"{segment}\" is a forbidden file type.': { \"msgid\": '\"{segment}\" is a forbidden file type.', \"msgstr\": ['\"{segment}\" est un type de fichier interdit.'] }, '\"{segment}\" is not allowed inside a file or folder name.': { \"msgid\": '\"{segment}\" is not allowed inside a file or folder name.', \"msgstr\": [`\"{segment}\" n'est pas autorisé dans le nom d'un fichier ou d'un dossier.`] }, \"{count} file conflict\": { \"msgid\": \"{count} file conflict\", \"msgid_plural\": \"{count} files conflict\", \"msgstr\": [\"{count} fichier en conflit\", \"{count} fichiers en conflit\", \"{count} fichiers en conflit\"] }, \"{count} file conflict in {dirname}\": { \"msgid\": \"{count} file conflict in {dirname}\", \"msgid_plural\": \"{count} file conflicts in {dirname}\", \"msgstr\": [\"{count} fichier en conflit dans {dirname}\", \"{count} fichiers en conflit dans {dirname}\", \"{count} fichiers en conflit dans {dirname}\"] }, \"{seconds} seconds left\": { \"msgid\": \"{seconds} seconds left\", \"msgid_plural\": \"{seconds} seconds left\", \"msgstr\": [\"{seconds} seconde restante\", \"{seconds} secondes restantes\", \"{seconds} secondes restantes\"] }, \"{time} left\": { \"msgid\": \"{time} left\", \"comments\": { \"extracted\": \"TRANSLATORS time has the format 00:00:00\" }, \"msgstr\": [\"{time} restant\"] }, \"a few seconds left\": { \"msgid\": \"a few seconds left\", \"msgstr\": [\"quelques secondes restantes\"] }, \"assembling\": { \"msgid\": \"assembling\", \"msgstr\": [\"assemblage\"] }, \"Cancel\": { \"msgid\": \"Cancel\", \"msgstr\": [\"Annuler\"] }, \"Cancel the entire operation\": { \"msgid\": \"Cancel the entire operation\", \"msgstr\": [\"Annuler toute l'opération\"] }, \"Cancel uploads\": { \"msgid\": \"Cancel uploads\", \"msgstr\": [\"Annuler les téléversements\"] }, \"Continue\": { \"msgid\": \"Continue\", \"msgstr\": [\"Continuer\"] }, \"Create new\": { \"msgid\": \"Create new\", \"msgstr\": [\"Créer un nouveau\"] }, \"estimating time left\": { \"msgid\": \"estimating time left\", \"msgstr\": [\"estimation du temps restant\"] }, \"Existing version\": { \"msgid\": \"Existing version\", \"msgstr\": [\"Version existante\"] }, \"Failed to assemble the chunks together\": { \"msgid\": \"Failed to assemble the chunks together\", \"msgstr\": [\"Échec de l'assemblage des morceaux\"] }, \"Failed to upload the file\": { \"msgid\": \"Failed to upload the file\", \"msgstr\": [\"Échec de téléversement du fichier\"] }, 'Filenames must not end with \"{segment}\".': { \"msgid\": 'Filenames must not end with \"{segment}\".', \"msgstr\": ['Les noms des fichiers ne doivent pas terminer par \"{segment}\".'] }, \"If you select both versions, the incoming file will have a number added to its name.\": { \"msgid\": \"If you select both versions, the incoming file will have a number added to its name.\", \"msgstr\": [\"Si vous sélectionnez les deux versions, un numéro sera ajouté au nom du fichier entrant.\"] }, \"Invalid filename\": { \"msgid\": \"Invalid filename\", \"msgstr\": [\"Nom de fichier invalide\"] }, \"Last modified date unknown\": { \"msgid\": \"Last modified date unknown\", \"msgstr\": [\"Date de la dernière modification inconnue\"] }, \"New\": { \"msgid\": \"New\", \"msgstr\": [\"Nouveau\"] }, \"New filename\": { \"msgid\": \"New filename\", \"msgstr\": [\"Nouveau nom de fichier\"] }, \"New version\": { \"msgid\": \"New version\", \"msgstr\": [\"Nouvelle version\"] }, \"paused\": { \"msgid\": \"paused\", \"msgstr\": [\"en pause\"] }, \"Preview image\": { \"msgid\": \"Preview image\", \"msgstr\": [\"Aperçu de l'image\"] }, \"Rename\": { \"msgid\": \"Rename\", \"msgstr\": [\"Renommer\"] }, \"Select all checkboxes\": { \"msgid\": \"Select all checkboxes\", \"msgstr\": [\"Sélectionner toutes les cases à cocher\"] }, \"Select all existing files\": { \"msgid\": \"Select all existing files\", \"msgstr\": [\"Sélectionner tous les fichiers existants\"] }, \"Select all new files\": { \"msgid\": \"Select all new files\", \"msgstr\": [\"Sélectionner tous les nouveaux fichiers\"] }, \"Skip\": { \"msgid\": \"Skip\", \"msgstr\": [\"Ignorer\"] }, \"Skip {count} file\": { \"msgid\": \"Skip {count} file\", \"msgid_plural\": \"Skip {count} files\", \"msgstr\": [\"{count} fichier ignoré\", \"{count} fichiers ignorés\", \"{count} fichiers ignorés\"] }, \"Skip this file\": { \"msgid\": \"Skip this file\", \"msgstr\": [\"Ignorer ce fichier\"] }, \"Unknown size\": { \"msgid\": \"Unknown size\", \"msgstr\": [\"Taille inconnue\"] }, \"Upload\": { \"msgid\": \"Upload\", \"msgstr\": [\"Téléverser\"] }, \"Upload files\": { \"msgid\": \"Upload files\", \"msgstr\": [\"Téléverser des fichiers\"] }, \"Upload folders\": { \"msgid\": \"Upload folders\", \"msgstr\": [\"Téléverser des dossiers\"] }, \"Upload from device\": { \"msgid\": \"Upload from device\", \"msgstr\": [\"Téléverser depuis l'appareil\"] }, \"Upload has been cancelled\": { \"msgid\": \"Upload has been cancelled\", \"msgstr\": [\"Le téléversement a été annulé\"] }, \"Upload has been skipped\": { \"msgid\": \"Upload has been skipped\", \"msgstr\": [\"Le téléversement a été ignoré\"] }, 'Upload of \"{folder}\" has been skipped': { \"msgid\": 'Upload of \"{folder}\" has been skipped', \"msgstr\": ['Le téléversement de \"{folder}\" a été ignoré'] }, \"Upload progress\": { \"msgid\": \"Upload progress\", \"msgstr\": [\"Progression du téléversement\"] }, \"When an incoming folder is selected, any conflicting files within it will also be overwritten.\": { \"msgid\": \"When an incoming folder is selected, any conflicting files within it will also be overwritten.\", \"msgstr\": [\"Lorsqu'un dossier entrant est sélectionné, tous les fichiers en conflit qu'il contient seront également écrasés.\"] }, \"When an incoming folder is selected, the content is written into the existing folder and a recursive conflict resolution is performed.\": { \"msgid\": \"When an incoming folder is selected, the content is written into the existing folder and a recursive conflict resolution is performed.\", \"msgstr\": [\"Lorsqu'un dossier entrant est sélectionné, le contenu est ajouté dans le dossier existant et une résolution récursive des conflits est effectuée.\"] }, \"Which files do you want to keep?\": { \"msgid\": \"Which files do you want to keep?\", \"msgstr\": [\"Quels fichiers souhaitez-vous conserver ?\"] }, \"You can either rename the file, skip this file or cancel the whole operation.\": { \"msgid\": \"You can either rename the file, skip this file or cancel the whole operation.\", \"msgstr\": [\"Vous pouvez soit renommer le fichier, soit ignorer le fichier, soit annuler toute l'opération.\"] }, \"You need to select at least one version of each file to continue.\": { \"msgid\": \"You need to select at least one version of each file to continue.\", \"msgstr\": [\"Vous devez sélectionner au moins une version de chaque fichier pour continuer.\"] } } } } }, { \"locale\": \"ga\", \"json\": { \"charset\": \"utf-8\", \"headers\": { \"Last-Translator\": \"Aindriú Mac Giolla Eoin, 2025\", \"Language-Team\": \"Irish (https://app.transifex.com/nextcloud/teams/64236/ga/)\", \"Content-Type\": \"text/plain; charset=UTF-8\", \"Language\": \"ga\", \"Plural-Forms\": \"nplurals=5; plural=(n==1 ? 0 : n==2 ? 1 : n<7 ? 2 : n<11 ? 3 : 4);\" }, \"translations\": { \"\": { \"\": { \"msgid\": \"\", \"comments\": { \"translator\": \"\\nTranslators:\\nAindriú Mac Giolla Eoin, 2025\\n\" }, \"msgstr\": [\"Last-Translator: Aindriú Mac Giolla Eoin, 2025\\nLanguage-Team: Irish (https://app.transifex.com/nextcloud/teams/64236/ga/)\\nContent-Type: text/plain; charset=UTF-8\\nLanguage: ga\\nPlural-Forms: nplurals=5; plural=(n==1 ? 0 : n==2 ? 1 : n<7 ? 2 : n<11 ? 3 : 4);\\n\"] }, '\"{segment}\" is a forbidden file or folder name.': { \"msgid\": '\"{segment}\" is a forbidden file or folder name.', \"msgstr\": ['Is ainm toirmiscthe comhaid nó fillteáin é \"{segment}\".'] }, '\"{segment}\" is a forbidden file type.': { \"msgid\": '\"{segment}\" is a forbidden file type.', \"msgstr\": ['Is cineál comhaid toirmiscthe é \"{segment}\".'] }, '\"{segment}\" is not allowed inside a file or folder name.': { \"msgid\": '\"{segment}\" is not allowed inside a file or folder name.', \"msgstr\": [`Ní cheadaítear \"{segment}\" taobh istigh d'ainm comhaid nó fillteáin.`] }, \"{count} file conflict\": { \"msgid\": \"{count} file conflict\", \"msgid_plural\": \"{count} files conflict\", \"msgstr\": [\"{count} coimhlint comhaid\", \"{count} coimhlintí comhaid\", \"{count} coimhlintí comhaid\", \"{count} coimhlintí comhaid\", \"{count} coimhlintí comhaid\"] }, \"{count} file conflict in {dirname}\": { \"msgid\": \"{count} file conflict in {dirname}\", \"msgid_plural\": \"{count} file conflicts in {dirname}\", \"msgstr\": [\"{count} coimhlint comhaid i {dirname}\", \"{count} coimhlintí comhaid i {dirname}\", \"{count} coimhlintí comhaid i {dirname}\", \"{count} coimhlintí comhaid i {dirname}\", \"{count} coimhlintí comhaid i {dirname}\"] }, \"{seconds} seconds left\": { \"msgid\": \"{seconds} seconds left\", \"msgid_plural\": \"{seconds} seconds left\", \"msgstr\": [\"{seconds} soicind fágtha\", \"{seconds} soicind fágtha\", \"{seconds} soicind fágtha\", \"{seconds} soicind fágtha\", \"{seconds} soicind fágtha\"] }, \"{time} left\": { \"msgid\": \"{time} left\", \"comments\": { \"extracted\": \"TRANSLATORS time has the format 00:00:00\" }, \"msgstr\": [\"{time} fágtha\"] }, \"a few seconds left\": { \"msgid\": \"a few seconds left\", \"msgstr\": [\"cúpla soicind fágtha\"] }, \"assembling\": { \"msgid\": \"assembling\", \"msgstr\": [\"ag cur le chéile\"] }, \"Cancel\": { \"msgid\": \"Cancel\", \"msgstr\": [\"Cealaigh\"] }, \"Cancel the entire operation\": { \"msgid\": \"Cancel the entire operation\", \"msgstr\": [\"Cealaigh an oibríocht iomlán\"] }, \"Cancel uploads\": { \"msgid\": \"Cancel uploads\", \"msgstr\": [\"Cealaigh uaslódálacha\"] }, \"Continue\": { \"msgid\": \"Continue\", \"msgstr\": [\"Leanúint ar aghaidh\"] }, \"Create new\": { \"msgid\": \"Create new\", \"msgstr\": [\"Cruthaigh nua\"] }, \"estimating time left\": { \"msgid\": \"estimating time left\", \"msgstr\": [\"ag déanamh meastachán ar an am atá fágtha\"] }, \"Existing version\": { \"msgid\": \"Existing version\", \"msgstr\": [\"Leagan láithreach \"] }, \"Failed to assemble the chunks together\": { \"msgid\": \"Failed to assemble the chunks together\", \"msgstr\": [\"Theip ar na smután a chur le chéile le chéile\"] }, \"Failed to upload the file\": { \"msgid\": \"Failed to upload the file\", \"msgstr\": [\"Theip ar uaslódáil an chomhaid\"] }, 'Filenames must not end with \"{segment}\".': { \"msgid\": 'Filenames must not end with \"{segment}\".', \"msgstr\": ['Níor cheart go gcríochnaíonn comhaid chomhad le \"{segment}\".'] }, \"If you select both versions, the incoming file will have a number added to its name.\": { \"msgid\": \"If you select both versions, the incoming file will have a number added to its name.\", \"msgstr\": [\"Má roghnaíonn tú an dá leagan, cuirfear uimhir leis an ainm a thagann isteach.\"] }, \"Invalid filename\": { \"msgid\": \"Invalid filename\", \"msgstr\": [\"Ainm comhaid neamhbhailí\"] }, \"Last modified date unknown\": { \"msgid\": \"Last modified date unknown\", \"msgstr\": [\"Dáta modhnaithe is déanaí anaithnid\"] }, \"New\": { \"msgid\": \"New\", \"msgstr\": [\"Nua\"] }, \"New filename\": { \"msgid\": \"New filename\", \"msgstr\": [\"Ainm comhaid nua\"] }, \"New version\": { \"msgid\": \"New version\", \"msgstr\": [\"Leagan nua\"] }, \"paused\": { \"msgid\": \"paused\", \"msgstr\": [\"sos\"] }, \"Preview image\": { \"msgid\": \"Preview image\", \"msgstr\": [\"Íomhá réamhamharc\"] }, \"Rename\": { \"msgid\": \"Rename\", \"msgstr\": [\"Athainmnigh\"] }, \"Select all checkboxes\": { \"msgid\": \"Select all checkboxes\", \"msgstr\": [\"Roghnaigh gach ticbhosca\"] }, \"Select all existing files\": { \"msgid\": \"Select all existing files\", \"msgstr\": [\"Roghnaigh gach comhad atá ann cheana féin\"] }, \"Select all new files\": { \"msgid\": \"Select all new files\", \"msgstr\": [\"Roghnaigh gach comhad nua\"] }, \"Skip\": { \"msgid\": \"Skip\", \"msgstr\": [\"Scipeáil\"] }, \"Skip {count} file\": { \"msgid\": \"Skip {count} file\", \"msgid_plural\": \"Skip {count} files\", \"msgstr\": [\"Léim an comhad {count}\", \"Léim thar {count} comhad\", \"Léim thar {count} comhad\", \"Léim thar {count} comhad\", \"Léim thar {count} comhad\"] }, \"Skip this file\": { \"msgid\": \"Skip this file\", \"msgstr\": [\"Seachain an comhad seo\"] }, \"Unknown size\": { \"msgid\": \"Unknown size\", \"msgstr\": [\"Méid anaithnid\"] }, \"Upload\": { \"msgid\": \"Upload\", \"msgstr\": [\"Uaslódáil\"] }, \"Upload files\": { \"msgid\": \"Upload files\", \"msgstr\": [\"Uaslódáil comhaid\"] }, \"Upload folders\": { \"msgid\": \"Upload folders\", \"msgstr\": [\"Uaslódáil fillteáin\"] }, \"Upload from device\": { \"msgid\": \"Upload from device\", \"msgstr\": [\"Íosluchtaigh ó ghléas\"] }, \"Upload has been cancelled\": { \"msgid\": \"Upload has been cancelled\", \"msgstr\": [\"Cuireadh an t-uaslódáil ar ceal\"] }, \"Upload has been skipped\": { \"msgid\": \"Upload has been skipped\", \"msgstr\": [\"Léiríodh an uaslódáil\"] }, 'Upload of \"{folder}\" has been skipped': { \"msgid\": 'Upload of \"{folder}\" has been skipped', \"msgstr\": ['Léiríodh an uaslódáil \"{folder}\".'] }, \"Upload progress\": { \"msgid\": \"Upload progress\", \"msgstr\": [\"Uaslódáil dul chun cinn\"] }, \"When an incoming folder is selected, any conflicting files within it will also be overwritten.\": { \"msgid\": \"When an incoming folder is selected, any conflicting files within it will also be overwritten.\", \"msgstr\": [\"Nuair a roghnaítear fillteán isteach, déanfar aon chomhad contrártha laistigh de a fhorscríobh freisin.\"] }, \"When an incoming folder is selected, the content is written into the existing folder and a recursive conflict resolution is performed.\": { \"msgid\": \"When an incoming folder is selected, the content is written into the existing folder and a recursive conflict resolution is performed.\", \"msgstr\": [\"Nuair a roghnaítear fillteán isteach, scríobhtar an t-ábhar isteach san fhillteán atá ann cheana agus déantar réiteach coinbhleachta athchúrsach.\"] }, \"Which files do you want to keep?\": { \"msgid\": \"Which files do you want to keep?\", \"msgstr\": [\"Cé na comhaid ar mhaith leat a choinneáil?\"] }, \"You can either rename the file, skip this file or cancel the whole operation.\": { \"msgid\": \"You can either rename the file, skip this file or cancel the whole operation.\", \"msgstr\": [\"Is féidir leat an comhad a athainmniú, scipeáil an comhad seo nó an oibríocht iomlán a chealú.\"] }, \"You need to select at least one version of each file to continue.\": { \"msgid\": \"You need to select at least one version of each file to continue.\", \"msgstr\": [\"Ní mór duit leagan amháin ar a laghad de gach comhad a roghnú chun leanúint ar aghaidh.\"] } } } } }, { \"locale\": \"gd\", \"json\": { \"charset\": \"utf-8\", \"headers\": { \"Last-Translator\": \"Transifex Bot <>, 2022\", \"Language-Team\": \"Gaelic, Scottish (https://www.transifex.com/nextcloud/teams/64236/gd/)\", \"Content-Type\": \"text/plain; charset=UTF-8\", \"Language\": \"gd\", \"Plural-Forms\": \"nplurals=4; plural=(n==1 || n==11) ? 0 : (n==2 || n==12) ? 1 : (n > 2 && n < 20) ? 2 : 3;\" }, \"translations\": { \"\": { \"\": { \"msgid\": \"\", \"comments\": { \"translator\": \"\\nTranslators:\\nTransifex Bot <>, 2022\\n\" }, \"msgstr\": [\"Last-Translator: Transifex Bot <>, 2022\\nLanguage-Team: Gaelic, Scottish (https://www.transifex.com/nextcloud/teams/64236/gd/)\\nContent-Type: text/plain; charset=UTF-8\\nLanguage: gd\\nPlural-Forms: nplurals=4; plural=(n==1 || n==11) ? 0 : (n==2 || n==12) ? 1 : (n > 2 && n < 20) ? 2 : 3;\\n\"] }, \"{estimate} seconds left\": { \"msgid\": \"{estimate} seconds left\", \"msgstr\": [\"\"] }, \"{hours} hours and {minutes} minutes left\": { \"msgid\": \"{hours} hours and {minutes} minutes left\", \"msgstr\": [\"\"] }, \"{minutes} minutes left\": { \"msgid\": \"{minutes} minutes left\", \"msgstr\": [\"\"] }, \"a few seconds left\": { \"msgid\": \"a few seconds left\", \"msgstr\": [\"\"] }, \"Add\": { \"msgid\": \"Add\", \"msgstr\": [\"\"] }, \"Cancel uploads\": { \"msgid\": \"Cancel uploads\", \"msgstr\": [\"\"] }, \"estimating time left\": { \"msgid\": \"estimating time left\", \"msgstr\": [\"\"] }, \"paused\": { \"msgid\": \"paused\", \"msgstr\": [\"\"] } } } } }, { \"locale\": \"gl\", \"json\": { \"charset\": \"utf-8\", \"headers\": { \"Last-Translator\": \"Miguel Anxo Bouzada , 2025\", \"Language-Team\": \"Galician (https://app.transifex.com/nextcloud/teams/64236/gl/)\", \"Content-Type\": \"text/plain; charset=UTF-8\", \"Language\": \"gl\", \"Plural-Forms\": \"nplurals=2; plural=(n != 1);\" }, \"translations\": { \"\": { \"\": { \"msgid\": \"\", \"comments\": { \"translator\": \"\\nTranslators:\\nJoas Schilling, 2024\\nMiguel Anxo Bouzada , 2025\\n\" }, \"msgstr\": [\"Last-Translator: Miguel Anxo Bouzada , 2025\\nLanguage-Team: Galician (https://app.transifex.com/nextcloud/teams/64236/gl/)\\nContent-Type: text/plain; charset=UTF-8\\nLanguage: gl\\nPlural-Forms: nplurals=2; plural=(n != 1);\\n\"] }, '\"{segment}\" is a forbidden file or folder name.': { \"msgid\": '\"{segment}\" is a forbidden file or folder name.', \"msgstr\": [\"«{segment}» é un nome vedado para un ficheiro ou cartafol.\"] }, '\"{segment}\" is a forbidden file type.': { \"msgid\": '\"{segment}\" is a forbidden file type.', \"msgstr\": [\"«{segment}» é un tipo de ficheiro vedado.\"] }, '\"{segment}\" is not allowed inside a file or folder name.': { \"msgid\": '\"{segment}\" is not allowed inside a file or folder name.', \"msgstr\": [\"«{segment}» non está permitido dentro dun nome de ficheiro ou cartafol.\"] }, \"{count} file conflict\": { \"msgid\": \"{count} file conflict\", \"msgid_plural\": \"{count} files conflict\", \"msgstr\": [\"{count} conflito de ficheiros\", \"{count} conflitos de ficheiros\"] }, \"{count} file conflict in {dirname}\": { \"msgid\": \"{count} file conflict in {dirname}\", \"msgid_plural\": \"{count} file conflicts in {dirname}\", \"msgstr\": [\"{count} conflito de ficheiros en {dirname}\", \"{count} conflitos de ficheiros en {dirname}\"] }, \"{seconds} seconds left\": { \"msgid\": \"{seconds} seconds left\", \"msgid_plural\": \"{seconds} seconds left\", \"msgstr\": [\"falta {seconds} segundo\", \"faltan {seconds} segundos\"] }, \"{time} left\": { \"msgid\": \"{time} left\", \"comments\": { \"extracted\": \"TRANSLATORS time has the format 00:00:00\" }, \"msgstr\": [\"falta {time}\"] }, \"a few seconds left\": { \"msgid\": \"a few seconds left\", \"msgstr\": [\"faltan uns segundos\"] }, \"assembling\": { \"msgid\": \"assembling\", \"msgstr\": [\"ensamblando\"] }, \"Cancel\": { \"msgid\": \"Cancel\", \"msgstr\": [\"Cancelar\"] }, \"Cancel the entire operation\": { \"msgid\": \"Cancel the entire operation\", \"msgstr\": [\"Cancela toda a operación\"] }, \"Cancel uploads\": { \"msgid\": \"Cancel uploads\", \"msgstr\": [\"Cancelar envíos\"] }, \"Continue\": { \"msgid\": \"Continue\", \"msgstr\": [\"Continuar\"] }, \"Create new\": { \"msgid\": \"Create new\", \"msgstr\": [\"Crear un novo\"] }, \"estimating time left\": { \"msgid\": \"estimating time left\", \"msgstr\": [\"calculando canto tempo falta\"] }, \"Existing version\": { \"msgid\": \"Existing version\", \"msgstr\": [\"Versión existente\"] }, \"Failed to assemble the chunks together\": { \"msgid\": \"Failed to assemble the chunks together\", \"msgstr\": [\"Produciuse un fallo ao ensamblar os anacos\"] }, \"Failed to upload the file\": { \"msgid\": \"Failed to upload the file\", \"msgstr\": [\"Produciuse un fallo ao enviar o ficheiro\"] }, 'Filenames must not end with \"{segment}\".': { \"msgid\": 'Filenames must not end with \"{segment}\".', \"msgstr\": [\"Os nomes de ficheiros non deben rematar con «{segment}».\"] }, \"If you select both versions, the incoming file will have a number added to its name.\": { \"msgid\": \"If you select both versions, the incoming file will have a number added to its name.\", \"msgstr\": [\"Se selecciona ambas as versións, o ficheiro entrante terá un número engadido ao seu nome.\"] }, \"Invalid filename\": { \"msgid\": \"Invalid filename\", \"msgstr\": [\"O nome de ficheiro non é válido\"] }, \"Last modified date unknown\": { \"msgid\": \"Last modified date unknown\", \"msgstr\": [\"Data da última modificación descoñecida\"] }, \"New\": { \"msgid\": \"New\", \"msgstr\": [\"Nova\"] }, \"New filename\": { \"msgid\": \"New filename\", \"msgstr\": [\"Novo nome de ficheiro\"] }, \"New version\": { \"msgid\": \"New version\", \"msgstr\": [\"Nova versión\"] }, \"paused\": { \"msgid\": \"paused\", \"msgstr\": [\"detido\"] }, \"Preview image\": { \"msgid\": \"Preview image\", \"msgstr\": [\"Vista previa da imaxe\"] }, \"Rename\": { \"msgid\": \"Rename\", \"msgstr\": [\"Renomear\"] }, \"Select all checkboxes\": { \"msgid\": \"Select all checkboxes\", \"msgstr\": [\"Marcar todas as caixas de selección\"] }, \"Select all existing files\": { \"msgid\": \"Select all existing files\", \"msgstr\": [\"Seleccionar todos os ficheiros existentes\"] }, \"Select all new files\": { \"msgid\": \"Select all new files\", \"msgstr\": [\"Seleccionar todos os ficheiros novos\"] }, \"Skip\": { \"msgid\": \"Skip\", \"msgstr\": [\"Omitir\"] }, \"Skip {count} file\": { \"msgid\": \"Skip {count} file\", \"msgid_plural\": \"Skip {count} files\", \"msgstr\": [\"Omitir {count} ficheiro\", \"Omitir {count} ficheiros\"] }, \"Skip this file\": { \"msgid\": \"Skip this file\", \"msgstr\": [\"Omitir este ficheiro\"] }, \"Unknown size\": { \"msgid\": \"Unknown size\", \"msgstr\": [\"Tamaño descoñecido\"] }, \"Upload\": { \"msgid\": \"Upload\", \"msgstr\": [\"Enviar\"] }, \"Upload files\": { \"msgid\": \"Upload files\", \"msgstr\": [\"Enviar ficheiros\"] }, \"Upload folders\": { \"msgid\": \"Upload folders\", \"msgstr\": [\"Enviar cartafoles\"] }, \"Upload from device\": { \"msgid\": \"Upload from device\", \"msgstr\": [\"Enviar dende o dispositivo\"] }, \"Upload has been cancelled\": { \"msgid\": \"Upload has been cancelled\", \"msgstr\": [\"O envío foi cancelado\"] }, \"Upload has been skipped\": { \"msgid\": \"Upload has been skipped\", \"msgstr\": [\"O envío foi omitido\"] }, 'Upload of \"{folder}\" has been skipped': { \"msgid\": 'Upload of \"{folder}\" has been skipped', \"msgstr\": [\"O envío de «{folder}» foi omitido\"] }, \"Upload progress\": { \"msgid\": \"Upload progress\", \"msgstr\": [\"Progreso do envío\"] }, \"When an incoming folder is selected, any conflicting files within it will also be overwritten.\": { \"msgid\": \"When an incoming folder is selected, any conflicting files within it will also be overwritten.\", \"msgstr\": [\"Cando se selecciona un cartafol entrante, tamén se sobrescribirán os ficheiros en conflito dentro del.\"] }, \"When an incoming folder is selected, the content is written into the existing folder and a recursive conflict resolution is performed.\": { \"msgid\": \"When an incoming folder is selected, the content is written into the existing folder and a recursive conflict resolution is performed.\", \"msgstr\": [\"Cando se selecciona un cartafol entrante, o contido escríbese no cartafol existente e lévase a cabo unha resolución recursiva de conflitos.\"] }, \"Which files do you want to keep?\": { \"msgid\": \"Which files do you want to keep?\", \"msgstr\": [\"Que ficheiros quere conservar?\"] }, \"You can either rename the file, skip this file or cancel the whole operation.\": { \"msgid\": \"You can either rename the file, skip this file or cancel the whole operation.\", \"msgstr\": [\"Pode cambiar o nome do ficheiro, omitir este ficheiro ou cancelar toda a operación.\"] }, \"You need to select at least one version of each file to continue.\": { \"msgid\": \"You need to select at least one version of each file to continue.\", \"msgstr\": [\"Debe seleccionar polo menos unha versión de cada ficheiro para continuar.\"] } } } } }, { \"locale\": \"he\", \"json\": { \"charset\": \"utf-8\", \"headers\": { \"Last-Translator\": \"Transifex Bot <>, 2022\", \"Language-Team\": \"Hebrew (https://www.transifex.com/nextcloud/teams/64236/he/)\", \"Content-Type\": \"text/plain; charset=UTF-8\", \"Language\": \"he\", \"Plural-Forms\": \"nplurals=4; plural=(n == 1 && n % 1 == 0) ? 0 : (n == 2 && n % 1 == 0) ? 1: (n % 10 == 0 && n % 1 == 0 && n > 10) ? 2 : 3;\" }, \"translations\": { \"\": { \"\": { \"msgid\": \"\", \"comments\": { \"translator\": \"\\nTranslators:\\nTransifex Bot <>, 2022\\n\" }, \"msgstr\": [\"Last-Translator: Transifex Bot <>, 2022\\nLanguage-Team: Hebrew (https://www.transifex.com/nextcloud/teams/64236/he/)\\nContent-Type: text/plain; charset=UTF-8\\nLanguage: he\\nPlural-Forms: nplurals=4; plural=(n == 1 && n % 1 == 0) ? 0 : (n == 2 && n % 1 == 0) ? 1: (n % 10 == 0 && n % 1 == 0 && n > 10) ? 2 : 3;\\n\"] }, \"{estimate} seconds left\": { \"msgid\": \"{estimate} seconds left\", \"msgstr\": [\"\"] }, \"{hours} hours and {minutes} minutes left\": { \"msgid\": \"{hours} hours and {minutes} minutes left\", \"msgstr\": [\"\"] }, \"{minutes} minutes left\": { \"msgid\": \"{minutes} minutes left\", \"msgstr\": [\"\"] }, \"a few seconds left\": { \"msgid\": \"a few seconds left\", \"msgstr\": [\"\"] }, \"Add\": { \"msgid\": \"Add\", \"msgstr\": [\"\"] }, \"Cancel uploads\": { \"msgid\": \"Cancel uploads\", \"msgstr\": [\"\"] }, \"estimating time left\": { \"msgid\": \"estimating time left\", \"msgstr\": [\"\"] }, \"paused\": { \"msgid\": \"paused\", \"msgstr\": [\"\"] } } } } }, { \"locale\": \"hi_IN\", \"json\": { \"charset\": \"utf-8\", \"headers\": { \"Last-Translator\": \"Transifex Bot <>, 2022\", \"Language-Team\": \"Hindi (India) (https://www.transifex.com/nextcloud/teams/64236/hi_IN/)\", \"Content-Type\": \"text/plain; charset=UTF-8\", \"Language\": \"hi_IN\", \"Plural-Forms\": \"nplurals=2; plural=(n != 1);\" }, \"translations\": { \"\": { \"\": { \"msgid\": \"\", \"comments\": { \"translator\": \"\\nTranslators:\\nTransifex Bot <>, 2022\\n\" }, \"msgstr\": [\"Last-Translator: Transifex Bot <>, 2022\\nLanguage-Team: Hindi (India) (https://www.transifex.com/nextcloud/teams/64236/hi_IN/)\\nContent-Type: text/plain; charset=UTF-8\\nLanguage: hi_IN\\nPlural-Forms: nplurals=2; plural=(n != 1);\\n\"] }, \"{estimate} seconds left\": { \"msgid\": \"{estimate} seconds left\", \"msgstr\": [\"\"] }, \"{hours} hours and {minutes} minutes left\": { \"msgid\": \"{hours} hours and {minutes} minutes left\", \"msgstr\": [\"\"] }, \"{minutes} minutes left\": { \"msgid\": \"{minutes} minutes left\", \"msgstr\": [\"\"] }, \"a few seconds left\": { \"msgid\": \"a few seconds left\", \"msgstr\": [\"\"] }, \"Add\": { \"msgid\": \"Add\", \"msgstr\": [\"\"] }, \"Cancel uploads\": { \"msgid\": \"Cancel uploads\", \"msgstr\": [\"\"] }, \"estimating time left\": { \"msgid\": \"estimating time left\", \"msgstr\": [\"\"] }, \"paused\": { \"msgid\": \"paused\", \"msgstr\": [\"\"] } } } } }, { \"locale\": \"hr\", \"json\": { \"charset\": \"utf-8\", \"headers\": { \"Last-Translator\": \"Transifex Bot <>, 2022\", \"Language-Team\": \"Croatian (https://www.transifex.com/nextcloud/teams/64236/hr/)\", \"Content-Type\": \"text/plain; charset=UTF-8\", \"Language\": \"hr\", \"Plural-Forms\": \"nplurals=3; plural=n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2;\" }, \"translations\": { \"\": { \"\": { \"msgid\": \"\", \"comments\": { \"translator\": \"\\nTranslators:\\nTransifex Bot <>, 2022\\n\" }, \"msgstr\": [\"Last-Translator: Transifex Bot <>, 2022\\nLanguage-Team: Croatian (https://www.transifex.com/nextcloud/teams/64236/hr/)\\nContent-Type: text/plain; charset=UTF-8\\nLanguage: hr\\nPlural-Forms: nplurals=3; plural=n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2;\\n\"] }, \"{estimate} seconds left\": { \"msgid\": \"{estimate} seconds left\", \"msgstr\": [\"\"] }, \"{hours} hours and {minutes} minutes left\": { \"msgid\": \"{hours} hours and {minutes} minutes left\", \"msgstr\": [\"\"] }, \"{minutes} minutes left\": { \"msgid\": \"{minutes} minutes left\", \"msgstr\": [\"\"] }, \"a few seconds left\": { \"msgid\": \"a few seconds left\", \"msgstr\": [\"\"] }, \"Add\": { \"msgid\": \"Add\", \"msgstr\": [\"\"] }, \"Cancel uploads\": { \"msgid\": \"Cancel uploads\", \"msgstr\": [\"\"] }, \"estimating time left\": { \"msgid\": \"estimating time left\", \"msgstr\": [\"\"] }, \"paused\": { \"msgid\": \"paused\", \"msgstr\": [\"\"] } } } } }, { \"locale\": \"hsb\", \"json\": { \"charset\": \"utf-8\", \"headers\": { \"Last-Translator\": \"Transifex Bot <>, 2022\", \"Language-Team\": \"Upper Sorbian (https://www.transifex.com/nextcloud/teams/64236/hsb/)\", \"Content-Type\": \"text/plain; charset=UTF-8\", \"Language\": \"hsb\", \"Plural-Forms\": \"nplurals=4; plural=(n%100==1 ? 0 : n%100==2 ? 1 : n%100==3 || n%100==4 ? 2 : 3);\" }, \"translations\": { \"\": { \"\": { \"msgid\": \"\", \"comments\": { \"translator\": \"\\nTranslators:\\nTransifex Bot <>, 2022\\n\" }, \"msgstr\": [\"Last-Translator: Transifex Bot <>, 2022\\nLanguage-Team: Upper Sorbian (https://www.transifex.com/nextcloud/teams/64236/hsb/)\\nContent-Type: text/plain; charset=UTF-8\\nLanguage: hsb\\nPlural-Forms: nplurals=4; plural=(n%100==1 ? 0 : n%100==2 ? 1 : n%100==3 || n%100==4 ? 2 : 3);\\n\"] }, \"{estimate} seconds left\": { \"msgid\": \"{estimate} seconds left\", \"msgstr\": [\"\"] }, \"{hours} hours and {minutes} minutes left\": { \"msgid\": \"{hours} hours and {minutes} minutes left\", \"msgstr\": [\"\"] }, \"{minutes} minutes left\": { \"msgid\": \"{minutes} minutes left\", \"msgstr\": [\"\"] }, \"a few seconds left\": { \"msgid\": \"a few seconds left\", \"msgstr\": [\"\"] }, \"Add\": { \"msgid\": \"Add\", \"msgstr\": [\"\"] }, \"Cancel uploads\": { \"msgid\": \"Cancel uploads\", \"msgstr\": [\"\"] }, \"estimating time left\": { \"msgid\": \"estimating time left\", \"msgstr\": [\"\"] }, \"paused\": { \"msgid\": \"paused\", \"msgstr\": [\"\"] } } } } }, { \"locale\": \"hu\", \"json\": { \"charset\": \"utf-8\", \"headers\": { \"Last-Translator\": \"Gyuris Gellért , 2024\", \"Language-Team\": \"Hungarian (Hungary) (https://app.transifex.com/nextcloud/teams/64236/hu_HU/)\", \"Content-Type\": \"text/plain; charset=UTF-8\", \"Language\": \"hu_HU\", \"Plural-Forms\": \"nplurals=2; plural=(n != 1);\" }, \"translations\": { \"\": { \"\": { \"msgid\": \"\", \"comments\": { \"translator\": \"\\nTranslators:\\nJoas Schilling, 2024\\nGyuris Gellért , 2024\\n\" }, \"msgstr\": [\"Last-Translator: Gyuris Gellért , 2024\\nLanguage-Team: Hungarian (Hungary) (https://app.transifex.com/nextcloud/teams/64236/hu_HU/)\\nContent-Type: text/plain; charset=UTF-8\\nLanguage: hu_HU\\nPlural-Forms: nplurals=2; plural=(n != 1);\\n\"] }, '\"{segment}\" is a forbidden file or folder name.': { \"msgid\": '\"{segment}\" is a forbidden file or folder name.', \"msgstr\": ['Tiltott fájl- vagy mappanév: „{segment}\".'] }, '\"{segment}\" is a forbidden file type.': { \"msgid\": '\"{segment}\" is a forbidden file type.', \"msgstr\": ['Tiltott fájltípus: „{segment}\".'] }, '\"{segment}\" is not allowed inside a file or folder name.': { \"msgid\": '\"{segment}\" is not allowed inside a file or folder name.', \"msgstr\": ['Nem megengedett egy fájl- vagy mappanévben: „{segment}\".'] }, \"{count} file conflict\": { \"msgid\": \"{count} file conflict\", \"msgid_plural\": \"{count} files conflict\", \"msgstr\": [\"{count}fájlt érintő konfliktus\", \"{count} fájlt érintő konfliktus\"] }, \"{count} file conflict in {dirname}\": { \"msgid\": \"{count} file conflict in {dirname}\", \"msgid_plural\": \"{count} file conflicts in {dirname}\", \"msgstr\": [\"{count} fájlt érintő konfliktus a mappában: {dirname}\", \"{count}fájlt érintő konfliktus a mappában: {dirname}\"] }, \"{seconds} seconds left\": { \"msgid\": \"{seconds} seconds left\", \"msgstr\": [\"{} másodperc van hátra\"] }, \"{time} left\": { \"msgid\": \"{time} left\", \"comments\": { \"extracted\": \"TRANSLATORS time has the format 00:00:00\" }, \"msgstr\": [\"{time} van hátra\"] }, \"a few seconds left\": { \"msgid\": \"a few seconds left\", \"msgstr\": [\"pár másodperc van hátra\"] }, \"Cancel\": { \"msgid\": \"Cancel\", \"msgstr\": [\"Mégse\"] }, \"Cancel the entire operation\": { \"msgid\": \"Cancel the entire operation\", \"msgstr\": [\"Teljes művelet megszakítása\"] }, \"Cancel uploads\": { \"msgid\": \"Cancel uploads\", \"msgstr\": [\"Feltöltések megszakítása\"] }, \"Continue\": { \"msgid\": \"Continue\", \"msgstr\": [\"Tovább\"] }, \"Create new\": { \"msgid\": \"Create new\", \"msgstr\": [\"Új létrehozása\"] }, \"estimating time left\": { \"msgid\": \"estimating time left\", \"msgstr\": [\"hátralévő idő becslése\"] }, \"Existing version\": { \"msgid\": \"Existing version\", \"msgstr\": [\"Jelenlegi változat\"] }, 'Filenames must not end with \"{segment}\".': { \"msgid\": 'Filenames must not end with \"{segment}\".', \"msgstr\": [\"Fájlnevek nem végződhetnek erre: „{segment}”.\"] }, \"If you select both versions, the incoming file will have a number added to its name.\": { \"msgid\": \"If you select both versions, the incoming file will have a number added to its name.\", \"msgstr\": [\"Ha mindkét verziót kiválasztja, a bejövő fájl neve egy számmal egészül ki.\"] }, \"Invalid filename\": { \"msgid\": \"Invalid filename\", \"msgstr\": [\"Érvénytelen fájlnév\"] }, \"Last modified date unknown\": { \"msgid\": \"Last modified date unknown\", \"msgstr\": [\"Utolsó módosítás dátuma ismeretlen\"] }, \"New\": { \"msgid\": \"New\", \"msgstr\": [\"Új\"] }, \"New filename\": { \"msgid\": \"New filename\", \"msgstr\": [\"Új fájlnév\"] }, \"New version\": { \"msgid\": \"New version\", \"msgstr\": [\"Új verzió\"] }, \"paused\": { \"msgid\": \"paused\", \"msgstr\": [\"szüneteltetve\"] }, \"Preview image\": { \"msgid\": \"Preview image\", \"msgstr\": [\"Kép előnézete\"] }, \"Rename\": { \"msgid\": \"Rename\", \"msgstr\": [\"Átnevezés\"] }, \"Select all checkboxes\": { \"msgid\": \"Select all checkboxes\", \"msgstr\": [\"Minden jelölőnégyzet kijelölése\"] }, \"Select all existing files\": { \"msgid\": \"Select all existing files\", \"msgstr\": [\"Minden jelenlegi fájl kijelölése\"] }, \"Select all new files\": { \"msgid\": \"Select all new files\", \"msgstr\": [\"Minden új fájl kijelölése\"] }, \"Skip\": { \"msgid\": \"Skip\", \"msgstr\": [\"Kihagyás\"] }, \"Skip this file\": { \"msgid\": \"Skip this file\", \"msgid_plural\": \"Skip {count} files\", \"msgstr\": [\"Ezen fájl kihagyása\", \"{count}fájl kihagyása\"] }, \"Unknown size\": { \"msgid\": \"Unknown size\", \"msgstr\": [\"Ismeretlen méret\"] }, \"Upload\": { \"msgid\": \"Upload\", \"msgstr\": [\"Feltöltés\"] }, \"Upload files\": { \"msgid\": \"Upload files\", \"msgstr\": [\"Fájlok feltöltése\"] }, \"Upload folders\": { \"msgid\": \"Upload folders\", \"msgstr\": [\"Mappák feltöltése\"] }, \"Upload from device\": { \"msgid\": \"Upload from device\", \"msgstr\": [\"Feltöltés eszközről\"] }, \"Upload has been cancelled\": { \"msgid\": \"Upload has been cancelled\", \"msgstr\": [\"Feltöltés meg lett szakítva\"] }, \"Upload has been skipped\": { \"msgid\": \"Upload has been skipped\", \"msgstr\": [\"Feltöltés át lett ugorva\"] }, 'Upload of \"{folder}\" has been skipped': { \"msgid\": 'Upload of \"{folder}\" has been skipped', \"msgstr\": [\"„{folder}” feltöltése át lett ugorva\"] }, \"Upload progress\": { \"msgid\": \"Upload progress\", \"msgstr\": [\"Feltöltési folyamat\"] }, \"When an incoming folder is selected, any conflicting files within it will also be overwritten.\": { \"msgid\": \"When an incoming folder is selected, any conflicting files within it will also be overwritten.\", \"msgstr\": [\"Ha egy bejövő mappa van kiválasztva, a mappában lévő ütköző fájlok is felülírásra kerülnek.\"] }, \"When an incoming folder is selected, the content is written into the existing folder and a recursive conflict resolution is performed.\": { \"msgid\": \"When an incoming folder is selected, the content is written into the existing folder and a recursive conflict resolution is performed.\", \"msgstr\": [\"Ha egy bejövő mappa van kiválasztva, a tartalom a meglévő mappába íródik és rekurzív konfliktusfeloldás történik.\"] }, \"Which files do you want to keep?\": { \"msgid\": \"Which files do you want to keep?\", \"msgstr\": [\"Mely fájlokat kívánja megtartani?\"] }, \"You can either rename the file, skip this file or cancel the whole operation.\": { \"msgid\": \"You can either rename the file, skip this file or cancel the whole operation.\", \"msgstr\": [\"Átnevezheti a fájlt, kihagyhatja ezt a fájlt, vagy törölheti az egész műveletet.\"] }, \"You need to select at least one version of each file to continue.\": { \"msgid\": \"You need to select at least one version of each file to continue.\", \"msgstr\": [\"A folytatáshoz minden fájlból legalább egy verziót ki kell választani.\"] } } } } }, { \"locale\": \"hy\", \"json\": { \"charset\": \"utf-8\", \"headers\": { \"Last-Translator\": \"Transifex Bot <>, 2022\", \"Language-Team\": \"Armenian (https://www.transifex.com/nextcloud/teams/64236/hy/)\", \"Content-Type\": \"text/plain; charset=UTF-8\", \"Language\": \"hy\", \"Plural-Forms\": \"nplurals=2; plural=(n != 1);\" }, \"translations\": { \"\": { \"\": { \"msgid\": \"\", \"comments\": { \"translator\": \"\\nTranslators:\\nTransifex Bot <>, 2022\\n\" }, \"msgstr\": [\"Last-Translator: Transifex Bot <>, 2022\\nLanguage-Team: Armenian (https://www.transifex.com/nextcloud/teams/64236/hy/)\\nContent-Type: text/plain; charset=UTF-8\\nLanguage: hy\\nPlural-Forms: nplurals=2; plural=(n != 1);\\n\"] }, \"{estimate} seconds left\": { \"msgid\": \"{estimate} seconds left\", \"msgstr\": [\"\"] }, \"{hours} hours and {minutes} minutes left\": { \"msgid\": \"{hours} hours and {minutes} minutes left\", \"msgstr\": [\"\"] }, \"{minutes} minutes left\": { \"msgid\": \"{minutes} minutes left\", \"msgstr\": [\"\"] }, \"a few seconds left\": { \"msgid\": \"a few seconds left\", \"msgstr\": [\"\"] }, \"Add\": { \"msgid\": \"Add\", \"msgstr\": [\"\"] }, \"Cancel uploads\": { \"msgid\": \"Cancel uploads\", \"msgstr\": [\"\"] }, \"estimating time left\": { \"msgid\": \"estimating time left\", \"msgstr\": [\"\"] }, \"paused\": { \"msgid\": \"paused\", \"msgstr\": [\"\"] } } } } }, { \"locale\": \"ia\", \"json\": { \"charset\": \"utf-8\", \"headers\": { \"Last-Translator\": \"Transifex Bot <>, 2022\", \"Language-Team\": \"Interlingua (https://www.transifex.com/nextcloud/teams/64236/ia/)\", \"Content-Type\": \"text/plain; charset=UTF-8\", \"Language\": \"ia\", \"Plural-Forms\": \"nplurals=2; plural=(n != 1);\" }, \"translations\": { \"\": { \"\": { \"msgid\": \"\", \"comments\": { \"translator\": \"\\nTranslators:\\nTransifex Bot <>, 2022\\n\" }, \"msgstr\": [\"Last-Translator: Transifex Bot <>, 2022\\nLanguage-Team: Interlingua (https://www.transifex.com/nextcloud/teams/64236/ia/)\\nContent-Type: text/plain; charset=UTF-8\\nLanguage: ia\\nPlural-Forms: nplurals=2; plural=(n != 1);\\n\"] }, \"{estimate} seconds left\": { \"msgid\": \"{estimate} seconds left\", \"msgstr\": [\"\"] }, \"{hours} hours and {minutes} minutes left\": { \"msgid\": \"{hours} hours and {minutes} minutes left\", \"msgstr\": [\"\"] }, \"{minutes} minutes left\": { \"msgid\": \"{minutes} minutes left\", \"msgstr\": [\"\"] }, \"a few seconds left\": { \"msgid\": \"a few seconds left\", \"msgstr\": [\"\"] }, \"Add\": { \"msgid\": \"Add\", \"msgstr\": [\"\"] }, \"Cancel uploads\": { \"msgid\": \"Cancel uploads\", \"msgstr\": [\"\"] }, \"estimating time left\": { \"msgid\": \"estimating time left\", \"msgstr\": [\"\"] }, \"paused\": { \"msgid\": \"paused\", \"msgstr\": [\"\"] } } } } }, { \"locale\": \"id\", \"json\": { \"charset\": \"utf-8\", \"headers\": { \"Last-Translator\": \"Linerly , 2023\", \"Language-Team\": \"Indonesian (https://app.transifex.com/nextcloud/teams/64236/id/)\", \"Content-Type\": \"text/plain; charset=UTF-8\", \"Language\": \"id\", \"Plural-Forms\": \"nplurals=1; plural=0;\" }, \"translations\": { \"\": { \"\": { \"msgid\": \"\", \"comments\": { \"translator\": \"\\nTranslators:\\nJohn Molakvoæ , 2023\\nEmpty Slot Filler, 2023\\nLinerly , 2023\\n\" }, \"msgstr\": [\"Last-Translator: Linerly , 2023\\nLanguage-Team: Indonesian (https://app.transifex.com/nextcloud/teams/64236/id/)\\nContent-Type: text/plain; charset=UTF-8\\nLanguage: id\\nPlural-Forms: nplurals=1; plural=0;\\n\"] }, \"{count} file conflict\": { \"msgid\": \"{count} file conflict\", \"msgid_plural\": \"{count} files conflict\", \"msgstr\": [\"{count} berkas berkonflik\"] }, \"{count} file conflict in {dirname}\": { \"msgid\": \"{count} file conflict in {dirname}\", \"msgid_plural\": \"{count} file conflicts in {dirname}\", \"msgstr\": [\"{count} berkas berkonflik dalam {dirname}\"] }, \"{seconds} seconds left\": { \"msgid\": \"{seconds} seconds left\", \"msgstr\": [\"{seconds} detik tersisa\"] }, \"{time} left\": { \"msgid\": \"{time} left\", \"comments\": { \"extracted\": \"TRANSLATORS time has the format 00:00:00\" }, \"msgstr\": [\"{time} tersisa\"] }, \"a few seconds left\": { \"msgid\": \"a few seconds left\", \"msgstr\": [\"tinggal sebentar lagi\"] }, \"Cancel uploads\": { \"msgid\": \"Cancel uploads\", \"msgstr\": [\"Batalkan unggahan\"] }, \"Continue\": { \"msgid\": \"Continue\", \"msgstr\": [\"Lanjutkan\"] }, \"estimating time left\": { \"msgid\": \"estimating time left\", \"msgstr\": [\"memperkirakan waktu yang tersisa\"] }, \"Existing version\": { \"msgid\": \"Existing version\", \"msgstr\": [\"Versi yang ada\"] }, \"If you select both versions, the copied file will have a number added to its name.\": { \"msgid\": \"If you select both versions, the copied file will have a number added to its name.\", \"msgstr\": [\"Jika Anda memilih kedua versi, nama berkas yang disalin akan ditambahi angka.\"] }, \"Last modified date unknown\": { \"msgid\": \"Last modified date unknown\", \"msgstr\": [\"Tanggal perubahan terakhir tidak diketahui\"] }, \"New\": { \"msgid\": \"New\", \"msgstr\": [\"Baru\"] }, \"New version\": { \"msgid\": \"New version\", \"msgstr\": [\"Versi baru\"] }, \"paused\": { \"msgid\": \"paused\", \"msgstr\": [\"dijeda\"] }, \"Preview image\": { \"msgid\": \"Preview image\", \"msgstr\": [\"Gambar pratinjau\"] }, \"Select all checkboxes\": { \"msgid\": \"Select all checkboxes\", \"msgstr\": [\"Pilih semua kotak centang\"] }, \"Select all existing files\": { \"msgid\": \"Select all existing files\", \"msgstr\": [\"Pilih semua berkas yang ada\"] }, \"Select all new files\": { \"msgid\": \"Select all new files\", \"msgstr\": [\"Pilih semua berkas baru\"] }, \"Skip this file\": { \"msgid\": \"Skip this file\", \"msgid_plural\": \"Skip {count} files\", \"msgstr\": [\"Lewati {count} berkas\"] }, \"Unknown size\": { \"msgid\": \"Unknown size\", \"msgstr\": [\"Ukuran tidak diketahui\"] }, \"Upload cancelled\": { \"msgid\": \"Upload cancelled\", \"msgstr\": [\"Unggahan dibatalkan\"] }, \"Upload files\": { \"msgid\": \"Upload files\", \"msgstr\": [\"Unggah berkas\"] }, \"Which files do you want to keep?\": { \"msgid\": \"Which files do you want to keep?\", \"msgstr\": [\"Berkas mana yang Anda ingin tetap simpan?\"] }, \"You need to select at least one version of each file to continue.\": { \"msgid\": \"You need to select at least one version of each file to continue.\", \"msgstr\": [\"Anda harus memilih setidaknya satu versi dari masing-masing berkas untuk melanjutkan.\"] } } } } }, { \"locale\": \"ig\", \"json\": { \"charset\": \"utf-8\", \"headers\": { \"Last-Translator\": \"Transifex Bot <>, 2022\", \"Language-Team\": \"Igbo (https://www.transifex.com/nextcloud/teams/64236/ig/)\", \"Content-Type\": \"text/plain; charset=UTF-8\", \"Language\": \"ig\", \"Plural-Forms\": \"nplurals=1; plural=0;\" }, \"translations\": { \"\": { \"\": { \"msgid\": \"\", \"comments\": { \"translator\": \"\\nTranslators:\\nTransifex Bot <>, 2022\\n\" }, \"msgstr\": [\"Last-Translator: Transifex Bot <>, 2022\\nLanguage-Team: Igbo (https://www.transifex.com/nextcloud/teams/64236/ig/)\\nContent-Type: text/plain; charset=UTF-8\\nLanguage: ig\\nPlural-Forms: nplurals=1; plural=0;\\n\"] }, \"{estimate} seconds left\": { \"msgid\": \"{estimate} seconds left\", \"msgstr\": [\"\"] }, \"{hours} hours and {minutes} minutes left\": { \"msgid\": \"{hours} hours and {minutes} minutes left\", \"msgstr\": [\"\"] }, \"{minutes} minutes left\": { \"msgid\": \"{minutes} minutes left\", \"msgstr\": [\"\"] }, \"a few seconds left\": { \"msgid\": \"a few seconds left\", \"msgstr\": [\"\"] }, \"Add\": { \"msgid\": \"Add\", \"msgstr\": [\"\"] }, \"Cancel uploads\": { \"msgid\": \"Cancel uploads\", \"msgstr\": [\"\"] }, \"estimating time left\": { \"msgid\": \"estimating time left\", \"msgstr\": [\"\"] }, \"paused\": { \"msgid\": \"paused\", \"msgstr\": [\"\"] } } } } }, { \"locale\": \"is\", \"json\": { \"charset\": \"utf-8\", \"headers\": { \"Last-Translator\": \"Sveinn í Felli , 2025\", \"Language-Team\": \"Icelandic (https://app.transifex.com/nextcloud/teams/64236/is/)\", \"Content-Type\": \"text/plain; charset=UTF-8\", \"Language\": \"is\", \"Plural-Forms\": \"nplurals=2; plural=(n % 10 != 1 || n % 100 == 11);\" }, \"translations\": { \"\": { \"\": { \"msgid\": \"\", \"comments\": { \"translator\": \"\\nTranslators:\\nJoas Schilling, 2024\\nSveinn í Felli , 2025\\n\" }, \"msgstr\": [\"Last-Translator: Sveinn í Felli , 2025\\nLanguage-Team: Icelandic (https://app.transifex.com/nextcloud/teams/64236/is/)\\nContent-Type: text/plain; charset=UTF-8\\nLanguage: is\\nPlural-Forms: nplurals=2; plural=(n % 10 != 1 || n % 100 == 11);\\n\"] }, '\"{segment}\" is a forbidden file or folder name.': { \"msgid\": '\"{segment}\" is a forbidden file or folder name.', \"msgstr\": ['\"{segment}\" er bannað sem heiti á skrá eða möppu.'] }, '\"{segment}\" is a forbidden file type.': { \"msgid\": '\"{segment}\" is a forbidden file type.', \"msgstr\": ['\"{segment}\" er bönnuð skráartegund.'] }, '\"{segment}\" is not allowed inside a file or folder name.': { \"msgid\": '\"{segment}\" is not allowed inside a file or folder name.', \"msgstr\": ['\"{segment}\" er ekki leyfilegt innan í heiti á skrá eða möppu.'] }, \"{count} file conflict\": { \"msgid\": \"{count} file conflict\", \"msgid_plural\": \"{count} files conflict\", \"msgstr\": [\"{count} árekstur skráa\", \"{count} árekstrar skráa\"] }, \"{count} file conflict in {dirname}\": { \"msgid\": \"{count} file conflict in {dirname}\", \"msgid_plural\": \"{count} file conflicts in {dirname}\", \"msgstr\": [\"{count} árekstur skráa í {dirname}\", \"{count} árekstrar skráa í {dirname}\"] }, \"{seconds} seconds left\": { \"msgid\": \"{seconds} seconds left\", \"msgid_plural\": \"{seconds} seconds left\", \"msgstr\": [\"{seconds} sekúnda eftir\", \"{seconds} sekúndur eftir\"] }, \"{time} left\": { \"msgid\": \"{time} left\", \"comments\": { \"extracted\": \"TRANSLATORS time has the format 00:00:00\" }, \"msgstr\": [\"{time} eftir\"] }, \"a few seconds left\": { \"msgid\": \"a few seconds left\", \"msgstr\": [\"nokkrar sekúndur eftir\"] }, \"assembling\": { \"msgid\": \"assembling\", \"msgstr\": [\"set saman\"] }, \"Cancel\": { \"msgid\": \"Cancel\", \"msgstr\": [\"Hætta við\"] }, \"Cancel the entire operation\": { \"msgid\": \"Cancel the entire operation\", \"msgstr\": [\"Hætta við alla aðgerðina\"] }, \"Cancel uploads\": { \"msgid\": \"Cancel uploads\", \"msgstr\": [\"Hætta við innsendingar\"] }, \"Continue\": { \"msgid\": \"Continue\", \"msgstr\": [\"Halda áfram\"] }, \"Create new\": { \"msgid\": \"Create new\", \"msgstr\": [\"Búa til nýtt\"] }, \"estimating time left\": { \"msgid\": \"estimating time left\", \"msgstr\": [\"áætla tíma sem eftir er\"] }, \"Existing version\": { \"msgid\": \"Existing version\", \"msgstr\": [\"Fyrirliggjandi útgáfa\"] }, \"Failed assembling the chunks together\": { \"msgid\": \"Failed assembling the chunks together\", \"msgstr\": [\"Mistókst að setja saman bútana\"] }, \"Failed uploading the file\": { \"msgid\": \"Failed uploading the file\", \"msgstr\": [\"Mistókst að senda inn skrána\"] }, 'Filenames must not end with \"{segment}\".': { \"msgid\": 'Filenames must not end with \"{segment}\".', \"msgstr\": ['Skráaheiti mega ekki enda á \"{segment}\".'] }, \"If you select both versions, the incoming file will have a number added to its name.\": { \"msgid\": \"If you select both versions, the incoming file will have a number added to its name.\", \"msgstr\": [\"Ef þú velur báðar útgáfur, þá mun verða bætt tölustaf aftan við heiti innkomandi skrárinnar.\"] }, \"Invalid filename\": { \"msgid\": \"Invalid filename\", \"msgstr\": [\"Ógilt skráarheiti\"] }, \"Last modified date unknown\": { \"msgid\": \"Last modified date unknown\", \"msgstr\": [\"Síðasta breytingadagsetning er óþekkt\"] }, \"New\": { \"msgid\": \"New\", \"msgstr\": [\"Nýtt\"] }, \"New filename\": { \"msgid\": \"New filename\", \"msgstr\": [\"Nýtt skráarheiti\"] }, \"New version\": { \"msgid\": \"New version\", \"msgstr\": [\"Ný útgáfa\"] }, \"paused\": { \"msgid\": \"paused\", \"msgstr\": [\"í bið\"] }, \"Preview image\": { \"msgid\": \"Preview image\", \"msgstr\": [\"Forskoðun myndar\"] }, \"Rename\": { \"msgid\": \"Rename\", \"msgstr\": [\"Endurnefna\"] }, \"Select all checkboxes\": { \"msgid\": \"Select all checkboxes\", \"msgstr\": [\"Velja gátreiti\"] }, \"Select all existing files\": { \"msgid\": \"Select all existing files\", \"msgstr\": [\"Velja allar fyrirliggjandi skrár\"] }, \"Select all new files\": { \"msgid\": \"Select all new files\", \"msgstr\": [\"Velja allar nýjar skrár\"] }, \"Skip\": { \"msgid\": \"Skip\", \"msgstr\": [\"Sleppa\"] }, \"Skip this file\": { \"msgid\": \"Skip this file\", \"msgid_plural\": \"Skip {count} files\", \"msgstr\": [\"Sleppa þessari skrá\", \"Sleppa {count} skrám\"] }, \"Unknown size\": { \"msgid\": \"Unknown size\", \"msgstr\": [\"Óþekkt stærð\"] }, \"Upload\": { \"msgid\": \"Upload\", \"msgstr\": [\"Senda inn\"] }, \"Upload files\": { \"msgid\": \"Upload files\", \"msgstr\": [\"Senda inn skrár\"] }, \"Upload folders\": { \"msgid\": \"Upload folders\", \"msgstr\": [\"Senda inn möppur\"] }, \"Upload from device\": { \"msgid\": \"Upload from device\", \"msgstr\": [\"Senda inn frá tæki\"] }, \"Upload has been cancelled\": { \"msgid\": \"Upload has been cancelled\", \"msgstr\": [\"Hætt hefur verið við innsendingu\"] }, \"Upload has been skipped\": { \"msgid\": \"Upload has been skipped\", \"msgstr\": [\"Innsendingu hefur verið sleppt\"] }, 'Upload of \"{folder}\" has been skipped': { \"msgid\": 'Upload of \"{folder}\" has been skipped', \"msgstr\": ['Innsendingu á \"{folder}\" hefur verið sleppt'] }, \"Upload progress\": { \"msgid\": \"Upload progress\", \"msgstr\": [\"Framvinda innsendingar\"] }, \"When an incoming folder is selected, any conflicting files within it will also be overwritten.\": { \"msgid\": \"When an incoming folder is selected, any conflicting files within it will also be overwritten.\", \"msgstr\": [\"Þegar valin er mappa fyrir skrár sem berast, verður einnig skrifað yfir allar skrár í henni sem valda árekstrum.\"] }, \"When an incoming folder is selected, the content is written into the existing folder and a recursive conflict resolution is performed.\": { \"msgid\": \"When an incoming folder is selected, the content is written into the existing folder and a recursive conflict resolution is performed.\", \"msgstr\": [\"Þegar valin er mappa fyrir skrár sem berast, verður efnið skrifað inn í fyrirliggjandi möppu og farið í að leysa úr árekstrum.\"] }, \"Which files do you want to keep?\": { \"msgid\": \"Which files do you want to keep?\", \"msgstr\": [\"Hvaða skrám vilt þú vilt halda eftir?\"] }, \"You can either rename the file, skip this file or cancel the whole operation.\": { \"msgid\": \"You can either rename the file, skip this file or cancel the whole operation.\", \"msgstr\": [\"Þú getur annaðhvort endurnefnt skrána, sleppt þessari skrá eða hætt við alla þessa aðgerð.\"] }, \"You need to select at least one version of each file to continue.\": { \"msgid\": \"You need to select at least one version of each file to continue.\", \"msgstr\": [\"Þú verður að velja að minnsta kosti eina útgáfu af hverri skrá til að halda áfram.\"] } } } } }, { \"locale\": \"it\", \"json\": { \"charset\": \"utf-8\", \"headers\": { \"Last-Translator\": \"Roberto Resoli, 2025\", \"Language-Team\": \"Italian (https://app.transifex.com/nextcloud/teams/64236/it/)\", \"Content-Type\": \"text/plain; charset=UTF-8\", \"Language\": \"it\", \"Plural-Forms\": \"nplurals=3; plural=n == 1 ? 0 : n != 0 && n % 1000000 == 0 ? 1 : 2;\" }, \"translations\": { \"\": { \"\": { \"msgid\": \"\", \"comments\": { \"translator\": \"\\nTranslators:\\nJoas Schilling, 2024\\nFrancesco Sercia, 2024\\nalbanobattistella , 2024\\nLorenzo Taiocchi, 2025\\nesseti kappa, 2025\\nRoberto Resoli, 2025\\n\" }, \"msgstr\": [\"Last-Translator: Roberto Resoli, 2025\\nLanguage-Team: Italian (https://app.transifex.com/nextcloud/teams/64236/it/)\\nContent-Type: text/plain; charset=UTF-8\\nLanguage: it\\nPlural-Forms: nplurals=3; plural=n == 1 ? 0 : n != 0 && n % 1000000 == 0 ? 1 : 2;\\n\"] }, '\"{segment}\" is a forbidden file or folder name.': { \"msgid\": '\"{segment}\" is a forbidden file or folder name.', \"msgstr\": ['\"{segment}\" è un nome di file o cartella proibito.'] }, '\"{segment}\" is a forbidden file type.': { \"msgid\": '\"{segment}\" is a forbidden file type.', \"msgstr\": ['\"{segment}\"è un tipo di file proibito.'] }, '\"{segment}\" is not allowed inside a file or folder name.': { \"msgid\": '\"{segment}\" is not allowed inside a file or folder name.', \"msgstr\": [`\"{segment}\" non è consentito all'interno di un nome di file o cartella.`] }, \"{count} file conflict\": { \"msgid\": \"{count} file conflict\", \"msgid_plural\": \"{count} files conflict\", \"msgstr\": [\"{count} file in conflitto\", \"{count} file in conflitto\", \"{count} file in conflitto\"] }, \"{count} file conflict in {dirname}\": { \"msgid\": \"{count} file conflict in {dirname}\", \"msgid_plural\": \"{count} file conflicts in {dirname}\", \"msgstr\": [\"{count} file in conflitto in {dirname}\", \"{count} file in conflitto in {dirname}\", \"{count} file in conflitto in {dirname}\"] }, \"{seconds} seconds left\": { \"msgid\": \"{seconds} seconds left\", \"msgid_plural\": \"{seconds} seconds left\", \"msgstr\": [\"{seconds} secondo rimanente \", \"{seconds} secondi rimanenti \", \"{seconds} secondi rimanenti \"] }, \"{time} left\": { \"msgid\": \"{time} left\", \"comments\": { \"extracted\": \"TRANSLATORS time has the format 00:00:00\" }, \"msgstr\": [\"{time} rimanente\"] }, \"a few seconds left\": { \"msgid\": \"a few seconds left\", \"msgstr\": [\"alcuni secondi rimanenti\"] }, \"assembling\": { \"msgid\": \"assembling\", \"msgstr\": [\"assemblaggio\"] }, \"Cancel\": { \"msgid\": \"Cancel\", \"msgstr\": [\"Annulla\"] }, \"Cancel the entire operation\": { \"msgid\": \"Cancel the entire operation\", \"msgstr\": [\"Annulla l'intera operazione\"] }, \"Cancel uploads\": { \"msgid\": \"Cancel uploads\", \"msgstr\": [\"Annulla i caricamenti\"] }, \"Continue\": { \"msgid\": \"Continue\", \"msgstr\": [\"Continua\"] }, \"Create new\": { \"msgid\": \"Create new\", \"msgstr\": [\"Crea nuovo\"] }, \"estimating time left\": { \"msgid\": \"estimating time left\", \"msgstr\": [\"calcolo il tempo rimanente\"] }, \"Existing version\": { \"msgid\": \"Existing version\", \"msgstr\": [\"Versione esistente\"] }, \"Failed to assemble the chunks together\": { \"msgid\": \"Failed to assemble the chunks together\", \"msgstr\": [\"Impossibile unire i pezzi\"] }, \"Failed to upload the file\": { \"msgid\": \"Failed to upload the file\", \"msgstr\": [\"Impossibile caricare il file\"] }, 'Filenames must not end with \"{segment}\".': { \"msgid\": 'Filenames must not end with \"{segment}\".', \"msgstr\": ['I nomi dei file non devono terminare con \"{segment}\".'] }, \"If you select both versions, the incoming file will have a number added to its name.\": { \"msgid\": \"If you select both versions, the incoming file will have a number added to its name.\", \"msgstr\": [\"Se selezioni entrambe le versioni, nel nome del file copiato verrà aggiunto un numero \"] }, \"Invalid filename\": { \"msgid\": \"Invalid filename\", \"msgstr\": [\"Nome file non valido\"] }, \"Last modified date unknown\": { \"msgid\": \"Last modified date unknown\", \"msgstr\": [\"Ultima modifica sconosciuta\"] }, \"New\": { \"msgid\": \"New\", \"msgstr\": [\"Nuovo\"] }, \"New filename\": { \"msgid\": \"New filename\", \"msgstr\": [\"Nuovo nome file\"] }, \"New version\": { \"msgid\": \"New version\", \"msgstr\": [\"Nuova versione\"] }, \"paused\": { \"msgid\": \"paused\", \"msgstr\": [\"pausa\"] }, \"Preview image\": { \"msgid\": \"Preview image\", \"msgstr\": [\"Anteprima immagine\"] }, \"Rename\": { \"msgid\": \"Rename\", \"msgstr\": [\"Rinomina\"] }, \"Select all checkboxes\": { \"msgid\": \"Select all checkboxes\", \"msgstr\": [\"Seleziona tutte le caselle\"] }, \"Select all existing files\": { \"msgid\": \"Select all existing files\", \"msgstr\": [\"Seleziona tutti i file esistenti\"] }, \"Select all new files\": { \"msgid\": \"Select all new files\", \"msgstr\": [\"Seleziona tutti i nuovi file\"] }, \"Skip\": { \"msgid\": \"Skip\", \"msgstr\": [\"Salta\"] }, \"Skip {count} file\": { \"msgid\": \"Skip {count} file\", \"msgid_plural\": \"Skip {count} files\", \"msgstr\": [\"Sata {count} file\", \"Salta {count} file\", \"Salta {count} file\"] }, \"Skip this file\": { \"msgid\": \"Skip this file\", \"msgstr\": [\"Salta questo file\"] }, \"Unknown size\": { \"msgid\": \"Unknown size\", \"msgstr\": [\"Dimensione sconosciuta\"] }, \"Upload\": { \"msgid\": \"Upload\", \"msgstr\": [\"Caricamento\"] }, \"Upload files\": { \"msgid\": \"Upload files\", \"msgstr\": [\"Carica i file\"] }, \"Upload folders\": { \"msgid\": \"Upload folders\", \"msgstr\": [\"Carica cartelle\"] }, \"Upload from device\": { \"msgid\": \"Upload from device\", \"msgstr\": [\"Carica dal dispositivo\"] }, \"Upload has been cancelled\": { \"msgid\": \"Upload has been cancelled\", \"msgstr\": [\"Caricamento annullato\"] }, \"Upload has been skipped\": { \"msgid\": \"Upload has been skipped\", \"msgstr\": [\"Il caricamento è stato saltato\"] }, 'Upload of \"{folder}\" has been skipped': { \"msgid\": 'Upload of \"{folder}\" has been skipped', \"msgstr\": ['Il caricamento di \"{folder}\" è stato saltato'] }, \"Upload progress\": { \"msgid\": \"Upload progress\", \"msgstr\": [\"Progresso del caricamento\"] }, \"When an incoming folder is selected, any conflicting files within it will also be overwritten.\": { \"msgid\": \"When an incoming folder is selected, any conflicting files within it will also be overwritten.\", \"msgstr\": [\"Quando si seleziona una cartella in arrivo, anche tutti i file in conflitto al suo interno verranno sovrascritti.\"] }, \"When an incoming folder is selected, the content is written into the existing folder and a recursive conflict resolution is performed.\": { \"msgid\": \"When an incoming folder is selected, the content is written into the existing folder and a recursive conflict resolution is performed.\", \"msgstr\": [\"Quando si seleziona una cartella in arrivo, il contenuto viene scritto nella cartella esistente e viene eseguita una risoluzione ricorsiva dei conflitti.\"] }, \"Which files do you want to keep?\": { \"msgid\": \"Which files do you want to keep?\", \"msgstr\": [\"Quali file vuoi mantenere?\"] }, \"You can either rename the file, skip this file or cancel the whole operation.\": { \"msgid\": \"You can either rename the file, skip this file or cancel the whole operation.\", \"msgstr\": [\"È possibile rinominare il file, ignorarlo o annullare l'intera operazione.\"] }, \"You need to select at least one version of each file to continue.\": { \"msgid\": \"You need to select at least one version of each file to continue.\", \"msgstr\": [\"Devi selezionare almeno una versione di ogni file per continuare\"] } } } } }, { \"locale\": \"ja\", \"json\": { \"charset\": \"utf-8\", \"headers\": { \"Last-Translator\": \"kojima.imamura, 2025\", \"Language-Team\": \"Japanese (Japan) (https://app.transifex.com/nextcloud/teams/64236/ja_JP/)\", \"Content-Type\": \"text/plain; charset=UTF-8\", \"Language\": \"ja_JP\", \"Plural-Forms\": \"nplurals=1; plural=0;\" }, \"translations\": { \"\": { \"\": { \"msgid\": \"\", \"comments\": { \"translator\": \"\\nTranslators:\\nJoas Schilling, 2024\\nTakafumi AKAMATSU, 2024\\ndevi, 2024\\n貴宝, 2025\\nkshimohata, 2025\\nkojima.imamura, 2025\\n\" }, \"msgstr\": [\"Last-Translator: kojima.imamura, 2025\\nLanguage-Team: Japanese (Japan) (https://app.transifex.com/nextcloud/teams/64236/ja_JP/)\\nContent-Type: text/plain; charset=UTF-8\\nLanguage: ja_JP\\nPlural-Forms: nplurals=1; plural=0;\\n\"] }, '\"{segment}\" is a forbidden file or folder name.': { \"msgid\": '\"{segment}\" is a forbidden file or folder name.', \"msgstr\": ['\"{segment}\" は禁止されているファイルまたはフォルダ名です。'] }, '\"{segment}\" is a forbidden file type.': { \"msgid\": '\"{segment}\" is a forbidden file type.', \"msgstr\": ['\"{segment}\" は禁止されているファイルタイプです。'] }, '\"{segment}\" is not allowed inside a file or folder name.': { \"msgid\": '\"{segment}\" is not allowed inside a file or folder name.', \"msgstr\": ['ファイルまたはフォルダ名に \"{segment}\" を含めることはできません。'] }, \"{count} file conflict\": { \"msgid\": \"{count} file conflict\", \"msgid_plural\": \"{count} files conflict\", \"msgstr\": [\"{count} ファイル数の競合\"] }, \"{count} file conflict in {dirname}\": { \"msgid\": \"{count} file conflict in {dirname}\", \"msgid_plural\": \"{count} file conflicts in {dirname}\", \"msgstr\": [\"{dirname} で {count} 個のファイルが競合しています\"] }, \"{seconds} seconds left\": { \"msgid\": \"{seconds} seconds left\", \"msgid_plural\": \"{seconds} seconds left\", \"msgstr\": [\"残り{seconds}\"] }, \"{time} left\": { \"msgid\": \"{time} left\", \"comments\": { \"extracted\": \"TRANSLATORS time has the format 00:00:00\" }, \"msgstr\": [\"残り {time}\"] }, \"a few seconds left\": { \"msgid\": \"a few seconds left\", \"msgstr\": [\"残り数秒\"] }, \"assembling\": { \"msgid\": \"assembling\", \"msgstr\": [\"処理中\"] }, \"Cancel\": { \"msgid\": \"Cancel\", \"msgstr\": [\"キャンセル\"] }, \"Cancel the entire operation\": { \"msgid\": \"Cancel the entire operation\", \"msgstr\": [\"すべての操作をキャンセルする\"] }, \"Cancel uploads\": { \"msgid\": \"Cancel uploads\", \"msgstr\": [\"アップロードをキャンセル\"] }, \"Continue\": { \"msgid\": \"Continue\", \"msgstr\": [\"続ける\"] }, \"Create new\": { \"msgid\": \"Create new\", \"msgstr\": [\"新規作成\"] }, \"estimating time left\": { \"msgid\": \"estimating time left\", \"msgstr\": [\"概算残り時間\"] }, \"Existing version\": { \"msgid\": \"Existing version\", \"msgstr\": [\"既存バージョン\"] }, \"Failed to assemble the chunks together\": { \"msgid\": \"Failed to assemble the chunks together\", \"msgstr\": [\"チャンクの組み立てに失敗しました\"] }, \"Failed to upload the file\": { \"msgid\": \"Failed to upload the file\", \"msgstr\": [\"ファイルのアップロードに失敗しました\"] }, 'Filenames must not end with \"{segment}\".': { \"msgid\": 'Filenames must not end with \"{segment}\".', \"msgstr\": ['ファイル名の末尾に \"{segment}\" を付けることはできません。'] }, \"If you select both versions, the incoming file will have a number added to its name.\": { \"msgid\": \"If you select both versions, the incoming file will have a number added to its name.\", \"msgstr\": [\"両方のバージョンを選択した場合、受信ファイルの名前に数字が追加されます。\"] }, \"Invalid filename\": { \"msgid\": \"Invalid filename\", \"msgstr\": [\"無効なファイル名\"] }, \"Last modified date unknown\": { \"msgid\": \"Last modified date unknown\", \"msgstr\": [\"最終更新日不明\"] }, \"New\": { \"msgid\": \"New\", \"msgstr\": [\"新規作成\"] }, \"New filename\": { \"msgid\": \"New filename\", \"msgstr\": [\"新しいファイル名\"] }, \"New version\": { \"msgid\": \"New version\", \"msgstr\": [\"新しいバージョン\"] }, \"paused\": { \"msgid\": \"paused\", \"msgstr\": [\"一時停止中\"] }, \"Preview image\": { \"msgid\": \"Preview image\", \"msgstr\": [\"プレビュー画像\"] }, \"Rename\": { \"msgid\": \"Rename\", \"msgstr\": [\"名前を変更\"] }, \"Select all checkboxes\": { \"msgid\": \"Select all checkboxes\", \"msgstr\": [\"すべて選択\"] }, \"Select all existing files\": { \"msgid\": \"Select all existing files\", \"msgstr\": [\"すべての既存ファイルを選択\"] }, \"Select all new files\": { \"msgid\": \"Select all new files\", \"msgstr\": [\"すべての新規ファイルを選択\"] }, \"Skip\": { \"msgid\": \"Skip\", \"msgstr\": [\"スキップ\"] }, \"Skip {count} file\": { \"msgid\": \"Skip {count} file\", \"msgid_plural\": \"Skip {count} files\", \"msgstr\": [\"{count} 個のファイルをスキップする\"] }, \"Skip this file\": { \"msgid\": \"Skip this file\", \"msgstr\": [\"このファイルをスキップする\"] }, \"Unknown size\": { \"msgid\": \"Unknown size\", \"msgstr\": [\"サイズ不明\"] }, \"Upload\": { \"msgid\": \"Upload\", \"msgstr\": [\"アップロード\"] }, \"Upload files\": { \"msgid\": \"Upload files\", \"msgstr\": [\"ファイルをアップロード\"] }, \"Upload folders\": { \"msgid\": \"Upload folders\", \"msgstr\": [\"フォルダのアップロード\"] }, \"Upload from device\": { \"msgid\": \"Upload from device\", \"msgstr\": [\"デバイスからのアップロード\"] }, \"Upload has been cancelled\": { \"msgid\": \"Upload has been cancelled\", \"msgstr\": [\"アップロードはキャンセルされました\"] }, \"Upload has been skipped\": { \"msgid\": \"Upload has been skipped\", \"msgstr\": [\"アップロードがスキップされました\"] }, 'Upload of \"{folder}\" has been skipped': { \"msgid\": 'Upload of \"{folder}\" has been skipped', \"msgstr\": ['\"{folder}\" のアップロードがスキップされました'] }, \"Upload progress\": { \"msgid\": \"Upload progress\", \"msgstr\": [\"アップロード進行状況\"] }, \"When an incoming folder is selected, any conflicting files within it will also be overwritten.\": { \"msgid\": \"When an incoming folder is selected, any conflicting files within it will also be overwritten.\", \"msgstr\": [\"受信フォルダが選択されると、その中の競合するファイルもすべて上書きされます。\"] }, \"When an incoming folder is selected, the content is written into the existing folder and a recursive conflict resolution is performed.\": { \"msgid\": \"When an incoming folder is selected, the content is written into the existing folder and a recursive conflict resolution is performed.\", \"msgstr\": [\"受信フォルダが選択されると、その内容は既存のフォルダに書き込まれ、再帰的な競合解決が行われます。\"] }, \"Which files do you want to keep?\": { \"msgid\": \"Which files do you want to keep?\", \"msgstr\": [\"どのファイルを保持しますか?\"] }, \"You can either rename the file, skip this file or cancel the whole operation.\": { \"msgid\": \"You can either rename the file, skip this file or cancel the whole operation.\", \"msgstr\": [\"ファイル名を変更するか、このファイルをスキップするか、操作全体をキャンセルすることができます。\"] }, \"You need to select at least one version of each file to continue.\": { \"msgid\": \"You need to select at least one version of each file to continue.\", \"msgstr\": [\"続行するには、各ファイルの少なくとも1つのバージョンを選択する必要があります。\"] } } } } }, { \"locale\": \"ka\", \"json\": { \"charset\": \"utf-8\", \"headers\": { \"Last-Translator\": \"Transifex Bot <>, 2022\", \"Language-Team\": \"Georgian (https://www.transifex.com/nextcloud/teams/64236/ka/)\", \"Content-Type\": \"text/plain; charset=UTF-8\", \"Language\": \"ka\", \"Plural-Forms\": \"nplurals=2; plural=(n!=1);\" }, \"translations\": { \"\": { \"\": { \"msgid\": \"\", \"comments\": { \"translator\": \"\\nTranslators:\\nTransifex Bot <>, 2022\\n\" }, \"msgstr\": [\"Last-Translator: Transifex Bot <>, 2022\\nLanguage-Team: Georgian (https://www.transifex.com/nextcloud/teams/64236/ka/)\\nContent-Type: text/plain; charset=UTF-8\\nLanguage: ka\\nPlural-Forms: nplurals=2; plural=(n!=1);\\n\"] }, \"{estimate} seconds left\": { \"msgid\": \"{estimate} seconds left\", \"msgstr\": [\"\"] }, \"{hours} hours and {minutes} minutes left\": { \"msgid\": \"{hours} hours and {minutes} minutes left\", \"msgstr\": [\"\"] }, \"{minutes} minutes left\": { \"msgid\": \"{minutes} minutes left\", \"msgstr\": [\"\"] }, \"a few seconds left\": { \"msgid\": \"a few seconds left\", \"msgstr\": [\"\"] }, \"Add\": { \"msgid\": \"Add\", \"msgstr\": [\"\"] }, \"Cancel uploads\": { \"msgid\": \"Cancel uploads\", \"msgstr\": [\"\"] }, \"estimating time left\": { \"msgid\": \"estimating time left\", \"msgstr\": [\"\"] }, \"paused\": { \"msgid\": \"paused\", \"msgstr\": [\"\"] } } } } }, { \"locale\": \"ka_GE\", \"json\": { \"charset\": \"utf-8\", \"headers\": { \"Last-Translator\": \"Transifex Bot <>, 2022\", \"Language-Team\": \"Georgian (Georgia) (https://www.transifex.com/nextcloud/teams/64236/ka_GE/)\", \"Content-Type\": \"text/plain; charset=UTF-8\", \"Language\": \"ka_GE\", \"Plural-Forms\": \"nplurals=2; plural=(n!=1);\" }, \"translations\": { \"\": { \"\": { \"msgid\": \"\", \"comments\": { \"translator\": \"\\nTranslators:\\nTransifex Bot <>, 2022\\n\" }, \"msgstr\": [\"Last-Translator: Transifex Bot <>, 2022\\nLanguage-Team: Georgian (Georgia) (https://www.transifex.com/nextcloud/teams/64236/ka_GE/)\\nContent-Type: text/plain; charset=UTF-8\\nLanguage: ka_GE\\nPlural-Forms: nplurals=2; plural=(n!=1);\\n\"] }, \"{estimate} seconds left\": { \"msgid\": \"{estimate} seconds left\", \"msgstr\": [\"\"] }, \"{hours} hours and {minutes} minutes left\": { \"msgid\": \"{hours} hours and {minutes} minutes left\", \"msgstr\": [\"\"] }, \"{minutes} minutes left\": { \"msgid\": \"{minutes} minutes left\", \"msgstr\": [\"\"] }, \"a few seconds left\": { \"msgid\": \"a few seconds left\", \"msgstr\": [\"\"] }, \"Add\": { \"msgid\": \"Add\", \"msgstr\": [\"\"] }, \"Cancel uploads\": { \"msgid\": \"Cancel uploads\", \"msgstr\": [\"\"] }, \"estimating time left\": { \"msgid\": \"estimating time left\", \"msgstr\": [\"\"] }, \"paused\": { \"msgid\": \"paused\", \"msgstr\": [\"\"] } } } } }, { \"locale\": \"kab\", \"json\": { \"charset\": \"utf-8\", \"headers\": { \"Last-Translator\": \"ZiriSut, 2023\", \"Language-Team\": \"Kabyle (https://app.transifex.com/nextcloud/teams/64236/kab/)\", \"Content-Type\": \"text/plain; charset=UTF-8\", \"Language\": \"kab\", \"Plural-Forms\": \"nplurals=2; plural=(n != 1);\" }, \"translations\": { \"\": { \"\": { \"msgid\": \"\", \"comments\": { \"translator\": \"\\nTranslators:\\nZiriSut, 2023\\n\" }, \"msgstr\": [\"Last-Translator: ZiriSut, 2023\\nLanguage-Team: Kabyle (https://app.transifex.com/nextcloud/teams/64236/kab/)\\nContent-Type: text/plain; charset=UTF-8\\nLanguage: kab\\nPlural-Forms: nplurals=2; plural=(n != 1);\\n\"] }, \"{seconds} seconds left\": { \"msgid\": \"{seconds} seconds left\", \"msgstr\": [\"{seconds} tesdatin i d-yeqqimen\"] }, \"{time} left\": { \"msgid\": \"{time} left\", \"comments\": { \"extracted\": \"time has the format 00:00:00\" }, \"msgstr\": [\"{time} i d-yeqqimen\"] }, \"a few seconds left\": { \"msgid\": \"a few seconds left\", \"msgstr\": [\"qqiment-d kra n tesdatin kan\"] }, \"Add\": { \"msgid\": \"Add\", \"msgstr\": [\"Rnu\"] }, \"Cancel uploads\": { \"msgid\": \"Cancel uploads\", \"msgstr\": [\"Sefsex asali\"] }, \"estimating time left\": { \"msgid\": \"estimating time left\", \"msgstr\": [\"asizel n wakud i d-yeqqimen\"] }, \"paused\": { \"msgid\": \"paused\", \"msgstr\": [\"yeḥbes\"] }, \"Upload files\": { \"msgid\": \"Upload files\", \"msgstr\": [\"Sali-d ifuyla\"] } } } } }, { \"locale\": \"kk\", \"json\": { \"charset\": \"utf-8\", \"headers\": { \"Last-Translator\": \"Transifex Bot <>, 2022\", \"Language-Team\": \"Kazakh (https://www.transifex.com/nextcloud/teams/64236/kk/)\", \"Content-Type\": \"text/plain; charset=UTF-8\", \"Language\": \"kk\", \"Plural-Forms\": \"nplurals=2; plural=(n!=1);\" }, \"translations\": { \"\": { \"\": { \"msgid\": \"\", \"comments\": { \"translator\": \"\\nTranslators:\\nTransifex Bot <>, 2022\\n\" }, \"msgstr\": [\"Last-Translator: Transifex Bot <>, 2022\\nLanguage-Team: Kazakh (https://www.transifex.com/nextcloud/teams/64236/kk/)\\nContent-Type: text/plain; charset=UTF-8\\nLanguage: kk\\nPlural-Forms: nplurals=2; plural=(n!=1);\\n\"] }, \"{estimate} seconds left\": { \"msgid\": \"{estimate} seconds left\", \"msgstr\": [\"\"] }, \"{hours} hours and {minutes} minutes left\": { \"msgid\": \"{hours} hours and {minutes} minutes left\", \"msgstr\": [\"\"] }, \"{minutes} minutes left\": { \"msgid\": \"{minutes} minutes left\", \"msgstr\": [\"\"] }, \"a few seconds left\": { \"msgid\": \"a few seconds left\", \"msgstr\": [\"\"] }, \"Add\": { \"msgid\": \"Add\", \"msgstr\": [\"\"] }, \"Cancel uploads\": { \"msgid\": \"Cancel uploads\", \"msgstr\": [\"\"] }, \"estimating time left\": { \"msgid\": \"estimating time left\", \"msgstr\": [\"\"] }, \"paused\": { \"msgid\": \"paused\", \"msgstr\": [\"\"] } } } } }, { \"locale\": \"km\", \"json\": { \"charset\": \"utf-8\", \"headers\": { \"Last-Translator\": \"Transifex Bot <>, 2022\", \"Language-Team\": \"Khmer (https://www.transifex.com/nextcloud/teams/64236/km/)\", \"Content-Type\": \"text/plain; charset=UTF-8\", \"Language\": \"km\", \"Plural-Forms\": \"nplurals=1; plural=0;\" }, \"translations\": { \"\": { \"\": { \"msgid\": \"\", \"comments\": { \"translator\": \"\\nTranslators:\\nTransifex Bot <>, 2022\\n\" }, \"msgstr\": [\"Last-Translator: Transifex Bot <>, 2022\\nLanguage-Team: Khmer (https://www.transifex.com/nextcloud/teams/64236/km/)\\nContent-Type: text/plain; charset=UTF-8\\nLanguage: km\\nPlural-Forms: nplurals=1; plural=0;\\n\"] }, \"{estimate} seconds left\": { \"msgid\": \"{estimate} seconds left\", \"msgstr\": [\"\"] }, \"{hours} hours and {minutes} minutes left\": { \"msgid\": \"{hours} hours and {minutes} minutes left\", \"msgstr\": [\"\"] }, \"{minutes} minutes left\": { \"msgid\": \"{minutes} minutes left\", \"msgstr\": [\"\"] }, \"a few seconds left\": { \"msgid\": \"a few seconds left\", \"msgstr\": [\"\"] }, \"Add\": { \"msgid\": \"Add\", \"msgstr\": [\"\"] }, \"Cancel uploads\": { \"msgid\": \"Cancel uploads\", \"msgstr\": [\"\"] }, \"estimating time left\": { \"msgid\": \"estimating time left\", \"msgstr\": [\"\"] }, \"paused\": { \"msgid\": \"paused\", \"msgstr\": [\"\"] } } } } }, { \"locale\": \"kn\", \"json\": { \"charset\": \"utf-8\", \"headers\": { \"Last-Translator\": \"Transifex Bot <>, 2022\", \"Language-Team\": \"Kannada (https://www.transifex.com/nextcloud/teams/64236/kn/)\", \"Content-Type\": \"text/plain; charset=UTF-8\", \"Language\": \"kn\", \"Plural-Forms\": \"nplurals=2; plural=(n > 1);\" }, \"translations\": { \"\": { \"\": { \"msgid\": \"\", \"comments\": { \"translator\": \"\\nTranslators:\\nTransifex Bot <>, 2022\\n\" }, \"msgstr\": [\"Last-Translator: Transifex Bot <>, 2022\\nLanguage-Team: Kannada (https://www.transifex.com/nextcloud/teams/64236/kn/)\\nContent-Type: text/plain; charset=UTF-8\\nLanguage: kn\\nPlural-Forms: nplurals=2; plural=(n > 1);\\n\"] }, \"{estimate} seconds left\": { \"msgid\": \"{estimate} seconds left\", \"msgstr\": [\"\"] }, \"{hours} hours and {minutes} minutes left\": { \"msgid\": \"{hours} hours and {minutes} minutes left\", \"msgstr\": [\"\"] }, \"{minutes} minutes left\": { \"msgid\": \"{minutes} minutes left\", \"msgstr\": [\"\"] }, \"a few seconds left\": { \"msgid\": \"a few seconds left\", \"msgstr\": [\"\"] }, \"Add\": { \"msgid\": \"Add\", \"msgstr\": [\"\"] }, \"Cancel uploads\": { \"msgid\": \"Cancel uploads\", \"msgstr\": [\"\"] }, \"estimating time left\": { \"msgid\": \"estimating time left\", \"msgstr\": [\"\"] }, \"paused\": { \"msgid\": \"paused\", \"msgstr\": [\"\"] } } } } }, { \"locale\": \"ko\", \"json\": { \"charset\": \"utf-8\", \"headers\": { \"Last-Translator\": \"보헤민, 2025\", \"Language-Team\": \"Korean (https://app.transifex.com/nextcloud/teams/64236/ko/)\", \"Content-Type\": \"text/plain; charset=UTF-8\", \"Language\": \"ko\", \"Plural-Forms\": \"nplurals=1; plural=0;\" }, \"translations\": { \"\": { \"\": { \"msgid\": \"\", \"comments\": { \"translator\": \"\\nTranslators:\\nJoas Schilling, 2024\\nshin2012 , 2025\\n이상오, 2025\\n보헤민, 2025\\n\" }, \"msgstr\": [\"Last-Translator: 보헤민, 2025\\nLanguage-Team: Korean (https://app.transifex.com/nextcloud/teams/64236/ko/)\\nContent-Type: text/plain; charset=UTF-8\\nLanguage: ko\\nPlural-Forms: nplurals=1; plural=0;\\n\"] }, '\"{segment}\" is a forbidden file or folder name.': { \"msgid\": '\"{segment}\" is a forbidden file or folder name.', \"msgstr\": ['\"{segment}\"은(는) 금지된 파일 및 폴더 이름입니다.'] }, '\"{segment}\" is a forbidden file type.': { \"msgid\": '\"{segment}\" is a forbidden file type.', \"msgstr\": ['\"{segment}\"은(는) 금지된 파일 형식입니다.'] }, '\"{segment}\" is not allowed inside a file or folder name.': { \"msgid\": '\"{segment}\" is not allowed inside a file or folder name.', \"msgstr\": ['파일이나 폴더 이름에 \"{segment}\"을(를) 사용할 수 없습니다.'] }, \"{count} file conflict\": { \"msgid\": \"{count} file conflict\", \"msgid_plural\": \"{count} files conflict\", \"msgstr\": [\"{count}개의 파일이 충돌함\"] }, \"{count} file conflict in {dirname}\": { \"msgid\": \"{count} file conflict in {dirname}\", \"msgid_plural\": \"{count} file conflicts in {dirname}\", \"msgstr\": [\"{dirname}에서 {count}개의 파일이 충돌함\"] }, \"{seconds} seconds left\": { \"msgid\": \"{seconds} seconds left\", \"msgid_plural\": \"{seconds} seconds left\", \"msgstr\": [\"{seconds} 초 남음\"] }, \"{time} left\": { \"msgid\": \"{time} left\", \"comments\": { \"extracted\": \"TRANSLATORS time has the format 00:00:00\" }, \"msgstr\": [\"{time} 남음\"] }, \"a few seconds left\": { \"msgid\": \"a few seconds left\", \"msgstr\": [\"곧 완료\"] }, \"assembling\": { \"msgid\": \"assembling\", \"msgstr\": [\"취합 중\"] }, \"Cancel\": { \"msgid\": \"Cancel\", \"msgstr\": [\"취소\"] }, \"Cancel the entire operation\": { \"msgid\": \"Cancel the entire operation\", \"msgstr\": [\"전체 작업을 취소\"] }, \"Cancel uploads\": { \"msgid\": \"Cancel uploads\", \"msgstr\": [\"업로드 취소\"] }, \"Continue\": { \"msgid\": \"Continue\", \"msgstr\": [\"확인\"] }, \"Create new\": { \"msgid\": \"Create new\", \"msgstr\": [\"새로 만들기\"] }, \"estimating time left\": { \"msgid\": \"estimating time left\", \"msgstr\": [\"남은 시간 계산\"] }, \"Existing version\": { \"msgid\": \"Existing version\", \"msgstr\": [\"현재 버전\"] }, \"Failed to assemble the chunks together\": { \"msgid\": \"Failed to assemble the chunks together\", \"msgstr\": [\"조각을 취합하는 데 실패\"] }, \"Failed to upload the file\": { \"msgid\": \"Failed to upload the file\", \"msgstr\": [\"파일을 업로드하는 데 실패\"] }, 'Filenames must not end with \"{segment}\".': { \"msgid\": 'Filenames must not end with \"{segment}\".', \"msgstr\": ['파일 이름은 \"{segment}\"(으)로 끝나야 합니다.'] }, \"If you select both versions, the incoming file will have a number added to its name.\": { \"msgid\": \"If you select both versions, the incoming file will have a number added to its name.\", \"msgstr\": [\"두 파일을 모두 선택하면, 들어오는 파일의 이름에 번호가 추가됩니다.\"] }, \"Invalid filename\": { \"msgid\": \"Invalid filename\", \"msgstr\": [\"잘못된 파일 이름\"] }, \"Last modified date unknown\": { \"msgid\": \"Last modified date unknown\", \"msgstr\": [\"최근 수정일 알 수 없음\"] }, \"New\": { \"msgid\": \"New\", \"msgstr\": [\"새로 만들기\"] }, \"New filename\": { \"msgid\": \"New filename\", \"msgstr\": [\"새 파일 이름\"] }, \"New version\": { \"msgid\": \"New version\", \"msgstr\": [\"새 버전\"] }, \"paused\": { \"msgid\": \"paused\", \"msgstr\": [\"일시정지됨\"] }, \"Preview image\": { \"msgid\": \"Preview image\", \"msgstr\": [\"미리보기 이미지\"] }, \"Rename\": { \"msgid\": \"Rename\", \"msgstr\": [\"이름 바꾸기\"] }, \"Select all checkboxes\": { \"msgid\": \"Select all checkboxes\", \"msgstr\": [\"모든 체크박스 선택\"] }, \"Select all existing files\": { \"msgid\": \"Select all existing files\", \"msgstr\": [\"기존 파일을 모두 선택\"] }, \"Select all new files\": { \"msgid\": \"Select all new files\", \"msgstr\": [\"새로운 파일을 모두 선택\"] }, \"Skip\": { \"msgid\": \"Skip\", \"msgstr\": [\"건너뛰기\"] }, \"Skip {count} file\": { \"msgid\": \"Skip {count} file\", \"msgid_plural\": \"Skip {count} files\", \"msgstr\": [\"{count}개 파일 건너뛰기\"] }, \"Skip this file\": { \"msgid\": \"Skip this file\", \"msgstr\": [\"이 파일 건너뛰기\"] }, \"Unknown size\": { \"msgid\": \"Unknown size\", \"msgstr\": [\"크기를 알 수 없음\"] }, \"Upload\": { \"msgid\": \"Upload\", \"msgstr\": [\"업로드\"] }, \"Upload files\": { \"msgid\": \"Upload files\", \"msgstr\": [\"파일 업로드\"] }, \"Upload folders\": { \"msgid\": \"Upload folders\", \"msgstr\": [\"폴더 업로드\"] }, \"Upload from device\": { \"msgid\": \"Upload from device\", \"msgstr\": [\"장치에서 업로드\"] }, \"Upload has been cancelled\": { \"msgid\": \"Upload has been cancelled\", \"msgstr\": [\"업로드가 취소되었습니다.\"] }, \"Upload has been skipped\": { \"msgid\": \"Upload has been skipped\", \"msgstr\": [\"업로드를 건너뛰었습니다.\"] }, 'Upload of \"{folder}\" has been skipped': { \"msgid\": 'Upload of \"{folder}\" has been skipped', \"msgstr\": ['\"{folder}\" 업로드를 건너뛰었습니다.'] }, \"Upload progress\": { \"msgid\": \"Upload progress\", \"msgstr\": [\"업로드 진행도\"] }, \"When an incoming folder is selected, any conflicting files within it will also be overwritten.\": { \"msgid\": \"When an incoming folder is selected, any conflicting files within it will also be overwritten.\", \"msgstr\": [\"들어오는 폴더를 선택했다면, 충돌하는 내부 파일들은 덮어쓰기 됩니다.\"] }, \"When an incoming folder is selected, the content is written into the existing folder and a recursive conflict resolution is performed.\": { \"msgid\": \"When an incoming folder is selected, the content is written into the existing folder and a recursive conflict resolution is performed.\", \"msgstr\": [\"들어오는 폴더가 선택되면, 그 안의 콘텐츠가 기존 폴더에 기록되고 재귀적 충돌 해결이 수행됩니다.\"] }, \"Which files do you want to keep?\": { \"msgid\": \"Which files do you want to keep?\", \"msgstr\": [\"어떤 파일을 보존하시겠습니까?\"] }, \"You can either rename the file, skip this file or cancel the whole operation.\": { \"msgid\": \"You can either rename the file, skip this file or cancel the whole operation.\", \"msgstr\": [\"파일 이름을 바꾸거나, 이 파일을 건너뛰거나 모든 작업을 취소할 수 있습니다.\"] }, \"You need to select at least one version of each file to continue.\": { \"msgid\": \"You need to select at least one version of each file to continue.\", \"msgstr\": [\"계속하기 위해서는 한 파일에 최소 하나의 버전을 선택해야 합니다.\"] } } } } }, { \"locale\": \"la\", \"json\": { \"charset\": \"utf-8\", \"headers\": { \"Last-Translator\": \"Transifex Bot <>, 2022\", \"Language-Team\": \"Latin (https://www.transifex.com/nextcloud/teams/64236/la/)\", \"Content-Type\": \"text/plain; charset=UTF-8\", \"Language\": \"la\", \"Plural-Forms\": \"nplurals=2; plural=(n != 1);\" }, \"translations\": { \"\": { \"\": { \"msgid\": \"\", \"comments\": { \"translator\": \"\\nTranslators:\\nTransifex Bot <>, 2022\\n\" }, \"msgstr\": [\"Last-Translator: Transifex Bot <>, 2022\\nLanguage-Team: Latin (https://www.transifex.com/nextcloud/teams/64236/la/)\\nContent-Type: text/plain; charset=UTF-8\\nLanguage: la\\nPlural-Forms: nplurals=2; plural=(n != 1);\\n\"] }, \"{estimate} seconds left\": { \"msgid\": \"{estimate} seconds left\", \"msgstr\": [\"\"] }, \"{hours} hours and {minutes} minutes left\": { \"msgid\": \"{hours} hours and {minutes} minutes left\", \"msgstr\": [\"\"] }, \"{minutes} minutes left\": { \"msgid\": \"{minutes} minutes left\", \"msgstr\": [\"\"] }, \"a few seconds left\": { \"msgid\": \"a few seconds left\", \"msgstr\": [\"\"] }, \"Add\": { \"msgid\": \"Add\", \"msgstr\": [\"\"] }, \"Cancel uploads\": { \"msgid\": \"Cancel uploads\", \"msgstr\": [\"\"] }, \"estimating time left\": { \"msgid\": \"estimating time left\", \"msgstr\": [\"\"] }, \"paused\": { \"msgid\": \"paused\", \"msgstr\": [\"\"] } } } } }, { \"locale\": \"lb\", \"json\": { \"charset\": \"utf-8\", \"headers\": { \"Last-Translator\": \"Transifex Bot <>, 2022\", \"Language-Team\": \"Luxembourgish (https://www.transifex.com/nextcloud/teams/64236/lb/)\", \"Content-Type\": \"text/plain; charset=UTF-8\", \"Language\": \"lb\", \"Plural-Forms\": \"nplurals=2; plural=(n != 1);\" }, \"translations\": { \"\": { \"\": { \"msgid\": \"\", \"comments\": { \"translator\": \"\\nTranslators:\\nTransifex Bot <>, 2022\\n\" }, \"msgstr\": [\"Last-Translator: Transifex Bot <>, 2022\\nLanguage-Team: Luxembourgish (https://www.transifex.com/nextcloud/teams/64236/lb/)\\nContent-Type: text/plain; charset=UTF-8\\nLanguage: lb\\nPlural-Forms: nplurals=2; plural=(n != 1);\\n\"] }, \"{estimate} seconds left\": { \"msgid\": \"{estimate} seconds left\", \"msgstr\": [\"\"] }, \"{hours} hours and {minutes} minutes left\": { \"msgid\": \"{hours} hours and {minutes} minutes left\", \"msgstr\": [\"\"] }, \"{minutes} minutes left\": { \"msgid\": \"{minutes} minutes left\", \"msgstr\": [\"\"] }, \"a few seconds left\": { \"msgid\": \"a few seconds left\", \"msgstr\": [\"\"] }, \"Add\": { \"msgid\": \"Add\", \"msgstr\": [\"\"] }, \"Cancel uploads\": { \"msgid\": \"Cancel uploads\", \"msgstr\": [\"\"] }, \"estimating time left\": { \"msgid\": \"estimating time left\", \"msgstr\": [\"\"] }, \"paused\": { \"msgid\": \"paused\", \"msgstr\": [\"\"] } } } } }, { \"locale\": \"lo\", \"json\": { \"charset\": \"utf-8\", \"headers\": { \"Last-Translator\": \"bone NI, 2025\", \"Language-Team\": \"Lao (https://app.transifex.com/nextcloud/teams/64236/lo/)\", \"Content-Type\": \"text/plain; charset=UTF-8\", \"Language\": \"lo\", \"Plural-Forms\": \"nplurals=1; plural=0;\" }, \"translations\": { \"\": { \"\": { \"msgid\": \"\", \"comments\": { \"translator\": \"\\nTranslators:\\nbone NI, 2025\\n\" }, \"msgstr\": [\"Last-Translator: bone NI, 2025\\nLanguage-Team: Lao (https://app.transifex.com/nextcloud/teams/64236/lo/)\\nContent-Type: text/plain; charset=UTF-8\\nLanguage: lo\\nPlural-Forms: nplurals=1; plural=0;\\n\"] }, '\"{segment}\" is a forbidden file or folder name.': { \"msgid\": '\"{segment}\" is a forbidden file or folder name.', \"msgstr\": ['\"{segment}\" ແມ່ນຊື່ໄຟລ໌ ຫຼື ໂຟລເດີທີ່ບໍ່ອະນຸຍາດ.'] }, '\"{segment}\" is a forbidden file type.': { \"msgid\": '\"{segment}\" is a forbidden file type.', \"msgstr\": ['\"{segment}\" ແມ່ນປະເພດໄຟລ໌ທີ່ບໍ່ອະນຸຍາດ.'] }, '\"{segment}\" is not allowed inside a file or folder name.': { \"msgid\": '\"{segment}\" is not allowed inside a file or folder name.', \"msgstr\": ['ບໍ່ອະນຸຍາດໃຫ້ມີ \"{segment}\" ຢູ່​ໃນຊື່ໄຟລ໌ ຫຼື ໂຟລເດີ.'] }, \"{count} file conflict\": { \"msgid\": \"{count} file conflict\", \"msgid_plural\": \"{count} files conflict\", \"msgstr\": [\"ໄຟລ໌ຊ້ຳກັນ {count} ລາຍການ\"] }, \"{count} file conflict in {dirname}\": { \"msgid\": \"{count} file conflict in {dirname}\", \"msgid_plural\": \"{count} file conflicts in {dirname}\", \"msgstr\": [\"ໄຟລ໌ຊ້ຳກັນ {count} ລາຍການ ໃນ {dirname}\"] }, \"{seconds} seconds left\": { \"msgid\": \"{seconds} seconds left\", \"msgid_plural\": \"{seconds} seconds left\", \"msgstr\": [\"ເຫຼືອເວລາ {seconds} ວິນາທີ\"] }, \"{time} left\": { \"msgid\": \"{time} left\", \"comments\": { \"extracted\": \"TRANSLATORS time has the format 00:00:00\" }, \"msgstr\": [\"ເຫຼືອເວລາ {time}\"] }, \"a few seconds left\": { \"msgid\": \"a few seconds left\", \"msgstr\": [\"ເຫຼືອເວລາອີກບໍ່ດົນ\"] }, \"assembling\": { \"msgid\": \"assembling\", \"msgstr\": [\"ກຳລັງຮວບຮວມ\"] }, \"Cancel\": { \"msgid\": \"Cancel\", \"msgstr\": [\"ຍົກເລີກ\"] }, \"Cancel the entire operation\": { \"msgid\": \"Cancel the entire operation\", \"msgstr\": [\"ຍົກເລີກການດຳເນີນການທັງໝົດ\"] }, \"Cancel uploads\": { \"msgid\": \"Cancel uploads\", \"msgstr\": [\"ຍົກເລີກການອັບໂຫຼດ\"] }, \"Continue\": { \"msgid\": \"Continue\", \"msgstr\": [\"ດຳເນີນການຕໍ່\"] }, \"Create new\": { \"msgid\": \"Create new\", \"msgstr\": [\"ສ້າງໃໝ່\"] }, \"estimating time left\": { \"msgid\": \"estimating time left\", \"msgstr\": [\"ກຳລັງຄາດຄະເນເວລາທີ່ເຫຼືອ\"] }, \"Existing version\": { \"msgid\": \"Existing version\", \"msgstr\": [\"ສະບັບທີ່ມີຢູ່ແລ້ວ\"] }, \"Failed to assemble the chunks together\": { \"msgid\": \"Failed to assemble the chunks together\", \"msgstr\": [\"ການຮວບຮວມສ່ວນຕ່າງໆເຂົ້າກັນບໍ່ສຳເລັດ\"] }, \"Failed to upload the file\": { \"msgid\": \"Failed to upload the file\", \"msgstr\": [\"ອັບໂຫຼດໄຟລ໌ບໍ່ສຳເລັດ\"] }, 'Filenames must not end with \"{segment}\".': { \"msgid\": 'Filenames must not end with \"{segment}\".', \"msgstr\": ['ຊື່ໄຟລ໌ຕ້ອງບໍ່ລົງທ້າຍດ້ວຍ \"{segment}\".'] }, \"If you select both versions, the incoming file will have a number added to its name.\": { \"msgid\": \"If you select both versions, the incoming file will have a number added to its name.\", \"msgstr\": [\"ຖ້າທ່ານເລືອກທັງສອງສະບັບ, ໄຟລ໌ທີ່ເຂົ້າມາໃໝ່ຈະຖືກເພີ່ມຕົວເລກໃສ່ທ້າຍຊື່.\"] }, \"Invalid filename\": { \"msgid\": \"Invalid filename\", \"msgstr\": [\"ຊື່ໄຟລ໌ບໍ່ຖືກຕ້ອງ\"] }, \"Last modified date unknown\": { \"msgid\": \"Last modified date unknown\", \"msgstr\": [\"ບໍ່ຊາບວັນທີແກ້ໄຂຫຼ້າສຸດ\"] }, \"New\": { \"msgid\": \"New\", \"msgstr\": [\"ໃໝ່\"] }, \"New filename\": { \"msgid\": \"New filename\", \"msgstr\": [\"ຊື່ໄຟລ໌ໃໝ່\"] }, \"New version\": { \"msgid\": \"New version\", \"msgstr\": [\"ສະບັບໃໝ່\"] }, \"paused\": { \"msgid\": \"paused\", \"msgstr\": [\"ຢຸດຊົ່ວຄາວ\"] }, \"Preview image\": { \"msgid\": \"Preview image\", \"msgstr\": [\"ເບິ່ງຕົວຢ່າງຮູບ\"] }, \"Rename\": { \"msgid\": \"Rename\", \"msgstr\": [\"ປ່ຽນຊື່\"] }, \"Select all checkboxes\": { \"msgid\": \"Select all checkboxes\", \"msgstr\": [\"ເລືອກທຸກຊ່ອງໝາຍຕິກ\"] }, \"Select all existing files\": { \"msgid\": \"Select all existing files\", \"msgstr\": [\"ເລືອກໄຟລ໌ທີ່ມີຢູ່ແລ້ວທັງໝົດ\"] }, \"Select all new files\": { \"msgid\": \"Select all new files\", \"msgstr\": [\"ເລືອກໄຟລ໌ໃໝ່ທັງໝົດ\"] }, \"Skip\": { \"msgid\": \"Skip\", \"msgstr\": [\"ຂ້າມ\"] }, \"Skip {count} file\": { \"msgid\": \"Skip {count} file\", \"msgid_plural\": \"Skip {count} files\", \"msgstr\": [\"ຂ້າມ {count} ໄຟລ໌\"] }, \"Skip this file\": { \"msgid\": \"Skip this file\", \"msgstr\": [\"ຂ້າມໄຟລ໌ນີ້\"] }, \"Unknown size\": { \"msgid\": \"Unknown size\", \"msgstr\": [\"ບໍ່ຊາບຂະໜາດ\"] }, \"Upload\": { \"msgid\": \"Upload\", \"msgstr\": [\"ອັບໂຫຼດ\"] }, \"Upload files\": { \"msgid\": \"Upload files\", \"msgstr\": [\"ອັບໂຫຼດໄຟລ໌\"] }, \"Upload folders\": { \"msgid\": \"Upload folders\", \"msgstr\": [\"ອັບໂຫຼດໂຟລເດີ\"] }, \"Upload from device\": { \"msgid\": \"Upload from device\", \"msgstr\": [\"ອັບໂຫຼດຈາກອຸປະກອນ\"] }, \"Upload has been cancelled\": { \"msgid\": \"Upload has been cancelled\", \"msgstr\": [\"ການອັບໂຫຼດໄດ້ຖືກຍົກເລີກແລ້ວ\"] }, \"Upload has been skipped\": { \"msgid\": \"Upload has been skipped\", \"msgstr\": [\"ການອັບໂຫຼດໄດ້ຖືກຂ້າມໄປແລ້ວ\"] }, 'Upload of \"{folder}\" has been skipped': { \"msgid\": 'Upload of \"{folder}\" has been skipped', \"msgstr\": ['ການອັບໂຫຼດ \"{folder}\" ໄດ້ຖືກຂ້າມໄປແລ້ວ'] }, \"Upload progress\": { \"msgid\": \"Upload progress\", \"msgstr\": [\"ຄວາມຄືບໜ້າການອັບໂຫຼດ\"] }, \"When an incoming folder is selected, any conflicting files within it will also be overwritten.\": { \"msgid\": \"When an incoming folder is selected, any conflicting files within it will also be overwritten.\", \"msgstr\": [\"ເມື່ອເລືອກໂຟລເດີທີ່ເຂົ້າມາໃໝ່, ໄຟລ໌ໃດໆທີ່ຊ້ຳກັນຢູ່ພາຍໃນກໍຈະຖືກຂຽນທັບເຊັ່ນກັນ.\"] }, \"When an incoming folder is selected, the content is written into the existing folder and a recursive conflict resolution is performed.\": { \"msgid\": \"When an incoming folder is selected, the content is written into the existing folder and a recursive conflict resolution is performed.\", \"msgstr\": [\"ເມື່ອເລືອກໂຟລເດີທີ່ເຂົ້າມາໃໝ່, ເນື້ອຫາຈະຖືກຂຽນລົງໃນໂຟລເດີທີ່ມີຢູ່ແລ້ວ ແລະ ຈະມີການແກ້ໄຂໄຟລ໌ທີ່ຊ້ຳກັນແບບຕໍ່ເນື່ອງໃນໂຟລເດີຍ່ອຍ.\"] }, \"Which files do you want to keep?\": { \"msgid\": \"Which files do you want to keep?\", \"msgstr\": [\"ທ່ານຕ້ອງການເກັບໄຟລ໌ໃດໄວ້?\"] }, \"You can either rename the file, skip this file or cancel the whole operation.\": { \"msgid\": \"You can either rename the file, skip this file or cancel the whole operation.\", \"msgstr\": [\"ທ່ານສາມາດປ່ຽນຊື່ໄຟລ໌, ຂ້າມໄຟລ໌ນີ້ ຫຼື ຍົກເລີກການດຳເນີນການທັງໝົດ.\"] }, \"You need to select at least one version of each file to continue.\": { \"msgid\": \"You need to select at least one version of each file to continue.\", \"msgstr\": [\"ທ່ານຈຳເປັນຕ້ອງເລືອກຢ່າງໜ້ອຍໜຶ່ງສະບັບຂອງແຕ່ລະໄຟລ໌ເພື່ອດຳເນີນການຕໍ່.\"] } } } } }, { \"locale\": \"lt_LT\", \"json\": { \"charset\": \"utf-8\", \"headers\": { \"Last-Translator\": \"Transifex Bot <>, 2022\", \"Language-Team\": \"Lithuanian (Lithuania) (https://www.transifex.com/nextcloud/teams/64236/lt_LT/)\", \"Content-Type\": \"text/plain; charset=UTF-8\", \"Language\": \"lt_LT\", \"Plural-Forms\": \"nplurals=4; plural=(n % 10 == 1 && (n % 100 > 19 || n % 100 < 11) ? 0 : (n % 10 >= 2 && n % 10 <=9) && (n % 100 > 19 || n % 100 < 11) ? 1 : n % 1 != 0 ? 2: 3);\" }, \"translations\": { \"\": { \"\": { \"msgid\": \"\", \"comments\": { \"translator\": \"\\nTranslators:\\nTransifex Bot <>, 2022\\n\" }, \"msgstr\": [\"Last-Translator: Transifex Bot <>, 2022\\nLanguage-Team: Lithuanian (Lithuania) (https://www.transifex.com/nextcloud/teams/64236/lt_LT/)\\nContent-Type: text/plain; charset=UTF-8\\nLanguage: lt_LT\\nPlural-Forms: nplurals=4; plural=(n % 10 == 1 && (n % 100 > 19 || n % 100 < 11) ? 0 : (n % 10 >= 2 && n % 10 <=9) && (n % 100 > 19 || n % 100 < 11) ? 1 : n % 1 != 0 ? 2: 3);\\n\"] }, \"{estimate} seconds left\": { \"msgid\": \"{estimate} seconds left\", \"msgstr\": [\"\"] }, \"{hours} hours and {minutes} minutes left\": { \"msgid\": \"{hours} hours and {minutes} minutes left\", \"msgstr\": [\"\"] }, \"{minutes} minutes left\": { \"msgid\": \"{minutes} minutes left\", \"msgstr\": [\"\"] }, \"a few seconds left\": { \"msgid\": \"a few seconds left\", \"msgstr\": [\"\"] }, \"Add\": { \"msgid\": \"Add\", \"msgstr\": [\"\"] }, \"Cancel uploads\": { \"msgid\": \"Cancel uploads\", \"msgstr\": [\"\"] }, \"estimating time left\": { \"msgid\": \"estimating time left\", \"msgstr\": [\"\"] }, \"paused\": { \"msgid\": \"paused\", \"msgstr\": [\"\"] } } } } }, { \"locale\": \"lv\", \"json\": { \"charset\": \"utf-8\", \"headers\": { \"Last-Translator\": \"Edgars Andersons, 2025\", \"Language-Team\": \"Latvian (https://app.transifex.com/nextcloud/teams/64236/lv/)\", \"Content-Type\": \"text/plain; charset=UTF-8\", \"Language\": \"lv\", \"Plural-Forms\": \"nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n != 0 ? 1 : 2);\" }, \"translations\": { \"\": { \"\": { \"msgid\": \"\", \"comments\": { \"translator\": \"\\nTranslators:\\nPapuass , 2024\\nArmīns Jeltajevs , 2024\\nEdgars Andersons, 2025\\n\" }, \"msgstr\": [\"Last-Translator: Edgars Andersons, 2025\\nLanguage-Team: Latvian (https://app.transifex.com/nextcloud/teams/64236/lv/)\\nContent-Type: text/plain; charset=UTF-8\\nLanguage: lv\\nPlural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n != 0 ? 1 : 2);\\n\"] }, '\"{segment}\" is a forbidden file or folder name.': { \"msgid\": '\"{segment}\" is a forbidden file or folder name.', \"msgstr\": ['\"{segment}\" ir aizliegts datnes vai mapes nosaukums.'] }, '\"{segment}\" is a forbidden file type.': { \"msgid\": '\"{segment}\" is a forbidden file type.', \"msgstr\": ['\"{segment}\" ir aizliegts datnes veids.'] }, '\"{segment}\" is not allowed inside a file or folder name.': { \"msgid\": '\"{segment}\" is not allowed inside a file or folder name.', \"msgstr\": ['\"{segment}\" ir nav ļauts datnes vai mapes nosaukumā.'] }, \"{count} file conflict\": { \"msgid\": \"{count} file conflict\", \"msgid_plural\": \"{count} files conflict\", \"msgstr\": [\"{count} nesaderīgu datņu\", \"{count} nesaderīga datne\", \"{count} nesaderīgas datnes\"] }, \"{count} file conflict in {dirname}\": { \"msgid\": \"{count} file conflict in {dirname}\", \"msgid_plural\": \"{count} file conflicts in {dirname}\", \"msgstr\": [\"{count} nesaderīgu datņu {dirname}\", \"{count} nesaderīga datne {dirname}\", \"{count} nesaderīgas datnes {dirname}\"] }, \"{seconds} seconds left\": { \"msgid\": \"{seconds} seconds left\", \"msgid_plural\": \"{seconds} seconds left\", \"msgstr\": [\"Atlikušas {seconds} sekundes\", \"Atlikusi {seconds} sekunde\", \"Atlikušas {seconds} sekundes\"] }, \"{time} left\": { \"msgid\": \"{time} left\", \"comments\": { \"extracted\": \"TRANSLATORS time has the format 00:00:00\" }, \"msgstr\": [\"atlicis {time}\"] }, \"a few seconds left\": { \"msgid\": \"a few seconds left\", \"msgstr\": [\"atlikušas dažas sekundes\"] }, \"assembling\": { \"msgid\": \"assembling\", \"msgstr\": [\"sakopo\"] }, \"Cancel\": { \"msgid\": \"Cancel\", \"msgstr\": [\"Atcelt\"] }, \"Cancel the entire operation\": { \"msgid\": \"Cancel the entire operation\", \"msgstr\": [\"Atcelt visu darbību\"] }, \"Cancel uploads\": { \"msgid\": \"Cancel uploads\", \"msgstr\": [\"Atcelt augšupielādes\"] }, \"Continue\": { \"msgid\": \"Continue\", \"msgstr\": [\"Turpināt\"] }, \"Create new\": { \"msgid\": \"Create new\", \"msgstr\": [\"Izveidot jaunu\"] }, \"estimating time left\": { \"msgid\": \"estimating time left\", \"msgstr\": [\"paredzamais atlikušais laiks\"] }, \"Existing version\": { \"msgid\": \"Existing version\", \"msgstr\": [\"Esošā versija\"] }, \"Failed to assemble the chunks together\": { \"msgid\": \"Failed to assemble the chunks together\", \"msgstr\": [\"Neizdevās apvienot gabalus\"] }, \"Failed to upload the file\": { \"msgid\": \"Failed to upload the file\", \"msgstr\": [\"Neizdevās augšupielādēt datni\"] }, 'Filenames must not end with \"{segment}\".': { \"msgid\": 'Filenames must not end with \"{segment}\".', \"msgstr\": ['Datnes nosaukumi nedrīkst beigties ar \"{segment}\".'] }, \"If you select both versions, the incoming file will have a number added to its name.\": { \"msgid\": \"If you select both versions, the incoming file will have a number added to its name.\", \"msgstr\": [\"Ja atlasa abas versijas, ienākošās datnes nosaukumam tiks pievienots skaitlis.\"] }, \"Invalid filename\": { \"msgid\": \"Invalid filename\", \"msgstr\": [\"Nederīgs datnes nosaukums\"] }, \"Last modified date unknown\": { \"msgid\": \"Last modified date unknown\", \"msgstr\": [\"Pēdējais izmainīšanas datums nav zināms\"] }, \"New\": { \"msgid\": \"New\", \"msgstr\": [\"Jauns\"] }, \"New filename\": { \"msgid\": \"New filename\", \"msgstr\": [\"Jauns datnes nosaukums\"] }, \"New version\": { \"msgid\": \"New version\", \"msgstr\": [\"Jauna versija\"] }, \"paused\": { \"msgid\": \"paused\", \"msgstr\": [\"apturēta\"] }, \"Preview image\": { \"msgid\": \"Preview image\", \"msgstr\": [\"Priekšskatīt attēlu\"] }, \"Rename\": { \"msgid\": \"Rename\", \"msgstr\": [\"Pārdēvēt\"] }, \"Select all checkboxes\": { \"msgid\": \"Select all checkboxes\", \"msgstr\": [\"Atlasīt visas izvēles rūtiņas\"] }, \"Select all existing files\": { \"msgid\": \"Select all existing files\", \"msgstr\": [\"Atlasīt visas esošās datnes\"] }, \"Select all new files\": { \"msgid\": \"Select all new files\", \"msgstr\": [\"Atlasīt visas jaunās datnes\"] }, \"Skip\": { \"msgid\": \"Skip\", \"msgstr\": [\"Izlaist\"] }, \"Skip {count} file\": { \"msgid\": \"Skip {count} file\", \"msgid_plural\": \"Skip {count} files\", \"msgstr\": [\"Izlaist {count} datņu\", \"Izlaist {count} datni\", \"Izlaist {count} datnes\"] }, \"Skip this file\": { \"msgid\": \"Skip this file\", \"msgstr\": [\"Izlaist šo datni\"] }, \"Unknown size\": { \"msgid\": \"Unknown size\", \"msgstr\": [\"Nezināms izmērs\"] }, \"Upload\": { \"msgid\": \"Upload\", \"msgstr\": [\"Augšupielādēt\"] }, \"Upload files\": { \"msgid\": \"Upload files\", \"msgstr\": [\"Augšupielādēt datnes\"] }, \"Upload folders\": { \"msgid\": \"Upload folders\", \"msgstr\": [\"Augšupielādēt mapes\"] }, \"Upload from device\": { \"msgid\": \"Upload from device\", \"msgstr\": [\"Augšupielādēt no ierīces\"] }, \"Upload has been cancelled\": { \"msgid\": \"Upload has been cancelled\", \"msgstr\": [\"Augšupielāde tika atcelta\"] }, \"Upload has been skipped\": { \"msgid\": \"Upload has been skipped\", \"msgstr\": [\"Augšupielāde tika izlaista\"] }, 'Upload of \"{folder}\" has been skipped': { \"msgid\": 'Upload of \"{folder}\" has been skipped', \"msgstr\": ['\"{folder}\" augšupielāde tika izlaista'] }, \"Upload progress\": { \"msgid\": \"Upload progress\", \"msgstr\": [\"Augšupielādes virzība\"] }, \"When an incoming folder is selected, any conflicting files within it will also be overwritten.\": { \"msgid\": \"When an incoming folder is selected, any conflicting files within it will also be overwritten.\", \"msgstr\": [\"Kad ir atlasīta ienākošā mape, tiks pārrakstītas arī jebkuras tajā esošās nesaderīgās datnes.\"] }, \"When an incoming folder is selected, the content is written into the existing folder and a recursive conflict resolution is performed.\": { \"msgid\": \"When an incoming folder is selected, the content is written into the existing folder and a recursive conflict resolution is performed.\", \"msgstr\": [\"Kad ir atlasīta ienākošā mape, saturs tiks rakstīts esošajā mapē, un tiks veikta rekursīva nesaderību novēršana.\"] }, \"Which files do you want to keep?\": { \"msgid\": \"Which files do you want to keep?\", \"msgstr\": [\"Kuras datnes paturēt?\"] }, \"You can either rename the file, skip this file or cancel the whole operation.\": { \"msgid\": \"You can either rename the file, skip this file or cancel the whole operation.\", \"msgstr\": [\"Datni var vai nu pārdēvēt, vai izlaist vai atcelt visu darbību.\"] }, \"You need to select at least one version of each file to continue.\": { \"msgid\": \"You need to select at least one version of each file to continue.\", \"msgstr\": [\"Ir nepieciešams atlasīt vismaz vienu katras datnes versiju, lai turpinātu.\"] } } } } }, { \"locale\": \"mk\", \"json\": { \"charset\": \"utf-8\", \"headers\": { \"Last-Translator\": \"Сашко Тодоров , 2025\", \"Language-Team\": \"Macedonian (https://app.transifex.com/nextcloud/teams/64236/mk/)\", \"Content-Type\": \"text/plain; charset=UTF-8\", \"Language\": \"mk\", \"Plural-Forms\": \"nplurals=2; plural=(n % 10 == 1 && n % 100 != 11) ? 0 : 1;\" }, \"translations\": { \"\": { \"\": { \"msgid\": \"\", \"comments\": { \"translator\": \"\\nTranslators:\\nJoas Schilling, 2024\\nСашко Тодоров , 2025\\n\" }, \"msgstr\": [\"Last-Translator: Сашко Тодоров , 2025\\nLanguage-Team: Macedonian (https://app.transifex.com/nextcloud/teams/64236/mk/)\\nContent-Type: text/plain; charset=UTF-8\\nLanguage: mk\\nPlural-Forms: nplurals=2; plural=(n % 10 == 1 && n % 100 != 11) ? 0 : 1;\\n\"] }, '\"{segment}\" is a forbidden file or folder name.': { \"msgid\": '\"{segment}\" is a forbidden file or folder name.', \"msgstr\": ['\"{segment}\" е забрането име на датотека или име на папка.'] }, '\"{segment}\" is a forbidden file type.': { \"msgid\": '\"{segment}\" is a forbidden file type.', \"msgstr\": ['\"{segment}\" е забранет вид на датотека.'] }, '\"{segment}\" is not allowed inside a file or folder name.': { \"msgid\": '\"{segment}\" is not allowed inside a file or folder name.', \"msgstr\": ['\"{segment}\" не е дозволено во името датотека или папка.'] }, \"{count} file conflict\": { \"msgid\": \"{count} file conflict\", \"msgid_plural\": \"{count} files conflict\", \"msgstr\": [\"{count} конфликт со датотека\", \"{count} конфликти со датотеки\"] }, \"{count} file conflict in {dirname}\": { \"msgid\": \"{count} file conflict in {dirname}\", \"msgid_plural\": \"{count} file conflicts in {dirname}\", \"msgstr\": [\"{count} конфликт со датотека во {dirname}\", \"{count} конфликти на датотеки во {dirname}\"] }, \"{seconds} seconds left\": { \"msgid\": \"{seconds} seconds left\", \"msgid_plural\": \"{seconds} seconds left\", \"msgstr\": [\"уште {seconds} секунда\", \"уште {seconds} секунди\"] }, \"{time} left\": { \"msgid\": \"{time} left\", \"comments\": { \"extracted\": \"TRANSLATORS time has the format 00:00:00\" }, \"msgstr\": [\"преостанува {time}\"] }, \"a few seconds left\": { \"msgid\": \"a few seconds left\", \"msgstr\": [\"уште неколку секунди\"] }, \"assembling\": { \"msgid\": \"assembling\", \"msgstr\": [\"склопување\"] }, \"Cancel\": { \"msgid\": \"Cancel\", \"msgstr\": [\"Откажи\"] }, \"Cancel the entire operation\": { \"msgid\": \"Cancel the entire operation\", \"msgstr\": [\"Откажи ја целата операција\"] }, \"Cancel uploads\": { \"msgid\": \"Cancel uploads\", \"msgstr\": [\"Прекини прикачување\"] }, \"Continue\": { \"msgid\": \"Continue\", \"msgstr\": [\"Продолжи\"] }, \"Create new\": { \"msgid\": \"Create new\", \"msgstr\": [\"Креирај нова\"] }, \"estimating time left\": { \"msgid\": \"estimating time left\", \"msgstr\": [\"приближно преостанато време\"] }, \"Existing version\": { \"msgid\": \"Existing version\", \"msgstr\": [\"Постоечка верзија\"] }, \"Failed to assemble the chunks together\": { \"msgid\": \"Failed to assemble the chunks together\", \"msgstr\": [\"Неуспешно составување на парчињата заедно\"] }, \"Failed to upload the file\": { \"msgid\": \"Failed to upload the file\", \"msgstr\": [\"Неуспешно прикачување на датотека\"] }, 'Filenames must not end with \"{segment}\".': { \"msgid\": 'Filenames must not end with \"{segment}\".', \"msgstr\": ['Имињата на датотеките не смеат да завршуваат со \"{segment}\".'] }, \"If you select both versions, the incoming file will have a number added to its name.\": { \"msgid\": \"If you select both versions, the incoming file will have a number added to its name.\", \"msgstr\": [\"Ако ги изберете двете верзии, на новата датотека ќе ѝ биде додаден број на името.\"] }, \"Invalid filename\": { \"msgid\": \"Invalid filename\", \"msgstr\": [\"Невалидно име на датотека\"] }, \"Last modified date unknown\": { \"msgid\": \"Last modified date unknown\", \"msgstr\": [\"Непознат датумот на последната измена\"] }, \"New\": { \"msgid\": \"New\", \"msgstr\": [\"Нова\"] }, \"New filename\": { \"msgid\": \"New filename\", \"msgstr\": [\"Ново име на датотека\"] }, \"New version\": { \"msgid\": \"New version\", \"msgstr\": [\"Нова верзија\"] }, \"paused\": { \"msgid\": \"paused\", \"msgstr\": [\"паузирано\"] }, \"Preview image\": { \"msgid\": \"Preview image\", \"msgstr\": [\"Преглед на слика\"] }, \"Rename\": { \"msgid\": \"Rename\", \"msgstr\": [\"Преименувај\"] }, \"Select all checkboxes\": { \"msgid\": \"Select all checkboxes\", \"msgstr\": [\"Означи ги сите полиња\"] }, \"Select all existing files\": { \"msgid\": \"Select all existing files\", \"msgstr\": [\"Избери ги сите постоечки датотеки\"] }, \"Select all new files\": { \"msgid\": \"Select all new files\", \"msgstr\": [\"Избери ги сите нови датотеки\"] }, \"Skip\": { \"msgid\": \"Skip\", \"msgstr\": [\"Прескокни\"] }, \"Skip {count} file\": { \"msgid\": \"Skip {count} file\", \"msgid_plural\": \"Skip {count} files\", \"msgstr\": [\"Прескокни {count} датотека\", \"Прескокни {count} датотеки\"] }, \"Skip this file\": { \"msgid\": \"Skip this file\", \"msgstr\": [\"Прескокни ја оваа датотека\"] }, \"Unknown size\": { \"msgid\": \"Unknown size\", \"msgstr\": [\"Непозната големина\"] }, \"Upload\": { \"msgid\": \"Upload\", \"msgstr\": [\"Прикачи\"] }, \"Upload files\": { \"msgid\": \"Upload files\", \"msgstr\": [\"Прикачување датотеки\"] }, \"Upload folders\": { \"msgid\": \"Upload folders\", \"msgstr\": [\"Прикачи папки\"] }, \"Upload from device\": { \"msgid\": \"Upload from device\", \"msgstr\": [\"Прикачи од уред\"] }, \"Upload has been cancelled\": { \"msgid\": \"Upload has been cancelled\", \"msgstr\": [\"Прикачувањето е откажано\"] }, \"Upload has been skipped\": { \"msgid\": \"Upload has been skipped\", \"msgstr\": [\"Прикачувањето е прескокнато\"] }, 'Upload of \"{folder}\" has been skipped': { \"msgid\": 'Upload of \"{folder}\" has been skipped', \"msgstr\": ['Прикачувањето на \"{folder}\" е прескокнато'] }, \"Upload progress\": { \"msgid\": \"Upload progress\", \"msgstr\": [\"Прогрес на прикачување\"] }, \"When an incoming folder is selected, any conflicting files within it will also be overwritten.\": { \"msgid\": \"When an incoming folder is selected, any conflicting files within it will also be overwritten.\", \"msgstr\": [\"Кога ќе се избере дојдовна папка, сите конфликтни датотеки во неа исто така ќе бидат пребришани.\"] }, \"When an incoming folder is selected, the content is written into the existing folder and a recursive conflict resolution is performed.\": { \"msgid\": \"When an incoming folder is selected, the content is written into the existing folder and a recursive conflict resolution is performed.\", \"msgstr\": [\"Кога ќе се избере дојдовна папка, содржината се запишува во постоечката папка и се извршува рекурзивно решавање на конфликтот.\"] }, \"Which files do you want to keep?\": { \"msgid\": \"Which files do you want to keep?\", \"msgstr\": [\"Кој датотеки сакате да ги зачвате?\"] }, \"You can either rename the file, skip this file or cancel the whole operation.\": { \"msgid\": \"You can either rename the file, skip this file or cancel the whole operation.\", \"msgstr\": [\"Можете да ја преименувате датотеката, да ја прескокнете датотека или да ја откажете целата операција.\"] }, \"You need to select at least one version of each file to continue.\": { \"msgid\": \"You need to select at least one version of each file to continue.\", \"msgstr\": [\"Треба да изберете барем една верзија од секоја датотека за да продолжите.\"] } } } } }, { \"locale\": \"mn\", \"json\": { \"charset\": \"utf-8\", \"headers\": { \"Last-Translator\": \"BATKHUYAG Ganbold, 2023\", \"Language-Team\": \"Mongolian (https://app.transifex.com/nextcloud/teams/64236/mn/)\", \"Content-Type\": \"text/plain; charset=UTF-8\", \"Language\": \"mn\", \"Plural-Forms\": \"nplurals=2; plural=(n != 1);\" }, \"translations\": { \"\": { \"\": { \"msgid\": \"\", \"comments\": { \"translator\": \"\\nTranslators:\\nBATKHUYAG Ganbold, 2023\\n\" }, \"msgstr\": [\"Last-Translator: BATKHUYAG Ganbold, 2023\\nLanguage-Team: Mongolian (https://app.transifex.com/nextcloud/teams/64236/mn/)\\nContent-Type: text/plain; charset=UTF-8\\nLanguage: mn\\nPlural-Forms: nplurals=2; plural=(n != 1);\\n\"] }, \"{seconds} seconds left\": { \"msgid\": \"{seconds} seconds left\", \"msgstr\": [\"{seconds} секунд үлдсэн\"] }, \"{time} left\": { \"msgid\": \"{time} left\", \"comments\": { \"extracted\": \"time has the format 00:00:00\" }, \"msgstr\": [\"{time} үлдсэн\"] }, \"a few seconds left\": { \"msgid\": \"a few seconds left\", \"msgstr\": [\"хэдхэн секунд үлдсэн\"] }, \"Add\": { \"msgid\": \"Add\", \"msgstr\": [\"Нэмэх\"] }, \"Cancel uploads\": { \"msgid\": \"Cancel uploads\", \"msgstr\": [\"Илгээлтийг цуцлах\"] }, \"estimating time left\": { \"msgid\": \"estimating time left\", \"msgstr\": [\"Үлдсэн хугацааг тооцоолж байна\"] }, \"paused\": { \"msgid\": \"paused\", \"msgstr\": [\"түр зогсоосон\"] }, \"Upload files\": { \"msgid\": \"Upload files\", \"msgstr\": [\"Файл илгээх\"] } } } } }, { \"locale\": \"mr\", \"json\": { \"charset\": \"utf-8\", \"headers\": { \"Last-Translator\": \"Transifex Bot <>, 2022\", \"Language-Team\": \"Marathi (https://www.transifex.com/nextcloud/teams/64236/mr/)\", \"Content-Type\": \"text/plain; charset=UTF-8\", \"Language\": \"mr\", \"Plural-Forms\": \"nplurals=2; plural=(n != 1);\" }, \"translations\": { \"\": { \"\": { \"msgid\": \"\", \"comments\": { \"translator\": \"\\nTranslators:\\nTransifex Bot <>, 2022\\n\" }, \"msgstr\": [\"Last-Translator: Transifex Bot <>, 2022\\nLanguage-Team: Marathi (https://www.transifex.com/nextcloud/teams/64236/mr/)\\nContent-Type: text/plain; charset=UTF-8\\nLanguage: mr\\nPlural-Forms: nplurals=2; plural=(n != 1);\\n\"] }, \"{estimate} seconds left\": { \"msgid\": \"{estimate} seconds left\", \"msgstr\": [\"\"] }, \"{hours} hours and {minutes} minutes left\": { \"msgid\": \"{hours} hours and {minutes} minutes left\", \"msgstr\": [\"\"] }, \"{minutes} minutes left\": { \"msgid\": \"{minutes} minutes left\", \"msgstr\": [\"\"] }, \"a few seconds left\": { \"msgid\": \"a few seconds left\", \"msgstr\": [\"\"] }, \"Add\": { \"msgid\": \"Add\", \"msgstr\": [\"\"] }, \"Cancel uploads\": { \"msgid\": \"Cancel uploads\", \"msgstr\": [\"\"] }, \"estimating time left\": { \"msgid\": \"estimating time left\", \"msgstr\": [\"\"] }, \"paused\": { \"msgid\": \"paused\", \"msgstr\": [\"\"] } } } } }, { \"locale\": \"ms_MY\", \"json\": { \"charset\": \"utf-8\", \"headers\": { \"Last-Translator\": \"DT Navy, 2024\", \"Language-Team\": \"Malay (Malaysia) (https://app.transifex.com/nextcloud/teams/64236/ms_MY/)\", \"Content-Type\": \"text/plain; charset=UTF-8\", \"Language\": \"ms_MY\", \"Plural-Forms\": \"nplurals=1; plural=0;\" }, \"translations\": { \"\": { \"\": { \"msgid\": \"\", \"comments\": { \"translator\": \"\\nTranslators:\\nDT Navy, 2024\\n\" }, \"msgstr\": [\"Last-Translator: DT Navy, 2024\\nLanguage-Team: Malay (Malaysia) (https://app.transifex.com/nextcloud/teams/64236/ms_MY/)\\nContent-Type: text/plain; charset=UTF-8\\nLanguage: ms_MY\\nPlural-Forms: nplurals=1; plural=0;\\n\"] }, '\"{segment}\" is a forbidden file or folder name.': { \"msgid\": '\"{segment}\" is a forbidden file or folder name.', \"msgstr\": ['\"{segment}\" adalah fail dan nama folder yang dilarang'] }, '\"{segment}\" is a forbidden file type.': { \"msgid\": '\"{segment}\" is a forbidden file type.', \"msgstr\": ['\"{segment}\" adalah jenis fail yang dilarang'] }, '\"{segment}\" is not allowed inside a file or folder name.': { \"msgid\": '\"{segment}\" is not allowed inside a file or folder name.', \"msgstr\": ['\"{segment}\" adalah tidak dibenarkan dalam nama fail atau folder'] }, \"{count} file conflict\": { \"msgid\": \"{count} file conflict\", \"msgid_plural\": \"{count} files conflict\", \"msgstr\": [\"{count} files bertindih\"] }, \"{count} file conflict in {dirname}\": { \"msgid\": \"{count} file conflict in {dirname}\", \"msgid_plural\": \"{count} file conflicts in {dirname}\", \"msgstr\": [\"{count} fail bertindih dalam {dirname}\"] }, \"{seconds} seconds left\": { \"msgid\": \"{seconds} seconds left\", \"msgstr\": [\"{seconds} saat tinggal\"] }, \"{time} left\": { \"msgid\": \"{time} left\", \"comments\": { \"extracted\": \"TRANSLATORS time has the format 00:00:00\" }, \"msgstr\": [\"{time} tinggal\"] }, \"a few seconds left\": { \"msgid\": \"a few seconds left\", \"msgstr\": [\"beberapa saat lagi\"] }, \"Cancel\": { \"msgid\": \"Cancel\", \"msgstr\": [\"batal\"] }, \"Cancel the entire operation\": { \"msgid\": \"Cancel the entire operation\", \"msgstr\": [\"Batal keseluruhan operasi\"] }, \"Cancel uploads\": { \"msgid\": \"Cancel uploads\", \"msgstr\": [\"batal muat naik\"] }, \"Continue\": { \"msgid\": \"Continue\", \"msgstr\": [\"teruskan\"] }, \"Create new\": { \"msgid\": \"Create new\", \"msgstr\": [\"Buat baharu\"] }, \"estimating time left\": { \"msgid\": \"estimating time left\", \"msgstr\": [\"jangkaan masa tinggal\"] }, \"Existing version\": { \"msgid\": \"Existing version\", \"msgstr\": [\"versi sedia ada\"] }, 'Filenames must not end with \"{segment}\".': { \"msgid\": 'Filenames must not end with \"{segment}\".', \"msgstr\": ['Nama fail tidak boleh berakhir dengan \"{segment}\".'] }, \"If you select both versions, the incoming file will have a number added to its name.\": { \"msgid\": \"If you select both versions, the incoming file will have a number added to its name.\", \"msgstr\": [\"Jika dua versi dipilih, fail yang masuk akan ditambah bilangan pada namanya.\"] }, \"Invalid filename\": { \"msgid\": \"Invalid filename\", \"msgstr\": [\"Nama fail tidak sah\"] }, \"Last modified date unknown\": { \"msgid\": \"Last modified date unknown\", \"msgstr\": [\"Tarikh terakhir diubah suai tidak diketahui\"] }, \"New\": { \"msgid\": \"New\", \"msgstr\": [\"Baru\"] }, \"New filename\": { \"msgid\": \"New filename\", \"msgstr\": [\"Nama fail baharu\"] }, \"New version\": { \"msgid\": \"New version\", \"msgstr\": [\"Versi baharu\"] }, \"paused\": { \"msgid\": \"paused\", \"msgstr\": [\"Jeda\"] }, \"Preview image\": { \"msgid\": \"Preview image\", \"msgstr\": [\"Pratonton gambar\"] }, \"Rename\": { \"msgid\": \"Rename\", \"msgstr\": [\"Menamakan semula\"] }, \"Select all checkboxes\": { \"msgid\": \"Select all checkboxes\", \"msgstr\": [\"Pilih semua kotak pilihan\"] }, \"Select all existing files\": { \"msgid\": \"Select all existing files\", \"msgstr\": [\"Pilih semua fail yang wujud\"] }, \"Select all new files\": { \"msgid\": \"Select all new files\", \"msgstr\": [\"pilih semua fail baharu\"] }, \"Skip\": { \"msgid\": \"Skip\", \"msgstr\": [\"Langkau\"] }, \"Skip this file\": { \"msgid\": \"Skip this file\", \"msgid_plural\": \"Skip {count} files\", \"msgstr\": [\"Langkau fail {count}\"] }, \"Unknown size\": { \"msgid\": \"Unknown size\", \"msgstr\": [\"Saiz tidak diketahui\"] }, \"Upload\": { \"msgid\": \"Upload\", \"msgstr\": [\"Muat naik\"] }, \"Upload files\": { \"msgid\": \"Upload files\", \"msgstr\": [\"Muat naik fail\"] }, \"Upload folders\": { \"msgid\": \"Upload folders\", \"msgstr\": [\"Muat naik folder\"] }, \"Upload from device\": { \"msgid\": \"Upload from device\", \"msgstr\": [\"Muat naik dari peranti\"] }, \"Upload has been cancelled\": { \"msgid\": \"Upload has been cancelled\", \"msgstr\": [\"Muat naik telah dibatalkan\"] }, \"Upload has been skipped\": { \"msgid\": \"Upload has been skipped\", \"msgstr\": [\"Muat naik telah dilangkau\"] }, 'Upload of \"{folder}\" has been skipped': { \"msgid\": 'Upload of \"{folder}\" has been skipped', \"msgstr\": ['Muat naik \"{folder}\" telah dilangkau'] }, \"Upload progress\": { \"msgid\": \"Upload progress\", \"msgstr\": [\"Kemajuan muat naik\"] }, \"When an incoming folder is selected, any conflicting files within it will also be overwritten.\": { \"msgid\": \"When an incoming folder is selected, any conflicting files within it will also be overwritten.\", \"msgstr\": [\"Apabila folder masuk dipilih, sebarang fail bertindih akan ditulis semula\"] }, \"When an incoming folder is selected, the content is written into the existing folder and a recursive conflict resolution is performed.\": { \"msgid\": \"When an incoming folder is selected, the content is written into the existing folder and a recursive conflict resolution is performed.\", \"msgstr\": [\"Apabila folder masuk dipilih, kandungan ditulis ke dalam folder sedia ada dan penyelesaian konflik rekursif dilakukan.\"] }, \"Which files do you want to keep?\": { \"msgid\": \"Which files do you want to keep?\", \"msgstr\": [\"Fail yang mana ingin disimpan?\"] }, \"You can either rename the file, skip this file or cancel the whole operation.\": { \"msgid\": \"You can either rename the file, skip this file or cancel the whole operation.\", \"msgstr\": [\"And boleh menamakan semula fail, langkau fail tersebut atau membatalkan keseluruhan operasi\"] }, \"You need to select at least one version of each file to continue.\": { \"msgid\": \"You need to select at least one version of each file to continue.\", \"msgstr\": [\"Anda perlu memilih sekurangnya satu versi setiap fail untuk teruskan\"] } } } } }, { \"locale\": \"my\", \"json\": { \"charset\": \"utf-8\", \"headers\": { \"Last-Translator\": \"Transifex Bot <>, 2022\", \"Language-Team\": \"Burmese (https://www.transifex.com/nextcloud/teams/64236/my/)\", \"Content-Type\": \"text/plain; charset=UTF-8\", \"Language\": \"my\", \"Plural-Forms\": \"nplurals=1; plural=0;\" }, \"translations\": { \"\": { \"\": { \"msgid\": \"\", \"comments\": { \"translator\": \"\\nTranslators:\\nTransifex Bot <>, 2022\\n\" }, \"msgstr\": [\"Last-Translator: Transifex Bot <>, 2022\\nLanguage-Team: Burmese (https://www.transifex.com/nextcloud/teams/64236/my/)\\nContent-Type: text/plain; charset=UTF-8\\nLanguage: my\\nPlural-Forms: nplurals=1; plural=0;\\n\"] }, \"{estimate} seconds left\": { \"msgid\": \"{estimate} seconds left\", \"msgstr\": [\"\"] }, \"{hours} hours and {minutes} minutes left\": { \"msgid\": \"{hours} hours and {minutes} minutes left\", \"msgstr\": [\"\"] }, \"{minutes} minutes left\": { \"msgid\": \"{minutes} minutes left\", \"msgstr\": [\"\"] }, \"a few seconds left\": { \"msgid\": \"a few seconds left\", \"msgstr\": [\"\"] }, \"Add\": { \"msgid\": \"Add\", \"msgstr\": [\"\"] }, \"Cancel uploads\": { \"msgid\": \"Cancel uploads\", \"msgstr\": [\"\"] }, \"estimating time left\": { \"msgid\": \"estimating time left\", \"msgstr\": [\"\"] }, \"paused\": { \"msgid\": \"paused\", \"msgstr\": [\"\"] } } } } }, { \"locale\": \"nb\", \"json\": { \"charset\": \"utf-8\", \"headers\": { \"Last-Translator\": \"Roger Knutsen, 2024\", \"Language-Team\": \"Norwegian Bokmål (Norway) (https://app.transifex.com/nextcloud/teams/64236/nb_NO/)\", \"Content-Type\": \"text/plain; charset=UTF-8\", \"Language\": \"nb_NO\", \"Plural-Forms\": \"nplurals=2; plural=(n != 1);\" }, \"translations\": { \"\": { \"\": { \"msgid\": \"\", \"comments\": { \"translator\": \"\\nTranslators:\\nJoas Schilling, 2024\\nRoger Knutsen, 2024\\n\" }, \"msgstr\": [\"Last-Translator: Roger Knutsen, 2024\\nLanguage-Team: Norwegian Bokmål (Norway) (https://app.transifex.com/nextcloud/teams/64236/nb_NO/)\\nContent-Type: text/plain; charset=UTF-8\\nLanguage: nb_NO\\nPlural-Forms: nplurals=2; plural=(n != 1);\\n\"] }, '\"{segment}\" is a forbidden file or folder name.': { \"msgid\": '\"{segment}\" is a forbidden file or folder name.', \"msgstr\": ['\"{segment}\" er et forbudt fil- eller mappenavn.'] }, '\"{segment}\" is a forbidden file type.': { \"msgid\": '\"{segment}\" is a forbidden file type.', \"msgstr\": ['\"{segment}\" er en forbudt filtype.'] }, '\"{segment}\" is not allowed inside a file or folder name.': { \"msgid\": '\"{segment}\" is not allowed inside a file or folder name.', \"msgstr\": ['\"{segment}\" er ikke tillatt i et fil- eller mappenavn.'] }, \"{count} file conflict\": { \"msgid\": \"{count} file conflict\", \"msgid_plural\": \"{count} files conflict\", \"msgstr\": [\"{count} file conflict\", \"{count} filkonflikter\"] }, \"{count} file conflict in {dirname}\": { \"msgid\": \"{count} file conflict in {dirname}\", \"msgid_plural\": \"{count} file conflicts in {dirname}\", \"msgstr\": [\"{count} file conflict in {dirname}\", \"{count} filkonflikter i {dirname}\"] }, \"{seconds} seconds left\": { \"msgid\": \"{seconds} seconds left\", \"msgstr\": [\"{seconds} sekunder igjen\"] }, \"{time} left\": { \"msgid\": \"{time} left\", \"comments\": { \"extracted\": \"TRANSLATORS time has the format 00:00:00\" }, \"msgstr\": [\"{time} igjen\"] }, \"a few seconds left\": { \"msgid\": \"a few seconds left\", \"msgstr\": [\"noen få sekunder igjen\"] }, \"Cancel\": { \"msgid\": \"Cancel\", \"msgstr\": [\"Avbryt\"] }, \"Cancel the entire operation\": { \"msgid\": \"Cancel the entire operation\", \"msgstr\": [\"Avbryt hele operasjonen\"] }, \"Cancel uploads\": { \"msgid\": \"Cancel uploads\", \"msgstr\": [\"Avbryt opplastninger\"] }, \"Continue\": { \"msgid\": \"Continue\", \"msgstr\": [\"Fortsett\"] }, \"Create new\": { \"msgid\": \"Create new\", \"msgstr\": [\"Opprett ny\"] }, \"estimating time left\": { \"msgid\": \"estimating time left\", \"msgstr\": [\"Estimerer tid igjen\"] }, \"Existing version\": { \"msgid\": \"Existing version\", \"msgstr\": [\"Gjeldende versjon\"] }, 'Filenames must not end with \"{segment}\".': { \"msgid\": 'Filenames must not end with \"{segment}\".', \"msgstr\": ['Filnavn må ikke slutte med \"{segment}\".'] }, \"If you select both versions, the incoming file will have a number added to its name.\": { \"msgid\": \"If you select both versions, the incoming file will have a number added to its name.\", \"msgstr\": [\"Hvis du velger begge versjonene, vil den innkommende filen ha et nummer lagt til navnet.\"] }, \"Invalid filename\": { \"msgid\": \"Invalid filename\", \"msgstr\": [\"Ugyldig filnavn\"] }, \"Last modified date unknown\": { \"msgid\": \"Last modified date unknown\", \"msgstr\": [\"Siste gang redigert ukjent\"] }, \"New\": { \"msgid\": \"New\", \"msgstr\": [\"Ny\"] }, \"New filename\": { \"msgid\": \"New filename\", \"msgstr\": [\"Nytt filnavn\"] }, \"New version\": { \"msgid\": \"New version\", \"msgstr\": [\"Ny versjon\"] }, \"paused\": { \"msgid\": \"paused\", \"msgstr\": [\"pauset\"] }, \"Preview image\": { \"msgid\": \"Preview image\", \"msgstr\": [\"Forhåndsvis bilde\"] }, \"Rename\": { \"msgid\": \"Rename\", \"msgstr\": [\"Omdøp\"] }, \"Select all checkboxes\": { \"msgid\": \"Select all checkboxes\", \"msgstr\": [\"Velg alle\"] }, \"Select all existing files\": { \"msgid\": \"Select all existing files\", \"msgstr\": [\"Velg alle eksisterende filer\"] }, \"Select all new files\": { \"msgid\": \"Select all new files\", \"msgstr\": [\"Velg alle nye filer\"] }, \"Skip\": { \"msgid\": \"Skip\", \"msgstr\": [\"Hopp over\"] }, \"Skip this file\": { \"msgid\": \"Skip this file\", \"msgid_plural\": \"Skip {count} files\", \"msgstr\": [\"Skip this file\", \"Hopp over {count} filer\"] }, \"Unknown size\": { \"msgid\": \"Unknown size\", \"msgstr\": [\"Ukjent størrelse\"] }, \"Upload files\": { \"msgid\": \"Upload files\", \"msgstr\": [\"Last opp filer\"] }, \"Upload folders\": { \"msgid\": \"Upload folders\", \"msgstr\": [\"Last opp mapper\"] }, \"Upload from device\": { \"msgid\": \"Upload from device\", \"msgstr\": [\"Last opp fra enhet\"] }, \"Upload has been cancelled\": { \"msgid\": \"Upload has been cancelled\", \"msgstr\": [\"Opplastingen er kansellert\"] }, \"Upload has been skipped\": { \"msgid\": \"Upload has been skipped\", \"msgstr\": [\"Opplastingen er hoppet over\"] }, 'Upload of \"{folder}\" has been skipped': { \"msgid\": 'Upload of \"{folder}\" has been skipped', \"msgstr\": ['Opplasting av \"{folder}\" er hoppet over'] }, \"Upload progress\": { \"msgid\": \"Upload progress\", \"msgstr\": [\"Fremdrift, opplasting\"] }, \"When an incoming folder is selected, any conflicting files within it will also be overwritten.\": { \"msgid\": \"When an incoming folder is selected, any conflicting files within it will also be overwritten.\", \"msgstr\": [\"Når en innkommende mappe velges, blir eventuelle motstridende filer i den også overskrevet.\"] }, \"When an incoming folder is selected, the content is written into the existing folder and a recursive conflict resolution is performed.\": { \"msgid\": \"When an incoming folder is selected, the content is written into the existing folder and a recursive conflict resolution is performed.\", \"msgstr\": [\"Når en innkommende mappe velges, skrives innholdet inn i den eksisterende mappen, og en rekursiv konfliktløsning utføres.\"] }, \"Which files do you want to keep?\": { \"msgid\": \"Which files do you want to keep?\", \"msgstr\": [\"Hvilke filer vil du beholde?\"] }, \"You can either rename the file, skip this file or cancel the whole operation.\": { \"msgid\": \"You can either rename the file, skip this file or cancel the whole operation.\", \"msgstr\": [\"Du kan enten gi nytt navn til filen, hoppe over denne filen eller avbryte hele operasjonen.\"] }, \"You need to select at least one version of each file to continue.\": { \"msgid\": \"You need to select at least one version of each file to continue.\", \"msgstr\": [\"Du må velge minst en versjon av hver fil for å fortsette.\"] } } } } }, { \"locale\": \"ne\", \"json\": { \"charset\": \"utf-8\", \"headers\": { \"Last-Translator\": \"Transifex Bot <>, 2022\", \"Language-Team\": \"Nepali (https://www.transifex.com/nextcloud/teams/64236/ne/)\", \"Content-Type\": \"text/plain; charset=UTF-8\", \"Language\": \"ne\", \"Plural-Forms\": \"nplurals=2; plural=(n != 1);\" }, \"translations\": { \"\": { \"\": { \"msgid\": \"\", \"comments\": { \"translator\": \"\\nTranslators:\\nTransifex Bot <>, 2022\\n\" }, \"msgstr\": [\"Last-Translator: Transifex Bot <>, 2022\\nLanguage-Team: Nepali (https://www.transifex.com/nextcloud/teams/64236/ne/)\\nContent-Type: text/plain; charset=UTF-8\\nLanguage: ne\\nPlural-Forms: nplurals=2; plural=(n != 1);\\n\"] }, \"{estimate} seconds left\": { \"msgid\": \"{estimate} seconds left\", \"msgstr\": [\"\"] }, \"{hours} hours and {minutes} minutes left\": { \"msgid\": \"{hours} hours and {minutes} minutes left\", \"msgstr\": [\"\"] }, \"{minutes} minutes left\": { \"msgid\": \"{minutes} minutes left\", \"msgstr\": [\"\"] }, \"a few seconds left\": { \"msgid\": \"a few seconds left\", \"msgstr\": [\"\"] }, \"Add\": { \"msgid\": \"Add\", \"msgstr\": [\"\"] }, \"Cancel uploads\": { \"msgid\": \"Cancel uploads\", \"msgstr\": [\"\"] }, \"estimating time left\": { \"msgid\": \"estimating time left\", \"msgstr\": [\"\"] }, \"paused\": { \"msgid\": \"paused\", \"msgstr\": [\"\"] } } } } }, { \"locale\": \"nl\", \"json\": { \"charset\": \"utf-8\", \"headers\": { \"Last-Translator\": \"Stephan Paternotte , 2025\", \"Language-Team\": \"Dutch (https://app.transifex.com/nextcloud/teams/64236/nl/)\", \"Content-Type\": \"text/plain; charset=UTF-8\", \"Language\": \"nl\", \"Plural-Forms\": \"nplurals=2; plural=(n != 1);\" }, \"translations\": { \"\": { \"\": { \"msgid\": \"\", \"comments\": { \"translator\": \"\\nTranslators:\\nJoas Schilling, 2024\\nJoris deLeeuw, 2025\\nStephan Paternotte , 2025\\n\" }, \"msgstr\": [\"Last-Translator: Stephan Paternotte , 2025\\nLanguage-Team: Dutch (https://app.transifex.com/nextcloud/teams/64236/nl/)\\nContent-Type: text/plain; charset=UTF-8\\nLanguage: nl\\nPlural-Forms: nplurals=2; plural=(n != 1);\\n\"] }, '\"{segment}\" is a forbidden file or folder name.': { \"msgid\": '\"{segment}\" is a forbidden file or folder name.', \"msgstr\": ['\"{segment}\" is een verboden bestands- of mapnaam.'] }, '\"{segment}\" is a forbidden file type.': { \"msgid\": '\"{segment}\" is a forbidden file type.', \"msgstr\": ['\"{segment}\" is een verboden bestandstype.'] }, '\"{segment}\" is not allowed inside a file or folder name.': { \"msgid\": '\"{segment}\" is not allowed inside a file or folder name.', \"msgstr\": ['\"{segment}\" is niet toegestaan in een bestand of mapnaam.'] }, \"{count} file conflict\": { \"msgid\": \"{count} file conflict\", \"msgid_plural\": \"{count} files conflict\", \"msgstr\": [\"{count} bestandsconflict\", \"{count} bestanden conflicteren\"] }, \"{count} file conflict in {dirname}\": { \"msgid\": \"{count} file conflict in {dirname}\", \"msgid_plural\": \"{count} file conflicts in {dirname}\", \"msgstr\": [\"{count} bestandsconflict in {dirname}\", \"{count} bestandenconflicten in {dirname}\"] }, \"{seconds} seconds left\": { \"msgid\": \"{seconds} seconds left\", \"msgid_plural\": \"{seconds} seconds left\", \"msgstr\": [\"{seconds} seconde resterend\", \"{seconds} seconden resterend\"] }, \"{time} left\": { \"msgid\": \"{time} left\", \"comments\": { \"extracted\": \"TRANSLATORS time has the format 00:00:00\" }, \"msgstr\": [\"{time} resterend\"] }, \"a few seconds left\": { \"msgid\": \"a few seconds left\", \"msgstr\": [\"Nog een paar seconden over\"] }, \"assembling\": { \"msgid\": \"assembling\", \"msgstr\": [\"samenstellen\"] }, \"Cancel\": { \"msgid\": \"Cancel\", \"msgstr\": [\"Annuleren\"] }, \"Cancel the entire operation\": { \"msgid\": \"Cancel the entire operation\", \"msgstr\": [\"De hele bewerking annuleren\"] }, \"Cancel uploads\": { \"msgid\": \"Cancel uploads\", \"msgstr\": [\"Uploaden annuleren\"] }, \"Continue\": { \"msgid\": \"Continue\", \"msgstr\": [\"Doorgaan\"] }, \"Create new\": { \"msgid\": \"Create new\", \"msgstr\": [\"Nieuw aanmaken\"] }, \"estimating time left\": { \"msgid\": \"estimating time left\", \"msgstr\": [\"resterende tijd schatten\"] }, \"Existing version\": { \"msgid\": \"Existing version\", \"msgstr\": [\"Bestaande versie\"] }, \"Failed to assemble the chunks together\": { \"msgid\": \"Failed to assemble the chunks together\", \"msgstr\": [\"Kon de stukken niet samenvoegen\"] }, \"Failed to upload the file\": { \"msgid\": \"Failed to upload the file\", \"msgstr\": [\"Het uploaden van het bestand is mislukt\"] }, 'Filenames must not end with \"{segment}\".': { \"msgid\": 'Filenames must not end with \"{segment}\".', \"msgstr\": ['Bestandsnamen mogen niet eindigen met \"{segment}\".'] }, \"If you select both versions, the incoming file will have a number added to its name.\": { \"msgid\": \"If you select both versions, the incoming file will have a number added to its name.\", \"msgstr\": [\"Als je beide versies selecteert, krijgt het binnenkomende bestand een nummer toegevoegd aan de naam.\"] }, \"Invalid filename\": { \"msgid\": \"Invalid filename\", \"msgstr\": [\"Ongeldige bestandsnaam\"] }, \"Last modified date unknown\": { \"msgid\": \"Last modified date unknown\", \"msgstr\": [\"Laatst gewijzigde datum onbekend\"] }, \"New\": { \"msgid\": \"New\", \"msgstr\": [\"Nieuw\"] }, \"New filename\": { \"msgid\": \"New filename\", \"msgstr\": [\"Nieuwe bestandsnaam\"] }, \"New version\": { \"msgid\": \"New version\", \"msgstr\": [\"Nieuwe versie\"] }, \"paused\": { \"msgid\": \"paused\", \"msgstr\": [\"gepauzeerd\"] }, \"Preview image\": { \"msgid\": \"Preview image\", \"msgstr\": [\"Voorbeeldweergave\"] }, \"Rename\": { \"msgid\": \"Rename\", \"msgstr\": [\"Hernoemen\"] }, \"Select all checkboxes\": { \"msgid\": \"Select all checkboxes\", \"msgstr\": [\"Alle opties selecteren\"] }, \"Select all existing files\": { \"msgid\": \"Select all existing files\", \"msgstr\": [\"Alle bestanden selecteren\"] }, \"Select all new files\": { \"msgid\": \"Select all new files\", \"msgstr\": [\"Alle nieuwe bestanden selecteren\"] }, \"Skip\": { \"msgid\": \"Skip\", \"msgstr\": [\"Overslaan\"] }, \"Skip {count} file\": { \"msgid\": \"Skip {count} file\", \"msgid_plural\": \"Skip {count} files\", \"msgstr\": [\"{count} bestand overslaan\", \"{count} bestanden overslaan\"] }, \"Skip this file\": { \"msgid\": \"Skip this file\", \"msgstr\": [\"Dit bestand overslaan\"] }, \"Unknown size\": { \"msgid\": \"Unknown size\", \"msgstr\": [\"Onbekende grootte\"] }, \"Upload\": { \"msgid\": \"Upload\", \"msgstr\": [\"Uploaden\"] }, \"Upload files\": { \"msgid\": \"Upload files\", \"msgstr\": [\"Upload bestanden\"] }, \"Upload folders\": { \"msgid\": \"Upload folders\", \"msgstr\": [\"Mappen uploaden\"] }, \"Upload from device\": { \"msgid\": \"Upload from device\", \"msgstr\": [\"Uploaden vanaf apparaat\"] }, \"Upload has been cancelled\": { \"msgid\": \"Upload has been cancelled\", \"msgstr\": [\"Upload is geanulleerd\"] }, \"Upload has been skipped\": { \"msgid\": \"Upload has been skipped\", \"msgstr\": [\"Upload is overgeslagen\"] }, 'Upload of \"{folder}\" has been skipped': { \"msgid\": 'Upload of \"{folder}\" has been skipped', \"msgstr\": ['Upload van \"{folder}\" is overgeslagen'] }, \"Upload progress\": { \"msgid\": \"Upload progress\", \"msgstr\": [\"Uploadvoortgang\"] }, \"When an incoming folder is selected, any conflicting files within it will also be overwritten.\": { \"msgid\": \"When an incoming folder is selected, any conflicting files within it will also be overwritten.\", \"msgstr\": [\"Wanneer een inkomende map is geselecteerd, worden alle conflicterende bestanden daarin ook overschreven.\"] }, \"When an incoming folder is selected, the content is written into the existing folder and a recursive conflict resolution is performed.\": { \"msgid\": \"When an incoming folder is selected, the content is written into the existing folder and a recursive conflict resolution is performed.\", \"msgstr\": [\"Wanneer een inkomende map is geselecteerd, wordt de inhoud in de bestaande map geschreven en wordt er een recursieve conflictoplossing uitgevoerd.\"] }, \"Which files do you want to keep?\": { \"msgid\": \"Which files do you want to keep?\", \"msgstr\": [\"Welke bestanden wil je behouden?\"] }, \"You can either rename the file, skip this file or cancel the whole operation.\": { \"msgid\": \"You can either rename the file, skip this file or cancel the whole operation.\", \"msgstr\": [\"Je kunt het bestand ofwel hernoemen, dit bestand overslaan of de hele bewerking annuleren.\"] }, \"You need to select at least one version of each file to continue.\": { \"msgid\": \"You need to select at least one version of each file to continue.\", \"msgstr\": [\"Je moet minstens één versie van elk bestand selecteren om door te gaan.\"] } } } } }, { \"locale\": \"nn_NO\", \"json\": { \"charset\": \"utf-8\", \"headers\": { \"Last-Translator\": \"Transifex Bot <>, 2022\", \"Language-Team\": \"Norwegian Nynorsk (Norway) (https://www.transifex.com/nextcloud/teams/64236/nn_NO/)\", \"Content-Type\": \"text/plain; charset=UTF-8\", \"Language\": \"nn_NO\", \"Plural-Forms\": \"nplurals=2; plural=(n != 1);\" }, \"translations\": { \"\": { \"\": { \"msgid\": \"\", \"comments\": { \"translator\": \"\\nTranslators:\\nTransifex Bot <>, 2022\\n\" }, \"msgstr\": [\"Last-Translator: Transifex Bot <>, 2022\\nLanguage-Team: Norwegian Nynorsk (Norway) (https://www.transifex.com/nextcloud/teams/64236/nn_NO/)\\nContent-Type: text/plain; charset=UTF-8\\nLanguage: nn_NO\\nPlural-Forms: nplurals=2; plural=(n != 1);\\n\"] }, \"{estimate} seconds left\": { \"msgid\": \"{estimate} seconds left\", \"msgstr\": [\"\"] }, \"{hours} hours and {minutes} minutes left\": { \"msgid\": \"{hours} hours and {minutes} minutes left\", \"msgstr\": [\"\"] }, \"{minutes} minutes left\": { \"msgid\": \"{minutes} minutes left\", \"msgstr\": [\"\"] }, \"a few seconds left\": { \"msgid\": \"a few seconds left\", \"msgstr\": [\"\"] }, \"Add\": { \"msgid\": \"Add\", \"msgstr\": [\"\"] }, \"Cancel uploads\": { \"msgid\": \"Cancel uploads\", \"msgstr\": [\"\"] }, \"estimating time left\": { \"msgid\": \"estimating time left\", \"msgstr\": [\"\"] }, \"paused\": { \"msgid\": \"paused\", \"msgstr\": [\"\"] } } } } }, { \"locale\": \"oc\", \"json\": { \"charset\": \"utf-8\", \"headers\": { \"Last-Translator\": \"Transifex Bot <>, 2022\", \"Language-Team\": \"Occitan (post 1500) (https://www.transifex.com/nextcloud/teams/64236/oc/)\", \"Content-Type\": \"text/plain; charset=UTF-8\", \"Language\": \"oc\", \"Plural-Forms\": \"nplurals=2; plural=(n > 1);\" }, \"translations\": { \"\": { \"\": { \"msgid\": \"\", \"comments\": { \"translator\": \"\\nTranslators:\\nTransifex Bot <>, 2022\\n\" }, \"msgstr\": [\"Last-Translator: Transifex Bot <>, 2022\\nLanguage-Team: Occitan (post 1500) (https://www.transifex.com/nextcloud/teams/64236/oc/)\\nContent-Type: text/plain; charset=UTF-8\\nLanguage: oc\\nPlural-Forms: nplurals=2; plural=(n > 1);\\n\"] }, \"{estimate} seconds left\": { \"msgid\": \"{estimate} seconds left\", \"msgstr\": [\"\"] }, \"{hours} hours and {minutes} minutes left\": { \"msgid\": \"{hours} hours and {minutes} minutes left\", \"msgstr\": [\"\"] }, \"{minutes} minutes left\": { \"msgid\": \"{minutes} minutes left\", \"msgstr\": [\"\"] }, \"a few seconds left\": { \"msgid\": \"a few seconds left\", \"msgstr\": [\"\"] }, \"Add\": { \"msgid\": \"Add\", \"msgstr\": [\"\"] }, \"Cancel uploads\": { \"msgid\": \"Cancel uploads\", \"msgstr\": [\"\"] }, \"estimating time left\": { \"msgid\": \"estimating time left\", \"msgstr\": [\"\"] }, \"paused\": { \"msgid\": \"paused\", \"msgstr\": [\"\"] } } } } }, { \"locale\": \"pl\", \"json\": { \"charset\": \"utf-8\", \"headers\": { \"Last-Translator\": \"Valdnet, 2025\", \"Language-Team\": \"Polish (https://app.transifex.com/nextcloud/teams/64236/pl/)\", \"Content-Type\": \"text/plain; charset=UTF-8\", \"Language\": \"pl\", \"Plural-Forms\": \"nplurals=4; plural=(n==1 ? 0 : (n%10>=2 && n%10<=4) && (n%100<12 || n%100>14) ? 1 : n!=1 && (n%10>=0 && n%10<=1) || (n%10>=5 && n%10<=9) || (n%100>=12 && n%100<=14) ? 2 : 3);\" }, \"translations\": { \"\": { \"\": { \"msgid\": \"\", \"comments\": { \"translator\": \"\\nTranslators:\\nJoas Schilling, 2024\\nPiotr Strebski , 2024\\nValdnet, 2025\\n\" }, \"msgstr\": [\"Last-Translator: Valdnet, 2025\\nLanguage-Team: Polish (https://app.transifex.com/nextcloud/teams/64236/pl/)\\nContent-Type: text/plain; charset=UTF-8\\nLanguage: pl\\nPlural-Forms: nplurals=4; plural=(n==1 ? 0 : (n%10>=2 && n%10<=4) && (n%100<12 || n%100>14) ? 1 : n!=1 && (n%10>=0 && n%10<=1) || (n%10>=5 && n%10<=9) || (n%100>=12 && n%100<=14) ? 2 : 3);\\n\"] }, '\"{segment}\" is a forbidden file or folder name.': { \"msgid\": '\"{segment}\" is a forbidden file or folder name.', \"msgstr\": ['\"{segment}\" to zabroniona nazwa pliku lub katalogu.'] }, '\"{segment}\" is a forbidden file type.': { \"msgid\": '\"{segment}\" is a forbidden file type.', \"msgstr\": ['\"{segment}\" jest zabronionym typem pliku.'] }, '\"{segment}\" is not allowed inside a file or folder name.': { \"msgid\": '\"{segment}\" is not allowed inside a file or folder name.', \"msgstr\": ['Znak \"{segment}\" nie jest dozwolony w nazwie pliku lub katalogu.'] }, \"{count} file conflict\": { \"msgid\": \"{count} file conflict\", \"msgid_plural\": \"{count} files conflict\", \"msgstr\": [\"konflikt 1 pliku\", \"{count} konfliktów plików\", \"{count} konfliktów plików\", \"{count} konfliktów plików\"] }, \"{count} file conflict in {dirname}\": { \"msgid\": \"{count} file conflict in {dirname}\", \"msgid_plural\": \"{count} file conflicts in {dirname}\", \"msgstr\": [\"{count} konfliktowy plik w {dirname}\", \"{count} konfliktowych plików w {dirname}\", \"{count} konfliktowych plików w {dirname}\", \"{count} konfliktowych plików w {dirname}\"] }, \"{seconds} seconds left\": { \"msgid\": \"{seconds} seconds left\", \"msgstr\": [\"Pozostało {seconds} sekund\"] }, \"{time} left\": { \"msgid\": \"{time} left\", \"comments\": { \"extracted\": \"TRANSLATORS time has the format 00:00:00\" }, \"msgstr\": [\"Pozostało {time}\"] }, \"a few seconds left\": { \"msgid\": \"a few seconds left\", \"msgstr\": [\"Pozostało kilka sekund\"] }, \"Cancel\": { \"msgid\": \"Cancel\", \"msgstr\": [\"Anuluj\"] }, \"Cancel the entire operation\": { \"msgid\": \"Cancel the entire operation\", \"msgstr\": [\"Anuluj całą operację\"] }, \"Cancel uploads\": { \"msgid\": \"Cancel uploads\", \"msgstr\": [\"Anuluj wysyłanie\"] }, \"Continue\": { \"msgid\": \"Continue\", \"msgstr\": [\"Kontynuuj\"] }, \"Create new\": { \"msgid\": \"Create new\", \"msgstr\": [\"Utwórz nowe\"] }, \"estimating time left\": { \"msgid\": \"estimating time left\", \"msgstr\": [\"Szacowanie pozostałego czasu\"] }, \"Existing version\": { \"msgid\": \"Existing version\", \"msgstr\": [\"Istniejąca wersja\"] }, 'Filenames must not end with \"{segment}\".': { \"msgid\": 'Filenames must not end with \"{segment}\".', \"msgstr\": ['Nazwy plików nie mogą kończyć się na \"{segment}\".'] }, \"If you select both versions, the incoming file will have a number added to its name.\": { \"msgid\": \"If you select both versions, the incoming file will have a number added to its name.\", \"msgstr\": [\"Jeśli wybierzesz obie wersje, do nazwy pliku przychodzącego zostanie dodany numer.\"] }, \"Invalid filename\": { \"msgid\": \"Invalid filename\", \"msgstr\": [\"Nieprawidłowa nazwa pliku\"] }, \"Last modified date unknown\": { \"msgid\": \"Last modified date unknown\", \"msgstr\": [\"Nieznana data ostatniej modyfikacji\"] }, \"New\": { \"msgid\": \"New\", \"msgstr\": [\"Nowy\"] }, \"New filename\": { \"msgid\": \"New filename\", \"msgstr\": [\"Nowa nazwa pliku\"] }, \"New version\": { \"msgid\": \"New version\", \"msgstr\": [\"Nowa wersja\"] }, \"paused\": { \"msgid\": \"paused\", \"msgstr\": [\"Wstrzymane\"] }, \"Preview image\": { \"msgid\": \"Preview image\", \"msgstr\": [\"Podgląd obrazu\"] }, \"Rename\": { \"msgid\": \"Rename\", \"msgstr\": [\"Zmiana nazwy\"] }, \"Select all checkboxes\": { \"msgid\": \"Select all checkboxes\", \"msgstr\": [\"Zaznacz wszystkie pola wyboru\"] }, \"Select all existing files\": { \"msgid\": \"Select all existing files\", \"msgstr\": [\"Zaznacz wszystkie istniejące pliki\"] }, \"Select all new files\": { \"msgid\": \"Select all new files\", \"msgstr\": [\"Zaznacz wszystkie nowe pliki\"] }, \"Skip\": { \"msgid\": \"Skip\", \"msgstr\": [\"Pomiń\"] }, \"Skip this file\": { \"msgid\": \"Skip this file\", \"msgid_plural\": \"Skip {count} files\", \"msgstr\": [\"Pomiń 1 plik\", \"Pomiń {count} plików\", \"Pomiń {count} plików\", \"Pomiń {count} plików\"] }, \"Unknown size\": { \"msgid\": \"Unknown size\", \"msgstr\": [\"Nieznany rozmiar\"] }, \"Upload\": { \"msgid\": \"Upload\", \"msgstr\": [\"Wyślij\"] }, \"Upload files\": { \"msgid\": \"Upload files\", \"msgstr\": [\"Wyślij pliki\"] }, \"Upload folders\": { \"msgid\": \"Upload folders\", \"msgstr\": [\"Wyślij katalogi\"] }, \"Upload from device\": { \"msgid\": \"Upload from device\", \"msgstr\": [\"Wyślij z urządzenia\"] }, \"Upload has been cancelled\": { \"msgid\": \"Upload has been cancelled\", \"msgstr\": [\"Wysyłanie zostało anulowane\"] }, \"Upload has been skipped\": { \"msgid\": \"Upload has been skipped\", \"msgstr\": [\"Wysyłanie zostało pominięte\"] }, 'Upload of \"{folder}\" has been skipped': { \"msgid\": 'Upload of \"{folder}\" has been skipped', \"msgstr\": ['Wysyłanie \"{folder}\" zostało pominięte'] }, \"Upload progress\": { \"msgid\": \"Upload progress\", \"msgstr\": [\"Postęp wysyłania\"] }, \"When an incoming folder is selected, any conflicting files within it will also be overwritten.\": { \"msgid\": \"When an incoming folder is selected, any conflicting files within it will also be overwritten.\", \"msgstr\": [\"Po wybraniu katalogu przychodzącego wszelkie znajdujące się w nim pliki powodujące konflikt również zostaną nadpisane.\"] }, \"When an incoming folder is selected, the content is written into the existing folder and a recursive conflict resolution is performed.\": { \"msgid\": \"When an incoming folder is selected, the content is written into the existing folder and a recursive conflict resolution is performed.\", \"msgstr\": [\"Po wybraniu katalogu przychodzącego zawartość jest zapisywana w istniejącym katalogu i przeprowadzane jest rekursywne rozwiązywanie konfliktów.\"] }, \"Which files do you want to keep?\": { \"msgid\": \"Which files do you want to keep?\", \"msgstr\": [\"Które pliki chcesz zachować?\"] }, \"You can either rename the file, skip this file or cancel the whole operation.\": { \"msgid\": \"You can either rename the file, skip this file or cancel the whole operation.\", \"msgstr\": [\"Możesz zmienić nazwę pliku, pominąć ten plik lub anulować całą operację.\"] }, \"You need to select at least one version of each file to continue.\": { \"msgid\": \"You need to select at least one version of each file to continue.\", \"msgstr\": [\"Aby kontynuować, musisz wybrać co najmniej jedną wersję każdego pliku.\"] } } } } }, { \"locale\": \"ps\", \"json\": { \"charset\": \"utf-8\", \"headers\": { \"Last-Translator\": \"Transifex Bot <>, 2022\", \"Language-Team\": \"Pashto (https://www.transifex.com/nextcloud/teams/64236/ps/)\", \"Content-Type\": \"text/plain; charset=UTF-8\", \"Language\": \"ps\", \"Plural-Forms\": \"nplurals=2; plural=(n != 1);\" }, \"translations\": { \"\": { \"\": { \"msgid\": \"\", \"comments\": { \"translator\": \"\\nTranslators:\\nTransifex Bot <>, 2022\\n\" }, \"msgstr\": [\"Last-Translator: Transifex Bot <>, 2022\\nLanguage-Team: Pashto (https://www.transifex.com/nextcloud/teams/64236/ps/)\\nContent-Type: text/plain; charset=UTF-8\\nLanguage: ps\\nPlural-Forms: nplurals=2; plural=(n != 1);\\n\"] }, \"{estimate} seconds left\": { \"msgid\": \"{estimate} seconds left\", \"msgstr\": [\"\"] }, \"{hours} hours and {minutes} minutes left\": { \"msgid\": \"{hours} hours and {minutes} minutes left\", \"msgstr\": [\"\"] }, \"{minutes} minutes left\": { \"msgid\": \"{minutes} minutes left\", \"msgstr\": [\"\"] }, \"a few seconds left\": { \"msgid\": \"a few seconds left\", \"msgstr\": [\"\"] }, \"Add\": { \"msgid\": \"Add\", \"msgstr\": [\"\"] }, \"Cancel uploads\": { \"msgid\": \"Cancel uploads\", \"msgstr\": [\"\"] }, \"estimating time left\": { \"msgid\": \"estimating time left\", \"msgstr\": [\"\"] }, \"paused\": { \"msgid\": \"paused\", \"msgstr\": [\"\"] } } } } }, { \"locale\": \"pt_BR\", \"json\": { \"charset\": \"utf-8\", \"headers\": { \"Last-Translator\": \"F Bausch, 2025\", \"Language-Team\": \"Portuguese (Brazil) (https://app.transifex.com/nextcloud/teams/64236/pt_BR/)\", \"Content-Type\": \"text/plain; charset=UTF-8\", \"Language\": \"pt_BR\", \"Plural-Forms\": \"nplurals=3; plural=(n == 0 || n == 1) ? 0 : n != 0 && n % 1000000 == 0 ? 1 : 2;\" }, \"translations\": { \"\": { \"\": { \"msgid\": \"\", \"comments\": { \"translator\": \"\\nTranslators:\\nJoas Schilling, 2024\\nLeonardo Colman Lopes , 2024\\nRodrigo Sottomaior Macedo , 2024\\nF Bausch, 2025\\n\" }, \"msgstr\": [\"Last-Translator: F Bausch, 2025\\nLanguage-Team: Portuguese (Brazil) (https://app.transifex.com/nextcloud/teams/64236/pt_BR/)\\nContent-Type: text/plain; charset=UTF-8\\nLanguage: pt_BR\\nPlural-Forms: nplurals=3; plural=(n == 0 || n == 1) ? 0 : n != 0 && n % 1000000 == 0 ? 1 : 2;\\n\"] }, '\"{segment}\" is a forbidden file or folder name.': { \"msgid\": '\"{segment}\" is a forbidden file or folder name.', \"msgstr\": ['\"{segment}\" é um nome de arquivo ou pasta proibido.'] }, '\"{segment}\" is a forbidden file type.': { \"msgid\": '\"{segment}\" is a forbidden file type.', \"msgstr\": ['\"{segment}\" é um tipo de arquivo proibido.'] }, '\"{segment}\" is not allowed inside a file or folder name.': { \"msgid\": '\"{segment}\" is not allowed inside a file or folder name.', \"msgstr\": ['\"{segment}\" não é permitido dentro de um nome de arquivo ou pasta.'] }, \"{count} file conflict\": { \"msgid\": \"{count} file conflict\", \"msgid_plural\": \"{count} files conflict\", \"msgstr\": [\"{count} arquivos em conflito\", \"{count} arquivos em conflito\", \"{count} arquivos em conflito\"] }, \"{count} file conflict in {dirname}\": { \"msgid\": \"{count} file conflict in {dirname}\", \"msgid_plural\": \"{count} file conflicts in {dirname}\", \"msgstr\": [\"{count} conflitos de arquivo em {dirname}\", \"{count} conflitos de arquivo em {dirname}\", \"{count} conflitos de arquivo em {dirname}\"] }, \"{seconds} seconds left\": { \"msgid\": \"{seconds} seconds left\", \"msgid_plural\": \"{seconds} seconds left\", \"msgstr\": [\"{seconds} segundo restante\", \"{seconds} segundos restantes\", \"{seconds} segundos restantes\"] }, \"{time} left\": { \"msgid\": \"{time} left\", \"comments\": { \"extracted\": \"TRANSLATORS time has the format 00:00:00\" }, \"msgstr\": [\"{time} restante\"] }, \"a few seconds left\": { \"msgid\": \"a few seconds left\", \"msgstr\": [\"alguns segundos restantes\"] }, \"assembling\": { \"msgid\": \"assembling\", \"msgstr\": [\"montando\"] }, \"Cancel\": { \"msgid\": \"Cancel\", \"msgstr\": [\"Cancelar\"] }, \"Cancel the entire operation\": { \"msgid\": \"Cancel the entire operation\", \"msgstr\": [\"Cancelar a operação inteira\"] }, \"Cancel uploads\": { \"msgid\": \"Cancel uploads\", \"msgstr\": [\"Cancelar uploads\"] }, \"Continue\": { \"msgid\": \"Continue\", \"msgstr\": [\"Continuar\"] }, \"Create new\": { \"msgid\": \"Create new\", \"msgstr\": [\"Criar novo\"] }, \"estimating time left\": { \"msgid\": \"estimating time left\", \"msgstr\": [\"estimando tempo restante\"] }, \"Existing version\": { \"msgid\": \"Existing version\", \"msgstr\": [\"Versão existente\"] }, \"Failed to assemble the chunks together\": { \"msgid\": \"Failed to assemble the chunks together\", \"msgstr\": [\"Falha ao montar os pedaços juntos\"] }, \"Failed to upload the file\": { \"msgid\": \"Failed to upload the file\", \"msgstr\": [\"Falha ao fazer o upload do arquivo\"] }, 'Filenames must not end with \"{segment}\".': { \"msgid\": 'Filenames must not end with \"{segment}\".', \"msgstr\": ['Os nomes dos arquivos não devem terminar com \"{segment}\".'] }, \"If you select both versions, the incoming file will have a number added to its name.\": { \"msgid\": \"If you select both versions, the incoming file will have a number added to its name.\", \"msgstr\": [\"Se você selecionar ambas as versões, o arquivo recebido terá um número adicionado ao seu nome.\"] }, \"Invalid filename\": { \"msgid\": \"Invalid filename\", \"msgstr\": [\"Nome de arquivo inválido\"] }, \"Last modified date unknown\": { \"msgid\": \"Last modified date unknown\", \"msgstr\": [\"Data da última modificação desconhecida\"] }, \"New\": { \"msgid\": \"New\", \"msgstr\": [\"Novo\"] }, \"New filename\": { \"msgid\": \"New filename\", \"msgstr\": [\"Novo nome de arquivo\"] }, \"New version\": { \"msgid\": \"New version\", \"msgstr\": [\"Nova versão\"] }, \"paused\": { \"msgid\": \"paused\", \"msgstr\": [\"pausado\"] }, \"Preview image\": { \"msgid\": \"Preview image\", \"msgstr\": [\"Visualizar imagem\"] }, \"Rename\": { \"msgid\": \"Rename\", \"msgstr\": [\"Renomear\"] }, \"Select all checkboxes\": { \"msgid\": \"Select all checkboxes\", \"msgstr\": [\"Selecionar todas as caixas de seleção\"] }, \"Select all existing files\": { \"msgid\": \"Select all existing files\", \"msgstr\": [\"Selecionar todos os arquivos existentes\"] }, \"Select all new files\": { \"msgid\": \"Select all new files\", \"msgstr\": [\"Selecionar todos os novos arquivos\"] }, \"Skip\": { \"msgid\": \"Skip\", \"msgstr\": [\"Pular\"] }, \"Skip {count} file\": { \"msgid\": \"Skip {count} file\", \"msgid_plural\": \"Skip {count} files\", \"msgstr\": [\"Pular {count} arquivo\", \"Pular {count} de arquivos\", \"Pular {count} arquivos\"] }, \"Skip this file\": { \"msgid\": \"Skip this file\", \"msgstr\": [\"Pular este arquivo\"] }, \"Unknown size\": { \"msgid\": \"Unknown size\", \"msgstr\": [\"Tamanho desconhecido\"] }, \"Upload\": { \"msgid\": \"Upload\", \"msgstr\": [\"Fazer upload\"] }, \"Upload files\": { \"msgid\": \"Upload files\", \"msgstr\": [\"Fazer upload de arquivos\"] }, \"Upload folders\": { \"msgid\": \"Upload folders\", \"msgstr\": [\"Fazer upload de pastas\"] }, \"Upload from device\": { \"msgid\": \"Upload from device\", \"msgstr\": [\"Fazer upload do dispositivo\"] }, \"Upload has been cancelled\": { \"msgid\": \"Upload has been cancelled\", \"msgstr\": [\"O upload foi cancelado\"] }, \"Upload has been skipped\": { \"msgid\": \"Upload has been skipped\", \"msgstr\": [\"O upload foi pulado\"] }, 'Upload of \"{folder}\" has been skipped': { \"msgid\": 'Upload of \"{folder}\" has been skipped', \"msgstr\": ['O upload de \"{folder}\" foi pulado'] }, \"Upload progress\": { \"msgid\": \"Upload progress\", \"msgstr\": [\"Progresso de upload\"] }, \"When an incoming folder is selected, any conflicting files within it will also be overwritten.\": { \"msgid\": \"When an incoming folder is selected, any conflicting files within it will also be overwritten.\", \"msgstr\": [\"Quando uma pasta recebida é selecionada, todos os arquivos conflitantes dentro dela também serão sobrescritos.\"] }, \"When an incoming folder is selected, the content is written into the existing folder and a recursive conflict resolution is performed.\": { \"msgid\": \"When an incoming folder is selected, the content is written into the existing folder and a recursive conflict resolution is performed.\", \"msgstr\": [\"Quando uma pasta recebida é selecionada, o conteúdo é gravado na pasta existente e uma resolução de conflito recursiva é executada.\"] }, \"Which files do you want to keep?\": { \"msgid\": \"Which files do you want to keep?\", \"msgstr\": [\"Quais arquivos você deseja manter?\"] }, \"You can either rename the file, skip this file or cancel the whole operation.\": { \"msgid\": \"You can either rename the file, skip this file or cancel the whole operation.\", \"msgstr\": [\"Você pode renomear o arquivo, pular este arquivo ou cancelar toda a operação.\"] }, \"You need to select at least one version of each file to continue.\": { \"msgid\": \"You need to select at least one version of each file to continue.\", \"msgstr\": [\"Você precisa selecionar pelo menos uma versão de cada arquivo para continuar.\"] } } } } }, { \"locale\": \"pt_PT\", \"json\": { \"charset\": \"utf-8\", \"headers\": { \"Last-Translator\": \"artur25 , 2025\", \"Language-Team\": \"Portuguese (Portugal) (https://app.transifex.com/nextcloud/teams/64236/pt_PT/)\", \"Content-Type\": \"text/plain; charset=UTF-8\", \"Language\": \"pt_PT\", \"Plural-Forms\": \"nplurals=3; plural=(n == 0 || n == 1) ? 0 : n != 0 && n % 1000000 == 0 ? 1 : 2;\" }, \"translations\": { \"\": { \"\": { \"msgid\": \"\", \"comments\": { \"translator\": \"\\nTranslators:\\nJoas Schilling, 2024\\nguilherme ferreira, 2025\\nartur25 , 2025\\n\" }, \"msgstr\": [\"Last-Translator: artur25 , 2025\\nLanguage-Team: Portuguese (Portugal) (https://app.transifex.com/nextcloud/teams/64236/pt_PT/)\\nContent-Type: text/plain; charset=UTF-8\\nLanguage: pt_PT\\nPlural-Forms: nplurals=3; plural=(n == 0 || n == 1) ? 0 : n != 0 && n % 1000000 == 0 ? 1 : 2;\\n\"] }, '\"{segment}\" is a forbidden file or folder name.': { \"msgid\": '\"{segment}\" is a forbidden file or folder name.', \"msgstr\": ['\"{segment}\" é um Nome de arquivo ou pasta proibido.'] }, '\"{segment}\" is a forbidden file type.': { \"msgid\": '\"{segment}\" is a forbidden file type.', \"msgstr\": ['\"{segment}\" é um tipo de ficheiro proibido.'] }, '\"{segment}\" is not allowed inside a file or folder name.': { \"msgid\": '\"{segment}\" is not allowed inside a file or folder name.', \"msgstr\": ['\"{segment}\" não é permitido num nome de ficheiro ou pasta.'] }, \"{count} file conflict\": { \"msgid\": \"{count} file conflict\", \"msgid_plural\": \"{count} files conflict\", \"msgstr\": [\"Conflito em {count} ficheiro\", \"Conflito em {count} ficheiros\", \"Conflito em {count} ficheiros\"] }, \"{count} file conflict in {dirname}\": { \"msgid\": \"{count} file conflict in {dirname}\", \"msgid_plural\": \"{count} file conflicts in {dirname}\", \"msgstr\": [\"{count} conflito de ficheiro em {dirname}\", \"{count} conflitos de ficheiro em {dirname}\", \"{count} conflitos de ficheiro em {dirname}\"] }, \"{seconds} seconds left\": { \"msgid\": \"{seconds} seconds left\", \"msgid_plural\": \"{seconds} seconds left\", \"msgstr\": [\"Falta {seconds} segundo\", \"Faltam {seconds} segundos\", \"Faltam {seconds} segundos\"] }, \"{time} left\": { \"msgid\": \"{time} left\", \"comments\": { \"extracted\": \"TRANSLATORS time has the format 00:00:00\" }, \"msgstr\": [\"faltam {time}\"] }, \"a few seconds left\": { \"msgid\": \"a few seconds left\", \"msgstr\": [\"faltam uns segundos\"] }, \"assembling\": { \"msgid\": \"assembling\", \"msgstr\": [\"montagem\"] }, \"Cancel\": { \"msgid\": \"Cancel\", \"msgstr\": [\"Cancelar\"] }, \"Cancel the entire operation\": { \"msgid\": \"Cancel the entire operation\", \"msgstr\": [\"Cancelar a operação inteira\"] }, \"Cancel uploads\": { \"msgid\": \"Cancel uploads\", \"msgstr\": [\"Cancelar envios\"] }, \"Continue\": { \"msgid\": \"Continue\", \"msgstr\": [\"Continuar\"] }, \"Create new\": { \"msgid\": \"Create new\", \"msgstr\": [\"Criar novo\"] }, \"estimating time left\": { \"msgid\": \"estimating time left\", \"msgstr\": [\"tempo em falta estimado\"] }, \"Existing version\": { \"msgid\": \"Existing version\", \"msgstr\": [\"Versão existente\"] }, \"Failed to assemble the chunks together\": { \"msgid\": \"Failed to assemble the chunks together\", \"msgstr\": [\"Falha ao juntar os fragmentos\"] }, \"Failed to upload the file\": { \"msgid\": \"Failed to upload the file\", \"msgstr\": [\"Falha ao carregar o ficheiro\"] }, 'Filenames must not end with \"{segment}\".': { \"msgid\": 'Filenames must not end with \"{segment}\".', \"msgstr\": ['Os nomes de ficheiro não podem terminar em \"{segment}\".'] }, \"If you select both versions, the incoming file will have a number added to its name.\": { \"msgid\": \"If you select both versions, the incoming file will have a number added to its name.\", \"msgstr\": [\"Se selecionar ambas as versões, será adicionado um número ao nome do ficheiro recebido.\"] }, \"Invalid filename\": { \"msgid\": \"Invalid filename\", \"msgstr\": [\"Nome de ficheiro inválido\"] }, \"Last modified date unknown\": { \"msgid\": \"Last modified date unknown\", \"msgstr\": [\"Data da última modificação desconhecida\"] }, \"New\": { \"msgid\": \"New\", \"msgstr\": [\"Novo\"] }, \"New filename\": { \"msgid\": \"New filename\", \"msgstr\": [\"Novo nome de ficheiro\"] }, \"New version\": { \"msgid\": \"New version\", \"msgstr\": [\"Nova versão\"] }, \"paused\": { \"msgid\": \"paused\", \"msgstr\": [\"pausado\"] }, \"Preview image\": { \"msgid\": \"Preview image\", \"msgstr\": [\"Pré-visualizar imagem\"] }, \"Rename\": { \"msgid\": \"Rename\", \"msgstr\": [\"Renomear\"] }, \"Select all checkboxes\": { \"msgid\": \"Select all checkboxes\", \"msgstr\": [\"Selecionar todas as caixas de verificação\"] }, \"Select all existing files\": { \"msgid\": \"Select all existing files\", \"msgstr\": [\"Selecionar todos os ficheiros existentes\"] }, \"Select all new files\": { \"msgid\": \"Select all new files\", \"msgstr\": [\"Selecionar todos os ficheiros novos\"] }, \"Skip\": { \"msgid\": \"Skip\", \"msgstr\": [\"Ignorar\"] }, \"Skip {count} file\": { \"msgid\": \"Skip {count} file\", \"msgid_plural\": \"Skip {count} files\", \"msgstr\": [\"Ignorar {count} ficheiro\", \"Ignorar {count} ficheiros\", \"Ignorar {count} ficheiros\"] }, \"Skip this file\": { \"msgid\": \"Skip this file\", \"msgstr\": [\"Ignorar este ficheiro\"] }, \"Unknown size\": { \"msgid\": \"Unknown size\", \"msgstr\": [\"Tamanho desconhecido\"] }, \"Upload\": { \"msgid\": \"Upload\", \"msgstr\": [\"Carregar\"] }, \"Upload files\": { \"msgid\": \"Upload files\", \"msgstr\": [\"Enviar ficheiros\"] }, \"Upload folders\": { \"msgid\": \"Upload folders\", \"msgstr\": [\"Carregar pastas\"] }, \"Upload from device\": { \"msgid\": \"Upload from device\", \"msgstr\": [\"Carregar a partir do dispositivo\"] }, \"Upload has been cancelled\": { \"msgid\": \"Upload has been cancelled\", \"msgstr\": [\"O carregamento foi cancelado\"] }, \"Upload has been skipped\": { \"msgid\": \"Upload has been skipped\", \"msgstr\": [\"O carregamento foi ignorado\"] }, 'Upload of \"{folder}\" has been skipped': { \"msgid\": 'Upload of \"{folder}\" has been skipped', \"msgstr\": ['O carregamento da pasta \"{folder}\" foi ignorado'] }, \"Upload progress\": { \"msgid\": \"Upload progress\", \"msgstr\": [\"Progresso do carregamento\"] }, \"When an incoming folder is selected, any conflicting files within it will also be overwritten.\": { \"msgid\": \"When an incoming folder is selected, any conflicting files within it will also be overwritten.\", \"msgstr\": [\"Ao selecionar uma pasta recebida, quaisquer ficheiros em conflito no seu interior também serão sobrescritos.\"] }, \"When an incoming folder is selected, the content is written into the existing folder and a recursive conflict resolution is performed.\": { \"msgid\": \"When an incoming folder is selected, the content is written into the existing folder and a recursive conflict resolution is performed.\", \"msgstr\": [\"Ao selecionar uma pasta recebida, o conteúdo é escrito na pasta existente e é efetuada uma resolução de conflitos recursiva.\"] }, \"Which files do you want to keep?\": { \"msgid\": \"Which files do you want to keep?\", \"msgstr\": [\"Quais ficheiros pretende manter?\"] }, \"You can either rename the file, skip this file or cancel the whole operation.\": { \"msgid\": \"You can either rename the file, skip this file or cancel the whole operation.\", \"msgstr\": [\"Pode renomear o ficheiro, ignorá-lo ou cancelar toda a operação.\"] }, \"You need to select at least one version of each file to continue.\": { \"msgid\": \"You need to select at least one version of each file to continue.\", \"msgstr\": [\"Precisa de selecionar pelo menos uma versão de cada ficheiro para continuar.\"] } } } } }, { \"locale\": \"ro\", \"json\": { \"charset\": \"utf-8\", \"headers\": { \"Last-Translator\": \"Mădălin Vasiliu , 2022\", \"Language-Team\": \"Romanian (https://www.transifex.com/nextcloud/teams/64236/ro/)\", \"Content-Type\": \"text/plain; charset=UTF-8\", \"Language\": \"ro\", \"Plural-Forms\": \"nplurals=3; plural=(n==1?0:(((n%100>19)||((n%100==0)&&(n!=0)))?2:1));\" }, \"translations\": { \"\": { \"\": { \"msgid\": \"\", \"comments\": { \"translator\": \"\\nTranslators:\\nMădălin Vasiliu , 2022\\n\" }, \"msgstr\": [\"Last-Translator: Mădălin Vasiliu , 2022\\nLanguage-Team: Romanian (https://www.transifex.com/nextcloud/teams/64236/ro/)\\nContent-Type: text/plain; charset=UTF-8\\nLanguage: ro\\nPlural-Forms: nplurals=3; plural=(n==1?0:(((n%100>19)||((n%100==0)&&(n!=0)))?2:1));\\n\"] }, \"{seconds} seconds left\": { \"msgid\": \"{seconds} seconds left\", \"msgstr\": [\"{seconds} secunde rămase\"] }, \"{time} left\": { \"msgid\": \"{time} left\", \"comments\": { \"extracted\": \"time has the format 00:00:00\" }, \"msgstr\": [\"{time} rămas\"] }, \"a few seconds left\": { \"msgid\": \"a few seconds left\", \"msgstr\": [\"câteva secunde rămase\"] }, \"Add\": { \"msgid\": \"Add\", \"msgstr\": [\"Adaugă\"] }, \"Cancel uploads\": { \"msgid\": \"Cancel uploads\", \"msgstr\": [\"Anulați încărcările\"] }, \"estimating time left\": { \"msgid\": \"estimating time left\", \"msgstr\": [\"estimarea timpului rămas\"] }, \"paused\": { \"msgid\": \"paused\", \"msgstr\": [\"pus pe pauză\"] }, \"Upload files\": { \"msgid\": \"Upload files\", \"msgstr\": [\"Încarcă fișiere\"] } } } } }, { \"locale\": \"ru\", \"json\": { \"charset\": \"utf-8\", \"headers\": { \"Last-Translator\": \"Igor Orlov, 2025\", \"Language-Team\": \"Russian (https://app.transifex.com/nextcloud/teams/64236/ru/)\", \"Content-Type\": \"text/plain; charset=UTF-8\", \"Language\": \"ru\", \"Plural-Forms\": \"nplurals=4; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%10<=4 && (n%100<12 || n%100>14) ? 1 : n%10==0 || (n%10>=5 && n%10<=9) || (n%100>=11 && n%100<=14)? 2 : 3);\" }, \"translations\": { \"\": { \"\": { \"msgid\": \"\", \"comments\": { \"translator\": \"\\nTranslators:\\nJoas Schilling, 2024\\nВлад, 2024\\nAlex , 2024\\nRoman Stepanov, 2024\\nMaksim Sukharev, 2024\\nАлександр, 2025\\nIgor Orlov, 2025\\n\" }, \"msgstr\": [\"Last-Translator: Igor Orlov, 2025\\nLanguage-Team: Russian (https://app.transifex.com/nextcloud/teams/64236/ru/)\\nContent-Type: text/plain; charset=UTF-8\\nLanguage: ru\\nPlural-Forms: nplurals=4; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%10<=4 && (n%100<12 || n%100>14) ? 1 : n%10==0 || (n%10>=5 && n%10<=9) || (n%100>=11 && n%100<=14)? 2 : 3);\\n\"] }, '\"{segment}\" is a forbidden file or folder name.': { \"msgid\": '\"{segment}\" is a forbidden file or folder name.', \"msgstr\": [\"«{segment}» — это запрещенное имя файла или папки.\"] }, '\"{segment}\" is a forbidden file type.': { \"msgid\": '\"{segment}\" is a forbidden file type.', \"msgstr\": [\"«{segment}» — это запрещенный тип файла.\"] }, '\"{segment}\" is not allowed inside a file or folder name.': { \"msgid\": '\"{segment}\" is not allowed inside a file or folder name.', \"msgstr\": [\"«{segment}» не допускается в имени файла или папки.\"] }, \"{count} file conflict\": { \"msgid\": \"{count} file conflict\", \"msgid_plural\": \"{count} files conflict\", \"msgstr\": [\"конфликт {count} файла\", \"конфликт {count} файлов\", \"конфликт {count} файлов\", \"конфликт {count} файлов\"] }, \"{count} file conflict in {dirname}\": { \"msgid\": \"{count} file conflict in {dirname}\", \"msgid_plural\": \"{count} file conflicts in {dirname}\", \"msgstr\": [\"конфликт {count} файла в «{dirname}»\", \"конфликт {count} файлов в «{dirname}»\", \"конфликт {count} файлов в «{dirname}»\", \"конфликт {count} файлов в «{dirname}»\"] }, \"{seconds} seconds left\": { \"msgid\": \"{seconds} seconds left\", \"msgid_plural\": \"{seconds} seconds left\", \"msgstr\": [\"осталась {seconds} секунда\", \"осталось {seconds} секунды\", \"осталось {seconds} секунд\", \"осталось {seconds} секунд\"] }, \"{time} left\": { \"msgid\": \"{time} left\", \"comments\": { \"extracted\": \"TRANSLATORS time has the format 00:00:00\" }, \"msgstr\": [\"осталось {time}\"] }, \"a few seconds left\": { \"msgid\": \"a few seconds left\", \"msgstr\": [\"осталось несколько секунд\"] }, \"assembling\": { \"msgid\": \"assembling\", \"msgstr\": [\"сборка\"] }, \"Cancel\": { \"msgid\": \"Cancel\", \"msgstr\": [\"Отменить\"] }, \"Cancel the entire operation\": { \"msgid\": \"Cancel the entire operation\", \"msgstr\": [\"Отменить операцию целиком\"] }, \"Cancel uploads\": { \"msgid\": \"Cancel uploads\", \"msgstr\": [\"Отменить загрузки\"] }, \"Continue\": { \"msgid\": \"Continue\", \"msgstr\": [\"Продолжить\"] }, \"Create new\": { \"msgid\": \"Create new\", \"msgstr\": [\"Создать новое\"] }, \"estimating time left\": { \"msgid\": \"estimating time left\", \"msgstr\": [\"оценка оставшегося времени\"] }, \"Existing version\": { \"msgid\": \"Existing version\", \"msgstr\": [\"Текущая версия\"] }, \"Failed to assemble the chunks together\": { \"msgid\": \"Failed to assemble the chunks together\", \"msgstr\": [\"Не удалось собрать части вместе\"] }, \"Failed to upload the file\": { \"msgid\": \"Failed to upload the file\", \"msgstr\": [\"Не удалось загрузить файл\"] }, 'Filenames must not end with \"{segment}\".': { \"msgid\": 'Filenames must not end with \"{segment}\".', \"msgstr\": [\"Имена файлов не должны заканчиваться на «{segment}»\"] }, \"If you select both versions, the incoming file will have a number added to its name.\": { \"msgid\": \"If you select both versions, the incoming file will have a number added to its name.\", \"msgstr\": [\"Если вы выберете обе версии, к имени входящего файла будет добавлен номер.\"] }, \"Invalid filename\": { \"msgid\": \"Invalid filename\", \"msgstr\": [\"Неверное имя файла\"] }, \"Last modified date unknown\": { \"msgid\": \"Last modified date unknown\", \"msgstr\": [\"Дата последнего изменения неизвестна\"] }, \"New\": { \"msgid\": \"New\", \"msgstr\": [\"Новый\"] }, \"New filename\": { \"msgid\": \"New filename\", \"msgstr\": [\"Новое имя файла\"] }, \"New version\": { \"msgid\": \"New version\", \"msgstr\": [\"Новая версия\"] }, \"paused\": { \"msgid\": \"paused\", \"msgstr\": [\"приостановлено\"] }, \"Preview image\": { \"msgid\": \"Preview image\", \"msgstr\": [\"Предварительный просмотр\"] }, \"Rename\": { \"msgid\": \"Rename\", \"msgstr\": [\"Переименовать\"] }, \"Select all checkboxes\": { \"msgid\": \"Select all checkboxes\", \"msgstr\": [\"Выбрать все\"] }, \"Select all existing files\": { \"msgid\": \"Select all existing files\", \"msgstr\": [\"Выбрать все существующие файлы\"] }, \"Select all new files\": { \"msgid\": \"Select all new files\", \"msgstr\": [\"Выбрать все новые файлы\"] }, \"Skip\": { \"msgid\": \"Skip\", \"msgstr\": [\"Пропустить\"] }, \"Skip {count} file\": { \"msgid\": \"Skip {count} file\", \"msgid_plural\": \"Skip {count} files\", \"msgstr\": [\"Пропустить {count} файл\", \"Пропустить {count} файла\", \"Пропустить {count} файлов\", \"Пропустить {count} файлов\"] }, \"Skip this file\": { \"msgid\": \"Skip this file\", \"msgstr\": [\"Пропустить этот файл\"] }, \"Unknown size\": { \"msgid\": \"Unknown size\", \"msgstr\": [\"Неизвестный размер\"] }, \"Upload\": { \"msgid\": \"Upload\", \"msgstr\": [\"Загрузить\"] }, \"Upload files\": { \"msgid\": \"Upload files\", \"msgstr\": [\"Загрузить файлы\"] }, \"Upload folders\": { \"msgid\": \"Upload folders\", \"msgstr\": [\"Загрузить папки\"] }, \"Upload from device\": { \"msgid\": \"Upload from device\", \"msgstr\": [\"Загрузить с устройства\"] }, \"Upload has been cancelled\": { \"msgid\": \"Upload has been cancelled\", \"msgstr\": [\"Загрузка была отменена\"] }, \"Upload has been skipped\": { \"msgid\": \"Upload has been skipped\", \"msgstr\": [\"Загрузка была пропущена\"] }, 'Upload of \"{folder}\" has been skipped': { \"msgid\": 'Upload of \"{folder}\" has been skipped', \"msgstr\": [\"Загрузка «{folder}» была пропущена\"] }, \"Upload progress\": { \"msgid\": \"Upload progress\", \"msgstr\": [\"Прогресс загрузки\"] }, \"When an incoming folder is selected, any conflicting files within it will also be overwritten.\": { \"msgid\": \"When an incoming folder is selected, any conflicting files within it will also be overwritten.\", \"msgstr\": [\"Когда выбрана входящая папка, все конфликтующие файлы в ней также будут перезаписаны.\"] }, \"When an incoming folder is selected, the content is written into the existing folder and a recursive conflict resolution is performed.\": { \"msgid\": \"When an incoming folder is selected, the content is written into the existing folder and a recursive conflict resolution is performed.\", \"msgstr\": [\"Когда выбрана входящая папка, содержимое записывается в существующую папку и выполняется рекурсивное разрешение конфликтов.\"] }, \"Which files do you want to keep?\": { \"msgid\": \"Which files do you want to keep?\", \"msgstr\": [\"Какие файлы вы хотите сохранить?\"] }, \"You can either rename the file, skip this file or cancel the whole operation.\": { \"msgid\": \"You can either rename the file, skip this file or cancel the whole operation.\", \"msgstr\": [\"Вы можете переименовать файл, пропустить этот файл или отменить всю операцию.\"] }, \"You need to select at least one version of each file to continue.\": { \"msgid\": \"You need to select at least one version of each file to continue.\", \"msgstr\": [\"Для продолжения вам нужно выбрать по крайней мере одну версию каждого файла.\"] } } } } }, { \"locale\": \"sc\", \"json\": { \"charset\": \"utf-8\", \"headers\": { \"Last-Translator\": \"Transifex Bot <>, 2022\", \"Language-Team\": \"Sardinian (https://www.transifex.com/nextcloud/teams/64236/sc/)\", \"Content-Type\": \"text/plain; charset=UTF-8\", \"Language\": \"sc\", \"Plural-Forms\": \"nplurals=2; plural=(n != 1);\" }, \"translations\": { \"\": { \"\": { \"msgid\": \"\", \"comments\": { \"translator\": \"\\nTranslators:\\nTransifex Bot <>, 2022\\n\" }, \"msgstr\": [\"Last-Translator: Transifex Bot <>, 2022\\nLanguage-Team: Sardinian (https://www.transifex.com/nextcloud/teams/64236/sc/)\\nContent-Type: text/plain; charset=UTF-8\\nLanguage: sc\\nPlural-Forms: nplurals=2; plural=(n != 1);\\n\"] }, \"{estimate} seconds left\": { \"msgid\": \"{estimate} seconds left\", \"msgstr\": [\"\"] }, \"{hours} hours and {minutes} minutes left\": { \"msgid\": \"{hours} hours and {minutes} minutes left\", \"msgstr\": [\"\"] }, \"{minutes} minutes left\": { \"msgid\": \"{minutes} minutes left\", \"msgstr\": [\"\"] }, \"a few seconds left\": { \"msgid\": \"a few seconds left\", \"msgstr\": [\"\"] }, \"Add\": { \"msgid\": \"Add\", \"msgstr\": [\"\"] }, \"Cancel uploads\": { \"msgid\": \"Cancel uploads\", \"msgstr\": [\"\"] }, \"estimating time left\": { \"msgid\": \"estimating time left\", \"msgstr\": [\"\"] }, \"paused\": { \"msgid\": \"paused\", \"msgstr\": [\"\"] } } } } }, { \"locale\": \"si\", \"json\": { \"charset\": \"utf-8\", \"headers\": { \"Last-Translator\": \"Transifex Bot <>, 2022\", \"Language-Team\": \"Sinhala (https://www.transifex.com/nextcloud/teams/64236/si/)\", \"Content-Type\": \"text/plain; charset=UTF-8\", \"Language\": \"si\", \"Plural-Forms\": \"nplurals=2; plural=(n != 1);\" }, \"translations\": { \"\": { \"\": { \"msgid\": \"\", \"comments\": { \"translator\": \"\\nTranslators:\\nTransifex Bot <>, 2022\\n\" }, \"msgstr\": [\"Last-Translator: Transifex Bot <>, 2022\\nLanguage-Team: Sinhala (https://www.transifex.com/nextcloud/teams/64236/si/)\\nContent-Type: text/plain; charset=UTF-8\\nLanguage: si\\nPlural-Forms: nplurals=2; plural=(n != 1);\\n\"] }, \"{estimate} seconds left\": { \"msgid\": \"{estimate} seconds left\", \"msgstr\": [\"\"] }, \"{hours} hours and {minutes} minutes left\": { \"msgid\": \"{hours} hours and {minutes} minutes left\", \"msgstr\": [\"\"] }, \"{minutes} minutes left\": { \"msgid\": \"{minutes} minutes left\", \"msgstr\": [\"\"] }, \"a few seconds left\": { \"msgid\": \"a few seconds left\", \"msgstr\": [\"\"] }, \"Add\": { \"msgid\": \"Add\", \"msgstr\": [\"\"] }, \"Cancel uploads\": { \"msgid\": \"Cancel uploads\", \"msgstr\": [\"\"] }, \"estimating time left\": { \"msgid\": \"estimating time left\", \"msgstr\": [\"\"] }, \"paused\": { \"msgid\": \"paused\", \"msgstr\": [\"\"] } } } } }, { \"locale\": \"sk\", \"json\": { \"charset\": \"utf-8\", \"headers\": { \"Last-Translator\": \"Anton Krajcik , 2025\", \"Language-Team\": \"Slovak (Slovakia) (https://app.transifex.com/nextcloud/teams/64236/sk_SK/)\", \"Content-Type\": \"text/plain; charset=UTF-8\", \"Language\": \"sk_SK\", \"Plural-Forms\": \"nplurals=4; plural=(n % 1 == 0 && n == 1 ? 0 : n % 1 == 0 && n >= 2 && n <= 4 ? 1 : n % 1 != 0 ? 2: 3);\" }, \"translations\": { \"\": { \"\": { \"msgid\": \"\", \"comments\": { \"translator\": \"\\nTranslators:\\nJozef Gaal , 2024\\nLinker Linker , 2024\\nAnton Krajcik , 2025\\n\" }, \"msgstr\": [\"Last-Translator: Anton Krajcik , 2025\\nLanguage-Team: Slovak (Slovakia) (https://app.transifex.com/nextcloud/teams/64236/sk_SK/)\\nContent-Type: text/plain; charset=UTF-8\\nLanguage: sk_SK\\nPlural-Forms: nplurals=4; plural=(n % 1 == 0 && n == 1 ? 0 : n % 1 == 0 && n >= 2 && n <= 4 ? 1 : n % 1 != 0 ? 2: 3);\\n\"] }, '\"{segment}\" is a forbidden file or folder name.': { \"msgid\": '\"{segment}\" is a forbidden file or folder name.', \"msgstr\": [\"„{segment}“ je zakázaný názov súboru alebo priečinka.\"] }, '\"{segment}\" is a forbidden file type.': { \"msgid\": '\"{segment}\" is a forbidden file type.', \"msgstr\": ['\"{segment}\" je zákazaný typ súboru.'] }, '\"{segment}\" is not allowed inside a file or folder name.': { \"msgid\": '\"{segment}\" is not allowed inside a file or folder name.', \"msgstr\": ['\"{segment}“ je zakázané v názve súboru alebo adresára.'] }, \"{count} file conflict\": { \"msgid\": \"{count} file conflict\", \"msgid_plural\": \"{count} files conflict\", \"msgstr\": [\"{count} súbor má konflikt\", \"{count} súbory majú konflikt\", \"{count} súborov má konflikt\", \"{count} súborov má konflikt\"] }, \"{count} file conflict in {dirname}\": { \"msgid\": \"{count} file conflict in {dirname}\", \"msgid_plural\": \"{count} file conflicts in {dirname}\", \"msgstr\": [\"{count} súborový konflikt v {dirname}\", \"{count} súborové konflikty v {dirname}\", \"{count} súborových konfliktov v {dirname}\", \"{count} súborových konfliktov v {dirname}\"] }, \"{seconds} seconds left\": { \"msgid\": \"{seconds} seconds left\", \"msgid_plural\": \"{seconds} seconds left\", \"msgstr\": [\"{seconds} sekunda zostáva\", \"{seconds} sekúnd zostáva\", \"{seconds} sekúnd zostáva\", \"{seconds} sekundy zostávajú\"] }, \"{time} left\": { \"msgid\": \"{time} left\", \"comments\": { \"extracted\": \"TRANSLATORS time has the format 00:00:00\" }, \"msgstr\": [\"{time} zostáva\"] }, \"a few seconds left\": { \"msgid\": \"a few seconds left\", \"msgstr\": [\"zostáva niekoľko sekúnd\"] }, \"assembling\": { \"msgid\": \"assembling\", \"msgstr\": [\"zhromažďovanie\"] }, \"Cancel\": { \"msgid\": \"Cancel\", \"msgstr\": [\"Zrušiť\"] }, \"Cancel the entire operation\": { \"msgid\": \"Cancel the entire operation\", \"msgstr\": [\"Zrušiť celú operáciu\"] }, \"Cancel uploads\": { \"msgid\": \"Cancel uploads\", \"msgstr\": [\"Zrušiť nahrávanie\"] }, \"Continue\": { \"msgid\": \"Continue\", \"msgstr\": [\"Pokračovať\"] }, \"Create new\": { \"msgid\": \"Create new\", \"msgstr\": [\"Vytvoriť nové\"] }, \"estimating time left\": { \"msgid\": \"estimating time left\", \"msgstr\": [\"odhadovanie zostávajúceho času\"] }, \"Existing version\": { \"msgid\": \"Existing version\", \"msgstr\": [\"Existujúca verzia\"] }, \"Failed to assemble the chunks together\": { \"msgid\": \"Failed to assemble the chunks together\", \"msgstr\": [\"Nepodarilo sa dať časti dohromady.\"] }, \"Failed to upload the file\": { \"msgid\": \"Failed to upload the file\", \"msgstr\": [\"Nepodarilo sa nahrať súbor\"] }, 'Filenames must not end with \"{segment}\".': { \"msgid\": 'Filenames must not end with \"{segment}\".', \"msgstr\": ['Názvy súborov nesmú končiť znakom \"{segment}\".'] }, \"If you select both versions, the incoming file will have a number added to its name.\": { \"msgid\": \"If you select both versions, the incoming file will have a number added to its name.\", \"msgstr\": [\"Ak vyberiete obe verzie, k názvu prichádzajúceho súboru sa pridá číslo.\"] }, \"Invalid filename\": { \"msgid\": \"Invalid filename\", \"msgstr\": [\"Neplatný názov súboru\"] }, \"Last modified date unknown\": { \"msgid\": \"Last modified date unknown\", \"msgstr\": [\"Dátum poslednej úpravy neznámy\"] }, \"New\": { \"msgid\": \"New\", \"msgstr\": [\"Nový\"] }, \"New filename\": { \"msgid\": \"New filename\", \"msgstr\": [\"Nový názov súboru\"] }, \"New version\": { \"msgid\": \"New version\", \"msgstr\": [\"Nová verzia\"] }, \"paused\": { \"msgid\": \"paused\", \"msgstr\": [\"pozastavené\"] }, \"Preview image\": { \"msgid\": \"Preview image\", \"msgstr\": [\"Náhľad obrázka\"] }, \"Rename\": { \"msgid\": \"Rename\", \"msgstr\": [\"Premenovať\"] }, \"Select all checkboxes\": { \"msgid\": \"Select all checkboxes\", \"msgstr\": [\"Označiť všetky výberové políčka\"] }, \"Select all existing files\": { \"msgid\": \"Select all existing files\", \"msgstr\": [\"Vybrať všetky existujúce súbory\"] }, \"Select all new files\": { \"msgid\": \"Select all new files\", \"msgstr\": [\"Vybrať všetky nové súbory\"] }, \"Skip\": { \"msgid\": \"Skip\", \"msgstr\": [\"Preskočiť\"] }, \"Skip {count} file\": { \"msgid\": \"Skip {count} file\", \"msgid_plural\": \"Skip {count} files\", \"msgstr\": [\"Preskočiť {count} súbor\", \"Preskočiť {count} súborov\", \"Preskočiť {count} súborov\", \"Preskočiť {count} súbory\"] }, \"Skip this file\": { \"msgid\": \"Skip this file\", \"msgstr\": [\"Preskočiť tento súbor\"] }, \"Unknown size\": { \"msgid\": \"Unknown size\", \"msgstr\": [\"Neznáma veľkosť\"] }, \"Upload\": { \"msgid\": \"Upload\", \"msgstr\": [\"Nahrať\"] }, \"Upload files\": { \"msgid\": \"Upload files\", \"msgstr\": [\"Nahrať súbory\"] }, \"Upload folders\": { \"msgid\": \"Upload folders\", \"msgstr\": [\"Nahrať priečinky\"] }, \"Upload from device\": { \"msgid\": \"Upload from device\", \"msgstr\": [\"Nahrať zo zariadenia\"] }, \"Upload has been cancelled\": { \"msgid\": \"Upload has been cancelled\", \"msgstr\": [\"Nahrávanie bolo zrušené\"] }, \"Upload has been skipped\": { \"msgid\": \"Upload has been skipped\", \"msgstr\": [\"Nahrávanie bolo preskočené\"] }, 'Upload of \"{folder}\" has been skipped': { \"msgid\": 'Upload of \"{folder}\" has been skipped', \"msgstr\": ['Nahrávanie \"{folder}\" bolo preskočené'] }, \"Upload progress\": { \"msgid\": \"Upload progress\", \"msgstr\": [\"Priebeh nahrávania\"] }, \"When an incoming folder is selected, any conflicting files within it will also be overwritten.\": { \"msgid\": \"When an incoming folder is selected, any conflicting files within it will also be overwritten.\", \"msgstr\": [\"Keď je vybraný prichádzajúci priečinok, prepíšu sa aj všetky konfliktné súbory v ňom.\"] }, \"When an incoming folder is selected, the content is written into the existing folder and a recursive conflict resolution is performed.\": { \"msgid\": \"When an incoming folder is selected, the content is written into the existing folder and a recursive conflict resolution is performed.\", \"msgstr\": [\"Po výbere prichádzajúceho priečinka sa obsah zapíše do existujúceho priečinka a vykoná sa rekurzívne riešenie konfliktov.\"] }, \"Which files do you want to keep?\": { \"msgid\": \"Which files do you want to keep?\", \"msgstr\": [\"Ktoré súbory chcete ponechať?\"] }, \"You can either rename the file, skip this file or cancel the whole operation.\": { \"msgid\": \"You can either rename the file, skip this file or cancel the whole operation.\", \"msgstr\": [\"Súbor môžete premenovať, preskočiť alebo zrušiť celú operáciu.\"] }, \"You need to select at least one version of each file to continue.\": { \"msgid\": \"You need to select at least one version of each file to continue.\", \"msgstr\": [\"Ak chcete pokračovať, musíte vybrať aspoň jednu verziu každého súboru.\"] } } } } }, { \"locale\": \"sl\", \"json\": { \"charset\": \"utf-8\", \"headers\": { \"Last-Translator\": \"Simon Bogina, 2024\", \"Language-Team\": \"Slovenian (https://app.transifex.com/nextcloud/teams/64236/sl/)\", \"Content-Type\": \"text/plain; charset=UTF-8\", \"Language\": \"sl\", \"Plural-Forms\": \"nplurals=4; plural=(n%100==1 ? 0 : n%100==2 ? 1 : n%100==3 || n%100==4 ? 2 : 3);\" }, \"translations\": { \"\": { \"\": { \"msgid\": \"\", \"comments\": { \"translator\": \"\\nTranslators:\\nJoas Schilling, 2024\\nJan Kraljič , 2024\\nSimon Bogina, 2024\\n\" }, \"msgstr\": [\"Last-Translator: Simon Bogina, 2024\\nLanguage-Team: Slovenian (https://app.transifex.com/nextcloud/teams/64236/sl/)\\nContent-Type: text/plain; charset=UTF-8\\nLanguage: sl\\nPlural-Forms: nplurals=4; plural=(n%100==1 ? 0 : n%100==2 ? 1 : n%100==3 || n%100==4 ? 2 : 3);\\n\"] }, '\"{segment}\" is a forbidden file or folder name.': { \"msgid\": '\"{segment}\" is a forbidden file or folder name.', \"msgstr\": ['\"{segment}\" je prepovedano ime datoteka ali mape.'] }, '\"{segment}\" is a forbidden file type.': { \"msgid\": '\"{segment}\" is a forbidden file type.', \"msgstr\": ['\"{segment}\" je prepovedan tip datoteke.'] }, '\"{segment}\" is not allowed inside a file or folder name.': { \"msgid\": '\"{segment}\" is not allowed inside a file or folder name.', \"msgstr\": ['\"{segment}\" ni dovoljeno v imenu datoteke ali mape.'] }, \"{count} file conflict\": { \"msgid\": \"{count} file conflict\", \"msgid_plural\": \"{count} files conflict\", \"msgstr\": [\"1{count} datoteka je v konfliktu\", \"1{count} datoteki sta v konfiktu\", \"1{count} datotek je v konfliktu\", \"{count} datotek je v konfliktu\"] }, \"{count} file conflict in {dirname}\": { \"msgid\": \"{count} file conflict in {dirname}\", \"msgid_plural\": \"{count} file conflicts in {dirname}\", \"msgstr\": [\"{count} datoteka je v konfiktu v {dirname}\", \"{count} datoteki sta v konfiktu v {dirname}\", \"{count} datotek je v konfiktu v {dirname}\", \"{count} konfliktov datotek v {dirname}\"] }, \"{seconds} seconds left\": { \"msgid\": \"{seconds} seconds left\", \"msgstr\": [\"še {seconds} sekund\"] }, \"{time} left\": { \"msgid\": \"{time} left\", \"comments\": { \"extracted\": \"TRANSLATORS time has the format 00:00:00\" }, \"msgstr\": [\"še {time}\"] }, \"a few seconds left\": { \"msgid\": \"a few seconds left\", \"msgstr\": [\"še nekaj sekund\"] }, \"Cancel\": { \"msgid\": \"Cancel\", \"msgstr\": [\"Prekliči\"] }, \"Cancel the entire operation\": { \"msgid\": \"Cancel the entire operation\", \"msgstr\": [\"Prekliči celotni postopek\"] }, \"Cancel uploads\": { \"msgid\": \"Cancel uploads\", \"msgstr\": [\"Prekliči pošiljanje\"] }, \"Continue\": { \"msgid\": \"Continue\", \"msgstr\": [\"Nadaljuj\"] }, \"Create new\": { \"msgid\": \"Create new\", \"msgstr\": [\"Ustvari nov\"] }, \"estimating time left\": { \"msgid\": \"estimating time left\", \"msgstr\": [\"ocenjujem čas do konca\"] }, \"Existing version\": { \"msgid\": \"Existing version\", \"msgstr\": [\"Obstoječa različica\"] }, 'Filenames must not end with \"{segment}\".': { \"msgid\": 'Filenames must not end with \"{segment}\".', \"msgstr\": ['Imena datotek se ne smejo končati s \"{segment}\".'] }, \"If you select both versions, the incoming file will have a number added to its name.\": { \"msgid\": \"If you select both versions, the incoming file will have a number added to its name.\", \"msgstr\": [\"Če izberete obe različici, bo imenu dohodne datoteke na koncu dodana številka.\"] }, \"Invalid filename\": { \"msgid\": \"Invalid filename\", \"msgstr\": [\"Nepravilno ime datoteke\"] }, \"Last modified date unknown\": { \"msgid\": \"Last modified date unknown\", \"msgstr\": [\"Datum zadnje spremembe neznan\"] }, \"New\": { \"msgid\": \"New\", \"msgstr\": [\"Nov\"] }, \"New filename\": { \"msgid\": \"New filename\", \"msgstr\": [\"Novo ime datoteke\"] }, \"New version\": { \"msgid\": \"New version\", \"msgstr\": [\"Nova različica\"] }, \"paused\": { \"msgid\": \"paused\", \"msgstr\": [\"v premoru\"] }, \"Preview image\": { \"msgid\": \"Preview image\", \"msgstr\": [\"Predogled slike\"] }, \"Rename\": { \"msgid\": \"Rename\", \"msgstr\": [\"Preimenuj\"] }, \"Select all checkboxes\": { \"msgid\": \"Select all checkboxes\", \"msgstr\": [\"Izberi vsa potrditvena polja\"] }, \"Select all existing files\": { \"msgid\": \"Select all existing files\", \"msgstr\": [\"Označi vse obstoječe datoteke\"] }, \"Select all new files\": { \"msgid\": \"Select all new files\", \"msgstr\": [\"Označi vse nove datoteke\"] }, \"Skip\": { \"msgid\": \"Skip\", \"msgstr\": [\"Preskoči\"] }, \"Skip this file\": { \"msgid\": \"Skip this file\", \"msgid_plural\": \"Skip {count} files\", \"msgstr\": [\"Preskoči  datoteko\", \"Preskoči {count} datoteki\", \"Preskoči {count} datotek\", \"Preskoči {count} datotek\"] }, \"Unknown size\": { \"msgid\": \"Unknown size\", \"msgstr\": [\"Neznana velikost\"] }, \"Upload\": { \"msgid\": \"Upload\", \"msgstr\": [\"Naloži\"] }, \"Upload files\": { \"msgid\": \"Upload files\", \"msgstr\": [\"Naloži datoteke\"] }, \"Upload folders\": { \"msgid\": \"Upload folders\", \"msgstr\": [\"Naloži mape\"] }, \"Upload from device\": { \"msgid\": \"Upload from device\", \"msgstr\": [\"Naloži iz naprave\"] }, \"Upload has been cancelled\": { \"msgid\": \"Upload has been cancelled\", \"msgstr\": [\"Nalaganje je bilo preklicano\"] }, \"Upload has been skipped\": { \"msgid\": \"Upload has been skipped\", \"msgstr\": [\"Nalaganje je bilo preskočeno\"] }, 'Upload of \"{folder}\" has been skipped': { \"msgid\": 'Upload of \"{folder}\" has been skipped', \"msgstr\": ['Nalaganje \"{folder}\" je bilo preskočeno'] }, \"Upload progress\": { \"msgid\": \"Upload progress\", \"msgstr\": [\"Napredek nalaganja\"] }, \"When an incoming folder is selected, any conflicting files within it will also be overwritten.\": { \"msgid\": \"When an incoming folder is selected, any conflicting files within it will also be overwritten.\", \"msgstr\": [\"Ko je izbrana dohodna mapa, bodo vse datototeke v konfliktu znotraj nje prepisane.\"] }, \"When an incoming folder is selected, the content is written into the existing folder and a recursive conflict resolution is performed.\": { \"msgid\": \"When an incoming folder is selected, the content is written into the existing folder and a recursive conflict resolution is performed.\", \"msgstr\": [\"Ko je izbrana dohodna mapa, je vsebina vpisana v obstoječo mapo in je izvedeno rekurzivno reševanje konfliktov.\"] }, \"Which files do you want to keep?\": { \"msgid\": \"Which files do you want to keep?\", \"msgstr\": [\"Katere datoteke želite obdržati?\"] }, \"You can either rename the file, skip this file or cancel the whole operation.\": { \"msgid\": \"You can either rename the file, skip this file or cancel the whole operation.\", \"msgstr\": [\"Datoteko lahko preimenujete, preskočite ali prekličete celo operacijo.\"] }, \"You need to select at least one version of each file to continue.\": { \"msgid\": \"You need to select at least one version of each file to continue.\", \"msgstr\": [\"Izbrati morate vsaj eno različico vsake datoteke da nadaljujete.\"] } } } } }, { \"locale\": \"sq\", \"json\": { \"charset\": \"utf-8\", \"headers\": { \"Last-Translator\": \"Transifex Bot <>, 2022\", \"Language-Team\": \"Albanian (https://www.transifex.com/nextcloud/teams/64236/sq/)\", \"Content-Type\": \"text/plain; charset=UTF-8\", \"Language\": \"sq\", \"Plural-Forms\": \"nplurals=2; plural=(n != 1);\" }, \"translations\": { \"\": { \"\": { \"msgid\": \"\", \"comments\": { \"translator\": \"\\nTranslators:\\nTransifex Bot <>, 2022\\n\" }, \"msgstr\": [\"Last-Translator: Transifex Bot <>, 2022\\nLanguage-Team: Albanian (https://www.transifex.com/nextcloud/teams/64236/sq/)\\nContent-Type: text/plain; charset=UTF-8\\nLanguage: sq\\nPlural-Forms: nplurals=2; plural=(n != 1);\\n\"] }, \"{estimate} seconds left\": { \"msgid\": \"{estimate} seconds left\", \"msgstr\": [\"\"] }, \"{hours} hours and {minutes} minutes left\": { \"msgid\": \"{hours} hours and {minutes} minutes left\", \"msgstr\": [\"\"] }, \"{minutes} minutes left\": { \"msgid\": \"{minutes} minutes left\", \"msgstr\": [\"\"] }, \"a few seconds left\": { \"msgid\": \"a few seconds left\", \"msgstr\": [\"\"] }, \"Add\": { \"msgid\": \"Add\", \"msgstr\": [\"\"] }, \"Cancel uploads\": { \"msgid\": \"Cancel uploads\", \"msgstr\": [\"\"] }, \"estimating time left\": { \"msgid\": \"estimating time left\", \"msgstr\": [\"\"] }, \"paused\": { \"msgid\": \"paused\", \"msgstr\": [\"\"] } } } } }, { \"locale\": \"sr\", \"json\": { \"charset\": \"utf-8\", \"headers\": { \"Last-Translator\": \"Иван Пешић, 2025\", \"Language-Team\": \"Serbian (https://app.transifex.com/nextcloud/teams/64236/sr/)\", \"Content-Type\": \"text/plain; charset=UTF-8\", \"Language\": \"sr\", \"Plural-Forms\": \"nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);\" }, \"translations\": { \"\": { \"\": { \"msgid\": \"\", \"comments\": { \"translator\": \"\\nTranslators:\\nJoas Schilling, 2024\\nИван Пешић, 2025\\n\" }, \"msgstr\": [\"Last-Translator: Иван Пешић, 2025\\nLanguage-Team: Serbian (https://app.transifex.com/nextcloud/teams/64236/sr/)\\nContent-Type: text/plain; charset=UTF-8\\nLanguage: sr\\nPlural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);\\n\"] }, '\"{segment}\" is a forbidden file or folder name.': { \"msgid\": '\"{segment}\" is a forbidden file or folder name.', \"msgstr\": [\"„{segment}” је забрањено име фајла или фолдера.\"] }, '\"{segment}\" is a forbidden file type.': { \"msgid\": '\"{segment}\" is a forbidden file type.', \"msgstr\": [\"„{segment}” је забрањен тип фајла.\"] }, '\"{segment}\" is not allowed inside a file or folder name.': { \"msgid\": '\"{segment}\" is not allowed inside a file or folder name.', \"msgstr\": [\"„{segment}” није дозвољено унутар имена фајла или фолдера.\"] }, \"{count} file conflict\": { \"msgid\": \"{count} file conflict\", \"msgid_plural\": \"{count} files conflict\", \"msgstr\": [\"{count} фајл конфликт\", \"{count} фајл конфликта\", \"{count} фајл конфликта\"] }, \"{count} file conflict in {dirname}\": { \"msgid\": \"{count} file conflict in {dirname}\", \"msgid_plural\": \"{count} file conflicts in {dirname}\", \"msgstr\": [\"{count} фајл конфликт у {dirname}\", \"{count} фајл конфликта у {dirname}\", \"{count} фајл конфликта у {dirname}\"] }, \"{seconds} seconds left\": { \"msgid\": \"{seconds} seconds left\", \"msgid_plural\": \"{seconds} seconds left\", \"msgstr\": [\"преостало је {seconds} секунда\", \"преостало је {seconds} секунде\", \"преостало је {seconds} секунди\"] }, \"{time} left\": { \"msgid\": \"{time} left\", \"comments\": { \"extracted\": \"TRANSLATORS time has the format 00:00:00\" }, \"msgstr\": [\"{time} преостало\"] }, \"a few seconds left\": { \"msgid\": \"a few seconds left\", \"msgstr\": [\"преостало је неколико секунди\"] }, \"assembling\": { \"msgid\": \"assembling\", \"msgstr\": [\"састављање\"] }, \"Cancel\": { \"msgid\": \"Cancel\", \"msgstr\": [\"Откажи\"] }, \"Cancel the entire operation\": { \"msgid\": \"Cancel the entire operation\", \"msgstr\": [\"Отказује комплетну операцију\"] }, \"Cancel uploads\": { \"msgid\": \"Cancel uploads\", \"msgstr\": [\"Обустави отпремања\"] }, \"Continue\": { \"msgid\": \"Continue\", \"msgstr\": [\"Настави\"] }, \"Create new\": { \"msgid\": \"Create new\", \"msgstr\": [\"Креирај ново\"] }, \"estimating time left\": { \"msgid\": \"estimating time left\", \"msgstr\": [\"процена преосталог времена\"] }, \"Existing version\": { \"msgid\": \"Existing version\", \"msgstr\": [\"Постојећа верзија\"] }, \"Failed to assemble the chunks together\": { \"msgid\": \"Failed to assemble the chunks together\", \"msgstr\": [\"Није успело састављање делова\"] }, \"Failed to upload the file\": { \"msgid\": \"Failed to upload the file\", \"msgstr\": [\"Није успело отпремање фајла\"] }, 'Filenames must not end with \"{segment}\".': { \"msgid\": 'Filenames must not end with \"{segment}\".', \"msgstr\": [\"Имена фајлова не смеју да се завршавају на „{segment}”.\"] }, \"If you select both versions, the incoming file will have a number added to its name.\": { \"msgid\": \"If you select both versions, the incoming file will have a number added to its name.\", \"msgstr\": [\"Ако изаберете обе верзије, на име долазног фајла ће се додати број.\"] }, \"Invalid filename\": { \"msgid\": \"Invalid filename\", \"msgstr\": [\"Неисправно име фајла\"] }, \"Last modified date unknown\": { \"msgid\": \"Last modified date unknown\", \"msgstr\": [\"Није познат датум последње измене\"] }, \"New\": { \"msgid\": \"New\", \"msgstr\": [\"Ново\"] }, \"New filename\": { \"msgid\": \"New filename\", \"msgstr\": [\"Ново име фајла\"] }, \"New version\": { \"msgid\": \"New version\", \"msgstr\": [\"Нова верзија\"] }, \"paused\": { \"msgid\": \"paused\", \"msgstr\": [\"паузирано\"] }, \"Preview image\": { \"msgid\": \"Preview image\", \"msgstr\": [\"Слика прегледа\"] }, \"Rename\": { \"msgid\": \"Rename\", \"msgstr\": [\"Промени име\"] }, \"Select all checkboxes\": { \"msgid\": \"Select all checkboxes\", \"msgstr\": [\"Штиклирај сва поља за штиклирање\"] }, \"Select all existing files\": { \"msgid\": \"Select all existing files\", \"msgstr\": [\"Изабери све постојеће фајлове\"] }, \"Select all new files\": { \"msgid\": \"Select all new files\", \"msgstr\": [\"Изабери све нове фајлове\"] }, \"Skip\": { \"msgid\": \"Skip\", \"msgstr\": [\"Прескочи\"] }, \"Skip {count} file\": { \"msgid\": \"Skip {count} file\", \"msgid_plural\": \"Skip {count} files\", \"msgstr\": [\"Прескочи {count} фајл\", \"Прескочи {count} фајла\", \"Прескочи {count} фајлова\"] }, \"Skip this file\": { \"msgid\": \"Skip this file\", \"msgstr\": [\"Прескочи овај фајл\"] }, \"Unknown size\": { \"msgid\": \"Unknown size\", \"msgstr\": [\"Непозната величина\"] }, \"Upload\": { \"msgid\": \"Upload\", \"msgstr\": [\"Отпреми\"] }, \"Upload files\": { \"msgid\": \"Upload files\", \"msgstr\": [\"Отпреми фајлове\"] }, \"Upload folders\": { \"msgid\": \"Upload folders\", \"msgstr\": [\"Отпреми фолдере\"] }, \"Upload from device\": { \"msgid\": \"Upload from device\", \"msgstr\": [\"Отпреми са уређаја\"] }, \"Upload has been cancelled\": { \"msgid\": \"Upload has been cancelled\", \"msgstr\": [\"Отпремање је отказано\"] }, \"Upload has been skipped\": { \"msgid\": \"Upload has been skipped\", \"msgstr\": [\"Отпремање је прескочено\"] }, 'Upload of \"{folder}\" has been skipped': { \"msgid\": 'Upload of \"{folder}\" has been skipped', \"msgstr\": [\"Отпремање „{folder}”је прескочено\"] }, \"Upload progress\": { \"msgid\": \"Upload progress\", \"msgstr\": [\"Напредак отпремања\"] }, \"When an incoming folder is selected, any conflicting files within it will also be overwritten.\": { \"msgid\": \"When an incoming folder is selected, any conflicting files within it will also be overwritten.\", \"msgstr\": [\"Када се изабере долазни фолдер, сва имена фајлова са конфликтом унутар њега ће се такође преписати.\"] }, \"When an incoming folder is selected, the content is written into the existing folder and a recursive conflict resolution is performed.\": { \"msgid\": \"When an incoming folder is selected, the content is written into the existing folder and a recursive conflict resolution is performed.\", \"msgstr\": [\"Када се изабере долазни фолдер, садржај се уписује у постојећи фолдер и извршава се рекурзивно разрешавање конфликата.\"] }, \"Which files do you want to keep?\": { \"msgid\": \"Which files do you want to keep?\", \"msgstr\": [\"Које фајлове желите да задржите?\"] }, \"You can either rename the file, skip this file or cancel the whole operation.\": { \"msgid\": \"You can either rename the file, skip this file or cancel the whole operation.\", \"msgstr\": [\"Можете или да промените име фајлу, прескочите овај фајл или откажете комплетну операцију.\"] }, \"You need to select at least one version of each file to continue.\": { \"msgid\": \"You need to select at least one version of each file to continue.\", \"msgstr\": [\"Морате да изаберете барем једну верзију сваког фајла да наставите.\"] } } } } }, { \"locale\": \"sr@latin\", \"json\": { \"charset\": \"utf-8\", \"headers\": { \"Last-Translator\": \"Transifex Bot <>, 2022\", \"Language-Team\": \"Serbian (Latin) (https://www.transifex.com/nextcloud/teams/64236/sr@latin/)\", \"Content-Type\": \"text/plain; charset=UTF-8\", \"Language\": \"sr@latin\", \"Plural-Forms\": \"nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);\" }, \"translations\": { \"\": { \"\": { \"msgid\": \"\", \"comments\": { \"translator\": \"\\nTranslators:\\nTransifex Bot <>, 2022\\n\" }, \"msgstr\": [\"Last-Translator: Transifex Bot <>, 2022\\nLanguage-Team: Serbian (Latin) (https://www.transifex.com/nextcloud/teams/64236/sr@latin/)\\nContent-Type: text/plain; charset=UTF-8\\nLanguage: sr@latin\\nPlural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);\\n\"] }, \"{estimate} seconds left\": { \"msgid\": \"{estimate} seconds left\", \"msgstr\": [\"\"] }, \"{hours} hours and {minutes} minutes left\": { \"msgid\": \"{hours} hours and {minutes} minutes left\", \"msgstr\": [\"\"] }, \"{minutes} minutes left\": { \"msgid\": \"{minutes} minutes left\", \"msgstr\": [\"\"] }, \"a few seconds left\": { \"msgid\": \"a few seconds left\", \"msgstr\": [\"\"] }, \"Add\": { \"msgid\": \"Add\", \"msgstr\": [\"\"] }, \"Cancel uploads\": { \"msgid\": \"Cancel uploads\", \"msgstr\": [\"\"] }, \"estimating time left\": { \"msgid\": \"estimating time left\", \"msgstr\": [\"\"] }, \"paused\": { \"msgid\": \"paused\", \"msgstr\": [\"\"] } } } } }, { \"locale\": \"sv\", \"json\": { \"charset\": \"utf-8\", \"headers\": { \"Last-Translator\": \"Magnus Höglund, 2025\", \"Language-Team\": \"Swedish (https://app.transifex.com/nextcloud/teams/64236/sv/)\", \"Content-Type\": \"text/plain; charset=UTF-8\", \"Language\": \"sv\", \"Plural-Forms\": \"nplurals=2; plural=(n != 1);\" }, \"translations\": { \"\": { \"\": { \"msgid\": \"\", \"comments\": { \"translator\": \"\\nTranslators:\\nJoas Schilling, 2024\\nMagnus Höglund, 2025\\n\" }, \"msgstr\": [\"Last-Translator: Magnus Höglund, 2025\\nLanguage-Team: Swedish (https://app.transifex.com/nextcloud/teams/64236/sv/)\\nContent-Type: text/plain; charset=UTF-8\\nLanguage: sv\\nPlural-Forms: nplurals=2; plural=(n != 1);\\n\"] }, '\"{segment}\" is a forbidden file or folder name.': { \"msgid\": '\"{segment}\" is a forbidden file or folder name.', \"msgstr\": ['\"{segment}\" är ett förbjudet fil- eller mappnamn.'] }, '\"{segment}\" is a forbidden file type.': { \"msgid\": '\"{segment}\" is a forbidden file type.', \"msgstr\": ['\"{segment}\" är en förbjuden filtyp.'] }, '\"{segment}\" is not allowed inside a file or folder name.': { \"msgid\": '\"{segment}\" is not allowed inside a file or folder name.', \"msgstr\": ['\"{segment}\" är inte tillåtet i ett fil- eller mappnamn.'] }, \"{count} file conflict\": { \"msgid\": \"{count} file conflict\", \"msgid_plural\": \"{count} files conflict\", \"msgstr\": [\"{count} filkonflikt\", \"{count} filkonflikter\"] }, \"{count} file conflict in {dirname}\": { \"msgid\": \"{count} file conflict in {dirname}\", \"msgid_plural\": \"{count} file conflicts in {dirname}\", \"msgstr\": [\"{count} filkonflikt i {dirname}\", \"{count} filkonflikter i {dirname}\"] }, \"{seconds} seconds left\": { \"msgid\": \"{seconds} seconds left\", \"msgid_plural\": \"{seconds} seconds left\", \"msgstr\": [\"{seconds} sekunder kvar\", \"{seconds} sekunder kvar\"] }, \"{time} left\": { \"msgid\": \"{time} left\", \"comments\": { \"extracted\": \"TRANSLATORS time has the format 00:00:00\" }, \"msgstr\": [\"{time} kvarstår\"] }, \"a few seconds left\": { \"msgid\": \"a few seconds left\", \"msgstr\": [\"några sekunder kvar\"] }, \"assembling\": { \"msgid\": \"assembling\", \"msgstr\": [\"Sammanställer\"] }, \"Cancel\": { \"msgid\": \"Cancel\", \"msgstr\": [\"Avbryt\"] }, \"Cancel the entire operation\": { \"msgid\": \"Cancel the entire operation\", \"msgstr\": [\"Avbryt hela operationen\"] }, \"Cancel uploads\": { \"msgid\": \"Cancel uploads\", \"msgstr\": [\"Avbryt uppladdningar\"] }, \"Continue\": { \"msgid\": \"Continue\", \"msgstr\": [\"Fortsätt\"] }, \"Create new\": { \"msgid\": \"Create new\", \"msgstr\": [\"Skapa ny\"] }, \"estimating time left\": { \"msgid\": \"estimating time left\", \"msgstr\": [\"uppskattar kvarstående tid\"] }, \"Existing version\": { \"msgid\": \"Existing version\", \"msgstr\": [\"Nuvarande version\"] }, \"Failed to assemble the chunks together\": { \"msgid\": \"Failed to assemble the chunks together\", \"msgstr\": [\"Misslyckades med att sammanställa delarna\"] }, \"Failed to upload the file\": { \"msgid\": \"Failed to upload the file\", \"msgstr\": [\"Kunde inte ladda upp filen\"] }, 'Filenames must not end with \"{segment}\".': { \"msgid\": 'Filenames must not end with \"{segment}\".', \"msgstr\": ['Filnamn får inte sluta med \"{segment}\".'] }, \"If you select both versions, the incoming file will have a number added to its name.\": { \"msgid\": \"If you select both versions, the incoming file will have a number added to its name.\", \"msgstr\": [\"Om du väljer båda versionerna kommer den inkommande filen att läggas till ett nummer i namnet.\"] }, \"Invalid filename\": { \"msgid\": \"Invalid filename\", \"msgstr\": [\"Ogiltigt filnamn\"] }, \"Last modified date unknown\": { \"msgid\": \"Last modified date unknown\", \"msgstr\": [\"Senaste ändringsdatum okänt\"] }, \"New\": { \"msgid\": \"New\", \"msgstr\": [\"Ny\"] }, \"New filename\": { \"msgid\": \"New filename\", \"msgstr\": [\"Nytt filnamn\"] }, \"New version\": { \"msgid\": \"New version\", \"msgstr\": [\"Ny version\"] }, \"paused\": { \"msgid\": \"paused\", \"msgstr\": [\"pausad\"] }, \"Preview image\": { \"msgid\": \"Preview image\", \"msgstr\": [\"Förhandsgranska bild\"] }, \"Rename\": { \"msgid\": \"Rename\", \"msgstr\": [\"Byt namn\"] }, \"Select all checkboxes\": { \"msgid\": \"Select all checkboxes\", \"msgstr\": [\"Markera alla kryssrutor\"] }, \"Select all existing files\": { \"msgid\": \"Select all existing files\", \"msgstr\": [\"Välj alla befintliga filer\"] }, \"Select all new files\": { \"msgid\": \"Select all new files\", \"msgstr\": [\"Välj alla nya filer\"] }, \"Skip\": { \"msgid\": \"Skip\", \"msgstr\": [\"Hoppa över\"] }, \"Skip {count} file\": { \"msgid\": \"Skip {count} file\", \"msgid_plural\": \"Skip {count} files\", \"msgstr\": [\"Hoppa över {count} fil\", \"Hoppa över {count} filer\"] }, \"Skip this file\": { \"msgid\": \"Skip this file\", \"msgstr\": [\"Hoppa över denna fil\"] }, \"Unknown size\": { \"msgid\": \"Unknown size\", \"msgstr\": [\"Okänd storlek\"] }, \"Upload\": { \"msgid\": \"Upload\", \"msgstr\": [\"Ladda upp\"] }, \"Upload files\": { \"msgid\": \"Upload files\", \"msgstr\": [\"Ladda upp filer\"] }, \"Upload folders\": { \"msgid\": \"Upload folders\", \"msgstr\": [\"Ladda upp mappar\"] }, \"Upload from device\": { \"msgid\": \"Upload from device\", \"msgstr\": [\"Ladda upp från enhet\"] }, \"Upload has been cancelled\": { \"msgid\": \"Upload has been cancelled\", \"msgstr\": [\"Uppladdningen har avbrutits\"] }, \"Upload has been skipped\": { \"msgid\": \"Upload has been skipped\", \"msgstr\": [\"Uppladdningen har hoppats över\"] }, 'Upload of \"{folder}\" has been skipped': { \"msgid\": 'Upload of \"{folder}\" has been skipped', \"msgstr\": ['Uppladdningen av \"{folder}\" har hoppats över'] }, \"Upload progress\": { \"msgid\": \"Upload progress\", \"msgstr\": [\"Uppladdningsförlopp\"] }, \"When an incoming folder is selected, any conflicting files within it will also be overwritten.\": { \"msgid\": \"When an incoming folder is selected, any conflicting files within it will also be overwritten.\", \"msgstr\": [\"När en inkommande mapp väljs skrivs även alla konfliktande filer i den över.\"] }, \"When an incoming folder is selected, the content is written into the existing folder and a recursive conflict resolution is performed.\": { \"msgid\": \"When an incoming folder is selected, the content is written into the existing folder and a recursive conflict resolution is performed.\", \"msgstr\": [\"När en inkommande mapp väljs skrivs innehållet in i den befintliga mappen och en rekursiv konfliktlösning utförs.\"] }, \"Which files do you want to keep?\": { \"msgid\": \"Which files do you want to keep?\", \"msgstr\": [\"Vilka filer vill du behålla?\"] }, \"You can either rename the file, skip this file or cancel the whole operation.\": { \"msgid\": \"You can either rename the file, skip this file or cancel the whole operation.\", \"msgstr\": [\"Du kan antingen byta namn på filen, hoppa över den här filen eller avbryta hela operationen.\"] }, \"You need to select at least one version of each file to continue.\": { \"msgid\": \"You need to select at least one version of each file to continue.\", \"msgstr\": [\"Du måste välja minst en version av varje fil för att fortsätta.\"] } } } } }, { \"locale\": \"sw\", \"json\": { \"charset\": \"utf-8\", \"headers\": { \"Last-Translator\": \"Transifex Bot <>, 2022\", \"Language-Team\": \"Swahili (https://www.transifex.com/nextcloud/teams/64236/sw/)\", \"Content-Type\": \"text/plain; charset=UTF-8\", \"Language\": \"sw\", \"Plural-Forms\": \"nplurals=2; plural=(n != 1);\" }, \"translations\": { \"\": { \"\": { \"msgid\": \"\", \"comments\": { \"translator\": \"\\nTranslators:\\nTransifex Bot <>, 2022\\n\" }, \"msgstr\": [\"Last-Translator: Transifex Bot <>, 2022\\nLanguage-Team: Swahili (https://www.transifex.com/nextcloud/teams/64236/sw/)\\nContent-Type: text/plain; charset=UTF-8\\nLanguage: sw\\nPlural-Forms: nplurals=2; plural=(n != 1);\\n\"] }, \"{estimate} seconds left\": { \"msgid\": \"{estimate} seconds left\", \"msgstr\": [\"\"] }, \"{hours} hours and {minutes} minutes left\": { \"msgid\": \"{hours} hours and {minutes} minutes left\", \"msgstr\": [\"\"] }, \"{minutes} minutes left\": { \"msgid\": \"{minutes} minutes left\", \"msgstr\": [\"\"] }, \"a few seconds left\": { \"msgid\": \"a few seconds left\", \"msgstr\": [\"\"] }, \"Add\": { \"msgid\": \"Add\", \"msgstr\": [\"\"] }, \"Cancel uploads\": { \"msgid\": \"Cancel uploads\", \"msgstr\": [\"\"] }, \"estimating time left\": { \"msgid\": \"estimating time left\", \"msgstr\": [\"\"] }, \"paused\": { \"msgid\": \"paused\", \"msgstr\": [\"\"] } } } } }, { \"locale\": \"ta\", \"json\": { \"charset\": \"utf-8\", \"headers\": { \"Last-Translator\": \"Transifex Bot <>, 2022\", \"Language-Team\": \"Tamil (https://www.transifex.com/nextcloud/teams/64236/ta/)\", \"Content-Type\": \"text/plain; charset=UTF-8\", \"Language\": \"ta\", \"Plural-Forms\": \"nplurals=2; plural=(n != 1);\" }, \"translations\": { \"\": { \"\": { \"msgid\": \"\", \"comments\": { \"translator\": \"\\nTranslators:\\nTransifex Bot <>, 2022\\n\" }, \"msgstr\": [\"Last-Translator: Transifex Bot <>, 2022\\nLanguage-Team: Tamil (https://www.transifex.com/nextcloud/teams/64236/ta/)\\nContent-Type: text/plain; charset=UTF-8\\nLanguage: ta\\nPlural-Forms: nplurals=2; plural=(n != 1);\\n\"] }, \"{estimate} seconds left\": { \"msgid\": \"{estimate} seconds left\", \"msgstr\": [\"\"] }, \"{hours} hours and {minutes} minutes left\": { \"msgid\": \"{hours} hours and {minutes} minutes left\", \"msgstr\": [\"\"] }, \"{minutes} minutes left\": { \"msgid\": \"{minutes} minutes left\", \"msgstr\": [\"\"] }, \"a few seconds left\": { \"msgid\": \"a few seconds left\", \"msgstr\": [\"\"] }, \"Add\": { \"msgid\": \"Add\", \"msgstr\": [\"\"] }, \"Cancel uploads\": { \"msgid\": \"Cancel uploads\", \"msgstr\": [\"\"] }, \"estimating time left\": { \"msgid\": \"estimating time left\", \"msgstr\": [\"\"] }, \"paused\": { \"msgid\": \"paused\", \"msgstr\": [\"\"] } } } } }, { \"locale\": \"th\", \"json\": { \"charset\": \"utf-8\", \"headers\": { \"Last-Translator\": \"Phongpanot Phairat , 2022\", \"Language-Team\": \"Thai (Thailand) (https://www.transifex.com/nextcloud/teams/64236/th_TH/)\", \"Content-Type\": \"text/plain; charset=UTF-8\", \"Language\": \"th_TH\", \"Plural-Forms\": \"nplurals=1; plural=0;\" }, \"translations\": { \"\": { \"\": { \"msgid\": \"\", \"comments\": { \"translator\": \"\\nTranslators:\\nPhongpanot Phairat , 2022\\n\" }, \"msgstr\": [\"Last-Translator: Phongpanot Phairat , 2022\\nLanguage-Team: Thai (Thailand) (https://www.transifex.com/nextcloud/teams/64236/th_TH/)\\nContent-Type: text/plain; charset=UTF-8\\nLanguage: th_TH\\nPlural-Forms: nplurals=1; plural=0;\\n\"] }, \"{seconds} seconds left\": { \"msgid\": \"{seconds} seconds left\", \"msgstr\": [\"เหลืออีก {seconds} วินาที\"] }, \"{time} left\": { \"msgid\": \"{time} left\", \"comments\": { \"extracted\": \"time has the format 00:00:00\" }, \"msgstr\": [\"เหลืออีก {time}\"] }, \"a few seconds left\": { \"msgid\": \"a few seconds left\", \"msgstr\": [\"เหลืออีกไม่กี่วินาที\"] }, \"Add\": { \"msgid\": \"Add\", \"msgstr\": [\"เพิ่ม\"] }, \"Cancel uploads\": { \"msgid\": \"Cancel uploads\", \"msgstr\": [\"ยกเลิกการอัปโหลด\"] }, \"estimating time left\": { \"msgid\": \"estimating time left\", \"msgstr\": [\"กำลังคำนวณเวลาที่เหลือ\"] }, \"paused\": { \"msgid\": \"paused\", \"msgstr\": [\"หยุดชั่วคราว\"] }, \"Upload files\": { \"msgid\": \"Upload files\", \"msgstr\": [\"อัปโหลดไฟล์\"] } } } } }, { \"locale\": \"tk\", \"json\": { \"charset\": \"utf-8\", \"headers\": { \"Last-Translator\": \"Transifex Bot <>, 2022\", \"Language-Team\": \"Turkmen (https://www.transifex.com/nextcloud/teams/64236/tk/)\", \"Content-Type\": \"text/plain; charset=UTF-8\", \"Language\": \"tk\", \"Plural-Forms\": \"nplurals=2; plural=(n != 1);\" }, \"translations\": { \"\": { \"\": { \"msgid\": \"\", \"comments\": { \"translator\": \"\\nTranslators:\\nTransifex Bot <>, 2022\\n\" }, \"msgstr\": [\"Last-Translator: Transifex Bot <>, 2022\\nLanguage-Team: Turkmen (https://www.transifex.com/nextcloud/teams/64236/tk/)\\nContent-Type: text/plain; charset=UTF-8\\nLanguage: tk\\nPlural-Forms: nplurals=2; plural=(n != 1);\\n\"] }, \"{estimate} seconds left\": { \"msgid\": \"{estimate} seconds left\", \"msgstr\": [\"\"] }, \"{hours} hours and {minutes} minutes left\": { \"msgid\": \"{hours} hours and {minutes} minutes left\", \"msgstr\": [\"\"] }, \"{minutes} minutes left\": { \"msgid\": \"{minutes} minutes left\", \"msgstr\": [\"\"] }, \"a few seconds left\": { \"msgid\": \"a few seconds left\", \"msgstr\": [\"\"] }, \"Add\": { \"msgid\": \"Add\", \"msgstr\": [\"\"] }, \"Cancel uploads\": { \"msgid\": \"Cancel uploads\", \"msgstr\": [\"\"] }, \"estimating time left\": { \"msgid\": \"estimating time left\", \"msgstr\": [\"\"] }, \"paused\": { \"msgid\": \"paused\", \"msgstr\": [\"\"] } } } } }, { \"locale\": \"tr\", \"json\": { \"charset\": \"utf-8\", \"headers\": { \"Last-Translator\": \"Kaya Zeren , 2025\", \"Language-Team\": \"Turkish (https://app.transifex.com/nextcloud/teams/64236/tr/)\", \"Content-Type\": \"text/plain; charset=UTF-8\", \"Language\": \"tr\", \"Plural-Forms\": \"nplurals=2; plural=(n > 1);\" }, \"translations\": { \"\": { \"\": { \"msgid\": \"\", \"comments\": { \"translator\": \"\\nTranslators:\\nJoas Schilling, 2024\\nKaya Zeren , 2025\\n\" }, \"msgstr\": [\"Last-Translator: Kaya Zeren , 2025\\nLanguage-Team: Turkish (https://app.transifex.com/nextcloud/teams/64236/tr/)\\nContent-Type: text/plain; charset=UTF-8\\nLanguage: tr\\nPlural-Forms: nplurals=2; plural=(n > 1);\\n\"] }, '\"{segment}\" is a forbidden file or folder name.': { \"msgid\": '\"{segment}\" is a forbidden file or folder name.', \"msgstr\": ['\"{segment}\" dosya ya da klasör adına izin verilmiyor.'] }, '\"{segment}\" is a forbidden file type.': { \"msgid\": '\"{segment}\" is a forbidden file type.', \"msgstr\": ['\"{segment}\" dosya türüne izin verilmiyor.'] }, '\"{segment}\" is not allowed inside a file or folder name.': { \"msgid\": '\"{segment}\" is not allowed inside a file or folder name.', \"msgstr\": ['Bir dosya ya da klasör adında \"{segment}\" ifadesine izin verilmiyor.'] }, \"{count} file conflict\": { \"msgid\": \"{count} file conflict\", \"msgid_plural\": \"{count} files conflict\", \"msgstr\": [\"{count} dosya çakışması var\", \"{count} dosya çakışması var\"] }, \"{count} file conflict in {dirname}\": { \"msgid\": \"{count} file conflict in {dirname}\", \"msgid_plural\": \"{count} file conflicts in {dirname}\", \"msgstr\": [\"{dirname} klasöründe {count} dosya çakışması var\", \"{dirname} klasöründe {count} dosya çakışması var\"] }, \"{seconds} seconds left\": { \"msgid\": \"{seconds} seconds left\", \"msgid_plural\": \"{seconds} seconds left\", \"msgstr\": [\"{seconds} saniye kaldı\", \"{seconds} saniye kaldı\"] }, \"{time} left\": { \"msgid\": \"{time} left\", \"comments\": { \"extracted\": \"TRANSLATORS time has the format 00:00:00\" }, \"msgstr\": [\"{time} kaldı\"] }, \"a few seconds left\": { \"msgid\": \"a few seconds left\", \"msgstr\": [\"bir kaç saniye kaldı\"] }, \"assembling\": { \"msgid\": \"assembling\", \"msgstr\": [\"birleştiriliyor\"] }, \"Cancel\": { \"msgid\": \"Cancel\", \"msgstr\": [\"İptal\"] }, \"Cancel the entire operation\": { \"msgid\": \"Cancel the entire operation\", \"msgstr\": [\"Tüm işlemi iptal et\"] }, \"Cancel uploads\": { \"msgid\": \"Cancel uploads\", \"msgstr\": [\"Yüklemeleri iptal et\"] }, \"Continue\": { \"msgid\": \"Continue\", \"msgstr\": [\"İlerle\"] }, \"Create new\": { \"msgid\": \"Create new\", \"msgstr\": [\"Yeni ekle\"] }, \"estimating time left\": { \"msgid\": \"estimating time left\", \"msgstr\": [\"öngörülen kalan süre\"] }, \"Existing version\": { \"msgid\": \"Existing version\", \"msgstr\": [\"Var olan sürüm\"] }, \"Failed to assemble the chunks together\": { \"msgid\": \"Failed to assemble the chunks together\", \"msgstr\": [\"Parçalar birleştirilemedi\"] }, \"Failed to upload the file\": { \"msgid\": \"Failed to upload the file\", \"msgstr\": [\"Dosya yüklenemedi\"] }, 'Filenames must not end with \"{segment}\".': { \"msgid\": 'Filenames must not end with \"{segment}\".', \"msgstr\": ['Dosya adları \"{segment}\" ile bitmemeli.'] }, \"If you select both versions, the incoming file will have a number added to its name.\": { \"msgid\": \"If you select both versions, the incoming file will have a number added to its name.\", \"msgstr\": [\"İki sürümü de seçerseniz, gelen dosyanın adına bir sayı eklenir.\"] }, \"Invalid filename\": { \"msgid\": \"Invalid filename\", \"msgstr\": [\"Dosya adı geçersiz\"] }, \"Last modified date unknown\": { \"msgid\": \"Last modified date unknown\", \"msgstr\": [\"Son değiştirilme tarihi bilinmiyor\"] }, \"New\": { \"msgid\": \"New\", \"msgstr\": [\"Yeni\"] }, \"New filename\": { \"msgid\": \"New filename\", \"msgstr\": [\"Yeni dosya adı\"] }, \"New version\": { \"msgid\": \"New version\", \"msgstr\": [\"Yeni sürüm\"] }, \"paused\": { \"msgid\": \"paused\", \"msgstr\": [\"duraklatıldı\"] }, \"Preview image\": { \"msgid\": \"Preview image\", \"msgstr\": [\"Görsel ön izlemesi\"] }, \"Rename\": { \"msgid\": \"Rename\", \"msgstr\": [\"Yeniden adlandır\"] }, \"Select all checkboxes\": { \"msgid\": \"Select all checkboxes\", \"msgstr\": [\"Tüm kutuları işaretle\"] }, \"Select all existing files\": { \"msgid\": \"Select all existing files\", \"msgstr\": [\"Tüm var olan dosyaları seç\"] }, \"Select all new files\": { \"msgid\": \"Select all new files\", \"msgstr\": [\"Tüm yeni dosyaları seç\"] }, \"Skip\": { \"msgid\": \"Skip\", \"msgstr\": [\"Atla\"] }, \"Skip {count} file\": { \"msgid\": \"Skip {count} file\", \"msgid_plural\": \"Skip {count} files\", \"msgstr\": [\"{count} dosyayı atla\", \"{count} dosyayı atla\"] }, \"Skip this file\": { \"msgid\": \"Skip this file\", \"msgstr\": [\"Bu dosyayı atla\"] }, \"Unknown size\": { \"msgid\": \"Unknown size\", \"msgstr\": [\"Boyut bilinmiyor\"] }, \"Upload\": { \"msgid\": \"Upload\", \"msgstr\": [\"Yükle\"] }, \"Upload files\": { \"msgid\": \"Upload files\", \"msgstr\": [\"Dosyaları yükle\"] }, \"Upload folders\": { \"msgid\": \"Upload folders\", \"msgstr\": [\"Klasörleri yükle\"] }, \"Upload from device\": { \"msgid\": \"Upload from device\", \"msgstr\": [\"Aygıttan yükle\"] }, \"Upload has been cancelled\": { \"msgid\": \"Upload has been cancelled\", \"msgstr\": [\"Yükleme iptal edildi\"] }, \"Upload has been skipped\": { \"msgid\": \"Upload has been skipped\", \"msgstr\": [\"Yükleme atlandı\"] }, 'Upload of \"{folder}\" has been skipped': { \"msgid\": 'Upload of \"{folder}\" has been skipped', \"msgstr\": ['\"{folder}\" klasörünün yüklenmesi atlandı'] }, \"Upload progress\": { \"msgid\": \"Upload progress\", \"msgstr\": [\"Yükleme ilerlemesi\"] }, \"When an incoming folder is selected, any conflicting files within it will also be overwritten.\": { \"msgid\": \"When an incoming folder is selected, any conflicting files within it will also be overwritten.\", \"msgstr\": [\"Bir gelen klasör seçildiğinde, içindeki çakışan dosyaların da üzerine yazılır.\"] }, \"When an incoming folder is selected, the content is written into the existing folder and a recursive conflict resolution is performed.\": { \"msgid\": \"When an incoming folder is selected, the content is written into the existing folder and a recursive conflict resolution is performed.\", \"msgstr\": [\"Bir gelen klasörü seçildiğinde içerik var olan klasöre yazılır ve yinelemeli bir çakışma çözümü uygulanır.\"] }, \"Which files do you want to keep?\": { \"msgid\": \"Which files do you want to keep?\", \"msgstr\": [\"Hangi dosyaları tutmak istiyorsunuz?\"] }, \"You can either rename the file, skip this file or cancel the whole operation.\": { \"msgid\": \"You can either rename the file, skip this file or cancel the whole operation.\", \"msgstr\": [\"Dosya adını değiştirebilir, bu dosyayı atlayabilir ya da tüm işlemi iptal edebilirsiniz.\"] }, \"You need to select at least one version of each file to continue.\": { \"msgid\": \"You need to select at least one version of each file to continue.\", \"msgstr\": [\"İlerlemek için her dosyanın en az bir sürümünü seçmelisiniz.\"] } } } } }, { \"locale\": \"ug\", \"json\": { \"charset\": \"utf-8\", \"headers\": { \"Last-Translator\": \"Transifex Bot <>, 2022\", \"Language-Team\": \"Uyghur (https://www.transifex.com/nextcloud/teams/64236/ug/)\", \"Content-Type\": \"text/plain; charset=UTF-8\", \"Language\": \"ug\", \"Plural-Forms\": \"nplurals=2; plural=(n != 1);\" }, \"translations\": { \"\": { \"\": { \"msgid\": \"\", \"comments\": { \"translator\": \"\\nTranslators:\\nTransifex Bot <>, 2022\\n\" }, \"msgstr\": [\"Last-Translator: Transifex Bot <>, 2022\\nLanguage-Team: Uyghur (https://www.transifex.com/nextcloud/teams/64236/ug/)\\nContent-Type: text/plain; charset=UTF-8\\nLanguage: ug\\nPlural-Forms: nplurals=2; plural=(n != 1);\\n\"] }, \"{estimate} seconds left\": { \"msgid\": \"{estimate} seconds left\", \"msgstr\": [\"\"] }, \"{hours} hours and {minutes} minutes left\": { \"msgid\": \"{hours} hours and {minutes} minutes left\", \"msgstr\": [\"\"] }, \"{minutes} minutes left\": { \"msgid\": \"{minutes} minutes left\", \"msgstr\": [\"\"] }, \"a few seconds left\": { \"msgid\": \"a few seconds left\", \"msgstr\": [\"\"] }, \"Add\": { \"msgid\": \"Add\", \"msgstr\": [\"\"] }, \"Cancel uploads\": { \"msgid\": \"Cancel uploads\", \"msgstr\": [\"\"] }, \"estimating time left\": { \"msgid\": \"estimating time left\", \"msgstr\": [\"\"] }, \"paused\": { \"msgid\": \"paused\", \"msgstr\": [\"\"] } } } } }, { \"locale\": \"uk\", \"json\": { \"charset\": \"utf-8\", \"headers\": { \"Last-Translator\": \"O St, 2025\", \"Language-Team\": \"Ukrainian (https://app.transifex.com/nextcloud/teams/64236/uk/)\", \"Content-Type\": \"text/plain; charset=UTF-8\", \"Language\": \"uk\", \"Plural-Forms\": \"nplurals=4; plural=(n % 1 == 0 && n % 10 == 1 && n % 100 != 11 ? 0 : n % 1 == 0 && n % 10 >= 2 && n % 10 <= 4 && (n % 100 < 12 || n % 100 > 14) ? 1 : n % 1 == 0 && (n % 10 ==0 || (n % 10 >=5 && n % 10 <=9) || (n % 100 >=11 && n % 100 <=14 )) ? 2: 3);\" }, \"translations\": { \"\": { \"\": { \"msgid\": \"\", \"comments\": { \"translator\": \"\\nTranslators:\\nJoas Schilling, 2024\\nO St, 2025\\n\" }, \"msgstr\": [\"Last-Translator: O St, 2025\\nLanguage-Team: Ukrainian (https://app.transifex.com/nextcloud/teams/64236/uk/)\\nContent-Type: text/plain; charset=UTF-8\\nLanguage: uk\\nPlural-Forms: nplurals=4; plural=(n % 1 == 0 && n % 10 == 1 && n % 100 != 11 ? 0 : n % 1 == 0 && n % 10 >= 2 && n % 10 <= 4 && (n % 100 < 12 || n % 100 > 14) ? 1 : n % 1 == 0 && (n % 10 ==0 || (n % 10 >=5 && n % 10 <=9) || (n % 100 >=11 && n % 100 <=14 )) ? 2: 3);\\n\"] }, '\"{segment}\" is a forbidden file or folder name.': { \"msgid\": '\"{segment}\" is a forbidden file or folder name.', \"msgstr\": [`\"{segment}\" недозволене ім'я файлу або каталогу.`] }, '\"{segment}\" is a forbidden file type.': { \"msgid\": '\"{segment}\" is a forbidden file type.', \"msgstr\": ['\"{segment}\" недозволений тип файлу.'] }, '\"{segment}\" is not allowed inside a file or folder name.': { \"msgid\": '\"{segment}\" is not allowed inside a file or folder name.', \"msgstr\": ['\"{segment}\" недозволене сполучення символів в назві файлу або каталогу.'] }, \"{count} file conflict\": { \"msgid\": \"{count} file conflict\", \"msgid_plural\": \"{count} files conflict\", \"msgstr\": [\"{count} конфліктний файл\", \"{count} конфліктних файли\", \"{count} конфліктних файлів\", \"{count} конфліктних файлів\"] }, \"{count} file conflict in {dirname}\": { \"msgid\": \"{count} file conflict in {dirname}\", \"msgid_plural\": \"{count} file conflicts in {dirname}\", \"msgstr\": [\"{count} конфліктний файл у каталозі {dirname}\", \"{count} конфліктних файли у каталозі {dirname}\", \"{count} конфліктних файлів у каталозі {dirname}\", \"{count} конфліктних файлів у каталозі {dirname}\"] }, \"{seconds} seconds left\": { \"msgid\": \"{seconds} seconds left\", \"msgid_plural\": \"{seconds} seconds left\", \"msgstr\": [\"{seconds} секунда залишилася\", \"{seconds} секунди залишилося\", \"{seconds} секунд залишилося\", \"{seconds} секунд залишилося\"] }, \"{time} left\": { \"msgid\": \"{time} left\", \"comments\": { \"extracted\": \"TRANSLATORS time has the format 00:00:00\" }, \"msgstr\": [\"Залишилося {time}\"] }, \"a few seconds left\": { \"msgid\": \"a few seconds left\", \"msgstr\": [\"залишилося кілька секунд\"] }, \"assembling\": { \"msgid\": \"assembling\", \"msgstr\": [\"збірка\"] }, \"Cancel\": { \"msgid\": \"Cancel\", \"msgstr\": [\"Скасувати\"] }, \"Cancel the entire operation\": { \"msgid\": \"Cancel the entire operation\", \"msgstr\": [\"Скасувати операцію повністю\"] }, \"Cancel uploads\": { \"msgid\": \"Cancel uploads\", \"msgstr\": [\"Скасувати завантаження\"] }, \"Continue\": { \"msgid\": \"Continue\", \"msgstr\": [\"Продовжити\"] }, \"Create new\": { \"msgid\": \"Create new\", \"msgstr\": [\"Створити новий\"] }, \"estimating time left\": { \"msgid\": \"estimating time left\", \"msgstr\": [\"оцінка часу, що залишився\"] }, \"Existing version\": { \"msgid\": \"Existing version\", \"msgstr\": [\"Присутня версія\"] }, \"Failed to assemble the chunks together\": { \"msgid\": \"Failed to assemble the chunks together\", \"msgstr\": [\"Не вдалося зібрати частинки докупи\"] }, \"Failed to upload the file\": { \"msgid\": \"Failed to upload the file\", \"msgstr\": [\"Не вдалося завантажити файл\"] }, 'Filenames must not end with \"{segment}\".': { \"msgid\": 'Filenames must not end with \"{segment}\".', \"msgstr\": [`Ім'я файлів не можуть закінчуватися на \"{segment}\".`] }, \"If you select both versions, the incoming file will have a number added to its name.\": { \"msgid\": \"If you select both versions, the incoming file will have a number added to its name.\", \"msgstr\": [\"Якщо буде вибрано обидві версії, до імени вхідного файлу було додано цифру.\"] }, \"Invalid filename\": { \"msgid\": \"Invalid filename\", \"msgstr\": [\"Недійсне ім'я файлу\"] }, \"Last modified date unknown\": { \"msgid\": \"Last modified date unknown\", \"msgstr\": [\"Дата останньої зміни невідома\"] }, \"New\": { \"msgid\": \"New\", \"msgstr\": [\"Нове\"] }, \"New filename\": { \"msgid\": \"New filename\", \"msgstr\": [\"Нове ім'я файлу\"] }, \"New version\": { \"msgid\": \"New version\", \"msgstr\": [\"Нова версія\"] }, \"paused\": { \"msgid\": \"paused\", \"msgstr\": [\"призупинено\"] }, \"Preview image\": { \"msgid\": \"Preview image\", \"msgstr\": [\"Попередній перегляд\"] }, \"Rename\": { \"msgid\": \"Rename\", \"msgstr\": [\"Перейменувати\"] }, \"Select all checkboxes\": { \"msgid\": \"Select all checkboxes\", \"msgstr\": [\"Вибрати все\"] }, \"Select all existing files\": { \"msgid\": \"Select all existing files\", \"msgstr\": [\"Вибрати усі присутні файли\"] }, \"Select all new files\": { \"msgid\": \"Select all new files\", \"msgstr\": [\"Вибрати усі нові файли\"] }, \"Skip\": { \"msgid\": \"Skip\", \"msgstr\": [\"Пропустити\"] }, \"Skip {count} file\": { \"msgid\": \"Skip {count} file\", \"msgid_plural\": \"Skip {count} files\", \"msgstr\": [\"Пропустити {count} файл\", \"Пропустити {count} файли\", \"Пропустити {count} файлів\", \"Пропустити {count} файлів\"] }, \"Skip this file\": { \"msgid\": \"Skip this file\", \"msgstr\": [\"Пропустити цей файл\"] }, \"Unknown size\": { \"msgid\": \"Unknown size\", \"msgstr\": [\"Невідомий розмір\"] }, \"Upload\": { \"msgid\": \"Upload\", \"msgstr\": [\"Завантажити\"] }, \"Upload files\": { \"msgid\": \"Upload files\", \"msgstr\": [\"Завантажити файли\"] }, \"Upload folders\": { \"msgid\": \"Upload folders\", \"msgstr\": [\"Завантажити каталоги\"] }, \"Upload from device\": { \"msgid\": \"Upload from device\", \"msgstr\": [\"Завантажити з пристрою\"] }, \"Upload has been cancelled\": { \"msgid\": \"Upload has been cancelled\", \"msgstr\": [\"Завантаження скасовано\"] }, \"Upload has been skipped\": { \"msgid\": \"Upload has been skipped\", \"msgstr\": [\"Завантаження пропущено\"] }, 'Upload of \"{folder}\" has been skipped': { \"msgid\": 'Upload of \"{folder}\" has been skipped', \"msgstr\": ['Завантаження \"{folder}\" пропущено'] }, \"Upload progress\": { \"msgid\": \"Upload progress\", \"msgstr\": [\"Поступ завантаження\"] }, \"When an incoming folder is selected, any conflicting files within it will also be overwritten.\": { \"msgid\": \"When an incoming folder is selected, any conflicting files within it will also be overwritten.\", \"msgstr\": [\"Усі конфліктні файли у вибраному каталозі призначення буде перезаписано поверх.\"] }, \"When an incoming folder is selected, the content is written into the existing folder and a recursive conflict resolution is performed.\": { \"msgid\": \"When an incoming folder is selected, the content is written into the existing folder and a recursive conflict resolution is performed.\", \"msgstr\": [\"Якщо буде вибрано вхідний каталог, вміст буде записано до наявного каталогу та вирішено конфлікти у відповідних файлах каталогу та підкаталогів.\"] }, \"Which files do you want to keep?\": { \"msgid\": \"Which files do you want to keep?\", \"msgstr\": [\"Які файли залишити?\"] }, \"You can either rename the file, skip this file or cancel the whole operation.\": { \"msgid\": \"You can either rename the file, skip this file or cancel the whole operation.\", \"msgstr\": [\"Ви можете або перейменувати цей файл, пропустити або скасувати дію з файлом.\"] }, \"You need to select at least one version of each file to continue.\": { \"msgid\": \"You need to select at least one version of each file to continue.\", \"msgstr\": [\"Для продовження потрібно вибрати принаймні одну версію для кожного файлу.\"] } } } } }, { \"locale\": \"ur_PK\", \"json\": { \"charset\": \"utf-8\", \"headers\": { \"Last-Translator\": \"Transifex Bot <>, 2022\", \"Language-Team\": \"Urdu (Pakistan) (https://www.transifex.com/nextcloud/teams/64236/ur_PK/)\", \"Content-Type\": \"text/plain; charset=UTF-8\", \"Language\": \"ur_PK\", \"Plural-Forms\": \"nplurals=2; plural=(n != 1);\" }, \"translations\": { \"\": { \"\": { \"msgid\": \"\", \"comments\": { \"translator\": \"\\nTranslators:\\nTransifex Bot <>, 2022\\n\" }, \"msgstr\": [\"Last-Translator: Transifex Bot <>, 2022\\nLanguage-Team: Urdu (Pakistan) (https://www.transifex.com/nextcloud/teams/64236/ur_PK/)\\nContent-Type: text/plain; charset=UTF-8\\nLanguage: ur_PK\\nPlural-Forms: nplurals=2; plural=(n != 1);\\n\"] }, \"{estimate} seconds left\": { \"msgid\": \"{estimate} seconds left\", \"msgstr\": [\"\"] }, \"{hours} hours and {minutes} minutes left\": { \"msgid\": \"{hours} hours and {minutes} minutes left\", \"msgstr\": [\"\"] }, \"{minutes} minutes left\": { \"msgid\": \"{minutes} minutes left\", \"msgstr\": [\"\"] }, \"a few seconds left\": { \"msgid\": \"a few seconds left\", \"msgstr\": [\"\"] }, \"Add\": { \"msgid\": \"Add\", \"msgstr\": [\"\"] }, \"Cancel uploads\": { \"msgid\": \"Cancel uploads\", \"msgstr\": [\"\"] }, \"estimating time left\": { \"msgid\": \"estimating time left\", \"msgstr\": [\"\"] }, \"paused\": { \"msgid\": \"paused\", \"msgstr\": [\"\"] } } } } }, { \"locale\": \"uz\", \"json\": { \"charset\": \"utf-8\", \"headers\": { \"Last-Translator\": \"Khurshid Ibatov , 2025\", \"Language-Team\": \"Uzbek (https://app.transifex.com/nextcloud/teams/64236/uz/)\", \"Content-Type\": \"text/plain; charset=UTF-8\", \"Language\": \"uz\", \"Plural-Forms\": \"nplurals=1; plural=0;\" }, \"translations\": { \"\": { \"\": { \"msgid\": \"\", \"comments\": { \"translator\": \"\\nTranslators:\\nKhurshid Ibatov , 2025\\n\" }, \"msgstr\": [\"Last-Translator: Khurshid Ibatov , 2025\\nLanguage-Team: Uzbek (https://app.transifex.com/nextcloud/teams/64236/uz/)\\nContent-Type: text/plain; charset=UTF-8\\nLanguage: uz\\nPlural-Forms: nplurals=1; plural=0;\\n\"] }, '\"{segment}\" is a forbidden file or folder name.': { \"msgid\": '\"{segment}\" is a forbidden file or folder name.', \"msgstr\": ['\"{segment}\" taqiqlangan fayl yoki papka nomidir.'] }, '\"{segment}\" is a forbidden file type.': { \"msgid\": '\"{segment}\" is a forbidden file type.', \"msgstr\": ['\"{segment}\" taqiqlangan fayl turi hisoblanadi.'] }, '\"{segment}\" is not allowed inside a file or folder name.': { \"msgid\": '\"{segment}\" is not allowed inside a file or folder name.', \"msgstr\": ['\"{segment}\" fayl yoki papka nomi ichida ruxsat berilmaydi.'] }, \"{count} file conflict\": { \"msgid\": \"{count} file conflict\", \"msgid_plural\": \"{count} files conflict\", \"msgstr\": [\"{count} fayllar ziddiyati\"] }, \"{count} file conflict in {dirname}\": { \"msgid\": \"{count} file conflict in {dirname}\", \"msgid_plural\": \"{count} file conflicts in {dirname}\", \"msgstr\": [\"{count}fayl ziddiyatlari {dirname} da\"] }, \"{seconds} seconds left\": { \"msgid\": \"{seconds} seconds left\", \"msgid_plural\": \"{seconds} seconds left\", \"msgstr\": [\"{seconds} soniya qoldi\"] }, \"{time} left\": { \"msgid\": \"{time} left\", \"comments\": { \"extracted\": \"TRANSLATORS time has the format 00:00:00\" }, \"msgstr\": [\"{time} qoldi\"] }, \"a few seconds left\": { \"msgid\": \"a few seconds left\", \"msgstr\": [\"bir necha soniya qoldi\"] }, \"assembling\": { \"msgid\": \"assembling\", \"msgstr\": [\"yig'ish\"] }, \"Cancel\": { \"msgid\": \"Cancel\", \"msgstr\": [\"Bekor qilish\"] }, \"Cancel the entire operation\": { \"msgid\": \"Cancel the entire operation\", \"msgstr\": [\"Butun operatsiyani bekor qiling\"] }, \"Cancel uploads\": { \"msgid\": \"Cancel uploads\", \"msgstr\": [\"Yuklashni bekor qilish\"] }, \"Continue\": { \"msgid\": \"Continue\", \"msgstr\": [\"Davom eting\"] }, \"Create new\": { \"msgid\": \"Create new\", \"msgstr\": [\"Yangi yaratish\"] }, \"estimating time left\": { \"msgid\": \"estimating time left\", \"msgstr\": [\"qolgan vaqtni hisoblash\"] }, \"Existing version\": { \"msgid\": \"Existing version\", \"msgstr\": [\"Mavjud versiya\"] }, \"Failed to assemble the chunks together\": { \"msgid\": \"Failed to assemble the chunks together\", \"msgstr\": [\"Bo'laklarni birlashtirib bo'lmadi\"] }, \"Failed to upload the file\": { \"msgid\": \"Failed to upload the file\", \"msgstr\": [\"Fayl yuklanmadi\"] }, 'Filenames must not end with \"{segment}\".': { \"msgid\": 'Filenames must not end with \"{segment}\".', \"msgstr\": ['Fayl nomlari bilan tugamasligi kerak \"{segment}\".'] }, \"If you select both versions, the incoming file will have a number added to its name.\": { \"msgid\": \"If you select both versions, the incoming file will have a number added to its name.\", \"msgstr\": [\"Agar siz ikkala versiyani tanlasangiz, kiruvchi fayl nomiga qo'shilgan raqamga ega bo'ladi.\"] }, \"Invalid filename\": { \"msgid\": \"Invalid filename\", \"msgstr\": [\"Fayl nomi noto‘g‘ri\"] }, \"Last modified date unknown\": { \"msgid\": \"Last modified date unknown\", \"msgstr\": [\"Oxirgi tahrirlangan sana noma'lum\"] }, \"New\": { \"msgid\": \"New\", \"msgstr\": [\"Yangi\"] }, \"New filename\": { \"msgid\": \"New filename\", \"msgstr\": [\"Yangi nom faylga\"] }, \"New version\": { \"msgid\": \"New version\", \"msgstr\": [\"Yangi versiya\"] }, \"paused\": { \"msgid\": \"paused\", \"msgstr\": [\"tanaffus\"] }, \"Preview image\": { \"msgid\": \"Preview image\", \"msgstr\": [\"Rasmni oldindan ko'rish\"] }, \"Rename\": { \"msgid\": \"Rename\", \"msgstr\": [\"Qayta nomlash\"] }, \"Select all checkboxes\": { \"msgid\": \"Select all checkboxes\", \"msgstr\": [\"Barcha katakchalarni belgilang\"] }, \"Select all existing files\": { \"msgid\": \"Select all existing files\", \"msgstr\": [\"Barcha mavjud fayllarni tanlang\"] }, \"Select all new files\": { \"msgid\": \"Select all new files\", \"msgstr\": [\"Barcha yangi fayllarni tanlang\"] }, \"Skip\": { \"msgid\": \"Skip\", \"msgstr\": [\"Oʻtkazib yuborish\"] }, \"Skip {count} file\": { \"msgid\": \"Skip {count} file\", \"msgid_plural\": \"Skip {count} files\", \"msgstr\": [\"Oʻtkazib yuborish {count} fayllarini\"] }, \"Skip this file\": { \"msgid\": \"Skip this file\", \"msgstr\": [\"Oʻtkazib yuborish ushbu faylni\"] }, \"Unknown size\": { \"msgid\": \"Unknown size\", \"msgstr\": [\"Noma'lum o'lcham\"] }, \"Upload\": { \"msgid\": \"Upload\", \"msgstr\": [\"Yuklash\"] }, \"Upload files\": { \"msgid\": \"Upload files\", \"msgstr\": [\"Fayllarni yuklash\"] }, \"Upload folders\": { \"msgid\": \"Upload folders\", \"msgstr\": [\"Jildlarni yuklash\"] }, \"Upload from device\": { \"msgid\": \"Upload from device\", \"msgstr\": [\"Qurilmadan yuklash\"] }, \"Upload has been cancelled\": { \"msgid\": \"Upload has been cancelled\", \"msgstr\": [\"Yuklash bekor qilindi\"] }, \"Upload has been skipped\": { \"msgid\": \"Upload has been skipped\", \"msgstr\": [\"Yuklash oʻtkazib yuborildi\"] }, 'Upload of \"{folder}\" has been skipped': { \"msgid\": 'Upload of \"{folder}\" has been skipped', \"msgstr\": [' \"{folder}\" ni yuklash bekor qilindi'] }, \"Upload progress\": { \"msgid\": \"Upload progress\", \"msgstr\": [\"Yuklash jarayoni\"] }, \"When an incoming folder is selected, any conflicting files within it will also be overwritten.\": { \"msgid\": \"When an incoming folder is selected, any conflicting files within it will also be overwritten.\", \"msgstr\": [\"Kiruvchi jild tanlanganda, undagi har qanday ziddiyatli fayllar ham ustiga yoziladi.\"] }, \"When an incoming folder is selected, the content is written into the existing folder and a recursive conflict resolution is performed.\": { \"msgid\": \"When an incoming folder is selected, the content is written into the existing folder and a recursive conflict resolution is performed.\", \"msgstr\": [\"Kiruvchi jild tanlanganda, kontent mavjud jildga yoziladi va nizolarni rekursiv hal qilish amalga oshiriladi.\"] }, \"Which files do you want to keep?\": { \"msgid\": \"Which files do you want to keep?\", \"msgstr\": [\"Qaysi fayllarni saqlamoqchisiz?\"] }, \"You can either rename the file, skip this file or cancel the whole operation.\": { \"msgid\": \"You can either rename the file, skip this file or cancel the whole operation.\", \"msgstr\": [\"Siz fayl nomini o'zgartirishingiz, ushbu faylni o'tkazib yuborishingiz yoki butun operatsiyani bekor qilishingiz mumkin.\"] }, \"You need to select at least one version of each file to continue.\": { \"msgid\": \"You need to select at least one version of each file to continue.\", \"msgstr\": [\"Davom etish uchun har bir faylning kamida bitta versiyasini tanlashingiz kerak.\"] } } } } }, { \"locale\": \"vi\", \"json\": { \"charset\": \"utf-8\", \"headers\": { \"Last-Translator\": \"nhatCreA, 2025\", \"Language-Team\": \"Vietnamese (https://app.transifex.com/nextcloud/teams/64236/vi/)\", \"Content-Type\": \"text/plain; charset=UTF-8\", \"Language\": \"vi\", \"Plural-Forms\": \"nplurals=1; plural=0;\" }, \"translations\": { \"\": { \"\": { \"msgid\": \"\", \"comments\": { \"translator\": \"\\nTranslators:\\nJoas Schilling, 2024\\nnhatCreA, 2025\\n\" }, \"msgstr\": [\"Last-Translator: nhatCreA, 2025\\nLanguage-Team: Vietnamese (https://app.transifex.com/nextcloud/teams/64236/vi/)\\nContent-Type: text/plain; charset=UTF-8\\nLanguage: vi\\nPlural-Forms: nplurals=1; plural=0;\\n\"] }, '\"{segment}\" is a forbidden file or folder name.': { \"msgid\": '\"{segment}\" is a forbidden file or folder name.', \"msgstr\": ['\"{segment}\" là tên thư mục bị cấm đặt.'] }, '\"{segment}\" is a forbidden file type.': { \"msgid\": '\"{segment}\" is a forbidden file type.', \"msgstr\": ['\"{segment}\" là loại tệp bị cấm.'] }, '\"{segment}\" is not allowed inside a file or folder name.': { \"msgid\": '\"{segment}\" is not allowed inside a file or folder name.', \"msgstr\": ['\"{segment}\" không được phép đặt trong tên tệp hoặc thư mục.'] }, \"{count} file conflict\": { \"msgid\": \"{count} file conflict\", \"msgid_plural\": \"{count} files conflict\", \"msgstr\": [\"{count} tệp tin xung đột\"] }, \"{count} file conflict in {dirname}\": { \"msgid\": \"{count} file conflict in {dirname}\", \"msgid_plural\": \"{count} file conflicts in {dirname}\", \"msgstr\": ['\"{count}\" tệp tin lỗi ở thư mục \"{dirname}\"'] }, \"{seconds} seconds left\": { \"msgid\": \"{seconds} seconds left\", \"msgid_plural\": \"{seconds} seconds left\", \"msgstr\": [\"{seconds} giây trước\"] }, \"{time} left\": { \"msgid\": \"{time} left\", \"comments\": { \"extracted\": \"TRANSLATORS time has the format 00:00:00\" }, \"msgstr\": [\"{time} trước\"] }, \"a few seconds left\": { \"msgid\": \"a few seconds left\", \"msgstr\": [\"vài giây trước\"] }, \"assembling\": { \"msgid\": \"assembling\", \"msgstr\": [\"đang cấu trúc\"] }, \"Cancel\": { \"msgid\": \"Cancel\", \"msgstr\": [\"Huỷ\"] }, \"Cancel the entire operation\": { \"msgid\": \"Cancel the entire operation\", \"msgstr\": [\"Huỷ toàn bộ thao tác\"] }, \"Cancel uploads\": { \"msgid\": \"Cancel uploads\", \"msgstr\": [\"Huỷ tải lên\"] }, \"Continue\": { \"msgid\": \"Continue\", \"msgstr\": [\"Tiếp Tục\"] }, \"Create new\": { \"msgid\": \"Create new\", \"msgstr\": [\"Tạo mới\"] }, \"estimating time left\": { \"msgid\": \"estimating time left\", \"msgstr\": [\"ước tính thời gian còn lại\"] }, \"Existing version\": { \"msgid\": \"Existing version\", \"msgstr\": [\"Phiên bản hiện tại\"] }, \"Failed to assemble the chunks together\": { \"msgid\": \"Failed to assemble the chunks together\", \"msgstr\": [\"Không thể assemble các chunks lại với nhau\"] }, \"Failed to upload the file\": { \"msgid\": \"Failed to upload the file\", \"msgstr\": [\"Tải lên tệp tin thất bại\"] }, 'Filenames must not end with \"{segment}\".': { \"msgid\": 'Filenames must not end with \"{segment}\".', \"msgstr\": ['Tên tập tin không được kết thúc bằng \"{segment}\".'] }, \"If you select both versions, the incoming file will have a number added to its name.\": { \"msgid\": \"If you select both versions, the incoming file will have a number added to its name.\", \"msgstr\": [\"Nếu bạn chọn cả hai, tệp tin đến sẽ có thêm một chữ số vào tên.\"] }, \"Invalid filename\": { \"msgid\": \"Invalid filename\", \"msgstr\": [\"Tên tệp tin không hợp lệ\"] }, \"Last modified date unknown\": { \"msgid\": \"Last modified date unknown\", \"msgstr\": [\"Ngày sửa dổi lần cuối không xác định\"] }, \"New\": { \"msgid\": \"New\", \"msgstr\": [\"Tạo Mới\"] }, \"New filename\": { \"msgid\": \"New filename\", \"msgstr\": [\"Tên tệp tin mới\"] }, \"New version\": { \"msgid\": \"New version\", \"msgstr\": [\"Phiên bản mới\"] }, \"paused\": { \"msgid\": \"paused\", \"msgstr\": [\"đã tạm dừng\"] }, \"Preview image\": { \"msgid\": \"Preview image\", \"msgstr\": [\"Xem trước ảnh\"] }, \"Rename\": { \"msgid\": \"Rename\", \"msgstr\": [\"Đổi tên\"] }, \"Select all checkboxes\": { \"msgid\": \"Select all checkboxes\", \"msgstr\": [\"Chọn tất cả\"] }, \"Select all existing files\": { \"msgid\": \"Select all existing files\", \"msgstr\": [\"Chọn tất cả các tập tin đang tồn tại\"] }, \"Select all new files\": { \"msgid\": \"Select all new files\", \"msgstr\": [\"Chọn tất cả các tập tin mới\"] }, \"Skip\": { \"msgid\": \"Skip\", \"msgstr\": [\"Bỏ qua\"] }, \"Skip {count} file\": { \"msgid\": \"Skip {count} file\", \"msgid_plural\": \"Skip {count} files\", \"msgstr\": [\"Bỏ qua {count} tệp\"] }, \"Skip this file\": { \"msgid\": \"Skip this file\", \"msgstr\": [\"Bỏ qua tệp này\"] }, \"Unknown size\": { \"msgid\": \"Unknown size\", \"msgstr\": [\"Không rõ dung lượng\"] }, \"Upload\": { \"msgid\": \"Upload\", \"msgstr\": [\"Tải Lên\"] }, \"Upload files\": { \"msgid\": \"Upload files\", \"msgstr\": [\"Tải lên tệp tin\"] }, \"Upload folders\": { \"msgid\": \"Upload folders\", \"msgstr\": [\"Tải lên thư mục\"] }, \"Upload from device\": { \"msgid\": \"Upload from device\", \"msgstr\": [\"Tải lên từ thiết bị\"] }, \"Upload has been cancelled\": { \"msgid\": \"Upload has been cancelled\", \"msgstr\": [\"Tải lên đã bị huỷ\"] }, \"Upload has been skipped\": { \"msgid\": \"Upload has been skipped\", \"msgstr\": [\"Tải lên đã bỏ qua\"] }, 'Upload of \"{folder}\" has been skipped': { \"msgid\": 'Upload of \"{folder}\" has been skipped', \"msgstr\": ['Tải lên \"{folder}\" đã bị bỏ qua'] }, \"Upload progress\": { \"msgid\": \"Upload progress\", \"msgstr\": [\"Tiến trình tải lên\"] }, \"When an incoming folder is selected, any conflicting files within it will also be overwritten.\": { \"msgid\": \"When an incoming folder is selected, any conflicting files within it will also be overwritten.\", \"msgstr\": [\"Khi bạn chọn một thư mục để đưa vào, bất kỳ tệp nào trong đó gây xung đột cũng sẽ bị ghi đè.\"] }, \"When an incoming folder is selected, the content is written into the existing folder and a recursive conflict resolution is performed.\": { \"msgid\": \"When an incoming folder is selected, the content is written into the existing folder and a recursive conflict resolution is performed.\", \"msgstr\": [\"Khi chọn một thư mục để đưa vào, nội dung sẽ được ghi vào thư mục hiện có, và hệ thống sẽ tự động giải quyết các xung đột một cách chi tiết và cẩn thận.\"] }, \"Which files do you want to keep?\": { \"msgid\": \"Which files do you want to keep?\", \"msgstr\": [\"Bạn muốn giữ tệp nào?\"] }, \"You can either rename the file, skip this file or cancel the whole operation.\": { \"msgid\": \"You can either rename the file, skip this file or cancel the whole operation.\", \"msgstr\": [\"Bạn có thể đổi tên tệp, bỏ qua tệp này, hoặc hủy toàn bộ thao tác.\"] }, \"You need to select at least one version of each file to continue.\": { \"msgid\": \"You need to select at least one version of each file to continue.\", \"msgstr\": [\"Bạn cần chọn ít nhất một phiên bản cho mỗi tệp để tiếp tục.\"] } } } } }, { \"locale\": \"zh_CN\", \"json\": { \"charset\": \"utf-8\", \"headers\": { \"Last-Translator\": \"DWXXX, 2025\", \"Language-Team\": \"Chinese (China) (https://app.transifex.com/nextcloud/teams/64236/zh_CN/)\", \"Content-Type\": \"text/plain; charset=UTF-8\", \"Language\": \"zh_CN\", \"Plural-Forms\": \"nplurals=1; plural=0;\" }, \"translations\": { \"\": { \"\": { \"msgid\": \"\", \"comments\": { \"translator\": \"\\nTranslators:\\nJoas Schilling, 2024\\ngloryandel, 2024\\nDWXXX, 2025\\n\" }, \"msgstr\": [\"Last-Translator: DWXXX, 2025\\nLanguage-Team: Chinese (China) (https://app.transifex.com/nextcloud/teams/64236/zh_CN/)\\nContent-Type: text/plain; charset=UTF-8\\nLanguage: zh_CN\\nPlural-Forms: nplurals=1; plural=0;\\n\"] }, '\"{segment}\" is a forbidden file or folder name.': { \"msgid\": '\"{segment}\" is a forbidden file or folder name.', \"msgstr\": ['\"{segment}\" 是被禁止的文件名或文件夹名。'] }, '\"{segment}\" is a forbidden file type.': { \"msgid\": '\"{segment}\" is a forbidden file type.', \"msgstr\": ['\"{segment}\" 是被禁止的文件类型。'] }, '\"{segment}\" is not allowed inside a file or folder name.': { \"msgid\": '\"{segment}\" is not allowed inside a file or folder name.', \"msgstr\": ['\"{segment}\" 不允许包含在文件名或文件夹名中。'] }, \"{count} file conflict\": { \"msgid\": \"{count} file conflict\", \"msgid_plural\": \"{count} files conflict\", \"msgstr\": [\"{count}文件冲突\"] }, \"{count} file conflict in {dirname}\": { \"msgid\": \"{count} file conflict in {dirname}\", \"msgid_plural\": \"{count} file conflicts in {dirname}\", \"msgstr\": [\"在{dirname}目录下有{count}个文件冲突\"] }, \"{seconds} seconds left\": { \"msgid\": \"{seconds} seconds left\", \"msgid_plural\": \"{seconds} seconds left\", \"msgstr\": [\"剩余{seconds} 秒\"] }, \"{time} left\": { \"msgid\": \"{time} left\", \"comments\": { \"extracted\": \"TRANSLATORS time has the format 00:00:00\" }, \"msgstr\": [\"剩余 {time}\"] }, \"a few seconds left\": { \"msgid\": \"a few seconds left\", \"msgstr\": [\"还剩几秒\"] }, \"assembling\": { \"msgid\": \"assembling\", \"msgstr\": [\"聚合\"] }, \"Cancel\": { \"msgid\": \"Cancel\", \"msgstr\": [\"取消\"] }, \"Cancel the entire operation\": { \"msgid\": \"Cancel the entire operation\", \"msgstr\": [\"取消整个操作\"] }, \"Cancel uploads\": { \"msgid\": \"Cancel uploads\", \"msgstr\": [\"取消上传\"] }, \"Continue\": { \"msgid\": \"Continue\", \"msgstr\": [\"继续\"] }, \"Create new\": { \"msgid\": \"Create new\", \"msgstr\": [\"新建\"] }, \"estimating time left\": { \"msgid\": \"estimating time left\", \"msgstr\": [\"估计剩余时间\"] }, \"Existing version\": { \"msgid\": \"Existing version\", \"msgstr\": [\"服务端版本\"] }, \"Failed to assemble the chunks together\": { \"msgid\": \"Failed to assemble the chunks together\", \"msgstr\": [\"组合区块失败\"] }, \"Failed to upload the file\": { \"msgid\": \"Failed to upload the file\", \"msgstr\": [\"上传文件失败\"] }, 'Filenames must not end with \"{segment}\".': { \"msgid\": 'Filenames must not end with \"{segment}\".', \"msgstr\": ['文件名不得以 \"{segment}\" 结尾。'] }, \"If you select both versions, the incoming file will have a number added to its name.\": { \"msgid\": \"If you select both versions, the incoming file will have a number added to its name.\", \"msgstr\": [\"如果同时选择两个版本,则上传文件的名称中将添加一个数字。\"] }, \"Invalid filename\": { \"msgid\": \"Invalid filename\", \"msgstr\": [\"无效文件名\"] }, \"Last modified date unknown\": { \"msgid\": \"Last modified date unknown\", \"msgstr\": [\"文件最后修改日期未知\"] }, \"New\": { \"msgid\": \"New\", \"msgstr\": [\"新建\"] }, \"New filename\": { \"msgid\": \"New filename\", \"msgstr\": [\"新文件名\"] }, \"New version\": { \"msgid\": \"New version\", \"msgstr\": [\"上传版本\"] }, \"paused\": { \"msgid\": \"paused\", \"msgstr\": [\"已暂停\"] }, \"Preview image\": { \"msgid\": \"Preview image\", \"msgstr\": [\"图片预览\"] }, \"Rename\": { \"msgid\": \"Rename\", \"msgstr\": [\"重命名\"] }, \"Select all checkboxes\": { \"msgid\": \"Select all checkboxes\", \"msgstr\": [\"选择所有的选择框\"] }, \"Select all existing files\": { \"msgid\": \"Select all existing files\", \"msgstr\": [\"保留所有服务端版本\"] }, \"Select all new files\": { \"msgid\": \"Select all new files\", \"msgstr\": [\"保留所有上传版本\"] }, \"Skip\": { \"msgid\": \"Skip\", \"msgstr\": [\"跳过\"] }, \"Skip {count} file\": { \"msgid\": \"Skip {count} file\", \"msgid_plural\": \"Skip {count} files\", \"msgstr\": [\"跳过 {count} 文件\"] }, \"Skip this file\": { \"msgid\": \"Skip this file\", \"msgstr\": [\"跳过此文件\"] }, \"Unknown size\": { \"msgid\": \"Unknown size\", \"msgstr\": [\"文件大小未知\"] }, \"Upload\": { \"msgid\": \"Upload\", \"msgstr\": [\"上传\"] }, \"Upload files\": { \"msgid\": \"Upload files\", \"msgstr\": [\"上传文件\"] }, \"Upload folders\": { \"msgid\": \"Upload folders\", \"msgstr\": [\"上传文件夹\"] }, \"Upload from device\": { \"msgid\": \"Upload from device\", \"msgstr\": [\"从设备上传\"] }, \"Upload has been cancelled\": { \"msgid\": \"Upload has been cancelled\", \"msgstr\": [\"上传已取消\"] }, \"Upload has been skipped\": { \"msgid\": \"Upload has been skipped\", \"msgstr\": [\"上传已跳过\"] }, 'Upload of \"{folder}\" has been skipped': { \"msgid\": 'Upload of \"{folder}\" has been skipped', \"msgstr\": ['已跳过上传\"{folder}\"'] }, \"Upload progress\": { \"msgid\": \"Upload progress\", \"msgstr\": [\"上传进度\"] }, \"When an incoming folder is selected, any conflicting files within it will also be overwritten.\": { \"msgid\": \"When an incoming folder is selected, any conflicting files within it will also be overwritten.\", \"msgstr\": [\"当选择上传文件夹时,其中任何冲突的文件也都会被覆盖。\"] }, \"When an incoming folder is selected, the content is written into the existing folder and a recursive conflict resolution is performed.\": { \"msgid\": \"When an incoming folder is selected, the content is written into the existing folder and a recursive conflict resolution is performed.\", \"msgstr\": [\"选择上传文件夹后,内容将写入现有文件夹,并递归执行冲突解决。\"] }, \"Which files do you want to keep?\": { \"msgid\": \"Which files do you want to keep?\", \"msgstr\": [\"你要保留哪些文件?\"] }, \"You can either rename the file, skip this file or cancel the whole operation.\": { \"msgid\": \"You can either rename the file, skip this file or cancel the whole operation.\", \"msgstr\": [\"您可以重命名文件、跳过此文件或取消整个操作。\"] }, \"You need to select at least one version of each file to continue.\": { \"msgid\": \"You need to select at least one version of each file to continue.\", \"msgstr\": [\"每个文件至少选择保留一个版本\"] } } } } }, { \"locale\": \"zh_HK\", \"json\": { \"charset\": \"utf-8\", \"headers\": { \"Last-Translator\": \"Café Tango, 2025\", \"Language-Team\": \"Chinese (Hong Kong) (https://app.transifex.com/nextcloud/teams/64236/zh_HK/)\", \"Content-Type\": \"text/plain; charset=UTF-8\", \"Language\": \"zh_HK\", \"Plural-Forms\": \"nplurals=1; plural=0;\" }, \"translations\": { \"\": { \"\": { \"msgid\": \"\", \"comments\": { \"translator\": \"\\nTranslators:\\nJoas Schilling, 2024\\nCafé Tango, 2025\\n\" }, \"msgstr\": [\"Last-Translator: Café Tango, 2025\\nLanguage-Team: Chinese (Hong Kong) (https://app.transifex.com/nextcloud/teams/64236/zh_HK/)\\nContent-Type: text/plain; charset=UTF-8\\nLanguage: zh_HK\\nPlural-Forms: nplurals=1; plural=0;\\n\"] }, '\"{segment}\" is a forbidden file or folder name.': { \"msgid\": '\"{segment}\" is a forbidden file or folder name.', \"msgstr\": ['\"{segment}\" 是禁止使用的檔案或資料夾名稱。'] }, '\"{segment}\" is a forbidden file type.': { \"msgid\": '\"{segment}\" is a forbidden file type.', \"msgstr\": ['\"{segment}\" 是禁止使用的檔案類型。'] }, '\"{segment}\" is not allowed inside a file or folder name.': { \"msgid\": '\"{segment}\" is not allowed inside a file or folder name.', \"msgstr\": ['\"{segment}\" 不允許出現在檔案或資料夾名稱中。'] }, \"{count} file conflict\": { \"msgid\": \"{count} file conflict\", \"msgid_plural\": \"{count} files conflict\", \"msgstr\": [\"{count} 個檔案衝突\"] }, \"{count} file conflict in {dirname}\": { \"msgid\": \"{count} file conflict in {dirname}\", \"msgid_plural\": \"{count} file conflicts in {dirname}\", \"msgstr\": [\"{dirname} 中有 {count} 個檔案衝突\"] }, \"{seconds} seconds left\": { \"msgid\": \"{seconds} seconds left\", \"msgid_plural\": \"{seconds} seconds left\", \"msgstr\": [\"剩餘 {seconds} 秒\"] }, \"{time} left\": { \"msgid\": \"{time} left\", \"comments\": { \"extracted\": \"TRANSLATORS time has the format 00:00:00\" }, \"msgstr\": [\"剩餘 {time}\"] }, \"a few seconds left\": { \"msgid\": \"a few seconds left\", \"msgstr\": [\"還剩幾秒\"] }, \"assembling\": { \"msgid\": \"assembling\", \"msgstr\": [\"組裝\"] }, \"Cancel\": { \"msgid\": \"Cancel\", \"msgstr\": [\"取消\"] }, \"Cancel the entire operation\": { \"msgid\": \"Cancel the entire operation\", \"msgstr\": [\"取消整個操作\"] }, \"Cancel uploads\": { \"msgid\": \"Cancel uploads\", \"msgstr\": [\"取消上傳\"] }, \"Continue\": { \"msgid\": \"Continue\", \"msgstr\": [\"繼續\"] }, \"Create new\": { \"msgid\": \"Create new\", \"msgstr\": [\"創建新\"] }, \"estimating time left\": { \"msgid\": \"estimating time left\", \"msgstr\": [\"估計剩餘時間\"] }, \"Existing version\": { \"msgid\": \"Existing version\", \"msgstr\": [\"既有版本\"] }, \"Failed to assemble the chunks together\": { \"msgid\": \"Failed to assemble the chunks together\", \"msgstr\": [\"無法組裝這些部分\"] }, \"Failed to upload the file\": { \"msgid\": \"Failed to upload the file\", \"msgstr\": [\"無法上傳檔案\"] }, 'Filenames must not end with \"{segment}\".': { \"msgid\": 'Filenames must not end with \"{segment}\".', \"msgstr\": ['檔案名不得以 \"{segment}\" 結尾。'] }, \"If you select both versions, the incoming file will have a number added to its name.\": { \"msgid\": \"If you select both versions, the incoming file will have a number added to its name.\", \"msgstr\": [\"若您選取兩個版本,傳入檔案的名稱將會新增編號。\"] }, \"Invalid filename\": { \"msgid\": \"Invalid filename\", \"msgstr\": [\"無效的檔案名\"] }, \"Last modified date unknown\": { \"msgid\": \"Last modified date unknown\", \"msgstr\": [\"最後修改日期不詳\"] }, \"New\": { \"msgid\": \"New\", \"msgstr\": [\"新增\"] }, \"New filename\": { \"msgid\": \"New filename\", \"msgstr\": [\"新檔案名\"] }, \"New version\": { \"msgid\": \"New version\", \"msgstr\": [\"新版本 \"] }, \"paused\": { \"msgid\": \"paused\", \"msgstr\": [\"已暫停\"] }, \"Preview image\": { \"msgid\": \"Preview image\", \"msgstr\": [\"預覽圖片\"] }, \"Rename\": { \"msgid\": \"Rename\", \"msgstr\": [\"重新命名\"] }, \"Select all checkboxes\": { \"msgid\": \"Select all checkboxes\", \"msgstr\": [\"選取所有核取方塊\"] }, \"Select all existing files\": { \"msgid\": \"Select all existing files\", \"msgstr\": [\"選取所有既有檔案\"] }, \"Select all new files\": { \"msgid\": \"Select all new files\", \"msgstr\": [\"選取所有新檔案\"] }, \"Skip\": { \"msgid\": \"Skip\", \"msgstr\": [\"跳過\"] }, \"Skip {count} file\": { \"msgid\": \"Skip {count} file\", \"msgid_plural\": \"Skip {count} files\", \"msgstr\": [\"略過 {count} 個檔案\"] }, \"Skip this file\": { \"msgid\": \"Skip this file\", \"msgstr\": [\"略過這個檔案\"] }, \"Unknown size\": { \"msgid\": \"Unknown size\", \"msgstr\": [\"大小不詳\"] }, \"Upload\": { \"msgid\": \"Upload\", \"msgstr\": [\"上傳\"] }, \"Upload files\": { \"msgid\": \"Upload files\", \"msgstr\": [\"上傳檔案\"] }, \"Upload folders\": { \"msgid\": \"Upload folders\", \"msgstr\": [\"上傳資料夾\"] }, \"Upload from device\": { \"msgid\": \"Upload from device\", \"msgstr\": [\"從裝置上傳\"] }, \"Upload has been cancelled\": { \"msgid\": \"Upload has been cancelled\", \"msgstr\": [\"上傳已被取消\"] }, \"Upload has been skipped\": { \"msgid\": \"Upload has been skipped\", \"msgstr\": [\"上傳已被跳過\"] }, 'Upload of \"{folder}\" has been skipped': { \"msgid\": 'Upload of \"{folder}\" has been skipped', \"msgstr\": ['\"{folder}\" 的上傳已被跳過'] }, \"Upload progress\": { \"msgid\": \"Upload progress\", \"msgstr\": [\"上傳進度\"] }, \"When an incoming folder is selected, any conflicting files within it will also be overwritten.\": { \"msgid\": \"When an incoming folder is selected, any conflicting files within it will also be overwritten.\", \"msgstr\": [\"選取傳入資料夾後,其中任何的衝突檔案都會被覆寫。\"] }, \"When an incoming folder is selected, the content is written into the existing folder and a recursive conflict resolution is performed.\": { \"msgid\": \"When an incoming folder is selected, the content is written into the existing folder and a recursive conflict resolution is performed.\", \"msgstr\": [\"選擇傳入資料夾後,內容將寫入現有資料夾並執行遞歸衝突解決。\"] }, \"Which files do you want to keep?\": { \"msgid\": \"Which files do you want to keep?\", \"msgstr\": [\"您想保留哪些檔案?\"] }, \"You can either rename the file, skip this file or cancel the whole operation.\": { \"msgid\": \"You can either rename the file, skip this file or cancel the whole operation.\", \"msgstr\": [\"您可以選擇重新命名檔案、跳過此檔案或取消整個操作。\"] }, \"You need to select at least one version of each file to continue.\": { \"msgid\": \"You need to select at least one version of each file to continue.\", \"msgstr\": [\"您必須為每個檔案都至少選取一個版本以繼續。\"] } } } } }, { \"locale\": \"zh_TW\", \"json\": { \"charset\": \"utf-8\", \"headers\": { \"Last-Translator\": \"黃柏諺 , 2024\", \"Language-Team\": \"Chinese (Taiwan) (https://app.transifex.com/nextcloud/teams/64236/zh_TW/)\", \"Content-Type\": \"text/plain; charset=UTF-8\", \"Language\": \"zh_TW\", \"Plural-Forms\": \"nplurals=1; plural=0;\" }, \"translations\": { \"\": { \"\": { \"msgid\": \"\", \"comments\": { \"translator\": \"\\nTranslators:\\nJoas Schilling, 2024\\n黃柏諺 , 2024\\n\" }, \"msgstr\": [\"Last-Translator: 黃柏諺 , 2024\\nLanguage-Team: Chinese (Taiwan) (https://app.transifex.com/nextcloud/teams/64236/zh_TW/)\\nContent-Type: text/plain; charset=UTF-8\\nLanguage: zh_TW\\nPlural-Forms: nplurals=1; plural=0;\\n\"] }, \"{count} file conflict\": { \"msgid\": \"{count} file conflict\", \"msgid_plural\": \"{count} files conflict\", \"msgstr\": [\"{count} 個檔案衝突\"] }, \"{count} file conflict in {dirname}\": { \"msgid\": \"{count} file conflict in {dirname}\", \"msgid_plural\": \"{count} file conflicts in {dirname}\", \"msgstr\": [\"{dirname} 中有 {count} 個檔案衝突\"] }, \"{seconds} seconds left\": { \"msgid\": \"{seconds} seconds left\", \"msgstr\": [\"剩餘 {seconds} 秒\"] }, \"{time} left\": { \"msgid\": \"{time} left\", \"comments\": { \"extracted\": \"TRANSLATORS time has the format 00:00:00\" }, \"msgstr\": [\"剩餘 {time}\"] }, \"a few seconds left\": { \"msgid\": \"a few seconds left\", \"msgstr\": [\"還剩幾秒\"] }, \"Cancel\": { \"msgid\": \"Cancel\", \"msgstr\": [\"取消\"] }, \"Cancel the entire operation\": { \"msgid\": \"Cancel the entire operation\", \"msgstr\": [\"取消整個操作\"] }, \"Cancel uploads\": { \"msgid\": \"Cancel uploads\", \"msgstr\": [\"取消上傳\"] }, \"Continue\": { \"msgid\": \"Continue\", \"msgstr\": [\"繼續\"] }, \"estimating time left\": { \"msgid\": \"estimating time left\", \"msgstr\": [\"估計剩餘時間\"] }, \"Existing version\": { \"msgid\": \"Existing version\", \"msgstr\": [\"既有版本\"] }, \"If you select both versions, the copied file will have a number added to its name.\": { \"msgid\": \"If you select both versions, the copied file will have a number added to its name.\", \"msgstr\": [\"若您選取兩個版本,複製的檔案的名稱將會新增編號。\"] }, \"Last modified date unknown\": { \"msgid\": \"Last modified date unknown\", \"msgstr\": [\"最後修改日期未知\"] }, \"New\": { \"msgid\": \"New\", \"msgstr\": [\"新增\"] }, \"New version\": { \"msgid\": \"New version\", \"msgstr\": [\"新版本\"] }, \"paused\": { \"msgid\": \"paused\", \"msgstr\": [\"已暫停\"] }, \"Preview image\": { \"msgid\": \"Preview image\", \"msgstr\": [\"預覽圖片\"] }, \"Select all checkboxes\": { \"msgid\": \"Select all checkboxes\", \"msgstr\": [\"選取所有核取方塊\"] }, \"Select all existing files\": { \"msgid\": \"Select all existing files\", \"msgstr\": [\"選取所有既有檔案\"] }, \"Select all new files\": { \"msgid\": \"Select all new files\", \"msgstr\": [\"選取所有新檔案\"] }, \"Skip this file\": { \"msgid\": \"Skip this file\", \"msgid_plural\": \"Skip {count} files\", \"msgstr\": [\"略過 {count} 檔案\"] }, \"Unknown size\": { \"msgid\": \"Unknown size\", \"msgstr\": [\"未知大小\"] }, \"Upload cancelled\": { \"msgid\": \"Upload cancelled\", \"msgstr\": [\"已取消上傳\"] }, \"Upload files\": { \"msgid\": \"Upload files\", \"msgstr\": [\"上傳檔案\"] }, \"Upload progress\": { \"msgid\": \"Upload progress\", \"msgstr\": [\"上傳進度\"] }, \"When an incoming folder is selected, any conflicting files within it will also be overwritten.\": { \"msgid\": \"When an incoming folder is selected, any conflicting files within it will also be overwritten.\", \"msgstr\": [\"選取傳入資料夾後,其中任何的衝突檔案都會被覆寫。\"] }, \"Which files do you want to keep?\": { \"msgid\": \"Which files do you want to keep?\", \"msgstr\": [\"您想保留哪些檔案?\"] }, \"You need to select at least one version of each file to continue.\": { \"msgid\": \"You need to select at least one version of each file to continue.\", \"msgstr\": [\"您必須為每個檔案都至少選取一個版本以繼續。\"] } } } } }].map((data) => gtBuilder.addTranslation(data.locale, data.json));\nconst gt = gtBuilder.build();\nconst n = gt.ngettext.bind(gt);\nconst t = gt.gettext.bind(gt);\n/*!\n * SPDX-FileCopyrightText: 2025 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\nclass UploadCancelledError extends Error {\n  constructor(cause) {\n    super(t(\"Upload has been cancelled\"), { cause });\n  }\n}\nconst logger = getLoggerBuilder().setApp(\"@nextcloud/upload\").detectUser().build();\naxiosRetry(axios, { retries: 0 });\nasync function uploadData(url, uploadData2, uploadOptions) {\n  const options = {\n    headers: {},\n    onUploadProgress: () => {\n    },\n    onUploadRetry: () => {\n    },\n    retries: 5,\n    ...uploadOptions\n  };\n  let data;\n  if (uploadData2 instanceof Blob) {\n    data = uploadData2;\n  } else {\n    data = await uploadData2();\n  }\n  if (options.destinationFile) {\n    options.headers.Destination = options.destinationFile;\n  }\n  if (!options.headers[\"Content-Type\"]) {\n    options.headers[\"Content-Type\"] = \"application/octet-stream\";\n  }\n  return await axios.request({\n    method: \"PUT\",\n    url,\n    data,\n    signal: options.signal,\n    onUploadProgress: options.onUploadProgress,\n    headers: options.headers,\n    \"axios-retry\": {\n      retries: options.retries,\n      retryDelay: (retryCount, error) => exponentialDelay(retryCount, error, 1e3),\n      retryCondition(error) {\n        if (error.status === 507) {\n          return false;\n        }\n        if (error.status === 423) {\n          return true;\n        }\n        return isNetworkOrIdempotentRequestError(error);\n      },\n      onRetry: options.onUploadRetry\n    }\n  });\n}\nconst getChunk = function(file, start, length) {\n  if (start === 0 && file.size <= length) {\n    return Promise.resolve(new Blob([file], { type: file.type || \"application/octet-stream\" }));\n  }\n  return Promise.resolve(new Blob([file.slice(start, start + length)], { type: \"application/octet-stream\" }));\n};\nconst initChunkWorkspace = async function(destinationFile = void 0, retries = 5, isPublic = false, customHeaders = {}) {\n  let chunksWorkspace;\n  if (isPublic) {\n    chunksWorkspace = `${getBaseUrl()}/public.php/dav/uploads/${getSharingToken()}`;\n  } else {\n    chunksWorkspace = generateRemoteUrl(`dav/uploads/${getCurrentUser()?.uid}`);\n  }\n  const hash = [...Array(16)].map(() => Math.floor(Math.random() * 16).toString(16)).join(\"\");\n  const tempWorkspace = `web-file-upload-${hash}`;\n  const url = `${chunksWorkspace}/${tempWorkspace}`;\n  const headers = customHeaders;\n  if (destinationFile) {\n    headers.Destination = destinationFile;\n  }\n  await axios.request({\n    method: \"MKCOL\",\n    url,\n    headers,\n    \"axios-retry\": {\n      retries,\n      retryDelay: (retryCount, error) => exponentialDelay(retryCount, error, 1e3)\n    }\n  });\n  logger.debug(\"Created temporary upload workspace\", { url });\n  return url;\n};\n/*!\n * SPDX-FileCopyrightText: 2022 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\nconst getMaxChunksSize = function(fileSize = void 0) {\n  const maxChunkSize = window.OC?.appConfig?.files?.max_chunk_size;\n  if (maxChunkSize <= 0) {\n    return 0;\n  }\n  if (!Number(maxChunkSize)) {\n    return 10 * 1024 * 1024;\n  }\n  const minimumChunkSize = Math.max(Number(maxChunkSize), 5 * 1024 * 1024);\n  if (fileSize === void 0) {\n    return minimumChunkSize;\n  }\n  return Math.max(minimumChunkSize, Math.ceil(fileSize / 1e4));\n};\nvar Status = /* @__PURE__ */ ((Status2) => {\n  Status2[Status2[\"INITIALIZED\"] = 0] = \"INITIALIZED\";\n  Status2[Status2[\"UPLOADING\"] = 1] = \"UPLOADING\";\n  Status2[Status2[\"ASSEMBLING\"] = 2] = \"ASSEMBLING\";\n  Status2[Status2[\"FINISHED\"] = 3] = \"FINISHED\";\n  Status2[Status2[\"CANCELLED\"] = 4] = \"CANCELLED\";\n  Status2[Status2[\"FAILED\"] = 5] = \"FAILED\";\n  return Status2;\n})(Status || {});\nclass Upload {\n  _source;\n  _file;\n  _isChunked;\n  _chunks;\n  _size;\n  _uploaded = 0;\n  _startTime = 0;\n  _status = 0;\n  _controller;\n  _response = null;\n  constructor(source, chunked = false, size, file) {\n    const chunks = Math.min(getMaxChunksSize() > 0 ? Math.ceil(size / getMaxChunksSize()) : 1, 1e4);\n    this._source = source;\n    this._isChunked = chunked && getMaxChunksSize() > 0 && chunks > 1;\n    this._chunks = this._isChunked ? chunks : 1;\n    this._size = size;\n    this._file = file;\n    this._controller = new AbortController();\n  }\n  get source() {\n    return this._source;\n  }\n  get file() {\n    return this._file;\n  }\n  get isChunked() {\n    return this._isChunked;\n  }\n  get chunks() {\n    return this._chunks;\n  }\n  get size() {\n    return this._size;\n  }\n  get startTime() {\n    return this._startTime;\n  }\n  set response(response) {\n    this._response = response;\n  }\n  get response() {\n    return this._response;\n  }\n  get uploaded() {\n    return this._uploaded;\n  }\n  /**\n   * Update the uploaded bytes of this upload\n   */\n  set uploaded(length) {\n    if (length >= this._size) {\n      this._status = this._isChunked ? 2 : 3;\n      this._uploaded = this._size;\n      return;\n    }\n    this._status = 1;\n    this._uploaded = length;\n    if (this._startTime === 0) {\n      this._startTime = (/* @__PURE__ */ new Date()).getTime();\n    }\n  }\n  get status() {\n    return this._status;\n  }\n  /**\n   * Update this upload status\n   */\n  set status(status) {\n    this._status = status;\n  }\n  /**\n   * Returns the axios cancel token source\n   */\n  get signal() {\n    return this._controller.signal;\n  }\n  /**\n   * Cancel any ongoing requests linked to this upload\n   */\n  cancel() {\n    this._controller.abort();\n    this._status = 4;\n  }\n}\n/*!\n * SPDX-FileCopyrightText: 2024 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\nconst isFileSystemDirectoryEntry = (o) => \"FileSystemDirectoryEntry\" in window && o instanceof FileSystemDirectoryEntry;\nconst isFileSystemFileEntry = (o) => \"FileSystemFileEntry\" in window && o instanceof FileSystemFileEntry;\nconst isFileSystemEntry = (o) => \"FileSystemEntry\" in window && o instanceof FileSystemEntry;\nclass Directory extends File {\n  _originalName;\n  _path;\n  _children;\n  constructor(path) {\n    super([], basename(path), { type: \"httpd/unix-directory\", lastModified: 0 });\n    this._children = /* @__PURE__ */ new Map();\n    this._originalName = basename(path);\n    this._path = path;\n  }\n  get size() {\n    return this.children.reduce((sum, file) => sum + file.size, 0);\n  }\n  get lastModified() {\n    return this.children.reduce((latest, file) => Math.max(latest, file.lastModified), 0);\n  }\n  // We need this to keep track of renamed files\n  get originalName() {\n    return this._originalName;\n  }\n  get children() {\n    return Array.from(this._children.values());\n  }\n  get webkitRelativePath() {\n    return this._path;\n  }\n  getChild(name) {\n    return this._children.get(name) ?? null;\n  }\n  /**\n   * Add multiple children at once\n   * @param files The files to add\n   */\n  async addChildren(files) {\n    for (const file of files) {\n      await this.addChild(file);\n    }\n  }\n  /**\n   * Add a child to the directory.\n   * If it is a nested child the parents will be created if not already exist.\n   * @param file The child to add\n   */\n  async addChild(file) {\n    const rootPath = this._path && `${this._path}/`;\n    if (isFileSystemFileEntry(file)) {\n      file = await new Promise((resolve, reject) => file.file(resolve, reject));\n    } else if (isFileSystemDirectoryEntry(file)) {\n      const reader = file.createReader();\n      const entries = await new Promise((resolve, reject) => reader.readEntries(resolve, reject));\n      const child = new Directory(`${rootPath}${file.name}`);\n      await child.addChildren(entries);\n      this._children.set(file.name, child);\n      return;\n    }\n    file = file;\n    const filePath = file.webkitRelativePath ?? file.name;\n    if (!filePath.includes(\"/\")) {\n      this._children.set(file.name, file);\n    } else {\n      if (!filePath.startsWith(this._path)) {\n        throw new Error(`File ${filePath} is not a child of ${this._path}`);\n      }\n      const relPath = filePath.slice(rootPath.length);\n      const name = basename(relPath);\n      if (name === relPath) {\n        this._children.set(name, file);\n      } else {\n        const base = relPath.slice(0, relPath.indexOf(\"/\"));\n        if (this._children.has(base)) {\n          await this._children.get(base).addChild(file);\n        } else {\n          const child = new Directory(`${rootPath}${base}`);\n          await child.addChild(file);\n          this._children.set(base, child);\n        }\n      }\n    }\n  }\n}\n/*!\n * SPDX-FileCopyrightText: 2025 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\nvar EtaStatus = /* @__PURE__ */ ((EtaStatus2) => {\n  EtaStatus2[EtaStatus2[\"Idle\"] = 0] = \"Idle\";\n  EtaStatus2[EtaStatus2[\"Paused\"] = 1] = \"Paused\";\n  EtaStatus2[EtaStatus2[\"Running\"] = 2] = \"Running\";\n  return EtaStatus2;\n})(EtaStatus || {});\nclass Eta extends TypedEventTarget {\n  /** Bytes done */\n  _done = 0;\n  /** Total bytes to do */\n  _total = 0;\n  /** Current progress (cached) as interval [0,1] */\n  _progress = 0;\n  /** Status of the ETA */\n  _status = 0;\n  /** Time of the last update */\n  _startTime = -1;\n  /** Total elapsed time for current ETA */\n  _elapsedTime = 0;\n  /** Current speed in bytes per second */\n  _speed = -1;\n  /** Expected duration to finish in seconds */\n  _eta = Infinity;\n  /**\n   * Cutoff time for the low pass filter of the ETA.\n   * A higher value will consider more history information for calculation,\n   * and thus suppress spikes of the speed,\n   * but will make the overall resposiveness slower.\n   */\n  _cutoffTime = 2.5;\n  constructor(options = {}) {\n    super();\n    if (options.start) {\n      this.resume();\n    }\n    if (options.total) {\n      this.update(0, options.total);\n    }\n    this._cutoffTime = options.cutoffTime ?? 2.5;\n  }\n  /**\n   * Add more transferred bytes.\n   * @param done Additional bytes done.\n   */\n  add(done) {\n    this.update(this._done + done);\n  }\n  /**\n   * Update the transmission state.\n   *\n   * @param done The new value of transferred bytes.\n   * @param total Optionally also update the total bytes we expect.\n   */\n  update(done, total) {\n    if (this.status !== 2) {\n      return;\n    }\n    if (total && total > 0) {\n      this._total = total;\n    }\n    const deltaDone = done - this._done;\n    const deltaTime = (Date.now() - this._startTime) / 1e3;\n    this._startTime = Date.now();\n    this._elapsedTime += deltaTime;\n    this._done = done;\n    this._progress = this._done / this._total;\n    const historyNeeded = this._cutoffTime + deltaTime;\n    if (this._elapsedTime > historyNeeded) {\n      const alpha = deltaTime / (deltaTime + 1 / this._cutoffTime);\n      const filtered = this._done - deltaDone + (1 - alpha) * deltaDone;\n      this._speed = Math.round(filtered / this._elapsedTime);\n    } else if (this._speed === -1 && this._elapsedTime > deltaTime) {\n      const remaining = this._total - done;\n      const eta = remaining / (done / this._elapsedTime);\n      if (this._eta !== Infinity || eta <= 2 * this._cutoffTime) {\n        this._eta = eta;\n      }\n    }\n    if (this._speed > 0) {\n      this._eta = Math.round((this._total - this._done) / this._speed);\n    }\n    this.dispatchTypedEvent(\"update\", new CustomEvent(\"update\", { cancelable: false }));\n  }\n  reset() {\n    this._done = 0;\n    this._total = 0;\n    this._progress = 0;\n    this._elapsedTime = 0;\n    this._eta = Infinity;\n    this._speed = -1;\n    this._startTime = -1;\n    this._status = 0;\n    this.dispatchTypedEvent(\"reset\", new CustomEvent(\"reset\"));\n  }\n  /**\n   * Pause the ETA calculation.\n   */\n  pause() {\n    if (this._status === 2) {\n      this._status = 1;\n      this._elapsedTime += (Date.now() - this._startTime) / 1e3;\n      this.dispatchTypedEvent(\"pause\", new CustomEvent(\"pause\"));\n    }\n  }\n  /**\n   * Resume the ETA calculation.\n   */\n  resume() {\n    if (this._status !== 2) {\n      this._startTime = Date.now();\n      this._status = 2;\n      this.dispatchTypedEvent(\"resume\", new CustomEvent(\"resume\"));\n    }\n  }\n  /**\n   * Status of the Eta (paused, active, idle).\n   */\n  get status() {\n    return this._status;\n  }\n  /**\n   * Progress (percent done)\n   */\n  get progress() {\n    return Math.round(this._progress * 1e4) / 100;\n  }\n  /**\n   * Estimated time in seconds.\n   */\n  get time() {\n    return this._eta;\n  }\n  /**\n   * Human readable version of the estimated time.\n   */\n  get timeReadable() {\n    if (this._eta === Infinity) {\n      return t(\"estimating time left\");\n    } else if (this._eta < 10) {\n      return t(\"a few seconds left\");\n    } else if (this._eta < 60) {\n      return n(\"{seconds} seconds left\", \"{seconds} seconds left\", this._eta, { seconds: this._eta });\n    }\n    const hours = String(Math.floor(this._eta / 3600)).padStart(2, \"0\");\n    const minutes = String(Math.floor(this._eta % 3600 / 60)).padStart(2, \"0\");\n    const seconds = String(this._eta % 60).padStart(2, \"0\");\n    return t(\"{time} left\", { time: `${hours}:${minutes}:${seconds}` });\n  }\n  /**\n   * Transfer speed in bytes per second.\n   * Returns `-1` if not yet estimated.\n   */\n  get speed() {\n    return this._speed;\n  }\n  /**\n   * Get the speed in human readable format using file sizes like 10KB/s.\n   * Returns the empty string if not yet estimated.\n   */\n  get speedReadable() {\n    return this._speed > 0 ? `${formatFileSize(this._speed, true)}∕s` : \"\";\n  }\n}\nvar UploaderStatus = /* @__PURE__ */ ((UploaderStatus2) => {\n  UploaderStatus2[UploaderStatus2[\"IDLE\"] = 0] = \"IDLE\";\n  UploaderStatus2[UploaderStatus2[\"UPLOADING\"] = 1] = \"UPLOADING\";\n  UploaderStatus2[UploaderStatus2[\"PAUSED\"] = 2] = \"PAUSED\";\n  return UploaderStatus2;\n})(UploaderStatus || {});\nclass Uploader {\n  // Initialized via setter in the constructor\n  _destinationFolder;\n  _isPublic;\n  _customHeaders;\n  // Global upload queue\n  _uploadQueue = [];\n  _jobQueue = new PQueue({\n    // Maximum number of concurrent uploads\n    // @ts-expect-error TS2339 Object has no defined properties\n    concurrency: getCapabilities().files?.chunked_upload?.max_parallel_count ?? 5\n  });\n  _queueSize = 0;\n  _queueProgress = 0;\n  _queueStatus = 0;\n  _eta = new Eta();\n  _notifiers = [];\n  /**\n   * Initialize uploader\n   *\n   * @param {boolean} isPublic are we in public mode ?\n   * @param {Folder} destinationFolder the context folder to operate, relative to the root folder\n   */\n  constructor(isPublic = false, destinationFolder) {\n    this._isPublic = isPublic;\n    this._customHeaders = {};\n    if (!destinationFolder) {\n      const source = `${davRemoteURL}${davRootPath}`;\n      let owner;\n      if (isPublic) {\n        owner = \"anonymous\";\n      } else {\n        const user = getCurrentUser()?.uid;\n        if (!user) {\n          throw new Error(\"User is not logged in\");\n        }\n        owner = user;\n      }\n      destinationFolder = new Folder({\n        id: 0,\n        owner,\n        permissions: Permission.ALL,\n        root: davRootPath,\n        source\n      });\n    }\n    this.destination = destinationFolder;\n    logger.debug(\"Upload workspace initialized\", {\n      destination: this.destination,\n      root: this.root,\n      isPublic,\n      maxChunksSize: getMaxChunksSize()\n    });\n  }\n  /**\n   * Get the upload destination path relative to the root folder\n   */\n  get destination() {\n    return this._destinationFolder;\n  }\n  /**\n   * Set the upload destination path relative to the root folder\n   */\n  set destination(folder) {\n    if (!folder || folder.type !== FileType.Folder || !folder.source) {\n      throw new Error(\"Invalid destination folder\");\n    }\n    logger.debug(\"Destination set\", { folder });\n    this._destinationFolder = folder;\n  }\n  /**\n   * Get the root folder\n   */\n  get root() {\n    return this._destinationFolder.source;\n  }\n  /**\n   * Get registered custom headers for uploads\n   */\n  get customHeaders() {\n    return structuredClone(this._customHeaders);\n  }\n  /**\n   * Set a custom header\n   * @param name The header to set\n   * @param value The string value\n   */\n  setCustomHeader(name, value = \"\") {\n    this._customHeaders[name] = value;\n  }\n  /**\n   * Unset a custom header\n   * @param name The header to unset\n   */\n  deleteCustomerHeader(name) {\n    delete this._customHeaders[name];\n  }\n  /**\n   * Get the upload queue\n   */\n  get queue() {\n    return this._uploadQueue;\n  }\n  reset() {\n    this._eta.reset();\n    if (this._uploadQueue.length === 0 && this._jobQueue.size === 0) {\n      return;\n    }\n    this._uploadQueue.splice(0, this._uploadQueue.length);\n    this._jobQueue.clear();\n    this._queueSize = 0;\n    this._queueProgress = 0;\n    this._queueStatus = 0;\n    logger.debug(\"Uploader state reset\");\n  }\n  /**\n   * Pause any ongoing upload(s)\n   */\n  pause() {\n    this._eta.pause();\n    this._jobQueue.pause();\n    this._queueStatus = 2;\n    this.updateStats();\n    logger.debug(\"Uploader paused\");\n  }\n  /**\n   * Resume any pending upload(s)\n   */\n  start() {\n    this._eta.resume();\n    this._jobQueue.start();\n    this._queueStatus = 1;\n    this.updateStats();\n    logger.debug(\"Uploader resumed\");\n  }\n  /**\n   * Get the estimation for the uploading time.\n   */\n  get eta() {\n    return this._eta;\n  }\n  /**\n   * Get the upload queue stats\n   */\n  get info() {\n    return {\n      size: this._queueSize,\n      progress: this._queueProgress,\n      status: this._queueStatus\n    };\n  }\n  updateStats() {\n    const size = this._uploadQueue.map((upload2) => upload2.size).reduce((partialSum, a) => partialSum + a, 0);\n    const uploaded = this._uploadQueue.map((upload2) => upload2.uploaded).reduce((partialSum, a) => partialSum + a, 0);\n    this._eta.update(uploaded, size);\n    this._queueSize = size;\n    this._queueProgress = uploaded;\n    if (this._queueStatus !== 2) {\n      const pending = this._uploadQueue.find(({ status }) => [Status.INITIALIZED, Status.UPLOADING, Status.ASSEMBLING].includes(status));\n      if (this._jobQueue.size > 0 || pending) {\n        this._queueStatus = 1;\n      } else {\n        this.eta.reset();\n        this._queueStatus = 0;\n      }\n    }\n  }\n  addNotifier(notifier) {\n    this._notifiers.push(notifier);\n  }\n  /**\n   * Notify listeners of the upload completion\n   * @param upload The upload that finished\n   */\n  _notifyAll(upload2) {\n    for (const notifier of this._notifiers) {\n      try {\n        notifier(upload2);\n      } catch (error) {\n        logger.warn(\"Error in upload notifier\", { error, source: upload2.source });\n      }\n    }\n  }\n  /**\n   * Uploads multiple files or folders while preserving the relative path (if available)\n   * @param {string} destination The destination path relative to the root folder. e.g. /foo/bar (a file \"a.txt\" will be uploaded then to \"/foo/bar/a.txt\")\n   * @param {Array} files The files and/or folders to upload\n   * @param {Function} callback Callback that receives the nodes in the current folder and the current path to allow resolving conflicts, all nodes that are returned will be uploaded (if a folder does not exist it will be created)\n   * @return Cancelable promise that resolves to an array of uploads\n   *\n   * @example\n   * ```ts\n   * // For example this is from handling the onchange event of an input[type=file]\n   * async handleFiles(files: File[]) {\n   *   this.uploads = await this.uploader.batchUpload('uploads', files, this.handleConflicts)\n   * }\n   *\n   * async handleConflicts(nodes: File[], currentPath: string) {\n   *   const conflicts = getConflicts(nodes, this.fetchContent(currentPath))\n   *   if (conflicts.length === 0) {\n   *     // No conflicts so upload all\n   *     return nodes\n   *   } else {\n   *     // Open the conflict picker to resolve conflicts\n   *     try {\n   *       const { selected, renamed } = await openConflictPicker(currentPath, conflicts, this.fetchContent(currentPath), { recursive: true })\n   *       return [...selected, ...renamed]\n   *     } catch (e) {\n   *       return false\n   *     }\n   *   }\n   * }\n   * ```\n   */\n  batchUpload(destination, files, callback) {\n    if (!callback) {\n      callback = async (files2) => files2;\n    }\n    return new PCancelable(async (resolve, reject, onCancel) => {\n      const rootFolder = new Directory(\"\");\n      await rootFolder.addChildren(files);\n      const target = `${this.root.replace(/\\/$/, \"\")}/${destination.replace(/^\\//, \"\")}`;\n      const upload2 = new Upload(target, false, 0, rootFolder);\n      upload2.status = Status.UPLOADING;\n      this._uploadQueue.push(upload2);\n      logger.debug(\"Starting new batch upload\", { target });\n      try {\n        const client = davGetClient(this.root, this._customHeaders);\n        const promise = this.uploadDirectory(destination, rootFolder, callback, client);\n        onCancel(() => promise.cancel());\n        const uploads = await promise;\n        upload2.status = Status.FINISHED;\n        resolve(uploads);\n      } catch (error) {\n        if (isCancel(error) || error instanceof UploadCancelledError) {\n          logger.info(\"Upload cancelled by user\", { error });\n          upload2.status = Status.CANCELLED;\n          reject(new UploadCancelledError(error));\n        } else {\n          logger.error(\"Error in batch upload\", { error });\n          upload2.status = Status.FAILED;\n          reject(error);\n        }\n      } finally {\n        this._uploadQueue.splice(this._uploadQueue.indexOf(upload2), 1);\n        this._notifyAll(upload2);\n        this.updateStats();\n      }\n    });\n  }\n  /**\n   * Helper to create a directory wrapped inside an Upload class\n   * @param destination Destination where to create the directory\n   * @param directory The directory to create\n   * @param client The cached WebDAV client\n   */\n  createDirectory(destination, directory, client) {\n    const folderPath = normalize(`${destination}/${directory.name}`).replace(/\\/$/, \"\");\n    const rootPath = `${this.root.replace(/\\/$/, \"\")}/${folderPath.replace(/^\\//, \"\")}`;\n    if (!directory.name) {\n      throw new Error(\"Can not create empty directory\");\n    }\n    const currentUpload = new Upload(rootPath, false, 0, directory);\n    this._uploadQueue.push(currentUpload);\n    return new PCancelable(async (resolve, reject, onCancel) => {\n      const abort = new AbortController();\n      onCancel(() => abort.abort());\n      currentUpload.signal.addEventListener(\"abort\", () => reject(t(\"Upload has been cancelled\")));\n      await this._jobQueue.add(async () => {\n        currentUpload.status = Status.UPLOADING;\n        try {\n          await client.createDirectory(folderPath, { signal: abort.signal });\n          resolve(currentUpload);\n        } catch (error) {\n          if (isCancel(error) || error instanceof UploadCancelledError) {\n            currentUpload.status = Status.CANCELLED;\n            reject(new UploadCancelledError(error));\n          } else if (error && typeof error === \"object\" && \"status\" in error && error.status === 405) {\n            logger.debug(\"Directory already exists, writing into it\", { directory: directory.name });\n            currentUpload.status = Status.FINISHED;\n            resolve(currentUpload);\n          } else {\n            currentUpload.status = Status.FAILED;\n            reject(error);\n          }\n        } finally {\n          this._notifyAll(currentUpload);\n          this.updateStats();\n        }\n      });\n    });\n  }\n  // Helper for uploading directories (recursively)\n  uploadDirectory(destination, directory, callback, client) {\n    const folderPath = normalize(`${destination}/${directory.name}`).replace(/\\/$/, \"\");\n    return new PCancelable(async (resolve, reject, onCancel) => {\n      const abort = new AbortController();\n      onCancel(() => abort.abort());\n      const selectedForUpload = await callback(directory.children, folderPath);\n      if (selectedForUpload === false) {\n        logger.debug(\"Upload canceled by user\", { directory });\n        reject(new UploadCancelledError(\"Conflict resolution cancelled by user\"));\n        return;\n      } else if (selectedForUpload.length === 0 && directory.children.length > 0) {\n        logger.debug(\"Skipping directory, as all files were skipped by user\", { directory });\n        resolve([]);\n        return;\n      }\n      const directories = [];\n      const uploads = [];\n      abort.signal.addEventListener(\"abort\", () => {\n        directories.forEach((upload2) => upload2.cancel());\n        uploads.forEach((upload2) => upload2.cancel());\n      });\n      logger.debug(\"Start directory upload\", { directory });\n      try {\n        if (directory.name) {\n          uploads.push(this.createDirectory(destination, directory, client));\n          await uploads.at(-1);\n        }\n        for (const node of selectedForUpload) {\n          if (node instanceof Directory) {\n            directories.push(this.uploadDirectory(folderPath, node, callback, client));\n          } else {\n            uploads.push(this.upload(`${folderPath}/${node.name}`, node));\n          }\n        }\n        const resolvedUploads = await Promise.all(uploads);\n        const resolvedDirectoryUploads = await Promise.all(directories);\n        resolve([resolvedUploads, ...resolvedDirectoryUploads].flat());\n      } catch (e) {\n        abort.abort(e);\n        reject(e);\n      }\n    });\n  }\n  /**\n   * Upload a file to the given path\n   * @param {string} destination the destination path relative to the root folder. e.g. /foo/bar.txt\n   * @param {File|FileSystemFileEntry} fileHandle the file to upload\n   * @param {string} root the root folder to upload to\n   * @param retries number of retries\n   */\n  upload(destination, fileHandle, root, retries = 5) {\n    root = root || this.root;\n    const destinationPath = `${root.replace(/\\/$/, \"\")}/${destination.replace(/^\\//, \"\")}`;\n    const { origin } = new URL(destinationPath);\n    const encodedDestinationFile = origin + encodePath(destinationPath.slice(origin.length));\n    this.eta.resume();\n    logger.debug(`Uploading ${fileHandle.name} to ${encodedDestinationFile}`);\n    const promise = new PCancelable(async (resolve, reject, onCancel) => {\n      if (isFileSystemFileEntry(fileHandle)) {\n        fileHandle = await new Promise((resolve2) => fileHandle.file(resolve2, reject));\n      }\n      const file = fileHandle;\n      const supportsPublicChunking = getCapabilities().dav?.public_shares_chunking ?? false;\n      const maxChunkSize = getMaxChunksSize(\"size\" in file ? file.size : void 0);\n      const disabledChunkUpload = this._isPublic && !supportsPublicChunking || maxChunkSize === 0 || \"size\" in file && file.size < maxChunkSize;\n      const upload2 = new Upload(destinationPath, !disabledChunkUpload, file.size, file);\n      this._uploadQueue.push(upload2);\n      this.updateStats();\n      onCancel(upload2.cancel);\n      if (!disabledChunkUpload) {\n        logger.debug(\"Initializing chunked upload\", { file, upload: upload2 });\n        const tempUrl = await initChunkWorkspace(encodedDestinationFile, retries, this._isPublic, this._customHeaders);\n        const chunksQueue = [];\n        for (let chunk = 0; chunk < upload2.chunks; chunk++) {\n          const bufferStart = chunk * maxChunkSize;\n          const bufferEnd = Math.min(bufferStart + maxChunkSize, upload2.size);\n          const blob = () => getChunk(file, bufferStart, maxChunkSize);\n          const request2 = () => {\n            let chunkBytes = 0;\n            return uploadData(\n              `${tempUrl}/${chunk + 1}`,\n              blob,\n              {\n                signal: upload2.signal,\n                destinationFile: encodedDestinationFile,\n                retries,\n                onUploadProgress: ({ bytes }) => {\n                  const progressBytes = bytes * 0.9;\n                  chunkBytes += progressBytes;\n                  upload2.uploaded += progressBytes;\n                  this.updateStats();\n                },\n                onUploadRetry: () => {\n                  upload2.uploaded -= chunkBytes;\n                  chunkBytes = 0;\n                  this.updateStats();\n                },\n                headers: {\n                  ...this._customHeaders,\n                  ...this._mtimeHeader(file),\n                  \"OC-Total-Length\": file.size,\n                  \"Content-Type\": \"application/octet-stream\"\n                }\n              }\n            ).then(() => {\n              upload2.uploaded += bufferEnd - bufferStart - chunkBytes;\n              this.updateStats();\n            }).catch((error) => {\n              if (error?.response?.status === 507) {\n                logger.error(\"Upload failed, not enough space on the server or quota exceeded. Cancelling the remaining chunks\", { error, upload: upload2 });\n                upload2.cancel();\n                upload2.status = Status.FAILED;\n                throw error;\n              }\n              if (!isCancel(error)) {\n                logger.error(`Chunk ${chunk + 1} ${bufferStart} - ${bufferEnd} uploading failed`, { error, upload: upload2 });\n                upload2.cancel();\n                upload2.status = Status.FAILED;\n              }\n              throw error;\n            });\n          };\n          chunksQueue.push(this._jobQueue.add(request2));\n        }\n        const request = async () => {\n          try {\n            await Promise.all(chunksQueue);\n            upload2.status = Status.ASSEMBLING;\n            this.updateStats();\n            upload2.response = await axios.request({\n              method: \"MOVE\",\n              url: `${tempUrl}/.file`,\n              headers: {\n                ...this._customHeaders,\n                ...this._mtimeHeader(file),\n                \"OC-Total-Length\": file.size,\n                Destination: encodedDestinationFile\n              }\n            });\n            upload2.status = Status.FINISHED;\n            this.updateStats();\n            logger.debug(`Successfully uploaded ${file.name}`, { file, upload: upload2 });\n            resolve(upload2);\n          } catch (error) {\n            if (isCancel(error) || error instanceof UploadCancelledError) {\n              upload2.status = Status.CANCELLED;\n              reject(new UploadCancelledError(error));\n            } else {\n              upload2.status = Status.FAILED;\n              reject(t(\"Failed to assemble the chunks together\"));\n            }\n            axios.request({\n              method: \"DELETE\",\n              url: `${tempUrl}`\n            });\n          } finally {\n            this._notifyAll(upload2);\n          }\n        };\n        this._jobQueue.add(request);\n      } else {\n        logger.debug(\"Initializing regular upload\", { file, upload: upload2 });\n        const blob = await getChunk(file, 0, upload2.size);\n        const request = async () => {\n          try {\n            upload2.response = await uploadData(\n              encodedDestinationFile,\n              blob,\n              {\n                signal: upload2.signal,\n                onUploadProgress: ({ bytes }) => {\n                  upload2.uploaded += bytes * 0.9;\n                  this.updateStats();\n                },\n                onUploadRetry: () => {\n                  upload2.uploaded = 0;\n                  this.updateStats();\n                },\n                headers: {\n                  ...this._customHeaders,\n                  ...this._mtimeHeader(file),\n                  \"Content-Type\": file.type\n                }\n              }\n            );\n            upload2.uploaded = upload2.size;\n            this.updateStats();\n            logger.debug(`Successfully uploaded ${file.name}`, { file, upload: upload2 });\n            resolve(upload2);\n          } catch (error) {\n            if (isCancel(error) || error instanceof UploadCancelledError) {\n              upload2.status = Status.CANCELLED;\n              reject(new UploadCancelledError(error));\n              return;\n            }\n            if (error?.response) {\n              upload2.response = error.response;\n            }\n            upload2.status = Status.FAILED;\n            logger.error(`Failed uploading ${file.name}`, { error, file, upload: upload2 });\n            reject(t(\"Failed to upload the file\"));\n          }\n          this._notifyAll(upload2);\n        };\n        this._jobQueue.add(request);\n        this.updateStats();\n      }\n      this._jobQueue.onIdle().then(() => this.reset());\n      return upload2;\n    });\n    return promise;\n  }\n  /**\n   * Create modification time headers if valid value is available.\n   * It can be invalid on Android devices if SD cards with NTFS / FAT are used,\n   * as those files might use the NT epoch for time so the value will be negative.\n   *\n   * @param file The file to upload\n   */\n  _mtimeHeader(file) {\n    const mtime = Math.floor(file.lastModified / 1e3);\n    if (mtime > 0) {\n      return { \"X-OC-Mtime\": mtime };\n    }\n    return {};\n  }\n}\n/*!\n * SPDX-FileCopyrightText: 2022 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\nfunction getUploader(isPublic = isPublicShare(), forceRecreate = false) {\n  if (forceRecreate || window._nc_uploader === void 0) {\n    window._nc_uploader = new Uploader(isPublic);\n  }\n  return window._nc_uploader;\n}\nfunction upload(destinationPath, file) {\n  const uploader = getUploader();\n  uploader.upload(destinationPath, file);\n  return uploader;\n}\nfunction hasConflict(files, content) {\n  return getConflicts(files, content).length > 0;\n}\nfunction getConflicts(files, content) {\n  const contentNames = content.map((node) => node.basename);\n  const conflicts = files.filter((node) => {\n    const name = \"basename\" in node ? node.basename : node.name;\n    return contentNames.indexOf(name) !== -1;\n  });\n  return conflicts;\n}\n/*!\n * SPDX-FileCopyrightText: 2022 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\nasync function openConflictPicker(dirname, conflicts, content, options) {\n  const ConflictPicker = defineAsyncComponent(() => import(\"./ConflictPicker-DuPiUBHl.mjs\"));\n  return new Promise((resolve, reject) => {\n    const picker = new Vue({\n      name: \"ConflictPickerRoot\",\n      render: (h) => h(ConflictPicker, {\n        props: {\n          dirname,\n          conflicts,\n          content,\n          recursiveUpload: options?.recursive === true\n        },\n        on: {\n          submit(results) {\n            resolve(results);\n            picker.$destroy();\n            picker.$el?.parentNode?.removeChild(picker.$el);\n          },\n          cancel(error) {\n            reject(error ?? new Error(\"Canceled\"));\n            picker.$destroy();\n            picker.$el?.parentNode?.removeChild(picker.$el);\n          }\n        }\n      })\n    });\n    picker.$mount();\n    document.body.appendChild(picker.$el);\n  });\n}\nfunction showInvalidFilenameDialog(error) {\n  const InvalidFilenameDialog = defineAsyncComponent(() => import(\"./InvalidFilenameDialog-BM2VDeLo.mjs\"));\n  const { promise, reject, resolve } = Promise.withResolvers();\n  spawnDialog(\n    InvalidFilenameDialog,\n    {\n      error,\n      validateFilename\n    },\n    (...rest) => {\n      const [{ skip, rename }] = rest;\n      if (skip) {\n        resolve(false);\n      } else if (rename) {\n        resolve(rename);\n      } else {\n        reject();\n      }\n    }\n  );\n  return promise;\n}\n/*!\n * SPDX-FileCopyrightText: 2024 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\nfunction uploadConflictHandler(contentsCallback) {\n  return async (nodes, path) => {\n    try {\n      const content = await contentsCallback(path).catch(() => []);\n      const conflicts = getConflicts(nodes, content);\n      if (conflicts.length > 0) {\n        const { selected, renamed } = await openConflictPicker(path, conflicts, content, { recursive: true });\n        nodes = [\n          ...nodes.filter((node) => !conflicts.includes(node)),\n          ...selected,\n          ...renamed\n        ];\n      }\n      const filesToUpload = [];\n      for (const file of nodes) {\n        try {\n          validateFilename(file.name);\n          filesToUpload.push(file);\n        } catch (error) {\n          if (!(error instanceof InvalidFilenameError)) {\n            logger.error(`Unexpected error while validating ${file.name}`, { error });\n            throw error;\n          }\n          let newName = await showInvalidFilenameDialog(error);\n          if (newName !== false) {\n            newName = getUniqueName(newName, nodes.map((node) => node.name));\n            Object.defineProperty(file, \"name\", { value: newName });\n            filesToUpload.push(file);\n          }\n        }\n      }\n      if (filesToUpload.length === 0 && nodes.length > 0) {\n        const folder = basename(path);\n        showInfo(\n          folder ? t('Upload of \"{folder}\" has been skipped', { folder }) : t(\"Upload has been skipped\")\n        );\n      }\n      return filesToUpload;\n    } catch (error) {\n      logger.debug(\"Upload has been cancelled\", { error });\n      showWarning(t(\"Upload has been cancelled\"));\n      return false;\n    }\n  };\n}\nfunction normalizeComponent(scriptExports, render6, staticRenderFns, functionalTemplate, injectStyles, scopeId, moduleIdentifier, shadowMode) {\n  var options = typeof scriptExports === \"function\" ? scriptExports.options : scriptExports;\n  if (render6) {\n    options.render = render6;\n    options.staticRenderFns = staticRenderFns;\n    options._compiled = true;\n  }\n  if (scopeId) {\n    options._scopeId = \"data-v-\" + scopeId;\n  }\n  return {\n    exports: scriptExports,\n    options\n  };\n}\nconst _sfc_main$4 = {\n  name: \"CancelIcon\",\n  emits: [\"click\"],\n  props: {\n    title: {\n      type: String\n    },\n    fillColor: {\n      type: String,\n      default: \"currentColor\"\n    },\n    size: {\n      type: Number,\n      default: 24\n    }\n  }\n};\nvar _sfc_render$4 = function render() {\n  var _vm = this, _c = _vm._self._c;\n  return _c(\"span\", _vm._b({ staticClass: \"material-design-icon cancel-icon\", attrs: { \"aria-hidden\": _vm.title ? null : \"true\", \"aria-label\": _vm.title, \"role\": \"img\" }, on: { \"click\": function($event) {\n    return _vm.$emit(\"click\", $event);\n  } } }, \"span\", _vm.$attrs, false), [_c(\"svg\", { staticClass: \"material-design-icon__svg\", attrs: { \"fill\": _vm.fillColor, \"width\": _vm.size, \"height\": _vm.size, \"viewBox\": \"0 0 24 24\" } }, [_c(\"path\", { attrs: { \"d\": \"M12 2C17.5 2 22 6.5 22 12S17.5 22 12 22 2 17.5 2 12 6.5 2 12 2M12 4C10.1 4 8.4 4.6 7.1 5.7L18.3 16.9C19.3 15.5 20 13.8 20 12C20 7.6 16.4 4 12 4M16.9 18.3L5.7 7.1C4.6 8.4 4 10.1 4 12C4 16.4 7.6 20 12 20C13.9 20 15.6 19.4 16.9 18.3Z\" } }, [_vm.title ? _c(\"title\", [_vm._v(_vm._s(_vm.title))]) : _vm._e()])])]);\n};\nvar _sfc_staticRenderFns$4 = [];\nvar __component__$4 = /* @__PURE__ */ normalizeComponent(\n  _sfc_main$4,\n  _sfc_render$4,\n  _sfc_staticRenderFns$4,\n  false,\n  null,\n  null\n);\nconst IconCancel = __component__$4.exports;\nconst _sfc_main$3 = {\n  name: \"FolderUploadIcon\",\n  emits: [\"click\"],\n  props: {\n    title: {\n      type: String\n    },\n    fillColor: {\n      type: String,\n      default: \"currentColor\"\n    },\n    size: {\n      type: Number,\n      default: 24\n    }\n  }\n};\nvar _sfc_render$3 = function render2() {\n  var _vm = this, _c = _vm._self._c;\n  return _c(\"span\", _vm._b({ staticClass: \"material-design-icon folder-upload-icon\", attrs: { \"aria-hidden\": _vm.title ? null : \"true\", \"aria-label\": _vm.title, \"role\": \"img\" }, on: { \"click\": function($event) {\n    return _vm.$emit(\"click\", $event);\n  } } }, \"span\", _vm.$attrs, false), [_c(\"svg\", { staticClass: \"material-design-icon__svg\", attrs: { \"fill\": _vm.fillColor, \"width\": _vm.size, \"height\": _vm.size, \"viewBox\": \"0 0 24 24\" } }, [_c(\"path\", { attrs: { \"d\": \"M20,6A2,2 0 0,1 22,8V18A2,2 0 0,1 20,20H4A2,2 0 0,1 2,18V6A2,2 0 0,1 4,4H10L12,6H20M10.75,13H14V17H16V13H19.25L15,8.75\" } }, [_vm.title ? _c(\"title\", [_vm._v(_vm._s(_vm.title))]) : _vm._e()])])]);\n};\nvar _sfc_staticRenderFns$3 = [];\nvar __component__$3 = /* @__PURE__ */ normalizeComponent(\n  _sfc_main$3,\n  _sfc_render$3,\n  _sfc_staticRenderFns$3,\n  false,\n  null,\n  null\n);\nconst IconFolderUpload = __component__$3.exports;\nconst _sfc_main$2 = {\n  name: \"PlusIcon\",\n  emits: [\"click\"],\n  props: {\n    title: {\n      type: String\n    },\n    fillColor: {\n      type: String,\n      default: \"currentColor\"\n    },\n    size: {\n      type: Number,\n      default: 24\n    }\n  }\n};\nvar _sfc_render$2 = function render3() {\n  var _vm = this, _c = _vm._self._c;\n  return _c(\"span\", _vm._b({ staticClass: \"material-design-icon plus-icon\", attrs: { \"aria-hidden\": _vm.title ? null : \"true\", \"aria-label\": _vm.title, \"role\": \"img\" }, on: { \"click\": function($event) {\n    return _vm.$emit(\"click\", $event);\n  } } }, \"span\", _vm.$attrs, false), [_c(\"svg\", { staticClass: \"material-design-icon__svg\", attrs: { \"fill\": _vm.fillColor, \"width\": _vm.size, \"height\": _vm.size, \"viewBox\": \"0 0 24 24\" } }, [_c(\"path\", { attrs: { \"d\": \"M19,13H13V19H11V13H5V11H11V5H13V11H19V13Z\" } }, [_vm.title ? _c(\"title\", [_vm._v(_vm._s(_vm.title))]) : _vm._e()])])]);\n};\nvar _sfc_staticRenderFns$2 = [];\nvar __component__$2 = /* @__PURE__ */ normalizeComponent(\n  _sfc_main$2,\n  _sfc_render$2,\n  _sfc_staticRenderFns$2,\n  false,\n  null,\n  null\n);\nconst IconPlus = __component__$2.exports;\nconst _sfc_main$1 = {\n  name: \"UploadIcon\",\n  emits: [\"click\"],\n  props: {\n    title: {\n      type: String\n    },\n    fillColor: {\n      type: String,\n      default: \"currentColor\"\n    },\n    size: {\n      type: Number,\n      default: 24\n    }\n  }\n};\nvar _sfc_render$1 = function render4() {\n  var _vm = this, _c = _vm._self._c;\n  return _c(\"span\", _vm._b({ staticClass: \"material-design-icon upload-icon\", attrs: { \"aria-hidden\": _vm.title ? null : \"true\", \"aria-label\": _vm.title, \"role\": \"img\" }, on: { \"click\": function($event) {\n    return _vm.$emit(\"click\", $event);\n  } } }, \"span\", _vm.$attrs, false), [_c(\"svg\", { staticClass: \"material-design-icon__svg\", attrs: { \"fill\": _vm.fillColor, \"width\": _vm.size, \"height\": _vm.size, \"viewBox\": \"0 0 24 24\" } }, [_c(\"path\", { attrs: { \"d\": \"M9,16V10H5L12,3L19,10H15V16H9M5,20V18H19V20H5Z\" } }, [_vm.title ? _c(\"title\", [_vm._v(_vm._s(_vm.title))]) : _vm._e()])])]);\n};\nvar _sfc_staticRenderFns$1 = [];\nvar __component__$1 = /* @__PURE__ */ normalizeComponent(\n  _sfc_main$1,\n  _sfc_render$1,\n  _sfc_staticRenderFns$1,\n  false,\n  null,\n  null\n);\nconst IconUpload = __component__$1.exports;\nconst _sfc_main = defineComponent({\n  name: \"UploadPicker\",\n  components: {\n    IconCancel,\n    IconFolderUpload,\n    IconPlus,\n    IconUpload,\n    NcActionButton,\n    NcActionCaption,\n    NcActionSeparator,\n    NcActions,\n    NcButton,\n    NcIconSvgWrapper,\n    NcProgressBar\n  },\n  props: {\n    accept: {\n      type: Array,\n      default: null\n    },\n    disabled: {\n      type: Boolean,\n      default: false\n    },\n    multiple: {\n      type: Boolean,\n      default: false\n    },\n    /**\n     * Allow to disable the \"new\"-menu for this UploadPicker instance\n     */\n    noMenu: {\n      type: Boolean,\n      default: false\n    },\n    /**\n     * Allow to disable the button label\n     */\n    noLabel: {\n      type: Boolean,\n      default: false\n    },\n    /**\n     * Make the \"New\"-button primary color.\n     */\n    primary: {\n      type: Boolean,\n      default: false\n    },\n    destination: {\n      type: Folder,\n      default: void 0\n    },\n    allowFolders: {\n      type: Boolean,\n      default: false\n    },\n    /**\n     * List of file present in the destination folder\n     * It is also possible to provide a function that takes a relative path to the current directory and returns the content of it\n     * Note: If a function is passed it should return the current base directory when no path or an empty is passed\n     */\n    content: {\n      type: [Array, Function],\n      default: () => []\n    },\n    /**\n     * Overwrite forbidden characters (by default the capabilities of the server are used)\n     * @deprecated Deprecated and will be removed in the next major version\n     */\n    forbiddenCharacters: {\n      type: Array,\n      default: () => []\n    }\n  },\n  setup() {\n    return {\n      t,\n      // non reactive data / properties\n      progressTimeId: `nc-uploader-progress-${Math.random().toString(36).slice(7)}`\n    };\n  },\n  data() {\n    return {\n      newFileMenuEntries: [],\n      openedMenu: false,\n      uploadManager: getUploader()\n    };\n  },\n  computed: {\n    menuEntriesUpload() {\n      return this.newFileMenuEntries.filter((entry) => entry.category === NewMenuEntryCategory.UploadFromDevice);\n    },\n    menuEntriesNew() {\n      return this.newFileMenuEntries.filter((entry) => entry.category === NewMenuEntryCategory.CreateNew);\n    },\n    menuEntriesOther() {\n      return this.newFileMenuEntries.filter((entry) => entry.category === NewMenuEntryCategory.Other);\n    },\n    /**\n     * Check whether the current browser supports uploading directories\n     * Hint: This does not check if the current connection supports this, as some browsers require a secure context!\n     */\n    canUploadFolders() {\n      return this.allowFolders && \"webkitdirectory\" in document.createElement(\"input\");\n    },\n    queue() {\n      return this.uploadManager.queue;\n    },\n    hasFailure() {\n      return this.queue.some((upload2) => upload2.status === Status.FAILED);\n    },\n    isAssembling() {\n      return this.queue.some((upload2) => upload2.status === Status.ASSEMBLING);\n    },\n    isUploading() {\n      return this.queue.some((upload2) => upload2.status !== Status.CANCELLED);\n    },\n    isOnlyAssembling() {\n      return this.isAssembling && this.queue.every((upload2) => (\n        // ignore empty uploads or meta uploads\n        upload2.size === 0 || upload2.status === Status.ASSEMBLING || upload2.status === Status.FINISHED\n      ));\n    },\n    isPaused() {\n      return this.uploadManager.info?.status === UploaderStatus.PAUSED;\n    },\n    buttonLabel() {\n      return this.noMenu ? t(\"Upload\") : t(\"New\");\n    },\n    haveMenu() {\n      return !((this.noMenu || this.newFileMenuEntries.length === 0) && !this.canUploadFolders);\n    }\n  },\n  watch: {\n    allowFolders: {\n      immediate: true,\n      handler() {\n        if (typeof this.content !== \"function\" && this.allowFolders) {\n          logger.error(\"[UploadPicker] Setting `allowFolders` is only allowed if `content` is a function\");\n        }\n      }\n    },\n    destination(destination) {\n      this.setDestination(destination);\n    },\n    isPaused(isPaused) {\n      if (isPaused) {\n        this.$emit(\"paused\", this.queue);\n      } else {\n        this.$emit(\"resumed\", this.queue);\n      }\n    }\n  },\n  beforeMount() {\n    if (this.destination) {\n      this.setDestination(this.destination);\n    }\n    this.uploadManager.addNotifier(this.onUploadCompletion);\n    useHotKey(\"u\", this.onKeyDown, {\n      stop: true,\n      prevent: true,\n      shift: true\n    });\n    useHotKey(\"Escape\", this.onKeyDown, {\n      stop: true,\n      prevent: true\n    });\n    logger.debug(\"UploadPicker initialised\");\n  },\n  methods: {\n    etaTimeAndSpeed() {\n      const speed = this.uploadManager.eta.speedReadable;\n      if (speed) {\n        return `${this.uploadManager.eta.timeReadable} (${speed})`;\n      }\n      return this.uploadManager.eta.timeReadable;\n    },\n    /**\n     * Handle clicking a new-menu entry\n     * @param entry The entry that was clicked\n     */\n    async onClick(entry) {\n      entry.handler(\n        this.destination,\n        await this.getContent().catch(() => [])\n      );\n    },\n    /**\n     * Trigger file picker\n     * @param uploadFolders Upload folders\n     */\n    onTriggerPick(uploadFolders = false) {\n      const input = this.$refs.input;\n      if (this.canUploadFolders) {\n        input.webkitdirectory = uploadFolders;\n      }\n      this.$nextTick(() => input.click());\n    },\n    /**\n     * Helper for backwards compatibility that queries the content of the current directory\n     * @param path The current path\n     */\n    async getContent(path) {\n      return Array.isArray(this.content) ? this.content : await this.content(path);\n    },\n    /**\n     * Start uploading\n     */\n    async onPick() {\n      const input = this.$refs.input;\n      const files = input.files ? Array.from(input.files) : [];\n      try {\n        await this.uploadManager.batchUpload(\"\", files, uploadConflictHandler(this.getContent));\n      } catch (error) {\n        logger.debug(\"Error while uploading\", { error });\n      } finally {\n        this.resetForm();\n      }\n    },\n    resetForm() {\n      const form = this.$refs.form;\n      form?.reset();\n    },\n    /**\n     * Cancel ongoing queue\n     */\n    onCancel() {\n      this.uploadManager.queue.forEach((upload2) => {\n        upload2.cancel();\n      });\n      this.resetForm();\n    },\n    setDestination(destination) {\n      if (!this.destination) {\n        logger.debug(\"Invalid destination\");\n        return;\n      }\n      this.uploadManager.destination = destination;\n      this.newFileMenuEntries = getNewFileMenuEntries(destination);\n    },\n    onUploadCompletion(upload2) {\n      if (upload2.status === Status.FAILED) {\n        this.$emit(\"failed\", upload2);\n      } else {\n        this.$emit(\"uploaded\", upload2);\n      }\n    },\n    onKeyDown(event) {\n      if (event.key === \"u\") {\n        if (this.haveMenu) {\n          this.openedMenu = true;\n          return;\n        }\n        this.onTriggerPick();\n      }\n      if (event.key === \"Escape\" && this.openedMenu) {\n        this.openedMenu = false;\n      }\n    }\n  }\n});\nvar _sfc_render = function render5() {\n  var _vm = this, _c = _vm._self._c;\n  _vm._self._setupProxy;\n  return _vm.destination ? _c(\"form\", { ref: \"form\", staticClass: \"upload-picker\", class: { \"upload-picker--uploading\": _vm.isUploading, \"upload-picker--paused\": _vm.isPaused }, attrs: { \"data-cy-upload-picker\": \"\" } }, [!_vm.haveMenu ? _c(\"NcButton\", { attrs: { \"aria-label\": _vm.buttonLabel, \"disabled\": _vm.disabled, \"data-cy-upload-picker-add\": \"\", \"data-cy-upload-picker-menu-entry\": \"upload-file\", \"type\": _vm.primary ? \"primary\" : \"secondary\" }, on: { \"click\": function($event) {\n    return _vm.onTriggerPick();\n  } }, scopedSlots: _vm._u([{ key: \"icon\", fn: function() {\n    return [_c(\"IconPlus\", { attrs: { \"size\": 20 } })];\n  }, proxy: true }, !_vm.isUploading ? { key: \"default\", fn: function() {\n    return [_vm._v(\" \" + _vm._s(_vm.buttonLabel) + \" \")];\n  }, proxy: true } : null], null, true) }) : _c(\"NcActions\", { attrs: { \"aria-label\": _vm.buttonLabel, \"menu-name\": _vm.noLabel ? void 0 : _vm.buttonLabel, \"open\": _vm.openedMenu, \"type\": _vm.primary ? \"primary\" : \"secondary\" }, on: { \"update:open\": function($event) {\n    _vm.openedMenu = $event;\n  } }, scopedSlots: _vm._u([{ key: \"icon\", fn: function() {\n    return [_c(\"IconPlus\", { attrs: { \"size\": 20 } })];\n  }, proxy: true }], null, false, 1991456921) }, [_c(\"NcActionCaption\", { attrs: { \"name\": _vm.t(\"Upload from device\") } }), _c(\"NcActionButton\", { attrs: { \"data-cy-upload-picker-add\": \"\", \"data-cy-upload-picker-menu-entry\": \"upload-file\", \"close-after-click\": true }, on: { \"click\": function($event) {\n    return _vm.onTriggerPick();\n  } }, scopedSlots: _vm._u([{ key: \"icon\", fn: function() {\n    return [_c(\"IconUpload\", { attrs: { \"size\": 20 } })];\n  }, proxy: true }], null, false, 337456192) }, [_vm._v(\" \" + _vm._s(_vm.t(\"Upload files\")) + \" \")]), _vm.canUploadFolders ? _c(\"NcActionButton\", { attrs: { \"close-after-click\": \"\", \"data-cy-upload-picker-add-folders\": \"\", \"data-cy-upload-picker-menu-entry\": \"upload-folder\" }, on: { \"click\": function($event) {\n    return _vm.onTriggerPick(true);\n  } }, scopedSlots: _vm._u([{ key: \"icon\", fn: function() {\n    return [_c(\"IconFolderUpload\", { attrs: { \"size\": 20 } })];\n  }, proxy: true }], null, false, 931184598) }, [_vm._v(\" \" + _vm._s(_vm.t(\"Upload folders\")) + \" \")]) : _vm._e(), !_vm.noMenu ? _vm._l(_vm.menuEntriesUpload, function(entry) {\n    return _c(\"NcActionButton\", { key: entry.id, staticClass: \"upload-picker__menu-entry\", attrs: { \"icon\": entry.iconClass, \"close-after-click\": true, \"data-cy-upload-picker-menu-entry\": entry.id }, on: { \"click\": function($event) {\n      return _vm.onClick(entry);\n    } }, scopedSlots: _vm._u([entry.iconSvgInline ? { key: \"icon\", fn: function() {\n      return [_c(\"NcIconSvgWrapper\", { attrs: { \"svg\": entry.iconSvgInline } })];\n    }, proxy: true } : null], null, true) }, [_vm._v(\" \" + _vm._s(entry.displayName) + \" \")]);\n  }) : _vm._e(), !_vm.noMenu && _vm.menuEntriesNew.length > 0 ? [_c(\"NcActionSeparator\"), _c(\"NcActionCaption\", { attrs: { \"name\": _vm.t(\"Create new\") } }), _vm._l(_vm.menuEntriesNew, function(entry) {\n    return _c(\"NcActionButton\", { key: entry.id, staticClass: \"upload-picker__menu-entry\", attrs: { \"icon\": entry.iconClass, \"close-after-click\": true, \"data-cy-upload-picker-menu-entry\": entry.id }, on: { \"click\": function($event) {\n      return _vm.onClick(entry);\n    } }, scopedSlots: _vm._u([entry.iconSvgInline ? { key: \"icon\", fn: function() {\n      return [_c(\"NcIconSvgWrapper\", { attrs: { \"svg\": entry.iconSvgInline } })];\n    }, proxy: true } : null], null, true) }, [_vm._v(\" \" + _vm._s(entry.displayName) + \" \")]);\n  })] : _vm._e(), !_vm.noMenu && _vm.menuEntriesOther.length > 0 ? [_c(\"NcActionSeparator\"), _vm._l(_vm.menuEntriesOther, function(entry) {\n    return _c(\"NcActionButton\", { key: entry.id, staticClass: \"upload-picker__menu-entry\", attrs: { \"icon\": entry.iconClass, \"close-after-click\": true, \"data-cy-upload-picker-menu-entry\": entry.id }, on: { \"click\": function($event) {\n      return _vm.onClick(entry);\n    } }, scopedSlots: _vm._u([entry.iconSvgInline ? { key: \"icon\", fn: function() {\n      return [_c(\"NcIconSvgWrapper\", { attrs: { \"svg\": entry.iconSvgInline } })];\n    }, proxy: true } : null], null, true) }, [_vm._v(\" \" + _vm._s(entry.displayName) + \" \")]);\n  })] : _vm._e()], 2), _c(\"div\", { directives: [{ name: \"show\", rawName: \"v-show\", value: _vm.isUploading, expression: \"isUploading\" }], staticClass: \"upload-picker__progress\" }, [_c(\"NcProgressBar\", { attrs: { \"aria-label\": _vm.t(\"Upload progress\"), \"aria-describedby\": _vm.progressTimeId, \"data-cy-upload-picker-progress\": \"\", \"error\": _vm.hasFailure, \"value\": _vm.uploadManager.eta.progress, \"size\": \"medium\" } }), _c(\"p\", { attrs: { \"id\": _vm.progressTimeId, \"data-cy-upload-picker-progress-label\": \"\" } }, [_vm.isPaused ? _c(\"span\", [_vm._v(\" \" + _vm._s(_vm.t(\"paused\")) + \" \")]) : _vm.isOnlyAssembling ? _c(\"span\", [_vm._v(\" \" + _vm._s(_vm.t(\"assembling\")) + \" \")]) : _c(\"span\", { attrs: { \"title\": _vm.etaTimeAndSpeed() } }, [_vm._v(\" \" + _vm._s(_vm.uploadManager.eta.timeReadable) + \" \"), _vm.uploadManager.eta.speedReadable && _vm.uploadManager.eta.time >= 60 ? _c(\"span\", [_vm._v(\" (\" + _vm._s(_vm.uploadManager.eta.speedReadable) + \") \")]) : _vm._e()])])], 1), _vm.isUploading && !_vm.isOnlyAssembling ? _c(\"NcButton\", { staticClass: \"upload-picker__cancel\", attrs: { \"type\": \"tertiary\", \"aria-label\": _vm.t(\"Cancel uploads\"), \"data-cy-upload-picker-cancel\": \"\" }, on: { \"click\": _vm.onCancel }, scopedSlots: _vm._u([{ key: \"icon\", fn: function() {\n    return [_c(\"IconCancel\", { attrs: { \"size\": 20 } })];\n  }, proxy: true }], null, false, 3076329829) }) : _vm._e(), _c(\"input\", { ref: \"input\", staticClass: \"hidden-visually\", attrs: { \"accept\": _vm.accept?.join?.(\", \"), \"multiple\": _vm.multiple, \"data-cy-upload-picker-input\": \"\", \"type\": \"file\" }, on: { \"change\": _vm.onPick } })], 1) : _vm._e();\n};\nvar _sfc_staticRenderFns = [];\nvar __component__ = /* @__PURE__ */ normalizeComponent(\n  _sfc_main,\n  _sfc_render,\n  _sfc_staticRenderFns,\n  false,\n  null,\n  \"a66c1264\"\n);\nconst UploadPicker = __component__.exports;\nexport {\n  EtaStatus as E,\n  Status as S,\n  Upload as U,\n  isFileSystemFileEntry as a,\n  n as b,\n  Uploader as c,\n  UploaderStatus as d,\n  getConflicts as e,\n  uploadConflictHandler as f,\n  getUploader as g,\n  hasConflict as h,\n  isFileSystemEntry as i,\n  UploadPicker as j,\n  logger as l,\n  normalizeComponent as n,\n  openConflictPicker as o,\n  t,\n  upload as u\n};\n//# sourceMappingURL=index-DPkUyJ8g.mjs.map\n","// The module cache\nvar __webpack_module_cache__ = {};\n\n// The require function\nfunction __webpack_require__(moduleId) {\n\t// Check if module is in cache\n\tvar cachedModule = __webpack_module_cache__[moduleId];\n\tif (cachedModule !== undefined) {\n\t\treturn cachedModule.exports;\n\t}\n\t// Create a new module (and put it into the cache)\n\tvar module = __webpack_module_cache__[moduleId] = {\n\t\tid: moduleId,\n\t\tloaded: false,\n\t\texports: {}\n\t};\n\n\t// Execute the module function\n\t__webpack_modules__[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n\t// Flag the module as loaded\n\tmodule.loaded = true;\n\n\t// Return the exports of the module\n\treturn module.exports;\n}\n\n// expose the modules object (__webpack_modules__)\n__webpack_require__.m = __webpack_modules__;\n\n","// getDefaultExport function for compatibility with non-harmony modules\n__webpack_require__.n = (module) => {\n\tvar getter = module && module.__esModule ?\n\t\t() => (module['default']) :\n\t\t() => (module);\n\t__webpack_require__.d(getter, { a: getter });\n\treturn getter;\n};","// define getter functions for harmony exports\n__webpack_require__.d = (exports, definition) => {\n\tfor(var key in definition) {\n\t\tif(__webpack_require__.o(definition, key) && !__webpack_require__.o(exports, key)) {\n\t\t\tObject.defineProperty(exports, key, { enumerable: true, get: definition[key] });\n\t\t}\n\t}\n};","__webpack_require__.f = {};\n// This file contains only the entry chunk.\n// The chunk loading function for additional chunks\n__webpack_require__.e = (chunkId) => {\n\treturn Promise.all(Object.keys(__webpack_require__.f).reduce((promises, key) => {\n\t\t__webpack_require__.f[key](chunkId, promises);\n\t\treturn promises;\n\t}, []));\n};","// This function allow to reference async chunks\n__webpack_require__.u = (chunkId) => {\n\t// return url for filenames based on template\n\treturn \"\" + chunkId + \"-\" + chunkId + \".js?v=\" + {\"1035\":\"da08d310d18692ca4e27\",\"1140\":\"dd55e1cf2dab9870eea9\",\"1764\":\"3654558a3474ec02b609\",\"2221\":\"2dad9baace69cfd4a3be\",\"2457\":\"ce6348bfa704a5bf56fb\",\"3145\":\"3908fb4074194097d3f5\",\"4271\":\"101cdb0f1357424796fd\",\"4723\":\"934c36402dc782526ac6\",\"5448\":\"71cfe268d6f1213c4735\",\"5862\":\"580b9c2e231a9169a12f\",\"6015\":\"8ac07126adf0759a3464\",\"6798\":\"995524658ab188a2d123\",\"7471\":\"b4ac70873a3ab192efd0\",\"7859\":\"5bcb1bbacda3204063dd\",\"7910\":\"de857920f8beb5205bbc\",\"8815\":\"0f63c2eb085d7b08be1b\",\"9281\":\"29ef7f217a0c6b239922\",\"9906\":\"2806b05f6af5e826407f\"}[chunkId] + \"\";\n};","__webpack_require__.o = (obj, prop) => (Object.prototype.hasOwnProperty.call(obj, prop))","// define __esModule on exports\n__webpack_require__.r = (exports) => {\n\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n\t}\n\tObject.defineProperty(exports, '__esModule', { value: true });\n};","__webpack_require__.nmd = (module) => {\n\tmodule.paths = [];\n\tif (!module.children) module.children = [];\n\treturn module;\n};","__webpack_require__.j = 2882;","var scriptUrl;\nif (globalThis.importScripts) scriptUrl = globalThis.location + \"\";\nvar document = globalThis.document;\nif (!scriptUrl && document) {\n\tif (document.currentScript && document.currentScript.tagName.toUpperCase() === 'SCRIPT')\n\t\tscriptUrl = document.currentScript.src;\n\tif (!scriptUrl) {\n\t\tvar scripts = document.getElementsByTagName(\"script\");\n\t\tif(scripts.length) {\n\t\t\tvar i = scripts.length - 1;\n\t\t\twhile (i > -1 && (!scriptUrl || !/^http(s?):/.test(scriptUrl))) scriptUrl = scripts[i--].src;\n\t\t}\n\t}\n}\n// When supporting browsers where an automatic publicPath is not supported you must specify an output.publicPath manually via configuration\n// or pass an empty string (\"\") and set the __webpack_public_path__ variable from your code to use your own logic.\nif (!scriptUrl) throw new Error(\"Automatic publicPath is not supported in this browser\");\nscriptUrl = scriptUrl.replace(/^blob:/, \"\").replace(/#.*$/, \"\").replace(/\\?.*$/, \"\").replace(/\\/[^\\/]+$/, \"/\");\n__webpack_require__.p = scriptUrl;","__webpack_require__.b = (typeof document !== 'undefined' && document.baseURI) || self.location.href;\n\n// object to store loaded and loading chunks\n// undefined = chunk not loaded, null = chunk preloaded/prefetched\n// [resolve, reject, Promise] = chunk loading, 0 = chunk loaded\nvar installedChunks = {\n\t2882: 0,\n\t7471: 0\n};\n\n__webpack_require__.f.j = (chunkId, promises) => {\n\t\t// JSONP chunk loading for javascript\n\t\tvar installedChunkData = __webpack_require__.o(installedChunks, chunkId) ? installedChunks[chunkId] : undefined;\n\t\tif(installedChunkData !== 0) { // 0 means \"already installed\".\n\n\t\t\t// a Promise means \"currently loading\".\n\t\t\tif(installedChunkData) {\n\t\t\t\tpromises.push(installedChunkData[2]);\n\t\t\t} else {\n\t\t\t\tif(true) { // all chunks have JS\n\t\t\t\t\t// setup Promise in chunk cache\n\t\t\t\t\tvar promise = new Promise((resolve, reject) => (installedChunkData = installedChunks[chunkId] = [resolve, reject]));\n\t\t\t\t\tpromises.push(installedChunkData[2] = promise);\n\n\t\t\t\t\t// start chunk loading\n\t\t\t\t\tvar url = __webpack_require__.p + __webpack_require__.u(chunkId);\n\t\t\t\t\t// create error before stack unwound to get useful stacktrace later\n\t\t\t\t\tvar error = new Error();\n\t\t\t\t\tvar loadingEnded = (event) => {\n\t\t\t\t\t\tif(__webpack_require__.o(installedChunks, chunkId)) {\n\t\t\t\t\t\t\tinstalledChunkData = installedChunks[chunkId];\n\t\t\t\t\t\t\tif(installedChunkData !== 0) installedChunks[chunkId] = undefined;\n\t\t\t\t\t\t\tif(installedChunkData) {\n\t\t\t\t\t\t\t\tvar errorType = event && (event.type === 'load' ? 'missing' : event.type);\n\t\t\t\t\t\t\t\tvar realSrc = event && event.target && event.target.src;\n\t\t\t\t\t\t\t\terror.message = 'Loading chunk ' + chunkId + ' failed.\\n(' + errorType + ': ' + realSrc + ')';\n\t\t\t\t\t\t\t\terror.name = 'ChunkLoadError';\n\t\t\t\t\t\t\t\terror.type = errorType;\n\t\t\t\t\t\t\t\terror.request = realSrc;\n\t\t\t\t\t\t\t\tinstalledChunkData[1](error);\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t};\n\t\t\t\t\t__webpack_require__.l(url, loadingEnded, \"chunk-\" + chunkId, chunkId);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n};\n\n// no prefetching\n\n// no preloaded\n\n// no HMR\n\n// no HMR manifest\n\n__webpack_require__.O.j = (chunkId) => (installedChunks[chunkId] === 0);\n\n// install a JSONP callback for chunk loading\nvar webpackJsonpCallback = (parentChunkLoadingFunction, data) => {\n\tvar [chunkIds, moreModules, runtime] = data;\n\t// add \"moreModules\" to the modules object,\n\t// then flag all \"chunkIds\" as loaded and fire callback\n\tvar moduleId, chunkId, i = 0;\n\tif(chunkIds.some((id) => (installedChunks[id] !== 0))) {\n\t\tfor(moduleId in moreModules) {\n\t\t\tif(__webpack_require__.o(moreModules, moduleId)) {\n\t\t\t\t__webpack_require__.m[moduleId] = moreModules[moduleId];\n\t\t\t}\n\t\t}\n\t\tif(runtime) var result = runtime(__webpack_require__);\n\t}\n\tif(parentChunkLoadingFunction) parentChunkLoadingFunction(data);\n\tfor(;i < chunkIds.length; i++) {\n\t\tchunkId = chunkIds[i];\n\t\tif(__webpack_require__.o(installedChunks, chunkId) && installedChunks[chunkId]) {\n\t\t\tinstalledChunks[chunkId][0]();\n\t\t}\n\t\tinstalledChunks[chunkId] = 0;\n\t}\n\treturn __webpack_require__.O(result);\n}\n\nvar chunkLoadingGlobal = globalThis[\"webpackChunknextcloud_ui_legacy\"] = globalThis[\"webpackChunknextcloud_ui_legacy\"] || [];\nchunkLoadingGlobal.forEach(webpackJsonpCallback.bind(null, 0));\nchunkLoadingGlobal.push = webpackJsonpCallback.bind(null, chunkLoadingGlobal.push.bind(chunkLoadingGlobal));","__webpack_require__.nc = undefined;","// startup\n// Load entry module and return exports\n// This entry module depends on other loaded chunks and execution need to be delayed\nvar __webpack_exports__ = __webpack_require__.O(undefined, [4208], () => (__webpack_require__(65832)))\n__webpack_exports__ = __webpack_require__.O(__webpack_exports__);\n"],"names":["deferred","inProgress","dataWebpackPrefix","getLoggerBuilder","setApp","detectUser","build","script","name","props","to","type","String","required","where","default","disabled","Boolean","data","nodes","waiting","observer","parent","watch","value","this$1","this","disable","$nextTick","teardownObserver","bootObserver","move","mounted","Array","from","$el","childNodes","maybeMove","beforeDestroy","getComponentChildrenNode","computed","classes","methods","document","querySelector","prepend","getFragment","appendChild","fragment","createDocumentFragment","forEach","node","onMutations","mutations","shouldMove","i","length","mutation","filteredAddedNodes","addedNodes","filter","includes","removedNodes","MutationObserver","observe","body","childList","subtree","attributes","characterData","childObserver","find","target","parentNode","removeChild","disconnect","$vnode","componentOptions","children","map","elm","normalizeComponent","template","style","scopeId","isFunctionalTemplate","moduleIdentifier","shadowMode","createInjector","createInjectorSSR","createInjectorShadow","hook","options","render","staticRenderFns","_compiled","functional","_scopeId","context","ssrContext","__VUE_SSR_CONTEXT__","call","_registeredComponents","add","_ssrRegister","$root","$options","shadowRoot","originalRender","h","existing","beforeCreate","concat","HEAD","isOldIE","navigator","test","userAgent","toLowerCase","id","css","group","media","styles","ids","Set","has","code","source","sources","btoa","unescape","encodeURIComponent","JSON","stringify","element","createElement","setAttribute","undefined","head","getElementsByTagName","push","styleSheet","cssText","join","index","size","textNode","createTextNode","insertBefore","addStyle","__vue_script__","__vue_render__","_vm","_h","$createElement","_self","_c","class","_t","_withStripped","__vue_component__","inject","install","Vue","installed","component","GlobalVue","window","use","emits","title","fillColor","Number","_b","staticClass","attrs","on","$event","$emit","$attrs","_v","_s","_e","width","ref","isWide","isMedium","isNarrow","ResizeObserver","contentBoxSize","inlineSize","contentRect","updateObserver","el","unobserve","useFileListWidth","onMounted","readonly","allViews","shallowRef","visibleViews","view","hidden","initialized","useViews","navigation","getNavigation","addEventListener","views","useVisibleViews","queue","getQueue","PQueue","concurrency","MoveCopyAction","loadState","Permission","NONE","HintException","Error","Directory","File","constructor","contents","super","_defineProperty","_contents","_computeDirectorySize","lastModified","Date","now","_computeDirectoryMtime","directory","reduce","acc","file","entry","async","traverseTree","isFile","Promise","resolve","reject","logger","debug","entries","dirReader","createReader","getEntries","readEntries","results","error","readDirectory","all","flat","createDirectoryIfNotExists","path","davUrl","defaultRemoteURL","defaultRootPath","davClient","getClient","exists","createDirectory","recursive","stat","details","getDefaultPropfind","emit","resultToNode","resolveConflict","files","destination","conflicts","basename","uploads","selected","renamed","openConflictPicker","showInfo","t","info","warn","showWarning","dataTransferToFileTree","items","item","kind","getAsEntry","webkitGetAsEntry","warned","fileTree","DataTransferItem","getAsFile","showError","onDropExternalFiles","root","uploader","getUploader","hasConflict","uploadDirectoryContents","relativePath","upload","pause","start","errors","allSettled","result","status","showSuccess","onDropInternalFiles","isCopy","promises","fromAsync","method","overwrite","FileType","Folder","MOVE","some","dirname","startsWith","nameMapping","Map","otherNodes","getContents","getConflicts","nodesToRename","content","n","c","skipped","usedNames","newName","getUniqueName","ignoreFileExtension","set","actionFinished","mode","text","count","toast","showLoading","hideToast","createLoadingNotification","NodeStatus","LOADING","client","currentPath","destinationPath","get","COPY","copyFile","moveFile","isAxiosError","response","parser","DOMParser","message","parseFromString","textContent","handleCopyMoveNodesTo","useDragAndDropStore","defineStore","state","dragging","actions","selection","reset","useSelectionStore","lastSelection","lastSelectedIndex","setLastIndex","useUploaderStore","args","store","defineComponent","components","NcActionButton","NcBreadcrumbs","NcBreadcrumb","NcIconSvgWrapper","setup","activeStore","useActiveStore","filesStore","useFilesStore","pathsStore","usePathsStore","draggingStore","selectionStore","uploaderStore","isMenuOpen","activeFolder","isSharingEnabled","getCapabilities","files_sharing","isPublic","isPublicShare","canShare","permissions","SHARE","openSharingSidebar","getSidebar","open","mdiAccountPlus","mdiChevronDown","mdiChevronUp","mdiReload","dirs","split","replace","sections","dir","getFileSourceFromPath","getNodeFromSource","exact","getDirDisplayName","getTo","disableDrop","isUploadInProgress","wrapUploadProgressBar","viewIcon","activeView","icon","selectedFiles","draggingFiles","getNode","getPath","displayname","$route","params","query","fileid","onDragOver","event","dataTransfer","ctrlKey","dropEffect","onDrop","preventDefault","controller","AbortController","signal","folder","canDrop","CREATE","button","titleForSection","section","ariaForSection","styleTagTransform","setAttributes","insert","domAPI","insertStyleElement","locals","_setupProxy","scopedSlots","_u","key","fn","proxy","_l","nativeOn","TrayArrowDownIcon","currentFolder","Object","dragover","canUpload","isQuotaExceeded","cantUploadLabel","resetDragOver","debounce","mainContent","getElementById","onDragLeave","onContentDrop","beforeUnmount","removeEventListener","isForeignFile","types","currentTarget","contains","relatedTarget","clear","stopPropagation","lastUpload","findLast","UploadStatus","FAILED","webkitRelativePath","headers","$router","directives","rawName","expression","isFileListFilterWithUi","useFiltersStore","chips","filters","activeChips","values","sortedFilters","sort","a","b","order","filtersWithUI","addFilter","onFilterUpdateChips","onFilterUpdate","detail","registry","getFilesRegistry","initialFilters","getFileListFilters","filterId","findIndex","splice","removeFilter","subscribe","onViewChanged","initialize","_defineComponent","__name","__props","filterStore","visualFilters","hasActiveFilters","selectedFilter","boundary","__sfc","menuTriggerId","mdiArrowLeft","mdiFilterVariant","NcButton","NcPopover","_setup","$style","fileListFilters","iconSvgInline","displayName","fileListFilters__popoverContainer","tagName","tag","domProps","fileListFilters__popoverFilterView","Function","updateRootElement","currentView","replaceChildren","openedSubmenu","enabledSubmenuActions","enabledFileActions","record","action","isValidMenu","onBackToMenuClick","menuAction","$refs","focus","executeAction","currentNode","activeNode","_children","enabled","activeAction","success","exec","ArrowLeftIcon","CustomElementRender","NcActions","NcActionSeparator","NcLoadingIcon","mixins","actionsMixins","opened","gridMode","isActive","isLoading","actionContext","enabledInlineActions","inline","enabledRenderActions","renderInline","enabledMenuActions","DefaultType","HIDDEN","self","topActionsIds","renderedNonDestructiveActions","destructive","renderedDestructiveActions","openedMenu","getBoundariesElement","created","useHotKey","onKeyDown","stop","prevent","actionDisplayName","isLoadingAction","onActionClick","onMenuClose","onMenuClosed","refInFor","NcCheckboxRadioSwitch","keyboardStore","altKey","metaKey","shiftKey","onEvent","_initialized","useKeyboardStore","isSelected","ariaLabel","loadingLabel","onToggleSelect","ctrl","shift","onSelectionChange","newSelectedIndex","isAlreadySelected","Math","min","end","max","filesToSelect","slice","resetSelection","indexOf","_k","keyCode","apply","arguments","useRenamingStore","renamingNode","newNodeName","isRenaming","$reset","rename","oldName","trim","userConfig","useUserConfigStore","show_dialog_file_extension","oldExtension","extname","newExtension","promise","withResolvers","spawnDialog","defineAsyncComponent","showFileExtensionDialog","show_hidden","filename","showHiddenFileDialog","oldEncodedSource","encodedSource","axios","url","Destination","Overwrite","fetchNode","oldSource","getFilenameValidity","escape","validateFilename","InvalidFilenameError","reason","InvalidFilenameErrorReason","Character","char","segment","ReservedName","Extension","match","extension","NcTextField","renamingStore","userConfigStore","defaultFileAction","isRenamingSmallScreen","renameLabel","linkTo","is","tabindex","immediate","handler","renaming","startRenaming","input","renameInput","validity","checkIfNodeExists","setCustomValidity","reportValidity","sourceName","setSelectionRange","dispatchEvent","Event","stopRenaming","onRename","renameForm","checkValidity","nameContainer","model","callback","$$v","show_files_extensions","StarSvg","usePreviewImage","toValue","fallback","mime","previewUrl","generateUrl","URL","location","origin","href","crop","sizeX","sizeY","token","getSharingToken","searchParams","toString","etag","mtime","getTime","AccountGroupIcon","AccountPlusIcon","CollectivesIcon","FavoriteIcon","FileIcon","FolderIcon","FolderOpenIcon","KeyIcon","LinkIcon","NetworkIcon","TagIcon","toRef","crop_image_previews","backgroundFailed","backgroundLoaded","isFavorite","favorite","fileOverlay","PlayCircleIcon","folderOverlay","shareTypes","ShareType","Link","Email","hasBlurhash","canvas","drawBlurhash","previewImg","src","onBackgroundLoad","onBackgroundError","height","pixels","decode","ctx","getContext","imageData","createImageData","putImageData","_m","useFileActions","getFileActions","useRouteParameters","route","useRoute","fileId","parseInt","isNaN","openFile","openfile","toLocaleLowerCase","openDetails","opendetails","useActionsMenuStore","available","sidebar","hotkey","description","getSummaryFor","fileCount","folderCount","summary","fileSummary","folderSummary","hiddenSummary","extend","FileMultipleIcon","isSingleNode","isSingleFolder","totalSize","total","formatFileSize","update","preview","cloneNode","Preview","DragAndDropPreview","directive","vOnClickOutside","NcFile","Node","isMtimeAvailable","compact","provide","uniqueId","str","hash","charCodeAt","hashCode","currentRouteFileId","isFailedSource","canDrag","UPDATE","every","actionsMenuStore","getDate","crtime","mtimeOpacity","maxOpacityTime","timeDiff","opacityTime","color","round","newSource","resetState","closest","removeProperty","onRightClick","getBoundingClientRect","setProperty","clientX","left","clientY","top","isMoreThanOneSelected","execDefaultAction","metaKeyPressed","READ","downloadAttribute","parse","scope","isDownloadable","openDetailsIfAvailable","sidebarAction","onDragStart","clearData","image","$mount","$on","$off","getDragAndDropPreview","setDragImage","onDragEnd","FileEntryActions","FileEntryCheckbox","FileEntryName","FileEntryPreview","NcDateTime","FileEntryMixin","isMimeAvailable","isSizeAvailable","rowListeners","dragstart","contextmenu","dragleave","dragend","drop","columns","OC","MimeTypeList","names","baseType","ext","toUpperCase","sizeOpacity","pow","triggerDefaultAction","_g","column","inheritAttrs","r","_sfc_main","ariaLabelClose","actionsContainer","validator","iconPath","iconSvg","noClose","variant","slots","realVariant","canClose","hasActions","hasIcon","mdiClose","_sfc_render","_sfc_staticRenderFns","NcChip","exports","NcAvatar","fileListFilterChips","chip","onclick","user","searchStore","useSearchStore","getPinia","isVisible","onClick","header","queueUpdate","initialRender","mount","then","catch","destroyed","updated","classForColumn","initialViewConfig","useViewConfigStore","viewConfigs","getCurrentUser","put","viewId","onUpdate","getConfig","viewid","setSortingBy","toggleSortingDirection","sorting_direction","mapState","sortingMode","sorting_mode","defaultSortKey","isAscSorting","sortingDirection","toggleSortBy","MenuDown","MenuUp","filesSortingMixin","translate","FilesListTableHeaderButton","selectAllBind","label","checked","isAllSelected","indeterminate","isSomeSelected","selectedNodes","isNoneSelected","onToggleAll","ariaSortForMode","boundariesElement","inlineActions","loading","execBatch","childrenActionsIds","menuActions","areSomeNodesLoading","selectionSources","$set","failedSources","e","dataComponent","dataKey","dataSources","extraProps","scrollToIndex","caption","fileListWidth","beforeHeight","footerHeight","headerHeight","tableHeight","resizeObserver","isReady","bufferItems","columnCount","itemHeight","itemWidth","visibleRows","floor","rowCount","startIndex","firstColumnIndex","shownItems","renderedItems","oldItemsKeys","$_recycledPool","unusedKeys","keys","pop","random","substr","totalRowCount","ceil","tbodyStyle","rowsAbove","rowsBelow","paddingBlock","minHeight","scrollTo","oldColumnCount","updateHeightVariables","onScroll","before","footer","lastVisibleIndex","totalRows","clampedIndex","scrollTop","indexToScrollPos","_onScrollHandle","requestAnimationFrame","scrollPosToIndex","scrollPos","topScroll","clientHeight","theadHeight","thead","filterHeight","$scopedSlots","sorted","FileListFilterChips","FileListFilterToSearch","FilesListHeader","FilesListTableFooter","FilesListTableHeader","VirtualList","FilesListTableHeaderActions","View","show_mime_column","getFileListHeaders","FileEntry","FileEntryGrid","cantUpload","defaultCaption","isEmpty","handleOpenQueries","unselectFile","handleOpenFile","openSidebarForFile","scrollToFile","defaultAction","useEnabledFileActions","OCP","Files","Router","goToRoute","tableElement","table","tableTop","tableBottom","grid_view","setActiveNode","nextIndex","nextNode","useSidebarStore","activeTab","isOpen","hasContext","currentContext","currentActions","getActions","currentTabs","getTabs","tabId","setActiveTab","newTabs","close","tabs","getSidebarTabs","tab","getSidebarActions","_router","afterEach","defaultView","default_view","quota","BreadCrumbs","DragAndDropNotice","FileListFilters","FilesListVirtual","ListViewIcon","NcAppContent","NcEmptyContent","Teleport","UploadPicker","ViewGridIcon","IconAlertCircleOutline","IconReload","filtersStore","viewConfigStore","enableGridView","forbiddenCharacters","dirContents","enabledFileListActions","getFileListActions","useEnabledFileListActions","stopWatching","nextTick","loadingAction","dirContentsFiltered","getContent","normalizedPath","normalize","getNodesByPath","pageHeading","dirContentsSorted","customColumn","reverse","sortNodes","sortFavoritesFirst","sort_favorites_first","sortFoldersFirst","sort_folders_first","sortingOrder","aa","relative","bb","isEmptyDir","isRefreshing","toPreviousDir","gridViewButtonLabel","showCustomEmptyView","emptyView","debouncedFetchContent","useThrottleFn","fetchContent","show","customEmptyView","newView","oldView","newDir","oldDir","filesListVirtual","filterDirContent","onUpdatedNode","onUpdateSearch","unmounted","unsubscribe","once","abort","updateNodes","setRoot","service","addPath","fatal","isWebDAVClientError","humanizeWebDAVError","onUpload","onUploadFail","CANCELLED","doc","toggleGridView","execFileListAction","emptyTitle","emptyCaption","Intl","Collator","getLanguage","getCanonicalLocale","numeric","usage","collator","level","viewConfig","isExpanded","expanded","childViews","v","isDescendant","parentView","sortedChildViews","compare","hasChildViews","navigationRoute","childViewsLoaded","loadChildViews","maxLevel","onExpandCollapse","NcAppNavigationItem","sticky","childView","rootViews","sortViews","NcAppNavigationList","FilesNavigationListItem","filesNavigationList","remove","useRouter","beforeResolve","next","VIEW_ID","onUnmounted","onBeforeNavigation","isSearchView","searchLabel","mdiMagnify","mdiSearchWeb","NcAppNavigationSearch","throttle","delay","timeoutID","_ref","_ref$noTrailing","noTrailing","_ref$noLeading","noLeading","_ref$debounceMode","debounceMode","cancelled","lastExec","clearExistingTimeout","clearTimeout","wrapper","_len","arguments_","_key","elapsed","setTimeout","cancel","_ref2$upcomingOnly","upcomingOnly","ChartPie","NcProgressBar","loadingStorageStats","storageStats","storageStatsTitle","usedQuotaByte","used","quotaByte","storageStatsTooltip","beforeMount","throttleUpdateStorageStats","free","showStorageFullWarning","debounceUpdateStorageStats","_ref$atBegin","atBegin","updateStorageStats","slot","NcAppSettingsSection","NcFormBox","NcFormBoxSwitch","mdiAccountOutline","mdiFolderOutline","NcRadioGroup","NcRadioGroupButton","folder_tree","setting","onBeforeMount","onBeforeUnmount","apiSettings","OCA","Settings","settings","localeCompare","FilesAppSettingsLegacyApiEntry","actionHotkeys","hotkeyToString","parts","alt","NcAppSettingsShortcutsSection","NcHotkey","NcHotkeyList","show_dialog_deletion","webDavUrl","generateRemoteUrl","uid","webDavDocsUrl","appPasswordUrl","isTwoFactorEnabled","NcFormBoxButton","NcFormBoxCopyButton","showKeyboardShortcuts","scrollIntoView","behavior","NcAppSettingsDialog","FilesAppSettingsAppearance","FilesAppSettingsGeneral","FilesAppSettingsLegacyApi","FilesAppSettingsShortcuts","FilesAppSettingsWarnings","FilesAppSettingsWebDav","settingsOpened","currentViewId","watchEffect","setActive","NcAppNavigation","IconCog","FilesNavigationList","FilesNavigationSearch","NavigationQuota","FilesAppSettings","isFavourited","mdiStar","NcUserBubble","filesSidebarSubname","filesSidebarSubname__separator","owner","filesSidebarSubname__userBubble","N","Symbol","toStringTag","initializedTabs","active","onInit","customElements","whenDefined","NcAppSidebarTab","background","Image","onload","onClosed","onOpened","onToggle","NcAppSidebar","FilesSidebarSubname","FilesSidebarTab","router","old","new","useHotKeys","NcContent","FilesList","FilesNavigation","FilesSidebar","originalPush","prototype","ignoreDuplicateNavigation","originalReplace","isNavigationFailure","NavigationFailureType","duplicated","base","linkActiveClass","routes","redirect","stringifyQuery","queryString","onError","aborted","parentIntercept","fromDir","toDir","fromSource","currentRoute","parentFolder","RouterService","goTo","__webpack_nonce__","getCSPNonce","assign","PiniaVuePlugin","_settings","register","Setting","_classPrivateFieldInitSpec","_name","_options","_classPrivateFieldSet","_classPrivateFieldGet","FilesApp","pinia","getRootPath","propfindPayload","contentsResponse","getDirectoryContents","includeSelf","defaultGetContents","getDirectoryByPath","rootPath","searchNodes","getLocalSearch","search","getDavNameSpaces","getDavProperties","getBaseUrl","dummyFolder","getRemoteURL","onDeletedNode","onChangedView","fileStore","roots","getters","getNodes","getNodesById","getRoot","deleteNodes","delete","onCreatedNode","onMovedNode","onAddFavorite","ourNode","onRemoveFavorite","_nc_files_pinia","createPinia","paths","payload","deletePath","addNodeToParentChildren","deleteNodeFromParentChildren","oldPath","oldNode","parentSource","updateSearch","current","updateRouter","isSearch","initialUserConfig","___CSS_LOADER_EXPORT___","module","defaultDavProperties","defaultDavNamespaces","d","nc","oc","ocs","s","davProperties","prop","davNamespaces","ns","getRecentSearch","remoteURL","setHeaders","requesttoken","patch","headers2","fetch","getFavoriteNodes","davRoot","filesRoot","userId","permString","P","WRITE","DELETE","parsePermissions","lastmod","creationdate","nodeData","getcontentlength","hasPreview","gtBuilder","detectLocale","addTranslation","locale","json","gt","ngettext","bind","gettext","UploadCancelledError","cause","uploadData","uploadData2","uploadOptions","onUploadProgress","onUploadRetry","retries","Blob","destinationFile","request","retryDelay","retryCount","retryCondition","onRetry","getChunk","getMaxChunksSize","fileSize","maxChunkSize","appConfig","max_chunk_size","minimumChunkSize","Status","Status2","Upload","_source","_file","_isChunked","_chunks","_size","_uploaded","_startTime","_status","_controller","_response","chunked","chunks","isChunked","startTime","uploaded","isFileSystemFileEntry","o","FileSystemFileEntry","isFileSystemEntry","FileSystemEntry","_originalName","_path","sum","latest","originalName","getChild","addChildren","addChild","FileSystemDirectoryEntry","reader","child","filePath","relPath","Eta","_done","_total","_progress","_elapsedTime","_speed","_eta","Infinity","_cutoffTime","resume","cutoffTime","done","deltaDone","deltaTime","historyNeeded","alpha","filtered","eta","dispatchTypedEvent","CustomEvent","cancelable","progress","time","timeReadable","seconds","hours","padStart","minutes","speed","speedReadable","UploaderStatus","UploaderStatus2","Uploader","_destinationFolder","_isPublic","_customHeaders","_uploadQueue","_jobQueue","chunked_upload","max_parallel_count","_queueSize","_queueProgress","_queueStatus","_notifiers","destinationFolder","ALL","maxChunksSize","customHeaders","structuredClone","setCustomHeader","deleteCustomerHeader","updateStats","upload2","partialSum","pending","INITIALIZED","UPLOADING","ASSEMBLING","addNotifier","notifier","_notifyAll","batchUpload","files2","onCancel","rootFolder","uploadDirectory","FINISHED","folderPath","currentUpload","selectedForUpload","directories","at","fileHandle","encodedDestinationFile","resolve2","supportsPublicChunking","dav","public_shares_chunking","disabledChunkUpload","blob","bytes","_mtimeHeader","tempUrl","chunksWorkspace","initChunkWorkspace","chunksQueue","chunk","bufferStart","bufferEnd","request2","chunkBytes","progressBytes","onIdle","forceRecreate","_nc_uploader","contentNames","ConflictPicker","picker","recursiveUpload","submit","$destroy","showInvalidFilenameDialog","InvalidFilenameDialog","rest","skip","scriptExports","render6","functionalTemplate","injectStyles","IconCancel","IconFolderUpload","IconPlus","IconUpload","NcActionCaption","accept","multiple","noMenu","noLabel","primary","allowFolders","progressTimeId","newFileMenuEntries","uploadManager","menuEntriesUpload","category","UploadFromDevice","menuEntriesNew","CreateNew","menuEntriesOther","Other","canUploadFolders","hasFailure","isAssembling","isUploading","isOnlyAssembling","isPaused","PAUSED","buttonLabel","haveMenu","setDestination","onUploadCompletion","etaTimeAndSpeed","onTriggerPick","uploadFolders","webkitdirectory","click","isArray","onPick","contentsCallback","filesToUpload","defineProperty","resetForm","form","iconClass","__webpack_module_cache__","__webpack_require__","moduleId","cachedModule","loaded","__webpack_modules__","m","O","chunkIds","priority","notFulfilled","fulfilled","j","getter","__esModule","definition","enumerable","f","chunkId","u","obj","hasOwnProperty","l","needAttach","scripts","getAttribute","charset","onScriptComplete","prev","onerror","timeout","doneFns","nmd","scriptUrl","globalThis","importScripts","currentScript","p","baseURI","installedChunks","installedChunkData","errorType","realSrc","webpackJsonpCallback","parentChunkLoadingFunction","moreModules","runtime","chunkLoadingGlobal","__webpack_exports__"],"sourceRoot":""}
\ No newline at end of file