cmcts-c-agent-embedding-react 1.0.64-vib → 1.1.1-cmcuni
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +48 -48
- package/base.json +21 -21
- package/dist/index.js +1 -1
- package/html.html +17 -0
- package/package.json +44 -48
- package/react-library.json +11 -11
- package/dist/components/Badge.d.ts +0 -10
- package/dist/components/Badge.d.ts.map +0 -1
- package/dist/components/Bot.d.ts +0 -130
- package/dist/components/Bot.d.ts.map +0 -1
- package/dist/components/FeedbackContentDialog.d.ts +0 -16
- package/dist/components/FeedbackContentDialog.d.ts.map +0 -1
- package/dist/components/Toast.d.ts +0 -10
- package/dist/components/Toast.d.ts.map +0 -1
- package/dist/components/TypingBubble.d.ts +0 -2
- package/dist/components/TypingBubble.d.ts.map +0 -1
- package/dist/components/avatars/Avatar.d.ts +0 -4
- package/dist/components/avatars/Avatar.d.ts.map +0 -1
- package/dist/components/avatars/DefaultAvatar.d.ts +0 -2
- package/dist/components/avatars/DefaultAvatar.d.ts.map +0 -1
- package/dist/components/bubbles/AgentReasoningBubble.d.ts +0 -16
- package/dist/components/bubbles/AgentReasoningBubble.d.ts.map +0 -1
- package/dist/components/bubbles/BotBubble.d.ts +0 -38
- package/dist/components/bubbles/BotBubble.d.ts.map +0 -1
- package/dist/components/bubbles/FollowUpPromptBubble.d.ts +0 -8
- package/dist/components/bubbles/FollowUpPromptBubble.d.ts.map +0 -1
- package/dist/components/bubbles/GuestBubble.d.ts +0 -16
- package/dist/components/bubbles/GuestBubble.d.ts.map +0 -1
- package/dist/components/bubbles/LeadCaptureBubble.d.ts +0 -20
- package/dist/components/bubbles/LeadCaptureBubble.d.ts.map +0 -1
- package/dist/components/bubbles/LoadingBubble.d.ts +0 -8
- package/dist/components/bubbles/LoadingBubble.d.ts.map +0 -1
- package/dist/components/bubbles/SourceBubble.d.ts +0 -9
- package/dist/components/bubbles/SourceBubble.d.ts.map +0 -1
- package/dist/components/bubbles/StarterPromptBubble.d.ts +0 -8
- package/dist/components/bubbles/StarterPromptBubble.d.ts.map +0 -1
- package/dist/components/buttons/AttachmentUploadButton.d.ts +0 -11
- package/dist/components/buttons/AttachmentUploadButton.d.ts.map +0 -1
- package/dist/components/buttons/CancelButton.d.ts +0 -10
- package/dist/components/buttons/CancelButton.d.ts.map +0 -1
- package/dist/components/buttons/FeedbackButtons.d.ts +0 -14
- package/dist/components/buttons/FeedbackButtons.d.ts.map +0 -1
- package/dist/components/buttons/ImageUploadButton.d.ts +0 -11
- package/dist/components/buttons/ImageUploadButton.d.ts.map +0 -1
- package/dist/components/buttons/LeadCaptureButtons.d.ts +0 -11
- package/dist/components/buttons/LeadCaptureButtons.d.ts.map +0 -1
- package/dist/components/buttons/RecordAudioButton.d.ts +0 -11
- package/dist/components/buttons/RecordAudioButton.d.ts.map +0 -1
- package/dist/components/buttons/SendButton.d.ts +0 -13
- package/dist/components/buttons/SendButton.d.ts.map +0 -1
- package/dist/components/icons/AddImageIcon.d.ts +0 -3
- package/dist/components/icons/AddImageIcon.d.ts.map +0 -1
- package/dist/components/icons/AttachmentIcon.d.ts +0 -3
- package/dist/components/icons/AttachmentIcon.d.ts.map +0 -1
- package/dist/components/icons/CircleDotIcon.d.ts +0 -3
- package/dist/components/icons/CircleDotIcon.d.ts.map +0 -1
- package/dist/components/icons/ClipboardIcon.d.ts +0 -3
- package/dist/components/icons/ClipboardIcon.d.ts.map +0 -1
- package/dist/components/icons/CmcIcon.d.ts +0 -3
- package/dist/components/icons/CmcIcon.d.ts.map +0 -1
- package/dist/components/icons/DeleteIcon.d.ts +0 -3
- package/dist/components/icons/DeleteIcon.d.ts.map +0 -1
- package/dist/components/icons/FullScreenIcon.d.ts +0 -3
- package/dist/components/icons/FullScreenIcon.d.ts.map +0 -1
- package/dist/components/icons/RecordIcon.d.ts +0 -3
- package/dist/components/icons/RecordIcon.d.ts.map +0 -1
- package/dist/components/icons/ResetBtn.d.ts +0 -3
- package/dist/components/icons/ResetBtn.d.ts.map +0 -1
- package/dist/components/icons/SendIcon.d.ts +0 -3
- package/dist/components/icons/SendIcon.d.ts.map +0 -1
- package/dist/components/icons/SendIconOff.d.ts +0 -3
- package/dist/components/icons/SendIconOff.d.ts.map +0 -1
- package/dist/components/icons/SendIconOn.d.ts +0 -3
- package/dist/components/icons/SendIconOn.d.ts.map +0 -1
- package/dist/components/icons/SparklesIcon.d.ts +0 -3
- package/dist/components/icons/SparklesIcon.d.ts.map +0 -1
- package/dist/components/icons/ThumbsDownIcon.d.ts +0 -5
- package/dist/components/icons/ThumbsDownIcon.d.ts.map +0 -1
- package/dist/components/icons/ThumbsUpIcon.d.ts +0 -5
- package/dist/components/icons/ThumbsUpIcon.d.ts.map +0 -1
- package/dist/components/icons/TickIcon.d.ts +0 -2
- package/dist/components/icons/TickIcon.d.ts.map +0 -1
- package/dist/components/icons/TrashIcon.d.ts +0 -3
- package/dist/components/icons/TrashIcon.d.ts.map +0 -1
- package/dist/components/icons/XIcon.d.ts +0 -5
- package/dist/components/icons/XIcon.d.ts.map +0 -1
- package/dist/components/icons/index.d.ts +0 -15
- package/dist/components/icons/index.d.ts.map +0 -1
- package/dist/components/image/PreviewImage.d.ts +0 -5
- package/dist/components/image/PreviewImage.d.ts.map +0 -1
- package/dist/components/index.d.ts +0 -3
- package/dist/components/index.d.ts.map +0 -1
- package/dist/components/inputs/textInput/components/FilePreview.d.ts +0 -12
- package/dist/components/inputs/textInput/components/FilePreview.d.ts.map +0 -1
- package/dist/components/inputs/textInput/components/ShortTextInput.d.ts +0 -13
- package/dist/components/inputs/textInput/components/ShortTextInput.d.ts.map +0 -1
- package/dist/components/inputs/textInput/components/TextInput.d.ts +0 -36
- package/dist/components/inputs/textInput/components/TextInput.d.ts.map +0 -1
- package/dist/components/inputs/textInput/index.d.ts +0 -3
- package/dist/components/inputs/textInput/index.d.ts.map +0 -1
- package/dist/components/mobile/MobileWelcomeScreen.d.ts +0 -13
- package/dist/components/mobile/MobileWelcomeScreen.d.ts.map +0 -1
- package/dist/constants.d.ts +0 -3
- package/dist/constants.d.ts.map +0 -1
- package/dist/features/bubble/components/Bubble.d.ts +0 -5
- package/dist/features/bubble/components/Bubble.d.ts.map +0 -1
- package/dist/features/bubble/components/BubbleButton.d.ts +0 -16
- package/dist/features/bubble/components/BubbleButton.d.ts.map +0 -1
- package/dist/features/bubble/components/Tooltip.d.ts +0 -15
- package/dist/features/bubble/components/Tooltip.d.ts.map +0 -1
- package/dist/features/bubble/components/index.d.ts +0 -2
- package/dist/features/bubble/components/index.d.ts.map +0 -1
- package/dist/features/bubble/index.d.ts +0 -2
- package/dist/features/bubble/index.d.ts.map +0 -1
- package/dist/features/bubble/types.d.ts +0 -111
- package/dist/features/bubble/types.d.ts.map +0 -1
- package/dist/features/full/components/Full.d.ts +0 -7
- package/dist/features/full/components/Full.d.ts.map +0 -1
- package/dist/features/full/components/index.d.ts +0 -2
- package/dist/features/full/components/index.d.ts.map +0 -1
- package/dist/features/full/index.d.ts +0 -2
- package/dist/features/full/index.d.ts.map +0 -1
- package/dist/features/popup/components/DisclaimerPopup.d.ts +0 -14
- package/dist/features/popup/components/DisclaimerPopup.d.ts.map +0 -1
- package/dist/features/popup/components/Popup.d.ts +0 -8
- package/dist/features/popup/components/Popup.d.ts.map +0 -1
- package/dist/features/popup/components/index.d.ts +0 -3
- package/dist/features/popup/components/index.d.ts.map +0 -1
- package/dist/features/popup/index.d.ts +0 -2
- package/dist/features/popup/index.d.ts.map +0 -1
- package/dist/features/popup/types.d.ts +0 -8
- package/dist/features/popup/types.d.ts.map +0 -1
- package/dist/hooks/useMobileDetection.d.ts +0 -52
- package/dist/hooks/useMobileDetection.d.ts.map +0 -1
- package/dist/queries/sendMessageQuery.d.ts +0 -125
- package/dist/queries/sendMessageQuery.d.ts.map +0 -1
- package/dist/register.d.ts +0 -2
- package/dist/register.d.ts.map +0 -1
- package/dist/test-markdown-component.d.ts +0 -2
- package/dist/test-markdown-component.d.ts.map +0 -1
- package/dist/types.d.ts +0 -1
- package/dist/types.d.ts.map +0 -1
- package/dist/utils/audioRecording.d.ts +0 -21
- package/dist/utils/audioRecording.d.ts.map +0 -1
- package/dist/utils/chatInputHistory.d.ts +0 -22
- package/dist/utils/chatInputHistory.d.ts.map +0 -1
- package/dist/utils/index.d.ts +0 -100
- package/dist/utils/index.d.ts.map +0 -1
- package/dist/utils/isMobileSignal.d.ts +0 -2
- package/dist/utils/isMobileSignal.d.ts.map +0 -1
- package/dist/utils/mobileUtils.d.ts +0 -32
- package/dist/utils/mobileUtils.d.ts.map +0 -1
- package/dist/utils/ultimateJsonParser.d.ts +0 -2
- package/dist/utils/ultimateJsonParser.d.ts.map +0 -1
- package/dist/web.d.ts +0 -29
- package/dist/web.d.ts.map +0 -1
- package/dist/web.js +0 -1
- package/dist/window.d.ts +0 -33
- package/dist/window.d.ts.map +0 -1
package/dist/web.js
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
function cloneProps(e){return Object.keys(e).reduce(((t,r)=>{var o=e[r];return t[r]=Object.assign({},o),!isObject$1(o.value)||isFunction$1(o.value)||Array.isArray(o.value)||(t[r].value=Object.assign({},o.value)),Array.isArray(o.value)&&(t[r].value=o.value.slice(0)),t}),{})}function normalizePropDefs(e){return e?Object.keys(e).reduce(((t,r)=>{var o=e[r];return t[r]=isObject$1(o)&&"value"in o?o:{value:o},t[r].attribute||(t[r].attribute=toAttribute(r)),t[r].parse="parse"in t[r]?t[r].parse:"string"!=typeof t[r].value,t}),{}):{}}function propValues(e){return Object.keys(e).reduce(((t,r)=>(t[r]=e[r].value,t)),{})}function initializeProps(e,t){const r=cloneProps(t);return Object.keys(t).forEach((t=>{const o=r[t],a=e.getAttribute(o.attribute),i=e[t];a&&(o.value=o.parse?parseAttributeValue(a):a),null!=i&&(o.value=Array.isArray(i)?i.slice(0):i),o.reflect&&reflect(e,o.attribute,o.value),Object.defineProperty(e,t,{get:()=>o.value,set(e){var r=o.value;o.value=e,o.reflect&&reflect(this,o.attribute,o.value);for(let o=0,a=this.__propertyChangedCallbacks.length;o<a;o++)this.__propertyChangedCallbacks[o](t,e,r)},enumerable:!0,configurable:!0})})),r}function parseAttributeValue(e){if(e)try{return JSON.parse(e)}catch(t){return e}}function reflect(e,t,r){if(null==r||!1===r)return e.removeAttribute(t);let o=JSON.stringify(r);e.__updating[t]=!0,"true"===o&&(o=""),e.setAttribute(t,o),Promise.resolve().then((()=>delete e.__updating[t]))}function toAttribute(e){return e.replace(/\.?([A-Z]+)/g,((e,t)=>"-"+t.toLowerCase())).replace("_","-").replace(/^-/,"")}function isObject$1(e){return null!=e&&("object"==typeof e||"function"==typeof e)}function isFunction$1(e){return"[object Function]"===Object.prototype.toString.call(e)}function isConstructor(e){return"function"==typeof e&&0===e.toString().indexOf("class")}var e,t;let currentElement;function createElementType(e,t){const r=Object.keys(t);return class extends e{static get observedAttributes(){return r.map((e=>t[e].attribute))}constructor(){super(),this.__initialized=!1,this.__released=!1,this.__releaseCallbacks=[],this.__propertyChangedCallbacks=[],this.__updating={},this.props={}}connectedCallback(){if(!this.__initialized){this.__releaseCallbacks=[],this.__propertyChangedCallbacks=[],this.__updating={},this.props=initializeProps(this,t);var e=propValues(this.props),r=this.Component,o=currentElement;try{(currentElement=this).__initialized=!0,isConstructor(r)?new r(e,{element:this}):r(e,{element:this})}finally{currentElement=o}}}async disconnectedCallback(){if(await Promise.resolve(),!this.isConnected){this.__propertyChangedCallbacks.length=0;for(var e=null;e=this.__releaseCallbacks.pop();)e(this);delete this.__initialized,this.__released=!0}}attributeChangedCallback(e,r,o){!this.__initialized||this.__updating[e]||(e=this.lookupProp(e))in t&&(null==o&&!this[e]||(this[e]=t[e].parse?parseAttributeValue(o):o))}lookupProp(e){if(t)return r.find((r=>e===r||e===t[r].attribute))}get renderRoot(){return this.shadowRoot||this.attachShadow({mode:"open"})}addReleaseCallback(e){this.__releaseCallbacks.push(e)}addPropertyChangedCallback(e){this.__propertyChangedCallbacks.push(e)}}}function register(e,t={},r={}){const{BaseElement:o=HTMLElement,extension:a}=r;return r=>{if(!e)throw new Error("tag is required to register a Component");let i=customElements.get(e);return i?i.prototype.Component=r:((i=createElementType(o,normalizePropDefs(t))).prototype.Component=r,i.prototype.registeredTag=e,customElements.define(e,i,a)),i}}e=self.document,e&&!e.getElementById("livereloadscript")&&((t=e.createElement("script")).async=1,t.src="//"+(self.location.host||"localhost").split(":")[0]+":35729/livereload.js?snipver=1",t.id="livereloadscript",e.getElementsByTagName("head")[0].appendChild(t));const sharedConfig={context:void 0,registry:void 0,effects:void 0,done:!1,getContextId(){return getContextId(this.context.count)},getNextContextId(){return getContextId(this.context.count++)}};function getContextId(e){var t=(e=String(e)).length-1;return sharedConfig.context.id+(t?String.fromCharCode(96+t):"")+e}const IS_DEV=!1,equalFn=(e,t)=>e===t,$PROXY=Symbol("solid-proxy"),SUPPORTS_PROXY="function"==typeof Proxy,$TRACK=Symbol("solid-track"),signalOptions={equals:equalFn};let runEffects=runQueue;const STALE=1,PENDING=2,UNOWNED={owned:null,cleanups:null,context:null,owner:null};var Owner=null;let Transition=null,ExternalSourceConfig=null,Listener=null,Updates=null,Effects=null,ExecCount=0;function createRoot(e,t){const r=Listener,o=Owner,a=0===e.length,i=void 0===t?o:t,n=a?UNOWNED:{owned:null,cleanups:null,context:i?i.context:null,owner:i},s=a?e:()=>e((()=>untrack((()=>cleanNode(n)))));Owner=n,Listener=null;try{return runUpdates(s,!0)}finally{Listener=r,Owner=o}}function createSignal(e,t){const r={value:e,observers:null,observerSlots:null,comparator:(t=t?Object.assign({},signalOptions,t):signalOptions).equals||void 0};return[readSignal.bind(r),e=>("function"==typeof e&&(e=e(r.value)),writeSignal(r,e))]}function createRenderEffect(e,t,r){updateComputation(createComputation(e,t,!1,STALE))}function createEffect(e,t,r){runEffects=runUserEffects,e=createComputation(e,t,!1,STALE),r&&r.render||(e.user=!0),Effects?Effects.push(e):updateComputation(e)}function createMemo(e,t,r){return r=r?Object.assign({},signalOptions,r):signalOptions,(e=createComputation(e,t,!0,0)).observers=null,e.observerSlots=null,e.comparator=r.equals||void 0,updateComputation(e),readSignal.bind(e)}function untrack(e){if(null===Listener)return e();var t=Listener;Listener=null;try{return e()}finally{Listener=t}}function on(e,t,r){const o=Array.isArray(e);let a,i=r&&r.defer;return r=>{let n;if(o){n=Array(e.length);for(let t=0;t<e.length;t++)n[t]=e[t]()}else n=e();var s;return i?(i=!1,r):(s=untrack((()=>t(n,a,r))),a=n,s)}}function onMount(e){createEffect((()=>untrack(e)))}function onCleanup(e){return null!==Owner&&(null===Owner.cleanups?Owner.cleanups=[e]:Owner.cleanups.push(e)),e}function getOwner(){return Owner}function runWithOwner(e,t){var r=Owner,o=Listener;Owner=e,Listener=null;try{return runUpdates(t,!0)}catch(e){handleError(e)}finally{Owner=r,Listener=o}}function readSignal(){var e;return this.sources&&this.state&&(this.state===STALE?updateComputation(this):(e=Updates,Updates=null,runUpdates((()=>lookUpstream(this)),!1),Updates=e)),Listener&&(e=this.observers?this.observers.length:0,Listener.sources?(Listener.sources.push(this),Listener.sourceSlots.push(e)):(Listener.sources=[this],Listener.sourceSlots=[e]),this.observers?(this.observers.push(Listener),this.observerSlots.push(Listener.sources.length-1)):(this.observers=[Listener],this.observerSlots=[Listener.sources.length-1])),this.value}function writeSignal(e,t,r){var o=e.value;return e.comparator&&e.comparator(o,t)||(e.value=t,e.observers&&e.observers.length&&runUpdates((()=>{for(let o=0;o<e.observers.length;o+=1){var t=e.observers[o],r=Transition&&Transition.running;r&&Transition.disposed.has(t),(r?t.tState:t.state)||((t.pure?Updates:Effects).push(t),t.observers&&markDownstream(t)),r||(t.state=STALE)}if(1e6<Updates.length)throw Updates=[],new Error}),!1)),t}function updateComputation(e){var t;e.fn&&(cleanNode(e),t=ExecCount,runComputation(e,e.value,t))}function runComputation(e,t,r){let o;var a=Owner,i=Listener;Listener=Owner=e;try{o=e.fn(t)}catch(t){return e.pure&&(e.state=STALE,e.owned&&e.owned.forEach(cleanNode),e.owned=null),e.updatedAt=r+1,handleError(t)}finally{Listener=i,Owner=a}(!e.updatedAt||e.updatedAt<=r)&&(null!=e.updatedAt&&"observers"in e?writeSignal(e,o):e.value=o,e.updatedAt=r)}function createComputation(e,t,r,o=STALE,a){return e={fn:e,state:o,updatedAt:null,owned:null,sources:null,sourceSlots:null,cleanups:null,value:t,owner:Owner,context:Owner?Owner.context:null,pure:r},null!==Owner&&Owner!==UNOWNED&&(Owner.owned?Owner.owned.push(e):Owner.owned=[e]),e}function runTop(e){if(0!==e.state){if(e.state===PENDING)return lookUpstream(e);if(e.suspense&&untrack(e.suspense.inFallback))return e.suspense.effects.push(e);const r=[e];for(;(e=e.owner)&&(!e.updatedAt||e.updatedAt<ExecCount);)e.state&&r.push(e);for(let o=r.length-1;0<=o;o--){var t;(e=r[o]).state===STALE?updateComputation(e):e.state===PENDING&&(t=Updates,Updates=null,runUpdates((()=>lookUpstream(e,r[0])),!1),Updates=t)}}}function runUpdates(e,t){if(Updates)return e();let r=!1;t||(Updates=[]),Effects?r=!0:Effects=[],ExecCount++;try{var o=e();return completeUpdates(r),o}catch(e){r||(Effects=null),Updates=null,handleError(e)}}function completeUpdates(e){if(Updates&&(runQueue(Updates),Updates=null),!e){const e=Effects;Effects=null,e.length&&runUpdates((()=>runEffects(e)),!1)}}function runQueue(e){for(let t=0;t<e.length;t++)runTop(e[t])}function runUserEffects(e){let t,r=0;for(t=0;t<e.length;t++){var o=e[t];o.user?e[r++]=o:runTop(o)}for(t=0;t<r;t++)runTop(e[t])}function lookUpstream(e,t){for(let a=e.state=0;a<e.sources.length;a+=1){var r,o=e.sources[a];o.sources&&((r=o.state)===STALE?o!==t&&(!o.updatedAt||o.updatedAt<ExecCount)&&runTop(o):r===PENDING&&lookUpstream(o,t))}}function markDownstream(e){for(let r=0;r<e.observers.length;r+=1){var t=e.observers[r];t.state||(t.state=PENDING,(t.pure?Updates:Effects).push(t),t.observers&&markDownstream(t))}}function cleanNode(e){let t;if(e.sources)for(;e.sources.length;){var r,o,a=e.sources.pop(),i=e.sourceSlots.pop(),n=a.observers;n&&n.length&&(r=n.pop(),o=a.observerSlots.pop(),i<n.length)&&(n[r.sourceSlots[o]=i]=r,a.observerSlots[i]=o)}if(e.tOwned){for(t=e.tOwned.length-1;0<=t;t--)cleanNode(e.tOwned[t]);delete e.tOwned}if(e.owned){for(t=e.owned.length-1;0<=t;t--)cleanNode(e.owned[t]);e.owned=null}if(e.cleanups){for(t=e.cleanups.length-1;0<=t;t--)e.cleanups[t]();e.cleanups=null}e.state=0}function castError(e){return e instanceof Error?e:new Error("string"==typeof e?e:"Unknown error",{cause:e})}function handleError(e,t=0){throw castError(e)}const FALLBACK=Symbol("fallback");function dispose(e){for(let t=0;t<e.length;t++)e[t]()}function mapArray(e,t,r={}){let o=[],a=[],i=[],n=0,s=1<t.length?[]:null;return onCleanup((()=>dispose(i))),()=>{let l,d,m=e()||[],c=m.length;return m[$TRACK],untrack((()=>{let e,t,u,h,p,x,v,S,f;if(0===c)0!==n&&(dispose(i),i=[],o=[],a=[],n=0,s=s&&[]),r.fallback&&(o=[FALLBACK],a[0]=createRoot((e=>(i[0]=e,r.fallback()))),n=1);else if(0===n){for(a=new Array(c),d=0;d<c;d++)o[d]=m[d],a[d]=createRoot(g);n=c}else{for(u=new Array(c),h=new Array(c),s&&(p=new Array(c)),x=0,v=Math.min(n,c);x<v&&o[x]===m[x];x++);for(v=n-1,S=c-1;v>=x&&S>=x&&o[v]===m[S];v--,S--)u[S]=a[v],h[S]=i[v],s&&(p[S]=s[v]);for(e=new Map,t=new Array(S+1),d=S;d>=x;d--)f=m[d],l=e.get(f),t[d]=void 0===l?-1:l,e.set(f,d);for(l=x;l<=v;l++)f=o[l],void 0!==(d=e.get(f))&&-1!==d?(u[d]=a[l],h[d]=i[l],s&&(p[d]=s[l]),d=t[d],e.set(f,d)):i[l]();for(d=x;d<c;d++)d in u?(a[d]=u[d],i[d]=h[d],s&&(s[d]=p[d],s[d](d))):a[d]=createRoot(g);a=a.slice(0,n=c),o=m.slice(0)}return a}));function g(e){var r;return i[d]=e,s?([e,r]=createSignal(d),s[d]=r,t(m[d],e)):t(m[d])}}}function createComponent(e,t){return untrack((()=>e(t||{})))}function trueFn(){return!0}const propTraps={get:(e,t,r)=>t===$PROXY?r:e.get(t),has:(e,t)=>t===$PROXY||e.has(t),set:trueFn,deleteProperty:trueFn,getOwnPropertyDescriptor:(e,t)=>({configurable:!0,enumerable:!0,get:()=>e.get(t),set:trueFn,deleteProperty:trueFn}),ownKeys:e=>e.keys()};function resolveSource(e){return(e="function"==typeof e?e():e)||{}}function resolveSources(){for(let t=0,r=this.length;t<r;++t){var e=this[t]();if(void 0!==e)return e}}function mergeProps(...e){let t=!1;for(let o=0;o<e.length;o++){var r=e[o];t=t||!!r&&$PROXY in r,e[o]="function"==typeof r?(t=!0,createMemo(r)):r}if(SUPPORTS_PROXY&&t)return new Proxy({get(t){for(let o=e.length-1;0<=o;o--){var r=resolveSource(e[o])[t];if(void 0!==r)return r}},has(t){for(let r=e.length-1;0<=r;r--)if(t in resolveSource(e[r]))return!0;return!1},keys(){var t=[];for(let r=0;r<e.length;r++)t.push(...Object.keys(resolveSource(e[r])));return[...new Set(t)]}},propTraps);var o={},a=Object.create(null);for(let t=e.length-1;0<=t;t--){var i=e[t];if(i){var n=Object.getOwnPropertyNames(i);for(let e=n.length-1;0<=e;e--){var s=n[e];if("__proto__"!==s&&"constructor"!==s){const e=Object.getOwnPropertyDescriptor(i,s);if(a[s]){const t=o[s];t&&(e.get?t.push(e.get.bind(i)):void 0!==e.value&&t.push((()=>e.value)))}else a[s]=e.get?{enumerable:!0,configurable:!0,get:resolveSources.bind(o[s]=[e.get.bind(i)])}:void 0!==e.value?e:void 0}}}}var l={},d=Object.keys(a);for(let e=d.length-1;0<=e;e--){var m=d[e],c=a[m];c&&c.get?Object.defineProperty(l,m,c):l[m]=c?c.value:void 0}return l}function splitProps(e,...t){if(SUPPORTS_PROXY&&$PROXY in e){const o=new Set(1<t.length?t.flat():t[0]);var r=t.map((t=>new Proxy({get:r=>t.includes(r)?e[r]:void 0,has:r=>t.includes(r)&&r in e,keys:()=>t.filter((t=>t in e))},propTraps)));return r.push(new Proxy({get:t=>o.has(t)?void 0:e[t],has:t=>!o.has(t)&&t in e,keys:()=>Object.keys(e).filter((e=>!o.has(e)))},propTraps)),r}var o={},a=t.map((()=>({})));for(const r of Object.getOwnPropertyNames(e)){var i=Object.getOwnPropertyDescriptor(e,r),n=!i.get&&!i.set&&i.enumerable&&i.writable&&i.configurable;let s=!1,l=0;for(const e of t)e.includes(r)&&(s=!0,n?a[l][r]=i.value:Object.defineProperty(a[l],r,i)),++l;s||(n?o[r]=i.value:Object.defineProperty(o,r,i))}return[...a,o]}const narrowedError=e=>`Stale read from <${e}>.`;function For(e){var t="fallback"in e&&{fallback:()=>e.fallback};return createMemo(mapArray((()=>e.each),e.children,t||void 0))}function Show(e){const t=e.keyed,r=createMemo((()=>e.when),void 0,void 0),o=t?r:createMemo(r,void 0,{equals:(e,t)=>!e==!t});return createMemo((()=>{const a=o();if(a){const i=e.children;return"function"==typeof i&&0<i.length?untrack((()=>i(t?a:()=>{if(untrack(o))return r();throw narrowedError("Show")}))):i}return e.fallback}),void 0,void 0)}const booleans=["allowfullscreen","async","autofocus","autoplay","checked","controls","default","disabled","formnovalidate","hidden","indeterminate","inert","ismap","loop","multiple","muted","nomodule","novalidate","open","playsinline","readonly","required","reversed","seamless","selected"],Properties=new Set(["className","value","readOnly","noValidate","formNoValidate","isMap","noModule","playsInline",...booleans]),ChildProperties=new Set(["innerHTML","textContent","innerText","children"]),Aliases=Object.assign(Object.create(null),{className:"class",htmlFor:"for"}),PropAliases=Object.assign(Object.create(null),{class:"className",novalidate:{$:"noValidate",FORM:1},formnovalidate:{$:"formNoValidate",BUTTON:1,INPUT:1},ismap:{$:"isMap",IMG:1},nomodule:{$:"noModule",SCRIPT:1},playsinline:{$:"playsInline",VIDEO:1},readonly:{$:"readOnly",INPUT:1,TEXTAREA:1}});function getPropAlias(e,t){return"object"==typeof(e=PropAliases[e])?e[t]?e.$:void 0:e}const DelegatedEvents=new Set(["beforeinput","click","dblclick","contextmenu","focusin","focusout","input","keydown","keyup","mousedown","mousemove","mouseout","mouseover","mouseup","pointerdown","pointermove","pointerout","pointerover","pointerup","touchend","touchmove","touchstart"]),SVGNamespace={xlink:"http://www.w3.org/1999/xlink",xml:"http://www.w3.org/XML/1998/namespace"},memo=e=>createMemo((()=>e()));function reconcileArrays(e,t,r){let o=r.length,a=t.length,i=o,n=0,s=0,l=t[a-1].nextSibling,d=null;for(;n<a||s<i;)if(t[n]===r[s])n++,s++;else{for(;t[a-1]===r[i-1];)a--,i--;if(a===n)for(var m=i<o?s?r[s-1].nextSibling:r[i-s]:l;s<i;)e.insertBefore(r[s++],m);else if(i===s)for(;n<a;)d&&d.has(t[n])||t[n].remove(),n++;else if(t[n]===r[i-1]&&r[s]===t[a-1]){var c=t[--a].nextSibling;e.insertBefore(r[s++],t[n++].nextSibling),e.insertBefore(r[--i],c),t[a]=r[i]}else{if(!d){d=new Map;let e=s;for(;e<i;)d.set(r[e],e++)}var g=d.get(t[n]);if(null!=g)if(s<g&&g<i){let o,l=n,m=1;for(;++l<a&&l<i&&null!=(o=d.get(t[l]))&&o===g+m;)m++;if(m>g-s)for(var u=t[n];s<g;)e.insertBefore(r[s++],u);else e.replaceChild(r[s++],t[n++])}else n++;else t[n++].remove()}}}const $$EVENTS="_$DX_DELEGATE";function template(e,t,r,o){let a;const i=()=>{var t=o?document.createElementNS("http://www.w3.org/1998/Math/MathML","template"):document.createElement("template");return t.innerHTML=e,(r?t.content.firstChild:o?t:t.content).firstChild};return(t=t?()=>untrack((()=>document.importNode(a=a||i(),!0))):()=>(a=a||i()).cloneNode(!0)).cloneNode=t}function delegateEvents(e,t=window.document){var r=t[$$EVENTS]||(t[$$EVENTS]=new Set);for(let a=0,i=e.length;a<i;a++){var o=e[a];r.has(o)||(r.add(o),t.addEventListener(o,eventHandler))}}function setAttribute(e,t,r){null==r?e.removeAttribute(t):e.setAttribute(t,r)}function setAttributeNS(e,t,r,o){null==o?e.removeAttributeNS(t,r):e.setAttributeNS(t,r,o)}function setBoolAttribute(e,t,r){r?e.setAttribute(t,""):e.removeAttribute(t)}function className(e,t){null==t?e.removeAttribute("class"):e.className=t}function addEventListener(e,t,r,o){if(o)Array.isArray(r)?(e["$$"+t]=r[0],e[`$$${t}Data`]=r[1]):e["$$"+t]=r;else if(Array.isArray(r)){const o=r[0];e.addEventListener(t,r[0]=t=>o.call(e,r[1],t))}else e.addEventListener(t,r,"function"!=typeof r&&r)}function classList(e,t,r={}){var o=Object.keys(t||{}),a=Object.keys(r);let i,n;for(i=0,n=a.length;i<n;i++){var s=a[i];s&&"undefined"!==s&&!t[s]&&(toggleClassKey(e,s,!1),delete r[s])}for(i=0,n=o.length;i<n;i++){var l=o[i],d=!!t[l];l&&"undefined"!==l&&r[l]!==d&&d&&(toggleClassKey(e,l,!0),r[l]=d)}return r}function style(e,t,r){if(!t)return r?setAttribute(e,"style"):t;var o=e.style;if("string"==typeof t)return o.cssText=t;let a,i;for(i in"string"==typeof r&&(o.cssText=r=void 0),t=t||{},r=r||{})null==t[i]&&o.removeProperty(i),delete r[i];for(i in t)(a=t[i])!==r[i]&&(o.setProperty(i,a),r[i]=a);return r}function spread$1(e,t={},r,o){const a={};return o||createRenderEffect((()=>a.children=insertExpression(e,t.children,a.children))),createRenderEffect((()=>"function"==typeof t.ref&&use(t.ref,e))),createRenderEffect((()=>assign(e,t,r,!0,a,!0))),a}function use(e,t,r){return untrack((()=>e(t,r)))}function insert(e,t,r,o){if(void 0!==r&&(o=o||[]),"function"!=typeof t)return insertExpression(e,t,o,r);createRenderEffect((o=>insertExpression(e,t(),o,r)),o)}function assign(e,t,r,o,a={},i=!1){t=t||{};for(const o in a)o in t||"children"!==o&&(a[o]=assignProp(e,o,null,a[o],r,i,t));for(const s in t){var n;"children"===s?o||insertExpression(e,t.children):(n=t[s],a[s]=assignProp(e,s,n,a[s],r,i,t))}}function toPropertyName(e){return e.toLowerCase().replace(/-([a-z])/g,((e,t)=>t.toUpperCase()))}function toggleClassKey(e,t,r){var o=t.trim().split(/\s+/);for(let t=0,a=o.length;t<a;t++)e.classList.toggle(o[t],r)}function assignProp(e,t,r,o,a,i,n){let s,l,d,m,c;var g;return"style"===t?style(e,r,o):"classList"===t?classList(e,r,o):r===o?o:("ref"===t?i||r(e):"on:"===t.slice(0,3)?(i=t.slice(3),o&&e.removeEventListener(i,o,"function"!=typeof o&&o),r&&e.addEventListener(i,r,"function"!=typeof r&&r)):"oncapture:"===t.slice(0,10)?(i=t.slice(10),o&&e.removeEventListener(i,o,!0),r&&e.addEventListener(i,r,!0)):"on"===t.slice(0,2)?(i=t.slice(2).toLowerCase(),!(g=DelegatedEvents.has(i))&&o&&(o=Array.isArray(o)?o[0]:o,e.removeEventListener(i,o)),(g||r)&&(addEventListener(e,i,r,g),g)&&delegateEvents([i])):"attr:"===t.slice(0,5)?setAttribute(e,t.slice(5),r):"bool:"===t.slice(0,5)?setBoolAttribute(e,t.slice(5),r):(c="prop:"===t.slice(0,5))||(d=ChildProperties.has(t))||!a&&((m=getPropAlias(t,e.tagName))||(l=Properties.has(t)))||(s=e.nodeName.includes("-")||"is"in n)?(c&&(t=t.slice(5),l=!0),"class"===t||"className"===t?className(e,r):!s||l||d?e[m||t]=r:e[toPropertyName(t)]=r):(o=a&&-1<t.indexOf(":")&&SVGNamespace[t.split(":")[0]])?setAttributeNS(e,o,t,r):setAttribute(e,Aliases[t]||t,r),r)}function eventHandler(e){let t=e.target;const r="$$"+e.type;var o=e.target,a=e.currentTarget;const i=t=>Object.defineProperty(e,"target",{configurable:!0,value:t}),n=()=>{var o=t[r];if(o&&!t.disabled){var a=t[r+"Data"];if(void 0!==a?o.call(t,a,e):o.call(t,e),e.cancelBubble)return}return t.host&&"string"!=typeof t.host&&!t.host._$host&&t.contains(e.target)&&i(t.host),!0};var s=()=>{for(;n()&&(t=t._$host||t.parentNode||t.host););};if(Object.defineProperty(e,"currentTarget",{configurable:!0,get:()=>t||document}),e.composedPath){var l=e.composedPath();i(l[0]);for(let e=0;e<l.length-2&&(t=l[e],n());e++){if(t._$host){t=t._$host,s();break}if(t.parentNode===a)break}}else s();i(o)}function insertExpression(e,t,r,o,a){for(;"function"==typeof r;)r=r();if(t!==r){var i=typeof t,n=void 0!==o;if(e=n&&r[0]&&r[0].parentNode||e,"string"==i||"number"==i){if("number"==i&&(t=t.toString())===r)return r;if(n){let a=r[0];a&&3===a.nodeType?a.data!==t&&(a.data=t):a=document.createTextNode(t),r=cleanChildren(e,r,o,a)}else r=""!==r&&"string"==typeof r?e.firstChild.data=t:e.textContent=t}else if(null==t||"boolean"==i)r=cleanChildren(e,r,o);else{if("function"==i)return createRenderEffect((()=>{let a=t();for(;"function"==typeof a;)a=a();r=insertExpression(e,a,r,o)})),()=>r;if(Array.isArray(t)){const s=[];if(i=r&&Array.isArray(r),normalizeIncomingArray(s,t,r,a))return createRenderEffect((()=>r=insertExpression(e,s,r,o,!0))),()=>r;if(0===s.length){if(r=cleanChildren(e,r,o),n)return r}else i?0===r.length?appendNodes(e,s,o):reconcileArrays(e,r,s):(r&&cleanChildren(e),appendNodes(e,s));r=s}else if(t.nodeType){if(Array.isArray(r)){if(n)return r=cleanChildren(e,r,o,t);cleanChildren(e,r,null,t)}else null!=r&&""!==r&&e.firstChild?e.replaceChild(t,e.firstChild):e.appendChild(t);r=t}}}return r}function normalizeIncomingArray(e,t,r,o){let a=!1;for(let n=0,s=t.length;n<s;n++){let s,l=t[n],d=r&&r[e.length];if(null!=l&&!0!==l&&!1!==l)if("object"==(s=typeof l)&&l.nodeType)e.push(l);else if(Array.isArray(l))a=normalizeIncomingArray(e,l,d)||a;else if("function"==s)if(o){for(;"function"==typeof l;)l=l();a=normalizeIncomingArray(e,Array.isArray(l)?l:[l],Array.isArray(d)?d:[d])||a}else e.push(l),a=!0;else{var i=String(l);d&&3===d.nodeType&&d.data===i?e.push(d):e.push(document.createTextNode(i))}}return a}function appendNodes(e,t,r=null){for(let o=0,a=t.length;o<a;o++)e.insertBefore(t[o],r)}function cleanChildren(e,t,r,o){if(void 0===r)return e.textContent="";var a=o||document.createTextNode("");if(t.length){let o=!1;for(let s=t.length-1;0<=s;s--){var i,n=t[s];a!==n?(i=n.parentNode===e,o||s?i&&n.remove():i?e.replaceChild(a,n):e.insertBefore(a,r)):o=!0}}else e.insertBefore(a,r);return[a]}const SVG_NAMESPACE="http://www.w3.org/2000/svg";function createElement(e,t=!1){return t?document.createElementNS(SVG_NAMESPACE,e):document.createElement(e)}function Portal(e){const t=e.useShadow,r=document.createTextNode(""),o=getOwner();let a;return createEffect((()=>{a=a||runWithOwner(o,(()=>createMemo((()=>e.children))));const i=e.mount||document.body;if(i instanceof HTMLHeadElement){const[e,t]=createSignal(!1);createRoot((t=>insert(i,(()=>(e()?t:a)()),null))),onCleanup((()=>t(!0)))}else{const o=createElement(e.isSVG?"g":"div",e.isSVG),n=t&&o.attachShadow?o.attachShadow({mode:"open"}):o;Object.defineProperty(o,"_$host",{get:()=>r.parentNode,configurable:!0}),insert(n,a),i.appendChild(o),e.ref&&e.ref(o),onCleanup((()=>i.removeChild(o)))}}),void 0,{render:!sharedConfig.context}),r}function createProps(e){var t=Object.keys(e),r={};for(let o=0;o<t.length;o++){const[a,i]=createSignal(e[t[o]]);Object.defineProperty(r,t[o],{get:a,set(e){i((()=>e))}})}return r}function lookupContext(e){if(e.assignedSlot&&e.assignedSlot._$owner)return e.assignedSlot._$owner;let t=e.parentNode;for(;t&&!t._$owner&&(!t.assignedSlot||!t.assignedSlot._$owner);)t=t.parentNode;return(t&&t.assignedSlot?t.assignedSlot:e)._$owner}function withSolid(e){return(t,r)=>{const o=r.element;return createRoot((a=>{const i=createProps(t);o.addPropertyChangedCallback(((e,t)=>i[e]=t)),o.addReleaseCallback((()=>{o.renderRoot.textContent="",a()}));var n=e(i,r);return insert(o.renderRoot,n)}),lookupContext(o))}}function customElement(e,t,r){return 2===arguments.length&&(r=t,t={}),register(e,t)(withSolid(r))}const defaultBotProps={chatflowid:"",apiHost:void 0,chatwootUrl:void 0,onRequest:void 0,chatflowConfig:void 0,theme:void 0,observersConfig:void 0,roomIds:{},isUseFAQ:!1,filePath:"",suggestQuestions:"",externalData:"",callBackIcon:"",callBackFunction:void 0};var css_248z='/*! tailwindcss v3.3.1 | MIT License | https://tailwindcss.com*/*,:after,:before{border:0 solid #e5e7eb;box-sizing:border-box}:after,:before{--tw-content:""}html{-webkit-text-size-adjust:100%;font-feature-settings:normal;font-family:ui-sans-serif,system-ui,-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Helvetica Neue,Arial,Noto Sans,sans-serif,Apple Color Emoji,Segoe UI Emoji,Segoe UI Symbol,Noto Color Emoji;font-variation-settings:normal;line-height:1.5;-moz-tab-size:4;-o-tab-size:4;tab-size:4}body{line-height:inherit;margin:0}hr{border-top-width:1px;color:inherit;height:0}abbr:where([title]){-webkit-text-decoration:underline dotted;text-decoration:underline dotted}h1,h2,h3,h4,h5,h6{font-size:inherit;font-weight:inherit}a{color:inherit;text-decoration:inherit}b,strong{font-weight:bolder}code,kbd,pre,samp{font-family:ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,Liberation Mono,Courier New,monospace;font-size:1em}small{font-size:80%}sub,sup{font-size:75%;line-height:0;position:relative;vertical-align:baseline}sub{bottom:-.25em}sup{top:-.5em}table{border-collapse:collapse;border-color:inherit;text-indent:0}button,input,optgroup,select,textarea{color:inherit;font-family:inherit;font-size:100%;font-weight:inherit;line-height:inherit;margin:0;padding:0}button,select{text-transform:none}[type=button],[type=reset],[type=submit],button{-webkit-appearance:button;background-color:transparent;background-image:none}:-moz-focusring{outline:auto}:-moz-ui-invalid{box-shadow:none}progress{vertical-align:baseline}::-webkit-inner-spin-button,::-webkit-outer-spin-button{height:auto}[type=search]{-webkit-appearance:textfield;outline-offset:-2px}::-webkit-search-decoration{-webkit-appearance:none}::-webkit-file-upload-button{-webkit-appearance:button;font:inherit}summary{display:list-item}blockquote,dd,dl,figure,h1,h2,h3,h4,h5,h6,hr,p,pre{margin:0}fieldset{margin:0}fieldset,legend{padding:0}menu,ol,ul{list-style:none;margin:0;padding:0}textarea{resize:vertical}input::-moz-placeholder,textarea::-moz-placeholder{color:#9ca3af;opacity:1}input::placeholder,textarea::placeholder{color:#9ca3af;opacity:1}[role=button],button{cursor:pointer}:disabled{cursor:default}audio,canvas,embed,iframe,img,object,svg,video{display:block;vertical-align:middle}img,video{height:auto;max-width:100%}[hidden]{display:none}*,:after,:before{--tw-border-spacing-x:0;--tw-border-spacing-y:0;--tw-translate-x:0;--tw-translate-y:0;--tw-rotate:0;--tw-skew-x:0;--tw-skew-y:0;--tw-scale-x:1;--tw-scale-y:1;--tw-pan-x: ;--tw-pan-y: ;--tw-pinch-zoom: ;--tw-scroll-snap-strictness:proximity;--tw-ordinal: ;--tw-slashed-zero: ;--tw-numeric-figure: ;--tw-numeric-spacing: ;--tw-numeric-fraction: ;--tw-ring-inset: ;--tw-ring-offset-width:0px;--tw-ring-offset-color:#fff;--tw-ring-color:rgba(59,130,246,.5);--tw-ring-offset-shadow:0 0 #0000;--tw-ring-shadow:0 0 #0000;--tw-shadow:0 0 #0000;--tw-shadow-colored:0 0 #0000;--tw-blur: ;--tw-brightness: ;--tw-contrast: ;--tw-grayscale: ;--tw-hue-rotate: ;--tw-invert: ;--tw-saturate: ;--tw-sepia: ;--tw-drop-shadow: ;--tw-backdrop-blur: ;--tw-backdrop-brightness: ;--tw-backdrop-contrast: ;--tw-backdrop-grayscale: ;--tw-backdrop-hue-rotate: ;--tw-backdrop-invert: ;--tw-backdrop-opacity: ;--tw-backdrop-saturate: ;--tw-backdrop-sepia: }::backdrop{--tw-border-spacing-x:0;--tw-border-spacing-y:0;--tw-translate-x:0;--tw-translate-y:0;--tw-rotate:0;--tw-skew-x:0;--tw-skew-y:0;--tw-scale-x:1;--tw-scale-y:1;--tw-pan-x: ;--tw-pan-y: ;--tw-pinch-zoom: ;--tw-scroll-snap-strictness:proximity;--tw-ordinal: ;--tw-slashed-zero: ;--tw-numeric-figure: ;--tw-numeric-spacing: ;--tw-numeric-fraction: ;--tw-ring-inset: ;--tw-ring-offset-width:0px;--tw-ring-offset-color:#fff;--tw-ring-color:rgba(59,130,246,.5);--tw-ring-offset-shadow:0 0 #0000;--tw-ring-shadow:0 0 #0000;--tw-shadow:0 0 #0000;--tw-shadow-colored:0 0 #0000;--tw-blur: ;--tw-brightness: ;--tw-contrast: ;--tw-grayscale: ;--tw-hue-rotate: ;--tw-invert: ;--tw-saturate: ;--tw-sepia: ;--tw-drop-shadow: ;--tw-backdrop-blur: ;--tw-backdrop-brightness: ;--tw-backdrop-contrast: ;--tw-backdrop-grayscale: ;--tw-backdrop-hue-rotate: ;--tw-backdrop-invert: ;--tw-backdrop-opacity: ;--tw-backdrop-saturate: ;--tw-backdrop-sepia: }.container{width:100%}@media (min-width:640px){.container{max-width:640px}}@media (min-width:768px){.container{max-width:768px}}@media (min-width:1024px){.container{max-width:1024px}}@media (min-width:1280px){.container{max-width:1280px}}@media (min-width:1536px){.container{max-width:1536px}}.prose{color:var(--tw-prose-body);max-width:65ch}.prose :where(p):not(:where([class~=not-prose],[class~=not-prose] *)){margin-bottom:1.25em;margin-top:1.25em}.prose :where([class~=lead]):not(:where([class~=not-prose],[class~=not-prose] *)){color:var(--tw-prose-lead);font-size:1.25em;line-height:1.6;margin-bottom:1.2em;margin-top:1.2em}.prose :where(a):not(:where([class~=not-prose],[class~=not-prose] *)){color:var(--tw-prose-links);font-weight:500;text-decoration:underline}.prose :where(strong):not(:where([class~=not-prose],[class~=not-prose] *)){color:var(--tw-prose-bold);font-weight:600}.prose :where(a strong):not(:where([class~=not-prose],[class~=not-prose] *)){color:inherit}.prose :where(blockquote strong):not(:where([class~=not-prose],[class~=not-prose] *)){color:inherit}.prose :where(thead th strong):not(:where([class~=not-prose],[class~=not-prose] *)){color:inherit}.prose :where(ol):not(:where([class~=not-prose],[class~=not-prose] *)){list-style-type:decimal;margin-bottom:1.25em;margin-top:1.25em;padding-left:1.625em}.prose :where(ol[type=A]):not(:where([class~=not-prose],[class~=not-prose] *)){list-style-type:upper-alpha}.prose :where(ol[type=a]):not(:where([class~=not-prose],[class~=not-prose] *)){list-style-type:lower-alpha}.prose :where(ol[type=A s]):not(:where([class~=not-prose],[class~=not-prose] *)){list-style-type:upper-alpha}.prose :where(ol[type=a s]):not(:where([class~=not-prose],[class~=not-prose] *)){list-style-type:lower-alpha}.prose :where(ol[type=I]):not(:where([class~=not-prose],[class~=not-prose] *)){list-style-type:upper-roman}.prose :where(ol[type=i]):not(:where([class~=not-prose],[class~=not-prose] *)){list-style-type:lower-roman}.prose :where(ol[type=I s]):not(:where([class~=not-prose],[class~=not-prose] *)){list-style-type:upper-roman}.prose :where(ol[type=i s]):not(:where([class~=not-prose],[class~=not-prose] *)){list-style-type:lower-roman}.prose :where(ol[type="1"]):not(:where([class~=not-prose],[class~=not-prose] *)){list-style-type:decimal}.prose :where(ul):not(:where([class~=not-prose],[class~=not-prose] *)){list-style-type:disc;margin-bottom:1.25em;margin-top:1.25em;padding-left:1.625em}.prose :where(ol>li):not(:where([class~=not-prose],[class~=not-prose] *))::marker{color:var(--tw-prose-counters);font-weight:400}.prose :where(ul>li):not(:where([class~=not-prose],[class~=not-prose] *))::marker{color:var(--tw-prose-bullets)}.prose :where(dt):not(:where([class~=not-prose],[class~=not-prose] *)){color:var(--tw-prose-headings);font-weight:600;margin-top:1.25em}.prose :where(hr):not(:where([class~=not-prose],[class~=not-prose] *)){border-color:var(--tw-prose-hr);border-top-width:1px;margin-bottom:3em;margin-top:3em}.prose :where(blockquote):not(:where([class~=not-prose],[class~=not-prose] *)){border-left-color:var(--tw-prose-quote-borders);border-left-width:.25rem;color:var(--tw-prose-quotes);font-style:italic;font-weight:500;margin-bottom:1.6em;margin-top:1.6em;padding-left:1em;quotes:"\\201C""\\201D""\\2018""\\2019"}.prose :where(blockquote p:first-of-type):not(:where([class~=not-prose],[class~=not-prose] *)):before{content:open-quote}.prose :where(blockquote p:last-of-type):not(:where([class~=not-prose],[class~=not-prose] *)):after{content:close-quote}.prose :where(h1):not(:where([class~=not-prose],[class~=not-prose] *)){color:var(--tw-prose-headings);font-size:2.25em;font-weight:800;line-height:1.1111111;margin-bottom:.8888889em;margin-top:0}.prose :where(h1 strong):not(:where([class~=not-prose],[class~=not-prose] *)){color:inherit;font-weight:900}.prose :where(h2):not(:where([class~=not-prose],[class~=not-prose] *)){color:var(--tw-prose-headings);font-size:1.5em;font-weight:700;line-height:1.3333333;margin-bottom:1em;margin-top:2em}.prose :where(h2 strong):not(:where([class~=not-prose],[class~=not-prose] *)){color:inherit;font-weight:800}.prose :where(h3):not(:where([class~=not-prose],[class~=not-prose] *)){color:var(--tw-prose-headings);font-size:1.25em;font-weight:600;line-height:1.6;margin-bottom:.6em;margin-top:1.6em}.prose :where(h3 strong):not(:where([class~=not-prose],[class~=not-prose] *)){color:inherit;font-weight:700}.prose :where(h4):not(:where([class~=not-prose],[class~=not-prose] *)){color:var(--tw-prose-headings);font-weight:600;line-height:1.5;margin-bottom:.5em;margin-top:1.5em}.prose :where(h4 strong):not(:where([class~=not-prose],[class~=not-prose] *)){color:inherit;font-weight:700}.prose :where(img):not(:where([class~=not-prose],[class~=not-prose] *)){margin-bottom:2em;margin-top:2em}.prose :where(picture):not(:where([class~=not-prose],[class~=not-prose] *)){display:block;margin-bottom:2em;margin-top:2em}.prose :where(kbd):not(:where([class~=not-prose],[class~=not-prose] *)){border-radius:.3125rem;box-shadow:0 0 0 1px rgb(var(--tw-prose-kbd-shadows)/10%),0 3px 0 rgb(var(--tw-prose-kbd-shadows)/10%);color:var(--tw-prose-kbd);font-family:inherit;font-size:.875em;font-weight:500;padding:.1875em .375em}.prose :where(code):not(:where([class~=not-prose],[class~=not-prose] *)){color:var(--tw-prose-code);font-size:.875em;font-weight:600}.prose :where(code):not(:where([class~=not-prose],[class~=not-prose] *)):before{content:"`"}.prose :where(code):not(:where([class~=not-prose],[class~=not-prose] *)):after{content:"`"}.prose :where(a code):not(:where([class~=not-prose],[class~=not-prose] *)){color:inherit}.prose :where(h1 code):not(:where([class~=not-prose],[class~=not-prose] *)){color:inherit}.prose :where(h2 code):not(:where([class~=not-prose],[class~=not-prose] *)){color:inherit;font-size:.875em}.prose :where(h3 code):not(:where([class~=not-prose],[class~=not-prose] *)){color:inherit;font-size:.9em}.prose :where(h4 code):not(:where([class~=not-prose],[class~=not-prose] *)){color:inherit}.prose :where(blockquote code):not(:where([class~=not-prose],[class~=not-prose] *)){color:inherit}.prose :where(thead th code):not(:where([class~=not-prose],[class~=not-prose] *)){color:inherit}.prose :where(pre):not(:where([class~=not-prose],[class~=not-prose] *)){background-color:var(--tw-prose-pre-bg);border-radius:.375rem;color:var(--tw-prose-pre-code);font-size:.875em;font-weight:400;line-height:1.7142857;margin-bottom:1.7142857em;margin-top:1.7142857em;overflow-x:auto;padding:.8571429em 1.1428571em}.prose :where(pre code):not(:where([class~=not-prose],[class~=not-prose] *)){background-color:transparent;border-radius:0;border-width:0;color:inherit;font-family:inherit;font-size:inherit;font-weight:inherit;line-height:inherit;padding:0}.prose :where(pre code):not(:where([class~=not-prose],[class~=not-prose] *)):before{content:none}.prose :where(pre code):not(:where([class~=not-prose],[class~=not-prose] *)):after{content:none}.prose :where(table):not(:where([class~=not-prose],[class~=not-prose] *)){font-size:.875em;line-height:1.7142857;margin-bottom:2em;margin-top:2em;table-layout:auto;text-align:left;width:100%}.prose :where(thead):not(:where([class~=not-prose],[class~=not-prose] *)){border-bottom-color:var(--tw-prose-th-borders);border-bottom-width:1px}.prose :where(thead th):not(:where([class~=not-prose],[class~=not-prose] *)){color:var(--tw-prose-headings);font-weight:600;padding-bottom:.5714286em;padding-left:.5714286em;padding-right:.5714286em;vertical-align:bottom}.prose :where(tbody tr):not(:where([class~=not-prose],[class~=not-prose] *)){border-bottom-color:var(--tw-prose-td-borders);border-bottom-width:1px}.prose :where(tbody tr:last-child):not(:where([class~=not-prose],[class~=not-prose] *)){border-bottom-width:0}.prose :where(tbody td):not(:where([class~=not-prose],[class~=not-prose] *)){vertical-align:baseline}.prose :where(tfoot):not(:where([class~=not-prose],[class~=not-prose] *)){border-top-color:var(--tw-prose-th-borders);border-top-width:1px}.prose :where(tfoot td):not(:where([class~=not-prose],[class~=not-prose] *)){vertical-align:top}.prose :where(figure>*):not(:where([class~=not-prose],[class~=not-prose] *)){margin-bottom:0;margin-top:0}.prose :where(figcaption):not(:where([class~=not-prose],[class~=not-prose] *)){color:var(--tw-prose-captions);font-size:.875em;line-height:1.4285714;margin-top:.8571429em}.prose{--tw-prose-body:#374151;--tw-prose-headings:#111827;--tw-prose-lead:#4b5563;--tw-prose-links:#111827;--tw-prose-bold:#111827;--tw-prose-counters:#6b7280;--tw-prose-bullets:#d1d5db;--tw-prose-hr:#e5e7eb;--tw-prose-quotes:#111827;--tw-prose-quote-borders:#e5e7eb;--tw-prose-captions:#6b7280;--tw-prose-kbd:#111827;--tw-prose-kbd-shadows:17 24 39;--tw-prose-code:#111827;--tw-prose-pre-code:#e5e7eb;--tw-prose-pre-bg:#1f2937;--tw-prose-th-borders:#d1d5db;--tw-prose-td-borders:#e5e7eb;--tw-prose-invert-body:#d1d5db;--tw-prose-invert-headings:#fff;--tw-prose-invert-lead:#9ca3af;--tw-prose-invert-links:#fff;--tw-prose-invert-bold:#fff;--tw-prose-invert-counters:#9ca3af;--tw-prose-invert-bullets:#4b5563;--tw-prose-invert-hr:#374151;--tw-prose-invert-quotes:#f3f4f6;--tw-prose-invert-quote-borders:#374151;--tw-prose-invert-captions:#9ca3af;--tw-prose-invert-kbd:#fff;--tw-prose-invert-kbd-shadows:255 255 255;--tw-prose-invert-code:#fff;--tw-prose-invert-pre-code:#d1d5db;--tw-prose-invert-pre-bg:rgba(0,0,0,.5);--tw-prose-invert-th-borders:#4b5563;--tw-prose-invert-td-borders:#374151;font-size:1rem;line-height:1.75}.prose :where(picture>img):not(:where([class~=not-prose],[class~=not-prose] *)){margin-bottom:0;margin-top:0}.prose :where(video):not(:where([class~=not-prose],[class~=not-prose] *)){margin-bottom:2em;margin-top:2em}.prose :where(li):not(:where([class~=not-prose],[class~=not-prose] *)){margin-bottom:.5em;margin-top:.5em}.prose :where(ol>li):not(:where([class~=not-prose],[class~=not-prose] *)){padding-left:.375em}.prose :where(ul>li):not(:where([class~=not-prose],[class~=not-prose] *)){padding-left:.375em}.prose :where(.prose>ul>li p):not(:where([class~=not-prose],[class~=not-prose] *)){margin-bottom:.75em;margin-top:.75em}.prose :where(.prose>ul>li>:first-child):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:1.25em}.prose :where(.prose>ul>li>:last-child):not(:where([class~=not-prose],[class~=not-prose] *)){margin-bottom:1.25em}.prose :where(.prose>ol>li>:first-child):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:1.25em}.prose :where(.prose>ol>li>:last-child):not(:where([class~=not-prose],[class~=not-prose] *)){margin-bottom:1.25em}.prose :where(ul ul,ul ol,ol ul,ol ol):not(:where([class~=not-prose],[class~=not-prose] *)){margin-bottom:.75em;margin-top:.75em}.prose :where(dl):not(:where([class~=not-prose],[class~=not-prose] *)){margin-bottom:1.25em;margin-top:1.25em}.prose :where(dd):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:.5em;padding-left:1.625em}.prose :where(hr+*):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:0}.prose :where(h2+*):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:0}.prose :where(h3+*):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:0}.prose :where(h4+*):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:0}.prose :where(thead th:first-child):not(:where([class~=not-prose],[class~=not-prose] *)){padding-left:0}.prose :where(thead th:last-child):not(:where([class~=not-prose],[class~=not-prose] *)){padding-right:0}.prose :where(tbody td,tfoot td):not(:where([class~=not-prose],[class~=not-prose] *)){padding:.5714286em}.prose :where(tbody td:first-child,tfoot td:first-child):not(:where([class~=not-prose],[class~=not-prose] *)){padding-left:0}.prose :where(tbody td:last-child,tfoot td:last-child):not(:where([class~=not-prose],[class~=not-prose] *)){padding-right:0}.prose :where(figure):not(:where([class~=not-prose],[class~=not-prose] *)){margin-bottom:2em;margin-top:2em}.prose :where(.prose>:first-child):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:0}.prose :where(.prose>:last-child):not(:where([class~=not-prose],[class~=not-prose] *)){margin-bottom:0}.prose-sm{font-size:.875rem;line-height:1.7142857}.prose-sm :where(p):not(:where([class~=not-prose],[class~=not-prose] *)){margin-bottom:1.1428571em;margin-top:1.1428571em}.prose-sm :where([class~=lead]):not(:where([class~=not-prose],[class~=not-prose] *)){font-size:1.2857143em;line-height:1.5555556;margin-bottom:.8888889em;margin-top:.8888889em}.prose-sm :where(blockquote):not(:where([class~=not-prose],[class~=not-prose] *)){margin-bottom:1.3333333em;margin-top:1.3333333em;padding-left:1.1111111em}.prose-sm :where(h1):not(:where([class~=not-prose],[class~=not-prose] *)){font-size:2.1428571em;line-height:1.2;margin-bottom:.8em;margin-top:0}.prose-sm :where(h2):not(:where([class~=not-prose],[class~=not-prose] *)){font-size:1.4285714em;line-height:1.4;margin-bottom:.8em;margin-top:1.6em}.prose-sm :where(h3):not(:where([class~=not-prose],[class~=not-prose] *)){font-size:1.2857143em;line-height:1.5555556;margin-bottom:.4444444em;margin-top:1.5555556em}.prose-sm :where(h4):not(:where([class~=not-prose],[class~=not-prose] *)){line-height:1.4285714;margin-bottom:.5714286em;margin-top:1.4285714em}.prose-sm :where(img):not(:where([class~=not-prose],[class~=not-prose] *)){margin-bottom:1.7142857em;margin-top:1.7142857em}.prose-sm :where(picture):not(:where([class~=not-prose],[class~=not-prose] *)){margin-bottom:1.7142857em;margin-top:1.7142857em}.prose-sm :where(picture>img):not(:where([class~=not-prose],[class~=not-prose] *)){margin-bottom:0;margin-top:0}.prose-sm :where(video):not(:where([class~=not-prose],[class~=not-prose] *)){margin-bottom:1.7142857em;margin-top:1.7142857em}.prose-sm :where(kbd):not(:where([class~=not-prose],[class~=not-prose] *)){border-radius:.3125rem;font-size:.8571429em;padding:.1428571em .3571429em}.prose-sm :where(code):not(:where([class~=not-prose],[class~=not-prose] *)){font-size:.8571429em}.prose-sm :where(h2 code):not(:where([class~=not-prose],[class~=not-prose] *)){font-size:.9em}.prose-sm :where(h3 code):not(:where([class~=not-prose],[class~=not-prose] *)){font-size:.8888889em}.prose-sm :where(pre):not(:where([class~=not-prose],[class~=not-prose] *)){border-radius:.25rem;font-size:.8571429em;line-height:1.6666667;margin-bottom:1.6666667em;margin-top:1.6666667em;padding:.6666667em 1em}.prose-sm :where(ol):not(:where([class~=not-prose],[class~=not-prose] *)){margin-bottom:1.1428571em;margin-top:1.1428571em;padding-left:1.5714286em}.prose-sm :where(ul):not(:where([class~=not-prose],[class~=not-prose] *)){margin-bottom:1.1428571em;margin-top:1.1428571em;padding-left:1.5714286em}.prose-sm :where(li):not(:where([class~=not-prose],[class~=not-prose] *)){margin-bottom:.2857143em;margin-top:.2857143em}.prose-sm :where(ol>li):not(:where([class~=not-prose],[class~=not-prose] *)){padding-left:.4285714em}.prose-sm :where(ul>li):not(:where([class~=not-prose],[class~=not-prose] *)){padding-left:.4285714em}.prose-sm :where(.prose-sm>ul>li p):not(:where([class~=not-prose],[class~=not-prose] *)){margin-bottom:.5714286em;margin-top:.5714286em}.prose-sm :where(.prose-sm>ul>li>:first-child):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:1.1428571em}.prose-sm :where(.prose-sm>ul>li>:last-child):not(:where([class~=not-prose],[class~=not-prose] *)){margin-bottom:1.1428571em}.prose-sm :where(.prose-sm>ol>li>:first-child):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:1.1428571em}.prose-sm :where(.prose-sm>ol>li>:last-child):not(:where([class~=not-prose],[class~=not-prose] *)){margin-bottom:1.1428571em}.prose-sm :where(ul ul,ul ol,ol ul,ol ol):not(:where([class~=not-prose],[class~=not-prose] *)){margin-bottom:.5714286em;margin-top:.5714286em}.prose-sm :where(dl):not(:where([class~=not-prose],[class~=not-prose] *)){margin-bottom:1.1428571em;margin-top:1.1428571em}.prose-sm :where(dt):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:1.1428571em}.prose-sm :where(dd):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:.2857143em;padding-left:1.5714286em}.prose-sm :where(hr):not(:where([class~=not-prose],[class~=not-prose] *)){margin-bottom:2.8571429em;margin-top:2.8571429em}.prose-sm :where(hr+*):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:0}.prose-sm :where(h2+*):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:0}.prose-sm :where(h3+*):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:0}.prose-sm :where(h4+*):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:0}.prose-sm :where(table):not(:where([class~=not-prose],[class~=not-prose] *)){font-size:.8571429em;line-height:1.5}.prose-sm :where(thead th):not(:where([class~=not-prose],[class~=not-prose] *)){padding-bottom:.6666667em;padding-left:1em;padding-right:1em}.prose-sm :where(thead th:first-child):not(:where([class~=not-prose],[class~=not-prose] *)){padding-left:0}.prose-sm :where(thead th:last-child):not(:where([class~=not-prose],[class~=not-prose] *)){padding-right:0}.prose-sm :where(tbody td,tfoot td):not(:where([class~=not-prose],[class~=not-prose] *)){padding:.6666667em 1em}.prose-sm :where(tbody td:first-child,tfoot td:first-child):not(:where([class~=not-prose],[class~=not-prose] *)){padding-left:0}.prose-sm :where(tbody td:last-child,tfoot td:last-child):not(:where([class~=not-prose],[class~=not-prose] *)){padding-right:0}.prose-sm :where(figure):not(:where([class~=not-prose],[class~=not-prose] *)){margin-bottom:1.7142857em;margin-top:1.7142857em}.prose-sm :where(figure>*):not(:where([class~=not-prose],[class~=not-prose] *)){margin-bottom:0;margin-top:0}.prose-sm :where(figcaption):not(:where([class~=not-prose],[class~=not-prose] *)){font-size:.8571429em;line-height:1.3333333;margin-top:.6666667em}.prose-sm :where(.prose-sm>:first-child):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:0}.prose-sm :where(.prose-sm>:last-child):not(:where([class~=not-prose],[class~=not-prose] *)){margin-bottom:0}.pointer-events-none{pointer-events:none}.\\!fixed{position:fixed!important}.fixed{position:fixed}.absolute{position:absolute}.relative{position:relative}.inset-0{inset:0}.-top-4{top:-16px}.bottom-0{bottom:0}.bottom-28{bottom:112px}.left-0{left:0}.left-1\\/2{left:50%}.left-2{left:8px}.right-0{right:0}.right-4{right:16px}.right-\\[-8px\\]{right:-8px}.top-0{top:0}.top-1{top:4px}.top-4{top:16px}.z-0{z-index:0}.z-10{z-index:10}.z-40{z-index:40}.z-50{z-index:50}.z-\\[1001\\]{z-index:1001}.z-\\[1002\\]{z-index:1002}.float-right{float:right}.m-0{margin:0}.m-\\[6px\\]{margin:6px}.m-auto{margin:auto}.mx-4{margin-left:16px;margin-right:16px}.my-2{margin-bottom:8px;margin-top:8px}.my-6{margin-bottom:24px;margin-top:24px}.-ml-1{margin-left:-4px}.mb-1{margin-bottom:4px}.mb-2{margin-bottom:8px}.mb-4{margin-bottom:16px}.mb-6{margin-bottom:24px}.ml-1{margin-left:4px}.ml-1\\.5{margin-left:6px}.ml-10{margin-left:40px}.ml-2{margin-left:8px}.ml-4{margin-left:16px}.ml-\\[24px\\]{margin-left:24px}.ml-auto{margin-left:auto}.mr-1{margin-right:4px}.mr-2{margin-right:8px}.mr-3{margin-right:12px}.mr-\\[10px\\]{margin-right:10px}.mt-2{margin-top:8px}.mt-\\[50px\\]{margin-top:50px}.block{display:block}.inline-block{display:inline-block}.flex{display:flex}.inline-flex{display:inline-flex}.hidden{display:none}.h-10{height:40px}.h-12{height:48px}.h-14{height:56px}.h-2{height:8px}.h-4{height:16px}.h-5{height:20px}.h-6{height:24px}.h-7{height:28px}.h-8{height:32px}.h-\\[19px\\]{height:19px}.h-\\[45px\\]{height:45px}.h-\\[50px\\]{height:50px}.h-\\[58px\\]{height:58px}.h-auto{height:auto}.h-full{height:100%}.max-h-\\[128px\\]{max-height:128px}.max-h-\\[704px\\]{max-height:704px}.max-h-none{max-height:none}.min-h-\\[56px\\]{min-height:56px}.min-h-full{min-height:100%}.w-1{width:4px}.w-10{width:40px}.w-12{width:48px}.w-2{width:8px}.w-4{width:16px}.w-5{width:20px}.w-6{width:24px}.w-7{width:28px}.w-8{width:32px}.w-\\[19px\\]{width:19px}.w-\\[200px\\]{width:200px}.w-full{width:100%}.min-w-full{min-width:100%}.max-w-3xl{max-width:768px}.max-w-\\[128px\\]{max-width:128px}.max-w-full{max-width:100%}.max-w-max{max-width:-moz-max-content;max-width:max-content}.max-w-md{max-width:448px}.max-w-none{max-width:none}.max-w-sm{max-width:384px}.flex-1{flex:1 1 0%}.flex-auto{flex:1 1 auto}.flex-none{flex:none}.flex-shrink-0{flex-shrink:0}.flex-grow{flex-grow:1}.flex-grow-0{flex-grow:0}.basis-auto{flex-basis:auto}.-translate-x-1\\/2{--tw-translate-x:-50%}.-rotate-180,.-translate-x-1\\/2{transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.-rotate-180{--tw-rotate:-180deg}.rotate-0{--tw-rotate:0deg}.rotate-0,.scale-0{transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.scale-0{--tw-scale-x:0;--tw-scale-y:0}.scale-100{--tw-scale-x:1;--tw-scale-y:1}.scale-100,.scale-90{transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.scale-90{--tw-scale-x:.9;--tw-scale-y:.9}.transform{transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}@keyframes fade-in{0%{opacity:0}to{opacity:1}}.animate-fade-in{animation:fade-in .3s ease-out}.animate-spin{animation:spin 1s linear infinite}.cursor-ew-resize{cursor:ew-resize}.cursor-pointer{cursor:pointer}.cursor-text{cursor:text}.resize{resize:both}.flex-row{flex-direction:row}.flex-col{flex-direction:column}.flex-wrap{flex-wrap:wrap}.items-start{align-items:flex-start}.items-end{align-items:flex-end}.items-center{align-items:center}.justify-start{justify-content:flex-start}.justify-end{justify-content:flex-end}.justify-center{justify-content:center}.justify-between{justify-content:space-between}.gap-1{gap:4px}.gap-2{gap:8px}.gap-3{gap:12px}.space-x-2>:not([hidden])~:not([hidden]){--tw-space-x-reverse:0;margin-left:calc(8px*(1 - var(--tw-space-x-reverse)));margin-right:calc(8px*var(--tw-space-x-reverse))}.overflow-hidden{overflow:hidden}.overflow-y-auto{overflow-y:auto}.overflow-x-hidden{overflow-x:hidden}.scroll-smooth{scroll-behavior:smooth}.whitespace-pre-wrap{white-space:pre-wrap}.\\!rounded-\\[12px\\]{border-radius:12px!important}.rounded{border-radius:4px}.rounded-\\[10px\\]{border-radius:10px}.rounded-\\[12px\\]{border-radius:12px}.rounded-\\[6px\\]{border-radius:6px}.rounded-full{border-radius:9999px}.rounded-lg{border-radius:8px}.rounded-md{border-radius:6px}.rounded-none{border-radius:0}.rounded-xl{border-radius:12px}.rounded-b{border-bottom-left-radius:4px;border-bottom-right-radius:4px}.rounded-t{border-top-left-radius:4px;border-top-right-radius:4px}.border{border-width:1px}.border-0{border-width:0}.border-2{border-width:2px}.border-4{border-width:4px}.border-b{border-bottom-width:1px}.border-b-2{border-bottom-width:2px}.border-t{border-top-width:1px}.border-t-4{border-top-width:4px}.border-solid{border-style:solid}.border-dashed{border-style:dashed}.border-none{border-style:none}.border-\\[\\#3B81F6\\]{--tw-border-opacity:1;border-color:rgb(59 129 246/var(--tw-border-opacity))}.border-\\[\\#E4E4E4\\]{--tw-border-opacity:1;border-color:rgb(228 228 228/var(--tw-border-opacity))}.border-\\[\\#eeeeee\\]{--tw-border-opacity:1;border-color:rgb(238 238 238/var(--tw-border-opacity))}.border-gray-200{--tw-border-opacity:1;border-color:rgb(229 231 235/var(--tw-border-opacity))}.border-gray-300{--tw-border-opacity:1;border-color:rgb(209 213 219/var(--tw-border-opacity))}.border-gray-900{--tw-border-opacity:1;border-color:rgb(17 24 39/var(--tw-border-opacity))}.border-green-600{--tw-border-opacity:1;border-color:rgb(22 163 74/var(--tw-border-opacity))}.border-red-600{--tw-border-opacity:1;border-color:rgb(220 38 38/var(--tw-border-opacity))}.border-t-white{--tw-border-opacity:1;border-top-color:rgb(255 255 255/var(--tw-border-opacity))}.bg-\\[\\#F9F9F9\\]{--tw-bg-opacity:1;background-color:rgb(249 249 249/var(--tw-bg-opacity))}.bg-\\[rgba\\(0\\2c 0\\2c 0\\2c 0\\.3\\)\\]{background-color:rgba(0,0,0,.3)}.bg-\\[rgba\\(0\\2c 0\\2c 0\\2c 0\\.4\\)\\]{background-color:rgba(0,0,0,.4)}.bg-black{--tw-bg-opacity:1;background-color:rgb(0 0 0/var(--tw-bg-opacity))}.bg-black\\/10{background-color:rgba(0,0,0,.1)}.bg-black\\/60{background-color:rgba(0,0,0,.6)}.bg-emerald-500{--tw-bg-opacity:1;background-color:rgb(16 185 129/var(--tw-bg-opacity))}.bg-gray-100{--tw-bg-opacity:1;background-color:rgb(243 244 246/var(--tw-bg-opacity))}.bg-gray-500{--tw-bg-opacity:1;background-color:rgb(107 114 128/var(--tw-bg-opacity))}.bg-red-500{--tw-bg-opacity:1;background-color:rgb(239 68 68/var(--tw-bg-opacity))}.bg-transparent{background-color:transparent}.bg-white{--tw-bg-opacity:1;background-color:rgb(255 255 255/var(--tw-bg-opacity))}.bg-opacity-50{--tw-bg-opacity:0.5}.bg-cover{background-size:cover}.bg-center{background-position:50%}.fill-transparent{fill:transparent}.stroke-2{stroke-width:2}.object-cover{-o-object-fit:cover;object-fit:cover}.p-0{padding:0}.p-1{padding:4px}.p-10{padding:40px}.p-2{padding:8px}.p-2\\.5{padding:10px}.p-4{padding:16px}.p-5{padding:20px}.p-6{padding:24px}.px-2{padding-left:8px;padding-right:8px}.px-3{padding-left:12px;padding-right:12px}.px-4{padding-left:16px;padding-right:16px}.px-5{padding-left:20px;padding-right:20px}.px-6{padding-left:24px;padding-right:24px}.px-\\[10px\\]{padding-left:10px;padding-right:10px}.py-1{padding-bottom:4px;padding-top:4px}.py-2{padding-bottom:8px;padding-top:8px}.py-4{padding-bottom:16px;padding-top:16px}.py-\\[10px\\]{padding-bottom:10px;padding-top:10px}.pb-1{padding-bottom:4px}.pb-2{padding-bottom:8px}.pb-5{padding-bottom:20px}.pb-\\[10px\\]{padding-bottom:10px}.pr-12{padding-right:48px}.pr-2{padding-right:8px}.pr-3{padding-right:12px}.pt-2{padding-top:8px}.pt-4{padding-top:16px}.pt-\\[30px\\]{padding-top:30px}.pt-\\[6px\\]{padding-top:6px}.text-left{text-align:left}.text-center{text-align:center}.font-sans{font-family:ui-sans-serif,system-ui,-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Helvetica Neue,Arial,Noto Sans,sans-serif,Apple Color Emoji,Segoe UI Emoji,Segoe UI Symbol,Noto Color Emoji}.text-2xl{font-size:24px;line-height:32px}.text-\\[13px\\]{font-size:13px}.text-\\[16px\\],.text-base{font-size:16px}.text-base{line-height:24px}.text-sm{font-size:14px;line-height:20px}.text-xl{font-size:20px;line-height:28px}.text-xs{font-size:12px;line-height:16px}.font-bold{font-weight:700}.font-medium{font-weight:500}.font-normal{font-weight:400}.font-semibold{font-weight:600}.uppercase{text-transform:uppercase}.lowercase{text-transform:lowercase}.italic{font-style:italic}.leading-none{line-height:1}.text-\\[\\#3B81F6\\]{--tw-text-opacity:1;color:rgb(59 129 246/var(--tw-text-opacity))}.text-black{--tw-text-opacity:1;color:rgb(0 0 0/var(--tw-text-opacity))}.text-current{color:currentColor}.text-gray-500{--tw-text-opacity:1;color:rgb(107 114 128/var(--tw-text-opacity))}.text-gray-700{--tw-text-opacity:1;color:rgb(55 65 81/var(--tw-text-opacity))}.text-gray-800{--tw-text-opacity:1;color:rgb(31 41 55/var(--tw-text-opacity))}.text-green-600{--tw-text-opacity:1;color:rgb(22 163 74/var(--tw-text-opacity))}.text-inherit{color:inherit}.text-red-500{--tw-text-opacity:1;color:rgb(239 68 68/var(--tw-text-opacity))}.text-red-600{--tw-text-opacity:1;color:rgb(220 38 38/var(--tw-text-opacity))}.text-transparent{color:transparent}.text-white{--tw-text-opacity:1;color:rgb(255 255 255/var(--tw-text-opacity))}.opacity-0{opacity:0}.opacity-100{opacity:1}.opacity-25{opacity:.25}.opacity-70{opacity:.7}.opacity-75{opacity:.75}.shadow{--tw-shadow:0 1px 3px 0 rgba(0,0,0,.1),0 1px 2px -1px rgba(0,0,0,.1);--tw-shadow-colored:0 1px 3px 0 var(--tw-shadow-color),0 1px 2px -1px var(--tw-shadow-color)}.shadow,.shadow-lg{box-shadow:var(--tw-ring-offset-shadow,0 0 #0000),var(--tw-ring-shadow,0 0 #0000),var(--tw-shadow)}.shadow-lg{--tw-shadow:0 10px 15px -3px rgba(0,0,0,.1),0 4px 6px -4px rgba(0,0,0,.1);--tw-shadow-colored:0 10px 15px -3px var(--tw-shadow-color),0 4px 6px -4px var(--tw-shadow-color)}.shadow-md{--tw-shadow:0 4px 6px -1px rgba(0,0,0,.1),0 2px 4px -2px rgba(0,0,0,.1);--tw-shadow-colored:0 4px 6px -1px var(--tw-shadow-color),0 2px 4px -2px var(--tw-shadow-color)}.shadow-md,.shadow-xl{box-shadow:var(--tw-ring-offset-shadow,0 0 #0000),var(--tw-ring-shadow,0 0 #0000),var(--tw-shadow)}.shadow-xl{--tw-shadow:0 20px 25px -5px rgba(0,0,0,.1),0 8px 10px -6px rgba(0,0,0,.1);--tw-shadow-colored:0 20px 25px -5px var(--tw-shadow-color),0 8px 10px -6px var(--tw-shadow-color)}.outline-none{outline:2px solid transparent;outline-offset:2px}.blur{--tw-blur:blur(8px)}.blur,.blur-\\[2px\\]{filter:var(--tw-blur) var(--tw-brightness) var(--tw-contrast) var(--tw-grayscale) var(--tw-hue-rotate) var(--tw-invert) var(--tw-saturate) var(--tw-sepia) var(--tw-drop-shadow)}.blur-\\[2px\\]{--tw-blur:blur(2px)}.blur-none{--tw-blur:blur(0)}.blur-none,.filter{filter:var(--tw-blur) var(--tw-brightness) var(--tw-contrast) var(--tw-grayscale) var(--tw-hue-rotate) var(--tw-invert) var(--tw-saturate) var(--tw-sepia) var(--tw-drop-shadow)}.backdrop-blur-sm{--tw-backdrop-blur:blur(4px);-webkit-backdrop-filter:var(--tw-backdrop-blur) var(--tw-backdrop-brightness) var(--tw-backdrop-contrast) var(--tw-backdrop-grayscale) var(--tw-backdrop-hue-rotate) var(--tw-backdrop-invert) var(--tw-backdrop-opacity) var(--tw-backdrop-saturate) var(--tw-backdrop-sepia);backdrop-filter:var(--tw-backdrop-blur) var(--tw-backdrop-brightness) var(--tw-backdrop-contrast) var(--tw-backdrop-grayscale) var(--tw-backdrop-hue-rotate) var(--tw-backdrop-invert) var(--tw-backdrop-opacity) var(--tw-backdrop-saturate) var(--tw-backdrop-sepia)}.transition{transition-duration:.15s;transition-property:color,background-color,border-color,text-decoration-color,fill,stroke,opacity,box-shadow,transform,filter,-webkit-backdrop-filter;transition-property:color,background-color,border-color,text-decoration-color,fill,stroke,opacity,box-shadow,transform,filter,backdrop-filter;transition-property:color,background-color,border-color,text-decoration-color,fill,stroke,opacity,box-shadow,transform,filter,backdrop-filter,-webkit-backdrop-filter;transition-timing-function:cubic-bezier(.4,0,.2,1)}.transition-all{transition-duration:.15s;transition-property:all;transition-timing-function:cubic-bezier(.4,0,.2,1)}.transition-colors{transition-duration:.15s;transition-property:color,background-color,border-color,text-decoration-color,fill,stroke;transition-timing-function:cubic-bezier(.4,0,.2,1)}.transition-opacity{transition-duration:.15s;transition-property:opacity;transition-timing-function:cubic-bezier(.4,0,.2,1)}.transition-transform{transition-property:transform;transition-timing-function:cubic-bezier(.4,0,.2,1)}.duration-150,.transition-transform{transition-duration:.15s}.duration-200{transition-duration:.2s}.duration-300{transition-duration:.3s}.ease-linear{transition-timing-function:linear}.ease-out{transition-timing-function:cubic-bezier(0,0,.2,1)}:host{--chatbot-container-bg-image:none;--chatbot-container-bg-color:transparent;--chatbot-container-font-family:"Open Sans";--chatbot-button-bg-color:#0042da;--chatbot-button-color:#fff;--chatbot-host-bubble-bg-color:#f7f8ff;--chatbot-host-bubble-color:#303235;--chatbot-guest-bubble-bg-color:#3b81f6;--chatbot-guest-bubble-color:#fff;--chatbot-input-bg-color:#fff;--chatbot-input-color:#303235;--chatbot-input-placeholder-color:#9095a0;--chatbot-header-bg-color:#fff;--chatbot-header-color:#303235;--chatbot-border-radius:6px;--PhoneInputCountryFlag-borderColor:transparent;--PhoneInput-color--focus:transparent}a{color:#16bed7;font-weight:500}a:hover{text-decoration:underline}pre{word-wrap:break-word;font-size:13px;margin:5px;overflow:auto;padding:5px;white-space:pre-wrap;white-space:-moz-pre-wrap;white-space:-pre-wrap;white-space:-o-pre-wrap;width:auto}.string{color:green}.number{color:#ff8c00}.boolean{color:blue}.null{color:#f0f}.key{color:#002b36}.scrollable-container::-webkit-scrollbar{display:none}.scrollable-container{-ms-overflow-style:none;scrollbar-width:none}.text-fade-in{transition:opacity .4s ease-in .2s}.bubble-typing{transition:width .4s ease-out,height .4s ease-out}.bubble1,.bubble2,.bubble3{background-color:var(--chatbot-host-bubble-color);opacity:.5}.bubble1,.bubble2{animation:chatBubbles 1s ease-in-out infinite}.bubble2{animation-delay:.3s}.bubble3{animation:chatBubbles 1s ease-in-out infinite;animation-delay:.5s}@keyframes chatBubbles{0%{transform:translateY(0)}50%{transform:translateY(-5px)}to{transform:translateY(0)}}button,input,textarea{font-weight:300}.slate-a{text-decoration:underline}.slate-html-container>div{min-height:24px}.slate-bold{font-weight:700}.slate-italic{font-style:oblique}.slate-underline{text-decoration:underline}.text-input::-moz-placeholder{color:#9095a0!important;opacity:1!important}.text-input::placeholder{color:#9095a0!important;opacity:1!important}.chatbot-container{background-color:var(--chatbot-container-bg-color);background-image:var(--chatbot-container-bg-image);font-family:Open Sans,-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Helvetica,Arial,sans-serif,Apple Color Emoji,Segoe UI Emoji,Segoe UI Symbol}.file-annotation-button{background-color:#02a0a0c2;border:1px solid #02a0a0c2;border-radius:var(--chatbot-border-radius);color:var(--chatbot-button-color)}.chatbot-button{background-color:#0042da;border:1px solid #0042da;border-radius:var(--chatbot-border-radius);color:var(--chatbot-button-color)}.chatbot-button.selectable{border:1px solid #0042da}.chatbot-button.selectable,.chatbot-host-bubble{background-color:#f7f8ff;color:var(--chatbot-host-bubble-color)}.chatbot-host-bubble>.bubble-typing{background-color:#f7f8ff;border:var(--chatbot-host-bubble-border);border-radius:6px}.chatbot-host-bubble iframe,.chatbot-host-bubble img,.chatbot-host-bubble video{border-radius:var(--chatbot-border-radius);cursor:pointer}.chatbot-guest-bubble{background-color:#3b81f6;border-radius:6px;color:var(--chatbot-guest-bubble-color)}.chatbot-input,.feedback-input{background-color:#fff;border-radius:var(--chatbot-border-radius);box-shadow:0 2px 6px -1px rgba(0,0,0,.1);color:#303235}.chatbot-input-error-message{color:#303235}.chatbot-button>.send-icon{fill:var(--chatbot-button-color);stroke:var(--chatbot-button-color)}.chatbot-chat-view{max-width:800px}.ping span{background-color:#0042da}.rating-icon-container svg{stroke:#0042da;fill:#f7f8ff;height:42px;transition:fill .1s ease-out;width:42px}.rating-icon-container.selected svg{fill:#0042da}.rating-icon-container:hover svg{filter:brightness(.9)}.rating-icon-container:active svg{filter:brightness(.75)}.upload-progress-bar{background-color:#0042da;border-radius:var(--chatbot-border-radius)}.total-files-indicator{background-color:#0042da;color:var(--chatbot-button-color);font-size:10px}.chatbot-upload-input{transition:border-color .1s ease-out}.chatbot-upload-input.dragging-over{border-color:#0042da}.secondary-button{background-color:#f7f8ff;border-radius:var(--chatbot-border-radius);color:var(--chatbot-host-bubble-color)}.chatbot-country-select{color:#303235}.chatbot-country-select,.chatbot-date-input{background-color:#fff;border-radius:var(--chatbot-border-radius)}.chatbot-date-input{color:#303235;color-scheme:light}.chatbot-popup-blocked-toast{border-radius:var(--chatbot-border-radius)}.messagelist{border-radius:.5rem;height:100%;overflow-y:scroll;width:100%}.messagelistloading{display:flex;justify-content:center;margin-top:1rem;width:100%}.usermessage{padding:1rem 1.5rem}.usermessagewaiting-light{background:linear-gradient(270deg,#ede7f6,#e3f2fd,#ede7f6);background-position:-100% 0;background-size:200% 200%}.usermessagewaiting-dark,.usermessagewaiting-light{animation:loading-gradient 2s ease-in-out infinite;animation-direction:alternate;animation-name:loading-gradient;padding:1rem 1.5rem}.usermessagewaiting-dark{background:linear-gradient(270deg,#2e2352,#1d3d60,#2e2352);background-position:-100% 0;background-size:200% 200%;color:#ececf1}@keyframes loading-gradient{0%{background-position:-100% 0}to{background-position:100% 0}}.apimessage{animation:fadein .5s;padding:1rem 1.5rem}@keyframes fadein{0%{opacity:0}to{opacity:1}}.apimessage,.usermessage,.usermessagewaiting{display:flex}.markdownanswer{line-height:1.75}.markdownanswer a:hover{opacity:.8}.markdownanswer a{color:#16bed7;font-weight:500}.markdownanswer code{color:#15cb19;font-weight:500;white-space:pre-wrap!important}.markdownanswer ol,.markdownanswer ul{margin:1rem}.boticon,.usericon{border-radius:1rem;margin-right:1rem}.markdownanswer h1,.markdownanswer h2,.markdownanswer h3{font-size:inherit}.center{flex-direction:column;padding:10px;position:relative}.center,.cloud{align-items:center;display:flex;justify-content:center}.cloud{border-radius:.5rem;height:calc(100% - 50px);width:400px}input,textarea{background-color:transparent;border:none;font-family:Open Sans,-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Helvetica,Arial,sans-serif,Apple Color Emoji,Segoe UI Emoji,Segoe UI Symbol;padding:10px}@media (max-width:640px){div[part=bot]{height:100%!important;left:0!important;max-height:unset!important;max-width:unset!important;overflow:auto;overflow-x:hidden;position:fixed!important;top:0!important;width:100%!important}.chatbot-container,.rounded-lg,div[class="flex flex-row items-center w-full h-[50px] absolute top-0 left-0 z-10"],div[part=button]{border-radius:0!important}button{cursor:default!important}}.tooltip{background:var(--tooltip-background-color,#000);border-radius:5px;color:var(--tooltip-text-color,#fff);font-size:var(--tooltip-font-size,12px);max-width:calc(100vw - 20px);padding:5px 10px;position:fixed;transition:opacity .3s ease-in-out;white-space:pre-wrap;word-break:break-word;z-index:42424242}@keyframes spin{0%{transform:rotate(0deg)}to{transform:rotate(1turn)}}.spinner{animation:spin 1s linear infinite;border:4px solid hsla(0,0%,100%,.3);border-radius:50%;border-top-color:#fff;height:24px;width:24px}.prose{line-height:1.5}.hover\\:scale-110:hover{--tw-scale-x:1.1;--tw-scale-y:1.1;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.hover\\:bg-\\[\\#3B81F6\\]:hover{--tw-bg-opacity:1;background-color:rgb(59 129 246/var(--tw-bg-opacity))}.hover\\:bg-blue-500:hover{--tw-bg-opacity:1;background-color:rgb(59 130 246/var(--tw-bg-opacity))}.hover\\:bg-gray-200:hover{--tw-bg-opacity:1;background-color:rgb(229 231 235/var(--tw-bg-opacity))}.hover\\:bg-green-600:hover{--tw-bg-opacity:1;background-color:rgb(22 163 74/var(--tw-bg-opacity))}.hover\\:bg-red-600:hover{--tw-bg-opacity:1;background-color:rgb(220 38 38/var(--tw-bg-opacity))}.hover\\:bg-transparent:hover{background-color:transparent}.hover\\:bg-opacity-30:hover{--tw-bg-opacity:0.3}.hover\\:text-white:hover{--tw-text-opacity:1;color:rgb(255 255 255/var(--tw-text-opacity))}.hover\\:opacity-100:hover{opacity:1}.hover\\:opacity-80:hover{opacity:.8}.hover\\:shadow-lg:hover{--tw-shadow:0 10px 15px -3px rgba(0,0,0,.1),0 4px 6px -4px rgba(0,0,0,.1);--tw-shadow-colored:0 10px 15px -3px var(--tw-shadow-color),0 4px 6px -4px var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow,0 0 #0000),var(--tw-ring-shadow,0 0 #0000),var(--tw-shadow)}.hover\\:brightness-90:hover{--tw-brightness:brightness(.9);filter:var(--tw-blur) var(--tw-brightness) var(--tw-contrast) var(--tw-grayscale) var(--tw-hue-rotate) var(--tw-invert) var(--tw-saturate) var(--tw-sepia) var(--tw-drop-shadow)}.focus\\:border-blue-500:focus{--tw-border-opacity:1;border-color:rgb(59 130 246/var(--tw-border-opacity))}.focus\\:outline-none:focus{outline:2px solid transparent;outline-offset:2px}.focus\\:ring-0:focus{--tw-ring-offset-shadow:var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow:var(--tw-ring-inset) 0 0 0 calc(var(--tw-ring-offset-width)) var(--tw-ring-color);box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow,0 0 #0000)}.focus\\:ring-blue-500:focus{--tw-ring-opacity:1;--tw-ring-color:rgb(59 130 246/var(--tw-ring-opacity))}.active\\:scale-95:active{--tw-scale-x:.95;--tw-scale-y:.95;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.active\\:bg-emerald-600:active{--tw-bg-opacity:1;background-color:rgb(5 150 105/var(--tw-bg-opacity))}.active\\:brightness-75:active{--tw-brightness:brightness(.75);filter:var(--tw-blur) var(--tw-brightness) var(--tw-contrast) var(--tw-grayscale) var(--tw-hue-rotate) var(--tw-invert) var(--tw-saturate) var(--tw-sepia) var(--tw-drop-shadow)}.disabled\\:cursor-not-allowed:disabled{cursor:not-allowed}.disabled\\:opacity-50:disabled{opacity:.5}.disabled\\:brightness-100:disabled{--tw-brightness:brightness(1);filter:var(--tw-blur) var(--tw-brightness) var(--tw-contrast) var(--tw-grayscale) var(--tw-hue-rotate) var(--tw-invert) var(--tw-saturate) var(--tw-sepia) var(--tw-drop-shadow)}.group:hover .group-hover\\:flex{display:flex}@media not all and (min-width:640px){.max-sm\\:text-\\[14px\\]{font-size:14px}}@media (min-width:640px){.sm\\:right-5{right:20px}.sm\\:my-8{margin-bottom:32px;margin-top:32px}.sm\\:w-full{width:100%}.sm\\:max-w-3xl{max-width:768px}.sm\\:max-w-xl{max-width:576px}.sm\\:p-0{padding:0}}',util,objectUtil,errorUtil,ZodFirstPartyTypeKind;const isNotDefined=e=>null==e,isDefined=e=>null!=e,isNotEmpty=e=>null!=e&&""!==e,clearAuthenticationData=()=>{try{localStorage.removeItem("dataLogin"),localStorage.removeItem("cmcts:userInfo"),console.log("clearAuthenticationData: Authentication data cleared from localStorage")}catch(e){console.error("clearAuthenticationData: Failed to clear authentication data",e)}},sendRequest=async e=>{try{var t="string"==typeof e?e:e.url,r="string"!=typeof e&&isDefined(e.body)?{"Content-Type":"application/json",...e.headers}:void 0;let n="string"!=typeof e&&isDefined(e.body)?JSON.stringify(e.body):void 0;"string"!=typeof e&&e.formData&&(n=e.formData);var o={method:"string"==typeof e?"GET":e.method,mode:"cors",headers:r,body:n},a=("string"!=typeof e&&e.onRequest&&await e.onRequest(o),await fetch(t,o));let s;var i=a.headers.get("Content-Type");if(s=i&&i.includes("application/json")?await a.json():"string"!=typeof e&&"blob"===e.type?await a.blob():await a.text(),a.ok)return{data:s};{let e;throw 401===a.status&&(console.warn("sendRequest: 401 Unauthorized detected, clearing authentication data"),clearAuthenticationData()),e="object"==typeof s&&"error"in s?s.error:s||a.statusText}}catch(e){return console.error(e),{error:e}}},setLocalStorageChatflow=(e,t,r={})=>{var o=localStorage.getItem(e+"_EXTERNAL");r={...r};if(t&&(r.chatId=t),o)try{var a=JSON.parse(o);localStorage.setItem(e+"_EXTERNAL",JSON.stringify({...a,...r}))}catch(a){const t=o;r.chatId=t,localStorage.setItem(e+"_EXTERNAL",JSON.stringify(r))}else localStorage.setItem(e+"_EXTERNAL",JSON.stringify(r))},getLocalStorageChatflow=e=>{if(!(e=localStorage.getItem(e+"_EXTERNAL")))return{};try{return JSON.parse(e)}catch(e){return{}}},removeLocalStorageChatHistory=e=>{var t=[];for(let e=0;e<localStorage.length;e++){var r=localStorage.key(e);r&&r.startsWith("chatwoot:")&&t.push(r)}t.forEach((e=>localStorage.removeItem(e)));var o=localStorage.getItem(e+"_EXTERNAL");if(o)try{var a,i=JSON.parse(o);i.lead?(a={lead:i.lead},localStorage.removeItem(e+"_EXTERNAL"),localStorage.setItem(e+"_EXTERNAL",JSON.stringify(a))):localStorage.removeItem(e+"_EXTERNAL")}catch(e){}},getBubbleButtonSize=e=>{if(e){if("number"==typeof e)return e;if("small"===e)return 32;if("medium"===e)return 48}return 64},setCookie=(e,t,r)=>{var o=new Date;o.setTime(o.getTime()+24*r*60*60*1e3),r="expires="+o.toUTCString();document.cookie=e+"="+t+";"+r+";path=/"},fetchUserInfo=async(e,t)=>{try{return await sendRequest({url:"/api/user-info",method:"GET",headers:{"Content-Type":"application/json"},onRequest:async e=>{e.credentials="include",t&&await t(e)}})}catch(e){return console.error("fetchUserInfo: Failed to fetch user info",e),{error:e}}},mapApiResponseToDataLogin=e=>{try{var t=e.OBJRETURN.data;return{user:{id:t.id,username:t.loginname,email:t.email,phoneNumber:t.mobile||void 0,role:t.roleName?.[0]||void 0,groupname:t.techGroup?.[0]?.name||void 0,displayPrefixes:t.fullname||t.fullnameen||void 0,active:!0,_id:t._id,fullname:t.fullname,fullnameen:t.fullnameen,code:t.code,imageurl:t.imageurl,roleName:t.roleName,techGroup:t.techGroup,permissions:t.permissions},accessToken:void 0,refreshToken:void 0}}catch(e){throw console.error("mapApiResponseToDataLogin: Failed to map API response",e),new Error("Failed to map API response to dataLogin format")}},validateAndMapUserInfo=()=>{try{var e=localStorage?.getItem("dataLogin");if(!e)return console.warn("validateAndMapUserInfo: dataLogin not found in localStorage"),!1;let t;try{t=JSON.parse(e)}catch(e){return console.error("validateAndMapUserInfo: Failed to parse dataLogin JSON",e),!1}if(!t||"object"!=typeof t||!t.user)return console.warn("validateAndMapUserInfo: Invalid dataLogin structure - missing user object"),!1;const r=t.user;if("object"!=typeof r)return console.warn("validateAndMapUserInfo: user is not an object"),!1;const o={};if(isDefined(r.id)&&(o.id=r.id),isNotEmpty(r.fullname)?o.name=r.fullname:isNotEmpty(r.username)?o.name=r.username:isNotEmpty(r.displayPrefixes)&&(o.name=r.displayPrefixes),isNotEmpty(r.email)&&(o.email=r.email),isNotEmpty(r.phoneNumber)?o.phoneNumber=r.phoneNumber:isNotEmpty(r.phone)?o.phoneNumber=r.phone:isNotEmpty(r.phone_number)?o.phoneNumber=r.phone_number:isNotEmpty(r.mobile)&&(o.phoneNumber=r.mobile),["role","groupname","displayPrefixes","active","_id","code","roleName","techGroup","permissions"].forEach((e=>{isDefined(r[e])&&(o[e]=r[e])})),0===Object.keys(o).length)return console.warn("validateAndMapUserInfo: No valid user data found to map"),!1;try{return localStorage.setItem("cmcts:userInfo",JSON.stringify(o)),console.log("validateAndMapUserInfo: Successfully mapped user data to cmcts:userInfo",o),!0}catch(e){return console.error("validateAndMapUserInfo: Failed to store userInfo in localStorage",e),!1}}catch(e){return console.error("validateAndMapUserInfo: Unexpected error",e),!1}},checkAndInitializeAuth=async(e,t,r)=>{try{if(!window.location.host.includes(".vib")||r)return!1;if(localStorage?.getItem("dataLogin"))return console.log("checkAndInitializeAuth: dataLogin already exists, validating and mapping"),validateAndMapUserInfo();if(!e)return console.warn("checkAndInitializeAuth: No dataLogin found and no apiHost provided for fetching user info"),!1;console.log("checkAndInitializeAuth: No dataLogin found, fetching user info from API");var{data:o,error:a}=await fetchUserInfo(e,t);if(a)return console.error("checkAndInitializeAuth: Failed to fetch user info from API",a),!1;if(!o)return console.error("checkAndInitializeAuth: No data received from user info API"),!1;if(!o.RESULT||0!==o.RESULT.CODE)return console.error("checkAndInitializeAuth: API returned error",o.RESULT),!1;if(!o.OBJRETURN?.data)return console.error("checkAndInitializeAuth: Invalid API response structure - missing user data"),!1;var i=mapApiResponseToDataLogin(o);try{localStorage.setItem("dataLogin",JSON.stringify(i)),console.log("checkAndInitializeAuth: Successfully stored dataLogin from API response")}catch(e){return console.error("checkAndInitializeAuth: Failed to store dataLogin in localStorage",e),!1}var n=validateAndMapUserInfo();return n?console.log("checkAndInitializeAuth: Authentication initialization completed successfully"):console.warn("checkAndInitializeAuth: Authentication data stored but mapping to cmcts:userInfo failed"),n}catch(e){return console.error("checkAndInitializeAuth: Unexpected error during authentication initialization",e),!1}},reloadAndMapUserInfo=async(e,t,r)=>{try{if(!window.location.host.includes(".vib")||r)return!1;if(!e)return console.warn("reloadAndMapUserInfo: No apiHost provided for fetching user info"),!1;console.log("reloadAndMapUserInfo: Forcing reload of user info from API");var{data:o,error:a}=await fetchUserInfo(e,t);if(a)return console.error("reloadAndMapUserInfo: Failed to fetch user info from API",a),!1;if(!o)return console.error("reloadAndMapUserInfo: No data received from user info API"),!1;if(!o.RESULT||0!==o.RESULT.CODE)return console.error("reloadAndMapUserInfo: API returned error",o.RESULT),!1;if(!o.OBJRETURN?.data)return console.error("reloadAndMapUserInfo: Invalid API response structure - missing user data"),!1;var i=mapApiResponseToDataLogin(o);try{localStorage.setItem("dataLogin",JSON.stringify(i)),console.log("reloadAndMapUserInfo: Successfully updated dataLogin from API response")}catch(e){return console.error("reloadAndMapUserInfo: Failed to store updated dataLogin in localStorage",e),!1}var n=validateAndMapUserInfo();return n?console.log("reloadAndMapUserInfo: User info reload and mapping completed successfully"):console.warn("reloadAndMapUserInfo: User data reloaded but mapping to cmcts:userInfo failed"),n}catch(e){return console.error("reloadAndMapUserInfo: Unexpected error during user info reload",e),!1}},getCookie=e=>{var t=e+"=",r=decodeURIComponent(document.cookie).split(";");for(let e=0;e<r.length;e++){let o=r[e];for(;" "===o.charAt(0);)o=o.substring(1);if(0===o.indexOf(t))return o.substring(t.length,o.length)}return""},_tmpl$$E=template('<svg viewBox="0 0 24 24"><path d="M21 11.5a8.38 8.38 0 0 1-.9 3.8 8.5 8.5 0 0 1-7.6 4.7 8.38 8.38 0 0 1-3.8-.9L3 21l1.9-5.7a8.38 8.38 0 0 1-.9-3.8 8.5 8.5 0 0 1 4.7-7.6 8.38 8.38 0 0 1 3.8-.9h.5a8.48 8.48 0 0 1 8 8v.5z">'),_tmpl$2$i=template('<img alt="Bubble button icon">'),_tmpl$3$b=template('<button part="button" class="fixed shadow-md rounded-full hover:scale-110 active:scale-95 transition-transform duration-200 flex justify-center items-center animate-fade-in"><svg viewBox="0 0 24 24"><path fill-rule="evenodd" clip-rule="evenodd" d="M18.601 8.39897C18.269 8.06702 17.7309 8.06702 17.3989 8.39897L12 13.7979L6.60099 8.39897C6.26904 8.06702 5.73086 8.06702 5.39891 8.39897C5.06696 8.73091 5.06696 9.2691 5.39891 9.60105L11.3989 15.601C11.7309 15.933 12.269 15.933 12.601 15.601L18.601 9.60105C18.9329 9.2691 18.9329 8.73091 18.601 8.39897Z">'),defaultButtonColor$d="#3B81F6",defaultIconColor$2="white",defaultBottom=200,defaultRight=55,BubbleButton=e=>{const t=getBubbleButtonSize(e.size),[r,o]=createSignal({bottom:e.bottom??defaultBottom,right:e.right??defaultRight}),[a,i]=createSignal(!1),[n,s]=createSignal(!1);let l,d;const m=t=>{e.dragAndDrop&&(l=t.clientX,d=r().right,document.addEventListener("mousemove",c),document.addEventListener("mouseup",g))},c=a=>{a=l-a.clientX,a=d+a;var i=window.innerWidth-t;a={right:Math.min(Math.max(a,defaultRight),i),bottom:r().bottom};o(a),e.setButtonPosition(a)},g=()=>{document.removeEventListener("mousemove",c),document.removeEventListener("mouseup",g)},u=()=>{e.toggleBot(),s(!0),window.innerWidth<=640&&i(!0)};return createEffect((()=>{var t;e.autoOpen&&(e.autoOpenOnMobile||640<window.innerWidth)&&(t=e.openDelay??2,setTimeout((()=>{e.isBotOpened||n()||e.toggleBot()}),1e3*t))})),createComponent(Show,{get when(){return!a()||!e.isBotOpened},keyed:!0,get children(){const o=_tmpl$3$b(),a=o.firstChild;return o.$$mousedown=m,o.$$click=u,o.style.setProperty("z-index","42424242"),t+"px"!=null?o.style.setProperty("width",t+"px"):o.style.removeProperty("width"),t+"px"!=null?o.style.setProperty("height",t+"px"):o.style.removeProperty("height"),insert(o,createComponent(Show,{get when(){return isNotDefined(e.customIconSrc)},keyed:!0,get children(){const r=_tmpl$$E();return setAttribute(r,"width",.6*t),setAttribute(r,"height",.6*t),createRenderEffect((t=>{var o=e.iconColor??defaultIconColor$2,a="stroke-2 fill-transparent absolute duration-200 transition "+(e.isBotOpened?"scale-0 opacity-0":"scale-100 opacity-100");return o!==t._v$&&(null!=(t._v$=o)?r.style.setProperty("stroke",o):r.style.removeProperty("stroke")),a!==t._v$2&&setAttribute(r,"class",t._v$2=a),t}),{_v$:void 0,_v$2:void 0}),r}}),a),insert(o,createComponent(Show,{get when(){return e.customIconSrc},get children(){const r=_tmpl$2$i();return.6*t+"px"!=null?r.style.setProperty("width",.6*t+"px"):r.style.removeProperty("width"),.6*t+"px"!=null?r.style.setProperty("height",.6*t+"px"):r.style.removeProperty("height"),createRenderEffect((t=>{var o=e.customIconSrc,a="rounded-full object-cover"+(e.isBotOpened?"scale-0 opacity-0":"scale-100 opacity-100");return o!==t._v$3&&setAttribute(r,"src",t._v$3=o),a!==t._v$4&&className(r,t._v$4=a),t}),{_v$3:void 0,_v$4:void 0}),r}}),a),setAttribute(a,"width",.6*t),setAttribute(a,"height",.6*t),createRenderEffect((t=>{var i=e.backgroundColor??defaultButtonColor$d,n=r().right+"px",s=r().bottom+"px",l=e.dragAndDrop?"grab":"pointer",d=e.iconColor??"white",m="absolute duration-200 transition "+(e.isBotOpened?"scale-100 rotate-0 opacity-100":"scale-0 -rotate-180 opacity-0");return i!==t._v$5&&(null!=(t._v$5=i)?o.style.setProperty("background-color",i):o.style.removeProperty("background-color")),n!==t._v$6&&(null!=(t._v$6=n)?o.style.setProperty("right",n):o.style.removeProperty("right")),s!==t._v$7&&(null!=(t._v$7=s)?o.style.setProperty("bottom",s):o.style.removeProperty("bottom")),l!==t._v$8&&(null!=(t._v$8=l)?o.style.setProperty("cursor",l):o.style.removeProperty("cursor")),d!==t._v$9&&(null!=(t._v$9=d)?a.style.setProperty("fill",d):a.style.removeProperty("fill")),m!==t._v$10&&setAttribute(a,"class",t._v$10=m),t}),{_v$5:void 0,_v$6:void 0,_v$7:void 0,_v$8:void 0,_v$9:void 0,_v$10:void 0}),o}})},[isMobile,setIsMobile]=(delegateEvents(["click","mousedown"]),createSignal()),_tmpl$$D=template('<figure data-testid="default-avatar"><svg width="75" height="75" viewBox="0 0 75 75" fill="none" xmlns="http://www.w3.org/2000/svg"><mask id="mask0" x="0" y="0" mask-type="alpha"><circle cx="37.5" cy="37.5" r="37.5" fill="#0042DA"></circle></mask><g mask="url(#mask0)"><rect x="-30" y="-43" width="131" height="154" fill="#0042DA"></rect><rect x="2.50413" y="120.333" width="81.5597" height="86.4577" rx="2.5" transform="rotate(-52.6423 2.50413 120.333)" stroke="#FED23D" stroke-width="5"></rect><circle cx="76.5" cy="-1.5" r="29" stroke="#FF8E20" stroke-width="5"></circle><path d="M-49.8224 22L-15.5 -40.7879L18.8224 22H-49.8224Z" stroke="#F7F8FF" stroke-width="5">'),DefaultAvatar=()=>{{const e=_tmpl$$D(),t=e.firstChild;return createRenderEffect((r=>{var o="flex justify-center items-center rounded-full text-white relative flex-shrink-0 "+(isMobile()?"w-6 h-6 text-sm":"w-10 h-10 text-xl"),a="absolute top-0 left-0 "+(isMobile()?" w-6 h-6 text-sm":"w-full h-full text-xl");return o!==r._v$&&className(e,r._v$=o),a!==r._v$2&&setAttribute(t,"class",r._v$2=a),r}),{_v$:void 0,_v$2:void 0}),e}},_tmpl$$C=template('<figure><img alt="Bot avatar" class="rounded-full object-cover w-full h-full">'),Avatar=e=>{const[t,r]=createSignal(e.initialAvatarSrc);return createEffect((()=>{t()?.startsWith("{{")&&e.initialAvatarSrc?.startsWith("http")&&r(e.initialAvatarSrc)})),createComponent(Show,{get when(){return isNotEmpty(t())},keyed:!0,get fallback(){return createComponent(DefaultAvatar,{})},get children(){const e=_tmpl$$C(),r=e.firstChild;return createRenderEffect((o=>{var a="flex justify-center items-center rounded-full text-white relative flex-shrink-0 "+(isMobile()?"w-6 h-6 text-sm":"w-10 h-10 text-xl"),i=t();return a!==o._v$&&className(e,o._v$=a),i!==o._v$2&&setAttribute(r,"src",o._v$2=i),o}),{_v$:void 0,_v$2:void 0}),e}})},_tmpl$$B=template('<div data-modal-target="defaultModal" data-modal-toggle="defaultModal" class="flex justify-start items-start animate-fade-in gap-1 host-container hover:brightness-90 active:brightness-75"><span class="px-2 py-1 whitespace-pre-wrap max-w-full chatbot-host-bubble border" data-testid="host-bubble">'),FollowUpPromptBubble=e=>{{const t=_tmpl$$B(),r=t.firstChild;return t.$$click=()=>e.onPromptClick?.(),r.style.setProperty("width","max-content"),r.style.setProperty("border-radius","15px"),r.style.setProperty("cursor","pointer"),insert(r,(()=>e.prompt)),createRenderEffect((()=>null!=(e.starterPromptFontSize?e.starterPromptFontSize+"px":"15px")?r.style.setProperty("font-size",e.starterPromptFontSize?e.starterPromptFontSize+"px":"15px"):r.style.removeProperty("font-size"))),t}},ZodParsedType=(delegateEvents(["click"]),o=util=util||{},o.assertEqual=e=>e,o.assertIs=function(e){},o.assertNever=function(e){throw new Error},o.arrayToEnum=e=>{var t={};for(const r of e)t[r]=r;return t},o.getValidEnumValues=e=>{var t={};for(const r of o.objectKeys(e).filter((t=>"number"!=typeof e[e[t]])))t[r]=e[r];return o.objectValues(t)},o.objectValues=e=>o.objectKeys(e).map((function(t){return e[t]})),o.objectKeys="function"==typeof Object.keys?e=>Object.keys(e):e=>{var t=[];for(const r in e)Object.prototype.hasOwnProperty.call(e,r)&&t.push(r);return t},o.find=(e,t)=>{for(const r of e)if(t(r))return r},o.isInteger="function"==typeof Number.isInteger?e=>Number.isInteger(e):e=>"number"==typeof e&&isFinite(e)&&Math.floor(e)===e,o.joinValues=function(e,t=" | "){return e.map((e=>"string"==typeof e?`'${e}'`:e)).join(t)},o.jsonStringifyReplacer=(e,t)=>"bigint"==typeof t?t.toString():t,(objectUtil||(objectUtil={})).mergeShapes=(e,t)=>({...e,...t}),util.arrayToEnum(["string","nan","number","integer","float","boolean","date","bigint","symbol","function","undefined","null","array","object","unknown","promise","void","never","map","set"])),getParsedType=e=>{switch(typeof e){case"undefined":return ZodParsedType.undefined;case"string":return ZodParsedType.string;case"number":return isNaN(e)?ZodParsedType.nan:ZodParsedType.number;case"boolean":return ZodParsedType.boolean;case"function":return ZodParsedType.function;case"bigint":return ZodParsedType.bigint;case"symbol":return ZodParsedType.symbol;case"object":return Array.isArray(e)?ZodParsedType.array:null===e?ZodParsedType.null:e.then&&"function"==typeof e.then&&e.catch&&"function"==typeof e.catch?ZodParsedType.promise:"undefined"!=typeof Map&&e instanceof Map?ZodParsedType.map:"undefined"!=typeof Set&&e instanceof Set?ZodParsedType.set:"undefined"!=typeof Date&&e instanceof Date?ZodParsedType.date:ZodParsedType.object;default:return ZodParsedType.unknown}},ZodIssueCode=util.arrayToEnum(["invalid_type","invalid_literal","custom","invalid_union","invalid_union_discriminator","invalid_enum_value","unrecognized_keys","invalid_arguments","invalid_return_type","invalid_date","invalid_string","too_small","too_big","invalid_intersection_types","not_multiple_of","not_finite"]),quotelessJson=e=>JSON.stringify(e,null,2).replace(/"([^"]+)":/g,"$1:");var o;class ZodError extends Error{constructor(e){super(),this.issues=[],this.addIssue=e=>{this.issues=[...this.issues,e]},this.addIssues=(e=[])=>{this.issues=[...this.issues,...e]};var t=new.target.prototype;Object.setPrototypeOf?Object.setPrototypeOf(this,t):this.__proto__=t,this.name="ZodError",this.issues=e}get errors(){return this.issues}format(e){const t=e||function(e){return e.message},r={_errors:[]},o=e=>{for(const i of e.issues)if("invalid_union"===i.code)i.unionErrors.map(o);else if("invalid_return_type"===i.code)o(i.returnTypeError);else if("invalid_arguments"===i.code)o(i.argumentsError);else if(0===i.path.length)r._errors.push(t(i));else{let e=r,o=0;for(;o<i.path.length;){var a=i.path[o];o===i.path.length-1?(e[a]=e[a]||{_errors:[]},e[a]._errors.push(t(i))):e[a]=e[a]||{_errors:[]},e=e[a],o++}}};return o(this),r}toString(){return this.message}get message(){return JSON.stringify(this.issues,util.jsonStringifyReplacer,2)}get isEmpty(){return 0===this.issues.length}flatten(e=(e=>e.message)){var t={},r=[];for(const o of this.issues)(0<o.path.length?(t[o.path[0]]=t[o.path[0]]||[],t[o.path[0]]):r).push(e(o));return{formErrors:r,fieldErrors:t}}get formErrors(){return this.flatten()}}ZodError.create=e=>new ZodError(e);const errorMap=(e,t)=>{let r;switch(e.code){case ZodIssueCode.invalid_type:r=e.received===ZodParsedType.undefined?"Required":`Expected ${e.expected}, received `+e.received;break;case ZodIssueCode.invalid_literal:r="Invalid literal value, expected "+JSON.stringify(e.expected,util.jsonStringifyReplacer);break;case ZodIssueCode.unrecognized_keys:r="Unrecognized key(s) in object: "+util.joinValues(e.keys,", ");break;case ZodIssueCode.invalid_union:r="Invalid input";break;case ZodIssueCode.invalid_union_discriminator:r="Invalid discriminator value. Expected "+util.joinValues(e.options);break;case ZodIssueCode.invalid_enum_value:r=`Invalid enum value. Expected ${util.joinValues(e.options)}, received '${e.received}'`;break;case ZodIssueCode.invalid_arguments:r="Invalid function arguments";break;case ZodIssueCode.invalid_return_type:r="Invalid function return type";break;case ZodIssueCode.invalid_date:r="Invalid date";break;case ZodIssueCode.invalid_string:"object"==typeof e.validation?"includes"in e.validation?(r=`Invalid input: must include "${e.validation.includes}"`,"number"==typeof e.validation.position&&(r=r+" at one or more positions greater than or equal to "+e.validation.position)):"startsWith"in e.validation?r=`Invalid input: must start with "${e.validation.startsWith}"`:"endsWith"in e.validation?r=`Invalid input: must end with "${e.validation.endsWith}"`:util.assertNever(e.validation):r="regex"!==e.validation?"Invalid "+e.validation:"Invalid";break;case ZodIssueCode.too_small:r="array"===e.type?`Array must contain ${e.exact?"exactly":e.inclusive?"at least":"more than"} ${e.minimum} element(s)`:"string"===e.type?`String must contain ${e.exact?"exactly":e.inclusive?"at least":"over"} ${e.minimum} character(s)`:"number"===e.type?"Number must be "+(e.exact?"exactly equal to ":e.inclusive?"greater than or equal to ":"greater than ")+e.minimum:"date"===e.type?"Date must be "+(e.exact?"exactly equal to ":e.inclusive?"greater than or equal to ":"greater than ")+new Date(Number(e.minimum)):"Invalid input";break;case ZodIssueCode.too_big:r="array"===e.type?`Array must contain ${e.exact?"exactly":e.inclusive?"at most":"less than"} ${e.maximum} element(s)`:"string"===e.type?`String must contain ${e.exact?"exactly":e.inclusive?"at most":"under"} ${e.maximum} character(s)`:"number"===e.type?`Number must be ${e.exact?"exactly":e.inclusive?"less than or equal to":"less than"} `+e.maximum:"bigint"===e.type?`BigInt must be ${e.exact?"exactly":e.inclusive?"less than or equal to":"less than"} `+e.maximum:"date"===e.type?`Date must be ${e.exact?"exactly":e.inclusive?"smaller than or equal to":"smaller than"} `+new Date(Number(e.maximum)):"Invalid input";break;case ZodIssueCode.custom:r="Invalid input";break;case ZodIssueCode.invalid_intersection_types:r="Intersection results could not be merged";break;case ZodIssueCode.not_multiple_of:r="Number must be a multiple of "+e.multipleOf;break;case ZodIssueCode.not_finite:r="Number must be finite";break;default:r=t.defaultError,util.assertNever(e)}return{message:r}};let overrideErrorMap=errorMap;function setErrorMap(e){overrideErrorMap=e}function getErrorMap(){return overrideErrorMap}const makeIssue=e=>{var{data:t,path:e,errorMaps:r,issueData:o}=e,a=(e=[...e,...o.path||[]],{...o,path:e});let i="";for(const e of r.filter((e=>!!e)).slice().reverse())i=e(a,{data:t,defaultError:i}).message;return{...o,path:e,message:o.message||i}},EMPTY_PATH=[];function addIssueToContext(e,t){t=makeIssue({issueData:t,data:e.data,path:e.path,errorMaps:[e.common.contextualErrorMap,e.schemaErrorMap,getErrorMap(),errorMap].filter((e=>!!e))}),e.common.issues.push(t)}class ParseStatus{constructor(){this.value="valid"}dirty(){"valid"===this.value&&(this.value="dirty")}abort(){"aborted"!==this.value&&(this.value="aborted")}static mergeArray(e,t){var r=[];for(const o of t){if("aborted"===o.status)return INVALID;"dirty"===o.status&&e.dirty(),r.push(o.value)}return{status:e.value,value:r}}static async mergeObjectAsync(e,t){var r=[];for(const e of t)r.push({key:await e.key,value:await e.value});return ParseStatus.mergeObjectSync(e,r)}static mergeObjectSync(e,t){var r={};for(const i of t){var{key:o,value:a}=i;if("aborted"===o.status)return INVALID;if("aborted"===a.status)return INVALID;"dirty"===o.status&&e.dirty(),"dirty"===a.status&&e.dirty(),"__proto__"===o.value||void 0===a.value&&!i.alwaysSet||(r[o.value]=a.value)}return{status:e.value,value:r}}}const INVALID=Object.freeze({status:"aborted"}),DIRTY=e=>({status:"dirty",value:e}),OK=e=>({status:"valid",value:e}),isAborted=e=>"aborted"===e.status,isDirty=e=>"dirty"===e.status,isValid=e=>"valid"===e.status,isAsync=e=>"undefined"!=typeof Promise&&e instanceof Promise;!function(e){e.errToObj=e=>"string"==typeof e?{message:e}:e||{},e.toString=e=>"string"==typeof e?e:null==e?void 0:e.message}(errorUtil=errorUtil||{});class ParseInputLazyPath{constructor(e,t,r,o){this._cachedPath=[],this.parent=e,this.data=t,this._path=r,this._key=o}get path(){return this._cachedPath.length||(this._key instanceof Array?this._cachedPath.push(...this._path,...this._key):this._cachedPath.push(...this._path,this._key)),this._cachedPath}}const handleResult=(e,t)=>{if(isValid(t))return{success:!0,data:t.value};if(e.common.issues.length)return{success:!1,get error(){var t;return this._error||(t=new ZodError(e.common.issues),this._error=t),this._error}};throw new Error("Validation failed but no issues detected.")};function processCreateParams(e){if(!e)return{};const{errorMap:t,invalid_type_error:r,required_error:o,description:a}=e;if(t&&(r||o))throw new Error('Can\'t use "invalid_type_error" or "required_error" in conjunction with custom error map.');return t?{errorMap:t,description:a}:{errorMap:(e,t)=>"invalid_type"!==e.code?{message:t.defaultError}:void 0===t.data?{message:null!=o?o:t.defaultError}:{message:null!=r?r:t.defaultError},description:a}}class ZodType{constructor(e){this.spa=this.safeParseAsync,this._def=e,this.parse=this.parse.bind(this),this.safeParse=this.safeParse.bind(this),this.parseAsync=this.parseAsync.bind(this),this.safeParseAsync=this.safeParseAsync.bind(this),this.spa=this.spa.bind(this),this.refine=this.refine.bind(this),this.refinement=this.refinement.bind(this),this.superRefine=this.superRefine.bind(this),this.optional=this.optional.bind(this),this.nullable=this.nullable.bind(this),this.nullish=this.nullish.bind(this),this.array=this.array.bind(this),this.promise=this.promise.bind(this),this.or=this.or.bind(this),this.and=this.and.bind(this),this.transform=this.transform.bind(this),this.brand=this.brand.bind(this),this.default=this.default.bind(this),this.catch=this.catch.bind(this),this.describe=this.describe.bind(this),this.pipe=this.pipe.bind(this),this.readonly=this.readonly.bind(this),this.isNullable=this.isNullable.bind(this),this.isOptional=this.isOptional.bind(this)}get description(){return this._def.description}_getType(e){return getParsedType(e.data)}_getOrReturnCtx(e,t){return t||{common:e.parent.common,data:e.data,parsedType:getParsedType(e.data),schemaErrorMap:this._def.errorMap,path:e.path,parent:e.parent}}_processInputParams(e){return{status:new ParseStatus,ctx:{common:e.parent.common,data:e.data,parsedType:getParsedType(e.data),schemaErrorMap:this._def.errorMap,path:e.path,parent:e.parent}}}_parseSync(e){if(e=this._parse(e),isAsync(e))throw new Error("Synchronous parse encountered promise.");return e}_parseAsync(e){return e=this._parse(e),Promise.resolve(e)}parse(e,t){if((e=this.safeParse(e,t)).success)return e.data;throw e.error}safeParse(e,t){var r={common:{issues:[],async:null!=(r=null==t?void 0:t.async)&&r,contextualErrorMap:null==t?void 0:t.errorMap},path:(null==t?void 0:t.path)||[],schemaErrorMap:this._def.errorMap,parent:null,data:e,parsedType:getParsedType(e)};t=this._parseSync({data:e,path:r.path,parent:r});return handleResult(r,t)}async parseAsync(e,t){if((e=await this.safeParseAsync(e,t)).success)return e.data;throw e.error}async safeParseAsync(e,t){return t={common:{issues:[],contextualErrorMap:null==t?void 0:t.errorMap,async:!0},path:(null==t?void 0:t.path)||[],schemaErrorMap:this._def.errorMap,parent:null,data:e,parsedType:getParsedType(e)},e=this._parse({data:e,path:t.path,parent:t}),e=await(isAsync(e)?e:Promise.resolve(e)),handleResult(t,e)}refine(e,t){return this._refinement(((r,o)=>{var a=e(r);const i=()=>{return o.addIssue({code:ZodIssueCode.custom,...(e=r,"string"==typeof t||void 0===t?{message:t}:"function"==typeof t?t(e):t)});var e};return"undefined"!=typeof Promise&&a instanceof Promise?a.then((e=>!!e||(i(),!1))):!!a||(i(),!1)}))}refinement(e,t){return this._refinement(((r,o)=>!!e(r)||(o.addIssue("function"==typeof t?t(r,o):t),!1)))}_refinement(e){return new ZodEffects({schema:this,typeName:ZodFirstPartyTypeKind.ZodEffects,effect:{type:"refinement",refinement:e}})}superRefine(e){return this._refinement(e)}optional(){return ZodOptional.create(this,this._def)}nullable(){return ZodNullable.create(this,this._def)}nullish(){return this.nullable().optional()}array(){return ZodArray.create(this,this._def)}promise(){return ZodPromise.create(this,this._def)}or(e){return ZodUnion.create([this,e],this._def)}and(e){return ZodIntersection.create(this,e,this._def)}transform(e){return new ZodEffects({...processCreateParams(this._def),schema:this,typeName:ZodFirstPartyTypeKind.ZodEffects,effect:{type:"transform",transform:e}})}default(e){var t="function"==typeof e?e:()=>e;return new ZodDefault({...processCreateParams(this._def),innerType:this,defaultValue:t,typeName:ZodFirstPartyTypeKind.ZodDefault})}brand(){return new ZodBranded({typeName:ZodFirstPartyTypeKind.ZodBranded,type:this,...processCreateParams(this._def)})}catch(e){var t="function"==typeof e?e:()=>e;return new ZodCatch({...processCreateParams(this._def),innerType:this,catchValue:t,typeName:ZodFirstPartyTypeKind.ZodCatch})}describe(e){return new this.constructor({...this._def,description:e})}pipe(e){return ZodPipeline.create(this,e)}readonly(){return ZodReadonly.create(this)}isOptional(){return this.safeParse(void 0).success}isNullable(){return this.safeParse(null).success}}const cuidRegex=/^c[^\s-]{8,}$/i,cuid2Regex=/^[a-z][a-z0-9]*$/,ulidRegex=/^[0-9A-HJKMNP-TV-Z]{26}$/,uuidRegex=/^[0-9a-fA-F]{8}\b-[0-9a-fA-F]{4}\b-[0-9a-fA-F]{4}\b-[0-9a-fA-F]{4}\b-[0-9a-fA-F]{12}$/i,emailRegex=/^(?!\.)(?!.*\.\.)([A-Z0-9_+-\.]*)[A-Z0-9_+-]@([A-Z0-9][A-Z0-9\-]*\.)+[A-Z]{2,}$/i,_emojiRegex="^(\\p{Extended_Pictographic}|\\p{Emoji_Component})+$";let emojiRegex;const ipv4Regex=/^(((25[0-5])|(2[0-4][0-9])|(1[0-9]{2})|([0-9]{1,2}))\.){3}((25[0-5])|(2[0-4][0-9])|(1[0-9]{2})|([0-9]{1,2}))$/,ipv6Regex=/^(([a-f0-9]{1,4}:){7}|::([a-f0-9]{1,4}:){0,6}|([a-f0-9]{1,4}:){1}:([a-f0-9]{1,4}:){0,5}|([a-f0-9]{1,4}:){2}:([a-f0-9]{1,4}:){0,4}|([a-f0-9]{1,4}:){3}:([a-f0-9]{1,4}:){0,3}|([a-f0-9]{1,4}:){4}:([a-f0-9]{1,4}:){0,2}|([a-f0-9]{1,4}:){5}:([a-f0-9]{1,4}:){0,1})([a-f0-9]{1,4}|(((25[0-5])|(2[0-4][0-9])|(1[0-9]{2})|([0-9]{1,2}))\.){3}((25[0-5])|(2[0-4][0-9])|(1[0-9]{2})|([0-9]{1,2})))$/,datetimeRegex=e=>e.precision?e.offset?new RegExp(`^\\d{4}-\\d{2}-\\d{2}T\\d{2}:\\d{2}:\\d{2}\\.\\d{${e.precision}}(([+-]\\d{2}(:?\\d{2})?)|Z)$`):new RegExp(`^\\d{4}-\\d{2}-\\d{2}T\\d{2}:\\d{2}:\\d{2}\\.\\d{${e.precision}}Z$`):0===e.precision?e.offset?new RegExp("^\\d{4}-\\d{2}-\\d{2}T\\d{2}:\\d{2}:\\d{2}(([+-]\\d{2}(:?\\d{2})?)|Z)$"):new RegExp("^\\d{4}-\\d{2}-\\d{2}T\\d{2}:\\d{2}:\\d{2}Z$"):e.offset?new RegExp("^\\d{4}-\\d{2}-\\d{2}T\\d{2}:\\d{2}:\\d{2}(\\.\\d+)?(([+-]\\d{2}(:?\\d{2})?)|Z)$"):new RegExp("^\\d{4}-\\d{2}-\\d{2}T\\d{2}:\\d{2}:\\d{2}(\\.\\d+)?Z$");function isValidIP(e,t){return!("v4"!==t&&t||!ipv4Regex.test(e))||!("v6"!==t&&t||!ipv6Regex.test(e))}class ZodString extends ZodType{_parse(e){if(this._def.coerce&&(e.data=String(e.data)),this._getType(e)!==ZodParsedType.string){const t=this._getOrReturnCtx(e);return addIssueToContext(t,{code:ZodIssueCode.invalid_type,expected:ZodParsedType.string,received:t.parsedType}),INVALID}var t=new ParseStatus;let r;for(const i of this._def.checks)if("min"===i.kind)e.data.length<i.value&&(addIssueToContext(r=this._getOrReturnCtx(e,r),{code:ZodIssueCode.too_small,minimum:i.value,type:"string",inclusive:!0,exact:!1,message:i.message}),t.dirty());else if("max"===i.kind)e.data.length>i.value&&(addIssueToContext(r=this._getOrReturnCtx(e,r),{code:ZodIssueCode.too_big,maximum:i.value,type:"string",inclusive:!0,exact:!1,message:i.message}),t.dirty());else if("length"===i.kind){var o=e.data.length>i.value,a=e.data.length<i.value;(o||a)&&(r=this._getOrReturnCtx(e,r),o?addIssueToContext(r,{code:ZodIssueCode.too_big,maximum:i.value,type:"string",inclusive:!0,exact:!0,message:i.message}):a&&addIssueToContext(r,{code:ZodIssueCode.too_small,minimum:i.value,type:"string",inclusive:!0,exact:!0,message:i.message}),t.dirty())}else if("email"===i.kind)emailRegex.test(e.data)||(addIssueToContext(r=this._getOrReturnCtx(e,r),{validation:"email",code:ZodIssueCode.invalid_string,message:i.message}),t.dirty());else if("emoji"===i.kind)(emojiRegex=emojiRegex||new RegExp(_emojiRegex,"u")).test(e.data)||(addIssueToContext(r=this._getOrReturnCtx(e,r),{validation:"emoji",code:ZodIssueCode.invalid_string,message:i.message}),t.dirty());else if("uuid"===i.kind)uuidRegex.test(e.data)||(addIssueToContext(r=this._getOrReturnCtx(e,r),{validation:"uuid",code:ZodIssueCode.invalid_string,message:i.message}),t.dirty());else if("cuid"===i.kind)cuidRegex.test(e.data)||(addIssueToContext(r=this._getOrReturnCtx(e,r),{validation:"cuid",code:ZodIssueCode.invalid_string,message:i.message}),t.dirty());else if("cuid2"===i.kind)cuid2Regex.test(e.data)||(addIssueToContext(r=this._getOrReturnCtx(e,r),{validation:"cuid2",code:ZodIssueCode.invalid_string,message:i.message}),t.dirty());else if("ulid"===i.kind)ulidRegex.test(e.data)||(addIssueToContext(r=this._getOrReturnCtx(e,r),{validation:"ulid",code:ZodIssueCode.invalid_string,message:i.message}),t.dirty());else if("url"===i.kind)try{new URL(e.data)}catch(o){addIssueToContext(r=this._getOrReturnCtx(e,r),{validation:"url",code:ZodIssueCode.invalid_string,message:i.message}),t.dirty()}else"regex"===i.kind?(i.regex.lastIndex=0,i.regex.test(e.data)||(addIssueToContext(r=this._getOrReturnCtx(e,r),{validation:"regex",code:ZodIssueCode.invalid_string,message:i.message}),t.dirty())):"trim"===i.kind?e.data=e.data.trim():"includes"===i.kind?e.data.includes(i.value,i.position)||(addIssueToContext(r=this._getOrReturnCtx(e,r),{code:ZodIssueCode.invalid_string,validation:{includes:i.value,position:i.position},message:i.message}),t.dirty()):"toLowerCase"===i.kind?e.data=e.data.toLowerCase():"toUpperCase"===i.kind?e.data=e.data.toUpperCase():"startsWith"===i.kind?e.data.startsWith(i.value)||(addIssueToContext(r=this._getOrReturnCtx(e,r),{code:ZodIssueCode.invalid_string,validation:{startsWith:i.value},message:i.message}),t.dirty()):"endsWith"===i.kind?e.data.endsWith(i.value)||(addIssueToContext(r=this._getOrReturnCtx(e,r),{code:ZodIssueCode.invalid_string,validation:{endsWith:i.value},message:i.message}),t.dirty()):"datetime"===i.kind?datetimeRegex(i).test(e.data)||(addIssueToContext(r=this._getOrReturnCtx(e,r),{code:ZodIssueCode.invalid_string,validation:"datetime",message:i.message}),t.dirty()):"ip"===i.kind?isValidIP(e.data,i.version)||(addIssueToContext(r=this._getOrReturnCtx(e,r),{validation:"ip",code:ZodIssueCode.invalid_string,message:i.message}),t.dirty()):util.assertNever(i);return{status:t.value,value:e.data}}_regex(e,t,r){return this.refinement((t=>e.test(t)),{validation:t,code:ZodIssueCode.invalid_string,...errorUtil.errToObj(r)})}_addCheck(e){return new ZodString({...this._def,checks:[...this._def.checks,e]})}email(e){return this._addCheck({kind:"email",...errorUtil.errToObj(e)})}url(e){return this._addCheck({kind:"url",...errorUtil.errToObj(e)})}emoji(e){return this._addCheck({kind:"emoji",...errorUtil.errToObj(e)})}uuid(e){return this._addCheck({kind:"uuid",...errorUtil.errToObj(e)})}cuid(e){return this._addCheck({kind:"cuid",...errorUtil.errToObj(e)})}cuid2(e){return this._addCheck({kind:"cuid2",...errorUtil.errToObj(e)})}ulid(e){return this._addCheck({kind:"ulid",...errorUtil.errToObj(e)})}ip(e){return this._addCheck({kind:"ip",...errorUtil.errToObj(e)})}datetime(e){var t;return"string"==typeof e?this._addCheck({kind:"datetime",precision:null,offset:!1,message:e}):this._addCheck({kind:"datetime",precision:void 0===(null==e?void 0:e.precision)?null:null==e?void 0:e.precision,offset:null!=(t=null==e?void 0:e.offset)&&t,...errorUtil.errToObj(null==e?void 0:e.message)})}regex(e,t){return this._addCheck({kind:"regex",regex:e,...errorUtil.errToObj(t)})}includes(e,t){return this._addCheck({kind:"includes",value:e,position:null==t?void 0:t.position,...errorUtil.errToObj(null==t?void 0:t.message)})}startsWith(e,t){return this._addCheck({kind:"startsWith",value:e,...errorUtil.errToObj(t)})}endsWith(e,t){return this._addCheck({kind:"endsWith",value:e,...errorUtil.errToObj(t)})}min(e,t){return this._addCheck({kind:"min",value:e,...errorUtil.errToObj(t)})}max(e,t){return this._addCheck({kind:"max",value:e,...errorUtil.errToObj(t)})}length(e,t){return this._addCheck({kind:"length",value:e,...errorUtil.errToObj(t)})}nonempty(e){return this.min(1,errorUtil.errToObj(e))}trim(){return new ZodString({...this._def,checks:[...this._def.checks,{kind:"trim"}]})}toLowerCase(){return new ZodString({...this._def,checks:[...this._def.checks,{kind:"toLowerCase"}]})}toUpperCase(){return new ZodString({...this._def,checks:[...this._def.checks,{kind:"toUpperCase"}]})}get isDatetime(){return!!this._def.checks.find((e=>"datetime"===e.kind))}get isEmail(){return!!this._def.checks.find((e=>"email"===e.kind))}get isURL(){return!!this._def.checks.find((e=>"url"===e.kind))}get isEmoji(){return!!this._def.checks.find((e=>"emoji"===e.kind))}get isUUID(){return!!this._def.checks.find((e=>"uuid"===e.kind))}get isCUID(){return!!this._def.checks.find((e=>"cuid"===e.kind))}get isCUID2(){return!!this._def.checks.find((e=>"cuid2"===e.kind))}get isULID(){return!!this._def.checks.find((e=>"ulid"===e.kind))}get isIP(){return!!this._def.checks.find((e=>"ip"===e.kind))}get minLength(){let e=null;for(const t of this._def.checks)"min"===t.kind&&(null===e||t.value>e)&&(e=t.value);return e}get maxLength(){let e=null;for(const t of this._def.checks)"max"===t.kind&&(null===e||t.value<e)&&(e=t.value);return e}}function floatSafeRemainder(e,t){var r=(e.toString().split(".")[1]||"").length,o=(t.toString().split(".")[1]||"").length;r=o<r?r:o;return parseInt(e.toFixed(r).replace(".",""))%parseInt(t.toFixed(r).replace(".",""))/Math.pow(10,r)}ZodString.create=e=>{var t;return new ZodString({checks:[],typeName:ZodFirstPartyTypeKind.ZodString,coerce:null!=(t=null==e?void 0:e.coerce)&&t,...processCreateParams(e)})};class ZodNumber extends ZodType{constructor(){super(...arguments),this.min=this.gte,this.max=this.lte,this.step=this.multipleOf}_parse(e){if(this._def.coerce&&(e.data=Number(e.data)),this._getType(e)!==ZodParsedType.number){const t=this._getOrReturnCtx(e);return addIssueToContext(t,{code:ZodIssueCode.invalid_type,expected:ZodParsedType.number,received:t.parsedType}),INVALID}let t;var r=new ParseStatus;for(const o of this._def.checks)"int"===o.kind?util.isInteger(e.data)||(addIssueToContext(t=this._getOrReturnCtx(e,t),{code:ZodIssueCode.invalid_type,expected:"integer",received:"float",message:o.message}),r.dirty()):"min"===o.kind?(o.inclusive?e.data<o.value:e.data<=o.value)&&(addIssueToContext(t=this._getOrReturnCtx(e,t),{code:ZodIssueCode.too_small,minimum:o.value,type:"number",inclusive:o.inclusive,exact:!1,message:o.message}),r.dirty()):"max"===o.kind?(o.inclusive?e.data>o.value:e.data>=o.value)&&(addIssueToContext(t=this._getOrReturnCtx(e,t),{code:ZodIssueCode.too_big,maximum:o.value,type:"number",inclusive:o.inclusive,exact:!1,message:o.message}),r.dirty()):"multipleOf"===o.kind?0!==floatSafeRemainder(e.data,o.value)&&(addIssueToContext(t=this._getOrReturnCtx(e,t),{code:ZodIssueCode.not_multiple_of,multipleOf:o.value,message:o.message}),r.dirty()):"finite"===o.kind?Number.isFinite(e.data)||(addIssueToContext(t=this._getOrReturnCtx(e,t),{code:ZodIssueCode.not_finite,message:o.message}),r.dirty()):util.assertNever(o);return{status:r.value,value:e.data}}gte(e,t){return this.setLimit("min",e,!0,errorUtil.toString(t))}gt(e,t){return this.setLimit("min",e,!1,errorUtil.toString(t))}lte(e,t){return this.setLimit("max",e,!0,errorUtil.toString(t))}lt(e,t){return this.setLimit("max",e,!1,errorUtil.toString(t))}setLimit(e,t,r,o){return new ZodNumber({...this._def,checks:[...this._def.checks,{kind:e,value:t,inclusive:r,message:errorUtil.toString(o)}]})}_addCheck(e){return new ZodNumber({...this._def,checks:[...this._def.checks,e]})}int(e){return this._addCheck({kind:"int",message:errorUtil.toString(e)})}positive(e){return this._addCheck({kind:"min",value:0,inclusive:!1,message:errorUtil.toString(e)})}negative(e){return this._addCheck({kind:"max",value:0,inclusive:!1,message:errorUtil.toString(e)})}nonpositive(e){return this._addCheck({kind:"max",value:0,inclusive:!0,message:errorUtil.toString(e)})}nonnegative(e){return this._addCheck({kind:"min",value:0,inclusive:!0,message:errorUtil.toString(e)})}multipleOf(e,t){return this._addCheck({kind:"multipleOf",value:e,message:errorUtil.toString(t)})}finite(e){return this._addCheck({kind:"finite",message:errorUtil.toString(e)})}safe(e){return this._addCheck({kind:"min",inclusive:!0,value:Number.MIN_SAFE_INTEGER,message:errorUtil.toString(e)})._addCheck({kind:"max",inclusive:!0,value:Number.MAX_SAFE_INTEGER,message:errorUtil.toString(e)})}get minValue(){let e=null;for(const t of this._def.checks)"min"===t.kind&&(null===e||t.value>e)&&(e=t.value);return e}get maxValue(){let e=null;for(const t of this._def.checks)"max"===t.kind&&(null===e||t.value<e)&&(e=t.value);return e}get isInt(){return!!this._def.checks.find((e=>"int"===e.kind||"multipleOf"===e.kind&&util.isInteger(e.value)))}get isFinite(){let e=null,t=null;for(const r of this._def.checks){if("finite"===r.kind||"int"===r.kind||"multipleOf"===r.kind)return!0;"min"===r.kind?(null===t||r.value>t)&&(t=r.value):"max"===r.kind&&(null===e||r.value<e)&&(e=r.value)}return Number.isFinite(t)&&Number.isFinite(e)}}ZodNumber.create=e=>new ZodNumber({checks:[],typeName:ZodFirstPartyTypeKind.ZodNumber,coerce:(null==e?void 0:e.coerce)||!1,...processCreateParams(e)});class ZodBigInt extends ZodType{constructor(){super(...arguments),this.min=this.gte,this.max=this.lte}_parse(e){if(this._def.coerce&&(e.data=BigInt(e.data)),this._getType(e)!==ZodParsedType.bigint){const t=this._getOrReturnCtx(e);return addIssueToContext(t,{code:ZodIssueCode.invalid_type,expected:ZodParsedType.bigint,received:t.parsedType}),INVALID}let t;var r=new ParseStatus;for(const o of this._def.checks)"min"===o.kind?(o.inclusive?e.data<o.value:e.data<=o.value)&&(addIssueToContext(t=this._getOrReturnCtx(e,t),{code:ZodIssueCode.too_small,type:"bigint",minimum:o.value,inclusive:o.inclusive,message:o.message}),r.dirty()):"max"===o.kind?(o.inclusive?e.data>o.value:e.data>=o.value)&&(addIssueToContext(t=this._getOrReturnCtx(e,t),{code:ZodIssueCode.too_big,type:"bigint",maximum:o.value,inclusive:o.inclusive,message:o.message}),r.dirty()):"multipleOf"===o.kind?e.data%o.value!==BigInt(0)&&(addIssueToContext(t=this._getOrReturnCtx(e,t),{code:ZodIssueCode.not_multiple_of,multipleOf:o.value,message:o.message}),r.dirty()):util.assertNever(o);return{status:r.value,value:e.data}}gte(e,t){return this.setLimit("min",e,!0,errorUtil.toString(t))}gt(e,t){return this.setLimit("min",e,!1,errorUtil.toString(t))}lte(e,t){return this.setLimit("max",e,!0,errorUtil.toString(t))}lt(e,t){return this.setLimit("max",e,!1,errorUtil.toString(t))}setLimit(e,t,r,o){return new ZodBigInt({...this._def,checks:[...this._def.checks,{kind:e,value:t,inclusive:r,message:errorUtil.toString(o)}]})}_addCheck(e){return new ZodBigInt({...this._def,checks:[...this._def.checks,e]})}positive(e){return this._addCheck({kind:"min",value:BigInt(0),inclusive:!1,message:errorUtil.toString(e)})}negative(e){return this._addCheck({kind:"max",value:BigInt(0),inclusive:!1,message:errorUtil.toString(e)})}nonpositive(e){return this._addCheck({kind:"max",value:BigInt(0),inclusive:!0,message:errorUtil.toString(e)})}nonnegative(e){return this._addCheck({kind:"min",value:BigInt(0),inclusive:!0,message:errorUtil.toString(e)})}multipleOf(e,t){return this._addCheck({kind:"multipleOf",value:e,message:errorUtil.toString(t)})}get minValue(){let e=null;for(const t of this._def.checks)"min"===t.kind&&(null===e||t.value>e)&&(e=t.value);return e}get maxValue(){let e=null;for(const t of this._def.checks)"max"===t.kind&&(null===e||t.value<e)&&(e=t.value);return e}}ZodBigInt.create=e=>{var t;return new ZodBigInt({checks:[],typeName:ZodFirstPartyTypeKind.ZodBigInt,coerce:null!=(t=null==e?void 0:e.coerce)&&t,...processCreateParams(e)})};class ZodBoolean extends ZodType{_parse(e){var t;return this._def.coerce&&(e.data=Boolean(e.data)),this._getType(e)!==ZodParsedType.boolean?(addIssueToContext(t=this._getOrReturnCtx(e),{code:ZodIssueCode.invalid_type,expected:ZodParsedType.boolean,received:t.parsedType}),INVALID):OK(e.data)}}ZodBoolean.create=e=>new ZodBoolean({typeName:ZodFirstPartyTypeKind.ZodBoolean,coerce:(null==e?void 0:e.coerce)||!1,...processCreateParams(e)});class ZodDate extends ZodType{_parse(e){if(this._def.coerce&&(e.data=new Date(e.data)),this._getType(e)!==ZodParsedType.date){const t=this._getOrReturnCtx(e);return addIssueToContext(t,{code:ZodIssueCode.invalid_type,expected:ZodParsedType.date,received:t.parsedType}),INVALID}if(isNaN(e.data.getTime())){return addIssueToContext(this._getOrReturnCtx(e),{code:ZodIssueCode.invalid_date}),INVALID}var t=new ParseStatus;let r;for(const o of this._def.checks)"min"===o.kind?e.data.getTime()<o.value&&(addIssueToContext(r=this._getOrReturnCtx(e,r),{code:ZodIssueCode.too_small,message:o.message,inclusive:!0,exact:!1,minimum:o.value,type:"date"}),t.dirty()):"max"===o.kind?e.data.getTime()>o.value&&(addIssueToContext(r=this._getOrReturnCtx(e,r),{code:ZodIssueCode.too_big,message:o.message,inclusive:!0,exact:!1,maximum:o.value,type:"date"}),t.dirty()):util.assertNever(o);return{status:t.value,value:new Date(e.data.getTime())}}_addCheck(e){return new ZodDate({...this._def,checks:[...this._def.checks,e]})}min(e,t){return this._addCheck({kind:"min",value:e.getTime(),message:errorUtil.toString(t)})}max(e,t){return this._addCheck({kind:"max",value:e.getTime(),message:errorUtil.toString(t)})}get minDate(){let e=null;for(const t of this._def.checks)"min"===t.kind&&(null===e||t.value>e)&&(e=t.value);return null!=e?new Date(e):null}get maxDate(){let e=null;for(const t of this._def.checks)"max"===t.kind&&(null===e||t.value<e)&&(e=t.value);return null!=e?new Date(e):null}}ZodDate.create=e=>new ZodDate({checks:[],coerce:(null==e?void 0:e.coerce)||!1,typeName:ZodFirstPartyTypeKind.ZodDate,...processCreateParams(e)});class ZodSymbol extends ZodType{_parse(e){var t;return this._getType(e)!==ZodParsedType.symbol?(addIssueToContext(t=this._getOrReturnCtx(e),{code:ZodIssueCode.invalid_type,expected:ZodParsedType.symbol,received:t.parsedType}),INVALID):OK(e.data)}}ZodSymbol.create=e=>new ZodSymbol({typeName:ZodFirstPartyTypeKind.ZodSymbol,...processCreateParams(e)});class ZodUndefined extends ZodType{_parse(e){var t;return this._getType(e)!==ZodParsedType.undefined?(addIssueToContext(t=this._getOrReturnCtx(e),{code:ZodIssueCode.invalid_type,expected:ZodParsedType.undefined,received:t.parsedType}),INVALID):OK(e.data)}}ZodUndefined.create=e=>new ZodUndefined({typeName:ZodFirstPartyTypeKind.ZodUndefined,...processCreateParams(e)});class ZodNull extends ZodType{_parse(e){var t;return this._getType(e)!==ZodParsedType.null?(addIssueToContext(t=this._getOrReturnCtx(e),{code:ZodIssueCode.invalid_type,expected:ZodParsedType.null,received:t.parsedType}),INVALID):OK(e.data)}}ZodNull.create=e=>new ZodNull({typeName:ZodFirstPartyTypeKind.ZodNull,...processCreateParams(e)});class ZodAny extends ZodType{constructor(){super(...arguments),this._any=!0}_parse(e){return OK(e.data)}}ZodAny.create=e=>new ZodAny({typeName:ZodFirstPartyTypeKind.ZodAny,...processCreateParams(e)});class ZodUnknown extends ZodType{constructor(){super(...arguments),this._unknown=!0}_parse(e){return OK(e.data)}}ZodUnknown.create=e=>new ZodUnknown({typeName:ZodFirstPartyTypeKind.ZodUnknown,...processCreateParams(e)});class ZodNever extends ZodType{_parse(e){return addIssueToContext(e=this._getOrReturnCtx(e),{code:ZodIssueCode.invalid_type,expected:ZodParsedType.never,received:e.parsedType}),INVALID}}ZodNever.create=e=>new ZodNever({typeName:ZodFirstPartyTypeKind.ZodNever,...processCreateParams(e)});class ZodVoid extends ZodType{_parse(e){var t;return this._getType(e)!==ZodParsedType.undefined?(addIssueToContext(t=this._getOrReturnCtx(e),{code:ZodIssueCode.invalid_type,expected:ZodParsedType.void,received:t.parsedType}),INVALID):OK(e.data)}}ZodVoid.create=e=>new ZodVoid({typeName:ZodFirstPartyTypeKind.ZodVoid,...processCreateParams(e)});class ZodArray extends ZodType{_parse(e){const{ctx:t,status:r}=this._processInputParams(e),o=this._def;var a;return t.parsedType!==ZodParsedType.array?(addIssueToContext(t,{code:ZodIssueCode.invalid_type,expected:ZodParsedType.array,received:t.parsedType}),INVALID):(null!==o.exactLength&&(e=t.data.length>o.exactLength.value,a=t.data.length<o.exactLength.value,e||a)&&(addIssueToContext(t,{code:e?ZodIssueCode.too_big:ZodIssueCode.too_small,minimum:a?o.exactLength.value:void 0,maximum:e?o.exactLength.value:void 0,type:"array",inclusive:!0,exact:!0,message:o.exactLength.message}),r.dirty()),null!==o.minLength&&t.data.length<o.minLength.value&&(addIssueToContext(t,{code:ZodIssueCode.too_small,minimum:o.minLength.value,type:"array",inclusive:!0,exact:!1,message:o.minLength.message}),r.dirty()),null!==o.maxLength&&t.data.length>o.maxLength.value&&(addIssueToContext(t,{code:ZodIssueCode.too_big,maximum:o.maxLength.value,type:"array",inclusive:!0,exact:!1,message:o.maxLength.message}),r.dirty()),t.common.async?Promise.all([...t.data].map(((e,r)=>o.type._parseAsync(new ParseInputLazyPath(t,e,t.path,r))))).then((e=>ParseStatus.mergeArray(r,e))):(a=[...t.data].map(((e,r)=>o.type._parseSync(new ParseInputLazyPath(t,e,t.path,r)))),ParseStatus.mergeArray(r,a)))}get element(){return this._def.type}min(e,t){return new ZodArray({...this._def,minLength:{value:e,message:errorUtil.toString(t)}})}max(e,t){return new ZodArray({...this._def,maxLength:{value:e,message:errorUtil.toString(t)}})}length(e,t){return new ZodArray({...this._def,exactLength:{value:e,message:errorUtil.toString(t)}})}nonempty(e){return this.min(1,e)}}function deepPartialify(e){if(e instanceof ZodObject){const r={};for(const o in e.shape){var t=e.shape[o];r[o]=ZodOptional.create(deepPartialify(t))}return new ZodObject({...e._def,shape:()=>r})}return e instanceof ZodArray?new ZodArray({...e._def,type:deepPartialify(e.element)}):e instanceof ZodOptional?ZodOptional.create(deepPartialify(e.unwrap())):e instanceof ZodNullable?ZodNullable.create(deepPartialify(e.unwrap())):e instanceof ZodTuple?ZodTuple.create(e.items.map((e=>deepPartialify(e)))):e}ZodArray.create=(e,t)=>new ZodArray({type:e,minLength:null,maxLength:null,exactLength:null,typeName:ZodFirstPartyTypeKind.ZodArray,...processCreateParams(t)});class ZodObject extends ZodType{constructor(){super(...arguments),this._cached=null,this.nonstrict=this.passthrough,this.augment=this.extend}_getCached(){var e,t;return null!==this._cached?this._cached:(e=this._def.shape(),t=util.objectKeys(e),this._cached={shape:e,keys:t})}_parse(e){if(this._getType(e)!==ZodParsedType.object){const t=this._getOrReturnCtx(e);return addIssueToContext(t,{code:ZodIssueCode.invalid_type,expected:ZodParsedType.object,received:t.parsedType}),INVALID}const{status:t,ctx:r}=this._processInputParams(e);var{shape:o,keys:a}=this._getCached(),i=[];if(!(this._def.catchall instanceof ZodNever&&"strip"===this._def.unknownKeys))for(const e in r.data)a.includes(e)||i.push(e);const n=[];for(const e of a){var s=o[e],l=r.data[e];n.push({key:{status:"valid",value:e},value:s._parse(new ParseInputLazyPath(r,l,r.path,e)),alwaysSet:e in r.data})}if(this._def.catchall instanceof ZodNever){if("passthrough"===(e=this._def.unknownKeys))for(const e of i)n.push({key:{status:"valid",value:e},value:{status:"valid",value:r.data[e]}});else if("strict"===e)0<i.length&&(addIssueToContext(r,{code:ZodIssueCode.unrecognized_keys,keys:i}),t.dirty());else if("strip"!==e)throw new Error("Internal ZodObject error: invalid unknownKeys value.")}else{var d=this._def.catchall;for(const e of i){var m=r.data[e];n.push({key:{status:"valid",value:e},value:d._parse(new ParseInputLazyPath(r,m,r.path,e)),alwaysSet:e in r.data})}}return r.common.async?Promise.resolve().then((async()=>{var e=[];for(const r of n){var t=await r.key;e.push({key:t,value:await r.value,alwaysSet:r.alwaysSet})}return e})).then((e=>ParseStatus.mergeObjectSync(t,e))):ParseStatus.mergeObjectSync(t,n)}get shape(){return this._def.shape()}strict(e){return errorUtil.errToObj,new ZodObject({...this._def,unknownKeys:"strict",...void 0!==e?{errorMap:(t,r)=>{var o,a=null!=(o=null==(o=(a=this._def).errorMap)?void 0:o.call(a,t,r).message)?o:r.defaultError;return"unrecognized_keys"===t.code?{message:null!=(o=errorUtil.errToObj(e).message)?o:a}:{message:a}}}:{}})}strip(){return new ZodObject({...this._def,unknownKeys:"strip"})}passthrough(){return new ZodObject({...this._def,unknownKeys:"passthrough"})}extend(e){return new ZodObject({...this._def,shape:()=>({...this._def.shape(),...e})})}merge(e){return new ZodObject({unknownKeys:e._def.unknownKeys,catchall:e._def.catchall,shape:()=>({...this._def.shape(),...e._def.shape()}),typeName:ZodFirstPartyTypeKind.ZodObject})}setKey(e,t){return this.augment({[e]:t})}catchall(e){return new ZodObject({...this._def,catchall:e})}pick(e){const t={};return util.objectKeys(e).forEach((r=>{e[r]&&this.shape[r]&&(t[r]=this.shape[r])})),new ZodObject({...this._def,shape:()=>t})}omit(e){const t={};return util.objectKeys(this.shape).forEach((r=>{e[r]||(t[r]=this.shape[r])})),new ZodObject({...this._def,shape:()=>t})}deepPartial(){return deepPartialify(this)}partial(e){const t={};return util.objectKeys(this.shape).forEach((r=>{var o=this.shape[r];e&&!e[r]?t[r]=o:t[r]=o.optional()})),new ZodObject({...this._def,shape:()=>t})}required(e){const t={};return util.objectKeys(this.shape).forEach((r=>{if(e&&!e[r])t[r]=this.shape[r];else{let e=this.shape[r];for(;e instanceof ZodOptional;)e=e._def.innerType;t[r]=e}})),new ZodObject({...this._def,shape:()=>t})}keyof(){return createZodEnum(util.objectKeys(this.shape))}}ZodObject.create=(e,t)=>new ZodObject({shape:()=>e,unknownKeys:"strip",catchall:ZodNever.create(),typeName:ZodFirstPartyTypeKind.ZodObject,...processCreateParams(t)}),ZodObject.strictCreate=(e,t)=>new ZodObject({shape:()=>e,unknownKeys:"strict",catchall:ZodNever.create(),typeName:ZodFirstPartyTypeKind.ZodObject,...processCreateParams(t)}),ZodObject.lazycreate=(e,t)=>new ZodObject({shape:e,unknownKeys:"strip",catchall:ZodNever.create(),typeName:ZodFirstPartyTypeKind.ZodObject,...processCreateParams(t)});class ZodUnion extends ZodType{_parse(e){const t=this._processInputParams(e).ctx;if(e=this._def.options,t.common.async)return Promise.all(e.map((async e=>{var r={...t,common:{...t.common,issues:[]},parent:null};return{result:await e._parseAsync({data:t.data,path:t.path,parent:r}),ctx:r}}))).then((function(e){for(const t of e)if("valid"===t.result.status)return t.result;for(const r of e)if("dirty"===r.result.status)return t.common.issues.push(...r.ctx.common.issues),r.result;return e=e.map((e=>new ZodError(e.ctx.common.issues))),addIssueToContext(t,{code:ZodIssueCode.invalid_union,unionErrors:e}),INVALID}));{let i;var r=[];for(const n of e){var o={...t,common:{...t.common,issues:[]},parent:null},a=n._parseSync({data:t.data,path:t.path,parent:o});if("valid"===a.status)return a;"dirty"===a.status&&(i=i||{result:a,ctx:o}),o.common.issues.length&&r.push(o.common.issues)}return i?(t.common.issues.push(...i.ctx.common.issues),i.result):(e=r.map((e=>new ZodError(e))),addIssueToContext(t,{code:ZodIssueCode.invalid_union,unionErrors:e}),INVALID)}}get options(){return this._def.options}}ZodUnion.create=(e,t)=>new ZodUnion({options:e,typeName:ZodFirstPartyTypeKind.ZodUnion,...processCreateParams(t)});const getDiscriminator=e=>e instanceof ZodLazy?getDiscriminator(e.schema):e instanceof ZodEffects?getDiscriminator(e.innerType()):e instanceof ZodLiteral?[e.value]:e instanceof ZodEnum?e.options:e instanceof ZodNativeEnum?Object.keys(e.enum):e instanceof ZodDefault?getDiscriminator(e._def.innerType):e instanceof ZodUndefined?[void 0]:e instanceof ZodNull?[null]:null;class ZodDiscriminatedUnion extends ZodType{_parse(e){var t,r;return(e=this._processInputParams(e).ctx).parsedType!==ZodParsedType.object?(addIssueToContext(e,{code:ZodIssueCode.invalid_type,expected:ZodParsedType.object,received:e.parsedType}),INVALID):(t=this.discriminator,r=e.data[t],(r=this.optionsMap.get(r))?e.common.async?r._parseAsync({data:e.data,path:e.path,parent:e}):r._parseSync({data:e.data,path:e.path,parent:e}):(addIssueToContext(e,{code:ZodIssueCode.invalid_union_discriminator,options:Array.from(this.optionsMap.keys()),path:[t]}),INVALID))}get discriminator(){return this._def.discriminator}get options(){return this._def.options}get optionsMap(){return this._def.optionsMap}static create(e,t,r){var o=new Map;for(const r of t){var a=getDiscriminator(r.shape[e]);if(!a)throw new Error(`A discriminator value for key \`${e}\` could not be extracted from all schema options`);for(const t of a){if(o.has(t))throw new Error(`Discriminator property ${String(e)} has duplicate value `+String(t));o.set(t,r)}}return new ZodDiscriminatedUnion({typeName:ZodFirstPartyTypeKind.ZodDiscriminatedUnion,discriminator:e,options:t,optionsMap:o,...processCreateParams(r)})}}function mergeValues(e,t){var r=getParsedType(e),o=getParsedType(t);if(e===t)return{valid:!0,data:e};if(r===ZodParsedType.object&&o===ZodParsedType.object){const r=util.objectKeys(t);var a=util.objectKeys(e).filter((e=>-1!==r.indexOf(e))),i={...e,...t};for(const r of a){var n=mergeValues(e[r],t[r]);if(!n.valid)return{valid:!1};i[r]=n.data}return{valid:!0,data:i}}if(r!==ZodParsedType.array||o!==ZodParsedType.array)return r===ZodParsedType.date&&o===ZodParsedType.date&&+e==+t?{valid:!0,data:e}:{valid:!1};if(e.length!==t.length)return{valid:!1};var s=[];for(let r=0;r<e.length;r++){var l=mergeValues(e[r],t[r]);if(!l.valid)return{valid:!1};s.push(l.data)}return{valid:!0,data:s}}class ZodIntersection extends ZodType{_parse(e){const{status:t,ctx:r}=this._processInputParams(e),o=(e,o)=>{var a;return isAborted(e)||isAborted(o)?INVALID:(a=mergeValues(e.value,o.value)).valid?((isDirty(e)||isDirty(o))&&t.dirty(),{status:t.value,value:a.data}):(addIssueToContext(r,{code:ZodIssueCode.invalid_intersection_types}),INVALID)};return r.common.async?Promise.all([this._def.left._parseAsync({data:r.data,path:r.path,parent:r}),this._def.right._parseAsync({data:r.data,path:r.path,parent:r})]).then((([e,t])=>o(e,t))):o(this._def.left._parseSync({data:r.data,path:r.path,parent:r}),this._def.right._parseSync({data:r.data,path:r.path,parent:r}))}}ZodIntersection.create=(e,t,r)=>new ZodIntersection({left:e,right:t,typeName:ZodFirstPartyTypeKind.ZodIntersection,...processCreateParams(r)});class ZodTuple extends ZodType{_parse(e){const{status:t,ctx:r}=this._processInputParams(e);return r.parsedType!==ZodParsedType.array?(addIssueToContext(r,{code:ZodIssueCode.invalid_type,expected:ZodParsedType.array,received:r.parsedType}),INVALID):r.data.length<this._def.items.length?(addIssueToContext(r,{code:ZodIssueCode.too_small,minimum:this._def.items.length,inclusive:!0,exact:!1,type:"array"}),INVALID):(!this._def.rest&&r.data.length>this._def.items.length&&(addIssueToContext(r,{code:ZodIssueCode.too_big,maximum:this._def.items.length,inclusive:!0,exact:!1,type:"array"}),t.dirty()),e=[...r.data].map(((e,t)=>{var o=this._def.items[t]||this._def.rest;return o?o._parse(new ParseInputLazyPath(r,e,r.path,t)):null})).filter((e=>!!e)),r.common.async?Promise.all(e).then((e=>ParseStatus.mergeArray(t,e))):ParseStatus.mergeArray(t,e))}get items(){return this._def.items}rest(e){return new ZodTuple({...this._def,rest:e})}}ZodTuple.create=(e,t)=>{if(Array.isArray(e))return new ZodTuple({items:e,typeName:ZodFirstPartyTypeKind.ZodTuple,rest:null,...processCreateParams(t)});throw new Error("You must pass an array of schemas to z.tuple([ ... ])")};class ZodRecord extends ZodType{get keySchema(){return this._def.keyType}get valueSchema(){return this._def.valueType}_parse(e){var{status:e,ctx:t}=this._processInputParams(e);if(t.parsedType!==ZodParsedType.object)return addIssueToContext(t,{code:ZodIssueCode.invalid_type,expected:ZodParsedType.object,received:t.parsedType}),INVALID;var r=[],o=this._def.keyType,a=this._def.valueType;for(const e in t.data)r.push({key:o._parse(new ParseInputLazyPath(t,e,t.path,e)),value:a._parse(new ParseInputLazyPath(t,t.data[e],t.path,e))});return t.common.async?ParseStatus.mergeObjectAsync(e,r):ParseStatus.mergeObjectSync(e,r)}get element(){return this._def.valueType}static create(e,t,r){return new ZodRecord(t instanceof ZodType?{keyType:e,valueType:t,typeName:ZodFirstPartyTypeKind.ZodRecord,...processCreateParams(r)}:{keyType:ZodString.create(),valueType:e,typeName:ZodFirstPartyTypeKind.ZodRecord,...processCreateParams(t)})}}class ZodMap extends ZodType{get keySchema(){return this._def.keyType}get valueSchema(){return this._def.valueType}_parse(e){const{status:t,ctx:r}=this._processInputParams(e);if(r.parsedType!==ZodParsedType.map)return addIssueToContext(r,{code:ZodIssueCode.invalid_type,expected:ZodParsedType.map,received:r.parsedType}),INVALID;const o=this._def.keyType,a=this._def.valueType,i=[...r.data.entries()].map((([e,t],i)=>({key:o._parse(new ParseInputLazyPath(r,e,r.path,[i,"key"])),value:a._parse(new ParseInputLazyPath(r,t,r.path,[i,"value"]))})));if(r.common.async){const e=new Map;return Promise.resolve().then((async()=>{for(const a of i){var r=await a.key,o=await a.value;if("aborted"===r.status||"aborted"===o.status)return INVALID;"dirty"!==r.status&&"dirty"!==o.status||t.dirty(),e.set(r.value,o.value)}return{status:t.value,value:e}}))}var n=new Map;for(const e of i){var s=e.key,l=e.value;if("aborted"===s.status||"aborted"===l.status)return INVALID;"dirty"!==s.status&&"dirty"!==l.status||t.dirty(),n.set(s.value,l.value)}return{status:t.value,value:n}}}ZodMap.create=(e,t,r)=>new ZodMap({valueType:t,keyType:e,typeName:ZodFirstPartyTypeKind.ZodMap,...processCreateParams(r)});class ZodSet extends ZodType{_parse(e){const{status:t,ctx:r}=this._processInputParams(e);if(r.parsedType!==ZodParsedType.set)return addIssueToContext(r,{code:ZodIssueCode.invalid_type,expected:ZodParsedType.set,received:r.parsedType}),INVALID;null!==(e=this._def).minSize&&r.data.size<e.minSize.value&&(addIssueToContext(r,{code:ZodIssueCode.too_small,minimum:e.minSize.value,type:"set",inclusive:!0,exact:!1,message:e.minSize.message}),t.dirty()),null!==e.maxSize&&r.data.size>e.maxSize.value&&(addIssueToContext(r,{code:ZodIssueCode.too_big,maximum:e.maxSize.value,type:"set",inclusive:!0,exact:!1,message:e.maxSize.message}),t.dirty());const o=this._def.valueType;function a(e){var r=new Set;for(const o of e){if("aborted"===o.status)return INVALID;"dirty"===o.status&&t.dirty(),r.add(o.value)}return{status:t.value,value:r}}return e=[...r.data.values()].map(((e,t)=>o._parse(new ParseInputLazyPath(r,e,r.path,t)))),r.common.async?Promise.all(e).then((e=>a(e))):a(e)}min(e,t){return new ZodSet({...this._def,minSize:{value:e,message:errorUtil.toString(t)}})}max(e,t){return new ZodSet({...this._def,maxSize:{value:e,message:errorUtil.toString(t)}})}size(e,t){return this.min(e,t).max(e,t)}nonempty(e){return this.min(1,e)}}ZodSet.create=(e,t)=>new ZodSet({valueType:e,minSize:null,maxSize:null,typeName:ZodFirstPartyTypeKind.ZodSet,...processCreateParams(t)});class ZodFunction extends ZodType{constructor(){super(...arguments),this.validate=this.implement}_parse(e){const t=this._processInputParams(e).ctx;if(t.parsedType!==ZodParsedType.function)return addIssueToContext(t,{code:ZodIssueCode.invalid_type,expected:ZodParsedType.function,received:t.parsedType}),INVALID;function r(e,r){return makeIssue({data:e,path:t.path,errorMaps:[t.common.contextualErrorMap,t.schemaErrorMap,getErrorMap(),errorMap].filter((e=>!!e)),issueData:{code:ZodIssueCode.invalid_arguments,argumentsError:r}})}function o(e,r){return makeIssue({data:e,path:t.path,errorMaps:[t.common.contextualErrorMap,t.schemaErrorMap,getErrorMap(),errorMap].filter((e=>!!e)),issueData:{code:ZodIssueCode.invalid_return_type,returnTypeError:r}})}const a={errorMap:t.common.contextualErrorMap},i=t.data;if(this._def.returns instanceof ZodPromise){const e=this;return OK((async function(...t){const n=new ZodError([]);var s=await e._def.args.parseAsync(t,a).catch((e=>{throw n.addIssue(r(t,e)),n}));const l=await Reflect.apply(i,this,s);return await e._def.returns._def.type.parseAsync(l,a).catch((e=>{throw n.addIssue(o(l,e)),n}))}))}{const e=this;return OK((function(...t){var n=e._def.args.safeParse(t,a);if(!n.success)throw new ZodError([r(t,n.error)]);if(t=Reflect.apply(i,this,n.data),(n=e._def.returns.safeParse(t,a)).success)return n.data;throw new ZodError([o(t,n.error)])}))}}parameters(){return this._def.args}returnType(){return this._def.returns}args(...e){return new ZodFunction({...this._def,args:ZodTuple.create(e).rest(ZodUnknown.create())})}returns(e){return new ZodFunction({...this._def,returns:e})}implement(e){return this.parse(e)}strictImplement(e){return this.parse(e)}static create(e,t,r){return new ZodFunction({args:e||ZodTuple.create([]).rest(ZodUnknown.create()),returns:t||ZodUnknown.create(),typeName:ZodFirstPartyTypeKind.ZodFunction,...processCreateParams(r)})}}class ZodLazy extends ZodType{get schema(){return this._def.getter()}_parse(e){return e=this._processInputParams(e).ctx,this._def.getter()._parse({data:e.data,path:e.path,parent:e})}}ZodLazy.create=(e,t)=>new ZodLazy({getter:e,typeName:ZodFirstPartyTypeKind.ZodLazy,...processCreateParams(t)});class ZodLiteral extends ZodType{_parse(e){var t;return e.data!==this._def.value?(addIssueToContext(t=this._getOrReturnCtx(e),{received:t.data,code:ZodIssueCode.invalid_literal,expected:this._def.value}),INVALID):{status:"valid",value:e.data}}get value(){return this._def.value}}function createZodEnum(e,t){return new ZodEnum({values:e,typeName:ZodFirstPartyTypeKind.ZodEnum,...processCreateParams(t)})}ZodLiteral.create=(e,t)=>new ZodLiteral({value:e,typeName:ZodFirstPartyTypeKind.ZodLiteral,...processCreateParams(t)});class ZodEnum extends ZodType{_parse(e){var t,r;return"string"!=typeof e.data?(r=this._getOrReturnCtx(e),t=this._def.values,addIssueToContext(r,{expected:util.joinValues(t),received:r.parsedType,code:ZodIssueCode.invalid_type}),INVALID):-1===this._def.values.indexOf(e.data)?(t=this._getOrReturnCtx(e),r=this._def.values,addIssueToContext(t,{received:t.data,code:ZodIssueCode.invalid_enum_value,options:r}),INVALID):OK(e.data)}get options(){return this._def.values}get enum(){var e={};for(const t of this._def.values)e[t]=t;return e}get Values(){var e={};for(const t of this._def.values)e[t]=t;return e}get Enum(){var e={};for(const t of this._def.values)e[t]=t;return e}extract(e){return ZodEnum.create(e)}exclude(e){return ZodEnum.create(this.options.filter((t=>!e.includes(t))))}}ZodEnum.create=createZodEnum;class ZodNativeEnum extends ZodType{_parse(e){var t,r=util.getValidEnumValues(this._def.values),o=this._getOrReturnCtx(e);return o.parsedType!==ZodParsedType.string&&o.parsedType!==ZodParsedType.number?(t=util.objectValues(r),addIssueToContext(o,{expected:util.joinValues(t),received:o.parsedType,code:ZodIssueCode.invalid_type}),INVALID):-1===r.indexOf(e.data)?(t=util.objectValues(r),addIssueToContext(o,{received:o.data,code:ZodIssueCode.invalid_enum_value,options:t}),INVALID):OK(e.data)}get enum(){return this._def.values}}ZodNativeEnum.create=(e,t)=>new ZodNativeEnum({values:e,typeName:ZodFirstPartyTypeKind.ZodNativeEnum,...processCreateParams(t)});class ZodPromise extends ZodType{unwrap(){return this._def.type}_parse(e){const t=this._processInputParams(e).ctx;return t.parsedType!==ZodParsedType.promise&&!1===t.common.async?(addIssueToContext(t,{code:ZodIssueCode.invalid_type,expected:ZodParsedType.promise,received:t.parsedType}),INVALID):(e=t.parsedType===ZodParsedType.promise?t.data:Promise.resolve(t.data),OK(e.then((e=>this._def.type.parseAsync(e,{path:t.path,errorMap:t.common.contextualErrorMap})))))}}ZodPromise.create=(e,t)=>new ZodPromise({type:e,typeName:ZodFirstPartyTypeKind.ZodPromise,...processCreateParams(t)});class ZodEffects extends ZodType{innerType(){return this._def.schema}sourceType(){return this._def.schema._def.typeName===ZodFirstPartyTypeKind.ZodEffects?this._def.schema.sourceType():this._def.schema}_parse(e){const{status:t,ctx:r}=this._processInputParams(e),o=this._def.effect||null,a={addIssue:e=>{addIssueToContext(r,e),e.fatal?t.abort():t.dirty()},get path(){return r.path}};if(a.addIssue=a.addIssue.bind(a),"preprocess"===o.type)return e=o.transform(r.data,a),r.common.issues.length?{status:"dirty",value:r.data}:r.common.async?Promise.resolve(e).then((e=>this._def.schema._parseAsync({data:e,path:r.path,parent:r}))):this._def.schema._parseSync({data:e,path:r.path,parent:r});if("refinement"===o.type){const i=e=>{var t=o.refinement(e,a);if(r.common.async)return Promise.resolve(t);if(t instanceof Promise)throw new Error("Async refinement encountered during synchronous parse operation. Use .parseAsync instead.");return e};return!1===r.common.async?"aborted"===(e=this._def.schema._parseSync({data:r.data,path:r.path,parent:r})).status?INVALID:("dirty"===e.status&&t.dirty(),i(e.value),{status:t.value,value:e.value}):this._def.schema._parseAsync({data:r.data,path:r.path,parent:r}).then((e=>"aborted"===e.status?INVALID:("dirty"===e.status&&t.dirty(),i(e.value).then((()=>({status:t.value,value:e.value}))))))}if("transform"===o.type){if(!1!==r.common.async)return this._def.schema._parseAsync({data:r.data,path:r.path,parent:r}).then((e=>isValid(e)?Promise.resolve(o.transform(e.value,a)).then((e=>({status:t.value,value:e}))):e));if(e=this._def.schema._parseSync({data:r.data,path:r.path,parent:r}),!isValid(e))return e;if((e=o.transform(e.value,a))instanceof Promise)throw new Error("Asynchronous transform encountered during synchronous parse operation. Use .parseAsync instead.");return{status:t.value,value:e}}util.assertNever(o)}}ZodEffects.create=(e,t,r)=>new ZodEffects({schema:e,typeName:ZodFirstPartyTypeKind.ZodEffects,effect:t,...processCreateParams(r)}),ZodEffects.createWithPreprocess=(e,t,r)=>new ZodEffects({schema:t,effect:{type:"preprocess",transform:e},typeName:ZodFirstPartyTypeKind.ZodEffects,...processCreateParams(r)});class ZodOptional extends ZodType{_parse(e){return this._getType(e)===ZodParsedType.undefined?OK(void 0):this._def.innerType._parse(e)}unwrap(){return this._def.innerType}}ZodOptional.create=(e,t)=>new ZodOptional({innerType:e,typeName:ZodFirstPartyTypeKind.ZodOptional,...processCreateParams(t)});class ZodNullable extends ZodType{_parse(e){return this._getType(e)===ZodParsedType.null?OK(null):this._def.innerType._parse(e)}unwrap(){return this._def.innerType}}ZodNullable.create=(e,t)=>new ZodNullable({innerType:e,typeName:ZodFirstPartyTypeKind.ZodNullable,...processCreateParams(t)});class ZodDefault extends ZodType{_parse(e){let t=(e=this._processInputParams(e).ctx).data;return e.parsedType===ZodParsedType.undefined&&(t=this._def.defaultValue()),this._def.innerType._parse({data:t,path:e.path,parent:e})}removeDefault(){return this._def.innerType}}ZodDefault.create=(e,t)=>new ZodDefault({innerType:e,typeName:ZodFirstPartyTypeKind.ZodDefault,defaultValue:"function"==typeof t.default?t.default:()=>t.default,...processCreateParams(t)});class ZodCatch extends ZodType{_parse(e){e=this._processInputParams(e).ctx;const t={...e,common:{...e.common,issues:[]}};return e=this._def.innerType._parse({data:t.data,path:t.path,parent:{...t}}),isAsync(e)?e.then((e=>({status:"valid",value:"valid"===e.status?e.value:this._def.catchValue({get error(){return new ZodError(t.common.issues)},input:t.data})}))):{status:"valid",value:"valid"===e.status?e.value:this._def.catchValue({get error(){return new ZodError(t.common.issues)},input:t.data})}}removeCatch(){return this._def.innerType}}ZodCatch.create=(e,t)=>new ZodCatch({innerType:e,typeName:ZodFirstPartyTypeKind.ZodCatch,catchValue:"function"==typeof t.catch?t.catch:()=>t.catch,...processCreateParams(t)});class ZodNaN extends ZodType{_parse(e){var t;return this._getType(e)!==ZodParsedType.nan?(addIssueToContext(t=this._getOrReturnCtx(e),{code:ZodIssueCode.invalid_type,expected:ZodParsedType.nan,received:t.parsedType}),INVALID):{status:"valid",value:e.data}}}ZodNaN.create=e=>new ZodNaN({typeName:ZodFirstPartyTypeKind.ZodNaN,...processCreateParams(e)});const BRAND=Symbol("zod_brand");class ZodBranded extends ZodType{_parse(e){var t=(e=this._processInputParams(e).ctx).data;return this._def.type._parse({data:t,path:e.path,parent:e})}unwrap(){return this._def.type}}class ZodPipeline extends ZodType{_parse(e){const{status:t,ctx:r}=this._processInputParams(e);return r.common.async?(async()=>{var e=await this._def.in._parseAsync({data:r.data,path:r.path,parent:r});return"aborted"===e.status?INVALID:"dirty"===e.status?(t.dirty(),DIRTY(e.value)):this._def.out._parseAsync({data:e.value,path:r.path,parent:r})})():"aborted"===(e=this._def.in._parseSync({data:r.data,path:r.path,parent:r})).status?INVALID:"dirty"===e.status?(t.dirty(),{status:"dirty",value:e.value}):this._def.out._parseSync({data:e.value,path:r.path,parent:r})}static create(e,t){return new ZodPipeline({in:e,out:t,typeName:ZodFirstPartyTypeKind.ZodPipeline})}}class ZodReadonly extends ZodType{_parse(e){return e=this._def.innerType._parse(e),isValid(e)&&(e.value=Object.freeze(e.value)),e}}ZodReadonly.create=(e,t)=>new ZodReadonly({innerType:e,typeName:ZodFirstPartyTypeKind.ZodReadonly,...processCreateParams(t)});const custom=(e,t={},r)=>e?ZodAny.create().superRefine(((o,a)=>{var i;e(o)||(i=null==(i=null!=(i=(o="function"==typeof t?t(o):"string"==typeof t?{message:t}:t).fatal)?i:r)||i,a.addIssue({code:"custom",..."string"==typeof o?{message:o}:o,fatal:i}))})):ZodAny.create(),late={object:ZodObject.lazycreate},instanceOfType=(function(e){e.ZodString="ZodString",e.ZodNumber="ZodNumber",e.ZodNaN="ZodNaN",e.ZodBigInt="ZodBigInt",e.ZodBoolean="ZodBoolean",e.ZodDate="ZodDate",e.ZodSymbol="ZodSymbol",e.ZodUndefined="ZodUndefined",e.ZodNull="ZodNull",e.ZodAny="ZodAny",e.ZodUnknown="ZodUnknown",e.ZodNever="ZodNever",e.ZodVoid="ZodVoid",e.ZodArray="ZodArray",e.ZodObject="ZodObject",e.ZodUnion="ZodUnion",e.ZodDiscriminatedUnion="ZodDiscriminatedUnion",e.ZodIntersection="ZodIntersection",e.ZodTuple="ZodTuple",e.ZodRecord="ZodRecord",e.ZodMap="ZodMap",e.ZodSet="ZodSet",e.ZodFunction="ZodFunction",e.ZodLazy="ZodLazy",e.ZodLiteral="ZodLiteral",e.ZodEnum="ZodEnum",e.ZodEffects="ZodEffects",e.ZodNativeEnum="ZodNativeEnum",e.ZodOptional="ZodOptional",e.ZodNullable="ZodNullable",e.ZodDefault="ZodDefault",e.ZodCatch="ZodCatch",e.ZodPromise="ZodPromise",e.ZodBranded="ZodBranded",e.ZodPipeline="ZodPipeline",e.ZodReadonly="ZodReadonly"}(ZodFirstPartyTypeKind=ZodFirstPartyTypeKind||{}),(e,t={message:"Input not instance of "+e.name})=>custom((t=>t instanceof e),t)),stringType=ZodString.create,numberType=ZodNumber.create,nanType=ZodNaN.create,bigIntType=ZodBigInt.create,booleanType=ZodBoolean.create,dateType=ZodDate.create,symbolType=ZodSymbol.create,undefinedType=ZodUndefined.create,nullType=ZodNull.create,anyType=ZodAny.create,unknownType=ZodUnknown.create,neverType=ZodNever.create,voidType=ZodVoid.create,arrayType=ZodArray.create,objectType=ZodObject.create,strictObjectType=ZodObject.strictCreate,unionType=ZodUnion.create,discriminatedUnionType=ZodDiscriminatedUnion.create,intersectionType=ZodIntersection.create,tupleType=ZodTuple.create,recordType=ZodRecord.create,mapType=ZodMap.create,setType=ZodSet.create,functionType=ZodFunction.create,lazyType=ZodLazy.create,literalType=ZodLiteral.create,enumType=ZodEnum.create,nativeEnumType=ZodNativeEnum.create,promiseType=ZodPromise.create,effectsType=ZodEffects.create,optionalType=ZodOptional.create,nullableType=ZodNullable.create,preprocessType=ZodEffects.createWithPreprocess,pipelineType=ZodPipeline.create,ostring=()=>stringType().optional(),onumber=()=>numberType().optional(),oboolean=()=>booleanType().optional(),coerce={string:e=>ZodString.create({...e,coerce:!0}),number:e=>ZodNumber.create({...e,coerce:!0}),boolean:e=>ZodBoolean.create({...e,coerce:!0}),bigint:e=>ZodBigInt.create({...e,coerce:!0}),date:e=>ZodDate.create({...e,coerce:!0})},NEVER=INVALID;var z=Object.freeze({__proto__:null,defaultErrorMap:errorMap,setErrorMap:setErrorMap,getErrorMap:getErrorMap,makeIssue:makeIssue,EMPTY_PATH:EMPTY_PATH,addIssueToContext:addIssueToContext,ParseStatus:ParseStatus,INVALID:INVALID,DIRTY:DIRTY,OK:OK,isAborted:isAborted,isDirty:isDirty,isValid:isValid,isAsync:isAsync,get util(){return util},get objectUtil(){return objectUtil},ZodParsedType:ZodParsedType,getParsedType:getParsedType,ZodType:ZodType,ZodString:ZodString,ZodNumber:ZodNumber,ZodBigInt:ZodBigInt,ZodBoolean:ZodBoolean,ZodDate:ZodDate,ZodSymbol:ZodSymbol,ZodUndefined:ZodUndefined,ZodNull:ZodNull,ZodAny:ZodAny,ZodUnknown:ZodUnknown,ZodNever:ZodNever,ZodVoid:ZodVoid,ZodArray:ZodArray,ZodObject:ZodObject,ZodUnion:ZodUnion,ZodDiscriminatedUnion:ZodDiscriminatedUnion,ZodIntersection:ZodIntersection,ZodTuple:ZodTuple,ZodRecord:ZodRecord,ZodMap:ZodMap,ZodSet:ZodSet,ZodFunction:ZodFunction,ZodLazy:ZodLazy,ZodLiteral:ZodLiteral,ZodEnum:ZodEnum,ZodNativeEnum:ZodNativeEnum,ZodPromise:ZodPromise,ZodEffects:ZodEffects,ZodTransformer:ZodEffects,ZodOptional:ZodOptional,ZodNullable:ZodNullable,ZodDefault:ZodDefault,ZodCatch:ZodCatch,ZodNaN:ZodNaN,BRAND:BRAND,ZodBranded:ZodBranded,ZodPipeline:ZodPipeline,ZodReadonly:ZodReadonly,custom:custom,Schema:ZodType,ZodSchema:ZodType,late:late,get ZodFirstPartyTypeKind(){return ZodFirstPartyTypeKind},coerce:coerce,any:anyType,array:arrayType,bigint:bigIntType,boolean:booleanType,date:dateType,discriminatedUnion:discriminatedUnionType,effect:effectsType,enum:enumType,function:functionType,instanceof:instanceOfType,intersection:intersectionType,lazy:lazyType,literal:literalType,map:mapType,nan:nanType,nativeEnum:nativeEnumType,never:neverType,null:nullType,nullable:nullableType,number:numberType,object:objectType,oboolean:oboolean,onumber:onumber,optional:optionalType,ostring:ostring,pipeline:pipelineType,preprocess:preprocessType,promise:promiseType,record:recordType,set:setType,strictObject:strictObjectType,string:stringType,symbol:symbolType,transformer:effectsType,tuple:tupleType,undefined:undefinedType,union:unionType,unknown:unknownType,void:voidType,NEVER:NEVER,ZodIssueCode:ZodIssueCode,quotelessJson:quotelessJson,ZodError:ZodError}),TokenType;const getUserFromLocalStorage=()=>{var e=localStorage?.getItem("dataLogin");if(e)try{return(JSON?.parse(e)).accessToken}catch(e){console.error("Error parsing user data from localStorage:",e)}return null},sendFeedbackQuery=({chatflowid:e,apiHost:t="http://localhost:3000",body:r,onRequest:o})=>sendRequest({method:"POST",url:t+"/api/v1/feedback/"+e,body:r,onRequest:o,headers:{Authorization:"Bearer "+getUserFromLocalStorage()}}),getFeedbackByMessageId=({messageId:e,apiHost:t="http://localhost:3000",onRequest:r})=>sendRequest({method:"GET",url:t+"/api/v1/feedback/message-id/"+e,onRequest:r,headers:{Authorization:"Bearer "+getUserFromLocalStorage()}}),sendMessageQuery=({chatflowid:e,apiHost:t="http://localhost:3000",body:r,onRequest:o})=>sendRequest({method:"POST",url:t+"/api/v1/prediction/"+e,body:r,onRequest:o,headers:{Authorization:"Bearer "+getUserFromLocalStorage()}}),createAttachmentWithFormData=({chatflowid:e,apiHost:t="http://localhost:3000",formData:r,onRequest:o})=>sendRequest({method:"POST",url:t+`/api/v1/attachments/${e}/`+r.get("chatId"),formData:r,headers:{"Content-Type":"multipart/form-data",Authorization:"Bearer "+getUserFromLocalStorage()},onRequest:o}),upsertVectorStoreWithFormData=({chatflowid:e,apiHost:t="http://localhost:3000",formData:r,onRequest:o})=>sendRequest({method:"POST",url:t+"/api/v1/vector/upsert/"+e,formData:r,headers:{"Content-Type":"multipart/form-data",Authorization:"Bearer "+getUserFromLocalStorage()},onRequest:o}),getChatbotConfig=({chatflowid:e,apiHost:t="http://localhost:3000",onRequest:r})=>sendRequest({method:"GET",url:t+"/api/v1/public-chatbotConfig/"+e,onRequest:r,headers:{Authorization:"Bearer "+getUserFromLocalStorage()}}),isStreamAvailableQuery=({chatflowid:e,apiHost:t="http://localhost:3000",onRequest:r})=>sendRequest({method:"GET",url:t+"/api/v1/chatflows-streaming/"+e,onRequest:r,headers:{Authorization:"Bearer "+getUserFromLocalStorage()}}),sendFileDownloadQuery=({apiHost:e="http://localhost:3000",body:t,onRequest:r})=>sendRequest({method:"POST",url:e+"/api/v1/openai-assistants-file/download",body:t,type:"blob",onRequest:r,headers:{Authorization:"Bearer "+getUserFromLocalStorage()}}),addLeadQuery=({apiHost:e="http://localhost:3000",body:t,onRequest:r})=>sendRequest({method:"POST",url:e+"/api/v1/leads/",body:t,onRequest:r,headers:{Authorization:"Bearer "+getUserFromLocalStorage()}}),searchFaqsQuery=async({chatflowid:e,apiHost:t="http://localhost:3000",query:r,onRequest:o})=>sendRequest({method:"GET",url:t+`/api/v1/faq/search/${e}?query=`+r,onRequest:o,headers:{Authorization:"Bearer "+getUserFromLocalStorage()}}),vectorSearchFaqsQuery=async({chatflowid:e,apiHost:t="http://localhost:3000",query:r,onRequest:o})=>sendRequest({method:"GET",url:t+`/api/v1/faq/vectorsearch/${e}?query=`+r,onRequest:o,headers:{Authorization:"Bearer "+getUserFromLocalStorage()}}),getFileContent=async({apiHost:e="https://s3-explorer.cmcts1.studio.ai.vn",path:t,onRequest:r})=>sendRequest({method:"GET",url:e+"/api/read-text?path="+t,onRequest:r,headers:{Authorization:"Bearer "+getUserFromLocalStorage()}}),_tmpl$$A=template('<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><path d="M17 14V2"></path><path d="M9 18.12 10 14H4.17a2 2 0 0 1-1.92-2.56l2.33-8A2 2 0 0 1 6.5 2H20a2 2 0 0 1 2 2v8a2 2 0 0 1-2 2h-2.76a2 2 0 0 0-1.79 1.11L12 22h0a3.13 3.13 0 0 1-3-3.88Z">'),defaultButtonColor$c="#E74864",ThumbsDownIcon=e=>{return spread$1(t=_tmpl$$A(),mergeProps({get class(){return"icon icon-tabler icon-tabler-thumbs-down w-6 h-6 "+(e.class||"")},get fill(){return e.filled?e.color??defaultButtonColor$c:"none"},get stroke(){return e.color??defaultButtonColor$c}},e),!0,!0),t;var t},_tmpl$$z=template('<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><path d="M7 10v12"></path><path d="M15 5.88 14 10h5.83a2 2 0 0 1 1.92 2.56l-2.33 8A2 2 0 0 1 17.5 22H4a2 2 0 0 1-2-2v-8a2 2 0 0 1 2-2h2.76a2 2 0 0 0 1.79-1.11L12 2h0a3.13 3.13 0 0 1 3 3.88Z">'),defaultButtonColor$b="#3B81F6",ThumbsUpIcon=e=>{return spread$1(t=_tmpl$$z(),mergeProps({get class(){return"icon icon-tabler icon-tabler-thumbs-up w-6 h-6 "+(e.class||"")},get fill(){return e.filled?e.color??defaultButtonColor$b:"none"},get stroke(){return e.color??defaultButtonColor$b}},e),!0,!0),t;var t},_tmpl$$y=template('<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><path d="M21 12v7a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2V5a2 2 0 0 1 2-2h7"></path><line x1="16" x2="22" y1="5" y2="5"></line><line x1="19" x2="19" y1="2" y2="8"></line><circle cx="9" cy="9" r="2"></circle><path d="m21 15-3.086-3.086a2 2 0 0 0-2.828 0L6 21">'),defaultButtonColor$a="#3B81F6",AddImageIcon=e=>{return spread$1(t=_tmpl$$y(),mergeProps({get stroke(){return e.color??defaultButtonColor$a}},e),!0,!0),t;var t},_tmpl$$x=template('<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><circle cx="12" cy="12" r="10"></circle><circle cx="12" cy="12" r="1">'),defaultButtonColor$9="#3B81F6",CircleDotIcon=e=>{{const t=_tmpl$$x();return createRenderEffect((()=>setAttribute(t,"stroke",e.color??defaultButtonColor$9))),t}},_tmpl$$w=template('<svg xmlns="http://www.w3.org/2000/svg" class="icon icon-tabler icon-tabler-refresh" width="24" height="24" viewBox="0 0 24 24" stroke-width="2" fill="none" stroke-linecap="round" stroke-linejoin="round"><path stroke="none" d="M0 0h24v24H0z" fill="none"></path><path d="M20 11a8.1 8.1 0 0 0 -15.5 -2m-.5 -4v4h4"></path><path d="M4 13a8.1 8.1 0 0 0 15.5 2m.5 4v-4h-4">'),defaultButtonColor$8="#3B81F6",DeleteIcon=e=>{{const t=_tmpl$$w();return createRenderEffect((()=>setAttribute(t,"stroke",e.color??defaultButtonColor$8))),t}},_tmpl$$v=template('<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 512 512" width="19px"><path d="M476.59 227.05l-.16-.07L49.35 49.84A23.56 23.56 0 0027.14 52 24.65 24.65 0 0016 72.59v113.29a24 24 0 0019.52 23.57l232.93 43.07a4 4 0 010 7.86L35.53 303.45A24 24 0 0016 327v113.31A23.57 23.57 0 0026.59 460a23.94 23.94 0 0013.22 4 24.55 24.55 0 009.52-1.93L476.4 285.94l.19-.09a32 32 0 000-58.8z">'),defaultButtonColor$7="#3B81F6",SendIcon=e=>{return spread$1(t=_tmpl$$v(),mergeProps({get style(){return{fill:e.color??defaultButtonColor$7}}},e),!0,!0),t;var t},_tmpl$$u=template('<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><path d="M3 6h18"></path><path d="M19 6v14c0 1-1 2-2 2H7c-1 0-2-1-2-2V6"></path><path d="M8 6V4c0-1 1-2 2-2h4c1 0 2 1 2 2v2"></path><line x1="10" x2="10" y1="11" y2="17"></line><line x1="14" x2="14" y1="11" y2="17">'),defaultButtonColor$6="#3B81F6",TrashIcon=e=>{{const t=_tmpl$$u();return createRenderEffect((()=>setAttribute(t,"stroke",e.color??defaultButtonColor$6))),t}},_tmpl$$t=template('<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><path d="M18 6 6 18"></path><path d="m6 6 12 12">'),defaultButtonColor$5="#3B81F6",XIcon=e=>{{const t=_tmpl$$t();return createRenderEffect((()=>setAttribute(t,"stroke",e.isCurrentColor?"currentColor":e.color??defaultButtonColor$5))),t}},_tmpl$$s=template('<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="3" stroke-linecap="round" stroke-linejoin="round" class="flex-shrink-0"><polyline points="20 6 9 17 4 12">'),TickIcon=()=>_tmpl$$s(),_tmpl$$r=template('<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><path stroke="none" d="M0 0h24v24H0z" fill="none"></path><path d="M15 7l-6.5 6.5a1.5 1.5 0 0 0 3 3l6.5 -6.5a3 3 0 0 0 -6 -6l-6.5 6.5a4.5 4.5 0 0 0 9 9l6.5 -6.5">'),defaultButtonColor$4="#3B81F6",AttachmentIcon=e=>{{const t=_tmpl$$r();return createRenderEffect((r=>{var o=e.class,a=e.color??defaultButtonColor$4;return o!==r._v$&&setAttribute(t,"class",r._v$=o),a!==r._v$2&&setAttribute(t,"stroke",r._v$2=a),r}),{_v$:void 0,_v$2:void 0}),t}},_tmpl$$q=template('<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><path stroke="none" d="M0 0h24v24H0z" fill="none"></path><path d="M16 18a2 2 0 0 1 2 2a2 2 0 0 1 2 -2a2 2 0 0 1 -2 -2a2 2 0 0 1 -2 2zm0 -12a2 2 0 0 1 2 2a2 2 0 0 1 2 -2a2 2 0 0 1 -2 -2a2 2 0 0 1 -2 2zm-7 12a6 6 0 0 1 6 -6a6 6 0 0 1 -6 -6a6 6 0 0 1 -6 6a6 6 0 0 1 6 6z">'),defaultButtonColor$3="#3B81F6",SparklesIcon=e=>{return spread$1(t=_tmpl$$q(),mergeProps({get stroke(){return e.color??defaultButtonColor$3}},e),!0,!0),t;var t},_tmpl$$p=template('<svg xmlns="http://www.w3.org/2000/svg" class="icon icon-tabler icon-tabler-arrows-maximize" width="24" height="24" viewBox="0 0 24 24" stroke-width="2" fill="none" stroke-linecap="round" stroke-linejoin="round"><path stroke="none" d="M0 0h24v24H0z" fill="none"></path><polyline points="16,4 20,4 20,8"></polyline><line x1="14" y1="10" x2="20" y2="4"></line><polyline points="8,20 4,20 4,16"></polyline><line x1="4" y1="20" x2="10" y2="14"></line><polyline points="16,20 20,20 20,16"></polyline><line x1="14" y1="14" x2="20" y2="20"></line><polyline points="8,4 4,4 4,8"></polyline><line x1="10" y1="10" x2="4" y2="4">'),defaultButtonColor$2="#3B81F6",FullScreenIcon=e=>{return spread$1(t=_tmpl$$p(),mergeProps({get stroke(){return e.color??defaultButtonColor$2}},e),!0,!0),t;var t},_tmpl$$o=template('<button type="submit">'),_tmpl$2$h=template('<button type="button">'),_tmpl$3$a=template('<svg><circle class="opacity-25" cx="12" cy="12" r="10" stroke="currentColor" stroke-width="4"></circle><path class="opacity-75" fill="currentColor" d="M4 12a8 8 0 018-8V0C5.373 0 0 5.373 0 12h4zm2 5.291A7.962 7.962 0 014 12H0c0 3.042 1.135 5.824 3 7.938l3-2.647z">'),SendButton=e=>{return spread$1(t=_tmpl$$o(),mergeProps({get disabled(){return e.isDisabled||e.isLoading}},e,{get class(){return"py-2 px-4 justify-center font-semibold text-white focus:outline-none flex items-center disabled:opacity-50 disabled:cursor-not-allowed disabled:brightness-100 transition-all filter hover:brightness-90 active:brightness-75 chatbot-button "+e.class},style:{background:"transparent",border:"none"}}),!1,!0),insert(t,createComponent(Show,{get when(){return!e.isLoading},get fallback(){return createComponent(Spinner$2,{class:"text-white"})},get children(){return createComponent(SendIcon,{get color(){return e.sendButtonColor},get class(){return"send-icon flex "+(e.disableIcon?"hidden":"")}})}})),t;var t},DeleteButton=e=>{var t;const r=null!==document.querySelector("flowise-fullchatbot")?"px-4":"pr-12";return spread$1(t=_tmpl$$o(),mergeProps({get disabled(){return e.isDisabled||e.isLoading}},e,{get class(){return`py-2 ${r} justify-center font-semibold text-white focus:outline-none flex items-center disabled:opacity-50 disabled:cursor-not-allowed disabled:brightness-100 transition-all filter hover:brightness-90 active:brightness-75 chatbot-button `+e.class},style:{background:"transparent",border:"none"},title:"Reset Chat"}),!1,!0),insert(t,createComponent(Show,{get when(){return!e.isLoading},get fallback(){return createComponent(Spinner$2,{class:"text-white"})},get children(){return createComponent(DeleteIcon,{get color(){return e.sendButtonColor},get class(){return"send-icon flex "+(e.disableIcon?"hidden":"")}})}})),t},FullScreenButton=e=>{var t;const r=null!==document.querySelector("flowise-fullchatbot")?"px-4":"pr-2";return spread$1(t=_tmpl$2$h(),mergeProps({get disabled(){return e.isDisabled||e.isLoading}},e,{get class(){return`py-2 ${r} justify-center font-semibold text-white focus:outline-none flex items-center disabled:opacity-50 disabled:cursor-not-allowed disabled:brightness-100 transition-all filter hover:brightness-90 active:brightness-75 chatbot-button `+e.class},style:{background:"transparent",border:"none"},title:"Full Screen Chat"}),!1,!0),insert(t,createComponent(Show,{get when(){return!e.isLoading},get fallback(){return createComponent(Spinner$2,{class:"text-white"})},get children(){return createComponent(FullScreenIcon,{get color(){return e.sendButtonColor},get class(){return"send-icon flex "+(e.disableIcon?"hidden":"")}})}})),t},Spinner$2=e=>{return spread$1(t=_tmpl$3$a(),mergeProps(e,{get class(){return"animate-spin -ml-1 mr-3 h-5 w-5 "+e.class},xmlns:"http://www.w3.org/2000/svg",fill:"none",viewBox:"0 0 24 24","data-testid":"loading-spinner"}),!0,!0),t;var t},_tmpl$$n=template('<div class="flex items-center"><div class="w-2 h-2 mr-1 rounded-full bubble1"></div><div class="w-2 h-2 mr-1 rounded-full bubble2"></div><div class="w-2 h-2 rounded-full bubble3">'),TypingBubble=()=>_tmpl$$n(),_tmpl$2$g=template('<span class="flex items-center gap-2">Saving...'),_tmpl$3$9=template("<span>Submit"),SaveLeadFallback=()=>{return t=(e=_tmpl$2$g()).firstChild,insert(e,createComponent(Spinner$2,{class:"text-white"}),t),e;var e,t},SaveLeadButton=e=>createComponent(SendButton,mergeProps({get sendButtonColor(){return e.buttonColor},type:"submit",get isDisabled(){return e.isDisabled||e.isLoading},class:"m-0 h-14 flex items-center justify-center"},e,{get children(){return createComponent(Show,{get when(){return!e.isLoading},get fallback(){return createComponent(SaveLeadFallback,{})},get children(){var e=_tmpl$3$9();return e.style.setProperty("font-family","Poppins, sans-serif"),e}})}})),_tmpl$$m=template('<div class="flex flex-row justify-start mb-2 items-start host-container"><div class="px-4 py-2 ml-2 max-w-full chatbot-host-bubble prose" data-testid="host-bubble">'),_tmpl$2$f=template('<div class="flex flex-col gap-2"><span>'),_tmpl$3$8=template('<form class="flex flex-col gap-2"><span></span><div class="flex flex-col gap-2 w-full"><div class="flex items-center justify-end gap-1">'),_tmpl$4$7=template('<div class="w-full flex flex-col items-start justify-start gap-1"><div class="w-full flex items-center justify-between chatbot-input border border-[#eeeeee]"><input class="focus:outline-none bg-transparent px-4 py-4 flex-1 w-full h-full min-h-[56px] max-h-[128px] text-input disabled:opacity-50 disabled:cursor-not-allowed disabled:brightness-100 " placeholder="Name" name="name">'),_tmpl$5$7=template('<span class="text-sm text-red-500">'),_tmpl$6$5=template('<div class="w-full flex flex-col items-start justify-start gap-1"><div class="w-full flex items-center justify-between chatbot-input border border-[#eeeeee]"><input class="focus:outline-none bg-transparent px-4 py-4 flex-1 w-full h-full min-h-[56px] max-h-[128px] text-input disabled:opacity-50 disabled:cursor-not-allowed disabled:brightness-100 " type="email" placeholder="Email Address" name="email">'),_tmpl$7$2=template('<div class="w-full flex flex-col items-start justify-start gap-1"><div class="w-full flex items-center justify-between chatbot-input border border-[#eeeeee]"><input class="focus:outline-none bg-transparent px-4 py-4 flex-1 w-full h-full min-h-[56px] max-h-[128px] text-input disabled:opacity-50 disabled:cursor-not-allowed disabled:brightness-100 " type="number" placeholder="Phone Number" name="phone">'),defaultBackgroundColor$5="#f7f8ff",defaultTextColor$7="#303235",defaultFontSize$3=16,phoneRegex=new RegExp(/^([+]?[\s0-9]+)?(\d{3}|[(]?[0-9]+[)])?([-]?[\s]?[0-9])+$/),LeadCaptureSchema=z.object({name:z.string().min(2,"Name is too short").optional(),email:z.string().email("Please provide a valid email").optional(),phone:z.string().min(5,"Phone number is too short").regex(phoneRegex,"Invalid Number!").optional()}),LeadCaptureBubble=e=>{const[t,r]=createSignal(""),[o,a]=createSignal(""),[i,n]=createSignal(""),[s,l]=createSignal(!1),[d,m]=createSignal(),c=async r=>{r.preventDefault(),l(!0);var a;r=Object.fromEntries(new FormData(r.currentTarget));(r=LeadCaptureSchema.safeParse(r)).success?(a={chatflowid:e.chatflowid,chatId:e.chatId,name:t(),email:o(),phone:i()},(await addLeadQuery({apiHost:e.apiHost,body:a})).data&&(setLocalStorageChatflow(e.chatflowid,e.chatId,{lead:{name:t(),email:o(),phone:i()}}),e.setIsLeadSaved(!0),e.setLeadEmail(o()))):(a=r.error.flatten(),m(a.fieldErrors)),l(!1)};{const l=_tmpl$$m(),m=l.firstChild;return l.style.setProperty("margin-right","50px"),insert(l,createComponent(Show,{get when(){return e.showAvatar},get children(){return createComponent(Avatar,{get initialAvatarSrc(){return e.avatarSrc}})}}),m),m.style.setProperty("border-radius","6px"),insert(m,(()=>{const l=memo((()=>!(!e.isLeadSaved&&!getLocalStorageChatflow(e.chatflowid)?.lead)));return()=>{return l()?((h=(u=_tmpl$2$f()).firstChild).style.setProperty("white-space","pre-line"),insert(h,(()=>e.leadsConfig?.successMessage||"Thank you for submitting your contact information.")),u):(g=(m=(u=(h=_tmpl$3$8()).firstChild).nextSibling).firstChild,h.addEventListener("submit",c),u.style.setProperty("white-space","pre-line"),insert(u,(()=>e.leadsConfig?.title||"Let us know where we can reach you:")),insert(m,(()=>{const o=memo((()=>!!e.leadsConfig?.name));return()=>o()&&(()=>{const e=_tmpl$4$7(),o=e.firstChild.firstChild;return o.addEventListener("change",(e=>r(e.currentTarget.value))),o.style.setProperty("width","100%"),insert(e,(()=>{const e=memo((()=>!(!d()||!d()?.name)));return()=>{return e()&&(insert(t=_tmpl$5$7(),(()=>d()?.name[0])),t);var t}})(),null),createRenderEffect((()=>o.value=t())),e})()})(),g),insert(m,(()=>{const t=memo((()=>!!e.leadsConfig?.email));return()=>t()&&(()=>{const e=_tmpl$6$5(),t=e.firstChild.firstChild;return t.addEventListener("change",(e=>a(e.currentTarget.value))),t.style.setProperty("width","100%"),insert(e,(()=>{const e=memo((()=>!(!d()||!d()?.email)));return()=>{return e()&&(insert(t=_tmpl$5$7(),(()=>d()?.email[0])),t);var t}})(),null),createRenderEffect((()=>t.value=o())),e})()})(),g),insert(m,(()=>{const t=memo((()=>!!e.leadsConfig?.phone));return()=>t()&&(()=>{const e=_tmpl$7$2(),t=e.firstChild.firstChild;return t.addEventListener("change",(e=>n(e.target.value))),t.style.setProperty("width","100%"),insert(e,(()=>{const e=memo((()=>!(!d()||!d()?.phone)));return()=>{return e()&&(insert(t=_tmpl$5$7(),(()=>d()?.phone[0])),t);var t}})(),null),createRenderEffect((()=>t.value=i())),e})()})(),g),insert(g,createComponent(SaveLeadButton,{get buttonColor(){return e.sendButtonColor},get isLoading(){return s()}})),h);var m,g,u,h}})()),createRenderEffect((t=>{var r=e.backgroundColor??defaultBackgroundColor$5,o=e.textColor??defaultTextColor$7,a=e.fontSize?e.fontSize+"px":defaultFontSize$3+"px";return r!==t._v$&&(null!=(t._v$=r)?m.style.setProperty("background-color",r):m.style.removeProperty("background-color")),o!==t._v$2&&(null!=(t._v$2=o)?m.style.setProperty("color",o):m.style.removeProperty("color")),a!==t._v$3&&(null!=(t._v$3=a)?m.style.setProperty("font-size",a):m.style.removeProperty("font-size")),t}),{_v$:void 0,_v$2:void 0,_v$3:void 0}),l}},_tmpl$$l=template('<div class="relative inline-block"><div><span>'),_tmpl$2$e=template('<button class="absolute top-0 left-0 right-0 bottom-0 bg-transparent hover:bg-transparent flex items-center justify-center" title="Remove attachment">'),_tmpl$3$7=template('<div class="absolute inset-0 bg-[rgba(0,0,0,0.4)] flex items-center justify-center z-10 rounded-md"><div class="spinner border-4 border-gray-200 border-t-4 border-t-white rounded-full w-6 h-6 animate-spin">'),FilePreview=e=>{const[t,r]=createSignal(!1),o=()=>{e.disabled||r(!0)},a=()=>{e.disabled||r(!1)};{const r=_tmpl$$l(),i=r.firstChild,n=i.firstChild;return r.addEventListener("mouseleave",a),r.addEventListener("mouseenter",o),insert(i,createComponent(AttachmentIcon,{color:"#303235",get class(){return"transition-filter duration-300 "+(t()?"blur-[2px]":"blur-none")}}),n),insert(n,(()=>e.item.name)),insert(r,(()=>{const r=memo((()=>!(!t()||e.disabled)));return()=>r()&&(()=>{const t=_tmpl$2$e();return t.$$click=()=>e.onDelete(e.item),insert(t,createComponent(TrashIcon,{color:"white"})),createRenderEffect((()=>t.disabled=e.disabled)),t})()})(),null),insert(r,(()=>{const t=memo((()=>!!e.disabled));return()=>t()&&_tmpl$3$7()})(),null),createRenderEffect((e=>{var r=`inline-flex items-center h-12 max-w-max p-2 flex-none transition-opacity duration-300 ${t(),"opacity-100"} ${t()?"bg-[rgba(0,0,0,0.3)]":"bg-[transparent]"} border border-gray-300 rounded-md`,o="ml-1.5 'text-inherit transition-filter duration-300 "+(t()?"blur-[2px]":"blur-none");return r!==e._v$&&className(i,e._v$=r),o!==e._v$2&&className(n,e._v$2=o),e}),{_v$:void 0,_v$2:void 0}),r}};delegateEvents(["click"]);class ExtendRegexp{source;flags;constructor(e,t=""){this.source=e.source,this.flags=t}setGroup(e,t){let r="string"==typeof t?t:t.source;return r=r.replace(/(^|[^\[])\^/g,"$1"),this.source=this.source.replace(e,r),this}getRegexp(){return new RegExp(this.source,this.flags)}}const escapeTest=/[&<>"']/,escapeReplace=/[&<>"']/g,replacements={"&":"&","<":"<",">":">",'"':""","'":"'"},escapeTestNoEncode=/[<>"']|&(?!#?\w+;)/,escapeReplaceNoEncode=/[<>"']|&(?!#?\w+;)/g;function escape$1(e,t){if(t){if(escapeTest.test(e))return e.replace(escapeReplace,(e=>replacements[e]))}else if(escapeTestNoEncode.test(e))return e.replace(escapeReplaceNoEncode,(e=>replacements[e]));return e}function unescape$1(e){return e.replace(/&(#(?:\d+)|(?:#x[0-9A-Fa-f]+)|(?:\w+));?/gi,(function(e,t){return"colon"===(t=t.toLowerCase())?":":"#"===t.charAt(0)?"x"===t.charAt(1)?String.fromCharCode(parseInt(t.substring(2),16)):String.fromCharCode(+t.substring(1)):""}))}!function(e){e[e.space=1]="space",e[e.text=2]="text",e[e.paragraph=3]="paragraph",e[e.heading=4]="heading",e[e.listStart=5]="listStart",e[e.listEnd=6]="listEnd",e[e.looseItemStart=7]="looseItemStart",e[e.looseItemEnd=8]="looseItemEnd",e[e.listItemStart=9]="listItemStart",e[e.listItemEnd=10]="listItemEnd",e[e.blockquoteStart=11]="blockquoteStart",e[e.blockquoteEnd=12]="blockquoteEnd",e[e.code=13]="code",e[e.table=14]="table",e[e.html=15]="html",e[e.hr=16]="hr"}(TokenType=TokenType||{});class MarkedOptions{gfm=!0;tables=!0;breaks=!1;pedantic=!1;sanitize=!1;sanitizer;mangle=!0;smartLists=!1;silent=!1;highlight;langPrefix="lang-";smartypants=!1;headerPrefix="";renderer;xhtml=!1;escape=escape$1;unescape=unescape$1;isNoP}class Renderer{options;constructor(e){this.options=e||Marked.options}code(e,t,r,o){this.options.highlight&&null!=(a=this.options.highlight(e,t))&&a!==e&&(r=!0,e=a);var a=r?e:this.options.escape(e,!0);return t?`\n<pre><code class="${this.options.langPrefix+this.options.escape(t,!0)}">${a}\n</code></pre>\n`:`\n<pre><code>${a}\n</code></pre>\n`}blockquote(e){return`<blockquote>\n${e}</blockquote>\n`}html(e){return e}heading(e,t,r){return`<h${t} id="${this.options.headerPrefix+r.toLowerCase().replace(/[^\w]+/g,"-")}">${e}</h${t}>\n`}hr(){return this.options.xhtml?"<hr/>\n":"<hr>\n"}list(e,t){return`\n<${t=t?"ol":"ul"}>\n${e}</${t}>\n`}listitem(e){return"<li>"+e+"</li>\n"}paragraph(e){return"<p>"+e+"</p>\n"}table(e,t){return`\n<table>\n<thead>\n${e}</thead>\n<tbody>\n${t}</tbody>\n</table>\n`}tablerow(e){return"<tr>\n"+e+"</tr>\n"}tablecell(e,t){var r=t.header?"th":"td";return(t.align?"<"+r+' style="text-align:'+t.align+'">':"<"+r+">")+e+"</"+r+">\n"}strong(e){return"<strong>"+e+"</strong>"}em(e){return"<em>"+e+"</em>"}codespan(e){return"<code>"+e+"</code>"}br(){return this.options.xhtml?"<br/>":"<br>"}del(e){return"<del>"+e+"</del>"}link(e,t,r){if(this.options.sanitize){let o;try{o=decodeURIComponent(this.options.unescape(e)).replace(/[^\w:]/g,"").toLowerCase()}catch(t){return r}if(0===o.indexOf("javascript:")||0===o.indexOf("vbscript:")||0===o.indexOf("data:"))return r}let o='<a href="'+e+'"';return t&&(o+=' title="'+t+'"'),o+">"+r+"</a>"}image(e,t,r){let o='<img src="'+e+'" alt="'+r+'"';return t&&(o+=' title="'+t+'"'),o+(this.options.xhtml?"/>":">")}text(e){return e}}class InlineLexer{staticThis;links;options;static rulesBase=null;static rulesPedantic=null;static rulesGfm=null;static rulesBreaks=null;rules;renderer;inLink;hasRulesGfm;ruleCallbacks;constructor(e,t,r=Marked.options,o){if(this.staticThis=e,this.links=t,this.options=r,this.renderer=o||this.options.renderer||new Renderer(this.options),!this.links)throw new Error("InlineLexer requires 'links' parameter.");this.setRules()}static output(e,t,r){return new this(this,t,r).output(e)}static getRulesBase(){var e;return this.rulesBase||((e={escape:/^\\([\\`*{}\[\]()#+\-.!_>])/,autolink:/^<([^ <>]+(@|:\/)[^ <>]+)>/,tag:/^<!--[\s\S]*?-->|^<\/?\w+(?:"[^"]*"|'[^']*'|[^<'">])*?>/,link:/^!?\[(inside)\]\(href\)/,reflink:/^!?\[(inside)\]\s*\[([^\]]*)\]/,nolink:/^!?\[((?:\[[^\]]*\]|[^\[\]])*)\]/,strong:/^__([\s\S]+?)__(?!_)|^\*\*([\s\S]+?)\*\*(?!\*)/,em:/^\b_((?:[^_]|__)+?)_\b|^\*((?:\*\*|[\s\S])+?)\*(?!\*)/,code:/^(`+)([\s\S]*?[^`])\1(?!`)/,br:/^ {2,}\n(?!\s*$)/,text:/^[\s\S]+?(?=[\\<!\[_*`]| {2,}\n|$)/,_inside:/(?:\[[^\]]*\]|[^\[\]]|\](?=[^\[]*\]))*/,_href:/\s*<?([\s\S]*?)>?(?:\s+['"]([\s\S]*?)['"])?\s*/}).link=new ExtendRegexp(e.link).setGroup("inside",e._inside).setGroup("href",e._href).getRegexp(),e.reflink=new ExtendRegexp(e.reflink).setGroup("inside",e._inside).getRegexp(),this.rulesBase=e)}static getRulesPedantic(){return this.rulesPedantic||(this.rulesPedantic={...this.getRulesBase(),strong:/^__(?=\S)([\s\S]*?\S)__(?!_)|^\*\*(?=\S)([\s\S]*?\S)\*\*(?!\*)/,em:/^_(?=\S)([\s\S]*?\S)_(?!_)|^\*(?=\S)([\s\S]*?\S)\*(?!\*)/})}static getRulesGfm(){var e,t,r;return this.rulesGfm||(e=this.getRulesBase(),t=new ExtendRegexp(e.escape).setGroup("])","~|])").getRegexp(),r=new ExtendRegexp(e.text).setGroup("]|","~]|").setGroup("|","|https?://|").getRegexp(),this.rulesGfm={...e,escape:t,url:/^(https?:\/\/[^\s<]+[^<.,:;"')\]\s])/,del:/^~~(?=\S)([\s\S]*?\S)~~/,text:r})}static getRulesBreaks(){var e,t;return this.rulesBreaks||(e=this.getRulesGfm(),t=this.getRulesGfm(),this.rulesBreaks={...t,br:new ExtendRegexp(e.br).setGroup("{2,}","*").getRegexp(),text:new ExtendRegexp(t.text).setGroup("{2,}","*").getRegexp()})}setRules(){this.options.gfm?this.options.breaks?this.rules=this.staticThis.getRulesBreaks():this.rules=this.staticThis.getRulesGfm():this.options.pedantic?this.rules=this.staticThis.getRulesPedantic():this.rules=this.staticThis.getRulesBase(),this.hasRulesGfm=void 0!==this.rules.url}output(e){let t,r="";for(;e;)if(t=this.rules.escape.exec(e))e=e.substring(t[0].length),r+=t[1];else if(t=this.rules.autolink.exec(e)){let o,a;e=e.substring(t[0].length),a="@"===t[2]?(o=this.options.escape(":"===t[1].charAt(6)?this.mangle(t[1].substring(7)):this.mangle(t[1])),this.mangle("mailto:")+o):o=this.options.escape(t[1]),r+=this.renderer.link(a,null,o)}else if(!this.inLink&&this.hasRulesGfm&&(t=this.rules.url.exec(e))){e=e.substring(t[0].length);var o=this.options.escape(t[1]);r+=this.renderer.link(o,null,o)}else if(t=this.rules.tag.exec(e))!this.inLink&&/^<a /i.test(t[0])?this.inLink=!0:this.inLink&&/^<\/a>/i.test(t[0])&&(this.inLink=!1),e=e.substring(t[0].length),r+=this.options.sanitize?this.options.sanitizer?this.options.sanitizer(t[0]):this.options.escape(t[0]):t[0];else if(t=this.rules.link.exec(e))e=e.substring(t[0].length),this.inLink=!0,r+=this.outputLink(t,{href:t[2],title:t[3]}),this.inLink=!1;else if(t=(t=this.rules.reflink.exec(e))||this.rules.nolink.exec(e)){e=e.substring(t[0].length);o=(t[2]||t[1]).replace(/\s+/g," ");var a=this.links[o.toLowerCase()];a&&a.href?(this.inLink=!0,r+=this.outputLink(t,a),this.inLink=!1):(r+=t[0].charAt(0),e=t[0].substring(1)+e)}else if(t=this.rules.strong.exec(e))e=e.substring(t[0].length),r+=this.renderer.strong(this.output(t[2]||t[1]));else if(t=this.rules.em.exec(e))e=e.substring(t[0].length),r+=this.renderer.em(this.output(t[2]||t[1]));else if(t=this.rules.code.exec(e))e=e.substring(t[0].length),r+=this.renderer.codespan(this.options.escape(t[2].trim(),!0));else if(t=this.rules.br.exec(e))e=e.substring(t[0].length),r+=this.renderer.br();else if(this.hasRulesGfm&&(t=this.rules.del.exec(e)))e=e.substring(t[0].length),r+=this.renderer.del(this.output(t[1]));else if(t=this.rules.text.exec(e))e=e.substring(t[0].length),r+=this.renderer.text(this.options.escape(this.smartypants(t[0])));else if(e)throw new Error("Infinite loop on byte: "+e.charCodeAt(0));return r}outputLink(e,t){var r=this.options.escape(t.href);t=t.title?this.options.escape(t.title):null;return"!"!==e[0].charAt(0)?this.renderer.link(r,t,this.output(e[1])):this.renderer.image(r,t,this.options.escape(e[1]))}smartypants(e){return this.options.smartypants?e.replace(/---/g,"—").replace(/--/g,"–").replace(/(^|[-\u2014/([{"\s])'/g,"$1‘").replace(/'/g,"’").replace(/(^|[-\u2014/([{\u2018\s])"/g,"$1“").replace(/"/g,"”").replace(/\.{3}/g,"…"):e}mangle(e){if(!this.options.mangle)return e;let t="";var r=e.length;for(let o=0;o<r;o++){let r;.5<Math.random()&&(r="x"+e.charCodeAt(o).toString(16)),t+="&#"+r+";"}return t}}class Parser{simpleRenderers=[];tokens;token;inlineLexer;options;renderer;line=0;constructor(e){this.tokens=[],this.token=null,this.options=e||Marked.options,this.renderer=this.options.renderer||new Renderer(this.options)}static parse(e,t,r){return new this(r).parse(t,e)}parse(e,t){this.inlineLexer=new InlineLexer(InlineLexer,e,this.options,this.renderer),this.tokens=t.reverse();let r="";for(;this.next();)r+=this.tok();return r}debug(e,t){this.inlineLexer=new InlineLexer(InlineLexer,e,this.options,this.renderer),this.tokens=t.reverse();let r="";for(;this.next();){var o=this.tok();this.token.line=this.line+=o.split("\n").length-1,r+=o}return r}next(){return this.token=this.tokens.pop()}getNextElement(){return this.tokens[this.tokens.length-1]}parseText(){let e=this.token.text;for(var t;(t=this.getNextElement())&&t.type==TokenType.text;)e+="\n"+this.next().text;return this.inlineLexer.output(e)}tok(){switch(this.token.type){case TokenType.space:return"";case TokenType.paragraph:return this.renderer.paragraph(this.inlineLexer.output(this.token.text));case TokenType.text:return this.options.isNoP?this.parseText():this.renderer.paragraph(this.parseText());case TokenType.heading:return this.renderer.heading(this.inlineLexer.output(this.token.text),this.token.depth,this.token.text);case TokenType.listStart:{let t="";for(var e=this.token.ordered;this.next().type!=TokenType.listEnd;)t+=this.tok();return this.renderer.list(t,e)}case TokenType.listItemStart:{let e="";for(;this.next().type!=TokenType.listItemEnd;)e+=this.token.type==TokenType.text?this.parseText():this.tok();return this.renderer.listitem(e)}case TokenType.looseItemStart:{let e="";for(;this.next().type!=TokenType.listItemEnd;)e+=this.tok();return this.renderer.listitem(e)}case TokenType.code:return this.renderer.code(this.token.text,this.token.lang,this.token.escaped,this.token.meta);case TokenType.table:{e="";let o,a="";o="";for(let e=0;e<this.token.header.length;e++){var t={header:!0,align:this.token.align[e]},r=this.inlineLexer.output(this.token.header[e]);o+=this.renderer.tablecell(r,t)}e+=this.renderer.tablerow(o);for(const e of this.token.cells){o="";for(let t=0;t<e.length;t++)o+=this.renderer.tablecell(this.inlineLexer.output(e[t]),{header:!1,align:this.token.align[t]});a+=this.renderer.tablerow(o)}return this.renderer.table(e,a)}case TokenType.blockquoteStart:{let e="";for(;this.next().type!=TokenType.blockquoteEnd;)e+=this.tok();return this.renderer.blockquote(e)}case TokenType.hr:return this.renderer.hr();case TokenType.html:return e=this.token.pre||this.options.pedantic?this.token.text:this.inlineLexer.output(this.token.text),this.renderer.html(e);default:if(this.simpleRenderers.length)for(let e=0;e<this.simpleRenderers.length;e++)if(this.token.type=="simpleRule"+(e+1))return this.simpleRenderers[e].call(this.renderer,this.token.execArr);if(e=`Token with "${this.token.type}" type was not found.`,!this.options.silent)throw new Error(e);console.log(e)}}}class Marked{static options=new MarkedOptions;static simpleRenderers=[];static setOptions(e){return Object.assign(this.options,e),this}static setBlockRule(e,t=(()=>"")){return BlockLexer.simpleRules.push(e),this.simpleRenderers.push(t),this}static parse(e,t){try{t={...this.options,...t};var{tokens:r,links:o}=this.callBlockLexer(e,t);return this.callParser(r,o,t)}catch(e){return this.callMe(e)}}static debug(e,t=this.options){var{tokens:e,links:r}=this.callBlockLexer(e,t);let o=e.slice();return(t=new Parser(t)).simpleRenderers=this.simpleRenderers,t=t.debug(r,e),{tokens:o=o.map((e=>{e.type=TokenType[e.type]||e.type;var t=e.line;return delete e.line,t?{line:t,...e}:e})),links:r,result:t}}static callBlockLexer(e="",t){if("string"!=typeof e)throw new Error(`Expected that the 'src' parameter would have a 'string' type, got '${typeof e}'`);return e=e.replace(/\r\n|\r/g,"\n").replace(/\t/g," ").replace(/\u00a0/g," ").replace(/\u2424/g,"\n").replace(/^ +$/gm,""),BlockLexer.lex(e,t,!0)}static callParser(e,t,r){var o;return this.simpleRenderers.length?((o=new Parser(r)).simpleRenderers=this.simpleRenderers,o.parse(t,e)):Parser.parse(e,t,r)}static callMe(e){if(e.message+="\nPlease report this to https://github.com/ts-stack/markdown",this.options.silent)return"<p>An error occured:</p><pre>"+this.options.escape(e.message+"",!0)+"</pre>";throw e}}class BlockLexer{staticThis;static simpleRules=[];static rulesBase=null;static rulesGfm=null;static rulesTables=null;rules;options;links={};tokens=[];hasRulesGfm;hasRulesTables;constructor(e,t){this.staticThis=e,this.options=t||Marked.options,this.setRules()}static lex(e,t,r,o){return new this(this,t).getTokens(e,r,o)}static getRulesBase(){var e,t;return this.rulesBase||((e={newline:/^\n+/,code:/^( {4}[^\n]+\n*)+/,hr:/^( *[-*_]){3,} *(?:\n+|$)/,heading:/^ *(#{1,6}) *([^\n]+?) *#* *(?:\n+|$)/,lheading:/^([^\n]+)\n *(=|-){2,} *(?:\n+|$)/,blockquote:/^( *>[^\n]+(\n[^\n]+)*\n*)+/,list:/^( *)(bull) [\s\S]+?(?:hr|def|\n{2,}(?! )(?!\1bull )\n*|\s*$)/,html:/^ *(?:comment *(?:\n|\s*$)|closed *(?:\n{2,}|\s*$)|closing *(?:\n{2,}|\s*$))/,def:/^ *\[([^\]]+)\]: *<?([^\s>]+)>?(?: +["(]([^\n]+)[")])? *(?:\n+|$)/,paragraph:/^((?:[^\n]+\n?(?!hr|heading|lheading|blockquote|tag|def))+)\n*/,text:/^[^\n]+/,bullet:/(?:[*+-]|\d+\.)/,item:/^( *)(bull) [^\n]*(?:\n(?!\1bull )[^\n]*)*/}).item=new ExtendRegexp(e.item,"gm").setGroup(/bull/g,e.bullet).getRegexp(),e.list=new ExtendRegexp(e.list).setGroup(/bull/g,e.bullet).setGroup("hr","\\n+(?=\\1?(?:[-*_] *){3,}(?:\\n+|$))").setGroup("def","\\n+(?="+e.def.source+")").getRegexp(),t="(?!(?:a|em|strong|small|s|cite|q|dfn|abbr|data|time|code|var|samp|kbd|sub|sup|i|b|u|mark|ruby|rt|rp|bdi|bdo|span|br|wbr|ins|del|img)\\b)\\w+(?!:/|[^\\w\\s@]*@)\\b",e.html=new ExtendRegexp(e.html).setGroup("comment",/<!--[\s\S]*?-->/).setGroup("closed",/<(tag)[\s\S]+?<\/\1>/).setGroup("closing",/<tag(?:"[^"]*"|'[^']*'|[^'">])*?>/).setGroup(/tag/g,t).getRegexp(),e.paragraph=new ExtendRegexp(e.paragraph).setGroup("hr",e.hr).setGroup("heading",e.heading).setGroup("lheading",e.lheading).setGroup("blockquote",e.blockquote).setGroup("tag","<"+t).setGroup("def",e.def).getRegexp(),this.rulesBase=e)}static getRulesGfm(){var e,t,r,o;return this.rulesGfm||(r=(t={...e=this.getRulesBase(),fences:/^ *(`{3,}|~{3,})[ \.]*((\S+)? *[^\n]*)\n([\s\S]*?)\s*\1 *(?:\n+|$)/,paragraph:/^/,heading:/^ *(#{1,6}) +([^\n]+?) *#* *(?:\n+|$)/}).fences.source.replace("\\1","\\2"),o=e.list.source.replace("\\1","\\3"),t.paragraph=new ExtendRegexp(e.paragraph).setGroup("(?!",`(?!${r}|${o}|`).getRegexp(),this.rulesGfm=t)}static getRulesTable(){return this.rulesTables||(this.rulesTables={...this.getRulesGfm(),nptable:/^ *(\S.*\|.*)\n *([-:]+ *\|[-| :]*)\n((?:.*\|.*(?:\n|$))*)\n*/,table:/^ *\|(.+)\n *\|( *[-:]+[-| :]*)\n((?: *\|.*(?:\n|$))*)\n*/})}setRules(){this.options.gfm?this.options.tables?this.rules=this.staticThis.getRulesTable():this.rules=this.staticThis.getRulesGfm():this.rules=this.staticThis.getRulesBase(),this.hasRulesGfm=void 0!==this.rules.fences,this.hasRulesTables=void 0!==this.rules.table}getTokens(e,t,r){let o,a=e;e:for(;a;)if((o=this.rules.newline.exec(a))&&(a=a.substring(o[0].length),1<o[0].length)&&this.tokens.push({type:TokenType.space}),o=this.rules.code.exec(a)){a=a.substring(o[0].length);var i=o[0].replace(/^ {4}/gm,"");this.tokens.push({type:TokenType.code,text:this.options.pedantic?i:i.replace(/\n+$/,"")})}else if(this.hasRulesGfm&&(o=this.rules.fences.exec(a)))a=a.substring(o[0].length),this.tokens.push({type:TokenType.code,meta:o[2],lang:o[3],text:o[4]||""});else if(o=this.rules.heading.exec(a))a=a.substring(o[0].length),this.tokens.push({type:TokenType.heading,depth:o[1].length,text:o[2]});else if(t&&this.hasRulesTables&&(o=this.rules.nptable.exec(a))){a=a.substring(o[0].length);var n={type:TokenType.table,header:o[1].replace(/^ *| *\| *$/g,"").split(/ *\| */),align:o[2].replace(/^ *|\| *$/g,"").split(/ *\| */),cells:[]};for(let e=0;e<n.align.length;e++)/^ *-+: *$/.test(n.align[e])?n.align[e]="right":/^ *:-+: *$/.test(n.align[e])?n.align[e]="center":/^ *:-+ *$/.test(n.align[e])?n.align[e]="left":n.align[e]=null;var s=o[3].replace(/\n$/,"").split("\n");for(let e=0;e<s.length;e++)n.cells[e]=s[e].split(/ *\| */);this.tokens.push(n)}else if(o=this.rules.lheading.exec(a))a=a.substring(o[0].length),this.tokens.push({type:TokenType.heading,depth:"="===o[2]?1:2,text:o[1]});else if(o=this.rules.hr.exec(a))a=a.substring(o[0].length),this.tokens.push({type:TokenType.hr});else if(o=this.rules.blockquote.exec(a))a=a.substring(o[0].length),this.tokens.push({type:TokenType.blockquoteStart}),i=o[0].replace(/^ *> ?/gm,""),this.getTokens(i),this.tokens.push({type:TokenType.blockquoteEnd});else if(o=this.rules.list.exec(a)){a=a.substring(o[0].length);var l,d=o[2],m=(this.tokens.push({type:TokenType.listStart,ordered:1<d.length}),o[0].match(this.rules.item)),c=m.length;let e,t=!1;for(let o=0;o<c;o++){let i=m[o];l=i.length,-1!==(i=i.replace(/^ *([*+-]|\d+\.) +/,"")).indexOf("\n ")&&(l-=i.length,i=this.options.pedantic?i.replace(/^ {1,4}/gm,""):i.replace(new RegExp("^ {1,"+l+"}","gm"),"")),!this.options.smartLists||o===c-1||d===(l=this.staticThis.getRulesBase().bullet.exec(m[o+1])[0])||1<d.length&&1<l.length||(a=m.slice(o+1).join("\n")+a,o=c-1),e=t||/\n\n(?!\s*$)/.test(i),o!==c-1&&(t="\n"===i.charAt(i.length-1),e=e||t),this.tokens.push({type:e?TokenType.looseItemStart:TokenType.listItemStart}),this.getTokens(i,!1,r),this.tokens.push({type:TokenType.listItemEnd})}this.tokens.push({type:TokenType.listEnd})}else if(o=this.rules.html.exec(a)){a=a.substring(o[0].length);var g=o[1];this.tokens.push({type:this.options.sanitize?TokenType.paragraph:TokenType.html,pre:!this.options.sanitizer&&("pre"===g||"script"===g||"style"===g),text:o[0]})}else if(t&&(o=this.rules.def.exec(a)))a=a.substring(o[0].length),this.links[o[1].toLowerCase()]={href:o[2],title:o[3]};else if(t&&this.hasRulesTables&&(o=this.rules.table.exec(a))){a=a.substring(o[0].length);var u={type:TokenType.table,header:o[1].replace(/^ *| *\| *$/g,"").split(/ *\| */),align:o[2].replace(/^ *|\| *$/g,"").split(/ *\| */),cells:[]};for(let e=0;e<u.align.length;e++)/^ *-+: *$/.test(u.align[e])?u.align[e]="right":/^ *:-+: *$/.test(u.align[e])?u.align[e]="center":/^ *:-+ *$/.test(u.align[e])?u.align[e]="left":u.align[e]=null;var h=o[3].replace(/(?: *\| *)?\n$/,"").split("\n");for(let e=0;e<h.length;e++)u.cells[e]=h[e].replace(/^ *\| *| *\| *$/g,"").split(/ *\| */);this.tokens.push(u)}else{if(this.staticThis.simpleRules.length){var p=this.staticThis.simpleRules;for(let e=0;e<p.length;e++)if(o=p[e].exec(a)){a=a.substring(o[0].length);var x="simpleRule"+(e+1);this.tokens.push({type:x,execArr:o});continue e}}if(t&&(o=this.rules.paragraph.exec(a)))a=a.substring(o[0].length),"\n"===o[1].slice(-1)?this.tokens.push({type:TokenType.paragraph,text:o[1].slice(0,-1)}):this.tokens.push({type:0<this.tokens.length?TokenType.paragraph:TokenType.text,text:o[1]});else if(o=this.rules.text.exec(a))a=a.substring(o[0].length),this.tokens.push({type:TokenType.text,text:o[0]});else if(a)throw new Error("Infinite loop on byte: "+a.charCodeAt(0)+`, near text '${a.slice(0,30)}...'`)}return{tokens:this.tokens,links:this.links}}}function bind(e,t){return function(){return e.apply(t,arguments)}}const{toString:toString}=Object.prototype,{getPrototypeOf:getPrototypeOf}=Object,kindOf=(e=>t=>(t=toString.call(t),e[t]||(e[t]=t.slice(8,-1).toLowerCase())))(Object.create(null)),kindOfTest=e=>(e=e.toLowerCase(),t=>kindOf(t)===e),typeOfTest=e=>t=>typeof t===e,{isArray:isArray}=Array,isUndefined=typeOfTest("undefined");function isBuffer(e){return null!==e&&!isUndefined(e)&&null!==e.constructor&&!isUndefined(e.constructor)&&isFunction(e.constructor.isBuffer)&&e.constructor.isBuffer(e)}const isArrayBuffer=kindOfTest("ArrayBuffer");function isArrayBufferView(e){return"undefined"!=typeof ArrayBuffer&&ArrayBuffer.isView?ArrayBuffer.isView(e):e&&e.buffer&&isArrayBuffer(e.buffer)}const isString=typeOfTest("string"),isFunction=typeOfTest("function"),isNumber=typeOfTest("number"),isObject=e=>null!==e&&"object"==typeof e,isBoolean=e=>!0===e||!1===e,isPlainObject=e=>{var t;return"object"===kindOf(e)&&!(null!==(t=getPrototypeOf(e))&&t!==Object.prototype&&null!==Object.getPrototypeOf(t)||Symbol.toStringTag in e||Symbol.iterator in e)},isDate=kindOfTest("Date"),isFile=kindOfTest("File"),isBlob=kindOfTest("Blob"),isFileList=kindOfTest("FileList"),isStream=e=>isObject(e)&&isFunction(e.pipe),isFormData=e=>{var t;return e&&("function"==typeof FormData&&e instanceof FormData||isFunction(e.append)&&("formdata"===(t=kindOf(e))||"object"===t&&isFunction(e.toString)&&"[object FormData]"===e.toString()))},isURLSearchParams=kindOfTest("URLSearchParams"),[isReadableStream,isRequest,isResponse,isHeaders]=["ReadableStream","Request","Response","Headers"].map(kindOfTest),trim$1=e=>e.trim?e.trim():e.replace(/^[\s\uFEFF\xA0]+|[\s\uFEFF\xA0]+$/g,"");function forEach(e,t,{allOwnKeys:r=!1}={}){if(null!=e){let s;var o;if("object"!=typeof e&&(e=[e]),isArray(e))for(s=0,o=e.length;s<o;s++)t.call(null,e[s],s,e);else{var a,i=r?Object.getOwnPropertyNames(e):Object.keys(e),n=i.length;for(s=0;s<n;s++)a=i[s],t.call(null,e[a],a,e)}}}function findKey(e,t){t=t.toLowerCase();var r,o=Object.keys(e);let a=o.length;for(;0<a--;)if(t===(r=o[a]).toLowerCase())return r;return null}const _global="undefined"!=typeof globalThis?globalThis:"undefined"!=typeof self?self:"undefined"!=typeof window?window:global,isContextDefined=e=>!isUndefined(e)&&e!==_global;function merge(){const e=(isContextDefined(this)&&this||{}).caseless,t={};var r=(r,o)=>{o=e&&findKey(t,o)||o,isPlainObject(t[o])&&isPlainObject(r)?t[o]=merge(t[o],r):isPlainObject(r)?t[o]=merge({},r):isArray(r)?t[o]=r.slice():t[o]=r};for(let e=0,t=arguments.length;e<t;e++)arguments[e]&&forEach(arguments[e],r);return t}const extend=(e,t,r,{allOwnKeys:o}={})=>(forEach(t,((t,o)=>{r&&isFunction(t)?e[o]=bind(t,r):e[o]=t}),{allOwnKeys:o}),e),stripBOM=e=>65279===e.charCodeAt(0)?e.slice(1):e,inherits=(e,t,r,o)=>{e.prototype=Object.create(t.prototype,o),e.prototype.constructor=e,Object.defineProperty(e,"super",{value:t.prototype}),r&&Object.assign(e.prototype,r)},toFlatObject=(e,t,r,o)=>{var a,i;let n;var s={};if(t=t||{},null!=e)do{for(n=(a=Object.getOwnPropertyNames(e)).length;0<n--;)i=a[n],o&&!o(i,e,t)||s[i]||(t[i]=e[i],s[i]=!0)}while((e=!1!==r&&getPrototypeOf(e))&&(!r||r(e,t))&&e!==Object.prototype);return t},endsWith=(e,t,r)=>(e=String(e),(void 0===r||r>e.length)&&(r=e.length),r-=t.length,-1!==(e=e.indexOf(t,r))&&e===r),toArray=e=>{if(!e)return null;if(isArray(e))return e;let t=e.length;if(!isNumber(t))return null;for(var r=new Array(t);0<t--;)r[t]=e[t];return r},isTypedArray=(e=>t=>e&&t instanceof e)("undefined"!=typeof Uint8Array&&getPrototypeOf(Uint8Array)),forEachEntry=(e,t)=>{for(var r=(e&&e[Symbol.iterator]).call(e);(o=r.next())&&!o.done;){var o=o.value;t.call(e,o[0],o[1])}},matchAll=(e,t)=>{for(var r,o=[];null!==(r=e.exec(t));)o.push(r);return o},isHTMLForm=kindOfTest("HTMLFormElement"),toCamelCase=e=>e.toLowerCase().replace(/[-_\s]([a-z\d])(\w*)/g,(function(e,t,r){return t.toUpperCase()+r})),hasOwnProperty=(({hasOwnProperty:e})=>(t,r)=>e.call(t,r))(Object.prototype),isRegExp=kindOfTest("RegExp"),reduceDescriptors=(e,t)=>{var r=Object.getOwnPropertyDescriptors(e);const o={};forEach(r,((r,a)=>{var i;!1!==(i=t(r,a,e))&&(o[a]=i||r)})),Object.defineProperties(e,o)},freezeMethods=e=>{reduceDescriptors(e,((t,r)=>{if(isFunction(e)&&-1!==["arguments","caller","callee"].indexOf(r))return!1;var o=e[r];isFunction(o)&&(t.enumerable=!1,"writable"in t?t.writable=!1:t.set||(t.set=()=>{throw Error("Can not rewrite read-only method '"+r+"'")}))}))},toObjectSet=(e,t)=>{const r={};var o=e=>{e.forEach((e=>{r[e]=!0}))};return isArray(e)?o(e):o(String(e).split(t)),r},noop=()=>{},toFiniteNumber=(e,t)=>null!=e&&Number.isFinite(e=+e)?e:t,ALPHA="abcdefghijklmnopqrstuvwxyz",DIGIT="0123456789",ALPHABET={DIGIT:DIGIT,ALPHA:ALPHA,ALPHA_DIGIT:ALPHA+ALPHA.toUpperCase()+DIGIT},generateString=(e=16,t=ALPHABET.ALPHA_DIGIT)=>{let r="";for(var o=t.length;e--;)r+=t[Math.random()*o|0];return r};function isSpecCompliantForm(e){return!!(e&&isFunction(e.append)&&"FormData"===e[Symbol.toStringTag]&&e[Symbol.iterator])}const toJSONObject=e=>{const t=new Array(10),r=(e,o)=>{if(isObject(e)){if(0<=t.indexOf(e))return;if(!("toJSON"in e)){t[o]=e;const a=isArray(e)?[]:{};return forEach(e,((e,t)=>{e=r(e,o+1),isUndefined(e)||(a[t]=e)})),t[o]=void 0,a}}return e};return r(e,0)},isAsyncFn=kindOfTest("AsyncFunction"),isThenable=e=>e&&(isObject(e)||isFunction(e))&&isFunction(e.then)&&isFunction(e.catch),_setImmediate=((e,t)=>{return e?setImmediate:t?(r="axios@"+Math.random(),o=[],_global.addEventListener("message",(({source:e,data:t})=>{e===_global&&t===r&&o.length&&o.shift()()}),!1),e=>{o.push(e),_global.postMessage(r,"*")}):e=>setTimeout(e);var r,o})("function"==typeof setImmediate,isFunction(_global.postMessage)),asap="undefined"!=typeof queueMicrotask?queueMicrotask.bind(_global):"undefined"!=typeof process&&process.nextTick||_setImmediate;var utils$1={isArray:isArray,isArrayBuffer:isArrayBuffer,isBuffer:isBuffer,isFormData:isFormData,isArrayBufferView:isArrayBufferView,isString:isString,isNumber:isNumber,isBoolean:isBoolean,isObject:isObject,isPlainObject:isPlainObject,isReadableStream:isReadableStream,isRequest:isRequest,isResponse:isResponse,isHeaders:isHeaders,isUndefined:isUndefined,isDate:isDate,isFile:isFile,isBlob:isBlob,isRegExp:isRegExp,isFunction:isFunction,isStream:isStream,isURLSearchParams:isURLSearchParams,isTypedArray:isTypedArray,isFileList:isFileList,forEach:forEach,merge:merge,extend:extend,trim:trim$1,stripBOM:stripBOM,inherits:inherits,toFlatObject:toFlatObject,kindOf:kindOf,kindOfTest:kindOfTest,endsWith:endsWith,toArray:toArray,forEachEntry:forEachEntry,matchAll:matchAll,isHTMLForm:isHTMLForm,hasOwnProperty:hasOwnProperty,hasOwnProp:hasOwnProperty,reduceDescriptors:reduceDescriptors,freezeMethods:freezeMethods,toObjectSet:toObjectSet,toCamelCase:toCamelCase,noop:noop,toFiniteNumber:toFiniteNumber,findKey:findKey,global:_global,isContextDefined:isContextDefined,ALPHABET:ALPHABET,generateString:generateString,isSpecCompliantForm:isSpecCompliantForm,toJSONObject:toJSONObject,isAsyncFn:isAsyncFn,isThenable:isThenable,setImmediate:_setImmediate,asap:asap};function AxiosError(e,t,r,o,a){Error.call(this),Error.captureStackTrace?Error.captureStackTrace(this,this.constructor):this.stack=(new Error).stack,this.message=e,this.name="AxiosError",t&&(this.code=t),r&&(this.config=r),o&&(this.request=o),a&&(this.response=a,this.status=a.status||null)}utils$1.inherits(AxiosError,Error,{toJSON:function(){return{message:this.message,name:this.name,description:this.description,number:this.number,fileName:this.fileName,lineNumber:this.lineNumber,columnNumber:this.columnNumber,stack:this.stack,config:utils$1.toJSONObject(this.config),code:this.code,status:this.status}}});const prototype$1=AxiosError.prototype,descriptors={};["ERR_BAD_OPTION_VALUE","ERR_BAD_OPTION","ECONNABORTED","ETIMEDOUT","ERR_NETWORK","ERR_FR_TOO_MANY_REDIRECTS","ERR_DEPRECATED","ERR_BAD_RESPONSE","ERR_BAD_REQUEST","ERR_CANCELED","ERR_NOT_SUPPORT","ERR_INVALID_URL"].forEach((e=>{descriptors[e]={value:e}})),Object.defineProperties(AxiosError,descriptors),Object.defineProperty(prototype$1,"isAxiosError",{value:!0}),AxiosError.from=(e,t,r,o,a,i)=>{var n=Object.create(prototype$1);return utils$1.toFlatObject(e,n,(function(e){return e!==Error.prototype}),(e=>"isAxiosError"!==e)),AxiosError.call(n,e.message,t,r,o,a),n.cause=e,n.name=e.name,i&&Object.assign(n,i),n};var httpAdapter=null;function isVisitable(e){return utils$1.isPlainObject(e)||utils$1.isArray(e)}function removeBrackets(e){return utils$1.endsWith(e,"[]")?e.slice(0,-2):e}function renderKey(e,t,r){return e?e.concat(t).map((function(e,t){return e=removeBrackets(e),!r&&t?"["+e+"]":e})).join(r?".":""):t}function isFlatArray(e){return utils$1.isArray(e)&&!e.some(isVisitable)}const predicates=utils$1.toFlatObject(utils$1,{},null,(function(e){return/^is[A-Z]/.test(e)}));function toFormData(e,t,r){if(!utils$1.isObject(e))throw new TypeError("target must be an object");t=t||new FormData;const o=(r=utils$1.toFlatObject(r,{metaTokens:!0,dots:!1,indexes:!1},!1,(function(e,t){return!utils$1.isUndefined(t[e])}))).metaTokens,a=r.visitor||d,i=r.dots,n=r.indexes,s=(r.Blob||"undefined"!=typeof Blob&&Blob)&&utils$1.isSpecCompliantForm(t);if(!utils$1.isFunction(a))throw new TypeError("visitor must be a function");function l(e){if(null===e)return"";if(utils$1.isDate(e))return e.toISOString();if(!s&&utils$1.isBlob(e))throw new AxiosError("Blob is not supported. Use a Buffer instead.");return utils$1.isArrayBuffer(e)||utils$1.isTypedArray(e)?s&&"function"==typeof Blob?new Blob([e]):Buffer.from(e):e}function d(e,r,a){let s=e;if(e&&!a&&"object"==typeof e)if(utils$1.endsWith(r,"{}"))r=o?r:r.slice(0,-2),e=JSON.stringify(e);else if(utils$1.isArray(e)&&isFlatArray(e)||(utils$1.isFileList(e)||utils$1.endsWith(r,"[]"))&&(s=utils$1.toArray(e)))return r=removeBrackets(r),s.forEach((function(e,o){utils$1.isUndefined(e)||null===e||t.append(!0===n?renderKey([r],o,i):null===n?r:r+"[]",l(e))})),!1;return!!isVisitable(e)||(t.append(renderKey(a,r,i),l(e)),!1)}const m=[],c=Object.assign(predicates,{defaultVisitor:d,convertValue:l,isVisitable:isVisitable});if(utils$1.isObject(e))return function e(r,o){if(!utils$1.isUndefined(r)){if(-1!==m.indexOf(r))throw Error("Circular reference detected in "+o.join("."));m.push(r),utils$1.forEach(r,(function(r,i){!0===(!(utils$1.isUndefined(r)||null===r)&&a.call(t,r,utils$1.isString(i)?i.trim():i,o,c))&&e(r,o?o.concat(i):[i])})),m.pop()}}(e),t;throw new TypeError("data must be an object")}function encode$1(e){const t={"!":"%21","'":"%27","(":"%28",")":"%29","~":"%7E","%20":"+","%00":"\0"};return encodeURIComponent(e).replace(/[!'()~]|%20|%00/g,(function(e){return t[e]}))}function AxiosURLSearchParams(e,t){this._pairs=[],e&&toFormData(e,this,t)}const prototype=AxiosURLSearchParams.prototype;function encode(e){return encodeURIComponent(e).replace(/%3A/gi,":").replace(/%24/g,"$").replace(/%2C/gi,",").replace(/%20/g,"+").replace(/%5B/gi,"[").replace(/%5D/gi,"]")}function buildURL(e,t,r){if(t){var o=r&&r.encode||encode,a=r&&r.serialize;let i;(i=a?a(t,r):utils$1.isURLSearchParams(t)?t.toString():new AxiosURLSearchParams(t,r).toString(o))&&(-1!==(a=e.indexOf("#"))&&(e=e.slice(0,a)),e+=(-1===e.indexOf("?")?"?":"&")+i)}return e}prototype.append=function(e,t){this._pairs.push([e,t])},prototype.toString=function(e){const t=e?function(t){return e.call(this,t,encode$1)}:encode$1;return this._pairs.map((function(e){return t(e[0])+"="+t(e[1])}),"").join("&")};class InterceptorManager{constructor(){this.handlers=[]}use(e,t,r){return this.handlers.push({fulfilled:e,rejected:t,synchronous:!!r&&r.synchronous,runWhen:r?r.runWhen:null}),this.handlers.length-1}eject(e){this.handlers[e]&&(this.handlers[e]=null)}clear(){this.handlers&&(this.handlers=[])}forEach(e){utils$1.forEach(this.handlers,(function(t){null!==t&&e(t)}))}}var InterceptorManager$1=InterceptorManager,transitionalDefaults={silentJSONParsing:!0,forcedJSONParsing:!0,clarifyTimeoutError:!1},URLSearchParams$1="undefined"!=typeof URLSearchParams?URLSearchParams:AxiosURLSearchParams,FormData$1="undefined"!=typeof FormData?FormData:null,Blob$1="undefined"!=typeof Blob?Blob:null,platform$1={isBrowser:!0,classes:{URLSearchParams:URLSearchParams$1,FormData:FormData$1,Blob:Blob$1},protocols:["http","https","file","blob","url","data"]};const hasBrowserEnv="undefined"!=typeof window&&"undefined"!=typeof document,_navigator="object"==typeof navigator&&navigator||void 0,hasStandardBrowserEnv=hasBrowserEnv&&(!_navigator||["ReactNative","NativeScript","NS"].indexOf(_navigator.product)<0),hasStandardBrowserWebWorkerEnv="undefined"!=typeof WorkerGlobalScope&&self instanceof WorkerGlobalScope&&"function"==typeof self.importScripts,origin=hasBrowserEnv&&window.location.href||"http://localhost";var utils=Object.freeze({__proto__:null,hasBrowserEnv:hasBrowserEnv,hasStandardBrowserEnv:hasStandardBrowserEnv,hasStandardBrowserWebWorkerEnv:hasStandardBrowserWebWorkerEnv,navigator:_navigator,origin:origin}),platform={...utils,...platform$1};function toURLEncodedForm(e,t){return toFormData(e,new platform.classes.URLSearchParams,Object.assign({visitor:function(e,t,r,o){return platform.isNode&&utils$1.isBuffer(e)?(this.append(t,e.toString("base64")),!1):o.defaultVisitor.apply(this,arguments)}},t))}function parsePropPath(e){return utils$1.matchAll(/\w+|\[(\w*)]/g,e).map((e=>"[]"===e[0]?"":e[1]||e[0]))}function arrayToObject(e){var t={},r=Object.keys(e);let o;var a,i=r.length;for(o=0;o<i;o++)t[a=r[o]]=e[a];return t}function formDataToJSON(e){if(utils$1.isFormData(e)&&utils$1.isFunction(e.entries)){const t={};return utils$1.forEachEntry(e,((e,r)=>{!function e(t,r,o,a){var i,n,s;return"__proto__"===(s=t[a++])||(i=Number.isFinite(+s),n=a>=t.length,s=!s&&utils$1.isArray(o)?o.length:s,n?utils$1.hasOwnProp(o,s)?o[s]=[o[s],r]:o[s]=r:(o[s]&&utils$1.isObject(o[s])||(o[s]=[]),e(t,r,o[s],a)&&utils$1.isArray(o[s])&&(o[s]=arrayToObject(o[s]))),!i)}(parsePropPath(e),r,t,0)})),t}return null}function stringifySafely(e,t,r){if(utils$1.isString(e))try{return(t||JSON.parse)(e),utils$1.trim(e)}catch(e){if("SyntaxError"!==e.name)throw e}return(r||JSON.stringify)(e)}const defaults={transitional:transitionalDefaults,adapter:["xhr","http","fetch"],transformRequest:[function(e,t){var r=t.getContentType()||"",o=-1<r.indexOf("application/json"),a=utils$1.isObject(e),i=(a&&utils$1.isHTMLForm(e)&&(e=new FormData(e)),utils$1.isFormData(e));if(i)return o?JSON.stringify(formDataToJSON(e)):e;if(utils$1.isArrayBuffer(e)||utils$1.isBuffer(e)||utils$1.isStream(e)||utils$1.isFile(e)||utils$1.isBlob(e)||utils$1.isReadableStream(e))return e;if(utils$1.isArrayBufferView(e))return e.buffer;if(utils$1.isURLSearchParams(e))return t.setContentType("application/x-www-form-urlencoded;charset=utf-8",!1),e.toString();if(a){if(-1<r.indexOf("application/x-www-form-urlencoded"))return toURLEncodedForm(e,this.formSerializer).toString();if((i=utils$1.isFileList(e))||-1<r.indexOf("multipart/form-data"))return toFormData(i?{"files[]":e}:e,(r=this.env&&this.env.FormData)&&new r,this.formSerializer)}return a||o?(t.setContentType("application/json",!1),stringifySafely(e)):e}],transformResponse:[function(e){var t=this.transitional||defaults.transitional,r=t&&t.forcedJSONParsing,o="json"===this.responseType;if(!utils$1.isResponse(e)&&!utils$1.isReadableStream(e)&&e&&utils$1.isString(e)&&(r&&!this.responseType||o)){r=!(t&&t.silentJSONParsing)&&o;try{return JSON.parse(e)}catch(e){if(r){if("SyntaxError"===e.name)throw AxiosError.from(e,AxiosError.ERR_BAD_RESPONSE,this,null,this.response);throw e}}}return e}],timeout:0,xsrfCookieName:"XSRF-TOKEN",xsrfHeaderName:"X-XSRF-TOKEN",maxContentLength:-1,maxBodyLength:-1,env:{FormData:platform.classes.FormData,Blob:platform.classes.Blob},validateStatus:function(e){return 200<=e&&e<300},headers:{common:{Accept:"application/json, text/plain, */*","Content-Type":void 0}}};utils$1.forEach(["delete","get","head","post","put","patch"],(e=>{defaults.headers[e]={}}));var defaults$1=defaults;const ignoreDuplicateOf=utils$1.toObjectSet(["age","authorization","content-length","content-type","etag","expires","from","host","if-modified-since","if-unmodified-since","last-modified","location","max-forwards","proxy-authorization","referer","retry-after","user-agent"]);var parseHeaders=e=>{const t={};let r,o,a;return e&&e.split("\n").forEach((function(e){a=e.indexOf(":"),r=e.substring(0,a).trim().toLowerCase(),o=e.substring(a+1).trim(),!r||t[r]&&ignoreDuplicateOf[r]||("set-cookie"===r?t[r]?t[r].push(o):t[r]=[o]:t[r]=t[r]?t[r]+", "+o:o)})),t};const $internals=Symbol("internals");function normalizeHeader(e){return e&&String(e).trim().toLowerCase()}function normalizeValue(e){return!1===e||null==e?e:utils$1.isArray(e)?e.map(normalizeValue):String(e)}function parseTokens(e){for(var t,r=Object.create(null),o=/([^\s,;=]+)\s*(?:=\s*([^,;]+))?/g;t=o.exec(e);)r[t[1]]=t[2];return r}const isValidHeaderName=e=>/^[-_a-zA-Z0-9^`|~,!#$%&'*+.]+$/.test(e.trim());function matchHeaderValue(e,t,r,o,a){return utils$1.isFunction(o)?o.call(this,t,r):utils$1.isString(t=a?r:t)?utils$1.isString(o)?-1!==t.indexOf(o):utils$1.isRegExp(o)?o.test(t):void 0:void 0}function formatHeader(e){return e.trim().toLowerCase().replace(/([a-z\d])(\w*)/g,((e,t,r)=>t.toUpperCase()+r))}function buildAccessors(e,t){const r=utils$1.toCamelCase(" "+t);["get","set","has"].forEach((o=>{Object.defineProperty(e,o+r,{value:function(e,r,a){return this[o].call(this,t,e,r,a)},configurable:!0})}))}class AxiosHeaders{constructor(e){e&&this.set(e)}set(e,t,r){const o=this;function a(e,t,r){var a=normalizeHeader(t);if(!a)throw new Error("header name must be a non-empty string");(a=utils$1.findKey(o,a))&&void 0!==o[a]&&!0!==r&&(void 0!==r||!1===o[a])||(o[a||t]=normalizeValue(e))}var i=(e,t)=>utils$1.forEach(e,((e,r)=>a(e,r,t)));if(utils$1.isPlainObject(e)||e instanceof this.constructor)i(e,t);else if(utils$1.isString(e)&&(e=e.trim())&&!isValidHeaderName(e))i(parseHeaders(e),t);else if(utils$1.isHeaders(e))for(var[n,s]of e.entries())a(s,n,r);else null!=e&&a(t,e,r);return this}get(e,t){if((e=normalizeHeader(e))&&(e=utils$1.findKey(this,e))){var r=this[e];if(!t)return r;if(!0===t)return parseTokens(r);if(utils$1.isFunction(t))return t.call(this,r,e);if(utils$1.isRegExp(t))return t.exec(r);throw new TypeError("parser must be boolean|regexp|function")}}has(e,t){return!!(e=normalizeHeader(e))&&!(!(e=utils$1.findKey(this,e))||void 0===this[e]||t&&!matchHeaderValue(this,this[e],e,t))}delete(e,t){const r=this;let o=!1;function a(e){(e=normalizeHeader(e))&&(e=utils$1.findKey(r,e))&&(!t||matchHeaderValue(r,r[e],e,t))&&(delete r[e],o=!0)}return utils$1.isArray(e)?e.forEach(a):a(e),o}clear(e){var t=Object.keys(this);let r=t.length,o=!1;for(;r--;){var a=t[r];e&&!matchHeaderValue(this,this[a],a,e,!0)||(delete this[a],o=!0)}return o}normalize(e){const t=this,r={};return utils$1.forEach(this,((o,a)=>{var i=utils$1.findKey(r,a);i?(t[i]=normalizeValue(o),delete t[a]):((i=e?formatHeader(a):String(a).trim())!==a&&delete t[a],t[i]=normalizeValue(o),r[i]=!0)})),this}concat(...e){return this.constructor.concat(this,...e)}toJSON(e){const t=Object.create(null);return utils$1.forEach(this,((r,o)=>{null!=r&&!1!==r&&(t[o]=e&&utils$1.isArray(r)?r.join(", "):r)})),t}[Symbol.iterator](){return Object.entries(this.toJSON())[Symbol.iterator]()}toString(){return Object.entries(this.toJSON()).map((([e,t])=>e+": "+t)).join("\n")}get[Symbol.toStringTag](){return"AxiosHeaders"}static from(e){return e instanceof this?e:new this(e)}static concat(e,...t){const r=new this(e);return t.forEach((e=>r.set(e))),r}static accessor(e){const t=(this[$internals]=this[$internals]={accessors:{}}).accessors,r=this.prototype;function o(e){var o=normalizeHeader(e);t[o]||(buildAccessors(r,e),t[o]=!0)}return utils$1.isArray(e)?e.forEach(o):o(e),this}}AxiosHeaders.accessor(["Content-Type","Content-Length","Accept","Accept-Encoding","User-Agent","Authorization"]),utils$1.reduceDescriptors(AxiosHeaders.prototype,(({value:e},t)=>{let r=t[0].toUpperCase()+t.slice(1);return{get:()=>e,set(e){this[r]=e}}})),utils$1.freezeMethods(AxiosHeaders);var AxiosHeaders$1=AxiosHeaders;function transformData(e,t){const r=this||defaults$1;var o=t||r;const a=AxiosHeaders$1.from(o.headers);let i=o.data;return utils$1.forEach(e,(function(e){i=e.call(r,i,a.normalize(),t?t.status:void 0)})),a.normalize(),i}function isCancel(e){return!(!e||!e.__CANCEL__)}function CanceledError(e,t,r){AxiosError.call(this,null==e?"canceled":e,AxiosError.ERR_CANCELED,t,r),this.name="CanceledError"}function settle(e,t,r){var o=r.config.validateStatus;r.status&&o&&!o(r.status)?t(new AxiosError("Request failed with status code "+r.status,[AxiosError.ERR_BAD_REQUEST,AxiosError.ERR_BAD_RESPONSE][Math.floor(r.status/100)-4],r.config,r.request,r)):e(r)}function parseProtocol(e){return(e=/^([-+\w]{1,25})(:?\/\/|:)/.exec(e))&&e[1]||""}function speedometer(e,t){e=e||10;const r=new Array(e),o=new Array(e);let a,i=0,n=0;return t=void 0!==t?t:1e3,function(s){var l=Date.now(),d=o[n];a=a||l,r[i]=s,o[i]=l;let m=n,c=0;for(;m!==i;)c+=r[m++],m%=e;return(i=(i+1)%e)===n&&(n=(n+1)%e),l-a<t||!(s=d&&l-d)?void 0:Math.round(1e3*c/s)}}function throttle(e,t){let r,o,a=0,i=1e3/t;const n=(t,i=Date.now())=>{a=i,r=null,o&&(clearTimeout(o),o=null),e.apply(null,t)};return[(...e)=>{var t=Date.now(),s=t-a;s>=i?n(e,t):(r=e,o=o||setTimeout((()=>{o=null,n(r)}),i-s))},()=>r&&n(r)]}utils$1.inherits(CanceledError,AxiosError,{__CANCEL__:!0});const progressEventReducer=(e,t,r=3)=>{let o=0;const a=speedometer(50,250);return throttle((r=>{var i=r.loaded,n=r.lengthComputable?r.total:void 0,s=a(l=i-o),l={loaded:o=i,total:n,progress:n?i/n:void 0,bytes:l,rate:s||void 0,estimated:s&&n&&i<=n?(n-i)/s:void 0,event:r,lengthComputable:null!=n,[t?"download":"upload"]:!0};e(l)}),r)},progressEventDecorator=(e,t)=>{const r=null!=e;return[o=>t[0]({lengthComputable:r,total:e,loaded:o}),t[1]]},asyncDecorator=e=>(...t)=>utils$1.asap((()=>e(...t)));var isURLSameOrigin=platform.hasStandardBrowserEnv?function(){const e=platform.navigator&&/(msie|trident)/i.test(platform.navigator.userAgent),t=document.createElement("a");let r;function o(r){let o=r;return e&&(t.setAttribute("href",o),o=t.href),t.setAttribute("href",o),{href:t.href,protocol:t.protocol?t.protocol.replace(/:$/,""):"",host:t.host,search:t.search?t.search.replace(/^\?/,""):"",hash:t.hash?t.hash.replace(/^#/,""):"",hostname:t.hostname,port:t.port,pathname:"/"===t.pathname.charAt(0)?t.pathname:"/"+t.pathname}}return r=o(window.location.href),function(e){return(e=utils$1.isString(e)?o(e):e).protocol===r.protocol&&e.host===r.host}}():function(){return!0},cookies=platform.hasStandardBrowserEnv?{write(e,t,r,o,a,i){e=[e+"="+encodeURIComponent(t)],utils$1.isNumber(r)&&e.push("expires="+new Date(r).toGMTString()),utils$1.isString(o)&&e.push("path="+o),utils$1.isString(a)&&e.push("domain="+a),!0===i&&e.push("secure"),document.cookie=e.join("; ")},read:e=>(e=document.cookie.match(new RegExp("(^|;\\s*)("+e+")=([^;]*)")))?decodeURIComponent(e[3]):null,remove(e){this.write(e,"",Date.now()-864e5)}}:{write(){},read:()=>null,remove(){}};function isAbsoluteURL(e){return/^([a-z][a-z\d+\-.]*:)?\/\//i.test(e)}function combineURLs(e,t){return t?e.replace(/\/?\/$/,"")+"/"+t.replace(/^\/+/,""):e}function buildFullPath(e,t){return e&&!isAbsoluteURL(t)?combineURLs(e,t):t}const headersToObject=e=>e instanceof AxiosHeaders$1?{...e}:e;function mergeConfig(e,t){t=t||{};const r={};function o(e,t,r){return utils$1.isPlainObject(e)&&utils$1.isPlainObject(t)?utils$1.merge.call({caseless:r},e,t):utils$1.isPlainObject(t)?utils$1.merge({},t):utils$1.isArray(t)?t.slice():t}function a(e,t,r){return utils$1.isUndefined(t)?utils$1.isUndefined(e)?void 0:o(void 0,e,r):o(e,t,r)}function i(e,t){if(!utils$1.isUndefined(t))return o(void 0,t)}function n(e,t){return utils$1.isUndefined(t)?utils$1.isUndefined(e)?void 0:o(void 0,e):o(void 0,t)}function s(r,a,i){return i in t?o(r,a):i in e?o(void 0,r):void 0}const l={url:i,method:i,data:i,baseURL:n,transformRequest:n,transformResponse:n,paramsSerializer:n,timeout:n,timeoutMessage:n,withCredentials:n,withXSRFToken:n,adapter:n,responseType:n,xsrfCookieName:n,xsrfHeaderName:n,onUploadProgress:n,onDownloadProgress:n,decompress:n,maxContentLength:n,maxBodyLength:n,beforeRedirect:n,transport:n,httpAgent:n,httpsAgent:n,cancelToken:n,socketPath:n,responseEncoding:n,validateStatus:s,headers:(e,t)=>a(headersToObject(e),headersToObject(t),!0)};return utils$1.forEach(Object.keys(Object.assign({},e,t)),(function(o){var i=l[o]||a,n=i(e[o],t[o],o);utils$1.isUndefined(n)&&i!==s||(r[o]=n)})),r}var resolveConfig=e=>{var t,r=mergeConfig({},e);let{data:o,withXSRFToken:a,xsrfHeaderName:i,xsrfCookieName:n,headers:s,auth:l}=r;return r.headers=s=AxiosHeaders$1.from(s),r.url=buildURL(buildFullPath(r.baseURL,r.url),e.params,e.paramsSerializer),l&&s.set("Authorization","Basic "+btoa((l.username||"")+":"+(l.password?unescape(encodeURIComponent(l.password)):""))),utils$1.isFormData(o)&&(platform.hasStandardBrowserEnv||platform.hasStandardBrowserWebWorkerEnv?s.setContentType(void 0):!1!==(e=s.getContentType())&&([e,...t]=e?e.split(";").map((e=>e.trim())).filter(Boolean):[],s.setContentType([e||"multipart/form-data",...t].join("; ")))),platform.hasStandardBrowserEnv&&((a=a&&utils$1.isFunction(a)?a(r):a)||!1!==a&&isURLSameOrigin(r.url))&&(e=i&&n&&cookies.read(n))&&s.set(i,e),r};const isXHRAdapterSupported="undefined"!=typeof XMLHttpRequest;var xhrAdapter=isXHRAdapterSupported&&function(e){return new Promise((function(t,r){const o=resolveConfig(e);var a=o.data,i=AxiosHeaders$1.from(o.headers).normalize();let n,s,l,{responseType:d,onUploadProgress:m,onDownloadProgress:c}=o;function g(){s&&s(),l&&l(),o.cancelToken&&o.cancelToken.unsubscribe(n),o.signal&&o.signal.removeEventListener("abort",n)}let u=new XMLHttpRequest;function h(){var o;u&&(o=AxiosHeaders$1.from("getAllResponseHeaders"in u&&u.getAllResponseHeaders()),settle((function(e){t(e),g()}),(function(e){r(e),g()}),{data:d&&"text"!==d&&"json"!==d?u.response:u.responseText,status:u.status,statusText:u.statusText,headers:o,config:e,request:u}),u=null)}u.open(o.method.toUpperCase(),o.url,!0),u.timeout=o.timeout,"onloadend"in u?u.onloadend=h:u.onreadystatechange=function(){u&&4===u.readyState&&(0!==u.status||u.responseURL&&0===u.responseURL.indexOf("file:"))&&setTimeout(h)},u.onabort=function(){u&&(r(new AxiosError("Request aborted",AxiosError.ECONNABORTED,e,u)),u=null)},u.onerror=function(){r(new AxiosError("Network Error",AxiosError.ERR_NETWORK,e,u)),u=null},u.ontimeout=function(){let t=o.timeout?"timeout of "+o.timeout+"ms exceeded":"timeout exceeded";var a=o.transitional||transitionalDefaults;o.timeoutErrorMessage&&(t=o.timeoutErrorMessage),r(new AxiosError(t,a.clarifyTimeoutError?AxiosError.ETIMEDOUT:AxiosError.ECONNABORTED,e,u)),u=null},void 0===a&&i.setContentType(null),"setRequestHeader"in u&&utils$1.forEach(i.toJSON(),(function(e,t){u.setRequestHeader(t,e)})),utils$1.isUndefined(o.withCredentials)||(u.withCredentials=!!o.withCredentials),d&&"json"!==d&&(u.responseType=o.responseType),c&&([i,l]=progressEventReducer(c,!0),u.addEventListener("progress",i)),m&&u.upload&&([i,s]=progressEventReducer(m),u.upload.addEventListener("progress",i),u.upload.addEventListener("loadend",s)),(o.cancelToken||o.signal)&&(n=t=>{u&&(r(!t||t.type?new CanceledError(null,e,u):t),u.abort(),u=null)},o.cancelToken&&o.cancelToken.subscribe(n),o.signal)&&(o.signal.aborted?n():o.signal.addEventListener("abort",n)),(i=parseProtocol(o.url))&&-1===platform.protocols.indexOf(i)?r(new AxiosError("Unsupported protocol "+i+":",AxiosError.ERR_BAD_REQUEST,e)):u.send(a||null)}))};const composeSignals=(e,t)=>{var r=(e=e?e.filter(Boolean):[]).length;if(t||r){let o,a=new AbortController;const i=function(e){o||(o=!0,s(),e=e instanceof Error?e:this.reason,a.abort(e instanceof AxiosError?e:new CanceledError(e instanceof Error?e.message:e)))};let n=t&&setTimeout((()=>{n=null,i(new AxiosError(`timeout ${t} of ms exceeded`,AxiosError.ETIMEDOUT))}),t);const s=()=>{e&&(n&&clearTimeout(n),n=null,e.forEach((e=>{e.unsubscribe?e.unsubscribe(i):e.removeEventListener("abort",i)})),e=null)};return e.forEach((e=>e.addEventListener("abort",i))),(r=a.signal).unsubscribe=()=>utils$1.asap(s),r}};var composeSignals$1=composeSignals;const streamChunk=function*(e,t){var r,o=e.byteLength;if(!t||o<t)yield e;else{let a=0;for(;a<o;)r=a+t,yield e.slice(a,r),a=r}},readBytes=async function*(e,t){for await(const r of readStream(e))yield*streamChunk(r,t)},readStream=async function*(e){if(e[Symbol.asyncIterator])yield*e;else{var t=e.getReader();try{for(;;){var{done:r,value:o}=await t.read();if(r)break;yield o}}finally{await t.cancel()}}},trackStream=(e,t,r,o)=>{const a=readBytes(e,t);let i,n=0,s=e=>{i||(i=!0,o&&o(e))};return new ReadableStream({async pull(e){try{var t,o,{done:i,value:l}=await a.next();i?(s(),e.close()):(t=l.byteLength,r&&(o=n+=t,r(o)),e.enqueue(new Uint8Array(l)))}catch(e){throw s(e),e}},cancel:e=>(s(e),a.return())},{highWaterMark:2})},isFetchSupported="function"==typeof fetch&&"function"==typeof Request&&"function"==typeof Response,isReadableStreamSupported=isFetchSupported&&"function"==typeof ReadableStream,encodeText=isFetchSupported&&("function"==typeof TextEncoder?(e=>t=>e.encode(t))(new TextEncoder):async e=>new Uint8Array(await new Response(e).arrayBuffer())),test=(e,...t)=>{try{return!!e(...t)}catch(e){return!1}},supportsRequestStream=isReadableStreamSupported&&test((()=>{let e=!1;var t=new Request(platform.origin,{body:new ReadableStream,method:"POST",get duplex(){return e=!0,"half"}}).headers.has("Content-Type");return e&&!t})),DEFAULT_CHUNK_SIZE=65536,supportsResponseStream=isReadableStreamSupported&&test((()=>utils$1.isReadableStream(new Response("").body))),resolvers={stream:supportsResponseStream&&(e=>e.body)},getBodyLength=(isFetchSupported&&(e=>{["text","arrayBuffer","blob","formData","stream"].forEach((t=>{resolvers[t]||(resolvers[t]=utils$1.isFunction(e[t])?e=>e[t]():(e,r)=>{throw new AxiosError(`Response type '${t}' is not supported`,AxiosError.ERR_NOT_SUPPORT,r)})}))})(new Response),async e=>null==e?0:utils$1.isBlob(e)?e.size:utils$1.isSpecCompliantForm(e)?(await new Request(platform.origin,{method:"POST",body:e}).arrayBuffer()).byteLength:utils$1.isArrayBufferView(e)||utils$1.isArrayBuffer(e)?e.byteLength:(utils$1.isURLSearchParams(e)&&(e+=""),utils$1.isString(e)?(await encodeText(e)).byteLength:void 0)),resolveBodyLength=async(e,t)=>null==(e=utils$1.toFiniteNumber(e.getContentLength()))?getBodyLength(t):e;var fetchAdapter=isFetchSupported&&(async e=>{let t,{url:r,method:o,data:a,signal:i,cancelToken:n,timeout:s,onDownloadProgress:l,onUploadProgress:d,responseType:m,headers:c,withCredentials:g="same-origin",fetchOptions:u}=resolveConfig(e),h=(m=m?(m+"").toLowerCase():"text",composeSignals$1([i,n&&n.toAbortSignal()],s));const p=h&&h.unsubscribe&&(()=>{h.unsubscribe()});let x;try{if(d&&supportsRequestStream&&"get"!==o&&"head"!==o&&0!==(x=await resolveBodyLength(c,a))){var v,S,f=new Request(r,{method:"POST",body:a,duplex:"half"});let e;utils$1.isFormData(a)&&(e=f.headers.get("content-type"))&&c.setContentType(e),f.body&&([v,S]=progressEventDecorator(x,progressEventReducer(asyncDecorator(d))),a=trackStream(f.body,DEFAULT_CHUNK_SIZE,v,S))}utils$1.isString(g)||(g=g?"include":"omit");var b="credentials"in Request.prototype;t=new Request(r,{...u,signal:h,method:o.toUpperCase(),headers:c.normalize().toJSON(),body:a,duplex:"half",credentials:b?g:void 0});let i=await fetch(t);var A=supportsResponseStream&&("stream"===m||"response"===m);if(supportsResponseStream&&(l||A&&p)){const e={};["status","statusText","headers"].forEach((t=>{e[t]=i[t]}));var _=utils$1.toFiniteNumber(i.headers.get("content-length"));const[t,r]=l&&progressEventDecorator(_,progressEventReducer(asyncDecorator(l),!0))||[];i=new Response(trackStream(i.body,DEFAULT_CHUNK_SIZE,t,(()=>{r&&r(),p&&p()})),e)}m=m||"text";let n=await resolvers[utils$1.findKey(resolvers,m)||"text"](i,e);return!A&&p&&p(),await new Promise(((r,o)=>{settle(r,o,{data:n,headers:AxiosHeaders$1.from(i.headers),status:i.status,statusText:i.statusText,config:e,request:t})}))}catch(o){if(p&&p(),o&&"TypeError"===o.name&&/fetch/i.test(o.message))throw Object.assign(new AxiosError("Network Error",AxiosError.ERR_NETWORK,e,t),{cause:o.cause||o});throw AxiosError.from(o,o&&o.code,e,t)}});const knownAdapters={http:httpAdapter,xhr:xhrAdapter,fetch:fetchAdapter},renderReason=(utils$1.forEach(knownAdapters,((e,t)=>{if(e){try{Object.defineProperty(e,"name",{value:t})}catch(e){}Object.defineProperty(e,"adapterName",{value:t})}})),e=>"- "+e),isResolvedHandle=e=>utils$1.isFunction(e)||null===e||!1===e;var adapters={getAdapter:e=>{var t,r=(e=utils$1.isArray(e)?e:[e]).length;let o;var a,i={};for(let a=0;a<r;a++){let r;if(o=t=e[a],!isResolvedHandle(t)&&void 0===(o=knownAdapters[(r=String(t)).toLowerCase()]))throw new AxiosError(`Unknown adapter '${r}'`);if(o)break;i[r||"#"+a]=o}if(o)return o;throw a=Object.entries(i).map((([e,t])=>`adapter ${e} `+(!1===t?"is not supported by the environment":"is not available in the build"))),new AxiosError("There is no suitable adapter to dispatch the request "+(r?1<a.length?"since :\n"+a.map(renderReason).join("\n"):" "+renderReason(a[0]):"as no adapter specified"),"ERR_NOT_SUPPORT")},adapters:knownAdapters};function throwIfCancellationRequested(e){if(e.cancelToken&&e.cancelToken.throwIfRequested(),e.signal&&e.signal.aborted)throw new CanceledError(null,e)}function dispatchRequest(e){return throwIfCancellationRequested(e),e.headers=AxiosHeaders$1.from(e.headers),e.data=transformData.call(e,e.transformRequest),-1!==["post","put","patch"].indexOf(e.method)&&e.headers.setContentType("application/x-www-form-urlencoded",!1),adapters.getAdapter(e.adapter||defaults$1.adapter)(e).then((function(t){return throwIfCancellationRequested(e),t.data=transformData.call(e,e.transformResponse,t),t.headers=AxiosHeaders$1.from(t.headers),t}),(function(t){return isCancel(t)||(throwIfCancellationRequested(e),t&&t.response&&(t.response.data=transformData.call(e,e.transformResponse,t.response),t.response.headers=AxiosHeaders$1.from(t.response.headers))),Promise.reject(t)}))}const VERSION="1.7.7",validators$1={},deprecatedWarnings=(["object","boolean","number","function","string","symbol"].forEach(((e,t)=>{validators$1[e]=function(r){return typeof r===e||"a"+(t<1?"n ":" ")+e}})),{});function assertOptions(e,t,r){if("object"!=typeof e)throw new AxiosError("options must be an object",AxiosError.ERR_BAD_OPTION_VALUE);var o=Object.keys(e);let a=o.length;for(;0<a--;){var i=o[a];if(n=t[i]){var n,s=e[i];if(!0!==(n=void 0===s||n(s,i,e)))throw new AxiosError("option "+i+" must be "+n,AxiosError.ERR_BAD_OPTION_VALUE)}else if(!0!==r)throw new AxiosError("Unknown option "+i,AxiosError.ERR_BAD_OPTION)}}validators$1.transitional=function(e,t,r){function o(e,t){return"[Axios v"+VERSION+"] Transitional option '"+e+"'"+t+(r?". "+r:"")}return(r,a,i)=>{if(!1===e)throw new AxiosError(o(a," has been removed"+(t?" in "+t:"")),AxiosError.ERR_DEPRECATED);return t&&!deprecatedWarnings[a]&&(deprecatedWarnings[a]=!0,console.warn(o(a," has been deprecated since v"+t+" and will be removed in the near future"))),!e||e(r,a,i)}};var validator={assertOptions:assertOptions,validators:validators$1};const validators=validator.validators;class Axios{constructor(e){this.defaults=e,this.interceptors={request:new InterceptorManager$1,response:new InterceptorManager$1}}async request(e,t){try{return await this._request(e,t)}catch(r){if(r instanceof Error){let o;Error.captureStackTrace?Error.captureStackTrace(o={}):o=new Error,e=o.stack?o.stack.replace(/^.+\n/,""):"";try{r.stack?e&&!String(r.stack).endsWith(e.replace(/^.+\n.+\n/,""))&&(r.stack+="\n"+e):r.stack=e}catch(t){}}throw r}}_request(e,t){"string"==typeof e?(t=t||{}).url=e:t=e||{};const{transitional:r,paramsSerializer:o,headers:a}=t=mergeConfig(this.defaults,t);void 0!==r&&validator.assertOptions(r,{silentJSONParsing:validators.transitional(validators.boolean),forcedJSONParsing:validators.transitional(validators.boolean),clarifyTimeoutError:validators.transitional(validators.boolean)},!1),null!=o&&(utils$1.isFunction(o)?t.paramsSerializer={serialize:o}:validator.assertOptions(o,{encode:validators.function,serialize:validators.function},!0)),t.method=(t.method||this.defaults.method||"get").toLowerCase(),e=a&&utils$1.merge(a.common,a[t.method]),a&&utils$1.forEach(["delete","get","head","post","put","patch","common"],(e=>{delete a[e]})),t.headers=AxiosHeaders$1.concat(e,a);const i=[];let n=!0;this.interceptors.request.forEach((function(e){"function"==typeof e.runWhen&&!1===e.runWhen(t)||(n=n&&e.synchronous,i.unshift(e.fulfilled,e.rejected))}));const s=[];this.interceptors.response.forEach((function(e){s.push(e.fulfilled,e.rejected)}));let l,d,m=0;if(n){d=i.length;let r=t;for(m=0;m<d;){var c=i[m++],g=i[m++];try{r=c(r)}catch(e){g.call(this,e);break}}try{l=dispatchRequest.call(this,r)}catch(e){return Promise.reject(e)}for(m=0,d=s.length;m<d;)l=l.then(s[m++],s[m++])}else{var u=[dispatchRequest.bind(this),void 0];for(u.unshift.apply(u,i),u.push.apply(u,s),d=u.length,l=Promise.resolve(t);m<d;)l=l.then(u[m++],u[m++])}return l}getUri(e){return buildURL(buildFullPath((e=mergeConfig(this.defaults,e)).baseURL,e.url),e.params,e.paramsSerializer)}}utils$1.forEach(["delete","get","head","options"],(function(e){Axios.prototype[e]=function(t,r){return this.request(mergeConfig(r||{},{method:e,url:t,data:(r||{}).data}))}})),utils$1.forEach(["post","put","patch"],(function(e){function t(t){return function(r,o,a){return this.request(mergeConfig(a||{},{method:e,headers:t?{"Content-Type":"multipart/form-data"}:{},url:r,data:o}))}}Axios.prototype[e]=t(),Axios.prototype[e+"Form"]=t(!0)}));var Axios$1=Axios;class CancelToken{constructor(e){if("function"!=typeof e)throw new TypeError("executor must be a function.");let t;this.promise=new Promise((function(e){t=e}));const r=this;this.promise.then((e=>{if(r._listeners){let t=r._listeners.length;for(;0<t--;)r._listeners[t](e);r._listeners=null}})),this.promise.then=e=>{let t;return(e=new Promise((e=>{r.subscribe(e),t=e})).then(e)).cancel=function(){r.unsubscribe(t)},e},e((function(e,o,a){r.reason||(r.reason=new CanceledError(e,o,a),t(r.reason))}))}throwIfRequested(){if(this.reason)throw this.reason}subscribe(e){this.reason?e(this.reason):this._listeners?this._listeners.push(e):this._listeners=[e]}unsubscribe(e){this._listeners&&-1!==(e=this._listeners.indexOf(e))&&this._listeners.splice(e,1)}toAbortSignal(){const e=new AbortController,t=t=>{e.abort(t)};return this.subscribe(t),e.signal.unsubscribe=()=>this.unsubscribe(t),e.signal}static source(){let e;return{token:new CancelToken((function(t){e=t})),cancel:e}}}var CancelToken$1=CancelToken;function spread(e){return function(t){return e.apply(null,t)}}function isAxiosError(e){return utils$1.isObject(e)&&!0===e.isAxiosError}const HttpStatusCode={Continue:100,SwitchingProtocols:101,Processing:102,EarlyHints:103,Ok:200,Created:201,Accepted:202,NonAuthoritativeInformation:203,NoContent:204,ResetContent:205,PartialContent:206,MultiStatus:207,AlreadyReported:208,ImUsed:226,MultipleChoices:300,MovedPermanently:301,Found:302,SeeOther:303,NotModified:304,UseProxy:305,Unused:306,TemporaryRedirect:307,PermanentRedirect:308,BadRequest:400,Unauthorized:401,PaymentRequired:402,Forbidden:403,NotFound:404,MethodNotAllowed:405,NotAcceptable:406,ProxyAuthenticationRequired:407,RequestTimeout:408,Conflict:409,Gone:410,LengthRequired:411,PreconditionFailed:412,PayloadTooLarge:413,UriTooLong:414,UnsupportedMediaType:415,RangeNotSatisfiable:416,ExpectationFailed:417,ImATeapot:418,MisdirectedRequest:421,UnprocessableEntity:422,Locked:423,FailedDependency:424,TooEarly:425,UpgradeRequired:426,PreconditionRequired:428,TooManyRequests:429,RequestHeaderFieldsTooLarge:431,UnavailableForLegalReasons:451,InternalServerError:500,NotImplemented:501,BadGateway:502,ServiceUnavailable:503,GatewayTimeout:504,HttpVersionNotSupported:505,VariantAlsoNegotiates:506,InsufficientStorage:507,LoopDetected:508,NotExtended:510,NetworkAuthenticationRequired:511};Object.entries(HttpStatusCode).forEach((([e,t])=>{HttpStatusCode[t]=e}));var HttpStatusCode$1=HttpStatusCode;function createInstance(e){var t=new Axios$1(e),r=bind(Axios$1.prototype.request,t);return utils$1.extend(r,Axios$1.prototype,t,{allOwnKeys:!0}),utils$1.extend(r,t,null,{allOwnKeys:!0}),r.create=function(t){return createInstance(mergeConfig(e,t))},r}const axios=createInstance(defaults$1);axios.Axios=Axios$1,axios.CanceledError=CanceledError,axios.CancelToken=CancelToken$1,axios.isCancel=isCancel,axios.VERSION=VERSION,axios.toFormData=toFormData,axios.AxiosError=AxiosError,axios.Cancel=axios.CanceledError,axios.all=function(e){return Promise.all(e)},axios.spread=spread,axios.isAxiosError=isAxiosError,axios.mergeConfig=mergeConfig,axios.AxiosHeaders=AxiosHeaders$1,axios.formToJSON=e=>formDataToJSON(utils$1.isHTMLForm(e)?new FormData(e):e),axios.getAdapter=adapters.getAdapter,axios.HttpStatusCode=HttpStatusCode$1,axios.default=axios;var axios$1=axios,commonjsGlobal="undefined"!=typeof globalThis?globalThis:"undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof self?self:{};function getDefaultExportFromCjs(e){return e&&e.__esModule&&Object.prototype.hasOwnProperty.call(e,"default")?e.default:e}function getAugmentedNamespace(e){var t,r;return e.__esModule?e:("function"==typeof(t=e.default)?(r=function e(){return this instanceof e?Reflect.construct(t,arguments,this.constructor):t.apply(this,arguments)}).prototype=t.prototype:r={},Object.defineProperty(r,"__esModule",{value:!0}),Object.keys(e).forEach((function(t){var o=Object.getOwnPropertyDescriptor(e,t);Object.defineProperty(r,t,o.get?o:{enumerable:!0,get:function(){return e[t]}})})),r)}function commonjsRequire(e){throw new Error('Could not dynamically require "'+e+'". Please configure the dynamicRequireTargets or/and ignoreDynamicRequires option of @rollup/plugin-commonjs appropriately for this require call to work.')}var pdf={exports:{}},_nodeResolve_empty={},_nodeResolve_empty$1=Object.freeze({__proto__:null,default:_nodeResolve_empty}),require$$5$1=getAugmentedNamespace(_nodeResolve_empty$1),pdfExports=(function(module,exports){!function(e,t){module.exports=e.pdfjsLib=t()}(globalThis,(()=>(()=>{var __webpack_modules__=[,(e,t)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.VerbosityLevel=t.Util=t.UnknownErrorException=t.UnexpectedResponseException=t.TextRenderingMode=t.RenderingIntentFlag=t.PromiseCapability=t.PermissionFlag=t.PasswordResponses=t.PasswordException=t.PageActionEventType=t.OPS=t.MissingPDFException=t.MAX_IMAGE_SIZE_TO_CACHE=t.LINE_FACTOR=t.LINE_DESCENT_FACTOR=t.InvalidPDFException=t.ImageKind=t.IDENTITY_MATRIX=t.FormatError=t.FeatureTest=t.FONT_IDENTITY_MATRIX=t.DocumentActionEventType=t.CMapCompressionType=t.BaseException=t.BASELINE_FACTOR=t.AnnotationType=t.AnnotationReplyType=t.AnnotationPrefix=t.AnnotationMode=t.AnnotationFlag=t.AnnotationFieldFlag=t.AnnotationEditorType=t.AnnotationEditorPrefix=t.AnnotationEditorParamsType=t.AnnotationBorderStyleType=t.AnnotationActionEventType=t.AbortException=void 0,t.assert=function(e,t){e||n(t)},t.bytesToString=d,t.createValidAbsoluteUrl=function(e,t=null,r=null){if(e)try{if(r&&"string"==typeof e&&(r.addDefaultProtocol&&e.startsWith("www.")&&2<=e.match(/\./g)?.length&&(e="http://"+e),r.tryConvertEncoding))try{e=u(e)}catch{}var o=t?new URL(e,t):new URL(e);if(function(e){switch(e?.protocol){case"http:":case"https:":case"ftp:":case"mailto:":case"tel:":return 1;default:return}}(o))return o}catch{}return null},t.getModificationDate=function(e=new Date){return(e=[e.getUTCFullYear().toString(),(e.getUTCMonth()+1).toString().padStart(2,"0"),e.getUTCDate().toString().padStart(2,"0"),e.getUTCHours().toString().padStart(2,"0"),e.getUTCMinutes().toString().padStart(2,"0"),e.getUTCSeconds().toString().padStart(2,"0")]).join("")},t.getUuid=function(){if("undefined"!=typeof crypto&&"function"==typeof crypto?.randomUUID)return crypto.randomUUID();var e=new Uint8Array(32);if("undefined"!=typeof crypto&&"function"==typeof crypto?.getRandomValues)crypto.getRandomValues(e);else for(let t=0;t<32;t++)e[t]=Math.floor(255*Math.random());return d(e)},t.getVerbosityLevel=function(){return a},t.info=function(e){a>=o.INFOS&&console.log("Info: "+e)},t.isArrayBuffer=function(e){return"object"==typeof e&&void 0!==e?.byteLength},t.isArrayEqual=function(e,t){if(e.length!==t.length)return!1;for(let r=0,o=e.length;r<o;r++)if(e[r]!==t[r])return!1;return!0},t.isNodeJS=void 0,t.normalizeUnicode=function(e){return h||(h=/([\u00a0\u00b5\u037e\u0eb3\u2000-\u200a\u202f\u2126\ufb00-\ufb04\ufb06\ufb20-\ufb36\ufb38-\ufb3c\ufb3e\ufb40-\ufb41\ufb43-\ufb44\ufb46-\ufba1\ufba4-\ufba9\ufbae-\ufbb1\ufbd3-\ufbdc\ufbde-\ufbe7\ufbea-\ufbf8\ufbfc-\ufbfd\ufc00-\ufc5d\ufc64-\ufcf1\ufcf5-\ufd3d\ufd88\ufdf4\ufdfa-\ufdfb\ufe71\ufe77\ufe79\ufe7b\ufe7d]+)|(\ufb05+)/gu,p=new Map([["ſt","ſt"]])),e.replaceAll(h,((e,t,r)=>t?t.normalize("NFKC"):p.get(r)))},t.objectFromMap=function(e){var t=Object.create(null);for(var[r,o]of e)t[r]=o;return t},t.objectSize=function(e){return Object.keys(e).length},t.setVerbosityLevel=function(e){Number.isInteger(e)&&(a=e)},t.shadow=s,t.string32=function(e){return String.fromCharCode(e>>24&255,e>>16&255,e>>8&255,255&e)},t.stringToBytes=m,t.stringToPDFString=function(e){if("ï"<=e[0]){let o;if("þ"===e[0]&&"ÿ"===e[1]?o="utf-16be":"ÿ"===e[0]&&"þ"===e[1]?o="utf-16le":"ï"===e[0]&&"»"===e[1]&&"¿"===e[2]&&(o="utf-8"),o)try{var t=new TextDecoder(o,{fatal:!0}),r=m(e);return t.decode(r)}catch(e){i(`stringToPDFString: "${e}".`)}}var o=[];for(let t=0,r=e.length;t<r;t++){var a=g[e.charCodeAt(t)];o.push(a?String.fromCharCode(a):e.charAt(t))}return o.join("")},t.stringToUTF8String=u,t.unreachable=n,t.utf8StringToString=function(e){return unescape(encodeURIComponent(e))},t.warn=i;var r=!("object"!=typeof process||process+""!="[object process]"||process.versions.nw||process.versions.electron&&process.type&&"browser"!==process.type);t.isNodeJS=r,t.IDENTITY_MATRIX=[1,0,0,1,0,0],t.FONT_IDENTITY_MATRIX=[.001,0,0,.001,0,0],t.MAX_IMAGE_SIZE_TO_CACHE=1e7,t.LINE_FACTOR=1.35,t.LINE_DESCENT_FACTOR=.35,t.BASELINE_FACTOR=.35/1.35,t.RenderingIntentFlag={ANY:1,DISPLAY:2,PRINT:4,SAVE:8,ANNOTATIONS_FORMS:16,ANNOTATIONS_STORAGE:32,ANNOTATIONS_DISABLE:64,OPLIST:256},t.AnnotationMode={DISABLE:0,ENABLE:1,ENABLE_FORMS:2,ENABLE_STORAGE:3},t.AnnotationEditorPrefix="pdfjs_internal_editor_",t.AnnotationEditorType={DISABLE:-1,NONE:0,FREETEXT:3,STAMP:13,INK:15},t.AnnotationEditorParamsType={RESIZE:1,CREATE:2,FREETEXT_SIZE:11,FREETEXT_COLOR:12,FREETEXT_OPACITY:13,INK_COLOR:21,INK_THICKNESS:22,INK_OPACITY:23},t.PermissionFlag={PRINT:4,MODIFY_CONTENTS:8,COPY:16,MODIFY_ANNOTATIONS:32,FILL_INTERACTIVE_FORMS:256,COPY_FOR_ACCESSIBILITY:512,ASSEMBLE:1024,PRINT_HIGH_QUALITY:2048},t.TextRenderingMode={FILL:0,STROKE:1,FILL_STROKE:2,INVISIBLE:3,FILL_ADD_TO_PATH:4,STROKE_ADD_TO_PATH:5,FILL_STROKE_ADD_TO_PATH:6,ADD_TO_PATH:7,FILL_STROKE_MASK:3,ADD_TO_PATH_FLAG:4},t.ImageKind={GRAYSCALE_1BPP:1,RGB_24BPP:2,RGBA_32BPP:3},t.AnnotationType={TEXT:1,LINK:2,FREETEXT:3,LINE:4,SQUARE:5,CIRCLE:6,POLYGON:7,POLYLINE:8,HIGHLIGHT:9,UNDERLINE:10,SQUIGGLY:11,STRIKEOUT:12,STAMP:13,CARET:14,INK:15,POPUP:16,FILEATTACHMENT:17,SOUND:18,MOVIE:19,WIDGET:20,SCREEN:21,PRINTERMARK:22,TRAPNET:23,WATERMARK:24,THREED:25,REDACT:26},t.AnnotationReplyType={GROUP:"Group",REPLY:"R"},t.AnnotationFlag={INVISIBLE:1,HIDDEN:2,PRINT:4,NOZOOM:8,NOROTATE:16,NOVIEW:32,READONLY:64,LOCKED:128,TOGGLENOVIEW:256,LOCKEDCONTENTS:512},t.AnnotationFieldFlag={READONLY:1,REQUIRED:2,NOEXPORT:4,MULTILINE:4096,PASSWORD:8192,NOTOGGLETOOFF:16384,RADIO:32768,PUSHBUTTON:65536,COMBO:131072,EDIT:262144,SORT:524288,FILESELECT:1048576,MULTISELECT:2097152,DONOTSPELLCHECK:4194304,DONOTSCROLL:8388608,COMB:16777216,RICHTEXT:33554432,RADIOSINUNISON:33554432,COMMITONSELCHANGE:67108864},t.AnnotationBorderStyleType={SOLID:1,DASHED:2,BEVELED:3,INSET:4,UNDERLINE:5},t.AnnotationActionEventType={E:"Mouse Enter",X:"Mouse Exit",D:"Mouse Down",U:"Mouse Up",Fo:"Focus",Bl:"Blur",PO:"PageOpen",PC:"PageClose",PV:"PageVisible",PI:"PageInvisible",K:"Keystroke",F:"Format",V:"Validate",C:"Calculate"},t.DocumentActionEventType={WC:"WillClose",WS:"WillSave",DS:"DidSave",WP:"WillPrint",DP:"DidPrint"},t.PageActionEventType={O:"PageOpen",C:"PageClose"};const o={ERRORS:0,WARNINGS:1,INFOS:5};t.VerbosityLevel=o,t.CMapCompressionType={NONE:0,BINARY:1},t.OPS={dependency:1,setLineWidth:2,setLineCap:3,setLineJoin:4,setMiterLimit:5,setDash:6,setRenderingIntent:7,setFlatness:8,setGState:9,save:10,restore:11,transform:12,moveTo:13,lineTo:14,curveTo:15,curveTo2:16,curveTo3:17,closePath:18,rectangle:19,stroke:20,closeStroke:21,fill:22,eoFill:23,fillStroke:24,eoFillStroke:25,closeFillStroke:26,closeEOFillStroke:27,endPath:28,clip:29,eoClip:30,beginText:31,endText:32,setCharSpacing:33,setWordSpacing:34,setHScale:35,setLeading:36,setFont:37,setTextRenderingMode:38,setTextRise:39,moveText:40,setLeadingMoveText:41,setTextMatrix:42,nextLine:43,showText:44,showSpacedText:45,nextLineShowText:46,nextLineSetSpacingShowText:47,setCharWidth:48,setCharWidthAndBounds:49,setStrokeColorSpace:50,setFillColorSpace:51,setStrokeColor:52,setStrokeColorN:53,setFillColor:54,setFillColorN:55,setStrokeGray:56,setFillGray:57,setStrokeRGBColor:58,setFillRGBColor:59,setStrokeCMYKColor:60,setFillCMYKColor:61,shadingFill:62,beginInlineImage:63,beginImageData:64,endInlineImage:65,paintXObject:66,markPoint:67,markPointProps:68,beginMarkedContent:69,beginMarkedContentProps:70,endMarkedContent:71,beginCompat:72,endCompat:73,paintFormXObjectBegin:74,paintFormXObjectEnd:75,beginGroup:76,endGroup:77,beginAnnotation:80,endAnnotation:81,paintImageMaskXObject:83,paintImageMaskXObjectGroup:84,paintImageXObject:85,paintInlineImageXObject:86,paintInlineImageXObjectGroup:87,paintImageXObjectRepeat:88,paintImageMaskXObjectRepeat:89,paintSolidColorImageMask:90,constructPath:91},t.PasswordResponses={NEED_PASSWORD:1,INCORRECT_PASSWORD:2};let a=o.WARNINGS;function i(e){a>=o.WARNINGS&&console.log("Warning: "+e)}function n(e){throw new Error(e)}function s(e,t,r,o=!1){return Object.defineProperty(e,t,{value:r,enumerable:!o,configurable:!0,writable:!1}),r}function l(e,t){this.constructor===l&&n("Cannot initialize BaseException."),this.message=e,this.name=t}l.prototype=new Error,r=l.constructor=l,t.BaseException=r;t.PasswordException=class extends r{constructor(e,t){super(e,"PasswordException"),this.code=t}};t.UnknownErrorException=class extends r{constructor(e,t){super(e,"UnknownErrorException"),this.details=t}};t.InvalidPDFException=class extends r{constructor(e){super(e,"InvalidPDFException")}};t.MissingPDFException=class extends r{constructor(e){super(e,"MissingPDFException")}};t.UnexpectedResponseException=class extends r{constructor(e,t){super(e,"UnexpectedResponseException"),this.status=t}};t.FormatError=class extends r{constructor(e){super(e,"FormatError")}};function d(e){"object"==typeof e&&void 0!==e?.length||n("Invalid argument for bytesToString");var t=e.length;if(t<8192)return String.fromCharCode.apply(null,e);var r=[];for(let a=0;a<t;a+=8192){var o=Math.min(a+8192,t);o=e.subarray(a,o);r.push(String.fromCharCode.apply(null,o))}return r.join("")}function m(e){"string"!=typeof e&&n("Invalid argument for stringToBytes");var t=e.length,r=new Uint8Array(t);for(let o=0;o<t;++o)r[o]=255&e.charCodeAt(o);return r}t.AbortException=class extends r{constructor(e){super(e,"AbortException")}},t.FeatureTest=class{static get isLittleEndian(){return s(this,"isLittleEndian",function(){var e;return 1===((e=new Uint8Array(4))[0]=1,e=new Uint32Array(e.buffer,0,1))[0]}())}static get isEvalSupported(){return s(this,"isEvalSupported",function(){try{return new Function(""),!0}catch{return!1}}())}static get isOffscreenCanvasSupported(){return s(this,"isOffscreenCanvasSupported","undefined"!=typeof OffscreenCanvas)}static get platform(){return"undefined"==typeof navigator?s(this,"platform",{isWin:!1,isMac:!1}):s(this,"platform",{isWin:navigator.platform.includes("Win"),isMac:navigator.platform.includes("Mac")})}static get isCSSRoundSupported(){return s(this,"isCSSRoundSupported",globalThis.CSS?.supports?.("width: round(1.5px, 1px)"))}};const c=[...Array(256).keys()].map((e=>e.toString(16).padStart(2,"0")));t.Util=class{static makeHexColor(e,t,r){return"#"+c[e]+c[t]+c[r]}static scaleMinMax(e,t){let r;e[0]?(e[0]<0&&(r=t[0],t[0]=t[1],t[1]=r),t[0]*=e[0],t[1]*=e[0],e[3]<0&&(r=t[2],t[2]=t[3],t[3]=r),t[2]*=e[3],t[3]*=e[3]):(r=t[0],t[0]=t[2],t[2]=r,r=t[1],t[1]=t[3],t[3]=r,e[1]<0&&(r=t[2],t[2]=t[3],t[3]=r),t[2]*=e[1],t[3]*=e[1],e[2]<0&&(r=t[0],t[0]=t[1],t[1]=r),t[0]*=e[2],t[1]*=e[2]),t[0]+=e[4],t[1]+=e[4],t[2]+=e[5],t[3]+=e[5]}static transform(e,t){return[e[0]*t[0]+e[2]*t[1],e[1]*t[0]+e[3]*t[1],e[0]*t[2]+e[2]*t[3],e[1]*t[2]+e[3]*t[3],e[0]*t[4]+e[2]*t[5]+e[4],e[1]*t[4]+e[3]*t[5]+e[5]]}static applyTransform(e,t){return[e[0]*t[0]+e[1]*t[2]+t[4],e[0]*t[1]+e[1]*t[3]+t[5]]}static applyInverseTransform(e,t){var r=t[0]*t[3]-t[1]*t[2];return[(e[0]*t[3]-e[1]*t[2]+t[2]*t[5]-t[4]*t[3])/r,(-e[0]*t[1]+e[1]*t[0]+t[4]*t[1]-t[5]*t[0])/r]}static getAxialAlignedBoundingBox(e,t){var r=this.applyTransform(e,t),o=this.applyTransform(e.slice(2,4),t),a=this.applyTransform([e[0],e[3]],t);e=this.applyTransform([e[2],e[1]],t);return[Math.min(r[0],o[0],a[0],e[0]),Math.min(r[1],o[1],a[1],e[1]),Math.max(r[0],o[0],a[0],e[0]),Math.max(r[1],o[1],a[1],e[1])]}static inverseTransform(e){var t=e[0]*e[3]-e[1]*e[2];return[e[3]/t,-e[1]/t,-e[2]/t,e[0]/t,(e[2]*e[5]-e[4]*e[3])/t,(e[4]*e[1]-e[5]*e[0])/t]}static singularValueDecompose2dScale(e){var t=[e[0],e[2],e[1],e[3]],r=e[0]*t[0]+e[1]*t[2],o=e[0]*t[1]+e[1]*t[3],a=e[2]*t[0]+e[3]*t[2];e=(t=(r+(e=e[2]*t[1]+e[3]*t[3]))/2)-(r=Math.sqrt((r+e)**2-4*(r*e-a*o))/2)||1;return[Math.sqrt(t+r||1),Math.sqrt(e)]}static normalizeRect(e){var t=e.slice(0);return e[0]>e[2]&&(t[0]=e[2],t[2]=e[0]),e[1]>e[3]&&(t[1]=e[3],t[3]=e[1]),t}static intersect(e,t){var r,o=Math.max(Math.min(e[0],e[2]),Math.min(t[0],t[2])),a=Math.min(Math.max(e[0],e[2]),Math.max(t[0],t[2]));return a<o||(r=Math.max(Math.min(e[1],e[3]),Math.min(t[1],t[3])),(e=Math.min(Math.max(e[1],e[3]),Math.max(t[1],t[3])))<r)?null:[o,r,a,e]}static bezierBoundingBox(e,t,r,o,a,i,n,s){var l=[],d=[[],[]];let m,c,g,u,h,p,x,v;for(let d=0;d<2;++d)g=0===d?(c=6*e-12*r+6*a,m=-3*e+9*r-9*a+3*n,3*r-3*e):(c=6*t-12*o+6*i,m=-3*t+9*o-9*i+3*s,3*o-3*t),Math.abs(m)<1e-12?Math.abs(c)<1e-12||0<(u=-g/c)&&u<1&&l.push(u):(x=c*c-4*g*m,v=Math.sqrt(x),x<0||(0<(h=(-c+v)/(2*m))&&h<1&&l.push(h),0<(p=(-c-v)/(2*m))&&p<1&&l.push(p)));let S,f=l.length;for(var b=f;f--;)S=1-(u=l[f]),d[0][f]=S*S*S*e+3*S*S*u*r+3*S*u*u*a+u*u*u*n,d[1][f]=S*S*S*t+3*S*S*u*o+3*S*u*u*i+u*u*u*s;return d[0][b]=e,d[1][b]=t,d[0][b+1]=n,d[1][b+1]=s,d[0].length=d[1].length=b+2,[Math.min(...d[0]),Math.min(...d[1]),Math.max(...d[0]),Math.max(...d[1])]}};const g=[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,728,711,710,729,733,731,730,732,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,8226,8224,8225,8230,8212,8211,402,8260,8249,8250,8722,8240,8222,8220,8221,8216,8217,8218,8482,64257,64258,321,338,352,376,381,305,322,339,353,382,0,8364];function u(e){return decodeURIComponent(escape(e))}t.PromiseCapability=class{#e=!1;constructor(){this.promise=new Promise(((e,t)=>{this.resolve=t=>{this.#e=!0,e(t)},this.reject=e=>{this.#e=!0,t(e)}}))}get settled(){return this.#e}};let h=null,p=null;t.AnnotationPrefix="pdfjs_internal_id_"},(__unused_webpack_module,exports,__w_pdfjs_require__)=>{Object.defineProperty(exports,"__esModule",{value:!0}),exports.RenderTask=exports.PDFWorkerUtil=exports.PDFWorker=exports.PDFPageProxy=exports.PDFDocumentProxy=exports.PDFDocumentLoadingTask=exports.PDFDataRangeTransport=exports.LoopbackPort=exports.DefaultStandardFontDataFactory=exports.DefaultFilterFactory=exports.DefaultCanvasFactory=exports.DefaultCMapReaderFactory=void 0,Object.defineProperty(exports,"SVGGraphics",{enumerable:!0,get:function(){return _displaySvg.SVGGraphics}}),exports.build=void 0,exports.getDocument=getDocument,exports.version=void 0;var _util=__w_pdfjs_require__(1),_annotation_storage=__w_pdfjs_require__(3),_display_utils=__w_pdfjs_require__(6),_font_loader=__w_pdfjs_require__(9),_displayNode_utils=__w_pdfjs_require__(10),_canvas=__w_pdfjs_require__(11),_worker_options=__w_pdfjs_require__(14),_message_handler=__w_pdfjs_require__(15),_metadata=__w_pdfjs_require__(16),_optional_content_config=__w_pdfjs_require__(17),_transport_stream=__w_pdfjs_require__(18),_displayFetch_stream=__w_pdfjs_require__(19),_displayNetwork=__w_pdfjs_require__(22),_displayNode_stream=__w_pdfjs_require__(23),_displaySvg=__w_pdfjs_require__(24),_xfa_text=__w_pdfjs_require__(25);const DEFAULT_RANGE_CHUNK_SIZE=65536,RENDERING_CANCELLED_TIMEOUT=100,DELAYED_CLEANUP_TIMEOUT=5e3,DefaultCanvasFactory=_util.isNodeJS?_displayNode_utils.NodeCanvasFactory:_display_utils.DOMCanvasFactory,DefaultCMapReaderFactory=(exports.DefaultCanvasFactory=DefaultCanvasFactory,_util.isNodeJS?_displayNode_utils.NodeCMapReaderFactory:_display_utils.DOMCMapReaderFactory),DefaultFilterFactory=(exports.DefaultCMapReaderFactory=DefaultCMapReaderFactory,_util.isNodeJS?_displayNode_utils.NodeFilterFactory:_display_utils.DOMFilterFactory),DefaultStandardFontDataFactory=(exports.DefaultFilterFactory=DefaultFilterFactory,_util.isNodeJS?_displayNode_utils.NodeStandardFontDataFactory:_display_utils.DOMStandardFontDataFactory);function getDocument(e){if("string"==typeof e||e instanceof URL?e={url:e}:(0,_util.isArrayBuffer)(e)&&(e={data:e}),"object"!=typeof e)throw new Error("Invalid parameter in getDocument, need parameter object.");if(!e.url&&!e.data&&!e.range)throw new Error("Invalid parameter object: need either .data, .range or .url");const t=new PDFDocumentLoadingTask,r=t.docId,o=e.url?getUrlProp(e.url):null,a=e.data?getDataProp(e.data):null,i=e.httpHeaders||null,n=!0===e.withCredentials;var s=e.password??null;const l=e.range instanceof PDFDataRangeTransport?e.range:null,d=Number.isInteger(e.rangeChunkSize)&&0<e.rangeChunkSize?e.rangeChunkSize:DEFAULT_RANGE_CHUNK_SIZE;let m=e.worker instanceof PDFWorker?e.worker:null;var c=e.verbosity,g="string"!=typeof e.docBaseUrl||(0,_display_utils.isDataScheme)(e.docBaseUrl)?null:e.docBaseUrl,u="string"==typeof e.cMapUrl?e.cMapUrl:null,h=!1!==e.cMapPacked,p=e.CMapReaderFactory||DefaultCMapReaderFactory,x="string"==typeof e.standardFontDataUrl?e.standardFontDataUrl:null,v=e.StandardFontDataFactory||DefaultStandardFontDataFactory,S=!0!==e.stopAtErrors,f=Number.isInteger(e.maxImageSize)&&-1<e.maxImageSize?e.maxImageSize:-1,b=!1!==e.isEvalSupported,A="boolean"==typeof e.isOffscreenCanvasSupported?e.isOffscreenCanvasSupported:!_util.isNodeJS,_=Number.isInteger(e.canvasMaxAreaInBytes)?e.canvasMaxAreaInBytes:-1,y="boolean"==typeof e.disableFontFace?e.disableFontFace:_util.isNodeJS,T=!0===e.fontExtraProperties,P=!0===e.enableXfa,$=e.ownerDocument||globalThis.document;const M=!0===e.disableRange,w=!0===e.disableStream;var C=!0===e.disableAutoFetch,E=!0===e.pdfBug;const L=l?l.length:e.length??NaN;var O="boolean"==typeof e.useSystemFonts?e.useSystemFonts:!_util.isNodeJS&&!y,I="boolean"==typeof e.useWorkerFetch?e.useWorkerFetch:p===_display_utils.DOMCMapReaderFactory&&v===_display_utils.DOMStandardFontDataFactory&&u&&x&&(0,_display_utils.isValidFetchUrl)(u,document.baseURI)&&(0,_display_utils.isValidFetchUrl)(x,document.baseURI),G=e.canvasFactory||new DefaultCanvasFactory({ownerDocument:$});e=e.filterFactory||new DefaultFilterFactory({docId:r,ownerDocument:$});(0,_util.setVerbosityLevel)(c);const N={canvasFactory:G,filterFactory:e},B=(I||(N.cMapReaderFactory=new p({baseUrl:u,isCompressed:h}),N.standardFontDataFactory=new v({baseUrl:x})),m||(G={verbosity:c,port:_worker_options.GlobalWorkerOptions.workerPort},m=G.port?PDFWorker.fromPort(G):new PDFWorker(G),t._worker=m),{docId:r,apiVersion:"3.11.174",data:a,password:s,disableAutoFetch:C,rangeChunkSize:d,length:L,docBaseUrl:g,enableXfa:P,evaluatorOptions:{maxImageSize:f,disableFontFace:y,ignoreErrors:S,isEvalSupported:b,isOffscreenCanvasSupported:A,canvasMaxAreaInBytes:_,fontExtraProperties:T,useSystemFonts:O,cMapUrl:I?u:null,standardFontDataUrl:I?x:null}}),k={ignoreErrors:S,isEvalSupported:b,disableFontFace:y,fontExtraProperties:T,enableXfa:P,ownerDocument:$,disableAutoFetch:C,pdfBug:E,styleElement:null};return m.promise.then((function(){if(t.destroyed)throw new Error("Loading aborted");var e=_fetchDocument(m,B),s=new Promise((function(e){let t;var r;l?t=new _transport_stream.PDFDataTransportStream({length:L,initialData:l.initialData,progressiveDone:l.progressiveDone,contentDispositionFilename:l.contentDispositionFilename,disableRange:M,disableStream:w},l):a||(r={url:o,length:L,httpHeaders:i,withCredentials:n,rangeChunkSize:d,disableRange:M,disableStream:w},t=new(_util.isNodeJS?_displayNode_stream.PDFNodeStream:(0,_display_utils.isValidFetchUrl)(r.url)?_displayFetch_stream.PDFFetchStream:_displayNetwork.PDFNetworkStream)(r)),e(t)}));return Promise.all([e,s]).then((function([e,o]){if(t.destroyed)throw new Error("Loading aborted");e=new _message_handler.MessageHandler(r,e,m.port),o=new WorkerTransport(e,t,o,k,N),t._transport=o,e.send("Ready",null)}))})).catch(t._capability.reject),t}async function _fetchDocument(e,t){if(e.destroyed)throw new Error("Worker was destroyed");if(t=await e.messageHandler.sendWithPromise("GetDocRequest",t,t.data?[t.data.buffer]:null),e.destroyed)throw new Error("Worker was destroyed");return t}function getUrlProp(e){if(e instanceof URL)return e.href;try{return new URL(e,window.location).href}catch{if(_util.isNodeJS&&"string"==typeof e)return e}throw new Error("Invalid PDF url data: either string or URL-object is expected in the url property.")}function getDataProp(e){if(_util.isNodeJS&&"undefined"!=typeof Buffer&&e instanceof Buffer)throw new Error("Please provide binary data as `Uint8Array`, rather than `Buffer`.");if(e instanceof Uint8Array&&e.byteLength===e.buffer.byteLength)return e;if("string"==typeof e)return(0,_util.stringToBytes)(e);if("object"==typeof e&&!isNaN(e?.length)||(0,_util.isArrayBuffer)(e))return new Uint8Array(e);throw new Error("Invalid PDF binary data: either TypedArray, string, or array-like object is expected in the data property.")}exports.DefaultStandardFontDataFactory=DefaultStandardFontDataFactory;class PDFDocumentLoadingTask{static#t=0;constructor(){this._capability=new _util.PromiseCapability,this._transport=null,this._worker=null,this.docId="d"+PDFDocumentLoadingTask.#t++,this.destroyed=!1,this.onPassword=null,this.onProgress=null}get promise(){return this._capability.promise}async destroy(){this.destroyed=!0;try{this._worker?.port&&(this._worker._pendingDestroy=!0),await(this._transport?.destroy())}catch(e){throw this._worker?.port&&delete this._worker._pendingDestroy,e}this._transport=null,this._worker&&(this._worker.destroy(),this._worker=null)}}exports.PDFDocumentLoadingTask=PDFDocumentLoadingTask;class PDFDataRangeTransport{constructor(e,t,r=!1,o=null){this.length=e,this.initialData=t,this.progressiveDone=r,this.contentDispositionFilename=o,this._rangeListeners=[],this._progressListeners=[],this._progressiveReadListeners=[],this._progressiveDoneListeners=[],this._readyCapability=new _util.PromiseCapability}addRangeListener(e){this._rangeListeners.push(e)}addProgressListener(e){this._progressListeners.push(e)}addProgressiveReadListener(e){this._progressiveReadListeners.push(e)}addProgressiveDoneListener(e){this._progressiveDoneListeners.push(e)}onDataRange(e,t){for(const r of this._rangeListeners)r(e,t)}onDataProgress(e,t){this._readyCapability.promise.then((()=>{for(const r of this._progressListeners)r(e,t)}))}onDataProgressiveRead(e){this._readyCapability.promise.then((()=>{for(const t of this._progressiveReadListeners)t(e)}))}onDataProgressiveDone(){this._readyCapability.promise.then((()=>{for(const e of this._progressiveDoneListeners)e()}))}transportReady(){this._readyCapability.resolve()}requestDataRange(e,t){(0,_util.unreachable)("Abstract method PDFDataRangeTransport.requestDataRange")}abort(){}}exports.PDFDataRangeTransport=PDFDataRangeTransport;class PDFDocumentProxy{constructor(e,t){this._pdfInfo=e,this._transport=t,Object.defineProperty(this,"getJavaScript",{value:()=>((0,_display_utils.deprecated)("`PDFDocumentProxy.getJavaScript`, please use `PDFDocumentProxy.getJSActions` instead."),this.getJSActions().then((e=>{if(!e)return e;var t=[];for(const r in e)t.push(...e[r]);return t})))})}get annotationStorage(){return this._transport.annotationStorage}get filterFactory(){return this._transport.filterFactory}get numPages(){return this._pdfInfo.numPages}get fingerprints(){return this._pdfInfo.fingerprints}get isPureXfa(){return(0,_util.shadow)(this,"isPureXfa",!!this._transport._htmlForXfa)}get allXfaHtml(){return this._transport._htmlForXfa}getPage(e){return this._transport.getPage(e)}getPageIndex(e){return this._transport.getPageIndex(e)}getDestinations(){return this._transport.getDestinations()}getDestination(e){return this._transport.getDestination(e)}getPageLabels(){return this._transport.getPageLabels()}getPageLayout(){return this._transport.getPageLayout()}getPageMode(){return this._transport.getPageMode()}getViewerPreferences(){return this._transport.getViewerPreferences()}getOpenAction(){return this._transport.getOpenAction()}getAttachments(){return this._transport.getAttachments()}getJSActions(){return this._transport.getDocJSActions()}getOutline(){return this._transport.getOutline()}getOptionalContentConfig(){return this._transport.getOptionalContentConfig()}getPermissions(){return this._transport.getPermissions()}getMetadata(){return this._transport.getMetadata()}getMarkInfo(){return this._transport.getMarkInfo()}getData(){return this._transport.getData()}saveDocument(){return this._transport.saveDocument()}getDownloadInfo(){return this._transport.downloadInfoCapability.promise}cleanup(e=!1){return this._transport.startCleanup(e||this.isPureXfa)}destroy(){return this.loadingTask.destroy()}get loadingParams(){return this._transport.loadingParams}get loadingTask(){return this._transport.loadingTask}getFieldObjects(){return this._transport.getFieldObjects()}hasJSActions(){return this._transport.hasJSActions()}getCalculationOrderIds(){return this._transport.getCalculationOrderIds()}}exports.PDFDocumentProxy=PDFDocumentProxy;class PDFPageProxy{#r=null;#o=!1;constructor(e,t,r,o=!1){this._pageIndex=e,this._pageInfo=t,this._transport=r,this._stats=o?new _display_utils.StatTimer:null,this._pdfBug=o,this.commonObjs=r.commonObjs,this.objs=new PDFObjects,this._maybeCleanupAfterRender=!1,this._intentStates=new Map,this.destroyed=!1}get pageNumber(){return this._pageIndex+1}get rotate(){return this._pageInfo.rotate}get ref(){return this._pageInfo.ref}get userUnit(){return this._pageInfo.userUnit}get view(){return this._pageInfo.view}getViewport({scale:e,rotation:t=this.rotate,offsetX:r=0,offsetY:o=0,dontFlip:a=!1}={}){return new _display_utils.PageViewport({viewBox:this.view,scale:e,rotation:t,offsetX:r,offsetY:o,dontFlip:a})}getAnnotations({intent:e="display"}={}){return e=this._transport.getRenderingIntent(e),this._transport.getAnnotations(this._pageIndex,e.renderingIntent)}getJSActions(){return this._transport.getPageJSActions(this._pageIndex)}get filterFactory(){return this._transport.filterFactory}get isPureXfa(){return(0,_util.shadow)(this,"isPureXfa",!!this._transport._htmlForXfa)}async getXfa(){return this._transport._htmlForXfa?.children[this._pageIndex]||null}render({canvasContext:e,viewport:t,intent:r="display",annotationMode:o=_util.AnnotationMode.ENABLE,transform:a=null,background:i=null,optionalContentConfigPromise:n=null,annotationCanvasMap:s=null,pageColors:l=null,printAnnotationStorage:d=null}){this._stats?.time("Overall"),r=this._transport.getRenderingIntent(r,o,d),this.#o=!1,this.#a(),n=n||this._transport.getOptionalContentConfig();let m=this._intentStates.get(r.cacheKey);m||(m=Object.create(null),this._intentStates.set(r.cacheKey,m)),m.streamReaderCancelTimeout&&(clearTimeout(m.streamReaderCancelTimeout),m.streamReaderCancelTimeout=null);const c=!!(r.renderingIntent&_util.RenderingIntentFlag.PRINT),g=(m.displayReadyCapability||(m.displayReadyCapability=new _util.PromiseCapability,m.operatorList={fnArray:[],argsArray:[],lastChunk:!1,separateAnnots:null},this._stats?.time("Page Request"),this._pumpOperatorList(r)),e=>{m.renderTasks.delete(u),(this._maybeCleanupAfterRender||c)&&(this.#o=!0),this.#i(!c),e?(u.capability.reject(e),this._abortOperatorList({intentState:m,reason:e instanceof Error?e:new Error(e)})):u.capability.resolve(),this._stats?.timeEnd("Rendering"),this._stats?.timeEnd("Overall")}),u=new InternalRenderTask({callback:g,params:{canvasContext:e,viewport:t,transform:a,background:i},objs:this.objs,commonObjs:this.commonObjs,annotationCanvasMap:s,operatorList:m.operatorList,pageIndex:this._pageIndex,canvasFactory:this._transport.canvasFactory,filterFactory:this._transport.filterFactory,useRequestAnimationFrame:!c,pdfBug:this._pdfBug,pageColors:l});return(m.renderTasks||=new Set).add(u),o=u.task,Promise.all([m.displayReadyCapability.promise,n]).then((([e,t])=>{this.destroyed?g():(this._stats?.time("Rendering"),u.initializeGraphics({transparency:e,optionalContentConfig:t}),u.operatorListChanged())})).catch(g),o}getOperatorList({intent:e="display",annotationMode:t=_util.AnnotationMode.ENABLE,printAnnotationStorage:r=null}={}){e=this._transport.getRenderingIntent(e,t,r,!0);let o,a=this._intentStates.get(e.cacheKey);return a||(a=Object.create(null),this._intentStates.set(e.cacheKey,a)),a.opListReadCapability||((o=Object.create(null)).operatorListChanged=function(){a.operatorList.lastChunk&&(a.opListReadCapability.resolve(a.operatorList),a.renderTasks.delete(o))},a.opListReadCapability=new _util.PromiseCapability,(a.renderTasks||=new Set).add(o),a.operatorList={fnArray:[],argsArray:[],lastChunk:!1,separateAnnots:null},this._stats?.time("Page Request"),this._pumpOperatorList(e)),a.opListReadCapability.promise}streamTextContent({includeMarkedContent:e=!1,disableNormalization:t=!1}={}){return this._transport.messageHandler.sendWithStream("GetTextContent",{pageIndex:this._pageIndex,includeMarkedContent:!0===e,disableNormalization:!0===t},{highWaterMark:100,size:e=>e.items.length})}getTextContent(e={}){if(this._transport._htmlForXfa)return this.getXfa().then((e=>_xfa_text.XfaText.textContent(e)));const t=this.streamTextContent(e);return new Promise((function(e,r){const o=t.getReader(),a={items:[],styles:Object.create(null)};!function t(){o.read().then((function({value:r,done:o}){o?e(a):(Object.assign(a.styles,r.styles),a.items.push(...r.items),t())}),r)}()}))}getStructTree(){return this._transport.getStructTree(this._pageIndex)}_destroy(){this.destroyed=!0;var e=[];for(const t of this._intentStates.values())if(this._abortOperatorList({intentState:t,reason:new Error("Page was destroyed."),force:!0}),!t.opListReadCapability)for(const r of t.renderTasks)e.push(r.completed),r.cancel();return this.objs.clear(),this.#o=!1,this.#a(),Promise.all(e)}cleanup(e=!1){this.#o=!0;var t=this.#i(!1);return e&&t&&(this._stats&&=new _display_utils.StatTimer),t}#i(e=!1){if(this.#a(),!this.#o||this.destroyed)return!1;if(e)return this.#r=setTimeout((()=>{this.#r=null,this.#i(!1)}),DELAYED_CLEANUP_TIMEOUT),!1;for(var{renderTasks:t,operatorList:r}of this._intentStates.values())if(0<t.size||!r.lastChunk)return!1;return this._intentStates.clear(),this.objs.clear(),!(this.#o=!1)}#a(){this.#r&&(clearTimeout(this.#r),this.#r=null)}_startRenderPage(e,t){(t=this._intentStates.get(t))&&(this._stats?.timeEnd("Page Request"),t.displayReadyCapability?.resolve(e))}_renderPageChunk(e,t){for(let r=0,o=e.length;r<o;r++)t.operatorList.fnArray.push(e.fnArray[r]),t.operatorList.argsArray.push(e.argsArray[r]);t.operatorList.lastChunk=e.lastChunk,t.operatorList.separateAnnots=e.separateAnnots;for(const e of t.renderTasks)e.operatorListChanged();e.lastChunk&&this.#i(!0)}_pumpOperatorList({renderingIntent:e,cacheKey:t,annotationStorageSerializable:r}){var{map:r,transfers:o}=r;const a=this._transport.messageHandler.sendWithStream("GetOperatorList",{pageIndex:this._pageIndex,intent:e,cacheKey:t,annotationStorage:r},o).getReader(),i=this._intentStates.get(t),n=(i.streamReader=a,()=>{a.read().then((({value:e,done:t})=>{t?i.streamReader=null:this._transport.destroyed||(this._renderPageChunk(e,i),n())}),(e=>{if(i.streamReader=null,!this._transport.destroyed){if(i.operatorList){i.operatorList.lastChunk=!0;for(const e of i.renderTasks)e.operatorListChanged();this.#i(!0)}if(i.displayReadyCapability)i.displayReadyCapability.reject(e);else{if(!i.opListReadCapability)throw e;i.opListReadCapability.reject(e)}}}))});n()}_abortOperatorList({intentState:e,reason:t,force:r=!1}){if(e.streamReader){if(e.streamReaderCancelTimeout&&(clearTimeout(e.streamReaderCancelTimeout),e.streamReaderCancelTimeout=null),!r){if(0<e.renderTasks.size)return;if(t instanceof _display_utils.RenderingCancelledException){let r=RENDERING_CANCELLED_TIMEOUT;return 0<t.extraDelay&&t.extraDelay<1e3&&(r+=t.extraDelay),void(e.streamReaderCancelTimeout=setTimeout((()=>{e.streamReaderCancelTimeout=null,this._abortOperatorList({intentState:e,reason:t,force:!0})}),r))}}if(e.streamReader.cancel(new _util.AbortException(t.message)).catch((()=>{})),e.streamReader=null,!this._transport.destroyed){for(var[o,a]of this._intentStates)if(a===e){this._intentStates.delete(o);break}this.cleanup()}}}get stats(){return this._stats}}exports.PDFPageProxy=PDFPageProxy;class LoopbackPort{#n=new Set;#s=Promise.resolve();postMessage(e,t){const r={data:structuredClone(e,t?{transfer:t}:null)};this.#s.then((()=>{for(const e of this.#n)e.call(this,r)}))}addEventListener(e,t){this.#n.add(t)}removeEventListener(e,t){this.#n.delete(t)}terminate(){this.#n.clear()}}exports.LoopbackPort=LoopbackPort;const PDFWorkerUtil={isWorkerDisabled:!1,fallbackWorkerSrc:null,fakeWorkerId:0};if(exports.PDFWorkerUtil=PDFWorkerUtil,_util.isNodeJS&&"function"==typeof commonjsRequire)PDFWorkerUtil.isWorkerDisabled=!0,PDFWorkerUtil.fallbackWorkerSrc="./pdf.worker.js";else if("object"==typeof document){const e=document?.currentScript?.src;e&&(PDFWorkerUtil.fallbackWorkerSrc=e.replace(/(\.(?:min\.)?js)(\?.*)?$/i,".worker$1$2"))}PDFWorkerUtil.isSameOrigin=function(e,t){let r;try{if(!(r=new URL(e)).origin||"null"===r.origin)return!1}catch{return!1}return e=new URL(t,r),r.origin===e.origin},PDFWorkerUtil.createCDNWrapper=function(e){return URL.createObjectURL(new Blob([`importScripts("${e}");`]))};class PDFWorker{static#l;constructor({name:e=null,port:t=null,verbosity:r=(0,_util.getVerbosityLevel)()}={}){if(this.name=e,this.destroyed=!1,this.verbosity=r,this._readyCapability=new _util.PromiseCapability,this._port=null,this._webWorker=null,this._messageHandler=null,t){if(PDFWorker.#l?.has(t))throw new Error("Cannot use more than one PDFWorker per port.");(PDFWorker.#l||=new WeakMap).set(t,this),this._initializeFromPort(t)}else this._initialize()}get promise(){return this._readyCapability.promise}get port(){return this._port}get messageHandler(){return this._messageHandler}_initializeFromPort(e){this._port=e,this._messageHandler=new _message_handler.MessageHandler("main","worker",e),this._messageHandler.on("ready",(function(){})),this._readyCapability.resolve(),this._messageHandler.send("configure",{verbosity:this.verbosity})}_initialize(){if(!PDFWorkerUtil.isWorkerDisabled&&!PDFWorker._mainThreadWorkerMessageHandler){let e=PDFWorker.workerSrc;try{PDFWorkerUtil.isSameOrigin(window.location.href,e)||(e=PDFWorkerUtil.createCDNWrapper(new URL(e,window.location).href));const t=new Worker(e),r=new _message_handler.MessageHandler("main","worker",t),o=()=>{t.removeEventListener("error",a),r.destroy(),t.terminate(),this.destroyed?this._readyCapability.reject(new Error("Worker was destroyed")):this._setupFakeWorker()},a=()=>{this._webWorker||o()},i=(t.addEventListener("error",a),r.on("test",(e=>{t.removeEventListener("error",a),this.destroyed?o():e?(this._messageHandler=r,this._port=t,this._webWorker=t,this._readyCapability.resolve(),r.send("configure",{verbosity:this.verbosity})):(this._setupFakeWorker(),r.destroy(),t.terminate())})),r.on("ready",(e=>{if(t.removeEventListener("error",a),this.destroyed)o();else try{i()}catch{this._setupFakeWorker()}})),()=>{var e=new Uint8Array;r.send("test",e,[e.buffer])});return void i()}catch{(0,_util.info)("The worker has been disabled.")}}this._setupFakeWorker()}_setupFakeWorker(){PDFWorkerUtil.isWorkerDisabled||((0,_util.warn)("Setting up fake worker."),PDFWorkerUtil.isWorkerDisabled=!0),PDFWorker._setupFakeWorkerGlobal.then((e=>{var t,r,o;this.destroyed?this._readyCapability.reject(new Error("Worker was destroyed")):(t=new LoopbackPort,this._port=t,r="fake"+PDFWorkerUtil.fakeWorkerId++,o=new _message_handler.MessageHandler(r+"_worker",r,t),e.setup(o,t),e=new _message_handler.MessageHandler(r,r+"_worker",t),this._messageHandler=e,this._readyCapability.resolve(),e.send("configure",{verbosity:this.verbosity}))})).catch((e=>{this._readyCapability.reject(new Error(`Setting up fake worker failed: "${e.message}".`))}))}destroy(){this.destroyed=!0,this._webWorker&&(this._webWorker.terminate(),this._webWorker=null),PDFWorker.#l?.delete(this._port),this._port=null,this._messageHandler&&(this._messageHandler.destroy(),this._messageHandler=null)}static fromPort(e){if(!e?.port)throw new Error("PDFWorker.fromPort - invalid method signature.");var t=this.#l?.get(e.port);if(t){if(t._pendingDestroy)throw new Error("PDFWorker.fromPort - the worker is being destroyed.\nPlease remember to await `PDFDocumentLoadingTask.destroy()`-calls.");return t}return new PDFWorker(e)}static get workerSrc(){if(_worker_options.GlobalWorkerOptions.workerSrc)return _worker_options.GlobalWorkerOptions.workerSrc;if(null!==PDFWorkerUtil.fallbackWorkerSrc)return _util.isNodeJS||(0,_display_utils.deprecated)('No "GlobalWorkerOptions.workerSrc" specified.'),PDFWorkerUtil.fallbackWorkerSrc;throw new Error('No "GlobalWorkerOptions.workerSrc" specified.')}static get _mainThreadWorkerMessageHandler(){try{return globalThis.pdfjsWorker?.WorkerMessageHandler||null}catch{return null}}static get _setupFakeWorkerGlobal(){const loader=async()=>{const mainWorkerMessageHandler=this._mainThreadWorkerMessageHandler;if(mainWorkerMessageHandler)return mainWorkerMessageHandler;if(_util.isNodeJS&&"function"==typeof commonjsRequire){const worker=eval("require")(this.workerSrc);return worker.WorkerMessageHandler}return await(0,_display_utils.loadScript)(this.workerSrc),window.pdfjsWorker.WorkerMessageHandler};return(0,_util.shadow)(this,"_setupFakeWorkerGlobal",loader())}}exports.PDFWorker=PDFWorker;class WorkerTransport{#d=new Map;#m=new Map;#c=new Map;#g=null;constructor(e,t,r,o,a){this.messageHandler=e,this.loadingTask=t,this.commonObjs=new PDFObjects,this.fontLoader=new _font_loader.FontLoader({ownerDocument:o.ownerDocument,styleElement:o.styleElement}),this._params=o,this.canvasFactory=a.canvasFactory,this.filterFactory=a.filterFactory,this.cMapReaderFactory=a.cMapReaderFactory,this.standardFontDataFactory=a.standardFontDataFactory,this.destroyed=!1,this.destroyCapability=null,this._networkStream=r,this._fullReader=null,this._lastProgress=null,this.downloadInfoCapability=new _util.PromiseCapability,this.setupMessageHandler()}#u(e,t=null){var r=this.#d.get(e);return r||(r=this.messageHandler.sendWithPromise(e,t),this.#d.set(e,r),r)}get annotationStorage(){return(0,_util.shadow)(this,"annotationStorage",new _annotation_storage.AnnotationStorage)}getRenderingIntent(e,t=_util.AnnotationMode.ENABLE,r=null,o=!1){let a=_util.RenderingIntentFlag.DISPLAY,i=_annotation_storage.SerializableEmpty;switch(e){case"any":a=_util.RenderingIntentFlag.ANY;break;case"display":break;case"print":a=_util.RenderingIntentFlag.PRINT;break;default:(0,_util.warn)("getRenderingIntent - invalid intent: "+e)}switch(t){case _util.AnnotationMode.DISABLE:a+=_util.RenderingIntentFlag.ANNOTATIONS_DISABLE;break;case _util.AnnotationMode.ENABLE:break;case _util.AnnotationMode.ENABLE_FORMS:a+=_util.RenderingIntentFlag.ANNOTATIONS_FORMS;break;case _util.AnnotationMode.ENABLE_STORAGE:i=((a+=_util.RenderingIntentFlag.ANNOTATIONS_STORAGE)&_util.RenderingIntentFlag.PRINT&&r instanceof _annotation_storage.PrintAnnotationStorage?r:this.annotationStorage).serializable;break;default:(0,_util.warn)("getRenderingIntent - invalid annotationMode: "+t)}return o&&(a+=_util.RenderingIntentFlag.OPLIST),{renderingIntent:a,cacheKey:a+"_"+i.hash,annotationStorageSerializable:i}}destroy(){if(!this.destroyCapability){this.destroyed=!0,this.destroyCapability=new _util.PromiseCapability,this.#g?.reject(new Error("Worker was destroyed during onPassword callback"));var e=[];for(const t of this.#m.values())e.push(t._destroy());this.#m.clear(),this.#c.clear(),this.hasOwnProperty("annotationStorage")&&this.annotationStorage.resetModified();var t=this.messageHandler.sendWithPromise("Terminate",null);e.push(t),Promise.all(e).then((()=>{this.commonObjs.clear(),this.fontLoader.clear(),this.#d.clear(),this.filterFactory.destroy(),this._networkStream?.cancelAllRequests(new _util.AbortException("Worker was terminated.")),this.messageHandler&&(this.messageHandler.destroy(),this.messageHandler=null),this.destroyCapability.resolve()}),this.destroyCapability.reject)}return this.destroyCapability.promise}setupMessageHandler(){const{messageHandler:e,loadingTask:t}=this;e.on("GetReader",((e,t)=>{(0,_util.assert)(this._networkStream,"GetReader - no `IPDFStream` instance available."),this._fullReader=this._networkStream.getFullReader(),this._fullReader.onProgress=e=>{this._lastProgress={loaded:e.loaded,total:e.total}},t.onPull=()=>{this._fullReader.read().then((function({value:e,done:r}){r?t.close():((0,_util.assert)(e instanceof ArrayBuffer,"GetReader - expected an ArrayBuffer."),t.enqueue(new Uint8Array(e),1,[e]))})).catch((e=>{t.error(e)}))},t.onCancel=e=>{this._fullReader.cancel(e),t.ready.catch((e=>{if(!this.destroyed)throw e}))}})),e.on("ReaderHeadersReady",(e=>{const r=new _util.PromiseCapability,o=this._fullReader;return o.headersReady.then((()=>{o.isStreamingSupported&&o.isRangeSupported||(this._lastProgress&&t.onProgress?.(this._lastProgress),o.onProgress=e=>{t.onProgress?.({loaded:e.loaded,total:e.total})}),r.resolve({isStreamingSupported:o.isStreamingSupported,isRangeSupported:o.isRangeSupported,contentLength:o.contentLength})}),r.reject),r.promise})),e.on("GetRangeReader",((e,t)=>{(0,_util.assert)(this._networkStream,"GetRangeReader - no `IPDFStream` instance available.");const r=this._networkStream.getRangeReader(e.begin,e.end);r?(t.onPull=()=>{r.read().then((function({value:e,done:r}){r?t.close():((0,_util.assert)(e instanceof ArrayBuffer,"GetRangeReader - expected an ArrayBuffer."),t.enqueue(new Uint8Array(e),1,[e]))})).catch((e=>{t.error(e)}))},t.onCancel=e=>{r.cancel(e),t.ready.catch((e=>{if(!this.destroyed)throw e}))}):t.close()})),e.on("GetDoc",(({pdfInfo:e})=>{this._numPages=e.numPages,this._htmlForXfa=e.htmlForXfa,delete e.htmlForXfa,t._capability.resolve(new PDFDocumentProxy(e,this))})),e.on("DocException",(function(e){let r;switch(e.name){case"PasswordException":r=new _util.PasswordException(e.message,e.code);break;case"InvalidPDFException":r=new _util.InvalidPDFException(e.message);break;case"MissingPDFException":r=new _util.MissingPDFException(e.message);break;case"UnexpectedResponseException":r=new _util.UnexpectedResponseException(e.message,e.status);break;case"UnknownErrorException":r=new _util.UnknownErrorException(e.message,e.details);break;default:(0,_util.unreachable)("DocException - expected a valid Error.")}t._capability.reject(r)})),e.on("PasswordRequest",(e=>{if(this.#g=new _util.PromiseCapability,t.onPassword){try{t.onPassword((e=>{e instanceof Error?this.#g.reject(e):this.#g.resolve({password:e})}),e.code)}catch(e){this.#g.reject(e)}}else this.#g.reject(new _util.PasswordException(e.message,e.code));return this.#g.promise})),e.on("DataLoaded",(e=>{t.onProgress?.({loaded:e.length,total:e.length}),this.downloadInfoCapability.resolve(e)})),e.on("StartRenderPage",(e=>{this.destroyed||this.#m.get(e.pageIndex)._startRenderPage(e.transparency,e.cacheKey)})),e.on("commonobj",(([t,r,o])=>{if(!this.destroyed&&!this.commonObjs.has(t))switch(r){case"Font":const i=this._params;if("error"in o){var a=o.error;(0,_util.warn)("Error during font loading: "+a),this.commonObjs.resolve(t,a)}else{a=i.pdfBug&&globalThis.FontInspector?.enabled?(e,t)=>globalThis.FontInspector.fontAdded(e,t):null;const r=new _font_loader.FontFaceObject(o,{isEvalSupported:i.isEvalSupported,disableFontFace:i.disableFontFace,ignoreErrors:i.ignoreErrors,inspectFont:a});this.fontLoader.bind(r).catch((r=>e.sendWithPromise("FontFallback",{id:t}))).finally((()=>{!i.fontExtraProperties&&r.data&&(r.data=null),this.commonObjs.resolve(t,r)}))}break;case"FontPath":case"Image":case"Pattern":this.commonObjs.resolve(t,o);break;default:throw new Error("Got unknown common object type "+r)}})),e.on("obj",(([e,t,r,o])=>{if(!this.destroyed){var a,i,n=this.#m.get(t);if(!n.objs.has(e))switch(r){case"Image":if(n.objs.resolve(e,o),o){let e;(e=o.bitmap?(({width:a,height:i}=o),a*i*4):o.data?.length||0)>_util.MAX_IMAGE_SIZE_TO_CACHE&&(n._maybeCleanupAfterRender=!0)}break;case"Pattern":n.objs.resolve(e,o);break;default:throw new Error("Got unknown object type "+r)}}})),e.on("DocProgress",(e=>{this.destroyed||t.onProgress?.({loaded:e.loaded,total:e.total})})),e.on("FetchBuiltInCMap",(e=>this.destroyed?Promise.reject(new Error("Worker was destroyed.")):this.cMapReaderFactory?this.cMapReaderFactory.fetch(e):Promise.reject(new Error("CMapReaderFactory not initialized, see the `useWorkerFetch` parameter.")))),e.on("FetchStandardFontData",(e=>this.destroyed?Promise.reject(new Error("Worker was destroyed.")):this.standardFontDataFactory?this.standardFontDataFactory.fetch(e):Promise.reject(new Error("StandardFontDataFactory not initialized, see the `useWorkerFetch` parameter."))))}getData(){return this.messageHandler.sendWithPromise("GetData",null)}saveDocument(){this.annotationStorage.size<=0&&(0,_util.warn)("saveDocument called while `annotationStorage` is empty, please use the getData-method instead.");var{map:e,transfers:t}=this.annotationStorage.serializable;return this.messageHandler.sendWithPromise("SaveDocument",{isPureXfa:!!this._htmlForXfa,numPages:this._numPages,annotationStorage:e,filename:this._fullReader?.filename??null},t).finally((()=>{this.annotationStorage.resetModified()}))}getPage(e){if(!Number.isInteger(e)||e<=0||e>this._numPages)return Promise.reject(new Error("Invalid page request."));const t=e-1;return this.#c.get(t)||(e=this.messageHandler.sendWithPromise("GetPage",{pageIndex:t}).then((e=>{if(this.destroyed)throw new Error("Transport destroyed");return e=new PDFPageProxy(t,e,this,this._params.pdfBug),this.#m.set(t,e),e})),this.#c.set(t,e),e)}getPageIndex(e){return"object"!=typeof e||null===e||!Number.isInteger(e.num)||e.num<0||!Number.isInteger(e.gen)||e.gen<0?Promise.reject(new Error("Invalid pageIndex request.")):this.messageHandler.sendWithPromise("GetPageIndex",{num:e.num,gen:e.gen})}getAnnotations(e,t){return this.messageHandler.sendWithPromise("GetAnnotations",{pageIndex:e,intent:t})}getFieldObjects(){return this.#u("GetFieldObjects")}hasJSActions(){return this.#u("HasJSActions")}getCalculationOrderIds(){return this.messageHandler.sendWithPromise("GetCalculationOrderIds",null)}getDestinations(){return this.messageHandler.sendWithPromise("GetDestinations",null)}getDestination(e){return"string"!=typeof e?Promise.reject(new Error("Invalid destination request.")):this.messageHandler.sendWithPromise("GetDestination",{id:e})}getPageLabels(){return this.messageHandler.sendWithPromise("GetPageLabels",null)}getPageLayout(){return this.messageHandler.sendWithPromise("GetPageLayout",null)}getPageMode(){return this.messageHandler.sendWithPromise("GetPageMode",null)}getViewerPreferences(){return this.messageHandler.sendWithPromise("GetViewerPreferences",null)}getOpenAction(){return this.messageHandler.sendWithPromise("GetOpenAction",null)}getAttachments(){return this.messageHandler.sendWithPromise("GetAttachments",null)}getDocJSActions(){return this.#u("GetDocJSActions")}getPageJSActions(e){return this.messageHandler.sendWithPromise("GetPageJSActions",{pageIndex:e})}getStructTree(e){return this.messageHandler.sendWithPromise("GetStructTree",{pageIndex:e})}getOutline(){return this.messageHandler.sendWithPromise("GetOutline",null)}getOptionalContentConfig(){return this.messageHandler.sendWithPromise("GetOptionalContentConfig",null).then((e=>new _optional_content_config.OptionalContentConfig(e)))}getPermissions(){return this.messageHandler.sendWithPromise("GetPermissions",null)}getMetadata(){var e="GetMetadata",t=this.#d.get(e);return t||(t=this.messageHandler.sendWithPromise(e,null).then((e=>({info:e[0],metadata:e[1]?new _metadata.Metadata(e[1]):null,contentDispositionFilename:this._fullReader?.filename??null,contentLength:this._fullReader?.contentLength??null}))),this.#d.set(e,t),t)}getMarkInfo(){return this.messageHandler.sendWithPromise("GetMarkInfo",null)}async startCleanup(e=!1){if(!this.destroyed){await this.messageHandler.sendWithPromise("Cleanup",null);for(const e of this.#m.values())if(!e.cleanup())throw new Error(`startCleanup: Page ${e.pageNumber} is currently rendering.`);this.commonObjs.clear(),e||this.fontLoader.clear(),this.#d.clear(),this.filterFactory.destroy(!0)}}get loadingParams(){var{disableAutoFetch:e,enableXfa:t}=this._params;return(0,_util.shadow)(this,"loadingParams",{disableAutoFetch:e,enableXfa:t})}}class PDFObjects{#h=Object.create(null);#p(e){return this.#h[e]||={capability:new _util.PromiseCapability,data:null}}get(e,t=null){if(t){const r=this.#p(e);return r.capability.promise.then((()=>t(r.data))),null}const r=this.#h[e];if(r?.capability.settled)return r.data;throw new Error(`Requesting object that isn't resolved yet ${e}.`)}has(e){return this.#h[e]?.capability.settled||!1}resolve(e,t=null){(e=this.#p(e)).data=t,e.capability.resolve()}clear(){for(const t in this.#h){var e=this.#h[t].data;e?.bitmap?.close()}this.#h=Object.create(null)}}class RenderTask{#x=null;constructor(e){this.#x=e,this.onContinue=null}get promise(){return this.#x.capability.promise}cancel(e=0){this.#x.cancel(null,e)}get separateAnnots(){var e,t=this.#x.operatorList.separateAnnots;return!!t&&(e=this.#x.annotationCanvasMap,t.form||t.canvas&&0<e?.size)}}exports.RenderTask=RenderTask;class InternalRenderTask{static#v=new WeakSet;constructor({callback:e,params:t,objs:r,commonObjs:o,annotationCanvasMap:a,operatorList:i,pageIndex:n,canvasFactory:s,filterFactory:l,useRequestAnimationFrame:d=!1,pdfBug:m=!1,pageColors:c=null}){this.callback=e,this.params=t,this.objs=r,this.commonObjs=o,this.annotationCanvasMap=a,this.operatorListIdx=null,this.operatorList=i,this._pageIndex=n,this.canvasFactory=s,this.filterFactory=l,this._pdfBug=m,this.pageColors=c,this.running=!1,this.graphicsReadyCallback=null,this.graphicsReady=!1,this._useRequestAnimationFrame=!0===d&&"undefined"!=typeof window,this.cancelled=!1,this.capability=new _util.PromiseCapability,this.task=new RenderTask(this),this._cancelBound=this.cancel.bind(this),this._continueBound=this._continue.bind(this),this._scheduleNextBound=this._scheduleNext.bind(this),this._nextBound=this._next.bind(this),this._canvas=t.canvasContext.canvas}get completed(){return this.capability.promise.catch((function(){}))}initializeGraphics({transparency:e=!1,optionalContentConfig:t}){if(!this.cancelled){if(this._canvas){if(InternalRenderTask.#v.has(this._canvas))throw new Error("Cannot use the same canvas during multiple render() operations. Use different canvas or ensure previous operations were cancelled or completed.");InternalRenderTask.#v.add(this._canvas)}this._pdfBug&&globalThis.StepperManager?.enabled&&(this.stepper=globalThis.StepperManager.create(this._pageIndex),this.stepper.init(this.operatorList),this.stepper.nextBreakPoint=this.stepper.getNextBreakPoint());var{canvasContext:r,viewport:o,transform:a,background:i}=this.params;this.gfx=new _canvas.CanvasGraphics(r,this.commonObjs,this.objs,this.canvasFactory,this.filterFactory,{optionalContentConfig:t},this.annotationCanvasMap,this.pageColors),this.gfx.beginDrawing({transform:a,viewport:o,transparency:e,background:i}),this.operatorListIdx=0,this.graphicsReady=!0,this.graphicsReadyCallback?.()}}cancel(e=null,t=0){this.running=!1,this.cancelled=!0,this.gfx?.endDrawing(),InternalRenderTask.#v.delete(this._canvas),this.callback(e||new _display_utils.RenderingCancelledException("Rendering cancelled, page "+(this._pageIndex+1),t))}operatorListChanged(){this.graphicsReady?(this.stepper?.updateOperatorList(this.operatorList),this.running||this._continue()):this.graphicsReadyCallback||=this._continueBound}_continue(){this.running=!0,this.cancelled||(this.task.onContinue?this.task.onContinue(this._scheduleNextBound):this._scheduleNext())}_scheduleNext(){this._useRequestAnimationFrame?window.requestAnimationFrame((()=>{this._nextBound().catch(this._cancelBound)})):Promise.resolve().then(this._nextBound).catch(this._cancelBound)}async _next(){this.cancelled||(this.operatorListIdx=this.gfx.executeOperatorList(this.operatorList,this.operatorListIdx,this._continueBound,this.stepper),this.operatorListIdx===this.operatorList.argsArray.length&&(this.running=!1,this.operatorList.lastChunk)&&(this.gfx.endDrawing(),InternalRenderTask.#v.delete(this._canvas),this.callback()))}}const version="3.11.174",build=(exports.version=version,"ce8716743");exports.build=build},(e,t,r)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.SerializableEmpty=t.PrintAnnotationStorage=t.AnnotationStorage=void 0;var o=r(1),a=r(4),i=r(8);const n=Object.freeze({map:null,hash:"",transfers:void 0});t.SerializableEmpty=n;class s{#S=!1;#f=new Map;constructor(){this.onSetModified=null,this.onResetModified=null,this.onAnnotationEditor=null}getValue(e,t){return void 0===(e=this.#f.get(e))?t:Object.assign(t,e)}getRawValue(e){return this.#f.get(e)}remove(e){if(this.#f.delete(e),0===this.#f.size&&this.resetModified(),"function"==typeof this.onAnnotationEditor){for(const e of this.#f.values())if(e instanceof a.AnnotationEditor)return;this.onAnnotationEditor(null)}}setValue(e,t){var r=this.#f.get(e);let o=!1;if(void 0!==r)for(var[i,n]of Object.entries(t))r[i]!==n&&(o=!0,r[i]=n);else o=!0,this.#f.set(e,t);o&&this.#b(),t instanceof a.AnnotationEditor&&"function"==typeof this.onAnnotationEditor&&this.onAnnotationEditor(t.constructor._type)}has(e){return this.#f.has(e)}getAll(){return 0<this.#f.size?(0,o.objectFromMap)(this.#f):null}setAll(e){for(var[t,r]of Object.entries(e))this.setValue(t,r)}get size(){return this.#f.size}#b(){this.#S||(this.#S=!0,"function"==typeof this.onSetModified&&this.onSetModified())}resetModified(){this.#S&&(this.#S=!1,"function"==typeof this.onResetModified)&&this.onResetModified()}get print(){return new l(this)}get serializable(){if(0===this.#f.size)return n;var e,t,r=new Map,o=new i.MurmurHash3_64,s=[],l=Object.create(null);let d=!1;for([e,t]of this.#f){var m=t instanceof a.AnnotationEditor?t.serialize(!1,l):t;m&&(r.set(e,m),o.update(e+":"+JSON.stringify(m)),d||=!!m.bitmap)}if(d)for(const e of r.values())e.bitmap&&s.push(e.bitmap);return 0<r.size?{map:r,hash:o.hexdigest(),transfers:s}:n}}t.AnnotationStorage=s;class l extends s{#A;constructor(e){super();var{map:e,hash:t,transfers:r}=e.serializable;e=structuredClone(e,r?{transfer:r}:null);this.#A={map:e,hash:t,transfers:r}}get print(){(0,o.unreachable)("Should not call PrintAnnotationStorage.print")}get serializable(){return this.#A}}t.PrintAnnotationStorage=l},(e,t,r)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.AnnotationEditor=void 0;var o=r(5),a=r(1),i=r(6);class n{#_="";#y=!1;#T=null;#P=null;#$=null;#M=!1;#w=null;#C=this.focusin.bind(this);#E=this.focusout.bind(this);#L=!1;#O=!1;#I=!1;_initialOptions=Object.create(null);_uiManager=null;_focusEventsAllowed=!0;_l10nPromise=null;#G=!1;#N=n._zIndex++;static _borderLineWidth=-1;static _colorManager=new o.ColorManager;static _zIndex=1;static SMALL_EDITOR_SIZE=0;constructor(e){this.constructor===n&&(0,a.unreachable)("Cannot initialize AnnotationEditor."),this.parent=e.parent,this.id=e.id,this.width=this.height=null,this.pageIndex=e.parent.pageIndex,this.name=e.name,this.div=null,this._uiManager=e.uiManager,this.annotationElementId=null,this._willKeepAspectRatio=!1,this._initialOptions.isCentered=e.isCentered,this._structTreeParentId=null;var{rotation:t,rawDims:{pageWidth:r,pageHeight:o,pageX:i,pageY:s}}=this.parent.viewport,[t,r]=(this.rotation=t,this.pageRotation=(360+t-this._uiManager.viewParameters.rotation)%360,this.pageDimensions=[r,o],this.pageTranslation=[i,s],this.parentDimensions);this.x=e.x/t,this.y=e.y/r,this.isAttachedToDOM=!1,this.deleted=!1}get editorType(){return Object.getPrototypeOf(this).constructor._type}static get _defaultLineColor(){return(0,a.shadow)(this,"_defaultLineColor",this._colorManager.getHexCode("CanvasText"))}static deleteAnnotationElement(e){var t=new s({id:e.parent.getNextId(),parent:e.parent,uiManager:e._uiManager});t.annotationElementId=e.annotationElementId,t.deleted=!0,t._uiManager.addToAnnotationStorage(t)}static initialize(e,t=null){if(n._l10nPromise||=new Map(["editor_alt_text_button_label","editor_alt_text_edit_button_label","editor_alt_text_decorative_tooltip"].map((t=>[t,e.get(t)]))),t?.strings)for(const r of t.strings)n._l10nPromise.set(r,e.get(r));-1===n._borderLineWidth&&(t=getComputedStyle(document.documentElement),n._borderLineWidth=parseFloat(t.getPropertyValue("--outline-width"))||0)}static updateDefaultParams(e,t){}static get defaultPropertiesToUpdate(){return[]}static isHandlingMimeForPasting(e){return!1}static paste(e,t){(0,a.unreachable)("Not implemented")}get propertiesToUpdate(){return[]}get _isDraggable(){return this.#G}set _isDraggable(e){this.#G=e,this.div?.classList.toggle("draggable",e)}center(){var[e,t]=this.pageDimensions;switch(this.parentRotation){case 90:this.x-=this.height*t/(2*e),this.y+=this.width*e/(2*t);break;case 180:this.x+=this.width/2,this.y+=this.height/2;break;case 270:this.x+=this.height*t/(2*e),this.y-=this.width*e/(2*t);break;default:this.x-=this.width/2,this.y-=this.height/2}this.fixAndSetPosition()}addCommands(e){this._uiManager.addCommands(e)}get currentLayer(){return this._uiManager.currentLayer}setInBackground(){this.div.style.zIndex=0}setInForeground(){this.div.style.zIndex=this.#N}setParent(e){null!==e&&(this.pageIndex=e.pageIndex,this.pageDimensions=e.pageDimensions),this.parent=e}focusin(e){this._focusEventsAllowed&&(this.#L?this.#L=!1:this.parent.setSelected(this))}focusout(e){this._focusEventsAllowed&&this.isAttachedToDOM&&!e.relatedTarget?.closest("#"+this.id)&&(e.preventDefault(),!this.parent?.isMultipleSelection)&&this.commitOrRemove()}commitOrRemove(){this.isEmpty()?this.remove():this.commit()}commit(){this.addToAnnotationStorage()}addToAnnotationStorage(){this._uiManager.addToAnnotationStorage(this)}setAt(e,t,r,o){var[a,i]=this.parentDimensions;[r,o]=this.screenToPageTranslation(r,o),this.x=(e+r)/a,this.y=(t+o)/i,this.fixAndSetPosition()}#B([e,t],r,o){[r,o]=this.screenToPageTranslation(r,o),this.x+=r/e,this.y+=o/t,this.fixAndSetPosition()}translate(e,t){this.#B(this.parentDimensions,e,t)}translateInPage(e,t){this.#B(this.pageDimensions,e,t),this.div.scrollIntoView({block:"nearest"})}drag(e,t){var[r,o]=this.parentDimensions;if(this.x+=e/r,this.y+=t/o,this.parent&&(this.x<0||1<this.x||this.y<0||1<this.y)){const{x:e,y:t}=this.div.getBoundingClientRect();this.parent.findNewParent(this,e,t)&&(this.x-=Math.floor(this.x),this.y-=Math.floor(this.y))}let{x:a,y:i}=this;var[e,r]=this.#k();a+=e,i+=r,this.div.style.left=(100*a).toFixed(2)+"%",this.div.style.top=(100*i).toFixed(2)+"%",this.div.scrollIntoView({block:"nearest"})}#k(){var[e,t]=this.parentDimensions,r=n._borderLineWidth,o=r/e,a=r/t;switch(this.rotation){case 90:return[-o,a];case 180:return[o,a];case 270:return[o,-a];default:return[-o,-a]}}fixAndSetPosition(){var[e,t]=this.pageDimensions;let{x:r,y:o,width:a,height:i}=this;switch(a*=e,i*=t,r*=e,o*=t,this.rotation){case 0:r=Math.max(0,Math.min(e-a,r)),o=Math.max(0,Math.min(t-i,o));break;case 90:r=Math.max(0,Math.min(e-i,r)),o=Math.min(t,Math.max(a,o));break;case 180:r=Math.min(e,Math.max(a,r)),o=Math.min(t,Math.max(i,o));break;case 270:r=Math.min(e,Math.max(i,r)),o=Math.max(0,Math.min(t-a,o))}this.x=r/=e,this.y=o/=t;var n,[n,s]=this.#k();(n=(r+=n,o+=s,this.div).style).left=(100*r).toFixed(2)+"%",n.top=(100*o).toFixed(2)+"%",this.moveInDOM()}static#R(e,t,r){switch(r){case 90:return[t,-e];case 180:return[-e,-t];case 270:return[-t,e];default:return[e,t]}}screenToPageTranslation(e,t){return n.#R(e,t,this.parentRotation)}pageTranslationToScreen(e,t){return n.#R(e,t,360-this.parentRotation)}#F(e){switch(e){case 90:var[t,r]=this.pageDimensions;return[0,-t/r,r/t,0];case 180:return[-1,0,0,-1];case 270:var[r,t]=this.pageDimensions;return[0,r/t,-t/r,0];default:return[1,0,0,1]}}get parentScale(){return this._uiManager.viewParameters.realScale}get parentRotation(){return(this._uiManager.viewParameters.rotation+this.pageRotation)%360}get parentDimensions(){var{parentScale:e,pageDimensions:[t,r]}=this,t=t*e,r=r*e;return a.FeatureTest.isCSSRoundSupported?[Math.round(t),Math.round(r)]:[t,r]}setDims(e,t){var[r,o]=this.parentDimensions;this.div.style.width=(100*e/r).toFixed(2)+"%",this.#M||(this.div.style.height=(100*t/o).toFixed(2)+"%"),this.#T?.classList.toggle("small",e<n.SMALL_EDITOR_SIZE||t<n.SMALL_EDITOR_SIZE)}fixDims(){var e,t,r=this.div.style,{height:o,width:a}=r,i=a.endsWith("%"),n=!this.#M&&o.endsWith("%");i&&n||([e,t]=this.parentDimensions,i||(r.width=(100*parseFloat(a)/e).toFixed(2)+"%"),this.#M)||n||(r.height=(100*parseFloat(o)/t).toFixed(2)+"%")}getInitialTranslation(){return[0,0]}#D(){if(!this.#w){this.#w=document.createElement("div"),this.#w.classList.add("resizers");var e=["topLeft","topRight","bottomRight","bottomLeft"];this._willKeepAspectRatio||e.push("topMiddle","middleRight","bottomMiddle","middleLeft");for(const r of e){var t=document.createElement("div");this.#w.append(t),t.classList.add("resizer",r),t.addEventListener("pointerdown",this.#U.bind(this,r)),t.addEventListener("contextmenu",i.noContextMenu)}this.div.prepend(this.#w)}}#U(e,t){t.preventDefault();var r=a.FeatureTest.platform.isMac;if(!(0!==t.button||t.ctrlKey&&r)){const r=this.#X.bind(this,e),o=this._isDraggable,a={passive:!(this._isDraggable=!1),capture:!0},i=(window.addEventListener("pointermove",r,a),this.x),n=this.y,s=this.width,l=this.height,d=this.parent.div.style.cursor,m=this.div.style.cursor,c=(this.div.style.cursor=this.parent.div.style.cursor=window.getComputedStyle(t.target).cursor,()=>{this._isDraggable=o,window.removeEventListener("pointerup",c),window.removeEventListener("blur",c),window.removeEventListener("pointermove",r,a),this.parent.div.style.cursor=d,this.div.style.cursor=m;const e=this.x,t=this.y,g=this.width,u=this.height;e===i&&t===n&&g===s&&u===l||this.addCommands({cmd:()=>{this.width=g,this.height=u,this.x=e,this.y=t;var[r,o]=this.parentDimensions;this.setDims(r*g,o*u),this.fixAndSetPosition()},undo:()=>{this.width=s,this.height=l,this.x=i,this.y=n;var[e,t]=this.parentDimensions;this.setDims(e*s,t*l),this.fixAndSetPosition()},mustExec:!0})});window.addEventListener("pointerup",c),window.addEventListener("blur",c)}}#X(e,t){var[r,o]=this.parentDimensions,a=this.x,i=this.y,s=this.width,l=this.height,d=n.MIN_SIZE/r,m=n.MIN_SIZE/o,c=e=>Math.round(1e4*e)/1e4;const g=this.#F(this.rotation);var u=(e,t)=>[g[0]*e+g[2]*t,g[1]*e+g[3]*t];const h=this.#F(360-this.rotation);let p,x,v=!1,S=!1;switch(e){case"topLeft":v=!0,p=(e,t)=>[0,0],x=(e,t)=>[e,t];break;case"topMiddle":p=(e,t)=>[e/2,0],x=(e,t)=>[e/2,t];break;case"topRight":v=!0,p=(e,t)=>[e,0],x=(e,t)=>[0,t];break;case"middleRight":S=!0,p=(e,t)=>[e,t/2],x=(e,t)=>[0,t/2];break;case"bottomRight":v=!0,p=(e,t)=>[e,t],x=(e,t)=>[0,0];break;case"bottomMiddle":p=(e,t)=>[e/2,t],x=(e,t)=>[e/2,0];break;case"bottomLeft":v=!0,p=(e,t)=>[0,t],x=(e,t)=>[e,0];break;case"middleLeft":S=!0,p=(e,t)=>[0,t/2],x=(e,t)=>[e,t/2]}e=p(s,l);var f=x(s,l),b=u(...f);a=c(a+b[0]),i=c(i+b[1]);let A=1,_=1;var[t,y]=this.screenToPageTranslation(t.movementX,t.movementY),T=([t,y]=(P=t/r,T=y/o,[h[0]*P+h[2]*T,h[1]*P+h[3]*T]),v?(P=Math.hypot(s,l),A=_=Math.max(Math.min(Math.hypot(f[0]-e[0]-t,f[1]-e[1]-y)/P,1/s,1/l),d/s,m/l)):S?A=Math.max(d,Math.min(1,Math.abs(f[0]-e[0]-t)))/s:_=Math.max(m,Math.min(1,Math.abs(f[1]-e[1]-y)))/l,c(s*A)),P=c(l*_);d=a-(b=u(...x(T,P)))[0],t=i-b[1];this.width=T,this.height=P,this.x=d,this.y=t,this.setDims(r*T,o*P),this.fixAndSetPosition()}async addAltTextButton(){if(!this.#T){const t=this.#T=document.createElement("button");t.className="altText";var e=await n._l10nPromise.get("editor_alt_text_button_label");t.textContent=e,t.setAttribute("aria-label",e),t.tabIndex="0",t.addEventListener("contextmenu",i.noContextMenu),t.addEventListener("pointerdown",(e=>e.stopPropagation())),t.addEventListener("click",(e=>{e.preventDefault(),this._uiManager.editAltText(this)}),{capture:!0}),t.addEventListener("keydown",(e=>{e.target===t&&"Enter"===e.key&&(e.preventDefault(),this._uiManager.editAltText(this))})),this.#V(),this.div.append(t),n.SMALL_EDITOR_SIZE||(n.SMALL_EDITOR_SIZE=Math.min(128,Math.round(1.4*t.getBoundingClientRect().width)))}}async#V(){const e=this.#T;if(e)if(this.#_||this.#y){n._l10nPromise.get("editor_alt_text_edit_button_label").then((t=>{e.setAttribute("aria-label",t)}));let r=this.#P;if(!r){this.#P=r=document.createElement("span"),r.className="tooltip",r.setAttribute("role","tooltip");var t=r.id="alt-text-tooltip-"+this.id;e.setAttribute("aria-describedby",t),e.addEventListener("mouseenter",(()=>{this.#$=setTimeout((()=>{this.#$=null,this.#P.classList.add("show"),this._uiManager._eventBus.dispatch("reporttelemetry",{source:this,details:{type:"editing",subtype:this.editorType,data:{action:"alt_text_tooltip"}}})}),100)})),e.addEventListener("mouseleave",(()=>{clearTimeout(this.#$),this.#$=null,this.#P?.classList.remove("show")}))}e.classList.add("done"),r.innerText=this.#y?await n._l10nPromise.get("editor_alt_text_decorative_tooltip"):this.#_,r.parentNode||e.append(r)}else e.classList.remove("done"),this.#P?.remove()}getClientDimensions(){return this.div.getBoundingClientRect()}get altTextData(){return{altText:this.#_,decorative:this.#y}}set altTextData({altText:e,decorative:t}){this.#_===e&&this.#y===t||(this.#_=e,this.#y=t,this.#V())}render(){this.div=document.createElement("div"),this.div.setAttribute("data-editor-rotation",(360-this.rotation)%360),this.div.className=this.name,this.div.setAttribute("id",this.id),this.div.setAttribute("tabIndex",0),this.setInForeground(),this.div.addEventListener("focusin",this.#C),this.div.addEventListener("focusout",this.#E);var[e,t]=this.parentDimensions,[e,t]=(this.parentRotation%180!=0&&(this.div.style.maxWidth=(100*t/e).toFixed(2)+"%",this.div.style.maxHeight=(100*e/t).toFixed(2)+"%"),this.getInitialTranslation());return this.translate(e,t),(0,o.bindEvents)(this,this.div,["pointerdown"]),this.div}pointerdown(e){var t=a.FeatureTest.platform.isMac;0!==e.button||e.ctrlKey&&t?e.preventDefault():(this.#L=!0,this.#H(e))}#H(e){if(this._isDraggable){const t=this._uiManager.isSelected(this);let r,o;this._uiManager.setUpDragSession(),t&&(r={passive:!0,capture:!0},o=e=>{var[e,t]=this.screenToPageTranslation(e.movementX,e.movementY);this._uiManager.dragSelectedEditors(e,t)},window.addEventListener("pointermove",o,r));const i=()=>{var n;window.removeEventListener("pointerup",i),window.removeEventListener("blur",i),t&&window.removeEventListener("pointermove",o,r),this.#L=!1,this._uiManager.endDragSession()||(n=a.FeatureTest.platform.isMac,e.ctrlKey&&!n||e.shiftKey||e.metaKey&&n?this.parent.toggleSelected(this):this.parent.setSelected(this))};window.addEventListener("pointerup",i),window.addEventListener("blur",i)}}moveInDOM(){this.parent?.moveEditorInDOM(this)}_setParentAndPosition(e,t,r){e.changeParent(this),this.x=t,this.y=r,this.fixAndSetPosition()}getRect(e,t){var r=this.parentScale,[o,a]=this.pageDimensions,[i,n]=this.pageTranslation,s=e/r,l=t/r,d=this.x*o,m=this.y*a,c=this.width*o,g=this.height*a;switch(this.rotation){case 0:return[d+s+i,a-m-l-g+n,d+s+c+i,a-m-l+n];case 90:return[d+l+i,a-m+s+n,d+l+g+i,a-m+s+c+n];case 180:return[d-s-c+i,a-m+l+n,d-s+i,a-m+l+g+n];case 270:return[d-l-g+i,a-m-s-c+n,d-l+i,a-m-s+n];default:throw new Error("Invalid rotation")}}getRectInCurrentCoords(e,t){var[r,o,a,i]=e,n=a-r,s=i-o;switch(this.rotation){case 0:return[r,t-i,n,s];case 90:return[r,t-o,s,n];case 180:return[a,t-o,n,s];case 270:return[a,t-i,s,n];default:throw new Error("Invalid rotation")}}onceAdded(){}isEmpty(){return!1}enableEditMode(){this.#I=!0}disableEditMode(){this.#I=!1}isInEditMode(){return this.#I}shouldGetKeyboardEvents(){return!1}needsToBeRebuilt(){return this.div&&!this.isAttachedToDOM}rebuild(){this.div?.addEventListener("focusin",this.#C),this.div?.addEventListener("focusout",this.#E)}serialize(e=0,t){(0,a.unreachable)("An editor must be serializable")}static deserialize(e,t,r){t=new this.prototype.constructor({parent:t,id:t.getNextId(),uiManager:r});var[r,o]=(t.rotation=e.rotation,t.pageDimensions),[e,a,i,n]=t.getRectInCurrentCoords(e.rect,o);return t.x=e/r,t.y=a/o,t.width=i/r,t.height=n/o,t}remove(){this.div.removeEventListener("focusin",this.#C),this.div.removeEventListener("focusout",this.#E),this.isEmpty()||this.commit(),this.parent?this.parent.remove(this):this._uiManager.removeEditor(this),this.#T?.remove(),this.#T=null,this.#P=null}get isResizable(){return!1}makeResizable(){this.isResizable&&(this.#D(),this.#w.classList.remove("hidden"))}select(){this.makeResizable(),this.div?.classList.add("selectedEditor")}unselect(){this.#w?.classList.add("hidden"),this.div?.classList.remove("selectedEditor"),this.div?.contains(document.activeElement)&&this._uiManager.currentLayer.div.focus()}updateParams(e,t){}disableEditing(){this.#T&&(this.#T.hidden=!0)}enableEditing(){this.#T&&(this.#T.hidden=!1)}enterInEditMode(){}get contentDiv(){return this.div}get isEditing(){return this.#O}set isEditing(e){this.#O=e,this.parent&&(e?(this.parent.setSelected(this),this.parent.setActiveEditor(this)):this.parent.setActiveEditor(null))}setAspectRatio(e,t){this.#M=!0;var r=this.div.style;r.aspectRatio=e/t,r.height="auto"}static get MIN_SIZE(){return 16}}t.AnnotationEditor=n;class s extends n{constructor(e){super(e),this.annotationElementId=e.annotationElementId,this.deleted=!0}serialize(){return{id:this.annotationElementId,deleted:!0,pageIndex:this.pageIndex}}}},(e,t,r)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.KeyboardManager=t.CommandManager=t.ColorManager=t.AnnotationEditorUIManager=void 0,t.bindEvents=function(e,t,r){for(const o of r)t.addEventListener(o,e[o].bind(e))},t.opacityToHex=function(e){return Math.round(Math.min(255,Math.max(1,255*e))).toString(16).padStart(2,"0")};var o=r(1),a=r(6);class i{#W=0;getId(){return""+o.AnnotationEditorPrefix+this.#W++}}class n{#K=(0,o.getUuid)();#W=0;#Z=null;static get _isSVGFittingCanvas(){const e=new OffscreenCanvas(1,3).getContext("2d"),t=new Image;t.src='data:image/svg+xml;charset=UTF-8,<svg viewBox="0 0 1 1" width="1" height="1" xmlns="http://www.w3.org/2000/svg"><rect width="1" height="1" style="fill:red;"/></svg>';var r=t.decode().then((()=>(e.drawImage(t,0,0,1,1,0,0,1,3),0===new Uint32Array(e.getImageData(0,0,1,1).data.buffer)[0])));return(0,o.shadow)(this,"_isSVGFittingCanvas",r)}async#z(e,t){this.#Z||=new Map;let r=this.#Z.get(e);if(null===r)return null;if(r?.bitmap)r.refCounter+=1;else{try{let e;if(r||={bitmap:null,id:`image_${this.#K}_`+this.#W++,refCounter:0,isSvg:!1},"string"==typeof t){r.url=t;var o=await fetch(t);if(!o.ok)throw new Error(o.statusText);e=await o.blob()}else e=r.file=t;if("image/svg+xml"===e.type){const t=n._isSVGFittingCanvas,o=new FileReader,i=new Image;var a=new Promise(((e,a)=>{i.onload=()=>{r.bitmap=i,r.isSvg=!0,e()},o.onload=async()=>{var e=r.svgUrl=o.result;i.src=await t?e+"#svgView(preserveAspectRatio(none))":e},i.onerror=o.onerror=a}));o.readAsDataURL(e),await a}else r.bitmap=await createImageBitmap(e);r.refCounter=1}catch(e){console.error(e),r=null}this.#Z.set(e,r),r&&this.#Z.set(r.id,r)}return r}async getFromFile(e){var{lastModified:t,name:r,size:o,type:a}=e;return this.#z(t+`_${r}_${o}_`+a,e)}async getFromUrl(e){return this.#z(e,e)}async getFromId(e){return this.#Z||=new Map,(e=this.#Z.get(e))?e.bitmap?(e.refCounter+=1,e):e.file?this.getFromFile(e.file):this.getFromUrl(e.url):null}getSvgUrl(e){return e=this.#Z.get(e),e?.isSvg?e.svgUrl:null}deleteId(e){this.#Z||=new Map,(e=this.#Z.get(e))&&(--e.refCounter,0===e.refCounter)&&(e.bitmap=null)}isValidId(e){return e.startsWith(`image_${this.#K}_`)}}class s{#Q=[];#j=!1;#Y;#J=-1;constructor(e=128){this.#Y=e}add({cmd:e,undo:t,mustExec:r,type:o=NaN,overwriteIfSameType:a=!1,keepUndo:i=!1}){r&&e(),this.#j||(r={cmd:e,undo:t,type:o},-1===this.#J?(0<this.#Q.length&&(this.#Q.length=0),this.#J=0,this.#Q.push(r)):a&&this.#Q[this.#J].type===o?(i&&(r.undo=this.#Q[this.#J].undo),this.#Q[this.#J]=r):((e=this.#J+1)===this.#Y?this.#Q.splice(0,1):(this.#J=e)<this.#Q.length&&this.#Q.splice(e),this.#Q.push(r)))}undo(){-1!==this.#J&&(this.#j=!0,this.#Q[this.#J].undo(),this.#j=!1,--this.#J)}redo(){this.#J<this.#Q.length-1&&(this.#J+=1,this.#j=!0,this.#Q[this.#J].cmd(),this.#j=!1)}hasSomethingToUndo(){return-1!==this.#J}hasSomethingToRedo(){return this.#J<this.#Q.length-1}destroy(){this.#Q=null}}t.CommandManager=s;class l{constructor(e){this.buffer=[],this.callbacks=new Map,this.allKeys=new Set;var t,r,a,i=o.FeatureTest.platform.isMac;for([t,r,a={}]of e)for(const e of t){var n=e.startsWith("mac+");i&&n?(this.callbacks.set(e.slice(4),{callback:r,options:a}),this.allKeys.add(e.split("+").at(-1))):i||n||(this.callbacks.set(e,{callback:r,options:a}),this.allKeys.add(e.split("+").at(-1)))}}#q(e){return e.altKey&&this.buffer.push("alt"),e.ctrlKey&&this.buffer.push("ctrl"),e.metaKey&&this.buffer.push("meta"),e.shiftKey&&this.buffer.push("shift"),this.buffer.push(e.key),e=this.buffer.join("+"),this.buffer.length=0,e}exec(e,t){var r,o,a,i;this.allKeys.has(t.key)&&(r=this.callbacks.get(this.#q(t)))&&(({callback:r,options:{bubbles:o=!1,args:a=[],checker:i=null}}=r),i&&!i(e,t)||(r.bind(e,...a)(),o)||(t.stopPropagation(),t.preventDefault()))}}t.KeyboardManager=l;class d{static _colorsMapping=new Map([["CanvasText",[0,0,0]],["Canvas",[255,255,255]]]);get _colors(){var e=new Map([["CanvasText",null],["Canvas",null]]);return(0,a.getColorValues)(e),(0,o.shadow)(this,"_colors",e)}convert(e){const t=(0,a.getRGB)(e);if(window.matchMedia("(forced-colors: active)").matches)for(var[r,o]of this._colors)if(o.every(((e,r)=>e===t[r])))return d._colorsMapping.get(r);return t}getHexCode(e){var t=this._colors.get(e);return t?o.Util.makeHexColor(...t):e}}t.ColorManager=d;class m{#ee=null;#te=new Map;#re=new Map;#oe=null;#ae=null;#ie=new s;#ne=0;#se=new Set;#le=null;#de=null;#me=new Set;#ce=null;#ge=new i;#ue=!1;#he=!1;#pe=null;#xe=o.AnnotationEditorType.NONE;#ve=new Set;#Se=null;#fe=this.blur.bind(this);#be=this.focus.bind(this);#Ae=this.copy.bind(this);#_e=this.cut.bind(this);#ye=this.paste.bind(this);#Te=this.keydown.bind(this);#Pe=this.onEditingAction.bind(this);#$e=this.onPageChanging.bind(this);#Me=this.onScaleChanging.bind(this);#we=this.onRotationChanging.bind(this);#Ce={isEditing:!1,isEmpty:!0,hasSomethingToUndo:!1,hasSomethingToRedo:!1,hasSelectedEditor:!1};#Ee=[0,0];#Le=null;#Oe=null;#Ie=null;static TRANSLATE_SMALL=1;static TRANSLATE_BIG=10;static get _keyboardManager(){var e=m.prototype,t=e=>{var t=document.activeElement;return t&&e.#Oe.contains(t)&&e.hasSomethingToControl()},r=this.TRANSLATE_SMALL,a=this.TRANSLATE_BIG;return(0,o.shadow)(this,"_keyboardManager",new l([[["ctrl+a","mac+meta+a"],e.selectAll],[["ctrl+z","mac+meta+z"],e.undo],[["ctrl+y","ctrl+shift+z","mac+meta+shift+z","ctrl+shift+Z","mac+meta+shift+Z"],e.redo],[["Backspace","alt+Backspace","ctrl+Backspace","shift+Backspace","mac+Backspace","mac+alt+Backspace","mac+ctrl+Backspace","Delete","ctrl+Delete","shift+Delete","mac+Delete"],e.delete],[["Escape","mac+Escape"],e.unselectAll],[["ArrowLeft","mac+ArrowLeft"],e.translateSelectedEditors,{args:[-r,0],checker:t}],[["ctrl+ArrowLeft","mac+shift+ArrowLeft"],e.translateSelectedEditors,{args:[-a,0],checker:t}],[["ArrowRight","mac+ArrowRight"],e.translateSelectedEditors,{args:[r,0],checker:t}],[["ctrl+ArrowRight","mac+shift+ArrowRight"],e.translateSelectedEditors,{args:[a,0],checker:t}],[["ArrowUp","mac+ArrowUp"],e.translateSelectedEditors,{args:[0,-r],checker:t}],[["ctrl+ArrowUp","mac+shift+ArrowUp"],e.translateSelectedEditors,{args:[0,-a],checker:t}],[["ArrowDown","mac+ArrowDown"],e.translateSelectedEditors,{args:[0,r],checker:t}],[["ctrl+ArrowDown","mac+shift+ArrowDown"],e.translateSelectedEditors,{args:[0,a],checker:t}]]))}constructor(e,t,r,o,i,n){this.#Oe=e,this.#Ie=t,this.#oe=r,this._eventBus=o,this._eventBus._on("editingaction",this.#Pe),this._eventBus._on("pagechanging",this.#$e),this._eventBus._on("scalechanging",this.#Me),this._eventBus._on("rotationchanging",this.#we),this.#ae=i.annotationStorage,this.#ce=i.filterFactory,this.#Se=n,this.viewParameters={realScale:a.PixelsPerInch.PDF_TO_CSS_UNITS,rotation:0}}destroy(){this.#Ge(),this.#Ne(),this._eventBus._off("editingaction",this.#Pe),this._eventBus._off("pagechanging",this.#$e),this._eventBus._off("scalechanging",this.#Me),this._eventBus._off("rotationchanging",this.#we);for(const e of this.#re.values())e.destroy();this.#re.clear(),this.#te.clear(),this.#me.clear(),this.#ee=null,this.#ve.clear(),this.#ie.destroy(),this.#oe.destroy()}get hcmFilter(){return(0,o.shadow)(this,"hcmFilter",this.#Se?this.#ce.addHCMFilter(this.#Se.foreground,this.#Se.background):"none")}get direction(){return(0,o.shadow)(this,"direction",getComputedStyle(this.#Oe).direction)}editAltText(e){this.#oe?.editAltText(this,e)}onPageChanging({pageNumber:e}){this.#ne=e-1}focusMainContainer(){this.#Oe.focus()}findParent(e,t){for(const n of this.#re.values()){var{x:r,y:o,width:a,height:i}=n.div.getBoundingClientRect();if(r<=e&&e<=r+a&&o<=t&&t<=o+i)return n}return null}disableUserSelect(e=!1){this.#Ie.classList.toggle("noUserSelect",e)}addShouldRescale(e){this.#me.add(e)}removeShouldRescale(e){this.#me.delete(e)}onScaleChanging({scale:e}){this.commitOrRemove(),this.viewParameters.realScale=e*a.PixelsPerInch.PDF_TO_CSS_UNITS;for(const e of this.#me)e.onScaleChanging()}onRotationChanging({pagesRotation:e}){this.commitOrRemove(),this.viewParameters.rotation=e}addToAnnotationStorage(e){e.isEmpty()||!this.#ae||this.#ae.has(e.id)||this.#ae.setValue(e.id,e)}#Be(){window.addEventListener("focus",this.#be),window.addEventListener("blur",this.#fe)}#Ne(){window.removeEventListener("focus",this.#be),window.removeEventListener("blur",this.#fe)}blur(){if(this.hasSelection){var e=document.activeElement;for(const t of this.#ve)if(t.div.contains(e)){this.#pe=[t,e],t._focusEventsAllowed=!1;break}}}focus(){if(this.#pe){const[e,t]=this.#pe;this.#pe=null,t.addEventListener("focusin",(()=>{e._focusEventsAllowed=!0}),{once:!0}),t.focus()}}#ke(){window.addEventListener("keydown",this.#Te,{capture:!0})}#Ge(){window.removeEventListener("keydown",this.#Te,{capture:!0})}#Re(){document.addEventListener("copy",this.#Ae),document.addEventListener("cut",this.#_e),document.addEventListener("paste",this.#ye)}#Fe(){document.removeEventListener("copy",this.#Ae),document.removeEventListener("cut",this.#_e),document.removeEventListener("paste",this.#ye)}addEditListeners(){this.#ke(),this.#Re()}removeEditListeners(){this.#Ge(),this.#Fe()}copy(e){if(e.preventDefault(),this.#ee?.commitOrRemove(),this.hasSelection){var t=[];for(const e of this.#ve){var r=e.serialize(!0);r&&t.push(r)}0!==t.length&&e.clipboardData.setData("application/pdfjs",JSON.stringify(t))}}cut(e){this.copy(e),this.delete()}paste(e){e.preventDefault(),e=e.clipboardData;for(const t of e.items)for(const e of this.#de)if(e.isHandlingMimeForPasting(t.type))return void e.paste(t,this.currentLayer);let t=e.getData("application/pdfjs");if(t){try{t=JSON.parse(t)}catch(e){return void(0,o.warn)(`paste: "${e.message}".`)}if(Array.isArray(t)){this.unselectAll();var r=this.currentLayer;try{const e=[];for(const o of t){var a=r.deserialize(o);if(!a)return;e.push(a)}this.addCommands({cmd:()=>{for(const t of e)this.#De(t);this.#Ue(e)},undo:()=>{for(const t of e)t.remove()},mustExec:!0})}catch(e){(0,o.warn)(`paste: "${e.message}".`)}}}}keydown(e){this.getActive()?.shouldGetKeyboardEvents()||m._keyboardManager.exec(this,e)}onEditingAction(e){["undo","redo","delete","selectAll"].includes(e.name)&&this[e.name]()}#Xe(e){Object.entries(e).some((([e,t])=>this.#Ce[e]!==t))&&this._eventBus.dispatch("annotationeditorstateschanged",{source:this,details:Object.assign(this.#Ce,e)})}#Ve(e){this._eventBus.dispatch("annotationeditorparamschanged",{source:this,details:e})}setEditingState(e){e?(this.#Be(),this.#ke(),this.#Re(),this.#Xe({isEditing:this.#xe!==o.AnnotationEditorType.NONE,isEmpty:this.#He(),hasSomethingToUndo:this.#ie.hasSomethingToUndo(),hasSomethingToRedo:this.#ie.hasSomethingToRedo(),hasSelectedEditor:!1})):(this.#Ne(),this.#Ge(),this.#Fe(),this.#Xe({isEditing:!1}),this.disableUserSelect(!1))}registerEditorTypes(e){if(!this.#de){this.#de=e;for(const e of this.#de)this.#Ve(e.defaultPropertiesToUpdate)}}getId(){return this.#ge.getId()}get currentLayer(){return this.#re.get(this.#ne)}getLayer(e){return this.#re.get(e)}get currentPageIndex(){return this.#ne}addLayer(e){this.#re.set(e.pageIndex,e),this.#ue?e.enable():e.disable()}removeLayer(e){this.#re.delete(e.pageIndex)}updateMode(e,t=null){if(this.#xe!==e)if((this.#xe=e)===o.AnnotationEditorType.NONE)this.setEditingState(!1),this.#We();else{this.setEditingState(!0),this.#Ke(),this.unselectAll();for(const t of this.#re.values())t.updateMode(e);if(t)for(const e of this.#te.values())if(e.annotationElementId===t){this.setSelected(e),e.enterInEditMode();break}}}updateToolbar(e){e!==this.#xe&&this._eventBus.dispatch("switchannotationeditormode",{source:this,mode:e})}updateParams(e,t){if(this.#de)if(e===o.AnnotationEditorParamsType.CREATE)this.currentLayer.addNewEditor(e);else{for(const r of this.#ve)r.updateParams(e,t);for(const r of this.#de)r.updateDefaultParams(e,t)}}enableWaiting(e=!1){if(this.#he!==e){this.#he=e;for(const t of this.#re.values())e?t.disableClick():t.enableClick(),t.div.classList.toggle("waiting",e)}}#Ke(){if(!this.#ue){this.#ue=!0;for(const e of this.#re.values())e.enable()}}#We(){if(this.unselectAll(),this.#ue){this.#ue=!1;for(const e of this.#re.values())e.disable()}}getEditors(e){var t=[];for(const r of this.#te.values())r.pageIndex===e&&t.push(r);return t}getEditor(e){return this.#te.get(e)}addEditor(e){this.#te.set(e.id,e)}removeEditor(e){this.#te.delete(e.id),this.unselect(e),e.annotationElementId&&this.#se.has(e.annotationElementId)||this.#ae?.remove(e.id)}addDeletedAnnotationElement(e){this.#se.add(e.annotationElementId),e.deleted=!0}isDeletedAnnotationElement(e){return this.#se.has(e)}removeDeletedAnnotationElement(e){this.#se.delete(e.annotationElementId),e.deleted=!1}#De(e){var t=this.#re.get(e.pageIndex);t?t.addOrRebuild(e):this.addEditor(e)}setActiveEditor(e){this.#ee!==e&&(this.#ee=e)&&this.#Ve(e.propertiesToUpdate)}toggleSelected(e){this.#ve.has(e)?(this.#ve.delete(e),e.unselect(),this.#Xe({hasSelectedEditor:this.hasSelection})):(this.#ve.add(e),e.select(),this.#Ve(e.propertiesToUpdate),this.#Xe({hasSelectedEditor:!0}))}setSelected(e){for(const t of this.#ve)t!==e&&t.unselect();this.#ve.clear(),this.#ve.add(e),e.select(),this.#Ve(e.propertiesToUpdate),this.#Xe({hasSelectedEditor:!0})}isSelected(e){return this.#ve.has(e)}unselect(e){e.unselect(),this.#ve.delete(e),this.#Xe({hasSelectedEditor:this.hasSelection})}get hasSelection(){return 0!==this.#ve.size}undo(){this.#ie.undo(),this.#Xe({hasSomethingToUndo:this.#ie.hasSomethingToUndo(),hasSomethingToRedo:!0,isEmpty:this.#He()})}redo(){this.#ie.redo(),this.#Xe({hasSomethingToUndo:!0,hasSomethingToRedo:this.#ie.hasSomethingToRedo(),isEmpty:this.#He()})}addCommands(e){this.#ie.add(e),this.#Xe({hasSomethingToUndo:!0,hasSomethingToRedo:!1,isEmpty:this.#He()})}#He(){if(0===this.#te.size)return!0;if(1===this.#te.size)for(const e of this.#te.values())return e.isEmpty();return!1}delete(){if(this.commitOrRemove(),this.hasSelection){const e=[...this.#ve];this.addCommands({cmd:()=>{for(const t of e)t.remove()},undo:()=>{for(const t of e)this.#De(t)},mustExec:!0})}}commitOrRemove(){this.#ee?.commitOrRemove()}hasSomethingToControl(){return this.#ee||this.hasSelection}#Ue(e){this.#ve.clear();for(const t of e)t.isEmpty()||(this.#ve.add(t),t.select());this.#Xe({hasSelectedEditor:!0})}selectAll(){for(const e of this.#ve)e.commit();this.#Ue(this.#te.values())}unselectAll(){if(this.#ee)this.#ee.commitOrRemove();else if(this.hasSelection){for(const e of this.#ve)e.unselect();this.#ve.clear(),this.#Xe({hasSelectedEditor:!1})}}translateSelectedEditors(e,t,r=!1){if(r||this.commitOrRemove(),this.hasSelection){this.#Ee[0]+=e,this.#Ee[1]+=t;const[r,o]=this.#Ee,a=[...this.#ve];this.#Le&&clearTimeout(this.#Le),this.#Le=setTimeout((()=>{this.#Le=null,this.#Ee[0]=this.#Ee[1]=0,this.addCommands({cmd:()=>{for(const e of a)this.#te.has(e.id)&&e.translateInPage(r,o)},undo:()=>{for(const e of a)this.#te.has(e.id)&&e.translateInPage(-r,-o)},mustExec:!1})}),1e3);for(const r of a)r.translateInPage(e,t)}}setUpDragSession(){if(this.hasSelection){this.disableUserSelect(!0),this.#le=new Map;for(const e of this.#ve)this.#le.set(e,{savedX:e.x,savedY:e.y,savedPageIndex:e.pageIndex,newX:0,newY:0,newPageIndex:-1})}}endDragSession(){if(!this.#le)return!1;this.disableUserSelect(!1);const e=this.#le;this.#le=null;let t=!1;for(var[{x:r,y:o,pageIndex:a},i]of e)i.newX=r,i.newY=o,i.newPageIndex=a,t||=r!==i.savedX||o!==i.savedY||a!==i.savedPageIndex;if(!t)return!1;const n=(e,t,r,o)=>{var a;this.#te.has(e.id)&&((a=this.#re.get(o))?e._setParentAndPosition(a,t,r):(e.pageIndex=o,e.x=t,e.y=r))};return this.addCommands({cmd:()=>{for(var[t,{newX:r,newY:o,newPageIndex:a}]of e)n(t,r,o,a)},undo:()=>{for(var[t,{savedX:r,savedY:o,savedPageIndex:a}]of e)n(t,r,o,a)},mustExec:!0}),!0}dragSelectedEditors(e,t){if(this.#le)for(const r of this.#le.keys())r.drag(e,t)}rebuild(e){var t;null===e.parent?(t=this.getLayer(e.pageIndex))?(t.changeParent(e),t.addOrRebuild(e)):(this.addEditor(e),this.addToAnnotationStorage(e),e.rebuild()):e.parent.addOrRebuild(e)}isActive(e){return this.#ee===e}getActive(){return this.#ee}getMode(){return this.#xe}get imageManager(){return(0,o.shadow)(this,"imageManager",new n)}}t.AnnotationEditorUIManager=m},(e,t,r)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.StatTimer=t.RenderingCancelledException=t.PixelsPerInch=t.PageViewport=t.PDFDateString=t.DOMStandardFontDataFactory=t.DOMSVGFactory=t.DOMFilterFactory=t.DOMCanvasFactory=t.DOMCMapReaderFactory=void 0,t.deprecated=function(e){console.log("Deprecated API usage: "+e)},t.getColorValues=function(e){var t=document.createElement("span");t.style.visibility="hidden",document.body.append(t);for(const o of e.keys()){t.style.color=o;var r=window.getComputedStyle(t).color;e.set(o,S(r))}t.remove()},t.getCurrentTransform=function(e){var{a:e,b:t,c:r,d:o,e:a,f:i}=e.getTransform();return[e,t,r,o,a,i]},t.getCurrentTransformInverse=function(e){var{a:e,b:t,c:r,d:o,e:a,f:i}=e.getTransform().invertSelf();return[e,t,r,o,a,i]},t.getFilenameFromUrl=function(e,t=!1){return t||([e]=e.split(/[#?]/,1)),e.substring(e.lastIndexOf("/")+1)},t.getPdfFilenameFromUrl=function(e,t="document.pdf"){if("string"!=typeof e)return t;if(p(e))return(0,a.warn)('getPdfFilenameFromUrl: ignore "data:"-URL for performance reasons.'),t;var r=/[^/?#=]+\.pdf\b(?!.*\.pdf\b)/i;e=/^(?:(?:[^:]+:)?\/\/[^/]+)?([^?#]*)(\?[^#]*)?(#.*)?$/.exec(e);let o=r.exec(e[1])||r.exec(e[2])||r.exec(e[3]);if(o&&(o=o[0]).includes("%"))try{o=r.exec(decodeURIComponent(o))[0]}catch{}return o||t},t.getRGB=S,t.getXfaPageViewport=function(e,{scale:t=1,rotation:r=0}){var{width:e,height:o}=e.attributes.style;e=[0,0,parseInt(e),parseInt(o)];return new u({viewBox:e,scale:t,rotation:r})},t.isDataScheme=p,t.isPdfFile=function(e){return"string"==typeof e&&/\.pdf$/i.test(e)},t.isValidFetchUrl=x,t.loadScript=function(e,t=!1){return new Promise(((r,o)=>{const a=document.createElement("script");a.src=e,a.onload=function(e){t&&a.remove(),r(e)},a.onerror=function(){o(new Error("Cannot load script at: "+a.src))},(document.head||document.documentElement).append(a)}))},t.noContextMenu=function(e){e.preventDefault()},t.setLayerDimensions=function(e,t,r=!1,o=!0){var i,n,s,l;t instanceof u&&(({pageWidth:s,pageHeight:n}=t.rawDims),i=e.style,s=`var(--scale-factor) * ${s}px`,n=`var(--scale-factor) * ${n}px`,s=(l=a.FeatureTest.isCSSRoundSupported)?`round(${s}, 1px)`:`calc(${s})`,l=l?`round(${n}, 1px)`:`calc(${n})`,r&&t.rotation%180!=0?(i.width=l,i.height=s):(i.width=s,i.height=l)),o&&e.setAttribute("data-main-rotation",t.rotation)};var o=r(7),a=r(1);const i="http://www.w3.org/2000/svg";class n{static CSS=96;static PDF=72;static PDF_TO_CSS_UNITS=this.CSS/this.PDF}t.PixelsPerInch=n;class s extends o.BaseFilterFactory{#Ze;#ze;#t;#Qe;#je;#Ye;#Je;#qe;#et;#tt;#W=0;constructor({docId:e,ownerDocument:t=globalThis.document}={}){super(),this.#t=e,this.#Qe=t}get#Z(){return this.#Ze||=new Map}get#rt(){var e,t;return this.#ze||((t=(e=this.#Qe.createElement("div")).style).visibility="hidden",t.contain="strict",t.width=t.height=0,t.position="absolute",t.top=t.left=0,t.zIndex=-1,(t=this.#Qe.createElementNS(i,"svg")).setAttribute("width",0),t.setAttribute("height",0),this.#ze=this.#Qe.createElementNS(i,"defs"),e.append(t),t.append(this.#ze),this.#Qe.body.append(e)),this.#ze}addFilter(e){if(!e)return"none";var t=this.#Z.get(e);if(t)return t;let r,o,a,i;if(1===e.length){var n=e[0],s=new Array(256);for(let e=0;e<256;e++)s[e]=n[e]/255;i=r=o=a=s.join(",")}else{var[l,d,m]=e,c=new Array(256),g=new Array(256),u=new Array(256);for(let e=0;e<256;e++)c[e]=l[e]/255,g[e]=d[e]/255,u[e]=m[e]/255;r=c.join(","),o=g.join(","),a=u.join(","),i=""+r+o+a}return(t=this.#Z.get(i))?(this.#Z.set(e,t),t):(t=`g_${this.#t}_transfer_map_`+this.#W++,this.#Z.set(e,e=`url(#${t})`),this.#Z.set(i,e),t=this.#ot(t),this.#at(r,o,a,t),e)}addHCMFilter(e,t){var r=e+"-"+t;if(this.#Ye!==r&&(this.#Ye=r,this.#Je="none",this.#je?.remove(),e)&&t){const n=this.#it(e),s=(e=a.Util.makeHexColor(...n),this.#it(t));if(t=a.Util.makeHexColor(...s),this.#rt.style.color="",("#000000"!==e||"#ffffff"!==t)&&e!==t){var o=new Array(256);for(let e=0;e<=255;e++){var i=e/255;o[e]=i<=.03928?i/12.92:((.055+i)/1.055)**2.4}r=o.join(","),e=`g_${this.#t}_hcm_filter`,t=this.#qe=this.#ot(e),this.#at(r,r,r,t),this.#nt(t),r=(e,t)=>{var r=n[e]/255,o=s[e]/255,a=new Array(t+1);for(let e=0;e<=t;e++)a[e]=r+e/t*(o-r);return a.join(",")},this.#at(r(0,5),r(1,5),r(2,5),t),this.#Je=`url(#${e})`}}return this.#Je}addHighlightHCMFilter(e,t,r,o){var a=e+`-${t}-${r}-`+o;if(this.#et!==a&&(this.#et=a,this.#tt="none",this.#qe?.remove(),e)&&t){var[a,e]=[e,t].map(this.#it.bind(this));let i=Math.round(.2126*a[0]+.7152*a[1]+.0722*a[2]),n=Math.round(.2126*e[0]+.7152*e[1]+.0722*e[2]),[s,l]=[r,o].map(this.#it.bind(this));n<i&&([i,n,s,l]=[n,i,l,s]),this.#rt.style.color="",t=(e,t,r)=>{var o=new Array(256),a=(n-i)/r,s=e/255,l=(t-e)/(255*r);let d=0;for(let e=0;e<=r;e++){var m=Math.round(i+e*a),c=s+e*l;for(let e=d;e<=m;e++)o[e]=c;d=m+1}for(let e=d;e<256;e++)o[e]=o[d-1];return o.join(",")},a=`g_${this.#t}_hcm_highlight_filter`,e=this.#qe=this.#ot(a),this.#nt(e),this.#at(t(s[0],l[0],5),t(s[1],l[1],5),t(s[2],l[2],5),e),this.#tt=`url(#${a})`}return this.#tt}destroy(e=!1){e&&(this.#Je||this.#tt)||(this.#ze&&(this.#ze.parentNode.parentNode.remove(),this.#ze=null),this.#Ze&&(this.#Ze.clear(),this.#Ze=null),this.#W=0)}#nt(e){var t=this.#Qe.createElementNS(i,"feColorMatrix");t.setAttribute("type","matrix"),t.setAttribute("values","0.2126 0.7152 0.0722 0 0 0.2126 0.7152 0.0722 0 0 0.2126 0.7152 0.0722 0 0 0 0 0 1 0"),e.append(t)}#ot(e){var t=this.#Qe.createElementNS(i,"filter");return t.setAttribute("color-interpolation-filters","sRGB"),t.setAttribute("id",e),this.#rt.append(t),t}#st(e,t,r){(t=this.#Qe.createElementNS(i,t)).setAttribute("type","discrete"),t.setAttribute("tableValues",r),e.append(t)}#at(e,t,r,o){var a=this.#Qe.createElementNS(i,"feComponentTransfer");o.append(a),this.#st(a,"feFuncR",e),this.#st(a,"feFuncG",t),this.#st(a,"feFuncB",r)}#it(e){return this.#rt.style.color=e,S(getComputedStyle(this.#rt).getPropertyValue("color"))}}t.DOMFilterFactory=s;class l extends o.BaseCanvasFactory{constructor({ownerDocument:e=globalThis.document}={}){super(),this._document=e}_createCanvas(e,t){var r=this._document.createElement("canvas");return r.width=e,r.height=t,r}}async function d(e,t=!1){if(x(e,document.baseURI)){var r=await fetch(e);if(r.ok)return t?new Uint8Array(await r.arrayBuffer()):(0,a.stringToBytes)(await r.text());throw new Error(r.statusText)}return new Promise(((r,o)=>{const i=new XMLHttpRequest;i.open("GET",e,!0),t&&(i.responseType="arraybuffer"),i.onreadystatechange=()=>{if(i.readyState===XMLHttpRequest.DONE){if(200===i.status||0===i.status){let e;if(t&&i.response?e=new Uint8Array(i.response):!t&&i.responseText&&(e=(0,a.stringToBytes)(i.responseText)),e)return void r(e)}o(new Error(i.statusText))}},i.send(null)}))}t.DOMCanvasFactory=l;class m extends o.BaseCMapReaderFactory{_fetchData(e,t){return d(e,this.isCompressed).then((e=>({cMapData:e,compressionType:t})))}}t.DOMCMapReaderFactory=m;class c extends o.BaseStandardFontDataFactory{_fetchData(e){return d(e,!0)}}t.DOMStandardFontDataFactory=c;class g extends o.BaseSVGFactory{_createSVG(e){return document.createElementNS(i,e)}}t.DOMSVGFactory=g;class u{constructor({viewBox:e,scale:t,rotation:r,offsetX:o=0,offsetY:a=0,dontFlip:i=!1}){this.viewBox=e,this.scale=t,this.rotation=r,this.offsetX=o,this.offsetY=a;var n=(e[2]+e[0])/2,s=(e[3]+e[1])/2;let l,d,m,c,g,u,h,p;switch((r%=360)<0&&(r+=360),r){case 180:l=-1,d=0,m=0,c=1;break;case 90:l=0,d=1,m=1,c=0;break;case 270:l=0,d=-1,m=-1,c=0;break;case 0:l=1,d=0,m=0,c=-1;break;default:throw new Error("PageViewport: Invalid rotation, must be a multiple of 90 degrees.")}i&&(m=-m,c=-c),p=0===l?(g=Math.abs(s-e[1])*t+o,u=Math.abs(n-e[0])*t+a,h=(e[3]-e[1])*t,(e[2]-e[0])*t):(g=Math.abs(n-e[0])*t+o,u=Math.abs(s-e[1])*t+a,h=(e[2]-e[0])*t,(e[3]-e[1])*t),this.transform=[l*t,d*t,m*t,c*t,g-l*t*n-m*t*s,u-d*t*n-c*t*s],this.width=h,this.height=p}get rawDims(){var e=this.viewBox;return(0,a.shadow)(this,"rawDims",{pageWidth:e[2]-e[0],pageHeight:e[3]-e[1],pageX:e[0],pageY:e[1]})}clone({scale:e=this.scale,rotation:t=this.rotation,offsetX:r=this.offsetX,offsetY:o=this.offsetY,dontFlip:a=!1}={}){return new u({viewBox:this.viewBox.slice(),scale:e,rotation:t,offsetX:r,offsetY:o,dontFlip:a})}convertToViewportPoint(e,t){return a.Util.applyTransform([e,t],this.transform)}convertToViewportRectangle(e){var t=a.Util.applyTransform([e[0],e[1]],this.transform);e=a.Util.applyTransform([e[2],e[3]],this.transform);return[t[0],t[1],e[0],e[1]]}convertToPdfPoint(e,t){return a.Util.applyInverseTransform([e,t],this.transform)}}t.PageViewport=u;class h extends a.BaseException{constructor(e,t=0){super(e,"RenderingCancelledException"),this.extraDelay=t}}function p(e){var t=e.length;let r=0;for(;r<t&&""===e[r].trim();)r++;return"data:"===e.substring(r,r+5).toLowerCase()}function x(e,t){try{var r=(t?new URL(e,t):new URL(e)).protocol;return"http:"===r||"https:"===r}catch{return!1}}let v;function S(e){var t;return e.startsWith("#")?[(16711680&(t=parseInt(e.slice(1),16)))>>16,(65280&t)>>8,255&t]:e.startsWith("rgb(")?e.slice(4,-1).split(",").map((e=>parseInt(e))):e.startsWith("rgba(")?e.slice(5,-1).split(",").map((e=>parseInt(e))).slice(0,3):((0,a.warn)(`Not a valid color format: "${e}"`),[0,0,0])}t.RenderingCancelledException=h,t.StatTimer=class{started=Object.create(null);times=[];time(e){e in this.started&&(0,a.warn)("Timer is already running for "+e),this.started[e]=Date.now()}timeEnd(e){e in this.started||(0,a.warn)("Timer has not been started for "+e),this.times.push({name:e,start:this.started[e],end:Date.now()}),delete this.started[e]}toString(){var e,t,r,o,a=[];let i=0;for({name:e}of this.times)i=Math.max(e.length,i);for({name:t,start:r,end:o}of this.times)a.push(`${t.padEnd(i)} ${o-r}ms\n`);return a.join("")}},t.PDFDateString=class{static toDateObject(e){if(!e||"string"!=typeof e)return null;if(!(e=(v||=new RegExp("^D:(\\d{4})(\\d{2})?(\\d{2})?(\\d{2})?(\\d{2})?(\\d{2})?([Z|+|-])?(\\d{2})?'?(\\d{2})?'?")).exec(e)))return null;var t=parseInt(e[1],10),r=1<=(r=parseInt(e[2],10))&&r<=12?r-1:0,o=1<=(o=parseInt(e[3],10))&&o<=31?o:1;let a=parseInt(e[4],10),i=(a=0<=a&&a<=23?a:0,parseInt(e[5],10));i=0<=i&&i<=59?i:0;var n=0<=(n=parseInt(e[6],10))&&n<=59?n:0,s=e[7]||"Z",l=0<=(l=parseInt(e[8],10))&&l<=23?l:0;e=0<=(e=parseInt(e[9],10)||0)&&e<=59?e:0;return"-"===s?(a+=l,i+=e):"+"===s&&(a-=l,i-=e),new Date(Date.UTC(t,r,o,a,i,n))}}},(e,t,r)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.BaseStandardFontDataFactory=t.BaseSVGFactory=t.BaseFilterFactory=t.BaseCanvasFactory=t.BaseCMapReaderFactory=void 0;var o=r(1);t.BaseFilterFactory=class e{constructor(){this.constructor===e&&(0,o.unreachable)("Cannot initialize BaseFilterFactory.")}addFilter(e){return"none"}addHCMFilter(e,t){return"none"}addHighlightHCMFilter(e,t,r,o){return"none"}destroy(e=0){}},t.BaseCanvasFactory=class e{constructor(){this.constructor===e&&(0,o.unreachable)("Cannot initialize BaseCanvasFactory.")}create(e,t){if(e<=0||t<=0)throw new Error("Invalid canvas size");return{canvas:e=this._createCanvas(e,t),context:e.getContext("2d")}}reset(e,t,r){if(!e.canvas)throw new Error("Canvas is not specified");if(t<=0||r<=0)throw new Error("Invalid canvas size");e.canvas.width=t,e.canvas.height=r}destroy(e){if(!e.canvas)throw new Error("Canvas is not specified");e.canvas.width=0,e.canvas.height=0,e.canvas=null,e.context=null}_createCanvas(e,t){(0,o.unreachable)("Abstract method `_createCanvas` called.")}},t.BaseCMapReaderFactory=class e{constructor({baseUrl:t=null,isCompressed:r=!0}){this.constructor===e&&(0,o.unreachable)("Cannot initialize BaseCMapReaderFactory."),this.baseUrl=t,this.isCompressed=r}async fetch({name:e}){if(!this.baseUrl)throw new Error('The CMap "baseUrl" parameter must be specified, ensure that the "cMapUrl" and "cMapPacked" API parameters are provided.');if(!e)throw new Error("CMap name must be specified.");const t=this.baseUrl+e+(this.isCompressed?".bcmap":"");return e=this.isCompressed?o.CMapCompressionType.BINARY:o.CMapCompressionType.NONE,this._fetchData(t,e).catch((e=>{throw new Error(`Unable to load ${this.isCompressed?"binary ":""}CMap at: `+t)}))}_fetchData(e,t){(0,o.unreachable)("Abstract method `_fetchData` called.")}},t.BaseStandardFontDataFactory=class e{constructor({baseUrl:t=null}){this.constructor===e&&(0,o.unreachable)("Cannot initialize BaseStandardFontDataFactory."),this.baseUrl=t}async fetch({filename:e}){if(!this.baseUrl)throw new Error('The standard font "baseUrl" parameter must be specified, ensure that the "standardFontDataUrl" API parameter is provided.');if(!e)throw new Error("Font filename must be specified.");const t=""+this.baseUrl+e;return this._fetchData(t).catch((e=>{throw new Error("Unable to load font data at: "+t)}))}_fetchData(e){(0,o.unreachable)("Abstract method `_fetchData` called.")}},t.BaseSVGFactory=class e{constructor(){this.constructor===e&&(0,o.unreachable)("Cannot initialize BaseSVGFactory.")}create(e,t,r=!1){if(e<=0||t<=0)throw new Error("Invalid SVG dimensions");var o=this._createSVG("svg:svg");return o.setAttribute("version","1.1"),r||(o.setAttribute("width",e+"px"),o.setAttribute("height",t+"px")),o.setAttribute("preserveAspectRatio","none"),o.setAttribute("viewBox",`0 0 ${e} `+t),o}createElement(e){if("string"!=typeof e)throw new Error("Invalid SVG element type");return this._createSVG(e)}_createSVG(e){(0,o.unreachable)("Abstract method `_createSVG` called.")}}},(e,t,r)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.MurmurHash3_64=void 0;var o=r(1);const a=4294901760,i=65535;t.MurmurHash3_64=class{constructor(e){this.h1=e?4294967295&e:3285377520,this.h2=e?4294967295&e:3285377520}update(e){let t,r;if("string"==typeof e){t=new Uint8Array(2*e.length);for(let o=r=0,a=e.length;o<a;o++){var n=e.charCodeAt(o);n<=255?t[r++]=n:(t[r++]=n>>>8,t[r++]=255&n)}}else{if(!(0,o.isArrayBuffer)(e))throw new Error("Wrong data format in MurmurHash3_64_update. Input must be a string or array.");t=e.slice(),r=t.byteLength}var s=r>>2,l=r-4*s,d=new Uint32Array(t.buffer,0,s);let m,c=0,g=this.h1,u=this.h2;var h=3432918353,p=461845907;for(let e=0;e<s;e++)1&e?(c=(c=(c=(c=d[e])*h&a|11601*c&i)<<15|c>>>17)*p&a|13715*c&i,g=5*(g=(g^=c)<<13|g>>>19)+3864292196):(m=(m=(m=(m=d[e])*h&a|11601*m&i)<<15|m>>>17)*p&a|13715*m&i,u=5*(u=(u^=m)<<13|u>>>19)+3864292196);switch(c=0,l){case 3:c^=t[4*s+2]<<16;case 2:c^=t[4*s+1]<<8;case 1:c=(c=(c=(c^=t[4*s])*h&a|11601*c&i)<<15|c>>>17)*p&a|13715*c&i,1&s?g^=c:u^=c}this.h1=g,this.h2=u}hexdigest(){var e=this.h1,t=this.h2;e=3981806797*(e^=t>>>1)&a|36045*e&i;return e=444984403*(e^=(t=4283543511*t&a|(2950163797*(t<<16|e>>>16)&a)>>>16)>>>1)&a|60499*e&i,((e^=(t=3301882366*t&a|(3120437893*(t<<16|e>>>16)&a)>>>16)>>>1)>>>0).toString(16).padStart(8,"0")+(t>>>0).toString(16).padStart(8,"0")}}},(e,t,r)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.FontLoader=t.FontFaceObject=void 0;var o=r(1);t.FontLoader=class{#lt=new Set;constructor({ownerDocument:e=globalThis.document}){this._document=e,this.nativeFontFaces=new Set,this.styleElement=null,this.loadingRequests=[],this.loadTestFontId=0}addNativeFontFace(e){this.nativeFontFaces.add(e),this._document.fonts.add(e)}removeNativeFontFace(e){this.nativeFontFaces.delete(e),this._document.fonts.delete(e)}insertRule(e){this.styleElement||(this.styleElement=this._document.createElement("style"),this._document.documentElement.getElementsByTagName("head")[0].append(this.styleElement));var t=this.styleElement.sheet;t.insertRule(e,t.cssRules.length)}clear(){for(const e of this.nativeFontFaces)this._document.fonts.delete(e);this.nativeFontFaces.clear(),this.#lt.clear(),this.styleElement&&(this.styleElement.remove(),this.styleElement=null)}async loadSystemFont(e){if(e&&!this.#lt.has(e.loadedName))if((0,o.assert)(!this.disableFontFace,"loadSystemFont shouldn't be called when `disableFontFace` is set."),this.isFontLoadingAPISupported){var{loadedName:t,src:r,style:a}=e,r=new FontFace(t,r,a);this.addNativeFontFace(r);try{await r.load(),this.#lt.add(t)}catch{(0,o.warn)(`Cannot load system font: ${e.baseFontName}, installing it could help to improve PDF rendering.`),this.removeNativeFontFace(r)}}else(0,o.unreachable)("Not implemented: loadSystemFont without the Font Loading API.")}async bind(e){if(!(e.attached||e.missingFile&&!e.systemFontInfo))if(e.attached=!0,e.systemFontInfo)await this.loadSystemFont(e.systemFontInfo);else if(this.isFontLoadingAPISupported){var t=e.createNativeFontFace();if(t){this.addNativeFontFace(t);try{await t.loaded}catch(r){throw(0,o.warn)(`Failed to load font '${t.family}': '${r}'.`),e.disableFontFace=!0,r}}}else(t=e.createFontFaceRule())&&(this.insertRule(t),this.isSyncFontLoadingSupported||await new Promise((t=>{t=this._queueLoadingCallback(t),this._prepareFontLoadEvent(e,t)})))}get isFontLoadingAPISupported(){var e=!!this._document?.fonts;return(0,o.shadow)(this,"isFontLoadingAPISupported",e)}get isSyncFontLoadingSupported(){let e=!1;return(o.isNodeJS||"undefined"!=typeof navigator&&/Mozilla\/5.0.*?rv:\d+.*? Gecko/.test(navigator.userAgent))&&(e=!0),(0,o.shadow)(this,"isSyncFontLoadingSupported",e)}_queueLoadingCallback(e){const t=this.loadingRequests,r={done:!1,complete:function(){for((0,o.assert)(!r.done,"completeRequest() cannot be called twice."),r.done=!0;0<t.length&&t[0].done;){var e=t.shift();setTimeout(e.callback,0)}},callback:e};return t.push(r),r}get _loadTestFont(){var e=atob("T1RUTwALAIAAAwAwQ0ZGIDHtZg4AAAOYAAAAgUZGVE1lkzZwAAAEHAAAABxHREVGABQAFQAABDgAAAAeT1MvMlYNYwkAAAEgAAAAYGNtYXABDQLUAAACNAAAAUJoZWFk/xVFDQAAALwAAAA2aGhlYQdkA+oAAAD0AAAAJGhtdHgD6AAAAAAEWAAAAAZtYXhwAAJQAAAAARgAAAAGbmFtZVjmdH4AAAGAAAAAsXBvc3T/hgAzAAADeAAAACAAAQAAAAEAALZRFsRfDzz1AAsD6AAAAADOBOTLAAAAAM4KHDwAAAAAA+gDIQAAAAgAAgAAAAAAAAABAAADIQAAAFoD6AAAAAAD6AABAAAAAAAAAAAAAAAAAAAAAQAAUAAAAgAAAAQD6AH0AAUAAAKKArwAAACMAooCvAAAAeAAMQECAAACAAYJAAAAAAAAAAAAAQAAAAAAAAAAAAAAAFBmRWQAwAAuAC4DIP84AFoDIQAAAAAAAQAAAAAAAAAAACAAIAABAAAADgCuAAEAAAAAAAAAAQAAAAEAAAAAAAEAAQAAAAEAAAAAAAIAAQAAAAEAAAAAAAMAAQAAAAEAAAAAAAQAAQAAAAEAAAAAAAUAAQAAAAEAAAAAAAYAAQAAAAMAAQQJAAAAAgABAAMAAQQJAAEAAgABAAMAAQQJAAIAAgABAAMAAQQJAAMAAgABAAMAAQQJAAQAAgABAAMAAQQJAAUAAgABAAMAAQQJAAYAAgABWABYAAAAAAAAAwAAAAMAAAAcAAEAAAAAADwAAwABAAAAHAAEACAAAAAEAAQAAQAAAC7//wAAAC7////TAAEAAAAAAAABBgAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMAAAAAAAD/gwAyAAAAAQAAAAAAAAAAAAAAAAAAAAABAAQEAAEBAQJYAAEBASH4DwD4GwHEAvgcA/gXBIwMAYuL+nz5tQXkD5j3CBLnEQACAQEBIVhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYAAABAQAADwACAQEEE/t3Dov6fAH6fAT+fPp8+nwHDosMCvm1Cvm1DAz6fBQAAAAAAAABAAAAAMmJbzEAAAAAzgTjFQAAAADOBOQpAAEAAAAAAAAADAAUAAQAAAABAAAAAgABAAAAAAAAAAAD6AAAAAAAAA==");return(0,o.shadow)(this,"_loadTestFont",e)}_prepareFontLoadEvent(e,t){function r(e,t){return e.charCodeAt(t)<<24|e.charCodeAt(t+1)<<16|e.charCodeAt(t+2)<<8|255&e.charCodeAt(t+3)}function a(e,t,r,o){return e.substring(0,t)+o+e.substring(t+r)}let i,n;var s=this._document.createElement("canvas");s.width=1,s.height=1;const l=s.getContext("2d");let d=0;var m="lt"+Date.now()+this.loadTestFontId++;let c=r(s=a(this._loadTestFont,976,m.length,m),16);for(i=0,n=m.length-3;i<n;i+=4)c=c-1482184792+r(m,i)|0;i<m.length&&(c=c-1482184792+r(m+"XXX",i)|0),s=a(s,16,4,(0,o.string32)(c)),s=`url(data:font/opentype;base64,${btoa(s)});`,this.insertRule(`@font-face {font-family:"${m}";src:${s}}`);const g=this._document.createElement("div");g.style.visibility="hidden",g.style.width=g.style.height="10px",g.style.position="absolute",g.style.top=g.style.left="0px";for(const t of[e.loadedName,m]){var u=this._document.createElement("span");u.textContent="Hi",u.style.fontFamily=t,g.append(u)}this._document.body.append(g),function e(t,r){30<++d?((0,o.warn)("Load test font never loaded."),r()):(l.font="30px "+t,l.fillText(".",0,20),0<l.getImageData(0,0,1,1).data[3]?r():setTimeout(e.bind(null,t,r)))}(m,(()=>{g.remove(),t.complete()}))}},t.FontFaceObject=class{constructor(e,{isEvalSupported:t=!0,disableFontFace:r=!1,ignoreErrors:o=!1,inspectFont:a=null}){this.compiledGlyphs=Object.create(null);for(const t in e)this[t]=e[t];this.isEvalSupported=!1!==t,this.disableFontFace=!0===r,this.ignoreErrors=!0===o,this._inspectFont=a}createNativeFontFace(){if(!this.data||this.disableFontFace)return null;let e;var t;return e=this.cssFontInfo?(t={weight:this.cssFontInfo.fontWeight},this.cssFontInfo.italicAngle&&(t.style=`oblique ${this.cssFontInfo.italicAngle}deg`),new FontFace(this.cssFontInfo.fontFamily,this.data,t)):new FontFace(this.loadedName,this.data,{}),this._inspectFont?.(this),e}createFontFaceRule(){if(!this.data||this.disableFontFace)return null;var e=(0,o.bytesToString)(this.data);e=`url(data:${this.mimetype};base64,${btoa(e)});`;let t;if(this.cssFontInfo){let r=`font-weight: ${this.cssFontInfo.fontWeight};`;this.cssFontInfo.italicAngle&&(r+=`font-style: oblique ${this.cssFontInfo.italicAngle}deg;`),t=`@font-face {font-family:"${this.cssFontInfo.fontFamily}";${r}src:${e}}`}else t=`@font-face {font-family:"${this.loadedName}";src:${e}}`;return this._inspectFont?.(this,e),t}getPathGenerator(e,t){if(void 0!==this.compiledGlyphs[t])return this.compiledGlyphs[t];let r;try{r=e.get(this.loadedName+"_path_"+t)}catch(e){if(this.ignoreErrors)return(0,o.warn)(`getPathGenerator - ignoring character: "${e}".`),this.compiledGlyphs[t]=function(e,t){};throw e}if(this.isEvalSupported&&o.FeatureTest.isEvalSupported){var a=[];for(const e of r){var i=void 0!==e.args?e.args.join(","):"";a.push("c.",e.cmd,"(",i,");\n")}return this.compiledGlyphs[t]=new Function("c","size",a.join(""))}return this.compiledGlyphs[t]=function(e,t){for(const o of r)"scale"===o.cmd&&(o.args=[t,-t]),e[o.cmd].apply(e,o.args)}}}},(e,t,r)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.NodeStandardFontDataFactory=t.NodeFilterFactory=t.NodeCanvasFactory=t.NodeCMapReaderFactory=void 0;var o=r(7);function a(e){return new Promise(((t,r)=>{require$$5$1.readFile(e,((e,o)=>{e||!o?r(new Error(e)):t(new Uint8Array(o))}))}))}r(1);class i extends o.BaseFilterFactory{}t.NodeFilterFactory=i;class n extends o.BaseCanvasFactory{_createCanvas(e,t){return require$$5$1.createCanvas(e,t)}}t.NodeCanvasFactory=n;class s extends o.BaseCMapReaderFactory{_fetchData(e,t){return a(e).then((e=>({cMapData:e,compressionType:t})))}}t.NodeCMapReaderFactory=s;class l extends o.BaseStandardFontDataFactory{_fetchData(e){return a(e)}}t.NodeStandardFontDataFactory=l},(e,t,r)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.CanvasGraphics=void 0;var o=r(1),a=r(6),i=r(12),n=r(13);class s{constructor(e){this.canvasFactory=e,this.cache=Object.create(null)}getCanvas(e,t,r){let o;return void 0!==this.cache[e]?(o=this.cache[e],this.canvasFactory.reset(o,t,r)):(o=this.canvasFactory.create(t,r),this.cache[e]=o),o}delete(e){delete this.cache[e]}clear(){for(const t in this.cache){var e=this.cache[t];this.canvasFactory.destroy(e),delete this.cache[t]}}}function l(e,t,r,o,i,n,s,l,d,m){var c,g,u,h,[p,x,v,S,f,b]=(0,a.getCurrentTransform)(e);0===x&&0===v?(c=Math.round(s*p+f),g=Math.round(l*S+b),u=Math.abs(Math.round((s+d)*p+f)-c)||1,h=Math.abs(Math.round((l+m)*S+b)-g)||1,e.setTransform(Math.sign(p),0,0,Math.sign(S),c,g),e.drawImage(t,r,o,i,n,0,0,u,h),e.setTransform(p,x,v,S,f,b)):0===p&&0===S?(c=Math.round(l*v+f),g=Math.round(s*x+b),u=Math.abs(Math.round((l+m)*v+f)-c)||1,h=Math.abs(Math.round((s+d)*x+b)-g)||1,e.setTransform(0,Math.sign(x),Math.sign(v),0,c,g),e.drawImage(t,r,o,i,n,0,0,h,u),e.setTransform(p,x,v,S,f,b)):(e.drawImage(t,r,o,i,n,s,l,d,m),Math.hypot(p,x),Math.hypot(v,S))}class d{constructor(e,t){this.alphaIsShape=!1,this.fontSize=0,this.fontSizeScale=1,this.textMatrix=o.IDENTITY_MATRIX,this.textMatrixScale=1,this.fontMatrix=o.FONT_IDENTITY_MATRIX,this.leading=0,this.x=0,this.y=0,this.lineX=0,this.lineY=0,this.charSpacing=0,this.wordSpacing=0,this.textHScale=1,this.textRenderingMode=o.TextRenderingMode.FILL,this.textRise=0,this.fillColor="#000000",this.strokeColor="#000000",this.patternFill=!1,this.fillAlpha=1,this.strokeAlpha=1,this.lineWidth=1,this.activeSMask=null,this.transferMaps="none",this.startNewPathAndClipBox([0,0,e,t])}clone(){var e=Object.create(this);return e.clipBox=this.clipBox.slice(),e}setCurrentPoint(e,t){this.x=e,this.y=t}updatePathMinMax(e,t,r){[t,r]=o.Util.applyTransform([t,r],e),this.minX=Math.min(this.minX,t),this.minY=Math.min(this.minY,r),this.maxX=Math.max(this.maxX,t),this.maxY=Math.max(this.maxY,r)}updateRectMinMax(e,t){var r=o.Util.applyTransform(t,e);t=o.Util.applyTransform(t.slice(2),e);this.minX=Math.min(this.minX,r[0],t[0]),this.minY=Math.min(this.minY,r[1],t[1]),this.maxX=Math.max(this.maxX,r[0],t[0]),this.maxY=Math.max(this.maxY,r[1],t[1])}updateScalingPathMinMax(e,t){o.Util.scaleMinMax(e,t),this.minX=Math.min(this.minX,t[0]),this.maxX=Math.max(this.maxX,t[1]),this.minY=Math.min(this.minY,t[2]),this.maxY=Math.max(this.maxY,t[3])}updateCurvePathMinMax(e,t,r,a,i,n,s,l,d,m){t=o.Util.bezierBoundingBox(t,r,a,i,n,s,l,d),m?(m[0]=Math.min(m[0],t[0],t[2]),m[1]=Math.max(m[1],t[0],t[2]),m[2]=Math.min(m[2],t[1],t[3]),m[3]=Math.max(m[3],t[1],t[3])):this.updateRectMinMax(e,t)}getPathBoundingBox(e=i.PathType.FILL,t=null){var r=[this.minX,this.minY,this.maxX,this.maxY];return e===i.PathType.STROKE&&(t||(0,o.unreachable)("Stroke bounding box must include transform."),t=(e=o.Util.singularValueDecompose2dScale(t))[0]*this.lineWidth/2,e=e[1]*this.lineWidth/2,r[0]-=t,r[1]-=e,r[2]+=t,r[3]+=e),r}updateClipFromPath(){var e=o.Util.intersect(this.clipBox,this.getPathBoundingBox());this.startNewPathAndClipBox(e||[0,0,0,0])}isEmptyClip(){return this.minX===1/0}startNewPathAndClipBox(e){this.clipBox=e,this.minX=1/0,this.minY=1/0,this.maxX=0,this.maxY=0}getClippedPathBoundingBox(e=i.PathType.FILL,t=null){return o.Util.intersect(this.clipBox,this.getPathBoundingBox(e,t))}}function m(e,t){if("undefined"!=typeof ImageData&&t instanceof ImageData)e.putImageData(t,0,0);else{var r=t.height,a=t.width,i=r%16,n=(r-i)/16,s=0==i?n:1+n,l=e.createImageData(a,16);let b,A=0;var d=t.data,m=l.data;let _,y,T,P;if(t.kind===o.ImageKind.GRAYSCALE_1BPP){var c=d.byteLength,g=new Uint32Array(m.buffer,0,m.byteLength>>2),u=g.length,h=a+7>>3,p=4294967295,x=o.FeatureTest.isLittleEndian?4278190080:255;for(_=0;_<s;_++){for(T=_<n?16:i,b=0,y=0;y<T;y++){var v=c-A;let e=0;var S=h<v?a:8*v-7,f=-8&S;let t=0,r=0;for(;e<f;e+=8)r=d[A++],g[b++]=128&r?p:x,g[b++]=64&r?p:x,g[b++]=32&r?p:x,g[b++]=16&r?p:x,g[b++]=8&r?p:x,g[b++]=4&r?p:x,g[b++]=2&r?p:x,g[b++]=1&r?p:x;for(;e<S;e++)0===t&&(r=d[A++],t=128),g[b++]=r&t?p:x,t>>=1}for(;b<u;)g[b++]=0;e.putImageData(l,0,16*_)}}else if(t.kind===o.ImageKind.RGBA_32BPP){for(y=0,P=16*a*4,_=0;_<n;_++)m.set(d.subarray(A,A+P)),A+=P,e.putImageData(l,0,y),y+=16;_<s&&(P=a*i*4,m.set(d.subarray(A,A+P)),e.putImageData(l,0,y))}else{if(t.kind!==o.ImageKind.RGB_24BPP)throw new Error("bad image kind: "+t.kind);for(T=16,P=a*T,_=0;_<s;_++){for(_>=n&&(T=i,P=a*T),b=0,y=P;y--;)m[b++]=d[A++],m[b++]=d[A++],m[b++]=d[A++],m[b++]=255;e.putImageData(l,0,16*_)}}}}function c(e,t){if(t.bitmap)e.drawImage(t.bitmap,0,0);else{var r=t.height,o=t.width,a=r%16,i=(r-a)/16,s=0==a?i:1+i,l=e.createImageData(o,16);let g=0;var d=t.data,m=l.data;for(let t=0;t<s;t++){var c=t<i?16:a;({srcPos:g}=(0,n.convertBlackAndWhiteToRGBA)({src:d,srcPos:g,dest:m,width:o,height:c,nonBlackColor:0})),e.putImageData(l,0,16*t)}}}function g(e,t){for(const r of["strokeStyle","fillStyle","fillRule","globalAlpha","lineWidth","lineCap","lineJoin","miterLimit","globalCompositeOperation","font","filter"])void 0!==e[r]&&(t[r]=e[r]);void 0!==e.setLineDash&&(t.setLineDash(e.getLineDash()),t.lineDashOffset=e.lineDashOffset)}function u(e){var t;e.strokeStyle=e.fillStyle="#000000",e.fillRule="nonzero",e.globalAlpha=1,e.lineWidth=1,e.lineCap="butt",e.lineJoin="miter",e.miterLimit=10,e.globalCompositeOperation="source-over",e.font="10px sans-serif",void 0!==e.setLineDash&&(e.setLineDash([]),e.lineDashOffset=0),o.isNodeJS||"none"!==(t=e.filter)&&""!==t&&(e.filter="none")}function h(e,t,r){var o=e.length;for(let i=3;i<o;i+=4){var a=r?r[e[i]]:e[i];t[i]=t[i]*a*(1/255)|0}}function p(e,t,r){var o=e.length;for(let i=3;i<o;i+=4){var a=77*e[i-3]+152*e[i-2]+28*e[i-1];t[i]=r?t[i]*r[a>>8]>>8:t[i]*a>>16}}function x(e,t){var r=((e=o.Util.singularValueDecompose2dScale(e))[0]=Math.fround(e[0]),e[1]=Math.fround(e[1]),Math.fround((globalThis.devicePixelRatio||1)*a.PixelsPerInch.PDF_TO_CSS_UNITS));return void 0!==t?t:e[0]<=r||e[1]<=r}const v=["butt","round","square"],S=["miter","round","bevel"],f={},b={};class A{constructor(e,t,r,o,a,{optionalContentConfig:i,markedContentStack:n=null},l,m){this.ctx=e,this.current=new d(this.ctx.canvas.width,this.ctx.canvas.height),this.stateStack=[],this.pendingClip=null,this.pendingEOFill=!1,this.res=null,this.xobjs=null,this.commonObjs=t,this.objs=r,this.canvasFactory=o,this.filterFactory=a,this.groupStack=[],this.processingType3=null,this.baseTransform=null,this.baseTransformStack=[],this.groupLevel=0,this.smaskStack=[],this.smaskCounter=0,this.tempSMask=null,this.suspendedCtx=null,this.contentVisible=!0,this.markedContentStack=n||[],this.optionalContentConfig=i,this.cachedCanvases=new s(this.canvasFactory),this.cachedPatterns=new Map,this.annotationCanvasMap=l,this.viewportScale=1,this.outputScaleX=1,this.outputScaleY=1,this.pageColors=m,this._cachedScaleForStroking=[-1,0],this._cachedGetSinglePixelWidth=null,this._cachedBitmapsMap=new Map}getObject(e,t=null){return"string"==typeof e?(e.startsWith("g_")?this.commonObjs:this.objs).get(e):t}beginDrawing({transform:e,viewport:t,transparency:r=!1,background:o=null}){var i=this.ctx.canvas.width,n=this.ctx.canvas.height,s=this.ctx.fillStyle;this.ctx.fillStyle=o||"#ffffff",this.ctx.fillRect(0,0,i,n),this.ctx.fillStyle=s,r&&(o=this.cachedCanvases.getCanvas("transparent",i,n),this.compositeCtx=this.ctx,this.transparentCanvas=o.canvas,this.ctx=o.context,this.ctx.save(),this.ctx.transform(...(0,a.getCurrentTransform)(this.compositeCtx))),this.ctx.save(),u(this.ctx),e&&(this.ctx.transform(...e),this.outputScaleX=e[0],this.outputScaleY=e[0]),this.ctx.transform(...t.transform),this.viewportScale=t.scale,this.baseTransform=(0,a.getCurrentTransform)(this.ctx)}executeOperatorList(e,t,r,a){var i=e.argsArray,n=e.fnArray;let s=t||0;var l=i.length;if(l===s)return s;var d=10<l-s&&"function"==typeof r,m=d?Date.now()+15:0;let c=0;for(var g,u=this.commonObjs,h=this.objs;;){if(void 0!==a&&s===a.nextBreakPoint)return a.breakIt(s,r),s;if((g=n[s])!==o.OPS.dependency)this[g].apply(this,i[s]);else for(const e of i[s]){var p=e.startsWith("g_")?u:h;if(!p.has(e))return p.get(e,r),s}if(++s===l)return s;if(d&&10<++c){if(Date.now()>m)return r(),s;c=0}}}#dt(){for(;this.stateStack.length||this.inSMaskMode;)this.restore();this.ctx.restore(),this.transparentCanvas&&(this.ctx=this.compositeCtx,this.ctx.save(),this.ctx.setTransform(1,0,0,1,0,0),this.ctx.drawImage(this.transparentCanvas,0,0),this.ctx.restore(),this.transparentCanvas=null)}endDrawing(){this.#dt(),this.cachedCanvases.clear(),this.cachedPatterns.clear();for(const e of this._cachedBitmapsMap.values()){for(const t of e.values())"undefined"!=typeof HTMLCanvasElement&&t instanceof HTMLCanvasElement&&(t.width=t.height=0);e.clear()}this._cachedBitmapsMap.clear(),this.#mt()}#mt(){var e,t;this.pageColors&&"none"!==(e=this.filterFactory.addHCMFilter(this.pageColors.foreground,this.pageColors.background))&&(t=this.ctx.filter,this.ctx.filter=e,this.ctx.drawImage(this.ctx.canvas,0,0),this.ctx.filter=t)}_scaleImage(e,t){var r,o,a=e.width,i=e.height;let n=Math.max(Math.hypot(t[0],t[1]),1),s=Math.max(Math.hypot(t[2],t[3]),1),l=a,d=i,m="prescale1";for(;2<n&&1<l||2<s&&1<d;){let t=l,a=d;2<n&&1<l&&(t=16384<=l?Math.floor(l/2)-1||1:Math.ceil(l/2),n/=l/t),2<s&&1<d&&(a=16384<=d?Math.floor(d/2)-1||1:Math.ceil(d)/2,s/=d/a),(o=(r=this.cachedCanvases.getCanvas(m,t,a)).context).clearRect(0,0,t,a),o.drawImage(e,0,0,l,d,0,0,t,a),e=r.canvas,l=t,d=a,m="prescale1"===m?"prescale2":"prescale1"}return{img:e,paintWidth:l,paintHeight:d}}_createMaskCanvas(e){var t=this.ctx,{width:r,height:n}=e,s=this.current.fillColor,d=this.current.patternFill,m=(0,a.getCurrentTransform)(t);let g,u,h,p;if((e.bitmap||e.data)&&1<e.count){var v=e.bitmap||e.data.buffer;if((v=(u=JSON.stringify(d?m:[m.slice(0,4),s]),(g=this._cachedBitmapsMap.get(v))||(g=new Map,this._cachedBitmapsMap.set(v,g)),g.get(u)))&&!d){return{canvas:v,offsetX:Math.round(Math.min(m[0],m[2])+m[4]),offsetY:Math.round(Math.min(m[1],m[3])+m[5])}}h=v}h||c((p=this.cachedCanvases.getCanvas("maskCanvas",r,n)).context,e);v=o.Util.transform(m,[1/r,0,0,-1/n,0,0]),v=o.Util.transform(v,[1,0,0,1,0,-n]),m=o.Util.applyTransform([0,0],v);var S=o.Util.applyTransform([r,n],v),f=o.Util.normalizeRect([m[0],m[1],S[0],S[1]]),b=Math.round(f[2]-f[0])||1;f=Math.round(f[3]-f[1])||1,f=(b=this.cachedCanvases.getCanvas("fillCanvas",b,f)).context;const A=Math.min(m[0],S[0]),_=Math.min(m[1],S[1]);return f.translate(-A,-_),f.transform(...v),h||(h=(h=this._scaleImage(p.canvas,(0,a.getCurrentTransformInverse)(f))).img,g&&d&&g.set(u,h)),f.imageSmoothingEnabled=x((0,a.getCurrentTransform)(f),e.interpolate),l(f,h,0,0,h.width,h.height,0,0,r,n),f.globalCompositeOperation="source-in",m=o.Util.transform((0,a.getCurrentTransformInverse)(f),[1,0,0,1,-A,-_]),f.fillStyle=d?s.getPattern(t,this,m,i.PathType.FILL):s,f.fillRect(0,0,r,n),g&&!d&&(this.cachedCanvases.delete("fillCanvas"),g.set(u,b.canvas)),{canvas:b.canvas,offsetX:Math.round(A),offsetY:Math.round(_)}}setLineWidth(e){e!==this.current.lineWidth&&(this._cachedScaleForStroking[0]=-1),this.current.lineWidth=e,this.ctx.lineWidth=e}setLineCap(e){this.ctx.lineCap=v[e]}setLineJoin(e){this.ctx.lineJoin=S[e]}setMiterLimit(e){this.ctx.miterLimit=e}setDash(e,t){var r=this.ctx;void 0!==r.setLineDash&&(r.setLineDash(e),r.lineDashOffset=t)}setRenderingIntent(e){}setFlatness(e){}setGState(e){for(var[t,r]of e)switch(t){case"LW":this.setLineWidth(r);break;case"LC":this.setLineCap(r);break;case"LJ":this.setLineJoin(r);break;case"ML":this.setMiterLimit(r);break;case"D":this.setDash(r[0],r[1]);break;case"RI":this.setRenderingIntent(r);break;case"FL":this.setFlatness(r);break;case"Font":this.setFont(r[0],r[1]);break;case"CA":this.current.strokeAlpha=r;break;case"ca":this.current.fillAlpha=r,this.ctx.globalAlpha=r;break;case"BM":this.ctx.globalCompositeOperation=r;break;case"SMask":this.current.activeSMask=r?this.tempSMask:null,this.tempSMask=null,this.checkSMaskState();break;case"TR":this.ctx.filter=this.current.transferMaps=this.filterFactory.addFilter(r)}}get inSMaskMode(){return!!this.suspendedCtx}checkSMaskState(){var e=this.inSMaskMode;this.current.activeSMask&&!e?this.beginSMaskMode():!this.current.activeSMask&&e&&this.endSMaskMode()}beginSMaskMode(){if(this.inSMaskMode)throw new Error("beginSMaskMode called while already in smask mode");var e=this.ctx.canvas.width,t=this.ctx.canvas.height,r="smaskGroupAt"+this.groupLevel;r=this.cachedCanvases.getCanvas(r,e,t);(e=(this.suspendedCtx=this.ctx,this.ctx=r.context,this.ctx)).setTransform(...(0,a.getCurrentTransform)(this.suspendedCtx)),g(this.suspendedCtx,e),function(e,t){if(e._removeMirroring)throw new Error("Context is already forwarding operations.");e.__originalSave=e.save,e.__originalRestore=e.restore,e.__originalRotate=e.rotate,e.__originalScale=e.scale,e.__originalTranslate=e.translate,e.__originalTransform=e.transform,e.__originalSetTransform=e.setTransform,e.__originalResetTransform=e.resetTransform,e.__originalClip=e.clip,e.__originalMoveTo=e.moveTo,e.__originalLineTo=e.lineTo,e.__originalBezierCurveTo=e.bezierCurveTo,e.__originalRect=e.rect,e.__originalClosePath=e.closePath,e.__originalBeginPath=e.beginPath,e._removeMirroring=()=>{e.save=e.__originalSave,e.restore=e.__originalRestore,e.rotate=e.__originalRotate,e.scale=e.__originalScale,e.translate=e.__originalTranslate,e.transform=e.__originalTransform,e.setTransform=e.__originalSetTransform,e.resetTransform=e.__originalResetTransform,e.clip=e.__originalClip,e.moveTo=e.__originalMoveTo,e.lineTo=e.__originalLineTo,e.bezierCurveTo=e.__originalBezierCurveTo,e.rect=e.__originalRect,e.closePath=e.__originalClosePath,e.beginPath=e.__originalBeginPath,delete e._removeMirroring},e.save=function(){t.save(),this.__originalSave()},e.restore=function(){t.restore(),this.__originalRestore()},e.translate=function(e,r){t.translate(e,r),this.__originalTranslate(e,r)},e.scale=function(e,r){t.scale(e,r),this.__originalScale(e,r)},e.transform=function(e,r,o,a,i,n){t.transform(e,r,o,a,i,n),this.__originalTransform(e,r,o,a,i,n)},e.setTransform=function(e,r,o,a,i,n){t.setTransform(e,r,o,a,i,n),this.__originalSetTransform(e,r,o,a,i,n)},e.resetTransform=function(){t.resetTransform(),this.__originalResetTransform()},e.rotate=function(e){t.rotate(e),this.__originalRotate(e)},e.clip=function(e){t.clip(e),this.__originalClip(e)},e.moveTo=function(e,r){t.moveTo(e,r),this.__originalMoveTo(e,r)},e.lineTo=function(e,r){t.lineTo(e,r),this.__originalLineTo(e,r)},e.bezierCurveTo=function(e,r,o,a,i,n){t.bezierCurveTo(e,r,o,a,i,n),this.__originalBezierCurveTo(e,r,o,a,i,n)},e.rect=function(e,r,o,a){t.rect(e,r,o,a),this.__originalRect(e,r,o,a)},e.closePath=function(){t.closePath(),this.__originalClosePath()},e.beginPath=function(){t.beginPath(),this.__originalBeginPath()}}(e,this.suspendedCtx),this.setGState([["BM","source-over"],["ca",1],["CA",1]])}endSMaskMode(){if(!this.inSMaskMode)throw new Error("endSMaskMode called while not in smask mode");this.ctx._removeMirroring(),g(this.ctx,this.suspendedCtx),this.ctx=this.suspendedCtx,this.suspendedCtx=null}compose(e){var t;this.current.activeSMask&&(e?(e[0]=Math.floor(e[0]),e[1]=Math.floor(e[1]),e[2]=Math.ceil(e[2]),e[3]=Math.ceil(e[3])):e=[0,0,this.ctx.canvas.width,this.ctx.canvas.height],t=this.current.activeSMask,function(e,t,r,o){var a=o[0],i=o[1],n=o[2]-a;if(o=o[3]-i,0!=n&&0!=o){var s=t.context,l=r,d=n,m=o,c=(n=t.subtype,o=t.backdrop,t.transferMap),g=a,u=i,x=t.offsetX,v=t.offsetY,S=!!o,f=S?o[0]:0,b=S?o[1]:0,A=S?o[2]:0,_="Luminosity"===n?p:h,y=Math.min(m,Math.ceil(1048576/d));for(let e=0;e<m;e+=y){var T=Math.min(y,m-e),P=s.getImageData(g-x,e+(u-v),d,T);if(T=l.getImageData(g,e+u,d,T),S){L=O=$=void 0;var $=P.data,M=f,w=b,C=A,E=$.length;for(let e=3;e<E;e+=4){var L,O=$[e];0===O?($[e-3]=M,$[e-2]=w,$[e-1]=C):O<255&&(L=255-O,$[e-3]=$[e-3]*O+M*L>>8,$[e-2]=$[e-2]*O+w*L>>8,$[e-1]=$[e-1]*O+C*L>>8)}}_(P.data,T.data,c),l.putImageData(T,g,e+u)}e.save(),e.globalAlpha=1,e.globalCompositeOperation="source-over",e.setTransform(1,0,0,1,0,0),e.drawImage(r.canvas,0,0),e.restore()}}(this.suspendedCtx,t,this.ctx,e),this.ctx.save(),this.ctx.setTransform(1,0,0,1,0,0),this.ctx.clearRect(0,0,this.ctx.canvas.width,this.ctx.canvas.height),this.ctx.restore())}save(){(this.inSMaskMode?(g(this.ctx,this.suspendedCtx),this.suspendedCtx):this.ctx).save();var e=this.current;this.stateStack.push(e),this.current=e.clone()}restore(){0===this.stateStack.length&&this.inSMaskMode&&this.endSMaskMode(),0!==this.stateStack.length&&(this.current=this.stateStack.pop(),this.inSMaskMode?(this.suspendedCtx.restore(),g(this.suspendedCtx,this.ctx)):this.ctx.restore(),this.checkSMaskState(),this.pendingClip=null,this._cachedScaleForStroking[0]=-1,this._cachedGetSinglePixelWidth=null)}transform(e,t,r,o,a,i){this.ctx.transform(e,t,r,o,a,i),this._cachedScaleForStroking[0]=-1,this._cachedGetSinglePixelWidth=null}constructPath(e,t,r){var i=this.ctx,n=this.current;let s,l,d=n.x,m=n.y;var c=(0,a.getCurrentTransform)(i),g=0===c[0]&&0===c[3]||0===c[1]&&0===c[2],u=g?r.slice(0):null;for(let r=0,a=0,S=e.length;r<S;r++)switch(0|e[r]){case o.OPS.rectangle:d=t[a++],m=t[a++];var h=t[a++],p=t[a++],x=d+h,v=m+p;i.moveTo(d,m),0===h||0===p?i.lineTo(x,v):(i.lineTo(x,m),i.lineTo(x,v),i.lineTo(d,v)),g||n.updateRectMinMax(c,[d,m,x,v]),i.closePath();break;case o.OPS.moveTo:d=t[a++],m=t[a++],i.moveTo(d,m),g||n.updatePathMinMax(c,d,m);break;case o.OPS.lineTo:d=t[a++],m=t[a++],i.lineTo(d,m),g||n.updatePathMinMax(c,d,m);break;case o.OPS.curveTo:s=d,l=m,d=t[a+4],m=t[a+5],i.bezierCurveTo(t[a],t[a+1],t[a+2],t[a+3],d,m),n.updateCurvePathMinMax(c,s,l,t[a],t[a+1],t[a+2],t[a+3],d,m,u),a+=6;break;case o.OPS.curveTo2:s=d,l=m,i.bezierCurveTo(d,m,t[a],t[a+1],t[a+2],t[a+3]),n.updateCurvePathMinMax(c,s,l,d,m,t[a],t[a+1],t[a+2],t[a+3],u),d=t[a+2],m=t[a+3],a+=4;break;case o.OPS.curveTo3:s=d,l=m,d=t[a+2],m=t[a+3],i.bezierCurveTo(t[a],t[a+1],d,m,d,m),n.updateCurvePathMinMax(c,s,l,t[a],t[a+1],d,m,d,m,u),a+=4;break;case o.OPS.closePath:i.closePath()}g&&n.updateScalingPathMinMax(c,u),n.setCurrentPoint(d,m)}closePath(){this.ctx.closePath()}stroke(e=!0){var t=this.ctx,r=this.current.strokeColor;t.globalAlpha=this.current.strokeAlpha,this.contentVisible&&("object"==typeof r&&r?.getPattern?(t.save(),t.strokeStyle=r.getPattern(t,this,(0,a.getCurrentTransformInverse)(t),i.PathType.STROKE),this.rescaleAndStroke(!1),t.restore()):this.rescaleAndStroke(!0)),e&&this.consumePath(this.current.getClippedPathBoundingBox()),t.globalAlpha=this.current.fillAlpha}closeStroke(){this.closePath(),this.stroke()}fill(e=!0){var t=this.ctx,r=this.current.fillColor;let o=!1;this.current.patternFill&&(t.save(),t.fillStyle=r.getPattern(t,this,(0,a.getCurrentTransformInverse)(t),i.PathType.FILL),o=!0),r=this.current.getClippedPathBoundingBox(),this.contentVisible&&null!==r&&(this.pendingEOFill?(t.fill("evenodd"),this.pendingEOFill=!1):t.fill()),o&&t.restore(),e&&this.consumePath(r)}eoFill(){this.pendingEOFill=!0,this.fill()}fillStroke(){this.fill(!1),this.stroke(!1),this.consumePath()}eoFillStroke(){this.pendingEOFill=!0,this.fillStroke()}closeFillStroke(){this.closePath(),this.fillStroke()}closeEOFillStroke(){this.pendingEOFill=!0,this.closePath(),this.fillStroke()}endPath(){this.consumePath()}clip(){this.pendingClip=f}eoClip(){this.pendingClip=b}beginText(){this.current.textMatrix=o.IDENTITY_MATRIX,this.current.textMatrixScale=1,this.current.x=this.current.lineX=0,this.current.y=this.current.lineY=0}endText(){var e=this.pendingTextPaths,t=this.ctx;if(void 0===e)t.beginPath();else{t.save(),t.beginPath();for(const r of e)t.setTransform(...r.transform),t.translate(r.x,r.y),r.addToPath(t,r.fontSize);t.restore(),t.clip(),t.beginPath(),delete this.pendingTextPaths}}setCharSpacing(e){this.current.charSpacing=e}setWordSpacing(e){this.current.wordSpacing=e}setHScale(e){this.current.textHScale=e/100}setLeading(e){this.current.leading=-e}setFont(e,t){var r=this.commonObjs.get(e),a=this.current;if(!r)throw new Error("Can't find font for "+e);if(a.fontMatrix=r.fontMatrix||o.FONT_IDENTITY_MATRIX,0!==a.fontMatrix[0]&&0!==a.fontMatrix[3]||(0,o.warn)("Invalid font matrix for font "+e),t<0?(t=-t,a.fontDirection=-1):a.fontDirection=1,this.current.font=r,this.current.fontSize=t,!r.isType3Font){e=r.loadedName||"sans-serif",a=r.systemFontInfo?.css||`"${e}", `+r.fallbackName;let o="normal";r.black?o="900":r.bold&&(o="bold"),e=r.italic?"italic":"normal";let i=t;t<16?i=16:100<t&&(i=100),this.current.fontSizeScale=t/i,this.ctx.font=e+` ${o} ${i}px `+a}}setTextRenderingMode(e){this.current.textRenderingMode=e}setTextRise(e){this.current.textRise=e}moveText(e,t){this.current.x=this.current.lineX+=e,this.current.y=this.current.lineY+=t}setLeadingMoveText(e,t){this.setLeading(-t),this.moveText(e,t)}setTextMatrix(e,t,r,o,a,i){this.current.textMatrix=[e,t,r,o,a,i],this.current.textMatrixScale=Math.hypot(e,t),this.current.x=this.current.lineX=0,this.current.y=this.current.lineY=0}nextLine(){this.moveText(0,this.current.leading)}paintChar(e,t,r,i){var n=this.ctx,s=(c=this.current).font,l=c.textRenderingMode,d=c.fontSize/c.fontSizeScale,m=l&o.TextRenderingMode.FILL_STROKE_MASK,c=(l=!!(l&o.TextRenderingMode.ADD_TO_PATH_FLAG),c.patternFill&&!s.missingFile);let g;(s.disableFontFace||l||c)&&(g=s.getPathGenerator(this.commonObjs,e)),s.disableFontFace||c?(n.save(),n.translate(t,r),n.beginPath(),g(n,d),i&&n.setTransform(...i),m!==o.TextRenderingMode.FILL&&m!==o.TextRenderingMode.FILL_STROKE||n.fill(),m!==o.TextRenderingMode.STROKE&&m!==o.TextRenderingMode.FILL_STROKE||n.stroke(),n.restore()):(m!==o.TextRenderingMode.FILL&&m!==o.TextRenderingMode.FILL_STROKE||n.fillText(e,t,r),m!==o.TextRenderingMode.STROKE&&m!==o.TextRenderingMode.FILL_STROKE||n.strokeText(e,t,r)),l&&(this.pendingTextPaths||=[]).push({transform:(0,a.getCurrentTransform)(n),x:t,y:r,fontSize:d,addToPath:g})}get isFontSubpixelAAEnabled(){var e=this.cachedCanvases.getCanvas("isFontSubpixelAAEnabled",10,10).context,t=(e.scale(1.5,1),e.fillText("I",0,10),e.getImageData(0,0,10,10).data);let r=!1;for(let e=3;e<t.length;e+=4)if(0<t[e]&&t[e]<255){r=!0;break}return(0,o.shadow)(this,"isFontSubpixelAAEnabled",r)}showText(e){var t=this.current,r=t.font;if(r.isType3Font)return this.showType3Text(e);var n=t.fontSize;if(0!==n){var s=this.ctx,l=t.fontSizeScale,d=t.charSpacing,m=t.wordSpacing,c=t.fontDirection,g=t.textHScale*c,u=e.length,h=r.vertical,p=h?1:-1,x=r.defaultVMetrics,v=n*t.fontMatrix[0],S=t.textRenderingMode===o.TextRenderingMode.FILL&&!r.disableFontFace&&!t.patternFill;s.save(),s.transform(...t.textMatrix),s.translate(t.x,t.y+t.textRise),0<c?s.scale(g,-1):s.scale(g,1);let C,E=(t.patternFill&&(s.save(),b=t.fillColor.getPattern(s,this,(0,a.getCurrentTransformInverse)(s),i.PathType.FILL),C=(0,a.getCurrentTransform)(s),s.restore(),s.fillStyle=b),t.lineWidth);var f,b=t.textMatrixScale;if(0===b||0===E?(f=t.textRenderingMode&o.TextRenderingMode.FILL_STROKE_MASK)!==o.TextRenderingMode.STROKE&&f!==o.TextRenderingMode.FILL_STROKE||(E=this.getSinglePixelWidth()):E/=b,1!==l&&(s.scale(l,l),E/=l),s.lineWidth=E,r.isInvalidPDFjsFont){var A=[];let r=0;for(const t of e)A.push(t.unicode),r+=t.width;s.fillText(A.join(""),0,0),t.x+=r*v*g,s.restore(),this.compose()}else{let o,a=0;for(o=0;o<u;++o){var _=e[o];if("number"==typeof _)a+=p*_*n/1e3;else{let e=!1;var y,T,P,$=(_.isSpace?m:0)+d,M=_.fontChar,w=_.accent;let t,o,i=_.width;o=h?(y=_.vmetric||x,T=-(_.vmetric?y[1]:.5*i)*v,P=y[2]*v,i=y?-y[0]:i,t=T/l,(a+P)/l):(t=a/l,0),r.remeasure&&0<i&&(i<(y=1e3*s.measureText(M).width/n*l)&&this.isFontSubpixelAAEnabled?(T=i/y,e=!0,s.save(),s.scale(T,1),t/=T):i!==y&&(t+=(i-y)/2e3*n/l)),this.contentVisible&&(_.isInFont||r.missingFile)&&(S&&!w?s.fillText(M,t,o):(this.paintChar(M,t,o,C),w&&(P=t+n*w.offset.x/l,_=o-n*w.offset.y/l,this.paintChar(w.fontChar,P,_,C)))),a+=M=h?i*v-$*c:i*v+$*c,e&&s.restore()}}h?t.y-=a:t.x+=a*g,s.restore(),this.compose()}}}showType3Text(e){var t,r,a=this.ctx,i=this.current,n=i.font,s=i.fontSize,l=i.fontDirection,d=n.vertical?1:-1,m=i.charSpacing,c=i.wordSpacing,g=i.textHScale*l,u=i.fontMatrix||o.FONT_IDENTITY_MATRIX,h=e.length;let p,x,v,S;if(!(i.textRenderingMode===o.TextRenderingMode.INVISIBLE)&&0!==s){for(this._cachedScaleForStroking[0]=-1,this._cachedGetSinglePixelWidth=null,a.save(),a.transform(...i.textMatrix),a.translate(i.x,i.y),a.scale(g,l),p=0;p<h;++p)"number"==typeof(x=e[p])?(this.ctx.translate(S=d*x*s/1e3,0),i.x+=S*g):(t=(x.isSpace?c:0)+m,(r=n.charProcOperatorList[x.operatorListId])?(this.contentVisible&&(this.processingType3=x,this.save(),a.scale(s,s),a.transform(...u),this.executeOperatorList(r),this.restore()),v=o.Util.applyTransform([x.width,0],u)[0]*s+t,a.translate(v,0),i.x+=v*g):(0,o.warn)(`Type3 character "${x.operatorListId}" is not available.`));a.restore(),this.processingType3=null}}setCharWidth(e,t){}setCharWidthAndBounds(e,t,r,o,a,i){this.ctx.rect(r,o,a-r,i-o),this.ctx.clip(),this.endPath()}getColorN_Pattern(e){var t,r;return"TilingPattern"===e[0]?(t=e[1],r=this.baseTransform||(0,a.getCurrentTransform)(this.ctx),new i.TilingPattern(e,t,this.ctx,{createCanvasGraphics:e=>new A(e,this.commonObjs,this.objs,this.canvasFactory,this.filterFactory,{optionalContentConfig:this.optionalContentConfig,markedContentStack:this.markedContentStack})},r)):this._getPattern(e[1],e[2])}setStrokeColorN(){this.current.strokeColor=this.getColorN_Pattern(arguments)}setFillColorN(){this.current.fillColor=this.getColorN_Pattern(arguments),this.current.patternFill=!0}setStrokeRGBColor(e,t,r){e=o.Util.makeHexColor(e,t,r),this.ctx.strokeStyle=e,this.current.strokeColor=e}setFillRGBColor(e,t,r){e=o.Util.makeHexColor(e,t,r),this.ctx.fillStyle=e,this.current.fillColor=e,this.current.patternFill=!1}_getPattern(e,t=null){let r;return this.cachedPatterns.has(e)?r=this.cachedPatterns.get(e):(r=(0,i.getShadingPattern)(this.getObject(e)),this.cachedPatterns.set(e,r)),t&&(r.matrix=t),r}shadingFill(e){var t,r,n;this.contentVisible&&(t=this.ctx,this.save(),e=this._getPattern(e),t.fillStyle=e.getPattern(t,this,(0,a.getCurrentTransformInverse)(t),i.PathType.SHADING),(e=(0,a.getCurrentTransformInverse)(t))?(({width:t,height:r}=t.canvas),[t,r,e,n]=o.Util.getAxialAlignedBoundingBox([0,0,t,r],e),this.ctx.fillRect(t,r,e-t,n-r)):this.ctx.fillRect(-1e10,-1e10,2e10,2e10),this.compose(this.current.getClippedPathBoundingBox()),this.restore())}beginInlineImage(){(0,o.unreachable)("Should not call beginInlineImage")}beginImageData(){(0,o.unreachable)("Should not call beginImageData")}paintFormXObjectBegin(e,t){var r;this.contentVisible&&(this.save(),this.baseTransformStack.push(this.baseTransform),Array.isArray(e)&&6===e.length&&this.transform(...e),this.baseTransform=(0,a.getCurrentTransform)(this.ctx),t)&&(e=t[2]-t[0],r=t[3]-t[1],this.ctx.rect(t[0],t[1],e,r),this.current.updateRectMinMax((0,a.getCurrentTransform)(this.ctx),t),this.clip(),this.endPath())}paintFormXObjectEnd(){this.contentVisible&&(this.restore(),this.baseTransform=this.baseTransformStack.pop())}beginGroup(e){if(this.contentVisible){this.save(),this.inSMaskMode&&(this.endSMaskMode(),this.current.activeSMask=null);var t=this.ctx,r=(e.isolated||(0,o.info)("TODO: Support non-isolated groups."),e.knockout&&(0,o.warn)("Knockout groups not supported."),(0,a.getCurrentTransform)(t));if(e.matrix&&t.transform(...e.matrix),!e.bbox)throw new Error("Bounding box is required.");var i=o.Util.getAxialAlignedBoundingBox(e.bbox,(0,a.getCurrentTransform)(t)),n=[0,0,t.canvas.width,t.canvas.height],s=(i=o.Util.intersect(i,n)||[0,0,0,0],n=Math.floor(i[0]),Math.floor(i[1]));let d=Math.max(Math.ceil(i[2])-n,1),m=Math.max(Math.ceil(i[3])-s,1),c=1,u=1,h=(4096<d&&(c=d/4096,d=4096),4096<m&&(u=m/4096,m=4096),this.current.startNewPathAndClipBox([0,0,d,m]),"groupAt"+this.groupLevel);e.smask&&(h+="_smask_"+this.smaskCounter++%2);var l=(i=this.cachedCanvases.getCanvas(h,d,m)).context;l.scale(1/c,1/u),l.translate(-n,-s),l.transform(...r),e.smask?this.smaskStack.push({canvas:i.canvas,context:l,offsetX:n,offsetY:s,scaleX:c,scaleY:u,subtype:e.smask.subtype,backdrop:e.smask.backdrop,transferMap:e.smask.transferMap||null,startTransformInverse:null}):(t.setTransform(1,0,0,1,0,0),t.translate(n,s),t.scale(c,u),t.save()),g(t,l),this.ctx=l,this.setGState([["BM","source-over"],["ca",1],["CA",1]]),this.groupStack.push(t),this.groupLevel++}}endGroup(e){var t,r;this.contentVisible&&(this.groupLevel--,t=this.ctx,r=this.groupStack.pop(),this.ctx=r,this.ctx.imageSmoothingEnabled=!1,e.smask?(this.tempSMask=this.smaskStack.pop(),this.restore()):(this.ctx.restore(),r=(0,a.getCurrentTransform)(this.ctx),this.restore(),this.ctx.save(),this.ctx.setTransform(...r),e=o.Util.getAxialAlignedBoundingBox([0,0,t.canvas.width,t.canvas.height],r),this.ctx.drawImage(t.canvas,0,0),this.ctx.restore(),this.compose(e)))}beginAnnotation(e,t,r,i,n){var s,l,m,c,g;this.#dt(),u(this.ctx),this.ctx.save(),this.save(),this.baseTransform&&this.ctx.setTransform(...this.baseTransform),Array.isArray(t)&&4===t.length&&(s=t[2]-t[0],l=t[3]-t[1],n&&this.annotationCanvasMap?((r=r.slice())[4]-=t[0],r[5]-=t[1],(t=t.slice())[0]=t[1]=0,t[2]=s,t[3]=l,[n,m]=o.Util.singularValueDecompose2dScale((0,a.getCurrentTransform)(this.ctx)),g=this.viewportScale,c=Math.ceil(s*this.outputScaleX*g),g=Math.ceil(l*this.outputScaleY*g),({canvas:c,context:g}=(this.annotationCanvas=this.canvasFactory.create(c,g),this.annotationCanvas)),this.annotationCanvasMap.set(e,c),this.annotationCanvas.savedCtx=this.ctx,this.ctx=g,this.ctx.save(),this.ctx.setTransform(n,0,0,-m,0,l*m),u(this.ctx)):(u(this.ctx),this.ctx.rect(t[0],t[1],s,l),this.ctx.clip(),this.endPath())),this.current=new d(this.ctx.canvas.width,this.ctx.canvas.height),this.transform(...r),this.transform(...i)}endAnnotation(){this.annotationCanvas&&(this.ctx.restore(),this.#mt(),this.ctx=this.annotationCanvas.savedCtx,delete this.annotationCanvas.savedCtx,delete this.annotationCanvas)}paintImageMaskXObject(e){var t,r;this.contentVisible&&(t=e.count,(e=this.getObject(e.data,e)).count=t,t=this.ctx,(r=this.processingType3)&&(void 0===r.compiled&&(r.compiled=function(e){const{width:t,height:r}=e;if(1e3<t||1e3<r)return null;var o=new Uint8Array([0,2,4,0,1,0,5,4,8,10,0,8,0,2,1,0]),a=t+1;let i,n,s,l=new Uint8Array(a*(r+1));var d=t+7&-8;let m=new Uint8Array(d*r),c=0;for(const t of e.data){let e=128;for(;0<e;)m[c++]=t&e?0:255,e>>=1}let g=0;for((c=0)!==m[c]&&(l[0]=1,++g),n=1;n<t;n++)m[c]!==m[c+1]&&(l[n]=m[c]?2:1,++g),c++;for(0!==m[c]&&(l[n]=2,++g),i=1;i<r;i++){c=i*d,s=i*a,m[c-d]!==m[c]&&(l[s]=m[c]?1:8,++g);let e=(m[c]?4:0)+(m[c-d]?8:0);for(n=1;n<t;n++)o[e=(e>>2)+(m[c+1]?4:0)+(m[c-d+1]?8:0)]&&(l[s+n]=o[e],++g),c++;if(m[c-d]!==m[c]&&(l[s+n]=m[c]?2:4,++g),1e3<g)return null}for(c=d*(r-1),s=i*a,0!==m[c]&&(l[s]=8,++g),n=1;n<t;n++)m[c]!==m[c+1]&&(l[s+n]=m[c]?4:8,++g),c++;if(0!==m[c]&&(l[s+n]=4,++g),1e3<g)return null;var u=new Int32Array([0,a,-1,0,-a,0,0,0,1]);const h=new Path2D;for(i=0;g&&i<=r;i++){let e=i*a;for(var p=e+t;e<p&&!l[e];)e++;if(e!==p){h.moveTo(e%a,i);var x=e;let t=l[e];do{for(var v=u[t];e+=v,!l[e];);var S=l[e];5!==S&&10!==S?(t=S,l[e]=0):(t=S&51*t>>4,l[e]&=t>>2|t<<2),h.lineTo(e%a,e/a|0),l[e]||--g}while(x!==e);--i}}return m=null,l=null,function(e){e.save(),e.scale(1/t,-1/r),e.translate(0,-r),e.fill(h),e.beginPath(),e.restore()}}(e)),r.compiled)?r.compiled(t):(e=(r=this._createMaskCanvas(e)).canvas,t.save(),t.setTransform(1,0,0,1,0,0),t.drawImage(e,r.offsetX,r.offsetY),t.restore(),this.compose()))}paintImageMaskXObjectRepeat(e,t,r=0,i=0,n,s){if(this.contentVisible){e=this.getObject(e.data,e);var l=this.ctx,d=(l.save(),(0,a.getCurrentTransform)(l)),m=(l.transform(t,r,i,n,0,0),this._createMaskCanvas(e));l.setTransform(1,0,0,1,m.offsetX-d[4],m.offsetY-d[5]);for(let e=0,a=s.length;e<a;e+=2){var c=o.Util.transform(d,[t,r,i,n,s[e],s[e+1]]),[c,g]=o.Util.applyTransform([0,0],c);l.drawImage(m.canvas,c,g)}l.restore(),this.compose()}}paintImageMaskXObjectGroup(e){if(this.contentVisible){var t=this.ctx,r=this.current.fillColor,o=this.current.patternFill;for(const h of e){var{data:n,width:s,height:d,transform:m}=h,g=this.cachedCanvases.getCanvas("maskCanvas",s,d),u=g.context,n=(u.save(),this.getObject(n,h));c(u,n),u.globalCompositeOperation="source-in",u.fillStyle=o?r.getPattern(u,this,(0,a.getCurrentTransformInverse)(t),i.PathType.FILL):r,u.fillRect(0,0,s,d),u.restore(),t.save(),t.transform(...m),t.scale(1,-1),l(t,g.canvas,0,0,s,d,0,-1,1,1),t.restore()}this.compose()}}paintImageXObject(e){this.contentVisible&&((e=this.getObject(e))?this.paintInlineImageXObject(e):(0,o.warn)("Dependent image isn't ready yet"))}paintImageXObjectRepeat(e,t,r,a){if(this.contentVisible)if(e=this.getObject(e)){var i=e.width,n=e.height,s=[];for(let e=0,o=a.length;e<o;e+=2)s.push({transform:[t,0,0,r,a[e],a[e+1]],x:0,y:0,w:i,h:n});this.paintInlineImageXObjectGroup(e,s)}else(0,o.warn)("Dependent image isn't ready yet")}applyTransferMapsToCanvas(e){return"none"!==this.current.transferMaps&&(e.filter=this.current.transferMaps,e.drawImage(e.canvas,0,0),e.filter="none"),e.canvas}applyTransferMapsToBitmap(e){var t,r;return"none"===this.current.transferMaps?e.bitmap:(({bitmap:e,width:t,height:r}=e),(r=(t=this.cachedCanvases.getCanvas("inlineImage",t,r)).context).filter=this.current.transferMaps,r.drawImage(e,0,0),r.filter="none",t.canvas)}paintInlineImageXObject(e){if(this.contentVisible){var t=e.width,r=e.height,i=this.ctx;let s;this.save(),o.isNodeJS||"none"!==(n=i.filter)&&""!==n&&(i.filter="none"),i.scale(1/t,-1/r),s=e.bitmap?this.applyTransferMapsToBitmap(e):"function"==typeof HTMLElement&&e instanceof HTMLElement||!e.data?e:(m(n=this.cachedCanvases.getCanvas("inlineImage",t,r).context,e),this.applyTransferMapsToCanvas(n));var n=this._scaleImage(s,(0,a.getCurrentTransformInverse)(i));i.imageSmoothingEnabled=x((0,a.getCurrentTransform)(i),e.interpolate),l(i,n.img,0,0,n.paintWidth,n.paintHeight,0,-r,t,r),this.compose(),this.restore()}}paintInlineImageXObjectGroup(e,t){if(this.contentVisible){var r,o,a=this.ctx;let i;i=e.bitmap||(o=e.width,r=e.height,m(o=this.cachedCanvases.getCanvas("inlineImage",o,r).context,e),this.applyTransferMapsToCanvas(o));for(const e of t)a.save(),a.transform(...e.transform),a.scale(1,-1),l(a,i,e.x,e.y,e.w,e.h,0,-1,1,1),a.restore();this.compose()}}paintSolidColorImageMask(){this.contentVisible&&(this.ctx.fillRect(0,0,1,1),this.compose())}markPoint(e){}markPointProps(e,t){}beginMarkedContent(e){this.markedContentStack.push({visible:!0})}beginMarkedContentProps(e,t){"OC"===e?this.markedContentStack.push({visible:this.optionalContentConfig.isVisible(t)}):this.markedContentStack.push({visible:!0}),this.contentVisible=this.isContentVisible()}endMarkedContent(){this.markedContentStack.pop(),this.contentVisible=this.isContentVisible()}beginCompat(){}endCompat(){}consumePath(e){var t=this.current.isEmptyClip();this.pendingClip&&this.current.updateClipFromPath(),this.pendingClip||this.compose(e),e=this.ctx;this.pendingClip&&(t||(this.pendingClip===b?e.clip("evenodd"):e.clip()),this.pendingClip=null),this.current.startNewPathAndClipBox(this.current.clipBox),e.beginPath()}getSinglePixelWidth(){var e,t,r;return this._cachedGetSinglePixelWidth||(0===(r=(0,a.getCurrentTransform)(this.ctx))[1]&&0===r[2]?this._cachedGetSinglePixelWidth=1/Math.min(Math.abs(r[0]),Math.abs(r[3])):(e=Math.abs(r[0]*r[3]-r[2]*r[1]),t=Math.hypot(r[0],r[2]),r=Math.hypot(r[1],r[3]),this._cachedGetSinglePixelWidth=Math.max(t,r)/e)),this._cachedGetSinglePixelWidth}getScaleForStroking(){if(-1===this._cachedScaleForStroking[0]){var e,t,r,o=this.current.lineWidth,{a:a,b:i,c:n,d:s}=this.ctx.getTransform();let l,d;0===i&&0===n?(r=Math.abs(a))===(e=Math.abs(s))?l=d=0===o?1/r:(t=r*o)<1?1/t:1:d=0===o?(l=1/r,1/e):(l=(t=r*o)<1?1/t:1,(r=e*o)<1?1/r:1):(e=Math.abs(a*s-i*n),t=Math.hypot(a,i),r=Math.hypot(n,s),d=0===o?(l=r/e,t/e):(l=(a=o*e)<r?r/a:1,a<t?t/a:1)),this._cachedScaleForStroking[0]=l,this._cachedScaleForStroking[1]=d}return this._cachedScaleForStroking}rescaleAndStroke(e){var t=this.ctx,r=this.current.lineWidth,[o,a]=this.getScaleForStroking();if(t.lineWidth=r||1,1===o&&1===a)t.stroke();else{if(r=t.getLineDash(),e&&t.save(),t.scale(o,a),0<r.length){const e=Math.max(o,a);t.setLineDash(r.map((t=>t/e))),t.lineDashOffset/=e}t.stroke(),e&&t.restore()}}isContentVisible(){for(let e=this.markedContentStack.length-1;0<=e;e--)if(!this.markedContentStack[e].visible)return!1;return!0}}t.CanvasGraphics=A;for(const e in o.OPS)void 0!==A.prototype[e]&&(A.prototype[o.OPS[e]]=A.prototype[e])},(e,t,r)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.TilingPattern=t.PathType=void 0,t.getShadingPattern=function(e){switch(e[0]){case"RadialAxial":return new l(e);case"Mesh":return new c(e);case"Dummy":return new g}throw new Error("Unknown IR type: "+e[0])};var o=r(1),a=r(6);const i={FILL:"Fill",STROKE:"Stroke",SHADING:"Shading"};function n(e,t){var r,o,a;t&&(r=t[2]-t[0],o=t[3]-t[1],(a=new Path2D).rect(t[0],t[1],r,o),e.clip(a))}t.PathType=i;class s{constructor(){this.constructor===s&&(0,o.unreachable)("Cannot initialize BaseShadingPattern.")}getPattern(){(0,o.unreachable)("Abstract method `getPattern` called.")}}class l extends s{constructor(e){super(),this._type=e[1],this._bbox=e[2],this._colorStops=e[3],this._p0=e[4],this._p1=e[5],this._r0=e[6],this._r1=e[7],this.matrix=null}_createGradient(e){let t;"axial"===this._type?t=e.createLinearGradient(this._p0[0],this._p0[1],this._p1[0],this._p1[1]):"radial"===this._type&&(t=e.createRadialGradient(this._p0[0],this._p0[1],this._r0,this._p1[0],this._p1[1],this._r1));for(const e of this._colorStops)t.addColorStop(e[0],e[1]);return t}getPattern(e,t,r,s){let l;var d,m;return s===i.STROKE||s===i.FILL?(s=t.current.getClippedPathBoundingBox(s,(0,a.getCurrentTransform)(e))||[0,0,0,0],d=Math.ceil(s[2]-s[0])||1,m=Math.ceil(s[3]-s[1])||1,(m=(d=t.cachedCanvases.getCanvas("pattern",d,m,!0)).context).clearRect(0,0,m.canvas.width,m.canvas.height),m.beginPath(),m.rect(0,0,m.canvas.width,m.canvas.height),m.translate(-s[0],-s[1]),r=o.Util.transform(r,[1,0,0,1,s[0],s[1]]),m.transform(...t.baseTransform),this.matrix&&m.transform(...this.matrix),n(m,this._bbox),m.fillStyle=this._createGradient(m),m.fill(),l=e.createPattern(d.canvas,"no-repeat"),s=new DOMMatrix(r),l.setTransform(s)):(n(e,this._bbox),l=this._createGradient(e)),l}}function d(e,t,r,o,a,i,n,s){var l=t.coords,d=t.colors,m=e.data,c=4*e.width;let g;l[r+1]>l[o+1]&&(g=r,r=o,o=g,g=i,i=n,n=g),l[o+1]>l[a+1]&&(g=o,o=a,a=g,g=n,n=s,s=g),l[r+1]>l[o+1]&&(g=r,r=o,o=g,g=i,i=n,n=g);var u=(l[r]+t.offsetX)*t.scaleX,h=(l[r+1]+t.offsetY)*t.scaleY,p=(l[o]+t.offsetX)*t.scaleX,x=(l[o+1]+t.offsetY)*t.scaleY,v=(l[a]+t.offsetX)*t.scaleX,S=(l[a+1]+t.offsetY)*t.scaleY;if(!(S<=h)){var f=d[i],b=d[i+1],A=d[i+2],_=d[n],y=d[n+1],T=d[n+2],P=d[s],$=d[s+1],M=d[s+2],w=(e=Math.round(h),Math.round(S));let t,r,o,a;for(let i=e;i<=w;i++){if(i<x){t=u-(u-p)*(I=i<h?0:(h-i)/(h-x)),r=f-(f-_)*I,o=b-(b-y)*I,a=A-(A-T)*I}else{let e;e=i>S?1:x==S?0:(x-i)/(x-S),t=p-(p-v)*e,r=_-(_-P)*e,o=y-(y-$)*e,a=T-(T-M)*e}let e;var C=u-(u-v)*(e=i<h?0:i>S?1:(h-i)/(h-S)),E=f-(f-P)*e,L=b-(b-$)*e,O=A-(A-M)*e,I=Math.round(Math.min(t,C)),G=Math.round(Math.max(t,C));let n=c*i+4*I;for(let i=I;i<=G;i++)(e=(t-i)/(t-C))<0?e=0:1<e&&(e=1),m[n++]=r-(r-E)*e|0,m[n++]=o-(o-L)*e|0,m[n++]=a-(a-O)*e|0,m[n++]=255}}}function m(e,t,r){var o=t.coords,a=t.colors;let i,n;switch(t.type){case"lattice":var s=t.verticesPerRow,l=Math.floor(o.length/s)-1,m=s-1;for(i=0;i<l;i++){let t=i*s;for(let i=0;i<m;i++,t++)d(e,r,o[t],o[t+1],o[t+s],a[t],a[t+1],a[t+s]),d(e,r,o[t+s+1],o[t+1],o[t+s],a[t+s+1],a[t+1],a[t+s])}break;case"triangles":for(i=0,n=o.length;i<n;i+=3)d(e,r,o[i],o[i+1],o[i+2],a[i],a[i+1],a[i+2]);break;default:throw new Error("illegal figure")}}class c extends s{constructor(e){super(),this._coords=e[2],this._colors=e[3],this._figures=e[4],this._bounds=e[5],this._bbox=e[7],this._background=e[8],this.matrix=null}_createMeshCanvas(e,t,r){var o=Math.floor(this._bounds[0]),a=Math.floor(this._bounds[1]),i=Math.ceil(this._bounds[2])-o,n=Math.ceil(this._bounds[3])-a,s=Math.min(Math.ceil(Math.abs(i*e[0]*1.1)),3e3),l=(i=i/s,n=n/(e=Math.min(Math.ceil(Math.abs(n*e[1]*1.1)),3e3)),{coords:this._coords,colors:this._colors,offsetX:-o,offsetY:-a,scaleX:1/i,scaleY:1/n}),d=(r=r.getCanvas("mesh",s+4,e+4,!1)).context,c=d.createImageData(s,e);if(t){var g=c.data;for(let e=0,r=g.length;e<r;e+=4)g[e]=t[0],g[e+1]=t[1],g[e+2]=t[2],g[e+3]=255}for(const e of this._figures)m(c,e,l);return d.putImageData(c,2,2),{canvas:r.canvas,offsetX:o-2*i,offsetY:a-2*n,scaleX:i,scaleY:n}}getPattern(e,t,r,s){let l;n(e,this._bbox),s===i.SHADING?l=o.Util.singularValueDecompose2dScale((0,a.getCurrentTransform)(e)):(l=o.Util.singularValueDecompose2dScale(t.baseTransform),this.matrix&&(d=o.Util.singularValueDecompose2dScale(this.matrix),l=[l[0]*d[0],l[1]*d[1]]));var d=this._createMeshCanvas(l,s===i.SHADING?null:this._background,t.cachedCanvases);return s!==i.SHADING&&(e.setTransform(...t.baseTransform),this.matrix)&&e.transform(...this.matrix),e.translate(d.offsetX,d.offsetY),e.scale(d.scaleX,d.scaleY),e.createPattern(d.canvas,"no-repeat")}}class g extends s{getPattern(){return"hotpink"}}const u=1,h=2;t.TilingPattern=class e{static MAX_PATTERN_SIZE=3e3;constructor(e,t,r,o,a){this.operatorList=e[2],this.matrix=e[3]||[1,0,0,1,0,0],this.bbox=e[4],this.xstep=e[5],this.ystep=e[6],this.paintType=e[7],this.tilingType=e[8],this.color=t,this.ctx=r,this.canvasGraphicsFactory=o,this.baseTransform=a}createPatternCanvas(e){var t=this.operatorList,r=this.bbox,i=this.xstep,n=this.ystep,s=this.paintType,l=this.tilingType,d=this.color,m=this.canvasGraphicsFactory,c=(l=((0,o.info)("TilingType: "+l),r[0]),r[1]),g=r[2],u=(r=r[3],o.Util.singularValueDecompose2dScale(this.matrix)),h=o.Util.singularValueDecompose2dScale(this.baseTransform);u=[u[0]*h[0],u[1]*h[1]],h=this.getSizeAndScale(i,this.ctx.canvas.width,u[0]),i=this.getSizeAndScale(n,this.ctx.canvas.height,u[1]),u=(n=e.cachedCanvases.getCanvas("pattern",h.size,i.size,!0)).context;(m=m.createCanvasGraphics(u)).groupLevel=e.groupLevel,this.setFillAndStrokeStyleToContext(m,s,d);let p=l,x=c,v=g,S=r;return l<0&&(p=0,v+=Math.abs(l)),c<0&&(x=0,S+=Math.abs(c)),u.translate(-h.scale*p,-i.scale*x),m.transform(h.scale,0,0,i.scale,0,0),u.save(),this.clipBbox(m,p,x,v,S),m.baseTransform=(0,a.getCurrentTransform)(m.ctx),m.executeOperatorList(t),m.endDrawing(),{canvas:n.canvas,scaleX:h.scale,scaleY:i.scale,offsetX:p,offsetY:x}}getSizeAndScale(t,r,o){t=Math.abs(t),r=Math.max(e.MAX_PATTERN_SIZE,r);let a=Math.ceil(t*o);return a>=r?a=r:o=a/t,{scale:o,size:a}}clipBbox(e,t,r,o,i){e.ctx.rect(t,r,o-t,i-r),e.current.updateRectMinMax((0,a.getCurrentTransform)(e.ctx),[t,r,o,i]),e.clip(),e.endPath()}setFillAndStrokeStyleToContext(e,t,r){var a=e.ctx,i=e.current;switch(t){case u:var n=this.ctx;a.fillStyle=n.fillStyle,a.strokeStyle=n.strokeStyle,i.fillColor=n.fillStyle,i.strokeColor=n.strokeStyle;break;case h:n=o.Util.makeHexColor(r[0],r[1],r[2]),a.fillStyle=n,a.strokeStyle=n,i.fillColor=n,i.strokeColor=n;break;default:throw new o.FormatError("Unsupported paint type: "+t)}}getPattern(e,t,r,a){let n=r,s=(a!==i.SHADING&&(n=o.Util.transform(n,t.baseTransform),this.matrix)&&(n=o.Util.transform(n,this.matrix)),r=this.createPatternCanvas(t),new DOMMatrix(n));return s=(s=s.translate(r.offsetX,r.offsetY)).scale(1/r.scaleX,1/r.scaleY),(a=e.createPattern(r.canvas,"repeat")).setTransform(s),a}}},(e,t,r)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.convertBlackAndWhiteToRGBA=a,t.convertToRGBA=function(e){switch(e.kind){case o.ImageKind.GRAYSCALE_1BPP:return a(e);case o.ImageKind.RGB_24BPP:return function({src:e,srcPos:t=0,dest:r,destPos:a=0}){let i=0;var n=e.length>>2,s=new Uint32Array(e.buffer,t,n);if(o.FeatureTest.isLittleEndian){for(;i<n-2;i+=3,a+=4){var l=s[i],d=s[i+1],m=s[i+2];r[a]=4278190080|l,r[a+1]=l>>>24|d<<8|4278190080,r[a+2]=d>>>16|m<<16|4278190080,r[a+3]=m>>>8|4278190080}for(let t=4*i,o=e.length;t<o;t+=3)r[a++]=e[t]|e[t+1]<<8|e[t+2]<<16|4278190080}else{for(;i<n-2;i+=3,a+=4){var c=s[i],g=s[i+1],u=s[i+2];r[a]=255|c,r[a+1]=c<<24|g>>>8|255,r[a+2]=g<<16|u>>>16|255,r[a+3]=u<<8|255}for(let t=4*i,o=e.length;t<o;t+=3)r[a++]=e[t]<<24|e[t+1]<<16|e[t+2]<<8|255}return{srcPos:t,destPos:a}}(e)}return null},t.grayToRGBA=function(e,t){if(o.FeatureTest.isLittleEndian)for(let r=0,o=e.length;r<o;r++)t[r]=65793*e[r]|4278190080;else for(let r=0,o=e.length;r<o;r++)t[r]=16843008*e[r]|255};var o=r(1);function a({src:e,srcPos:t=0,dest:r,width:a,height:i,nonBlackColor:n=4294967295,inverseDecode:s=!1}){var l=o.FeatureTest.isLittleEndian?4278190080:255,[d,m]=s?[n,l]:[l,n],c=a>>3,g=7&a,u=e.length;r=new Uint32Array(r.buffer);let h=0;for(let o=0;o<i;o++){for(var p=t+c;t<p;t++){var x=t<u?e[t]:255;r[h++]=128&x?m:d,r[h++]=64&x?m:d,r[h++]=32&x?m:d,r[h++]=16&x?m:d,r[h++]=8&x?m:d,r[h++]=4&x?m:d,r[h++]=2&x?m:d,r[h++]=1&x?m:d}if(0!=g){var v=t<u?e[t++]:255;for(let e=0;e<g;e++)r[h++]=v&1<<7-e?m:d}}return{srcPos:t,destPos:h}}},(e,t)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.GlobalWorkerOptions=void 0;var r=Object.create(null);(t.GlobalWorkerOptions=r).workerPort=null,r.workerSrc=""},(e,t,r)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.MessageHandler=void 0;var o=r(1);const a=1,i=2,n=1,s=2,l=3,d=4,m=5,c=6,g=7,u=8;function h(e){switch(e instanceof Error||"object"==typeof e&&null!==e||(0,o.unreachable)('wrapReason: Expected "reason" to be a (possibly cloned) Error.'),e.name){case"AbortException":return new o.AbortException(e.message);case"MissingPDFException":return new o.MissingPDFException(e.message);case"PasswordException":return new o.PasswordException(e.message,e.code);case"UnexpectedResponseException":return new o.UnexpectedResponseException(e.message,e.status);case"UnknownErrorException":return new o.UnknownErrorException(e.message,e.details);default:return new o.UnknownErrorException(e.message,e.toString())}}t.MessageHandler=class{constructor(e,t,r){this.sourceName=e,this.targetName=t,this.comObj=r,this.callbackId=1,this.streamId=1,this.streamSinks=Object.create(null),this.streamControllers=Object.create(null),this.callbackCapabilities=Object.create(null),this.actionHandler=Object.create(null),this._onComObjOnMessage=e=>{const t=e.data;if(t.targetName===this.sourceName)if(t.stream)this.#ct(t);else if(t.callback){e=t.callbackId;var o=this.callbackCapabilities[e];if(!o)throw new Error("Cannot resolve callback "+e);if(delete this.callbackCapabilities[e],t.callback===a)o.resolve(t.data);else{if(t.callback!==i)throw new Error("Unexpected callback case");o.reject(h(t.reason))}}else{const e=this.actionHandler[t.action];if(!e)throw new Error("Unknown action from worker: "+t.action);if(t.callbackId){const o=this.sourceName,n=t.sourceName;new Promise((function(r){r(e(t.data))})).then((function(e){r.postMessage({sourceName:o,targetName:n,callback:a,callbackId:t.callbackId,data:e})}),(function(e){r.postMessage({sourceName:o,targetName:n,callback:i,callbackId:t.callbackId,reason:h(e)})}))}else t.streamId?this.#gt(t):e(t.data)}},r.addEventListener("message",this._onComObjOnMessage)}on(e,t){var r=this.actionHandler;if(r[e])throw new Error(`There is already an actionName called "${e}"`);r[e]=t}send(e,t,r){this.comObj.postMessage({sourceName:this.sourceName,targetName:this.targetName,action:e,data:t},r)}sendWithPromise(e,t,r){var a=this.callbackId++,i=new o.PromiseCapability;this.callbackCapabilities[a]=i;try{this.comObj.postMessage({sourceName:this.sourceName,targetName:this.targetName,action:e,callbackId:a,data:t},r)}catch(e){i.reject(e)}return i.promise}sendWithStream(e,t,r,a){const i=this.streamId++,s=this.sourceName,l=this.targetName,d=this.comObj;return new ReadableStream({start:r=>{var n=new o.PromiseCapability;return this.streamControllers[i]={controller:r,startCall:n,pullCall:null,cancelCall:null,isClosed:!1},d.postMessage({sourceName:s,targetName:l,action:e,streamId:i,data:t,desiredSize:r.desiredSize},a),n.promise},pull:e=>{var t=new o.PromiseCapability;return this.streamControllers[i].pullCall=t,d.postMessage({sourceName:s,targetName:l,stream:c,streamId:i,desiredSize:e.desiredSize}),t.promise},cancel:e=>{(0,o.assert)(e instanceof Error,"cancel must have a valid reason");var t=new o.PromiseCapability;return this.streamControllers[i].cancelCall=t,this.streamControllers[i].isClosed=!0,d.postMessage({sourceName:s,targetName:l,stream:n,streamId:i,reason:h(e)}),t.promise}},r)}#gt(e){const t=e.streamId,r=this.sourceName,a=e.sourceName,i=this.comObj,n=this,s=this.actionHandler[e.action],c={enqueue(e,n=1,s){var l;this.isCancelled||(l=this.desiredSize,this.desiredSize-=n,0<l&&this.desiredSize<=0&&(this.sinkCapability=new o.PromiseCapability,this.ready=this.sinkCapability.promise),i.postMessage({sourceName:r,targetName:a,stream:d,streamId:t,chunk:e},s))},close(){this.isCancelled||(this.isCancelled=!0,i.postMessage({sourceName:r,targetName:a,stream:l,streamId:t}),delete n.streamSinks[t])},error(e){(0,o.assert)(e instanceof Error,"error must have a valid reason"),this.isCancelled||(this.isCancelled=!0,i.postMessage({sourceName:r,targetName:a,stream:m,streamId:t,reason:h(e)}))},sinkCapability:new o.PromiseCapability,onPull:null,onCancel:null,isCancelled:!1,desiredSize:e.desiredSize,ready:null};c.sinkCapability.resolve(),c.ready=c.sinkCapability.promise,this.streamSinks[t]=c,new Promise((function(t){t(s(e.data,c))})).then((function(){i.postMessage({sourceName:r,targetName:a,stream:u,streamId:t,success:!0})}),(function(e){i.postMessage({sourceName:r,targetName:a,stream:u,streamId:t,reason:h(e)})}))}#ct(e){const t=e.streamId,r=this.sourceName,a=e.sourceName,i=this.comObj,p=this.streamControllers[t],x=this.streamSinks[t];switch(e.stream){case u:e.success?p.startCall.resolve():p.startCall.reject(h(e.reason));break;case g:e.success?p.pullCall.resolve():p.pullCall.reject(h(e.reason));break;case c:x?(x.desiredSize<=0&&0<e.desiredSize&&x.sinkCapability.resolve(),x.desiredSize=e.desiredSize,new Promise((function(e){e(x.onPull?.())})).then((function(){i.postMessage({sourceName:r,targetName:a,stream:g,streamId:t,success:!0})}),(function(e){i.postMessage({sourceName:r,targetName:a,stream:g,streamId:t,reason:h(e)})}))):i.postMessage({sourceName:r,targetName:a,stream:g,streamId:t,success:!0});break;case d:(0,o.assert)(p,"enqueue should have stream controller"),p.isClosed||p.controller.enqueue(e.chunk);break;case l:(0,o.assert)(p,"close should have stream controller"),p.isClosed||(p.isClosed=!0,p.controller.close(),this.#ut(p,t));break;case m:(0,o.assert)(p,"error should have stream controller"),p.controller.error(h(e.reason)),this.#ut(p,t);break;case s:e.success?p.cancelCall.resolve():p.cancelCall.reject(h(e.reason)),this.#ut(p,t);break;case n:x&&(new Promise((function(t){t(x.onCancel?.(h(e.reason)))})).then((function(){i.postMessage({sourceName:r,targetName:a,stream:s,streamId:t,success:!0})}),(function(e){i.postMessage({sourceName:r,targetName:a,stream:s,streamId:t,reason:h(e)})})),x.sinkCapability.reject(h(e.reason)),x.isCancelled=!0,delete this.streamSinks[t]);break;default:throw new Error("Unexpected stream case")}}async#ut(e,t){await Promise.allSettled([e.startCall?.promise,e.pullCall?.promise,e.cancelCall?.promise]),delete this.streamControllers[t]}destroy(){this.comObj.removeEventListener("message",this._onComObjOnMessage)}}},(e,t,r)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.Metadata=void 0;var o=r(1);t.Metadata=class{#ht;#pt;constructor({parsedData:e,rawData:t}){this.#ht=e,this.#pt=t}getRaw(){return this.#pt}get(e){return this.#ht.get(e)??null}getAll(){return(0,o.objectFromMap)(this.#ht)}has(e){return this.#ht.has(e)}}},(e,t,r)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.OptionalContentConfig=void 0;var o=r(1),a=r(8);const i=Symbol("INTERNAL");class n{#xt=!0;constructor(e,t){this.name=e,this.intent=t}get visible(){return this.#xt}_setVisible(e,t){e!==i&&(0,o.unreachable)("Internal method `_setVisible` called."),this.#xt=t}}t.OptionalContentConfig=class{#vt=null;#St=new Map;#ft=null;#bt=null;constructor(e){if(this.name=null,(this.creator=null)!==e){this.name=e.name,this.creator=e.creator,this.#bt=e.order;for(const t of e.groups)this.#St.set(t.id,new n(t.name,t.intent));if("OFF"===e.baseState)for(const e of this.#St.values())e._setVisible(i,!1);for(const t of e.on)this.#St.get(t)._setVisible(i,!0);for(const t of e.off)this.#St.get(t)._setVisible(i,!1);this.#ft=this.getHash()}}#At(e){var t=e.length;if(t<2)return!0;var r=e[0];for(let i=1;i<t;i++){var a=e[i];let t;if(Array.isArray(a))t=this.#At(a);else{if(!this.#St.has(a))return(0,o.warn)("Optional content group not found: "+a),!0;t=this.#St.get(a).visible}switch(r){case"And":if(t)break;return!1;case"Or":if(t)return!0;break;case"Not":return!t;default:return!0}}return"And"===r}isVisible(e){if(0!==this.#St.size)if(e){if("OCG"===e.type)return this.#St.has(e.id)?this.#St.get(e.id).visible:((0,o.warn)("Optional content group not found: "+e.id),!0);if("OCMD"===e.type){if(e.expression)return this.#At(e.expression);if(!e.policy||"AnyOn"===e.policy){for(const t of e.ids){if(!this.#St.has(t))return(0,o.warn)("Optional content group not found: "+t),!0;if(this.#St.get(t).visible)return!0}return!1}if("AllOn"===e.policy)for(const t of e.ids){if(!this.#St.has(t))return(0,o.warn)("Optional content group not found: "+t),!0;if(!this.#St.get(t).visible)return!1}else{if("AnyOff"===e.policy){for(const t of e.ids){if(!this.#St.has(t))return(0,o.warn)("Optional content group not found: "+t),!0;if(!this.#St.get(t).visible)return!0}return!1}if("AllOff"===e.policy)for(const t of e.ids){if(!this.#St.has(t))return(0,o.warn)("Optional content group not found: "+t),!0;if(this.#St.get(t).visible)return!1}else(0,o.warn)(`Unknown optional content policy ${e.policy}.`)}}else(0,o.warn)(`Unknown group type ${e.type}.`)}else(0,o.warn)("Optional content group not defined.");return!0}setVisibility(e,t=!0){this.#St.has(e)?(this.#St.get(e)._setVisible(i,!!t),this.#vt=null):(0,o.warn)("Optional content group not found: "+e)}get hasInitialVisibility(){return null===this.#ft||this.getHash()===this.#ft}getOrder(){return this.#St.size?this.#bt?this.#bt.slice():[...this.#St.keys()]:null}getGroups(){return 0<this.#St.size?(0,o.objectFromMap)(this.#St):null}getGroup(e){return this.#St.get(e)||null}getHash(){if(null!==this.#vt)return this.#vt;var e,t,r=new a.MurmurHash3_64;for([e,t]of this.#St)r.update(e+":"+t.visible);return this.#vt=r.hexdigest()}}},(e,t,r)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.PDFDataTransportStream=void 0;var o=r(1),a=r(6);t.PDFDataTransportStream=class{constructor({length:e,initialData:t,progressiveDone:r=!1,contentDispositionFilename:a=null,disableRange:i=!1,disableStream:n=!1},s){(0,o.assert)(s,'PDFDataTransportStream - missing required "pdfDataRangeTransport" argument.'),this._queuedChunks=[],this._progressiveDone=r,this._contentDispositionFilename=a,0<t?.length&&(r=(t instanceof Uint8Array&&t.byteLength===t.buffer.byteLength?t:new Uint8Array(t)).buffer,this._queuedChunks.push(r)),this._pdfDataRangeTransport=s,this._isStreamingSupported=!n,this._isRangeSupported=!i,this._contentLength=e,this._fullRequestReader=null,this._rangeReaders=[],this._pdfDataRangeTransport.addRangeListener(((e,t)=>{this._onReceiveData({begin:e,chunk:t})})),this._pdfDataRangeTransport.addProgressListener(((e,t)=>{this._onProgress({loaded:e,total:t})})),this._pdfDataRangeTransport.addProgressiveReadListener((e=>{this._onReceiveData({chunk:e})})),this._pdfDataRangeTransport.addProgressiveDoneListener((()=>{this._onProgressiveDone()})),this._pdfDataRangeTransport.transportReady()}_onReceiveData({begin:e,chunk:t}){const r=(t instanceof Uint8Array&&t.byteLength===t.buffer.byteLength?t:new Uint8Array(t)).buffer;void 0===e?this._fullRequestReader?this._fullRequestReader._enqueue(r):this._queuedChunks.push(r):(t=this._rangeReaders.some((function(t){return t._begin===e&&(t._enqueue(r),!0)})),(0,o.assert)(t,"_onReceiveData - no `PDFDataTransportStreamRangeReader` instance found."))}get _progressiveDataLength(){return this._fullRequestReader?._loaded??0}_onProgress(e){void 0===e.total?this._rangeReaders[0]?.onProgress?.({loaded:e.loaded}):this._fullRequestReader?.onProgress?.({loaded:e.loaded,total:e.total})}_onProgressiveDone(){this._fullRequestReader?.progressiveDone(),this._progressiveDone=!0}_removeRangeReader(e){0<=(e=this._rangeReaders.indexOf(e))&&this._rangeReaders.splice(e,1)}getFullReader(){(0,o.assert)(!this._fullRequestReader,"PDFDataTransportStream.getFullReader can only be called once.");var e=this._queuedChunks;return this._queuedChunks=null,new i(this,e,this._progressiveDone,this._contentDispositionFilename)}getRangeReader(e,t){var r;return t<=this._progressiveDataLength?null:(r=new n(this,e,t),this._pdfDataRangeTransport.requestDataRange(e,t),this._rangeReaders.push(r),r)}cancelAllRequests(e){this._fullRequestReader?.cancel(e);for(const t of this._rangeReaders.slice(0))t.cancel(e);this._pdfDataRangeTransport.abort()}};class i{constructor(e,t,r=!1,o=null){this._stream=e,this._done=r||!1,this._filename=(0,a.isPdfFile)(o)?o:null,this._queuedChunks=t||[],this._loaded=0;for(const e of this._queuedChunks)this._loaded+=e.byteLength;this._requests=[],this._headersReady=Promise.resolve(),(e._fullRequestReader=this).onProgress=null}_enqueue(e){this._done||(0<this._requests.length?this._requests.shift().resolve({value:e,done:!1}):this._queuedChunks.push(e),this._loaded+=e.byteLength)}get headersReady(){return this._headersReady}get filename(){return this._filename}get isRangeSupported(){return this._stream._isRangeSupported}get isStreamingSupported(){return this._stream._isStreamingSupported}get contentLength(){return this._stream._contentLength}async read(){var e;return 0<this._queuedChunks.length?{value:this._queuedChunks.shift(),done:!1}:this._done?{value:void 0,done:!0}:(e=new o.PromiseCapability,this._requests.push(e),e.promise)}cancel(e){this._done=!0;for(const e of this._requests)e.resolve({value:void 0,done:!0});this._requests.length=0}progressiveDone(){this._done||(this._done=!0)}}class n{constructor(e,t,r){this._stream=e,this._begin=t,this._end=r,this._queuedChunk=null,this._requests=[],this._done=!1,this.onProgress=null}_enqueue(e){if(!this._done){if(0===this._requests.length)this._queuedChunk=e;else{this._requests.shift().resolve({value:e,done:!1});for(const e of this._requests)e.resolve({value:void 0,done:!0});this._requests.length=0}this._done=!0,this._stream._removeRangeReader(this)}}get isStreamingSupported(){return!1}async read(){var e;return this._queuedChunk?(e=this._queuedChunk,this._queuedChunk=null,{value:e,done:!1}):this._done?{value:void 0,done:!0}:(e=new o.PromiseCapability,this._requests.push(e),e.promise)}cancel(e){this._done=!0;for(const e of this._requests)e.resolve({value:void 0,done:!0});this._requests.length=0,this._stream._removeRangeReader(this)}}},(e,t,r)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.PDFFetchStream=void 0;var o=r(1),a=r(20);function i(e,t,r){return{method:"GET",headers:e,signal:r.signal,mode:"cors",credentials:t?"include":"same-origin",redirect:"follow"}}function n(e){var t=new Headers;for(const o in e){var r=e[o];void 0!==r&&t.append(o,r)}return t}function s(e){return e instanceof Uint8Array?e.buffer:e instanceof ArrayBuffer?e:((0,o.warn)("getArrayBuffer - unexpected data format: "+e),new Uint8Array(e).buffer)}t.PDFFetchStream=class{constructor(e){this.source=e,this.isHttp=/^https?:/i.test(e.url),this.httpHeaders=this.isHttp&&e.httpHeaders||{},this._fullRequestReader=null,this._rangeRequestReaders=[]}get _progressiveDataLength(){return this._fullRequestReader?._loaded??0}getFullReader(){return(0,o.assert)(!this._fullRequestReader,"PDFFetchStream.getFullReader can only be called once."),this._fullRequestReader=new l(this),this._fullRequestReader}getRangeReader(e,t){return t<=this._progressiveDataLength?null:(e=new d(this,e,t),this._rangeRequestReaders.push(e),e)}cancelAllRequests(e){this._fullRequestReader?.cancel(e);for(const t of this._rangeRequestReaders.slice(0))t.cancel(e)}};class l{constructor(e){this._stream=e,this._reader=null,this._loaded=0,this._filename=null,e=e.source,this._withCredentials=e.withCredentials||!1,this._contentLength=e.length,this._headersCapability=new o.PromiseCapability,this._disableRange=e.disableRange||!1,this._rangeChunkSize=e.rangeChunkSize,this._rangeChunkSize||this._disableRange||(this._disableRange=!0),this._abortController=new AbortController,this._isStreamingSupported=!e.disableStream,this._isRangeSupported=!e.disableRange,this._headers=n(this._stream.httpHeaders);const t=e.url;fetch(t,i(this._headers,this._withCredentials,this._abortController)).then((e=>{if(!(0,a.validateResponseStatus)(e.status))throw(0,a.createResponseStatusError)(e.status,t);this._reader=e.body.getReader(),this._headersCapability.resolve();var r=t=>e.headers.get(t),{allowRangeRequests:i,suggestedLength:n}=(0,a.validateRangeRequestCapabilities)({getResponseHeader:r,isHttp:this._stream.isHttp,rangeChunkSize:this._rangeChunkSize,disableRange:this._disableRange});this._isRangeSupported=i,this._contentLength=n||this._contentLength,this._filename=(0,a.extractFilenameFromHeader)(r),!this._isStreamingSupported&&this._isRangeSupported&&this.cancel(new o.AbortException("Streaming is disabled."))})).catch(this._headersCapability.reject),this.onProgress=null}get headersReady(){return this._headersCapability.promise}get filename(){return this._filename}get contentLength(){return this._contentLength}get isRangeSupported(){return this._isRangeSupported}get isStreamingSupported(){return this._isStreamingSupported}async read(){await this._headersCapability.promise;var{value:e,done:t}=await this._reader.read();return t?{value:e,done:t}:(this._loaded+=e.byteLength,this.onProgress?.({loaded:this._loaded,total:this._contentLength}),{value:s(e),done:!1})}cancel(e){this._reader?.cancel(e),this._abortController.abort()}}class d{constructor(e,t,r){this._stream=e,this._reader=null,this._loaded=0,e=e.source,this._withCredentials=e.withCredentials||!1,this._readCapability=new o.PromiseCapability,this._isStreamingSupported=!e.disableStream,this._abortController=new AbortController,this._headers=n(this._stream.httpHeaders),this._headers.append("Range",`bytes=${t}-`+(r-1));const s=e.url;fetch(s,i(this._headers,this._withCredentials,this._abortController)).then((e=>{if(!(0,a.validateResponseStatus)(e.status))throw(0,a.createResponseStatusError)(e.status,s);this._readCapability.resolve(),this._reader=e.body.getReader()})).catch(this._readCapability.reject),this.onProgress=null}get isStreamingSupported(){return this._isStreamingSupported}async read(){await this._readCapability.promise;var{value:e,done:t}=await this._reader.read();return t?{value:e,done:t}:(this._loaded+=e.byteLength,this.onProgress?.({loaded:this._loaded}),{value:s(e),done:!1})}cancel(e){this._reader?.cancel(e),this._abortController.abort()}}},(e,t,r)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.createResponseStatusError=function(e,t){return 404===e||0===e&&t.startsWith("file:")?new o.MissingPDFException('Missing PDF "'+t+'".'):new o.UnexpectedResponseException(`Unexpected server response (${e}) while retrieving PDF "${t}".`,e)},t.extractFilenameFromHeader=function(e){if(e=e("Content-Disposition")){let t=(0,a.getFilenameFromContentDispositionHeader)(e);if(t.includes("%"))try{t=decodeURIComponent(t)}catch{}if((0,i.isPdfFile)(t))return t}return null},t.validateRangeRequestCapabilities=function({getResponseHeader:e,isHttp:t,rangeChunkSize:r,disableRange:o}){var a={allowRangeRequests:!1,suggestedLength:void 0},i=parseInt(e("Content-Length"),10);return!Number.isInteger(i)||(a.suggestedLength=i)<=2*r||!o&&t&&"bytes"===e("Accept-Ranges")&&"identity"===(e("Content-Encoding")||"identity")&&(a.allowRangeRequests=!0),a},t.validateResponseStatus=function(e){return 200===e||206===e};var o=r(1),a=r(21),i=r(6)},(e,t,r)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.getFilenameFromContentDispositionHeader=function(e){let t=!0,r=i("filename\\*","i").exec(e);var a;if(r)return a=l(r=r[1]),s(a=m(a=d(a=unescape(a))));if(r=function(e){for(var t=[],r=i("filename\\*((?!0\\d)\\d+)(\\*?)","ig");null!==(o=r.exec(e));){var[,o,a,n]=o;if((o=parseInt(o,10))in t){if(0===o)break}else t[o]=[a,n]}var s=[];for(let e=0;e<t.length&&e in t;++e){let[r,o]=t[e];o=l(o),r&&(o=unescape(o),0===e)&&(o=d(o)),s.push(o)}return s.join("")}(e))return s(m(r));if(r=i("filename","i").exec(e))return r=r[1],s(m(l(r)));function i(e,t){return new RegExp("(?:^|;)\\s*"+e+'\\s*=\\s*([^";\\s][^;\\s]*|"(?:[^"\\\\]|\\\\"?)+"?)',t)}function n(e,r){if(e){if(!/^[\x00-\xFF]+$/.test(r))return r;try{var a=new TextDecoder(e,{fatal:!0}),i=(0,o.stringToBytes)(r);r=a.decode(i),t=!1}catch{}}return r}function s(e){return t&&/[\x80-\xff]/.test(e)&&(e=n("utf-8",e),t)?n("iso-8859-1",e):e}function l(e){if(e.startsWith('"')){var t=e.slice(1).split('\\"');for(let e=0;e<t.length;++e){var r=t[e].indexOf('"');-1!==r&&(t[e]=t[e].slice(0,r),t.length=e+1),t[e]=t[e].replaceAll(/\\(.)/g,"$1")}e=t.join('"')}return e}function d(e){var t=e.indexOf("'");return-1===t?e:n(e.slice(0,t),e.slice(t+1).replace(/^[^']*'/,""))}function m(e){return!e.startsWith("=?")||/[\x00-\x19\x80-\xff]/.test(e)?e:e.replaceAll(/=\?([\w-]*)\?([QqBb])\?((?:[^?]|\?(?!=))*)\?=/g,(function(e,t,r,o){if("q"===r||"Q"===r)return n(t,o=(o=o.replaceAll("_"," ")).replaceAll(/=([0-9a-fA-F]{2})/g,(function(e,t){return String.fromCharCode(parseInt(t,16))})));try{o=atob(o)}catch{}return n(t,o)}))}return""};var o=r(1)},(e,t,r)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.PDFNetworkStream=void 0;var o=r(1),a=r(20);function i(e){return"string"!=typeof(e=e.response)?e:(0,o.stringToBytes)(e).buffer}class n{constructor(e,t={}){this.url=e,this.isHttp=/^https?:/i.test(e),this.httpHeaders=this.isHttp&&t.httpHeaders||Object.create(null),this.withCredentials=t.withCredentials||!1,this.currXhrId=0,this.pendingRequests=Object.create(null)}requestRange(e,t,r){var o={begin:e,end:t};for(const e in r)o[e]=r[e];return this.request(o)}requestFull(e){return this.request(e)}request(e){const t=new XMLHttpRequest;var r=this.currXhrId++,o=this.pendingRequests[r]={xhr:t};t.open("GET",this.url),t.withCredentials=this.withCredentials;for(const e in this.httpHeaders){var a=this.httpHeaders[e];void 0!==a&&t.setRequestHeader(e,a)}return this.isHttp&&"begin"in e&&"end"in e?(t.setRequestHeader("Range",`bytes=${e.begin}-`+(e.end-1)),o.expectedStatus=206):o.expectedStatus=200,t.responseType="arraybuffer",e.onError&&(t.onerror=function(r){e.onError(t.status)}),t.onreadystatechange=this.onStateChange.bind(this,r),t.onprogress=this.onProgress.bind(this,r),o.onHeadersReceived=e.onHeadersReceived,o.onDone=e.onDone,o.onError=e.onError,o.onProgress=e.onProgress,t.send(null),r}onProgress(e,t){(e=this.pendingRequests[e])&&e.onProgress?.(t)}onStateChange(e,t){var r,o,a=this.pendingRequests[e];a&&(2<=(r=a.xhr).readyState&&a.onHeadersReceived&&(a.onHeadersReceived(),delete a.onHeadersReceived),4===r.readyState)&&e in this.pendingRequests&&(delete this.pendingRequests[e],0===r.status&&this.isHttp||(200!==(e=r.status||200)||206!==a.expectedStatus)&&e!==a.expectedStatus?a.onError?.(r.status):(o=i(r),206===e?(e=r.getResponseHeader("Content-Range"),e=/bytes (\d+)-(\d+)\/(\d+)/.exec(e),a.onDone({begin:parseInt(e[1],10),chunk:o})):o?a.onDone({begin:0,chunk:o}):a.onError?.(r.status)))}getRequestXhr(e){return this.pendingRequests[e].xhr}isPendingRequest(e){return e in this.pendingRequests}abortRequest(e){var t=this.pendingRequests[e].xhr;delete this.pendingRequests[e],t.abort()}}t.PDFNetworkStream=class{constructor(e){this._source=e,this._manager=new n(e.url,{httpHeaders:e.httpHeaders,withCredentials:e.withCredentials}),this._rangeChunkSize=e.rangeChunkSize,this._fullRequestReader=null,this._rangeRequestReaders=[]}_onRangeRequestReaderClosed(e){0<=(e=this._rangeRequestReaders.indexOf(e))&&this._rangeRequestReaders.splice(e,1)}getFullReader(){return(0,o.assert)(!this._fullRequestReader,"PDFNetworkStream.getFullReader can only be called once."),this._fullRequestReader=new s(this._manager,this._source),this._fullRequestReader}getRangeReader(e,t){return(e=new l(this._manager,e,t)).onClosed=this._onRangeRequestReaderClosed.bind(this),this._rangeRequestReaders.push(e),e}cancelAllRequests(e){this._fullRequestReader?.cancel(e);for(const t of this._rangeRequestReaders.slice(0))t.cancel(e)}};class s{constructor(e,t){this._manager=e;var r={onHeadersReceived:this._onHeadersReceived.bind(this),onDone:this._onDone.bind(this),onError:this._onError.bind(this),onProgress:this._onProgress.bind(this)};this._url=t.url,this._fullRequestId=e.requestFull(r),this._headersReceivedCapability=new o.PromiseCapability,this._disableRange=t.disableRange||!1,this._contentLength=t.length,this._rangeChunkSize=t.rangeChunkSize,this._rangeChunkSize||this._disableRange||(this._disableRange=!0),this._isStreamingSupported=!1,this._isRangeSupported=!1,this._cachedChunks=[],this._requests=[],this._done=!1,this._storedError=void 0,this._filename=null,this.onProgress=null}_onHeadersReceived(){var e=this._fullRequestId;const t=this._manager.getRequestXhr(e);var r=e=>t.getResponseHeader(e),{allowRangeRequests:o,suggestedLength:i}=(0,a.validateRangeRequestCapabilities)({getResponseHeader:r,isHttp:this._manager.isHttp,rangeChunkSize:this._rangeChunkSize,disableRange:this._disableRange});o&&(this._isRangeSupported=!0),this._contentLength=i||this._contentLength,this._filename=(0,a.extractFilenameFromHeader)(r),this._isRangeSupported&&this._manager.abortRequest(e),this._headersReceivedCapability.resolve()}_onDone(e){if(e&&(0<this._requests.length?this._requests.shift().resolve({value:e.chunk,done:!1}):this._cachedChunks.push(e.chunk)),this._done=!0,!(0<this._cachedChunks.length)){for(const e of this._requests)e.resolve({value:void 0,done:!0});this._requests.length=0}}_onError(e){this._storedError=(0,a.createResponseStatusError)(e,this._url),this._headersReceivedCapability.reject(this._storedError);for(const e of this._requests)e.reject(this._storedError);this._requests.length=0,this._cachedChunks.length=0}_onProgress(e){this.onProgress?.({loaded:e.loaded,total:e.lengthComputable?e.total:this._contentLength})}get filename(){return this._filename}get isRangeSupported(){return this._isRangeSupported}get isStreamingSupported(){return this._isStreamingSupported}get contentLength(){return this._contentLength}get headersReady(){return this._headersReceivedCapability.promise}async read(){if(this._storedError)throw this._storedError;var e;return 0<this._cachedChunks.length?{value:this._cachedChunks.shift(),done:!1}:this._done?{value:void 0,done:!0}:(e=new o.PromiseCapability,this._requests.push(e),e.promise)}cancel(e){this._done=!0,this._headersReceivedCapability.reject(e);for(const e of this._requests)e.resolve({value:void 0,done:!0});this._requests.length=0,this._manager.isPendingRequest(this._fullRequestId)&&this._manager.abortRequest(this._fullRequestId),this._fullRequestReader=null}}class l{constructor(e,t,r){this._manager=e;var o={onDone:this._onDone.bind(this),onError:this._onError.bind(this),onProgress:this._onProgress.bind(this)};this._url=e.url,this._requestId=e.requestRange(t,r,o),this._requests=[],this._queuedChunk=null,this._done=!1,this._storedError=void 0,this.onProgress=null,this.onClosed=null}_close(){this.onClosed?.(this)}_onDone(e){e=e.chunk,0<this._requests.length?this._requests.shift().resolve({value:e,done:!1}):this._queuedChunk=e,this._done=!0;for(const e of this._requests)e.resolve({value:void 0,done:!0});this._requests.length=0,this._close()}_onError(e){this._storedError=(0,a.createResponseStatusError)(e,this._url);for(const e of this._requests)e.reject(this._storedError);this._requests.length=0,this._queuedChunk=null}_onProgress(e){this.isStreamingSupported||this.onProgress?.({loaded:e.loaded})}get isStreamingSupported(){return!1}async read(){if(this._storedError)throw this._storedError;var e;return null!==this._queuedChunk?(e=this._queuedChunk,this._queuedChunk=null,{value:e,done:!1}):this._done?{value:void 0,done:!0}:(e=new o.PromiseCapability,this._requests.push(e),e.promise)}cancel(e){this._done=!0;for(const e of this._requests)e.resolve({value:void 0,done:!0});this._requests.length=0,this._manager.isPendingRequest(this._requestId)&&this._manager.abortRequest(this._requestId),this._close()}}},(e,t,r)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.PDFNodeStream=void 0;var o=r(1),a=r(20);const i=/^file:\/\/\/[a-zA-Z]:\//;t.PDFNodeStream=class{constructor(e){this.source=e,this.url=function(e){var t=require$$5$1,r=t.parse(e);if("file:"!==r.protocol&&!r.host){if(/^[a-z]:[/\\]/i.test(e))return t.parse("file:///"+e);r.host||(r.protocol="file:")}return r}(e.url),this.isHttp="http:"===this.url.protocol||"https:"===this.url.protocol,this.isFsUrl="file:"===this.url.protocol,this.httpHeaders=this.isHttp&&e.httpHeaders||{},this._fullRequestReader=null,this._rangeRequestReaders=[]}get _progressiveDataLength(){return this._fullRequestReader?._loaded??0}getFullReader(){return(0,o.assert)(!this._fullRequestReader,"PDFNodeStream.getFullReader can only be called once."),this._fullRequestReader=new(this.isFsUrl?c:d)(this),this._fullRequestReader}getRangeReader(e,t){return t<=this._progressiveDataLength?null:(e=new(this.isFsUrl?g:m)(this,e,t),this._rangeRequestReaders.push(e),e)}cancelAllRequests(e){this._fullRequestReader?.cancel(e);for(const t of this._rangeRequestReaders.slice(0))t.cancel(e)}};class n{constructor(e){this._url=e.url,this._done=!1,this._storedError=null,this.onProgress=null,e=e.source,this._contentLength=e.length,this._loaded=0,this._filename=null,this._disableRange=e.disableRange||!1,this._rangeChunkSize=e.rangeChunkSize,this._rangeChunkSize||this._disableRange||(this._disableRange=!0),this._isStreamingSupported=!e.disableStream,this._isRangeSupported=!e.disableRange,this._readableStream=null,this._readCapability=new o.PromiseCapability,this._headersCapability=new o.PromiseCapability}get headersReady(){return this._headersCapability.promise}get filename(){return this._filename}get contentLength(){return this._contentLength}get isRangeSupported(){return this._isRangeSupported}get isStreamingSupported(){return this._isStreamingSupported}async read(){if(await this._readCapability.promise,this._done)return{value:void 0,done:!0};if(this._storedError)throw this._storedError;var e=this._readableStream.read();return null===e?(this._readCapability=new o.PromiseCapability,this.read()):(this._loaded+=e.length,this.onProgress?.({loaded:this._loaded,total:this._contentLength}),{value:new Uint8Array(e).buffer,done:!1})}cancel(e){this._readableStream?this._readableStream.destroy(e):this._error(e)}_error(e){this._storedError=e,this._readCapability.resolve()}_setReadableStream(e){(this._readableStream=e).on("readable",(()=>{this._readCapability.resolve()})),e.on("end",(()=>{e.destroy(),this._done=!0,this._readCapability.resolve()})),e.on("error",(e=>{this._error(e)})),!this._isStreamingSupported&&this._isRangeSupported&&this._error(new o.AbortException("streaming is disabled")),this._storedError&&this._readableStream.destroy(this._storedError)}}class s{constructor(e){this._url=e.url,this._done=!1,this._storedError=null,this.onProgress=null,this._loaded=0,this._readableStream=null,this._readCapability=new o.PromiseCapability,e=e.source,this._isStreamingSupported=!e.disableStream}get isStreamingSupported(){return this._isStreamingSupported}async read(){if(await this._readCapability.promise,this._done)return{value:void 0,done:!0};if(this._storedError)throw this._storedError;var e=this._readableStream.read();return null===e?(this._readCapability=new o.PromiseCapability,this.read()):(this._loaded+=e.length,this.onProgress?.({loaded:this._loaded}),{value:new Uint8Array(e).buffer,done:!1})}cancel(e){this._readableStream?this._readableStream.destroy(e):this._error(e)}_error(e){this._storedError=e,this._readCapability.resolve()}_setReadableStream(e){(this._readableStream=e).on("readable",(()=>{this._readCapability.resolve()})),e.on("end",(()=>{e.destroy(),this._done=!0,this._readCapability.resolve()})),e.on("error",(e=>{this._error(e)})),this._storedError&&this._readableStream.destroy(this._storedError)}}function l(e,t){return{protocol:e.protocol,auth:e.auth,host:e.hostname,port:e.port,path:e.path,method:"GET",headers:t}}class d extends n{constructor(e){super(e);this._request=null,this._url.protocol,this._request=require$$5$1.request(l(this._url,e.httpHeaders),(t=>{var r,i;404===t.statusCode?(r=new o.MissingPDFException(`Missing PDF "${this._url}".`),this._storedError=r,this._headersCapability.reject(r)):(this._headersCapability.resolve(),this._setReadableStream(t),({allowRangeRequests:t,suggestedLength:i}=(0,a.validateRangeRequestCapabilities)({getResponseHeader:r=e=>this._readableStream.headers[e.toLowerCase()],isHttp:e.isHttp,rangeChunkSize:this._rangeChunkSize,disableRange:this._disableRange})),this._isRangeSupported=t,this._contentLength=i||this._contentLength,this._filename=(0,a.extractFilenameFromHeader)(r))})),this._request.on("error",(e=>{this._storedError=e,this._headersCapability.reject(e)})),this._request.end()}}class m extends s{constructor(e,t,r){super(e),this._httpHeaders={};for(const t in e.httpHeaders){var a=e.httpHeaders[t];void 0!==a&&(this._httpHeaders[t]=a)}this._httpHeaders.Range=`bytes=${t}-`+(r-1),t=e=>{var t;404===e.statusCode?(t=new o.MissingPDFException(`Missing PDF "${this._url}".`),this._storedError=t):this._setReadableStream(e)},this._request=null,this._url.protocol,this._request=require$$5$1.request(l(this._url,this._httpHeaders),t),this._request.on("error",(e=>{this._storedError=e})),this._request.end()}}class c extends n{constructor(e){super(e);let t=decodeURIComponent(this._url.path);i.test(this._url.href)&&(t=t.replace(/^\//,""));const r=require$$5$1;r.lstat(t,((e,a)=>{e?("ENOENT"===e.code&&(e=new o.MissingPDFException(`Missing PDF "${t}".`)),this._storedError=e,this._headersCapability.reject(e)):(this._contentLength=a.size,this._setReadableStream(r.createReadStream(t)),this._headersCapability.resolve())}))}}class g extends s{constructor(e,t,r){super(e);let o=decodeURIComponent(this._url.path);i.test(this._url.href)&&(o=o.replace(/^\//,"")),e=require$$5$1,this._setReadableStream(e.createReadStream(o,{start:t,end:r-1}))}}},(e,t,r)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.SVGGraphics=void 0;var o=r(6),a=r(1);function i(e,t="",r=!1){if(URL.createObjectURL&&"undefined"!=typeof Blob&&!r)return URL.createObjectURL(new Blob([e],{type:t}));var o="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=";let a=`data:${t};base64,`;for(let t=0,r=e.length;t<r;t+=3){var i=255&e[t],n=255&e[t+1],s=255&e[t+2];a+=o[i>>2]+o[(3&i)<<4|n>>4]+o[t+1<r?(15&n)<<2|s>>6:64]+o[s=t+2<r?63&s:64]}return a}const n="normal",s="normal",l="#000000",d=["butt","round","square"],m=["miter","round","bevel"],c=function(){const e=new Uint8Array([137,80,78,71,13,10,26,10]),t=new Int32Array(256);for(let e=0;e<256;e++){let r=e;for(let e=0;e<8;e++)r=1&r?3988292384^r>>1&2147483647:r>>1&2147483647;t[e]=r}function r(e,r,o,a){var i=a,n=r.length;o[i]=n>>24&255,o[i+1]=n>>16&255,o[i+2]=n>>8&255,o[i+3]=255&n,o[i+=4]=255&e.charCodeAt(0),o[i+1]=255&e.charCodeAt(1),o[i+2]=255&e.charCodeAt(2),o[i+3]=255&e.charCodeAt(3),o.set(r,i+=4),n=function(e,r,o){let a=-1;for(let n=r;n<o;n++){var i=255&(a^e[n]);a=a>>>8^(i=t[i])}return-1^a}(o,a+4,i+=r.length);o[i]=n>>24&255,o[i+1]=n>>16&255,o[i+2]=n>>8&255,o[i+3]=255&n}function o(t,o,n,s){var l=t.width,d=t.height;let m,c,g;var u=t.data;switch(o){case a.ImageKind.GRAYSCALE_1BPP:c=0,m=1,g=l+7>>3;break;case a.ImageKind.RGB_24BPP:c=2,m=8,g=3*l;break;case a.ImageKind.RGBA_32BPP:c=6,m=8,g=4*l;break;default:throw new Error("invalid format")}var h=new Uint8Array((1+g)*d);let p=0,x=0;for(let e=0;e<d;++e)h[p++]=0,h.set(u.subarray(x,x+g),p),x+=g,p+=g;if(o===a.ImageKind.GRAYSCALE_1BPP&&s)for(let e=p=0;e<d;e++){p++;for(let e=0;e<g;e++)h[p++]^=255}t=new Uint8Array([l>>24&255,l>>16&255,l>>8&255,255&l,d>>24&255,d>>16&255,d>>8&255,255&d,m,c,0,0,0]),o=function(e){if(a.isNodeJS)try{var t=8<=parseInt(process.versions.node)?e:Buffer.from(e),r=require$$5$1.deflateSync(t,{level:9});return r instanceof Uint8Array?r:new Uint8Array(r)}catch(e){(0,a.warn)("Not compressing PNG because zlib.deflateSync is unavailable: "+e)}return function(e){let t=e.length;var r=65535,o=Math.ceil(t/r),a=new Uint8Array(2+t+5*o+4);let i=0,n=(a[i++]=120,a[i++]=156,0);for(;t>r;)a[i++]=0,a[i++]=255,a[i++]=255,a[i++]=0,a[i++]=0,a.set(e.subarray(n,n+r),i),i+=r,n+=r,t-=r;return a[i++]=1,a[i++]=255&t,a[i++]=t>>8&255,a[i++]=255&~t,a[i++]=(65535&~t)>>8&255,a.set(e.subarray(n),i),i+=e.length-n,o=function(e,t,r){let o=1,a=0;for(let t=0;t<r;++t)o=(o+(255&e[t]))%65521,a=(a+o)%65521;return a<<16|o}(e,0,e.length),a[i++]=o>>24&255,a[i++]=o>>16&255,a[i++]=o>>8&255,a[i++]=255&o,a}(e)}(h),s=e.length+36+t.length+o.length;var v=0;return(s=new Uint8Array(s)).set(e,0),r("IHDR",t,s,v+=e.length),r("IDATA",o,s,v+=12+t.length),v+=12+o.length,r("IEND",new Uint8Array(0),s,v),i(s,"image/png",n)}return function(e,t,r){return o(e,void 0===e.kind?a.ImageKind.GRAYSCALE_1BPP:e.kind,t,r)}}();class g{constructor(){this.fontSizeScale=1,this.fontWeight=s,this.fontSize=0,this.textMatrix=a.IDENTITY_MATRIX,this.fontMatrix=a.FONT_IDENTITY_MATRIX,this.leading=0,this.textRenderingMode=a.TextRenderingMode.FILL,this.textMatrixScale=1,this.x=0,this.y=0,this.lineX=0,this.lineY=0,this.charSpacing=0,this.wordSpacing=0,this.textHScale=1,this.textRise=0,this.fillColor=l,this.strokeColor="#000000",this.fillAlpha=1,this.strokeAlpha=1,this.lineWidth=1,this.lineJoin="",this.lineCap="",this.miterLimit=0,this.dashArray=[],this.dashPhase=0,this.dependencies=[],this.activeClipUrl=null,this.clipGroup=null,this.maskId=""}clone(){return Object.create(this)}setCurrentPoint(e,t){this.x=e,this.y=t}}function u(e){if(Number.isInteger(e))return e.toString();var t=e.toFixed(10);let r=t.length-1;if("0"!==t[r])return t;for(;"0"===t[--r];);return t.substring(0,"."===t[r]?r:r+1)}function h(e){if(0===e[4]&&0===e[5]){if(0===e[1]&&0===e[2])return 1===e[0]&&1===e[3]?"":`scale(${u(e[0])} ${u(e[3])})`;if(e[0]===e[3]&&e[1]===-e[2])return`rotate(${u(180*Math.acos(e[0])/Math.PI)})`}else if(1===e[0]&&0===e[1]&&0===e[2]&&1===e[3])return`translate(${u(e[4])} ${u(e[5])})`;return`matrix(${u(e[0])} ${u(e[1])} ${u(e[2])} ${u(e[3])} ${u(e[4])} `+u(e[5])+")"}let p=0,x=0,v=0;t.SVGGraphics=class{constructor(e,t,r=!1){(0,o.deprecated)("The SVG back-end is no longer maintained and *may* be removed in the future."),this.svgFactory=new o.DOMSVGFactory,this.current=new g,this.transformMatrix=a.IDENTITY_MATRIX,this.transformStack=[],this.extraStack=[],this.commonObjs=e,this.objs=t,this.pendingClip=null,this.pendingEOFill=!1,this.embedFonts=!1,this.embeddedFonts=Object.create(null),this.cssStyle=null,this.forceDataSchema=!!r,this._operatorIdMapping=[];for(const e in a.OPS)this._operatorIdMapping[a.OPS[e]]=e}getObject(e,t=null){return"string"==typeof e?(e.startsWith("g_")?this.commonObjs:this.objs).get(e):t}save(){this.transformStack.push(this.transformMatrix);var e=this.current;this.extraStack.push(e),this.current=e.clone()}restore(){this.transformMatrix=this.transformStack.pop(),this.current=this.extraStack.pop(),this.pendingClip=null,this.tgrp=null}group(e){this.save(),this.executeOpTree(e),this.restore()}loadDependencies(e){var t=e.fnArray,r=e.argsArray;for(let e=0,i=t.length;e<i;e++)if(t[e]===a.OPS.dependency)for(const t of r[e]){const e=t.startsWith("g_")?this.commonObjs:this.objs;var o=new Promise((r=>{e.get(t,r)}));this.current.dependencies.push(o)}return Promise.all(this.current.dependencies)}transform(e,t,r,o,i,n){this.transformMatrix=a.Util.transform(this.transformMatrix,[e,t,r,o,i,n]),this.tgrp=null}getSVG(e,t){this.viewport=t;const r=this._initialize(t);return this.loadDependencies(e).then((()=>(this.transformMatrix=a.IDENTITY_MATRIX,this.executeOpTree(this.convertOpList(e)),r)))}convertOpList(e){var t=this._operatorIdMapping,r=e.argsArray,o=e.fnArray,a=[];for(let e=0,n=o.length;e<n;e++){var i=o[e];a.push({fnId:i,fn:t[i],args:r[e]})}return function(e){let t=[];var r=[];for(const o of e)"save"===o.fn?(t.push({fnId:92,fn:"group",items:[]}),r.push(t),t=t.at(-1).items):"restore"===o.fn?t=r.pop():t.push(o);return t}(a)}executeOpTree(e){for(const i of e){var t=i.fn,r=i.fnId,o=i.args;switch(0|r){case a.OPS.beginText:this.beginText();break;case a.OPS.dependency:break;case a.OPS.setLeading:this.setLeading(o);break;case a.OPS.setLeadingMoveText:this.setLeadingMoveText(o[0],o[1]);break;case a.OPS.setFont:this.setFont(o);break;case a.OPS.showText:case a.OPS.showSpacedText:this.showText(o[0]);break;case a.OPS.endText:this.endText();break;case a.OPS.moveText:this.moveText(o[0],o[1]);break;case a.OPS.setCharSpacing:this.setCharSpacing(o[0]);break;case a.OPS.setWordSpacing:this.setWordSpacing(o[0]);break;case a.OPS.setHScale:this.setHScale(o[0]);break;case a.OPS.setTextMatrix:this.setTextMatrix(o[0],o[1],o[2],o[3],o[4],o[5]);break;case a.OPS.setTextRise:this.setTextRise(o[0]);break;case a.OPS.setTextRenderingMode:this.setTextRenderingMode(o[0]);break;case a.OPS.setLineWidth:this.setLineWidth(o[0]);break;case a.OPS.setLineJoin:this.setLineJoin(o[0]);break;case a.OPS.setLineCap:this.setLineCap(o[0]);break;case a.OPS.setMiterLimit:this.setMiterLimit(o[0]);break;case a.OPS.setFillRGBColor:this.setFillRGBColor(o[0],o[1],o[2]);break;case a.OPS.setStrokeRGBColor:this.setStrokeRGBColor(o[0],o[1],o[2]);break;case a.OPS.setStrokeColorN:this.setStrokeColorN(o);break;case a.OPS.setFillColorN:this.setFillColorN(o);break;case a.OPS.shadingFill:this.shadingFill(o[0]);break;case a.OPS.setDash:this.setDash(o[0],o[1]);break;case a.OPS.setRenderingIntent:this.setRenderingIntent(o[0]);break;case a.OPS.setFlatness:this.setFlatness(o[0]);break;case a.OPS.setGState:this.setGState(o[0]);break;case a.OPS.fill:this.fill();break;case a.OPS.eoFill:this.eoFill();break;case a.OPS.stroke:this.stroke();break;case a.OPS.fillStroke:this.fillStroke();break;case a.OPS.eoFillStroke:this.eoFillStroke();break;case a.OPS.clip:this.clip("nonzero");break;case a.OPS.eoClip:this.clip("evenodd");break;case a.OPS.paintSolidColorImageMask:this.paintSolidColorImageMask();break;case a.OPS.paintImageXObject:this.paintImageXObject(o[0]);break;case a.OPS.paintInlineImageXObject:this.paintInlineImageXObject(o[0]);break;case a.OPS.paintImageMaskXObject:this.paintImageMaskXObject(o[0]);break;case a.OPS.paintFormXObjectBegin:this.paintFormXObjectBegin(o[0],o[1]);break;case a.OPS.paintFormXObjectEnd:this.paintFormXObjectEnd();break;case a.OPS.closePath:this.closePath();break;case a.OPS.closeStroke:this.closeStroke();break;case a.OPS.closeFillStroke:this.closeFillStroke();break;case a.OPS.closeEOFillStroke:this.closeEOFillStroke();break;case a.OPS.nextLine:this.nextLine();break;case a.OPS.transform:this.transform(o[0],o[1],o[2],o[3],o[4],o[5]);break;case a.OPS.constructPath:this.constructPath(o[0],o[1]);break;case a.OPS.endPath:this.endPath();break;case 92:this.group(i.items);break;default:(0,a.warn)("Unimplemented operator "+t)}}}setWordSpacing(e){this.current.wordSpacing=e}setCharSpacing(e){this.current.charSpacing=e}nextLine(){this.moveText(0,this.current.leading)}setTextMatrix(e,t,r,o,a,i){var n=this.current;n.textMatrix=n.lineMatrix=[e,t,r,o,a,i],n.textMatrixScale=Math.hypot(e,t),n.x=n.lineX=0,n.y=n.lineY=0,n.xcoords=[],n.ycoords=[],n.tspan=this.svgFactory.createElement("svg:tspan"),n.tspan.setAttributeNS(null,"font-family",n.fontFamily),n.tspan.setAttributeNS(null,"font-size",u(n.fontSize)+"px"),n.tspan.setAttributeNS(null,"y",u(-n.y)),n.txtElement=this.svgFactory.createElement("svg:text"),n.txtElement.append(n.tspan)}beginText(){var e=this.current;e.x=e.lineX=0,e.y=e.lineY=0,e.textMatrix=a.IDENTITY_MATRIX,e.lineMatrix=a.IDENTITY_MATRIX,e.textMatrixScale=1,e.tspan=this.svgFactory.createElement("svg:tspan"),e.txtElement=this.svgFactory.createElement("svg:text"),e.txtgrp=this.svgFactory.createElement("svg:g"),e.xcoords=[],e.ycoords=[]}moveText(e,t){var r=this.current;r.x=r.lineX+=e,r.y=r.lineY+=t,r.xcoords=[],r.ycoords=[],r.tspan=this.svgFactory.createElement("svg:tspan"),r.tspan.setAttributeNS(null,"font-family",r.fontFamily),r.tspan.setAttributeNS(null,"font-size",u(r.fontSize)+"px"),r.tspan.setAttributeNS(null,"y",u(-r.y))}showText(e){var t=this.current,r=t.font,o=t.fontSize;if(0!==o){var i=t.fontSizeScale,d=t.charSpacing,m=t.wordSpacing,c=t.fontDirection,g=t.textHScale*c,p=r.vertical,x=p?1:-1,v=r.defaultVMetrics,S=o*t.fontMatrix[0];let T=0;for(const a of e)if(null===a)T+=c*m;else if("number"==typeof a)T+=x*a*o/1e3;else{var f,b,A=(a.isSpace?m:0)+d,_=a.fontChar;let e,o,n=a.width;o=p?(y=a.vmetric||v,f=a.vmetric?y[1]:.5*n,b=y[2]*S,n=y?-y[0]:n,e=(f=-f*S)/i,(T+b)/i):(e=T/i,0),(a.isInFont||r.missingFile)&&(t.xcoords.push(t.x+e),p&&t.ycoords.push(-t.y+o),t.tspan.textContent+=_);var y=p?n*S-A*c:n*S+A*c;T+=y}t.tspan.setAttributeNS(null,"x",t.xcoords.map(u).join(" ")),p?t.tspan.setAttributeNS(null,"y",t.ycoords.map(u).join(" ")):t.tspan.setAttributeNS(null,"y",u(-t.y)),p?t.y-=T:t.x+=T*g,t.tspan.setAttributeNS(null,"font-family",t.fontFamily),t.tspan.setAttributeNS(null,"font-size",u(t.fontSize)+"px"),t.fontStyle!==n&&t.tspan.setAttributeNS(null,"font-style",t.fontStyle),t.fontWeight!==s&&t.tspan.setAttributeNS(null,"font-weight",t.fontWeight),(e=t.textRenderingMode&a.TextRenderingMode.FILL_STROKE_MASK)===a.TextRenderingMode.FILL||e===a.TextRenderingMode.FILL_STROKE?(t.fillColor!==l&&t.tspan.setAttributeNS(null,"fill",t.fillColor),t.fillAlpha<1&&t.tspan.setAttributeNS(null,"fill-opacity",t.fillAlpha)):t.textRenderingMode===a.TextRenderingMode.ADD_TO_PATH?t.tspan.setAttributeNS(null,"fill","transparent"):t.tspan.setAttributeNS(null,"fill","none"),e!==a.TextRenderingMode.STROKE&&e!==a.TextRenderingMode.FILL_STROKE||(e=1/(t.textMatrixScale||1),this._setStrokeAttributes(t.tspan,e));let P=t.textMatrix;0!==t.textRise&&((P=P.slice())[5]+=t.textRise),t.txtElement.setAttributeNS(null,"transform",`${h(P)} scale(${u(g)}, -1)`),t.txtElement.setAttributeNS("http://www.w3.org/XML/1998/namespace","xml:space","preserve"),t.txtElement.append(t.tspan),t.txtgrp.append(t.txtElement),this._ensureTransformGroup().append(t.txtElement)}}setLeadingMoveText(e,t){this.setLeading(-t),this.moveText(e,t)}addFontStyle(e){if(!e.data)throw new Error('addFontStyle: No font data available, ensure that the "fontExtraProperties" API parameter is set.');this.cssStyle||(this.cssStyle=this.svgFactory.createElement("svg:style"),this.cssStyle.setAttributeNS(null,"type","text/css"),this.defs.append(this.cssStyle));var t=i(e.data,e.mimetype,this.forceDataSchema);this.cssStyle.textContent+=`@font-face { font-family: "${e.loadedName}"; src: url(${t}); }\n`}setFont(e){var t=this.current,r=this.commonObjs.get(e[0]);let o=e[1],i=(t.font=r,!this.embedFonts||r.missingFile||this.embeddedFonts[r.loadedName]||(this.addFontStyle(r),this.embeddedFonts[r.loadedName]=r),t.fontMatrix=r.fontMatrix||a.FONT_IDENTITY_MATRIX,"normal");r.black?i="900":r.bold&&(i="bold"),e=r.italic?"italic":"normal",o<0?(o=-o,t.fontDirection=-1):t.fontDirection=1,t.fontSize=o,t.fontFamily=r.loadedName,t.fontWeight=i,t.fontStyle=e,t.tspan=this.svgFactory.createElement("svg:tspan"),t.tspan.setAttributeNS(null,"y",u(-t.y)),t.xcoords=[],t.ycoords=[]}endText(){var e=this.current;e.textRenderingMode&a.TextRenderingMode.ADD_TO_PATH_FLAG&&e.txtElement?.hasChildNodes()&&(e.element=e.txtElement,this.clip("nonzero"),this.endPath())}setLineWidth(e){0<e&&(this.current.lineWidth=e)}setLineCap(e){this.current.lineCap=d[e]}setLineJoin(e){this.current.lineJoin=m[e]}setMiterLimit(e){this.current.miterLimit=e}setStrokeAlpha(e){this.current.strokeAlpha=e}setStrokeRGBColor(e,t,r){this.current.strokeColor=a.Util.makeHexColor(e,t,r)}setFillAlpha(e){this.current.fillAlpha=e}setFillRGBColor(e,t,r){this.current.fillColor=a.Util.makeHexColor(e,t,r),this.current.tspan=this.svgFactory.createElement("svg:tspan"),this.current.xcoords=[],this.current.ycoords=[]}setStrokeColorN(e){this.current.strokeColor=this._makeColorN_Pattern(e)}setFillColorN(e){this.current.fillColor=this._makeColorN_Pattern(e)}shadingFill(e){var{width:t,height:r}=this.viewport,o=a.Util.inverseTransform(this.transformMatrix),[t,r,o,i]=a.Util.getAxialAlignedBoundingBox([0,0,t,r],o),n=this.svgFactory.createElement("svg:rect");n.setAttributeNS(null,"x",t),n.setAttributeNS(null,"y",r),n.setAttributeNS(null,"width",o-t),n.setAttributeNS(null,"height",i-r),n.setAttributeNS(null,"fill",this._makeShadingPattern(e)),this.current.fillAlpha<1&&n.setAttributeNS(null,"fill-opacity",this.current.fillAlpha),this._ensureTransformGroup().append(n)}_makeColorN_Pattern(e){return"TilingPattern"===e[0]?this._makeTilingPattern(e):this._makeShadingPattern(e)}_makeTilingPattern(e){var t=e[1],r=e[2],o=e[3]||a.IDENTITY_MATRIX,[i,n,s,l]=e[4],d=e[5],m=e[6],c=(e=e[7],"shading"+v++),[i,n,s,l]=a.Util.normalizeRect([...a.Util.applyTransform([i,n],o),...a.Util.applyTransform([s,l],o)]),[g,u]=a.Util.singularValueDecompose2dScale(o),u=(d=d*g,g=m*u,(m=this.svgFactory.createElement("svg:pattern")).setAttributeNS(null,"id",c),m.setAttributeNS(null,"patternUnits","userSpaceOnUse"),m.setAttributeNS(null,"width",d),m.setAttributeNS(null,"height",g),m.setAttributeNS(null,"x",""+i),m.setAttributeNS(null,"y",""+n),this.svg),g=(d=this.transformMatrix,this.current.fillColor),h=this.current.strokeColor,s=this.svgFactory.create(s-i,l-n);return this.svg=s,this.transformMatrix=o,2===e&&(i=a.Util.makeHexColor(...t),this.current.fillColor=i,this.current.strokeColor=i),this.executeOpTree(this.convertOpList(r)),this.svg=u,this.transformMatrix=d,this.current.fillColor=g,this.current.strokeColor=h,m.append(s.childNodes[0]),this.defs.append(m),`url(#${c})`}_makeShadingPattern(e){switch((e="string"==typeof e?this.objs.get(e):e)[0]){case"RadialAxial":var t="shading"+v++,r=e[3];let d;switch(e[1]){case"axial":var o=e[4],i=e[5];(d=this.svgFactory.createElement("svg:linearGradient")).setAttributeNS(null,"id",t),d.setAttributeNS(null,"gradientUnits","userSpaceOnUse"),d.setAttributeNS(null,"x1",o[0]),d.setAttributeNS(null,"y1",o[1]),d.setAttributeNS(null,"x2",i[0]),d.setAttributeNS(null,"y2",i[1]);break;case"radial":o=e[4],i=e[5];var n=e[6],s=e[7];(d=this.svgFactory.createElement("svg:radialGradient")).setAttributeNS(null,"id",t),d.setAttributeNS(null,"gradientUnits","userSpaceOnUse"),d.setAttributeNS(null,"cx",i[0]),d.setAttributeNS(null,"cy",i[1]),d.setAttributeNS(null,"r",s),d.setAttributeNS(null,"fx",o[0]),d.setAttributeNS(null,"fy",o[1]),d.setAttributeNS(null,"fr",n);break;default:throw new Error("Unknown RadialAxial type: "+e[1])}for(const e of r){var l=this.svgFactory.createElement("svg:stop");l.setAttributeNS(null,"offset",e[0]),l.setAttributeNS(null,"stop-color",e[1]),d.append(l)}return this.defs.append(d),`url(#${t})`;case"Mesh":return(0,a.warn)("Unimplemented pattern Mesh"),null;case"Dummy":return"hotpink";default:throw new Error("Unknown IR type: "+e[0])}}setDash(e,t){this.current.dashArray=e,this.current.dashPhase=t}constructPath(e,t){var r=this.current;let o=r.x,i=r.y,n=[],s=0;for(const r of e)switch(0|r){case a.OPS.rectangle:o=t[s++],i=t[s++];var l=o+(l=t[s++]),d=i+(d=t[s++]);n.push("M",u(o),u(i),"L",u(l),u(i),"L",u(l),u(d),"L",u(o),u(d),"Z");break;case a.OPS.moveTo:o=t[s++],i=t[s++],n.push("M",u(o),u(i));break;case a.OPS.lineTo:o=t[s++],i=t[s++],n.push("L",u(o),u(i));break;case a.OPS.curveTo:o=t[s+4],i=t[s+5],n.push("C",u(t[s]),u(t[s+1]),u(t[s+2]),u(t[s+3]),u(o),u(i)),s+=6;break;case a.OPS.curveTo2:n.push("C",u(o),u(i),u(t[s]),u(t[s+1]),u(t[s+2]),u(t[s+3])),o=t[s+2],i=t[s+3],s+=4;break;case a.OPS.curveTo3:o=t[s+2],i=t[s+3],n.push("C",u(t[s]),u(t[s+1]),u(o),u(i),u(o),u(i)),s+=4;break;case a.OPS.closePath:n.push("Z")}n=n.join(" "),r.path&&0<e.length&&e[0]!==a.OPS.rectangle&&e[0]!==a.OPS.moveTo?n=r.path.getAttributeNS(null,"d")+n:(r.path=this.svgFactory.createElement("svg:path"),this._ensureTransformGroup().append(r.path)),r.path.setAttributeNS(null,"d",n),r.path.setAttributeNS(null,"fill","none"),r.element=r.path,r.setCurrentPoint(o,i)}endPath(){var e=this.current;if(e.path=null,this.pendingClip)if(e.element){var t="clippath"+p++,r=this.svgFactory.createElement("svg:clipPath"),o=(r.setAttributeNS(null,"id",t),r.setAttributeNS(null,"transform",h(this.transformMatrix)),e.element.cloneNode(!0));if("evenodd"===this.pendingClip?o.setAttributeNS(null,"clip-rule","evenodd"):o.setAttributeNS(null,"clip-rule","nonzero"),this.pendingClip=null,r.append(o),this.defs.append(r),e.activeClipUrl){e.clipGroup=null;for(const e of this.extraStack)e.clipGroup=null;r.setAttributeNS(null,"clip-path",e.activeClipUrl)}e.activeClipUrl=`url(#${t})`,this.tgrp=null}else this.pendingClip=null}clip(e){this.pendingClip=e}closePath(){var e,t=this.current;t.path&&(e=t.path.getAttributeNS(null,"d")+"Z",t.path.setAttributeNS(null,"d",e))}setLeading(e){this.current.leading=-e}setTextRise(e){this.current.textRise=e}setTextRenderingMode(e){this.current.textRenderingMode=e}setHScale(e){this.current.textHScale=e/100}setRenderingIntent(e){}setFlatness(e){}setGState(e){for(var[t,r]of e)switch(t){case"LW":this.setLineWidth(r);break;case"LC":this.setLineCap(r);break;case"LJ":this.setLineJoin(r);break;case"ML":this.setMiterLimit(r);break;case"D":this.setDash(r[0],r[1]);break;case"RI":this.setRenderingIntent(r);break;case"FL":this.setFlatness(r);break;case"Font":this.setFont(r);break;case"CA":this.setStrokeAlpha(r);break;case"ca":this.setFillAlpha(r);break;default:(0,a.warn)("Unimplemented graphic state operator "+t)}}fill(){var e=this.current;e.element&&(e.element.setAttributeNS(null,"fill",e.fillColor),e.element.setAttributeNS(null,"fill-opacity",e.fillAlpha),this.endPath())}stroke(){var e=this.current;e.element&&(this._setStrokeAttributes(e.element),e.element.setAttributeNS(null,"fill","none"),this.endPath())}_setStrokeAttributes(e,t=1){var r=this.current;let o=r.dashArray;1!==t&&0<o.length&&(o=o.map((function(e){return t*e}))),e.setAttributeNS(null,"stroke",r.strokeColor),e.setAttributeNS(null,"stroke-opacity",r.strokeAlpha),e.setAttributeNS(null,"stroke-miterlimit",u(r.miterLimit)),e.setAttributeNS(null,"stroke-linecap",r.lineCap),e.setAttributeNS(null,"stroke-linejoin",r.lineJoin),e.setAttributeNS(null,"stroke-width",u(t*r.lineWidth)+"px"),e.setAttributeNS(null,"stroke-dasharray",o.map(u).join(" ")),e.setAttributeNS(null,"stroke-dashoffset",u(t*r.dashPhase)+"px")}eoFill(){this.current.element?.setAttributeNS(null,"fill-rule","evenodd"),this.fill()}fillStroke(){this.stroke(),this.fill()}eoFillStroke(){this.current.element?.setAttributeNS(null,"fill-rule","evenodd"),this.fillStroke()}closeStroke(){this.closePath(),this.stroke()}closeFillStroke(){this.closePath(),this.fillStroke()}closeEOFillStroke(){this.closePath(),this.eoFillStroke()}paintSolidColorImageMask(){var e=this.svgFactory.createElement("svg:rect");e.setAttributeNS(null,"x","0"),e.setAttributeNS(null,"y","0"),e.setAttributeNS(null,"width","1px"),e.setAttributeNS(null,"height","1px"),e.setAttributeNS(null,"fill",this.current.fillColor),this._ensureTransformGroup().append(e)}paintImageXObject(e){var t=this.getObject(e);t?this.paintInlineImageXObject(t):(0,a.warn)(`Dependent image with object ID ${e} is not ready yet`)}paintInlineImageXObject(e,t){var r,o=e.width,a=e.height;e=c(e,this.forceDataSchema,!!t);(r=((r=this.svgFactory.createElement("svg:rect")).setAttributeNS(null,"x","0"),r.setAttributeNS(null,"y","0"),r.setAttributeNS(null,"width",u(o)),r.setAttributeNS(null,"height",u(a)),this.current.element=r,this.clip("nonzero"),this.svgFactory.createElement("svg:image"))).setAttributeNS("http://www.w3.org/1999/xlink","xlink:href",e),r.setAttributeNS(null,"x","0"),r.setAttributeNS(null,"y",u(-a)),r.setAttributeNS(null,"width",u(o)+"px"),r.setAttributeNS(null,"height",u(a)+"px"),r.setAttributeNS(null,"transform",`scale(${u(1/o)} ${u(-1/a)})`),(t||this._ensureTransformGroup()).append(r)}paintImageMaskXObject(e){var t,r,o,i,n,s;(e=this.getObject(e.data,e)).bitmap?(0,a.warn)("paintImageMaskXObject: ImageBitmap support is not implemented, ensure that the `isOffscreenCanvasSupported` API parameter is disabled."):(t=this.current,r=e.width,o=e.height,i=t.fillColor,t.maskId="mask"+x++,(n=this.svgFactory.createElement("svg:mask")).setAttributeNS(null,"id",t.maskId),(s=this.svgFactory.createElement("svg:rect")).setAttributeNS(null,"x","0"),s.setAttributeNS(null,"y","0"),s.setAttributeNS(null,"width",u(r)),s.setAttributeNS(null,"height",u(o)),s.setAttributeNS(null,"fill",i),s.setAttributeNS(null,"mask",`url(#${t.maskId})`),this.defs.append(n),this._ensureTransformGroup().append(s),this.paintInlineImageXObject(e,n))}paintFormXObjectBegin(e,t){var r,o;Array.isArray(e)&&6===e.length&&this.transform(e[0],e[1],e[2],e[3],e[4],e[5]),t&&(e=t[2]-t[0],r=t[3]-t[1],(o=this.svgFactory.createElement("svg:rect")).setAttributeNS(null,"x",t[0]),o.setAttributeNS(null,"y",t[1]),o.setAttributeNS(null,"width",u(e)),o.setAttributeNS(null,"height",u(r)),this.current.element=o,this.clip("nonzero"),this.endPath())}paintFormXObjectEnd(){}_initialize(e){var t=this.svgFactory.create(e.width,e.height),r=this.svgFactory.createElement("svg:defs");return(r=(t.append(r),this.defs=r,this.svgFactory.createElement("svg:g"))).setAttributeNS(null,"transform",h(e.transform)),t.append(r),this.svg=r,t}_ensureClipGroup(){var e;return this.current.clipGroup||((e=this.svgFactory.createElement("svg:g")).setAttributeNS(null,"clip-path",this.current.activeClipUrl),this.svg.append(e),this.current.clipGroup=e),this.current.clipGroup}_ensureTransformGroup(){return this.tgrp||(this.tgrp=this.svgFactory.createElement("svg:g"),this.tgrp.setAttributeNS(null,"transform",h(this.transformMatrix)),(this.current.activeClipUrl?this._ensureClipGroup():this.svg).append(this.tgrp)),this.tgrp}}},(e,t)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.XfaText=void 0;class r{static textContent(e){const t=[];var o={items:t,styles:Object.create(null)};return function e(o){if(o){let i=null;var a=o.name;if("#text"===a)i=o.value;else{if(!r.shouldBuildText(a))return;o?.attributes?.textContent?i=o.attributes.textContent:o.value&&(i=o.value)}if(null!==i&&t.push({str:i}),o.children)for(const t of o.children)e(t)}}(e),o}static shouldBuildText(e){return!("textarea"===e||"input"===e||"option"===e||"select"===e)}}t.XfaText=r},(e,t,r)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.TextLayerRenderTask=void 0,t.renderTextLayer=function(e){e.textContentSource||!e.textContent&&!e.textContentStream||((0,a.deprecated)("The TextLayerRender `textContent`/`textContentStream` parameters will be removed in the future, please use `textContentSource` instead."),e.textContentSource=e.textContent||e.textContentStream);var{container:t,viewport:r}=e,o=(t=getComputedStyle(t)).getPropertyValue("visibility"),t=parseFloat(t.getPropertyValue("--scale-factor"));return"visible"===o&&(!t||1e-5<Math.abs(t-r.scale))&&console.error("The `--scale-factor` CSS-variable must be set, to the same value as `viewport.scale`, either on the `container`-element itself or higher up in the DOM."),(o=new m(e))._render(),o},t.updateTextLayer=function({container:e,viewport:t,textDivs:r,textDivProperties:o,isOffscreenCanvasSupported:i,mustRotate:n=!0,mustRescale:l=!0}){if(n&&(0,a.setLayerDimensions)(e,{rotation:t.rotation}),l){n=s(0,i);var m={prevFontSize:null,prevFontFamily:null,div:null,scale:t.scale*(globalThis.devicePixelRatio||1),properties:null,ctx:n};for(const e of r)m.properties=o.get(e),m.div=e,d(m)}};var o=r(1),a=r(6);const i=30,n=new Map;function s(e,t){return(t&&o.FeatureTest.isOffscreenCanvasSupported?new OffscreenCanvas(e,e):((t=document.createElement("canvas")).width=t.height=e,t)).getContext("2d",{alpha:!1})}function l(e,t,r){var a=document.createElement("span"),l={angle:0,canvasWidth:0,hasText:""!==t.str,hasEOL:t.hasEOL,fontSize:0},d=(e._textDivs.push(a),o.Util.transform(e._transform,t.transform));let m=Math.atan2(d[1],d[0]);var c=((r=r[t.fontName]).vertical&&(m+=Math.PI/2),Math.hypot(d[2],d[3])),g=c*function(e,t){var r;if(r=n.get(e))return r;(r=s(i,t)).font="30px "+e;let o=(t=r.measureText("")).fontBoundingBoxAscent,a=Math.abs(t.fontBoundingBoxDescent);if(o)return t=o/(o+a),n.set(e,t),r.canvas.width=r.canvas.height=0,t;r.strokeStyle="red",r.clearRect(0,0,i,i),r.strokeText("g",0,0);let l=r.getImageData(0,0,i,i).data;a=0;for(let e=l.length-1-3;0<=e;e-=4)if(0<l[e]){a=Math.ceil(e/4/i);break}r.clearRect(0,0,i,i),r.strokeText("A",0,i),l=r.getImageData(0,0,i,i).data;for(let e=o=0,t=l.length;e<t;e+=4)if(0<l[e]){o=i-Math.floor(e/4/i);break}return r.canvas.width=r.canvas.height=0,o?(t=o/(o+a),n.set(e,t),t):(n.set(e,.8),.8)}(r.fontFamily,e._isOffscreenCanvasSupported);let u,h;h=0===m?(u=d[4],d[5]-g):(u=d[4]+g*Math.sin(m),d[5]-g*Math.cos(m));d="calc(var(--scale-factor)*",g=a.style;e._container===e._rootContainer?(g.left=(100*u/e._pageWidth).toFixed(2)+"%",g.top=(100*h/e._pageHeight).toFixed(2)+"%"):(g.left=d+u.toFixed(2)+"px)",g.top=d+h.toFixed(2)+"px)"),g.fontSize=d+c.toFixed(2)+"px)",g.fontFamily=r.fontFamily,l.fontSize=c,a.setAttribute("role","presentation"),a.textContent=t.str,a.dir=t.dir,e._fontInspectorEnabled&&(a.dataset.fontName=t.fontName),0!==m&&(l.angle=m*(180/Math.PI));let p=!1;(p=1<t.str.length||" "!==t.str&&t.transform[0]!==t.transform[3]&&(d=Math.abs(t.transform[0]))!==(g=Math.abs(t.transform[3]))&&1.5<Math.max(d,g)/Math.min(d,g)||p)&&(l.canvasWidth=r.vertical?t.height:t.width),e._textDivProperties.set(a,l),e._isReadableStream&&e._layoutText(a)}function d(e){var t,r,o,{div:a,scale:i,properties:n,ctx:s,prevFontSize:l,prevFontFamily:d}=e,m=a.style;let c="";0!==n.canvasWidth&&n.hasText&&(t=m.fontFamily,({canvasWidth:r,fontSize:o}=n),0<(l=(l===o&&d===t||(s.font=o*i+"px "+t,e.prevFontSize=o,e.prevFontFamily=t),s.measureText(a.textContent)).width))&&(c=`scaleX(${r*i/l})`),0<(c=0!==n.angle?`rotate(${n.angle}deg) `+c:c).length&&(m.transform=c)}class m{constructor({textContentSource:e,container:t,viewport:r,textDivs:i,textDivProperties:n,textContentItemsStr:l,isOffscreenCanvasSupported:d}){this._textContentSource=e,this._isReadableStream=e instanceof ReadableStream,this._container=this._rootContainer=t,this._textDivs=i||[],this._textContentItemsStr=l||[],this._isOffscreenCanvasSupported=d,this._fontInspectorEnabled=!!globalThis.FontInspector?.enabled,this._reader=null,this._textDivProperties=n||new WeakMap,this._canceled=!1,this._capability=new o.PromiseCapability,this._layoutTextParams={prevFontSize:null,prevFontFamily:null,div:null,scale:r.scale*(globalThis.devicePixelRatio||1),properties:null,ctx:s(0,d)};var{pageWidth:e,pageHeight:i,pageX:l,pageY:n}=r.rawDims;this._transform=[1,0,0,-1,-l,n+i],this._pageWidth=e,this._pageHeight=i,(0,a.setLayerDimensions)(t,r),this._capability.promise.finally((()=>{this._layoutTextParams=null})).catch((()=>{}))}get promise(){return this._capability.promise}cancel(){this._canceled=!0,this._reader&&(this._reader.cancel(new o.AbortException("TextLayer task cancelled.")).catch((()=>{})),this._reader=null),this._capability.reject(new o.AbortException("TextLayer task cancelled."))}_processItems(e,t){for(const o of e){var r;void 0===o.str?"beginMarkedContentProps"===o.type||"beginMarkedContent"===o.type?(r=this._container,this._container=document.createElement("span"),this._container.classList.add("markedContent"),null!==o.id&&this._container.setAttribute("id",""+o.id),r.append(this._container)):"endMarkedContent"===o.type&&(this._container=this._container.parentNode):(this._textContentItemsStr.push(o.str),l(this,o,t))}}_layoutText(e){var t=this._layoutTextParams.properties=this._textDivProperties.get(e);this._layoutTextParams.div=e,d(this._layoutTextParams),t.hasText&&this._container.append(e),t.hasEOL&&((e=document.createElement("br")).setAttribute("role","presentation"),this._container.append(e))}_render(){const e=new o.PromiseCapability;let t=Object.create(null);if(this._isReadableStream){const r=()=>{this._reader.read().then((({value:o,done:a})=>{a?e.resolve():(Object.assign(t,o.styles),this._processItems(o.items,t),r())}),e.reject)};this._reader=this._textContentSource.getReader(),r()}else{if(!this._textContentSource)throw new Error('No "textContentSource" parameter specified.');var{items:r,styles:a}=this._textContentSource;this._processItems(r,a),e.resolve()}e.promise.then((()=>{t=null,function(e){if(!e._canceled){var t=e._textDivs,r=e._capability;if(!(1e5<t.length||e._isReadableStream))for(const r of t)e._layoutText(r);r.resolve()}}(this)}),this._capability.reject)}}t.TextLayerRenderTask=m},(e,t,r)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.AnnotationEditorLayer=void 0;var o=r(1),a=r(4),i=r(28),n=r(33),s=r(6),l=r(34);class d{#_t;#yt=!1;#Tt=null;#Pt=this.pointerup.bind(this);#$t=this.pointerdown.bind(this);#Mt=new Map;#wt=!1;#Ct=!1;#Et=!1;#Lt;static _initialized=!1;constructor({uiManager:e,pageIndex:t,div:r,accessibilityManager:o,annotationLayer:a,viewport:s,l10n:m}){var c=[i.FreeTextEditor,n.InkEditor,l.StampEditor];if(!d._initialized){d._initialized=!0;for(const e of c)e.initialize(m)}e.registerEditorTypes(c),this.#Lt=e,this.pageIndex=t,this.div=r,this.#_t=o,this.#Tt=a,this.viewport=s,this.#Lt.addLayer(this)}get isEmpty(){return 0===this.#Mt.size}updateToolbar(e){this.#Lt.updateToolbar(e)}updateMode(e=this.#Lt.getMode()){this.#Ot(),e===o.AnnotationEditorType.INK?(this.addInkEditorIfNeeded(!1),this.disableClick()):this.enableClick(),e!==o.AnnotationEditorType.NONE&&(this.div.classList.toggle("freeTextEditing",e===o.AnnotationEditorType.FREETEXT),this.div.classList.toggle("inkEditing",e===o.AnnotationEditorType.INK),this.div.classList.toggle("stampEditing",e===o.AnnotationEditorType.STAMP),this.div.hidden=!1)}addInkEditorIfNeeded(e){if(e||this.#Lt.getMode()===o.AnnotationEditorType.INK){if(!e)for(const e of this.#Mt.values())if(e.isEmpty())return void e.setInBackground();this.#It({offsetX:0,offsetY:0},!1).setInBackground()}}setEditingState(e){this.#Lt.setEditingState(e)}addCommands(e){this.#Lt.addCommands(e)}enable(){this.div.style.pointerEvents="auto";var e,t=new Set;for(const e of this.#Mt.values())e.enableEditing(),e.annotationElementId&&t.add(e.annotationElementId);if(this.#Tt)for(const r of this.#Tt.getEditableAnnotations())r.hide(),this.#Lt.isDeletedAnnotationElement(r.data.id)||t.has(r.data.id)||(e=this.deserialize(r))&&(this.addOrRebuild(e),e.enableEditing())}disable(){this.#Et=!0,this.div.style.pointerEvents="none";var e=new Set;for(const t of this.#Mt.values())t.disableEditing(),t.annotationElementId&&null===t.serialize()?(this.getEditableAnnotation(t.annotationElementId)?.show(),t.remove()):e.add(t.annotationElementId);if(this.#Tt)for(const r of this.#Tt.getEditableAnnotations()){var t=r.data.id;e.has(t)||this.#Lt.isDeletedAnnotationElement(t)||r.show()}this.#Ot(),this.isEmpty&&(this.div.hidden=!0),this.#Et=!1}getEditableAnnotation(e){return this.#Tt?.getEditableAnnotation(e)||null}setActiveEditor(e){this.#Lt.getActive()!==e&&this.#Lt.setActiveEditor(e)}enableClick(){this.div.addEventListener("pointerdown",this.#$t),this.div.addEventListener("pointerup",this.#Pt)}disableClick(){this.div.removeEventListener("pointerdown",this.#$t),this.div.removeEventListener("pointerup",this.#Pt)}attach(e){this.#Mt.set(e.id,e);var t=e.annotationElementId;t&&this.#Lt.isDeletedAnnotationElement(t)&&this.#Lt.removeDeletedAnnotationElement(e)}detach(e){this.#Mt.delete(e.id),this.#_t?.removePointerInTextLayer(e.contentDiv),!this.#Et&&e.annotationElementId&&this.#Lt.addDeletedAnnotationElement(e)}remove(e){this.detach(e),this.#Lt.removeEditor(e),e.div.contains(document.activeElement)&&setTimeout((()=>{this.#Lt.focusMainContainer()}),0),e.div.remove(),e.isAttachedToDOM=!1,this.#Ct||this.addInkEditorIfNeeded(!1)}changeParent(e){e.parent!==this&&(e.annotationElementId&&(this.#Lt.addDeletedAnnotationElement(e.annotationElementId),a.AnnotationEditor.deleteAnnotationElement(e),e.annotationElementId=null),this.attach(e),e.parent?.detach(e),e.setParent(this),e.div)&&e.isAttachedToDOM&&(e.div.remove(),this.div.append(e.div))}add(e){var t;this.changeParent(e),this.#Lt.addEditor(e),this.attach(e),e.isAttachedToDOM||(t=e.render(),this.div.append(t),e.isAttachedToDOM=!0),e.fixAndSetPosition(),e.onceAdded(),this.#Lt.addToAnnotationStorage(e)}moveEditorInDOM(e){if(e.isAttachedToDOM){const t=document.activeElement;e.div.contains(t)&&(e._focusEventsAllowed=!1,setTimeout((()=>{e.div.contains(document.activeElement)?e._focusEventsAllowed=!0:(e.div.addEventListener("focusin",(()=>{e._focusEventsAllowed=!0}),{once:!0}),t.focus())}),0)),e._structTreeParentId=this.#_t?.moveElementInDOM(this.div,e.div,e.contentDiv,!0)}}addOrRebuild(e){e.needsToBeRebuilt()?e.rebuild():this.add(e)}addUndoableEditor(e){this.addCommands({cmd:()=>e._uiManager.rebuild(e),undo:()=>{e.remove()},mustExec:!1})}getNextId(){return this.#Lt.getId()}#Gt(e){switch(this.#Lt.getMode()){case o.AnnotationEditorType.FREETEXT:return new i.FreeTextEditor(e);case o.AnnotationEditorType.INK:return new n.InkEditor(e);case o.AnnotationEditorType.STAMP:return new l.StampEditor(e)}return null}pasteEditor(e,t){this.#Lt.updateToolbar(e),this.#Lt.updateMode(e);var{offsetX:e,offsetY:r}=this.#Nt(),o=this.getNextId();(o=this.#Gt({parent:this,id:o,x:e,y:r,uiManager:this.#Lt,isCentered:!0,...t}))&&this.add(o)}deserialize(e){switch(e.annotationType??e.annotationEditorType){case o.AnnotationEditorType.FREETEXT:return i.FreeTextEditor.deserialize(e,this,this.#Lt);case o.AnnotationEditorType.INK:return n.InkEditor.deserialize(e,this,this.#Lt);case o.AnnotationEditorType.STAMP:return l.StampEditor.deserialize(e,this,this.#Lt)}return null}#It(e,t){var r=this.getNextId();return(r=this.#Gt({parent:this,id:r,x:e.offsetX,y:e.offsetY,uiManager:this.#Lt,isCentered:t}))&&this.add(r),r}#Nt(){var{x:e,y:t,width:r,height:o}=this.div.getBoundingClientRect(),a=Math.max(0,e),i=Math.max(0,t),r=(a=(a+Math.min(window.innerWidth,e+r))/2-e,(i+Math.min(window.innerHeight,t+o))/2-t),[e,i]=this.viewport.rotation%180==0?[a,r]:[r,a];return{offsetX:e,offsetY:i}}addNewEditor(){this.#It(this.#Nt(),!0)}setSelected(e){this.#Lt.setSelected(e)}toggleSelected(e){this.#Lt.toggleSelected(e)}isSelected(e){return this.#Lt.isSelected(e)}unselect(e){this.#Lt.unselect(e)}pointerup(e){var t=o.FeatureTest.platform.isMac;0!==e.button||e.ctrlKey&&t||e.target===this.div&&this.#wt&&(this.#wt=!1,this.#yt?this.#Lt.getMode()===o.AnnotationEditorType.STAMP?this.#Lt.unselectAll():this.#It(e,!1):this.#yt=!0)}pointerdown(e){var t;this.#wt?this.#wt=!1:(t=o.FeatureTest.platform.isMac,0!==e.button||e.ctrlKey&&t||e.target===this.div&&(this.#wt=!0,t=this.#Lt.getActive(),this.#yt=!t||t.isEmpty()))}findNewParent(e,t,r){return null!==(t=this.#Lt.findParent(t,r))&&t!==this&&(t.changeParent(e),!0)}destroy(){this.#Lt.getActive()?.parent===this&&(this.#Lt.commitOrRemove(),this.#Lt.setActiveEditor(null));for(const e of this.#Mt.values())this.#_t?.removePointerInTextLayer(e.contentDiv),e.setParent(null),e.isAttachedToDOM=!1,e.div.remove();this.div=null,this.#Mt.clear(),this.#Lt.removeLayer(this)}#Ot(){this.#Ct=!0;for(const e of this.#Mt.values())e.isEmpty()&&e.remove();this.#Ct=!1}render({viewport:e}){this.viewport=e,(0,s.setLayerDimensions)(this.div,e);for(const e of this.#Lt.getEditors(this.pageIndex))this.add(e);this.updateMode()}update({viewport:e}){this.#Lt.commitOrRemove(),this.viewport=e,(0,s.setLayerDimensions)(this.div,{rotation:e.rotation}),this.updateMode()}get pageDimensions(){var{pageWidth:e,pageHeight:t}=this.viewport.rawDims;return[e,t]}}t.AnnotationEditorLayer=d},(e,t,r)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.FreeTextEditor=void 0;var o=r(1),a=r(5),i=r(4),n=r(29);class s extends i.AnnotationEditor{#Bt=this.editorDivBlur.bind(this);#kt=this.editorDivFocus.bind(this);#Rt=this.editorDivInput.bind(this);#Ft=this.editorDivKeydown.bind(this);#Dt;#Ut="";#Xt=this.id+"-editor";#Vt;#Ht=null;static _freeTextDefaultContent="";static _internalPadding=0;static _defaultColor=null;static _defaultFontSize=10;static get _keyboardManager(){var e=s.prototype,t=e=>e.isEmpty(),r=a.AnnotationEditorUIManager.TRANSLATE_SMALL,i=a.AnnotationEditorUIManager.TRANSLATE_BIG;return(0,o.shadow)(this,"_keyboardManager",new a.KeyboardManager([[["ctrl+s","mac+meta+s","ctrl+p","mac+meta+p"],e.commitOrRemove,{bubbles:!0}],[["ctrl+Enter","mac+meta+Enter","Escape","mac+Escape"],e.commitOrRemove],[["ArrowLeft","mac+ArrowLeft"],e._translateEmpty,{args:[-r,0],checker:t}],[["ctrl+ArrowLeft","mac+shift+ArrowLeft"],e._translateEmpty,{args:[-i,0],checker:t}],[["ArrowRight","mac+ArrowRight"],e._translateEmpty,{args:[r,0],checker:t}],[["ctrl+ArrowRight","mac+shift+ArrowRight"],e._translateEmpty,{args:[i,0],checker:t}],[["ArrowUp","mac+ArrowUp"],e._translateEmpty,{args:[0,-r],checker:t}],[["ctrl+ArrowUp","mac+shift+ArrowUp"],e._translateEmpty,{args:[0,-i],checker:t}],[["ArrowDown","mac+ArrowDown"],e._translateEmpty,{args:[0,r],checker:t}],[["ctrl+ArrowDown","mac+shift+ArrowDown"],e._translateEmpty,{args:[0,i],checker:t}]]))}static _type="freetext";constructor(e){super({...e,name:"freeTextEditor"}),this.#Dt=e.color||s._defaultColor||i.AnnotationEditor._defaultLineColor,this.#Vt=e.fontSize||s._defaultFontSize}static initialize(e){i.AnnotationEditor.initialize(e,{strings:["free_text2_default_content","editor_free_text2_aria_label"]}),e=getComputedStyle(document.documentElement),this._internalPadding=parseFloat(e.getPropertyValue("--freetext-padding"))}static updateDefaultParams(e,t){switch(e){case o.AnnotationEditorParamsType.FREETEXT_SIZE:s._defaultFontSize=t;break;case o.AnnotationEditorParamsType.FREETEXT_COLOR:s._defaultColor=t}}updateParams(e,t){switch(e){case o.AnnotationEditorParamsType.FREETEXT_SIZE:this.#Wt(t);break;case o.AnnotationEditorParamsType.FREETEXT_COLOR:this.#Kt(t)}}static get defaultPropertiesToUpdate(){return[[o.AnnotationEditorParamsType.FREETEXT_SIZE,s._defaultFontSize],[o.AnnotationEditorParamsType.FREETEXT_COLOR,s._defaultColor||i.AnnotationEditor._defaultLineColor]]}get propertiesToUpdate(){return[[o.AnnotationEditorParamsType.FREETEXT_SIZE,this.#Vt],[o.AnnotationEditorParamsType.FREETEXT_COLOR,this.#Dt]]}#Wt(e){const t=e=>{this.editorDiv.style.fontSize=`calc(${e}px * var(--scale-factor))`,this.translate(0,-(e-this.#Vt)*this.parentScale),this.#Vt=e,this.#Zt()},r=this.#Vt;this.addCommands({cmd:()=>{t(e)},undo:()=>{t(r)},mustExec:!0,type:o.AnnotationEditorParamsType.FREETEXT_SIZE,overwriteIfSameType:!0,keepUndo:!0})}#Kt(e){const t=this.#Dt;this.addCommands({cmd:()=>{this.#Dt=this.editorDiv.style.color=e},undo:()=>{this.#Dt=this.editorDiv.style.color=t},mustExec:!0,type:o.AnnotationEditorParamsType.FREETEXT_COLOR,overwriteIfSameType:!0,keepUndo:!0})}_translateEmpty(e,t){this._uiManager.translateSelectedEditors(e,t,!0)}getInitialTranslation(){var e=this.parentScale;return[-s._internalPadding*e,-(s._internalPadding+this.#Vt)*e]}rebuild(){this.parent&&(super.rebuild(),null===this.div||this.isAttachedToDOM||this.parent.add(this))}enableEditMode(){this.isInEditMode()||(this.parent.setEditingState(!1),this.parent.updateToolbar(o.AnnotationEditorType.FREETEXT),super.enableEditMode(),this.overlayDiv.classList.remove("enabled"),this.editorDiv.contentEditable=!0,this._isDraggable=!1,this.div.removeAttribute("aria-activedescendant"),this.editorDiv.addEventListener("keydown",this.#Ft),this.editorDiv.addEventListener("focus",this.#kt),this.editorDiv.addEventListener("blur",this.#Bt),this.editorDiv.addEventListener("input",this.#Rt))}disableEditMode(){this.isInEditMode()&&(this.parent.setEditingState(!0),super.disableEditMode(),this.overlayDiv.classList.add("enabled"),this.editorDiv.contentEditable=!1,this.div.setAttribute("aria-activedescendant",this.#Xt),this._isDraggable=!0,this.editorDiv.removeEventListener("keydown",this.#Ft),this.editorDiv.removeEventListener("focus",this.#kt),this.editorDiv.removeEventListener("blur",this.#Bt),this.editorDiv.removeEventListener("input",this.#Rt),this.div.focus({preventScroll:!0}),this.isEditing=!1,this.parent.div.classList.add("freeTextEditing"))}focusin(e){this._focusEventsAllowed&&(super.focusin(e),e.target!==this.editorDiv)&&this.editorDiv.focus()}onceAdded(){this.width?this.#zt():(this.enableEditMode(),this.editorDiv.focus(),this._initialOptions?.isCentered&&this.center(),this._initialOptions=null)}isEmpty(){return!this.editorDiv||""===this.editorDiv.innerText.trim()}remove(){this.isEditing=!1,this.parent&&(this.parent.setEditingState(!0),this.parent.div.classList.add("freeTextEditing")),super.remove()}#Qt(){var e=this.editorDiv.getElementsByTagName("div");if(0===e.length)return this.editorDiv.innerText;var t=[];for(const r of e)t.push(r.innerText.replace(/\r\n?|\n/,""));return t.join("\n")}#Zt(){var e,t,r,[o,a]=this.parentDimensions;let i;this.isAttachedToDOM?i=this.div.getBoundingClientRect():(({currentLayer:e,div:t}=this),r=t.style.display,t.style.display="hidden",e.div.append(this.div),i=t.getBoundingClientRect(),t.remove(),t.style.display=r),this.rotation%180==this.parentRotation%180?(this.width=i.width/o,this.height=i.height/a):(this.width=i.height/o,this.height=i.width/a),this.fixAndSetPosition()}commit(){if(this.isInEditMode()){super.commit(),this.disableEditMode();const e=this.#Ut,t=this.#Ut=this.#Qt().trimEnd();if(e!==t){const r=e=>{(this.#Ut=e)?(this.#jt(),this._uiManager.rebuild(this),this.#Zt()):this.remove()};this.addCommands({cmd:()=>{r(t)},undo:()=>{r(e)},mustExec:!1}),this.#Zt()}}}shouldGetKeyboardEvents(){return this.isInEditMode()}enterInEditMode(){this.enableEditMode(),this.editorDiv.focus()}dblclick(e){this.enterInEditMode()}keydown(e){e.target===this.div&&"Enter"===e.key&&(this.enterInEditMode(),e.preventDefault())}editorDivKeydown(e){s._keyboardManager.exec(this,e)}editorDivFocus(e){this.isEditing=!0}editorDivBlur(e){this.isEditing=!1}editorDivInput(e){this.parent.div.classList.toggle("freeTextEditing",this.isEmpty())}disableEditing(){this.editorDiv.setAttribute("role","comment"),this.editorDiv.removeAttribute("aria-multiline")}enableEditing(){this.editorDiv.setAttribute("role","textbox"),this.editorDiv.setAttribute("aria-multiline",!0)}render(){if(!this.div){let d,m;var e;if(this.width&&(d=this.x,m=this.y),super.render(),this.editorDiv=document.createElement("div"),this.editorDiv.className="internal",this.editorDiv.setAttribute("id",this.#Xt),this.enableEditing(),i.AnnotationEditor._l10nPromise.get("editor_free_text2_aria_label").then((e=>this.editorDiv?.setAttribute("aria-label",e))),i.AnnotationEditor._l10nPromise.get("free_text2_default_content").then((e=>this.editorDiv?.setAttribute("default-content",e))),this.editorDiv.contentEditable=!0,(e=this.editorDiv.style).fontSize=`calc(${this.#Vt}px * var(--scale-factor))`,e.color=this.#Dt,this.div.append(this.editorDiv),this.overlayDiv=document.createElement("div"),this.overlayDiv.classList.add("overlay","enabled"),this.div.append(this.overlayDiv),(0,a.bindEvents)(this,this.div,["dblclick","keydown"]),this.width){var[e,t]=this.parentDimensions;if(this.annotationElementId){var r=this.#Ht.position;let[a,i]=this.getInitialTranslation();[a,i]=this.pageTranslationToScreen(a,i);var[o,n]=this.pageDimensions,[s,l]=this.pageTranslation;let c,g;switch(this.rotation){case 0:c=d+(r[0]-s)/o,g=m+this.height-(r[1]-l)/n;break;case 90:c=d+(r[0]-s)/o,g=m-(r[1]-l)/n,[a,i]=[i,-a];break;case 180:c=d-this.width+(r[0]-s)/o,g=m-(r[1]-l)/n,[a,i]=[-a,-i];break;case 270:c=d+(r[0]-s-this.height*n)/o,g=m+(r[1]-l-this.width*o)/n,[a,i]=[-i,a]}this.setAt(c*e,g*t,a,i)}else this.setAt(d*e,m*t,this.width*e,this.height*t);this.#jt(),this._isDraggable=!0,this.editorDiv.contentEditable=!1}else this._isDraggable=!1,this.editorDiv.contentEditable=!0}return this.div}#jt(){if(this.editorDiv.replaceChildren(),this.#Ut)for(const t of this.#Ut.split("\n")){var e=document.createElement("div");e.append(t?document.createTextNode(t):document.createElement("br")),this.editorDiv.append(e)}}get contentDiv(){return this.editorDiv}static deserialize(e,t,r){let a=null;if(e instanceof n.FreeTextAnnotationElement){var{data:{defaultAppearanceData:{fontSize:i,fontColor:s},rect:l,rotation:d,id:m},textContent:c,textPosition:g,parent:{page:{pageNumber:u}}}=e;if(!c||0===c.length)return null;a=e={annotationType:o.AnnotationEditorType.FREETEXT,color:Array.from(s),fontSize:i,value:c.join("\n"),position:g,pageIndex:u-1,rect:l,rotation:d,id:m,deleted:!1}}return(s=super.deserialize(e,t,r)).#Vt=e.fontSize,s.#Dt=o.Util.makeHexColor(...e.color),s.#Ut=e.value,s.annotationElementId=e.id||null,s.#Ht=a,s}serialize(e=!1){if(this.isEmpty())return null;if(this.deleted)return{pageIndex:this.pageIndex,id:this.annotationElementId,deleted:!0};var t=s._internalPadding*this.parentScale,r=(t=this.getRect(t,t),i.AnnotationEditor._colorManager.convert(this.isAttachedToDOM?getComputedStyle(this.editorDiv).color:this.#Dt));r={annotationType:o.AnnotationEditorType.FREETEXT,color:r,fontSize:this.#Vt,value:this.#Ut,pageIndex:this.pageIndex,rect:t,rotation:this.rotation,structTreeParentId:this._structTreeParentId};if(!e){if(this.annotationElementId&&!this.#Yt(r))return null;r.id=this.annotationElementId}return r}#Yt(e){const{value:t,fontSize:r,color:o,rect:a,pageIndex:i}=this.#Ht;return e.value!==t||e.fontSize!==r||e.rect.some(((e,t)=>1<=Math.abs(e-a[t])))||e.color.some(((e,t)=>e!==o[t]))||e.pageIndex!==i}#zt(e=!1){this.annotationElementId&&(this.#Zt(),e||0!==this.width&&0!==this.height?(e=s._internalPadding*this.parentScale,this.#Ht.rect=this.getRect(e,e)):setTimeout((()=>this.#zt(!0)),0))}}t.FreeTextEditor=s},(e,t,r)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.StampAnnotationElement=t.InkAnnotationElement=t.FreeTextAnnotationElement=t.AnnotationLayer=void 0;var o=r(1),a=r(6),i=r(3),n=r(30),s=r(31),l=r(32);const d=new WeakSet;function m(e){return{width:e[2]-e[0],height:e[3]-e[1]}}class c{static create(e){switch(e.data.annotationType){case o.AnnotationType.LINK:return new u(e);case o.AnnotationType.TEXT:return new h(e);case o.AnnotationType.WIDGET:switch(e.data.fieldType){case"Tx":return new x(e);case"Btn":return e.data.radioButton?new f(e):new(e.data.checkBox?S:b)(e);case"Ch":return new A(e);case"Sig":return new v(e)}return new p(e);case o.AnnotationType.POPUP:return new _(e);case o.AnnotationType.FREETEXT:return new T(e);case o.AnnotationType.LINE:return new P(e);case o.AnnotationType.SQUARE:return new $(e);case o.AnnotationType.CIRCLE:return new M(e);case o.AnnotationType.POLYLINE:return new w(e);case o.AnnotationType.CARET:return new E(e);case o.AnnotationType.INK:return new L(e);case o.AnnotationType.POLYGON:return new C(e);case o.AnnotationType.HIGHLIGHT:return new O(e);case o.AnnotationType.UNDERLINE:return new I(e);case o.AnnotationType.SQUIGGLY:return new G(e);case o.AnnotationType.STRIKEOUT:return new N(e);case o.AnnotationType.STAMP:return new B(e);case o.AnnotationType.FILEATTACHMENT:return new k(e);default:return new g(e)}}}class g{#Jt=!1;constructor(e,{isRenderable:t=!1,ignoreBorder:r=!1,createQuadrilaterals:o=!1}={}){this.isRenderable=t,this.data=e.data,this.layer=e.layer,this.linkService=e.linkService,this.downloadManager=e.downloadManager,this.imageResourcesPath=e.imageResourcesPath,this.renderForms=e.renderForms,this.svgFactory=e.svgFactory,this.annotationStorage=e.annotationStorage,this.enableScripting=e.enableScripting,this.hasJSActions=e.hasJSActions,this._fieldObjects=e.fieldObjects,this.parent=e.parent,t&&(this.container=this._createContainer(r)),o&&this._createQuadrilaterals()}static _hasPopupData({titleObj:e,contentsObj:t,richText:r}){return!!(e?.str||t?.str||r?.str)}get hasPopupData(){return g._hasPopupData(this.data)}_createContainer(e){var{data:t,parent:{page:r,viewport:a}}=this,i=document.createElement("section"),{pageWidth:a,pageHeight:n,pageX:s,pageY:l}=(i.setAttribute("data-annotation-id",t.id),this instanceof p||(i.tabIndex=1e3),i.style.zIndex=this.parent.zIndex++,this.data.popupRef&&i.setAttribute("aria-haspopup","dialog"),t.noRotate&&i.classList.add("norotate"),a.rawDims);if(!t.rect||this instanceof _){const e=t.rotation;t.hasOwnCanvas||0===e||this.setRotation(e,i)}else{var{width:d,height:c}=m(t.rect),r=o.Util.normalizeRect([t.rect[0],r.view[3]-t.rect[1]+r.view[1],t.rect[2],r.view[3]-t.rect[3]+r.view[1]]);if(!e&&0<t.borderStyle.width){i.style.borderWidth=t.borderStyle.width+"px";e=t.borderStyle.horizontalCornerRadius;var g=t.borderStyle.verticalCornerRadius;switch(0<e||0<g?i.style.borderRadius=`calc(${e}px * var(--scale-factor)) / calc(${g}px * var(--scale-factor))`:this instanceof f&&(i.style.borderRadius=`calc(${d}px * var(--scale-factor)) / calc(${c}px * var(--scale-factor))`),t.borderStyle.style){case o.AnnotationBorderStyleType.SOLID:i.style.borderStyle="solid";break;case o.AnnotationBorderStyleType.DASHED:i.style.borderStyle="dashed";break;case o.AnnotationBorderStyleType.BEVELED:(0,o.warn)("Unimplemented border style: beveled");break;case o.AnnotationBorderStyleType.INSET:(0,o.warn)("Unimplemented border style: inset");break;case o.AnnotationBorderStyleType.UNDERLINE:i.style.borderBottomStyle="solid"}(e=t.borderColor||null)?(this.#Jt=!0,i.style.borderColor=o.Util.makeHexColor(0|e[0],0|e[1],0|e[2])):i.style.borderWidth=0}i.style.left=100*(r[0]-s)/a+"%",i.style.top=100*(r[1]-l)/n+"%";const u=t.rotation;t.hasOwnCanvas||0===u?(i.style.width=100*d/a+"%",i.style.height=100*c/n+"%"):this.setRotation(u,i)}return i}setRotation(e,t=this.container){if(this.data.rect){var{pageWidth:r,pageHeight:o}=this.parent.viewport.rawDims,{width:a,height:i}=m(this.data.rect);let n,s;s=e%180==0?(n=100*a/r,100*i/o):(n=100*i/r,100*a/o),t.style.width=n+"%",t.style.height=s+"%",t.setAttribute("data-main-rotation",(360-e)%360)}}get _commonActions(){const e=(e,t,r)=>{var o=(e=r.detail[e])[0];e=e.slice(1);r.target.style[t]=n.ColorConverters[o+"_HTML"](e),this.annotationStorage.setValue(this.data.id,{[t]:n.ColorConverters[o+"_rgb"](e)})};return(0,o.shadow)(this,"_commonActions",{display:e=>{var t=(e=e.detail.display)%2==1;this.container.style.visibility=t?"hidden":"visible",this.annotationStorage.setValue(this.data.id,{noView:t,noPrint:1===e||2===e})},print:e=>{this.annotationStorage.setValue(this.data.id,{noPrint:!e.detail.print})},hidden:e=>{e=e.detail.hidden,this.container.style.visibility=e?"hidden":"visible",this.annotationStorage.setValue(this.data.id,{noPrint:e,noView:e})},focus:e=>{setTimeout((()=>e.target.focus({preventScroll:!1})),0)},userName:e=>{e.target.title=e.detail.userName},readonly:e=>{e.target.disabled=e.detail.readonly},required:e=>{this._setRequired(e.target,e.detail.required)},bgColor:t=>{e("bgColor","backgroundColor",t)},fillColor:t=>{e("fillColor","backgroundColor",t)},fgColor:t=>{e("fgColor","color",t)},textColor:t=>{e("textColor","color",t)},borderColor:t=>{e("borderColor","borderColor",t)},strokeColor:t=>{e("strokeColor","borderColor",t)},rotation:e=>{e=e.detail.rotation,this.setRotation(e),this.annotationStorage.setValue(this.data.id,{rotation:e})}})}_dispatchEventFromSandbox(e,t){var r=this._commonActions;for(const o of Object.keys(t.detail))(e[o]||r[o])?.(t)}_setDefaultPropertiesFromJS(e){if(this.enableScripting){var t=this.annotationStorage.getRawValue(this.data.id);if(t){var r,o,a=this._commonActions;for([r,o]of Object.entries(t)){var i=a[r];i&&(i({detail:{[r]:o},target:e}),delete t[r])}}}}_createQuadrilaterals(){if(this.container){var e=this.data.quadPoints;if(e){var[t,r,o,a]=this.data.rect;if(1===e.length){var[,{x:i,y:n},{x:s,y:l}]=e[0];if(o===i&&a===n&&t===s&&r===l)return}let _;i=this.container.style,this.#Jt&&(({borderColor:n,borderWidth:s}=i),i.borderWidth=0,_=["url('data:image/svg+xml;utf8,",'<svg xmlns="http://www.w3.org/2000/svg"',' preserveAspectRatio="none" viewBox="0 0 1 1">',`<g fill="transparent" stroke="${n}" stroke-width="${s}">`],this.container.classList.add("hasBorder"));var d,m,c,g,l,u=o-t,h=a-r,p=this.svgFactory,n=((l=p.createElement("svg")).classList.add("quadrilateralsContainer"),l.setAttribute("width",0),l.setAttribute("height",0),p.createElement("defs")),x=(l.append(n),p.createElement("clipPath")),s="clippath_"+this.data.id;for([,{x:d,y:m},{x:c,y:g}]of(x.setAttribute("id",s),x.setAttribute("clipPathUnits","objectBoundingBox"),n.append(x),e)){var v=p.createElement("rect"),S=(c-t)/u,f=(a-m)/h,b=(d-c)/u,A=(m-g)/h;v.setAttribute("x",S),v.setAttribute("y",f),v.setAttribute("width",b),v.setAttribute("height",A),x.append(v),_?.push(`<rect vector-effect="non-scaling-stroke" x="${S}" y="${f}" width="${b}" height="${A}"/>`)}this.#Jt&&(_.push("</g></svg>')"),i.backgroundImage=_.join("")),this.container.append(l),this.container.style.clipPath=`url(#${s})`}}}_createPopup(){var{container:e,data:t}=this,e=(e.setAttribute("aria-haspopup","dialog"),new _({data:{color:t.color,titleObj:t.titleObj,modificationDate:t.modificationDate,contentsObj:t.contentsObj,richText:t.richText,parentRect:t.rect,borderStyle:0,id:"popup_"+t.id,rotation:t.rotation},parent:this.parent,elements:[this]}));this.parent.div.append(e.render())}render(){(0,o.unreachable)("Abstract method `AnnotationElement.render` called")}_getElementsByName(e,t=null){var r=[];if(this._fieldObjects){var a=this._fieldObjects[e];if(a)for(var{page:i,id:n,exportValues:s}of a)-1!==i&&n!==t&&(i="string"==typeof s?s:null,(s=document.querySelector(`[data-element-id="${n}"]`))&&!d.has(s)?(0,o.warn)("_getElementsByName - element not allowed: "+n):r.push({id:n,exportValue:i,domElement:s}))}else for(const o of document.getElementsByName(e)){var l=o.exportValue,m=o.getAttribute("data-element-id");m!==t&&d.has(o)&&r.push({id:m,exportValue:l,domElement:o})}return r}show(){this.container&&(this.container.hidden=!1),this.popup?.maybeShow()}hide(){this.container&&(this.container.hidden=!0),this.popup?.forceHide()}getElementsToTriggerPopup(){return this.container}addHighlightArea(){var e=this.getElementsToTriggerPopup();if(Array.isArray(e))for(const t of e)t.classList.add("highlightArea");else e.classList.add("highlightArea")}_editOnDoubleClick(){const{annotationEditorType:e,data:{id:t}}=this;this.container.addEventListener("dblclick",(()=>{this.linkService.eventBus?.dispatch("switchannotationeditormode",{source:this,mode:e,editId:t})}))}}class u extends g{constructor(e,t=null){super(e,{isRenderable:!0,ignoreBorder:!!t?.ignoreBorder,createQuadrilaterals:!0}),this.isTooltipOnly=e.data.isTooltipOnly}render(){var{data:e,linkService:t}=this,r=document.createElement("a");r.setAttribute("data-element-id",e.id);let o=!1;return e.url?(t.addLinkAttributes(r,e.url,e.newWindow),o=!0):e.action?(this._bindNamedAction(r,e.action),o=!0):e.attachment?(this._bindAttachment(r,e.attachment),o=!0):e.setOCGState?(this.#qt(r,e.setOCGState),o=!0):e.dest?(this._bindLink(r,e.dest),o=!0):(e.actions&&(e.actions.Action||e.actions["Mouse Up"]||e.actions["Mouse Down"])&&this.enableScripting&&this.hasJSActions&&(this._bindJSAction(r,e),o=!0),e.resetForm?(this._bindResetFormAction(r,e.resetForm),o=!0):this.isTooltipOnly&&!o&&(this._bindLink(r,""),o=!0)),this.container.classList.add("linkAnnotation"),o&&this.container.append(r),this.container}#er(){this.container.setAttribute("data-internal-link","")}_bindLink(e,t){e.href=this.linkService.getDestinationHash(t),e.onclick=()=>(t&&this.linkService.goToDestination(t),!1),!t&&""!==t||this.#er()}_bindNamedAction(e,t){e.href=this.linkService.getAnchorUrl(""),e.onclick=()=>(this.linkService.executeNamedAction(t),!1),this.#er()}_bindAttachment(e,t){e.href=this.linkService.getAnchorUrl(""),e.onclick=()=>(this.downloadManager?.openOrDownloadData(this.container,t.content,t.filename),!1),this.#er()}#qt(e,t){e.href=this.linkService.getAnchorUrl(""),e.onclick=()=>(this.linkService.executeSetOCGState(t),!1),this.#er()}_bindJSAction(e,t){e.href=this.linkService.getAnchorUrl("");var r=new Map([["Action","onclick"],["Mouse Up","onmouseup"],["Mouse Down","onmousedown"]]);for(const a of Object.keys(t.actions)){var o=r.get(a);o&&(e[o]=()=>(this.linkService.eventBus?.dispatch("dispatcheventinsandbox",{source:this,detail:{id:t.id,name:a}}),!1))}e.onclick||(e.onclick=()=>!1),this.#er()}_bindResetFormAction(e,t){const r=e.onclick;r||(e.href=this.linkService.getAnchorUrl("")),this.#er(),this._fieldObjects?e.onclick=()=>{r?.();var{fields:e,refs:a,include:i}=t,n=[];if(0!==e.length||0!==a.length){var s,l=new Set(a);for(const t of e)for({id:s}of this._fieldObjects[t]||[])l.add(s);for(const e of Object.values(this._fieldObjects))for(const t of e)l.has(t.id)===i&&n.push(t)}else for(const e of Object.values(this._fieldObjects))n.push(...e);var m=this.annotationStorage,c=[];for(const e of n){var g=e.id;switch(c.push(g),e.type){case"text":var u=e.defaultValue||"";m.setValue(g,{value:u});break;case"checkbox":case"radiobutton":u=e.defaultValue===e.exportValues,m.setValue(g,{value:u});break;case"combobox":case"listbox":var h=e.defaultValue||"";m.setValue(g,{value:h});break;default:continue}var p=document.querySelector(`[data-element-id="${g}"]`);p&&(d.has(p)?p.dispatchEvent(new Event("resetform")):(0,o.warn)("_bindResetFormAction - element not allowed: "+g))}return this.enableScripting&&this.linkService.eventBus?.dispatch("dispatcheventinsandbox",{source:this,detail:{id:"app",ids:c,name:"ResetForm"}}),!1}:((0,o.warn)('_bindResetFormAction - "resetForm" action not supported, ensure that the `fieldObjects` parameter is provided.'),r||(e.onclick=()=>!1))}}class h extends g{constructor(e){super(e,{isRenderable:!0})}render(){this.container.classList.add("textAnnotation");var e=document.createElement("img");return e.src=this.imageResourcesPath+"annotation-"+this.data.name.toLowerCase()+".svg",e.alt="[{{type}} Annotation]",e.dataset.l10nId="text_annotation_type",e.dataset.l10nArgs=JSON.stringify({type:this.data.name}),!this.data.popupRef&&this.hasPopupData&&this._createPopup(),this.container.append(e),this.container}}class p extends g{render(){return this.data.alternativeText&&(this.container.title=this.data.alternativeText),this.container}showElementAndHideCanvas(e){this.data.hasOwnCanvas&&("CANVAS"===e.previousSibling?.nodeName&&(e.previousSibling.hidden=!0),e.hidden=!1)}_getKeyModifier(e){var{isWin:t,isMac:r}=o.FeatureTest.platform;return t&&e.ctrlKey||r&&e.metaKey}_setEventListener(e,t,r,o,a){r.includes("mouse")?e.addEventListener(r,(e=>{this.linkService.eventBus?.dispatch("dispatcheventinsandbox",{source:this,detail:{id:this.data.id,name:o,value:a(e),shift:e.shiftKey,modifier:this._getKeyModifier(e)}})})):e.addEventListener(r,(e=>{if("blur"===r){if(!t.focused||!e.relatedTarget)return;t.focused=!1}else if("focus"===r){if(t.focused)return;t.focused=!0}a&&this.linkService.eventBus?.dispatch("dispatcheventinsandbox",{source:this,detail:{id:this.data.id,name:o,value:a(e)}})}))}_setEventListeners(e,t,r,o){for(var[a,i]of r)"Action"!==i&&!this.data.actions?.[i]||("Focus"!==i&&"Blur"!==i||(t||={focused:!1}),this._setEventListener(e,t,a,i,o),"Focus"!==i||this.data.actions?.Blur?"Blur"!==i||this.data.actions?.Focus||this._setEventListener(e,t,"focus","Focus",null):this._setEventListener(e,t,"blur","Blur",null))}_setBackgroundColor(e){var t=this.data.backgroundColor||null;e.style.backgroundColor=null===t?"transparent":o.Util.makeHexColor(t[0],t[1],t[2])}_setTextStyle(e){var t=this.data.defaultAppearanceData.fontColor,r=this.data.defaultAppearanceData.fontSize||9;e=e.style;let a;var i,n,s=e=>Math.round(10*e)/10;a=this.data.multiLine?(n=Math.abs(this.data.rect[3]-this.data.rect[1]-2),i=Math.round(n/(o.LINE_FACTOR*r))||1,Math.min(r,s(n/i/o.LINE_FACTOR))):(n=Math.abs(this.data.rect[3]-this.data.rect[1]-2),Math.min(r,s(n/o.LINE_FACTOR))),e.fontSize=`calc(${a}px * var(--scale-factor))`,e.color=o.Util.makeHexColor(t[0],t[1],t[2]),null!==this.data.textAlignment&&(e.textAlign=["left","center","right"][this.data.textAlignment])}_setRequired(e,t){t?e.setAttribute("required",!0):e.removeAttribute("required"),e.setAttribute("aria-required",t)}}class x extends p{constructor(e){super(e,{isRenderable:e.renderForms||!e.data.hasAppearance&&!!e.data.fieldValue})}setPropertyOnSiblings(e,t,r,o){var a=this.annotationStorage;for(const i of this._getElementsByName(e.name,e.id))i.domElement&&(i.domElement[t]=r),a.setValue(i.id,{[o]:r})}render(){const e=this.annotationStorage,t=this.data.id;this.container.classList.add("textWidgetAnnotation");let r=null;if(this.renderForms){var o=e.getValue(t,{value:this.data.fieldValue});let i=o.value||"";var a=e.getValue(t,{charLimit:this.data.maxLen}).charLimit;a&&i.length>a&&(i=i.slice(0,a));let n=o.formattedValue||this.data.textContent?.join("\n")||null;n&&this.data.comb&&(n=n.replaceAll(/\s+/g,""));const s={userValue:i,formattedValue:n,lastCommittedValue:null,commitKey:1,focused:!1};this.data.multiLine?((r=document.createElement("textarea")).textContent=n??i,this.data.doNotScroll&&(r.style.overflowY="hidden")):((r=document.createElement("input")).type="text",r.setAttribute("value",n??i),this.data.doNotScroll&&(r.style.overflowX="hidden")),this.data.hasOwnCanvas&&(r.hidden=!0),d.add(r),r.setAttribute("data-element-id",t),r.disabled=this.data.readOnly,r.name=this.data.fieldName,r.tabIndex=1e3,this._setRequired(r,this.data.required),a&&(r.maxLength=a),r.addEventListener("input",(o=>{e.setValue(t,{value:o.target.value}),this.setPropertyOnSiblings(r,"value",o.target.value,"value"),s.formattedValue=null})),r.addEventListener("resetform",(e=>{var t=this.data.defaultFieldValue??"";r.value=s.userValue=t,s.formattedValue=null}));let l=e=>{var t=s.formattedValue;null!=t&&(e.target.value=t),e.target.scrollLeft=0};if(this.enableScripting&&this.hasJSActions){r.addEventListener("focus",(e=>{s.focused||(e=e.target,s.userValue&&(e.value=s.userValue),s.lastCommittedValue=e.value,s.commitKey=1,s.focused=!0)})),r.addEventListener("updatefromsandbox",(r=>{this.showElementAndHideCanvas(r.target),this._dispatchEventFromSandbox({value(r){s.userValue=r.detail.value??"",e.setValue(t,{value:s.userValue.toString()}),r.target.value=s.userValue},formattedValue(r){var o=r.detail.formattedValue;null!=(s.formattedValue=o)&&r.target!==document.activeElement&&(r.target.value=o),e.setValue(t,{formattedValue:o})},selRange(e){e.target.setSelectionRange(...e.detail.selRange)},charLimit:r=>{var o=r.detail.charLimit;r=r.target;if(0===o)r.removeAttribute("maxLength");else{r.setAttribute("maxLength",o);let a=s.userValue;!a||a.length<=o||(a=a.slice(0,o),r.value=s.userValue=a,e.setValue(t,{value:a}),this.linkService.eventBus?.dispatch("dispatcheventinsandbox",{source:this,detail:{id:t,name:"Keystroke",value:a,willCommit:!0,commitKey:1,selStart:r.selectionStart,selEnd:r.selectionEnd}}))}}},r)})),r.addEventListener("keydown",(e=>{let r=-(s.commitKey=1);var o;"Escape"===e.key?r=0:"Enter"!==e.key||this.data.multiLine?"Tab"===e.key&&(s.commitKey=3):r=2,-1!==r&&(o=e.target.value,s.lastCommittedValue!==o)&&(s.lastCommittedValue=o,s.userValue=o,this.linkService.eventBus?.dispatch("dispatcheventinsandbox",{source:this,detail:{id:t,name:"Keystroke",value:o,willCommit:!0,commitKey:r,selStart:e.target.selectionStart,selEnd:e.target.selectionEnd}}))}));const o=l;l=null,r.addEventListener("blur",(e=>{var r;s.focused&&e.relatedTarget&&(s.focused=!1,r=e.target.value,s.userValue=r,s.lastCommittedValue!==r&&this.linkService.eventBus?.dispatch("dispatcheventinsandbox",{source:this,detail:{id:t,name:"Keystroke",value:r,willCommit:!0,commitKey:s.commitKey,selStart:e.target.selectionStart,selEnd:e.target.selectionEnd}}),o(e))})),this.data.actions?.Keystroke&&r.addEventListener("beforeinput",(e=>{s.lastCommittedValue=null;var{data:r,target:o}=e,{value:a,selectionStart:i,selectionEnd:n}=o;let l=i,d=n;switch(e.inputType){case"deleteWordBackward":var m=a.substring(0,i).match(/\w*[^\w]*$/);m&&(l-=m[0].length);break;case"deleteWordForward":(m=a.substring(i).match(/^[^\w]*\w*/))&&(d+=m[0].length);break;case"deleteContentBackward":i===n&&--l;break;case"deleteContentForward":i===n&&(d+=1)}e.preventDefault(),this.linkService.eventBus?.dispatch("dispatcheventinsandbox",{source:this,detail:{id:t,name:"Keystroke",value:a,change:r||"",willCommit:!1,selStart:l,selEnd:d}})})),this._setEventListeners(r,s,[["focus","Focus"],["blur","Blur"],["mousedown","Mouse Down"],["mouseenter","Mouse Enter"],["mouseleave","Mouse Exit"],["mouseup","Mouse Up"]],(e=>e.target.value))}l&&r.addEventListener("blur",l),this.data.comb&&(o=(this.data.rect[2]-this.data.rect[0])/a,r.classList.add("comb"),r.style.letterSpacing=`calc(${o}px * var(--scale-factor) - 1ch)`)}else(r=document.createElement("div")).textContent=this.data.fieldValue,r.style.verticalAlign="middle",r.style.display="table-cell";return this._setTextStyle(r),this._setBackgroundColor(r),this._setDefaultPropertiesFromJS(r),this.container.append(r),this.container}}class v extends p{constructor(e){super(e,{isRenderable:!!e.data.hasOwnCanvas})}}class S extends p{constructor(e){super(e,{isRenderable:e.renderForms})}render(){const e=this.annotationStorage,t=this.data,r=t.id;let o=e.getValue(r,{value:t.exportValue===t.fieldValue}).value;"string"==typeof o&&(o="Off"!==o,e.setValue(r,{value:o})),this.container.classList.add("buttonWidgetAnnotation","checkBox");var a=document.createElement("input");return d.add(a),a.setAttribute("data-element-id",r),a.disabled=t.readOnly,this._setRequired(a,this.data.required),a.type="checkbox",a.name=t.fieldName,o&&a.setAttribute("checked",!0),a.setAttribute("exportValue",t.exportValue),a.tabIndex=1e3,a.addEventListener("change",(o=>{var{name:o,checked:a}=o.target;for(const n of this._getElementsByName(o,r)){var i=a&&n.exportValue===t.exportValue;n.domElement&&(n.domElement.checked=i),e.setValue(n.id,{value:i})}e.setValue(r,{value:a})})),a.addEventListener("resetform",(e=>{var r=t.defaultFieldValue||"Off";e.target.checked=r===t.exportValue})),this.enableScripting&&this.hasJSActions&&(a.addEventListener("updatefromsandbox",(t=>{this._dispatchEventFromSandbox({value(t){t.target.checked="Off"!==t.detail.value,e.setValue(r,{value:t.target.checked})}},t)})),this._setEventListeners(a,null,[["change","Validate"],["change","Action"],["focus","Focus"],["blur","Blur"],["mousedown","Mouse Down"],["mouseenter","Mouse Enter"],["mouseleave","Mouse Exit"],["mouseup","Mouse Up"]],(e=>e.target.checked))),this._setBackgroundColor(a),this._setDefaultPropertiesFromJS(a),this.container.append(a),this.container}}class f extends p{constructor(e){super(e,{isRenderable:e.renderForms})}render(){this.container.classList.add("buttonWidgetAnnotation","radioButton");const e=this.annotationStorage,t=this.data,r=t.id;let o=e.getValue(r,{value:t.fieldValue===t.buttonValue}).value;"string"==typeof o&&(o=o!==t.buttonValue,e.setValue(r,{value:o}));var a=document.createElement("input");if(d.add(a),a.setAttribute("data-element-id",r),a.disabled=t.readOnly,this._setRequired(a,this.data.required),a.type="radio",a.name=t.fieldName,o&&a.setAttribute("checked",!0),a.tabIndex=1e3,a.addEventListener("change",(t=>{var{name:t,checked:o}=t.target;for(const o of this._getElementsByName(t,r))e.setValue(o.id,{value:!1});e.setValue(r,{value:o})})),a.addEventListener("resetform",(e=>{var r=t.defaultFieldValue;e.target.checked=null!=r&&r===t.buttonValue})),this.enableScripting&&this.hasJSActions){const o=t.buttonValue;a.addEventListener("updatefromsandbox",(t=>{this._dispatchEventFromSandbox({value:t=>{var a=o===t.detail.value;for(const o of this._getElementsByName(t.target.name)){var i=a&&o.id===r;o.domElement&&(o.domElement.checked=i),e.setValue(o.id,{value:i})}}},t)})),this._setEventListeners(a,null,[["change","Validate"],["change","Action"],["focus","Focus"],["blur","Blur"],["mousedown","Mouse Down"],["mouseenter","Mouse Enter"],["mouseleave","Mouse Exit"],["mouseup","Mouse Up"]],(e=>e.target.checked))}return this._setBackgroundColor(a),this._setDefaultPropertiesFromJS(a),this.container.append(a),this.container}}class b extends u{constructor(e){super(e,{ignoreBorder:e.data.hasAppearance})}render(){var e=super.render(),t=(e.classList.add("buttonWidgetAnnotation","pushButton"),this.data.alternativeText&&(e.title=this.data.alternativeText),e.lastChild);return this.enableScripting&&this.hasJSActions&&t&&(this._setDefaultPropertiesFromJS(t),t.addEventListener("updatefromsandbox",(e=>{this._dispatchEventFromSandbox({},e)}))),e}}class A extends p{constructor(e){super(e,{isRenderable:e.renderForms})}render(){this.container.classList.add("choiceWidgetAnnotation");const e=this.annotationStorage,t=this.data.id;var r=e.getValue(t,{value:this.data.fieldValue});const o=document.createElement("select");d.add(o),o.setAttribute("data-element-id",t),o.disabled=this.data.readOnly,this._setRequired(o,this.data.required),o.name=this.data.fieldName,o.tabIndex=1e3;let a=this.data.combo&&0<this.data.options.length;this.data.combo||(o.size=this.data.options.length,this.data.multiSelect&&(o.multiple=!0)),o.addEventListener("resetform",(e=>{var t=this.data.defaultFieldValue;for(const e of o.options)e.selected=e.value===t}));for(const e of this.data.options){var i=document.createElement("option");i.textContent=e.displayValue,i.value=e.exportValue,r.value.includes(e.exportValue)&&(i.setAttribute("selected",!0),a=!1),o.append(i)}let n=null;if(a){const e=document.createElement("option");e.value=" ",e.setAttribute("hidden",!0),e.setAttribute("selected",!0),o.prepend(e),n=()=>{e.remove(),o.removeEventListener("input",n),n=null},o.addEventListener("input",n)}const s=e=>{const t=e?"value":"textContent";var{options:e,multiple:r}=o;return r?Array.prototype.filter.call(e,(e=>e.selected)).map((e=>e[t])):-1===e.selectedIndex?null:e[e.selectedIndex][t]};let l=s(!1);const m=e=>(e=e.target.options,Array.prototype.map.call(e,(e=>({displayValue:e.textContent,exportValue:e.value}))));return this.enableScripting&&this.hasJSActions?(o.addEventListener("updatefromsandbox",(r=>{this._dispatchEventFromSandbox({value(r){n?.();r=r.detail.value;var a=new Set(Array.isArray(r)?r:[r]);for(const e of o.options)e.selected=a.has(e.value);e.setValue(t,{value:s(!0)}),l=s(!1)},multipleSelection(e){o.multiple=!0},remove(r){var a=o.options,i=r.detail.remove;a[i].selected=!1,o.remove(i),0<a.length&&-1===Array.prototype.findIndex.call(a,(e=>e.selected))&&(a[0].selected=!0),e.setValue(t,{value:s(!0),items:m(r)}),l=s(!1)},clear(r){for(;0!==o.length;)o.remove(0);e.setValue(t,{value:null,items:[]}),l=s(!1)},insert(r){var{index:a,displayValue:i,exportValue:n}=r.detail.insert,a=o.children[a],d=document.createElement("option");d.textContent=i,d.value=n,a?a.before(d):o.append(d),e.setValue(t,{value:s(!0),items:m(r)}),l=s(!1)},items(r){for(var a=r.detail.items;0!==o.length;)o.remove(0);for(const e of a){var{displayValue:i,exportValue:n}=e,d=document.createElement("option");d.textContent=i,d.value=n,o.append(d)}0<o.options.length&&(o.options[0].selected=!0),e.setValue(t,{value:s(!0),items:m(r)}),l=s(!1)},indices(r){var o=new Set(r.detail.indices);for(const e of r.target.options)e.selected=o.has(e.index);e.setValue(t,{value:s(!0)}),l=s(!1)},editable(e){e.target.disabled=!e.detail.editable}},r)})),o.addEventListener("input",(r=>{var o=s(!0);e.setValue(t,{value:o}),r.preventDefault(),this.linkService.eventBus?.dispatch("dispatcheventinsandbox",{source:this,detail:{id:t,name:"Keystroke",value:l,changeEx:o,willCommit:!1,commitKey:1,keyDown:!1}})})),this._setEventListeners(o,null,[["focus","Focus"],["blur","Blur"],["mousedown","Mouse Down"],["mouseenter","Mouse Enter"],["mouseleave","Mouse Exit"],["mouseup","Mouse Up"],["input","Action"],["input","Validate"]],(e=>e.target.value))):o.addEventListener("input",(function(r){e.setValue(t,{value:s(!0)})})),this.data.combo&&this._setTextStyle(o),this._setBackgroundColor(o),this._setDefaultPropertiesFromJS(o),this.container.append(o),this.container}}class _ extends g{constructor(e){var{data:t,elements:r}=e;super(e,{isRenderable:g._hasPopupData(t)}),this.elements=r}render(){this.container.classList.add("popupAnnotation");var e=new y({container:this.container,color:this.data.color,titleObj:this.data.titleObj,modificationDate:this.data.modificationDate,contentsObj:this.data.contentsObj,richText:this.data.richText,rect:this.data.rect,parentRect:this.data.parentRect||null,parent:this.parent,elements:this.elements,open:this.data.open}),t=[];for(const r of this.elements)r.popup=e,t.push(r.data.id),r.addHighlightArea();return this.container.setAttribute("aria-controls",t.map((e=>""+o.AnnotationPrefix+e)).join(",")),this.container}}class y{#tr=null;#rr=this.#or.bind(this);#ar=this.#ir.bind(this);#nr=this.#sr.bind(this);#lr=this.#dr.bind(this);#Dt=null;#Oe=null;#mr=null;#cr=null;#gr=null;#ur=null;#hr=!1;#pr=null;#xr=null;#vr=null;#Sr=null;#fr=!1;constructor({container:e,color:t,elements:r,titleObj:o,modificationDate:i,contentsObj:n,richText:s,parent:l,rect:d,parentRect:m,open:c}){this.#Oe=e,this.#Sr=o,this.#mr=n,this.#vr=s,this.#gr=l,this.#Dt=t,this.#xr=d,this.#ur=m,this.#cr=r,(e=a.PDFDateString.toDateObject(i))&&(this.#tr=l.l10n.get("annotation_date_string",{date:e.toLocaleDateString(),time:e.toLocaleTimeString()})),this.trigger=r.flatMap((e=>e.getElementsToTriggerPopup()));for(const e of this.trigger)e.addEventListener("click",this.#lr),e.addEventListener("mouseenter",this.#nr),e.addEventListener("mouseleave",this.#ar),e.classList.add("popupTriggerArea");for(const e of r)e.container?.addEventListener("keydown",this.#rr);this.#Oe.hidden=!0,c&&this.#dr()}render(){if(!this.#pr){var{page:{view:e},viewport:{rawDims:{pageWidth:t,pageHeight:r,pageX:a,pageY:i}}}=this.#gr,n=this.#pr=document.createElement("div");if(n.className="popup",this.#Dt){var s=n.style.outlineColor=o.Util.makeHexColor(...this.#Dt);CSS.supports("background-color","color-mix(in srgb, red 30%, white)")?n.style.backgroundColor=`color-mix(in srgb, ${s} 30%, white)`:n.style.backgroundColor=o.Util.makeHexColor(...this.#Dt.map((e=>Math.floor(.7*(255-e)+e))))}var d=((s=document.createElement("span")).className="header",document.createElement("h1"));if(s.append(d),({dir:d.dir,str:d.textContent}=this.#Sr),n.append(s),this.#tr){const e=document.createElement("span");e.classList.add("popupDate"),this.#tr.then((t=>{e.textContent=t})),s.append(e)}d=this.#mr,s=this.#vr;!s?.str||d?.str&&d.str!==s.str?(d=this._formatContents(d),n.append(d)):(l.XfaLayer.render({xfaHtml:s.html,intent:"richText",div:n}),n.lastChild.classList.add("richText","popupContent"));let m=!!this.#ur,c=m?this.#ur:this.#xr;for(const e of this.#cr)if(!c||null!==o.Util.intersect(e.data.rect,c)){c=e.data.rect,m=!0;break}d=o.Util.normalizeRect([c[0],e[3]-c[1]+e[1],c[2],e[3]-c[3]+e[1]]),s=m?c[2]-c[0]+5:0,e=d[0]+s,s=d[1],(d=this.#Oe.style).left=100*(e-a)/t+"%",d.top=100*(s-i)/r+"%",this.#Oe.append(n)}}_formatContents({str:e,dir:t}){var r=document.createElement("p"),o=(r.classList.add("popupContent"),r.dir=t,e.split(/(?:\r\n?|\n)/));for(let e=0,t=o.length;e<t;++e){var a=o[e];r.append(document.createTextNode(a)),e<t-1&&r.append(document.createElement("br"))}return r}#or(e){e.altKey||e.shiftKey||e.ctrlKey||e.metaKey||("Enter"===e.key||"Escape"===e.key&&this.#hr)&&this.#dr()}#dr(){this.#hr=!this.#hr,this.#hr?(this.#sr(),this.#Oe.addEventListener("click",this.#lr),this.#Oe.addEventListener("keydown",this.#rr)):(this.#ir(),this.#Oe.removeEventListener("click",this.#lr),this.#Oe.removeEventListener("keydown",this.#rr))}#sr(){this.#pr||this.render(),this.isVisible?this.#hr&&this.#Oe.classList.add("focused"):(this.#Oe.hidden=!1,this.#Oe.style.zIndex=parseInt(this.#Oe.style.zIndex)+1e3)}#ir(){this.#Oe.classList.remove("focused"),!this.#hr&&this.isVisible&&(this.#Oe.hidden=!0,this.#Oe.style.zIndex=parseInt(this.#Oe.style.zIndex)-1e3)}forceHide(){this.#fr=this.isVisible,this.#fr&&(this.#Oe.hidden=!0)}maybeShow(){this.#fr&&(this.#fr=!1,this.#Oe.hidden=!1)}get isVisible(){return!1===this.#Oe.hidden}}class T extends g{constructor(e){super(e,{isRenderable:!0,ignoreBorder:!0}),this.textContent=e.data.textContent,this.textPosition=e.data.textPosition,this.annotationEditorType=o.AnnotationEditorType.FREETEXT}render(){if(this.container.classList.add("freeTextAnnotation"),this.textContent){var e=document.createElement("div");e.classList.add("annotationTextContent"),e.setAttribute("role","comment");for(const r of this.textContent){var t=document.createElement("span");t.textContent=r,e.append(t)}this.container.append(e)}return!this.data.popupRef&&this.hasPopupData&&this._createPopup(),this._editOnDoubleClick(),this.container}}t.FreeTextAnnotationElement=T;class P extends g{#br=null;constructor(e){super(e,{isRenderable:!0,ignoreBorder:!0})}render(){this.container.classList.add("lineAnnotation");var e,t=this.data,{width:r,height:e}=m(t.rect),r=this.svgFactory.create(r,e,!0);return(e=this.#br=this.svgFactory.createElement("svg:line")).setAttribute("x1",t.rect[2]-t.lineCoordinates[0]),e.setAttribute("y1",t.rect[3]-t.lineCoordinates[1]),e.setAttribute("x2",t.rect[2]-t.lineCoordinates[2]),e.setAttribute("y2",t.rect[3]-t.lineCoordinates[3]),e.setAttribute("stroke-width",t.borderStyle.width||1),e.setAttribute("stroke","transparent"),e.setAttribute("fill","transparent"),r.append(e),this.container.append(r),!t.popupRef&&this.hasPopupData&&this._createPopup(),this.container}getElementsToTriggerPopup(){return this.#br}addHighlightArea(){this.container.classList.add("highlightArea")}}class $ extends g{#Ar=null;constructor(e){super(e,{isRenderable:!0,ignoreBorder:!0})}render(){this.container.classList.add("squareAnnotation");var e=this.data,{width:t,height:r}=m(e.rect),o=this.svgFactory.create(t,r,!0),a=e.borderStyle.width,i=this.#Ar=this.svgFactory.createElement("svg:rect");return i.setAttribute("x",a/2),i.setAttribute("y",a/2),i.setAttribute("width",t-a),i.setAttribute("height",r-a),i.setAttribute("stroke-width",a||1),i.setAttribute("stroke","transparent"),i.setAttribute("fill","transparent"),o.append(i),this.container.append(o),!e.popupRef&&this.hasPopupData&&this._createPopup(),this.container}getElementsToTriggerPopup(){return this.#Ar}addHighlightArea(){this.container.classList.add("highlightArea")}}class M extends g{#_r=null;constructor(e){super(e,{isRenderable:!0,ignoreBorder:!0})}render(){this.container.classList.add("circleAnnotation");var e=this.data,{width:t,height:r}=m(e.rect),o=this.svgFactory.create(t,r,!0),a=e.borderStyle.width,i=this.#_r=this.svgFactory.createElement("svg:ellipse");return i.setAttribute("cx",t/2),i.setAttribute("cy",r/2),i.setAttribute("rx",t/2-a/2),i.setAttribute("ry",r/2-a/2),i.setAttribute("stroke-width",a||1),i.setAttribute("stroke","transparent"),i.setAttribute("fill","transparent"),o.append(i),this.container.append(o),!e.popupRef&&this.hasPopupData&&this._createPopup(),this.container}getElementsToTriggerPopup(){return this.#_r}addHighlightArea(){this.container.classList.add("highlightArea")}}class w extends g{#yr=null;constructor(e){super(e,{isRenderable:!0,ignoreBorder:!0}),this.containerClassName="polylineAnnotation",this.svgElementName="svg:polyline"}render(){this.container.classList.add(this.containerClassName);var e=this.data,{width:t,height:r}=m(e.rect),t=this.svgFactory.create(t,r,!0);let o=[];for(const t of e.vertices){var a=t.x-e.rect[0],i=e.rect[3]-t.y;o.push(a+","+i)}return o=o.join(" "),(r=this.#yr=this.svgFactory.createElement(this.svgElementName)).setAttribute("points",o),r.setAttribute("stroke-width",e.borderStyle.width||1),r.setAttribute("stroke","transparent"),r.setAttribute("fill","transparent"),t.append(r),this.container.append(t),!e.popupRef&&this.hasPopupData&&this._createPopup(),this.container}getElementsToTriggerPopup(){return this.#yr}addHighlightArea(){this.container.classList.add("highlightArea")}}class C extends w{constructor(e){super(e),this.containerClassName="polygonAnnotation",this.svgElementName="svg:polygon"}}class E extends g{constructor(e){super(e,{isRenderable:!0,ignoreBorder:!0})}render(){return this.container.classList.add("caretAnnotation"),!this.data.popupRef&&this.hasPopupData&&this._createPopup(),this.container}}class L extends g{#Tr=[];constructor(e){super(e,{isRenderable:!0,ignoreBorder:!0}),this.containerClassName="inkAnnotation",this.svgElementName="svg:polyline",this.annotationEditorType=o.AnnotationEditorType.INK}render(){this.container.classList.add(this.containerClassName);var e=this.data,{width:t,height:r}=m(e.rect),o=this.svgFactory.create(t,r,!0);for(const t of e.inkLists){let r=[];for(const o of t){var a=o.x-e.rect[0],i=e.rect[3]-o.y;r.push(a+","+i)}r=r.join(" ");var n=this.svgFactory.createElement(this.svgElementName);this.#Tr.push(n),n.setAttribute("points",r),n.setAttribute("stroke-width",e.borderStyle.width||1),n.setAttribute("stroke","transparent"),n.setAttribute("fill","transparent"),!e.popupRef&&this.hasPopupData&&this._createPopup(),o.append(n)}return this.container.append(o),this.container}getElementsToTriggerPopup(){return this.#Tr}addHighlightArea(){this.container.classList.add("highlightArea")}}t.InkAnnotationElement=L;class O extends g{constructor(e){super(e,{isRenderable:!0,ignoreBorder:!0,createQuadrilaterals:!0})}render(){return!this.data.popupRef&&this.hasPopupData&&this._createPopup(),this.container.classList.add("highlightAnnotation"),this.container}}class I extends g{constructor(e){super(e,{isRenderable:!0,ignoreBorder:!0,createQuadrilaterals:!0})}render(){return!this.data.popupRef&&this.hasPopupData&&this._createPopup(),this.container.classList.add("underlineAnnotation"),this.container}}class G extends g{constructor(e){super(e,{isRenderable:!0,ignoreBorder:!0,createQuadrilaterals:!0})}render(){return!this.data.popupRef&&this.hasPopupData&&this._createPopup(),this.container.classList.add("squigglyAnnotation"),this.container}}class N extends g{constructor(e){super(e,{isRenderable:!0,ignoreBorder:!0,createQuadrilaterals:!0})}render(){return!this.data.popupRef&&this.hasPopupData&&this._createPopup(),this.container.classList.add("strikeoutAnnotation"),this.container}}class B extends g{constructor(e){super(e,{isRenderable:!0,ignoreBorder:!0})}render(){return this.container.classList.add("stampAnnotation"),!this.data.popupRef&&this.hasPopupData&&this._createPopup(),this.container}}t.StampAnnotationElement=B;class k extends g{#Pr=null;constructor(e){super(e,{isRenderable:!0});var{filename:e,content:t}=this.data.file;this.filename=(0,a.getFilenameFromUrl)(e,!0),this.content=t,this.linkService.eventBus?.dispatch("fileattachmentannotation",{source:this,filename:e,content:t})}render(){this.container.classList.add("fileAttachmentAnnotation");var{container:e,data:t}=this;let r;t.hasAppearance||0===t.fillAlpha?r=document.createElement("div"):((r=document.createElement("img")).src=`${this.imageResourcesPath}annotation-${/paperclip/i.test(t.name)?"paperclip":"pushpin"}.svg`,t.fillAlpha&&t.fillAlpha<1&&(r.style=`filter: opacity(${Math.round(100*t.fillAlpha)}%);`)),r.addEventListener("dblclick",this.#$r.bind(this)),this.#Pr=r;const a=o.FeatureTest.platform.isMac;return e.addEventListener("keydown",(e=>{"Enter"===e.key&&(a?e.metaKey:e.ctrlKey)&&this.#$r()})),!t.popupRef&&this.hasPopupData?this._createPopup():r.classList.add("popupTriggerArea"),e.append(r),e}getElementsToTriggerPopup(){return this.#Pr}addHighlightArea(){this.container.classList.add("highlightArea")}#$r(){this.downloadManager?.openOrDownloadData(this.container,this.content,this.filename)}}t.AnnotationLayer=class{#_t=null;#Mr=null;#wr=new Map;constructor({div:e,accessibilityManager:t,annotationCanvasMap:r,l10n:o,page:a,viewport:i}){this.div=e,this.#_t=t,this.#Mr=r,this.l10n=o,this.page=a,this.viewport=i,this.zIndex=0,this.l10n||=s.NullL10n}#Cr(e,t){var r=e.firstChild||e;r.id=""+o.AnnotationPrefix+t,this.div.append(e),this.#_t?.moveElementInDOM(this.div,e,r,!1)}async render(e){var t=e.annotations,r=this.div,n=((0,a.setLayerDimensions)(r,this.viewport),new Map),s={data:null,layer:r,linkService:e.linkService,downloadManager:e.downloadManager,imageResourcesPath:e.imageResourcesPath||"",renderForms:!1!==e.renderForms,svgFactory:new a.DOMSVGFactory,annotationStorage:e.annotationStorage||new i.AnnotationStorage,enableScripting:!0===e.enableScripting,hasJSActions:e.hasJSActions,fieldObjects:e.fieldObjects,parent:this,elements:null};for(const e of t)if(!e.noHTML){var l=e.annotationType===o.AnnotationType.POPUP;if(l){var d;if(!(d=n.get(e.id)))continue;s.elements=d}else{var{width:d,height:g}=m(e.rect);if(d<=0||g<=0)continue}s.data=e,(g=c.create(s)).isRenderable&&(!l&&e.popupRef&&((l=n.get(e.popupRef))?l.push(g):n.set(e.popupRef,[g])),0<g.annotationEditorType&&this.#wr.set(g.data.id,g),l=g.render(),e.hidden&&(l.style.visibility="hidden"),this.#Cr(l,e.id))}this.#Er(),await this.l10n.translate(r)}update({viewport:e}){var t=this.div;this.viewport=e,(0,a.setLayerDimensions)(t,{rotation:e.rotation}),this.#Er(),t.hidden=!1}#Er(){if(this.#Mr){var e,t,r=this.div;for([e,t]of this.#Mr){var o,a=r.querySelector(`[data-annotation-id="${e}"]`);a&&((o=a.firstChild)?"CANVAS"===o.nodeName?o.replaceWith(t):o.before(t):a.append(t))}this.#Mr.clear()}}getEditableAnnotations(){return Array.from(this.#wr.values())}getEditableAnnotation(e){return this.#wr.get(e)}}},(e,t)=>{function r(e){return Math.floor(255*Math.max(0,Math.min(1,e))).toString(16).padStart(2,"0")}function o(e){return Math.max(0,Math.min(255,255*e))}Object.defineProperty(t,"__esModule",{value:!0}),t.ColorConverters=void 0,t.ColorConverters=class{static CMYK_G([e,t,r,o]){return["G",1-Math.min(1,.3*e+.59*r+.11*t+o)]}static G_CMYK([e]){return["CMYK",0,0,0,1-e]}static G_RGB([e]){return["RGB",e,e,e]}static G_rgb([e]){return[e=o(e),e,e]}static G_HTML([e]){return"#"+(e=r(e))+e+e}static RGB_G([e,t,r]){return["G",.3*e+.59*t+.11*r]}static RGB_rgb(e){return e.map(o)}static RGB_HTML(e){return"#"+e.map(r).join("")}static T_HTML(){return"#00000000"}static T_rgb(){return[null]}static CMYK_RGB([e,t,r,o]){return["RGB",1-Math.min(1,e+o),1-Math.min(1,r+o),1-Math.min(1,t+o)]}static CMYK_rgb([e,t,r,a]){return[o(1-Math.min(1,e+a)),o(1-Math.min(1,r+a)),o(1-Math.min(1,t+a))]}static CMYK_HTML(e){return e=this.CMYK_RGB(e).slice(1),this.RGB_HTML(e)}static RGB_CMYK([e,t,r]){return["CMYK",e=1-e,t=1-t,r=1-r,Math.min(e,t,r)]}}},(e,t)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.NullL10n=void 0,t.getL10nFallback=o;const r={of_pages:"of {{pagesCount}}",page_of_pages:"({{pageNumber}} of {{pagesCount}})",document_properties_kb:"{{size_kb}} KB ({{size_b}} bytes)",document_properties_mb:"{{size_mb}} MB ({{size_b}} bytes)",document_properties_date_string:"{{date}}, {{time}}",document_properties_page_size_unit_inches:"in",document_properties_page_size_unit_millimeters:"mm",document_properties_page_size_orientation_portrait:"portrait",document_properties_page_size_orientation_landscape:"landscape",document_properties_page_size_name_a3:"A3",document_properties_page_size_name_a4:"A4",document_properties_page_size_name_letter:"Letter",document_properties_page_size_name_legal:"Legal",document_properties_page_size_dimension_string:"{{width}} × {{height}} {{unit}} ({{orientation}})",document_properties_page_size_dimension_name_string:"{{width}} × {{height}} {{unit}} ({{name}}, {{orientation}})",document_properties_linearized_yes:"Yes",document_properties_linearized_no:"No",additional_layers:"Additional Layers",page_landmark:"Page {{page}}",thumb_page_title:"Page {{page}}",thumb_page_canvas:"Thumbnail of Page {{page}}",find_reached_top:"Reached top of document, continued from bottom",find_reached_bottom:"Reached end of document, continued from top","find_match_count[one]":"{{current}} of {{total}} match","find_match_count[other]":"{{current}} of {{total}} matches","find_match_count_limit[one]":"More than {{limit}} match","find_match_count_limit[other]":"More than {{limit}} matches",find_not_found:"Phrase not found",page_scale_width:"Page Width",page_scale_fit:"Page Fit",page_scale_auto:"Automatic Zoom",page_scale_actual:"Actual Size",page_scale_percent:"{{scale}}%",loading_error:"An error occurred while loading the PDF.",invalid_file_error:"Invalid or corrupted PDF file.",missing_file_error:"Missing PDF file.",unexpected_response_error:"Unexpected server response.",rendering_error:"An error occurred while rendering the page.",annotation_date_string:"{{date}}, {{time}}",printing_not_supported:"Warning: Printing is not fully supported by this browser.",printing_not_ready:"Warning: The PDF is not fully loaded for printing.",web_fonts_disabled:"Web fonts are disabled: unable to use embedded PDF fonts.",free_text2_default_content:"Start typing…",editor_free_text2_aria_label:"Text Editor",editor_ink2_aria_label:"Draw Editor",editor_ink_canvas_aria_label:"User-created image",editor_alt_text_button_label:"Alt text",editor_alt_text_edit_button_label:"Edit alt text",editor_alt_text_decorative_tooltip:"Marked as decorative"};function o(e,t){switch(e){case"find_match_count":e=`find_match_count[${1===t.total?"one":"other"}]`;break;case"find_match_count_limit":e=`find_match_count_limit[${1===t.limit?"one":"other"}]`}return r[e]||""}r.print_progress_percent="{{progress}}%",t.NullL10n={getLanguage:async()=>"en-us",getDirection:async()=>"ltr",async get(e,t=null,r=o(e,t)){return(a=t)?r.replaceAll(/\{\{\s*(\w+)\s*\}\}/g,((e,t)=>t in a?a[t]:"{{"+t+"}}")):r;var a},async translate(e){}}},(e,t,r)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.XfaLayer=void 0;var o=r(25);t.XfaLayer=class{static setupStorage(e,t,r,o,a){var i=o.getValue(t,{value:null});switch(r.name){case"textarea":null!==i.value&&(e.textContent=i.value),"print"!==a&&e.addEventListener("input",(e=>{o.setValue(t,{value:e.target.value})}));break;case"input":if("radio"===r.attributes.type||"checkbox"===r.attributes.type){if(i.value===r.attributes.xfaOn?e.setAttribute("checked",!0):i.value===r.attributes.xfaOff&&e.removeAttribute("checked"),"print"===a)break;e.addEventListener("change",(e=>{o.setValue(t,{value:e.target.checked?e.target.getAttribute("xfaOn"):e.target.getAttribute("xfaOff")})}))}else{if(null!==i.value&&e.setAttribute("value",i.value),"print"===a)break;e.addEventListener("input",(e=>{o.setValue(t,{value:e.target.value})}))}break;case"select":if(null!==i.value){e.setAttribute("value",i.value);for(const e of r.children)e.attributes.value===i.value?e.attributes.selected=!0:e.attributes.hasOwnProperty("selected")&&delete e.attributes.selected}e.addEventListener("input",(e=>{e=-1===(e=e.target.options).selectedIndex?"":e[e.selectedIndex].value,o.setValue(t,{value:e})}))}}static setAttributes({html:e,element:t,storage:r=null,intent:o,linkService:a}){var i,n,s=t.attributes,l=e instanceof HTMLAnchorElement;for([i,n]of("radio"===s.type&&(s.name=s.name+"-"+o),Object.entries(s)))if(null!=n)switch(i){case"class":n.length&&e.setAttribute(i,n.join(" "));break;case"dataId":break;case"id":e.setAttribute("data-element-id",n);break;case"style":Object.assign(e.style,n);break;case"textContent":e.textContent=n;break;default:l&&("href"===i||"newWindow"===i)||e.setAttribute(i,n)}l&&a.addLinkAttributes(e,s.href,s.newWindow),r&&s.dataId&&this.setupStorage(e,s.dataId,t,r)}static render(e){for(var t=e.annotationStorage,r=e.linkService,a=e.xfaHtml,i=e.intent||"display",n=document.createElement(a.name),s=(a.attributes&&this.setAttributes({html:n,element:a,intent:i,linkService:r}),[[a,-1,n]]),l=((a=e.div).append(n),e.viewport&&(n=`matrix(${e.viewport.transform.join(",")})`,a.style.transform=n),"richText"!==i&&a.setAttribute("class","xfaLayer xfaFont"),[]);0<s.length;){var d,[m,c,g]=s.at(-1);c+1===m.children.length?s.pop():null!==(c=m.children[++s.at(-1)[1]])&&("#text"===(m=c.name)?(d=document.createTextNode(c.value),l.push(d),g.append(d)):(d=c?.attributes?.xmlns?document.createElementNS(c.attributes.xmlns,m):document.createElement(m),g.append(d),c.attributes&&this.setAttributes({html:d,element:c,storage:t,intent:i,linkService:r}),c.children&&0<c.children.length?s.push([c,-1,d]):c.value&&(g=document.createTextNode(c.value),o.XfaText.shouldBuildText(m)&&l.push(g),d.append(g))))}for(const e of a.querySelectorAll(".xfaNonInteractive input, .xfaNonInteractive textarea"))e.setAttribute("readOnly",!0);return{textDivs:l}}static update(e){var t=`matrix(${e.viewport.transform.join(",")})`;e.div.style.transform=t,e.div.hidden=!1}}},(e,t,r)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.InkEditor=void 0;var o=r(1),a=r(4),i=r(29),n=r(6),s=r(5);class l extends a.AnnotationEditor{#Lr=0;#Or=0;#Ir=this.canvasPointermove.bind(this);#Gr=this.canvasPointerleave.bind(this);#Nr=this.canvasPointerup.bind(this);#Br=this.canvasPointerdown.bind(this);#kr=new Path2D;#Rr=!1;#Fr=!1;#Dr=!1;#Ur=null;#Xr=0;#Vr=0;#Hr=null;static _defaultColor=null;static _defaultOpacity=1;static _defaultThickness=1;static _type="ink";constructor(e){super({...e,name:"inkEditor"}),this.color=e.color||null,this.thickness=e.thickness||null,this.opacity=e.opacity||null,this.paths=[],this.bezierPath2D=[],this.allRawPaths=[],this.currentPath=[],this.scaleFactor=1,this.translationX=this.translationY=0,this.x=0,this.y=0,this._willKeepAspectRatio=!0}static initialize(e){a.AnnotationEditor.initialize(e,{strings:["editor_ink_canvas_aria_label","editor_ink2_aria_label"]})}static updateDefaultParams(e,t){switch(e){case o.AnnotationEditorParamsType.INK_THICKNESS:l._defaultThickness=t;break;case o.AnnotationEditorParamsType.INK_COLOR:l._defaultColor=t;break;case o.AnnotationEditorParamsType.INK_OPACITY:l._defaultOpacity=t/100}}updateParams(e,t){switch(e){case o.AnnotationEditorParamsType.INK_THICKNESS:this.#Wr(t);break;case o.AnnotationEditorParamsType.INK_COLOR:this.#Kt(t);break;case o.AnnotationEditorParamsType.INK_OPACITY:this.#Kr(t)}}static get defaultPropertiesToUpdate(){return[[o.AnnotationEditorParamsType.INK_THICKNESS,l._defaultThickness],[o.AnnotationEditorParamsType.INK_COLOR,l._defaultColor||a.AnnotationEditor._defaultLineColor],[o.AnnotationEditorParamsType.INK_OPACITY,Math.round(100*l._defaultOpacity)]]}get propertiesToUpdate(){return[[o.AnnotationEditorParamsType.INK_THICKNESS,this.thickness||l._defaultThickness],[o.AnnotationEditorParamsType.INK_COLOR,this.color||l._defaultColor||a.AnnotationEditor._defaultLineColor],[o.AnnotationEditorParamsType.INK_OPACITY,Math.round(100*(this.opacity??l._defaultOpacity))]]}#Wr(e){const t=this.thickness;this.addCommands({cmd:()=>{this.thickness=e,this.#Zr()},undo:()=>{this.thickness=t,this.#Zr()},mustExec:!0,type:o.AnnotationEditorParamsType.INK_THICKNESS,overwriteIfSameType:!0,keepUndo:!0})}#Kt(e){const t=this.color;this.addCommands({cmd:()=>{this.color=e,this.#zr()},undo:()=>{this.color=t,this.#zr()},mustExec:!0,type:o.AnnotationEditorParamsType.INK_COLOR,overwriteIfSameType:!0,keepUndo:!0})}#Kr(e){e/=100;const t=this.opacity;this.addCommands({cmd:()=>{this.opacity=e,this.#zr()},undo:()=>{this.opacity=t,this.#zr()},mustExec:!0,type:o.AnnotationEditorParamsType.INK_OPACITY,overwriteIfSameType:!0,keepUndo:!0})}rebuild(){this.parent&&(super.rebuild(),null!==this.div)&&(this.canvas||(this.#Qr(),this.#jr()),this.isAttachedToDOM||(this.parent.add(this),this.#Yr()),this.#Zr())}remove(){null!==this.canvas&&(this.isEmpty()||this.commit(),this.canvas.width=this.canvas.height=0,this.canvas.remove(),this.canvas=null,this.#Ur.disconnect(),this.#Ur=null,super.remove())}setParent(e){!this.parent&&e?this._uiManager.removeShouldRescale(this):this.parent&&null===e&&this._uiManager.addShouldRescale(this),super.setParent(e)}onScaleChanging(){var[e,t]=this.parentDimensions,e=this.width*e,t=this.height*t;this.setDimensions(e,t)}enableEditMode(){this.#Rr||null===this.canvas||(super.enableEditMode(),this._isDraggable=!1,this.canvas.addEventListener("pointerdown",this.#Br))}disableEditMode(){this.isInEditMode()&&null!==this.canvas&&(super.disableEditMode(),this._isDraggable=!this.isEmpty(),this.div.classList.remove("editing"),this.canvas.removeEventListener("pointerdown",this.#Br))}onceAdded(){this._isDraggable=!this.isEmpty()}isEmpty(){return 0===this.paths.length||1===this.paths.length&&0===this.paths[0].length}#Jr(){var{parentRotation:e,parentDimensions:[t,r]}=this;switch(e){case 90:return[0,r,r,t];case 180:return[t,r,t,r];case 270:return[t,0,r,t];default:return[0,0,t,r]}}#qr(){var{ctx:e,color:t,opacity:r,thickness:o,parentScale:a,scaleFactor:i}=this;e.lineWidth=o*a/i,e.lineCap="round",e.lineJoin="round",e.miterLimit=10,e.strokeStyle=""+t+(0,s.opacityToHex)(r)}#eo(e,t){this.canvas.addEventListener("contextmenu",n.noContextMenu),this.canvas.addEventListener("pointerleave",this.#Gr),this.canvas.addEventListener("pointermove",this.#Ir),this.canvas.addEventListener("pointerup",this.#Nr),this.canvas.removeEventListener("pointerdown",this.#Br),this.isEditing=!0,this.#Dr||(this.#Dr=!0,this.#Yr(),this.thickness||=l._defaultThickness,this.color||=l._defaultColor||a.AnnotationEditor._defaultLineColor,this.opacity??=l._defaultOpacity),this.currentPath.push([e,t]),this.#Fr=!1,this.#qr(),this.#Hr=()=>{this.#to(),this.#Hr&&window.requestAnimationFrame(this.#Hr)},window.requestAnimationFrame(this.#Hr)}#ro(e,t){var[r,o]=this.currentPath.at(-1);if(!(1<this.currentPath.length&&e===r&&t===o)){r=this.currentPath;let o=this.#kr;r.push([e,t]),this.#Fr=!0,r.length<=2?(o.moveTo(...r[0]),o.lineTo(e,t)):(3===r.length&&(this.#kr=o=new Path2D,o.moveTo(...r[0])),this.#oo(o,...r.at(-3),...r.at(-2),e,t))}}#ao(){var e;0!==this.currentPath.length&&(e=this.currentPath.at(-1),this.#kr.lineTo(...e))}#io(e,t){let r;this.#Hr=null,e=Math.min(Math.max(e,0),this.canvas.width),t=Math.min(Math.max(t,0),this.canvas.height),this.#ro(e,t),this.#ao(),r=1!==this.currentPath.length?this.#no():[[e=[e,t],e.slice(),e.slice(),e]];const o=this.#kr,a=this.currentPath;this.currentPath=[],this.#kr=new Path2D,this.addCommands({cmd:()=>{this.allRawPaths.push(a),this.paths.push(r),this.bezierPath2D.push(o),this.rebuild()},undo:()=>{this.allRawPaths.pop(),this.paths.pop(),this.bezierPath2D.pop(),0===this.paths.length?this.remove():(this.canvas||(this.#Qr(),this.#jr()),this.#Zr())},mustExec:!0})}#to(){if(this.#Fr){this.#Fr=!1,Math.ceil(this.thickness*this.parentScale);var e=(t=this.currentPath.slice(-3)).map((e=>e[0])),t=t.map((e=>e[1])),r=(Math.min(...e),Math.max(...e),Math.min(...t),Math.max(...t),this).ctx;r.save(),r.clearRect(0,0,this.canvas.width,this.canvas.height);for(const e of this.bezierPath2D)r.stroke(e);r.stroke(this.#kr),r.restore()}}#oo(e,t,r,o,a,i,n){t=(t+o)/2,r=(r+a)/2,i=(o+i)/2,n=(a+n)/2,e.bezierCurveTo(t+2*(o-t)/3,r+2*(a-r)/3,i+2*(o-i)/3,n+2*(a-n)/3,i,n)}#no(){var e=this.currentPath;if(e.length<=2)return[[e[0],e[0],e.at(-1),e.at(-1)]];var t=[];let r,[o,a]=e[0];for(r=1;r<e.length-2;r++){const[s,l]=e[r],[d,m]=e[r+1];var i=(s+d)/2,n=(l+m)/2;const c=[o+2*(s-o)/3,a+2*(l-a)/3],g=[i+2*(s-i)/3,n+2*(l-n)/3];t.push([[o,a],c,g,[i,n]]),[o,a]=[i,n]}const[s,l]=e[r],[d,m]=e[r+1],c=[o+2*(s-o)/3,a+2*(l-a)/3],g=[d+2*(s-d)/3,m+2*(l-m)/3];return t.push([[o,a],c,g,[d,m]]),t}#zr(){if(this.isEmpty())this.#so();else{this.#qr();var{canvas:e,ctx:t}=this;t.setTransform(1,0,0,1,0,0),t.clearRect(0,0,e.width,e.height),this.#so();for(const e of this.bezierPath2D)t.stroke(e)}}commit(){this.#Rr||(super.commit(),this.isEditing=!1,this.disableEditMode(),this.setInForeground(),this.#Rr=!0,this.div.classList.add("disabled"),this.#Zr(!0),this.makeResizable(),this.parent.addInkEditorIfNeeded(!0),this.moveInDOM(),this.div.focus({preventScroll:!0}))}focusin(e){this._focusEventsAllowed&&(super.focusin(e),this.enableEditMode())}canvasPointerdown(e){0===e.button&&this.isInEditMode()&&!this.#Rr&&(this.setInForeground(),e.preventDefault(),"mouse"!==e.type&&this.div.focus(),this.#eo(e.offsetX,e.offsetY))}canvasPointermove(e){e.preventDefault(),this.#ro(e.offsetX,e.offsetY)}canvasPointerup(e){e.preventDefault(),this.#lo(e)}canvasPointerleave(e){this.#lo(e)}#lo(e){this.canvas.removeEventListener("pointerleave",this.#Gr),this.canvas.removeEventListener("pointermove",this.#Ir),this.canvas.removeEventListener("pointerup",this.#Nr),this.canvas.addEventListener("pointerdown",this.#Br),setTimeout((()=>{this.canvas.removeEventListener("contextmenu",n.noContextMenu)}),10),this.#io(e.offsetX,e.offsetY),this.addToAnnotationStorage(),this.setInBackground()}#Qr(){this.canvas=document.createElement("canvas"),this.canvas.width=this.canvas.height=0,this.canvas.className="inkEditorCanvas",a.AnnotationEditor._l10nPromise.get("editor_ink_canvas_aria_label").then((e=>this.canvas?.setAttribute("aria-label",e))),this.div.append(this.canvas),this.ctx=this.canvas.getContext("2d")}#jr(){this.#Ur=new ResizeObserver((e=>{(e=e[0].contentRect).width&&e.height&&this.setDimensions(e.width,e.height)})),this.#Ur.observe(this.div)}get isResizable(){return!this.isEmpty()&&this.#Rr}render(){if(!this.div){let i,n;this.width&&(i=this.x,n=this.y),super.render(),a.AnnotationEditor._l10nPromise.get("editor_ink2_aria_label").then((e=>this.div?.setAttribute("aria-label",e)));var[e,t,r,o]=this.#Jr();this.setAt(e,t,0,0),this.setDims(r,o),this.#Qr(),this.width?([e,t]=this.parentDimensions,this.setAspectRatio(this.width*e,this.height*t),this.setAt(i*e,n*t,this.width*e,this.height*t),this.#Dr=!0,this.#Yr(),this.setDims(this.width*e,this.height*t),this.#zr(),this.div.classList.add("disabled")):(this.div.classList.add("editing"),this.enableEditMode()),this.#jr()}return this.div}#Yr(){var e,t;this.#Dr&&([e,t]=this.parentDimensions,this.canvas.width=Math.ceil(this.width*e),this.canvas.height=Math.ceil(this.height*t),this.#so())}setDimensions(e,t){var r=Math.round(e),o=Math.round(t);this.#Xr===r&&this.#Vr===o||(this.#Xr=r,this.#Vr=o,this.canvas.style.visibility="hidden",[r,o]=this.parentDimensions,this.width=e/r,this.height=t/o,this.fixAndSetPosition(),this.#Rr&&this.#do(e,t),this.#Yr(),this.#zr(),this.canvas.style.visibility="visible",this.fixDims())}#do(e,t){var r=this.#mo();e=(e-r)/this.#Or,t=(t-r)/this.#Lr;this.scaleFactor=Math.min(e,t)}#so(){var e=this.#mo()/2;this.ctx.setTransform(this.scaleFactor,0,0,this.scaleFactor,this.translationX*this.scaleFactor+e,this.translationY*this.scaleFactor+e)}static#co(e){var t=new Path2D;for(let n=0,s=e.length;n<s;n++){var[r,o,a,i]=e[n];0===n&&t.moveTo(...r),t.bezierCurveTo(o[0],o[1],a[0],a[1],i[0],i[1])}return t}static#go(e,t,r){var[o,a,i,n]=t;switch(r){case 0:for(let t=0,r=e.length;t<r;t+=2)e[t]+=o,e[t+1]=n-e[t+1];break;case 90:for(let t=0,r=e.length;t<r;t+=2){var s=e[t];e[t]=e[t+1]+o,e[t+1]=s+a}break;case 180:for(let t=0,r=e.length;t<r;t+=2)e[t]=i-e[t],e[t+1]+=a;break;case 270:for(let t=0,r=e.length;t<r;t+=2){var l=e[t];e[t]=i-e[t+1],e[t+1]=n-l}break;default:throw new Error("Invalid rotation")}return e}static#uo(e,t,r){var[o,a,i,n]=t;switch(r){case 0:for(let t=0,r=e.length;t<r;t+=2)e[t]-=o,e[t+1]=n-e[t+1];break;case 90:for(let t=0,r=e.length;t<r;t+=2){var s=e[t];e[t]=e[t+1]-a,e[t+1]=s-o}break;case 180:for(let t=0,r=e.length;t<r;t+=2)e[t]=i-e[t],e[t+1]-=a;break;case 270:for(let t=0,r=e.length;t<r;t+=2){var l=e[t];e[t]=n-e[t+1],e[t+1]=i-l}break;default:throw new Error("Invalid rotation")}return e}#ho(e,t,r,o){var a=[],i=this.thickness/2,n=e*t+i,s=e*r+i;for(const t of this.paths){var d=[],m=[];for(let r=0,o=t.length;r<o;r++){var[c,g,u,h]=t[r],p=e*c[0]+n,c=e*c[1]+s,x=e*g[0]+n,g=e*g[1]+s,v=e*u[0]+n,u=e*u[1]+s,S=e*h[0]+n,h=e*h[1]+s;0===r&&(d.push(p,c),m.push(p,c)),d.push(x,g,v,u,S,h),m.push(x,g),r===o-1&&m.push(S,h)}a.push({bezier:l.#go(d,o,this.rotation),points:l.#go(m,o,this.rotation)})}return a}#po(){let e=1/0,t=-1/0,r=1/0,a=-1/0;for(const d of this.paths)for(var[i,n,s,l]of d)i=o.Util.bezierBoundingBox(...i,...n,...s,...l),e=Math.min(e,i[0]),r=Math.min(r,i[1]),t=Math.max(t,i[2]),a=Math.max(a,i[3]);return[e,r,t,a]}#mo(){return this.#Rr?Math.ceil(this.thickness*this.parentScale):0}#Zr(e=!1){var t,r,o,i,n,s;this.isEmpty()||(this.#Rr?(s=this.#po(),t=this.#mo(),this.#Or=Math.max(a.AnnotationEditor.MIN_SIZE,s[2]-s[0]),this.#Lr=Math.max(a.AnnotationEditor.MIN_SIZE,s[3]-s[1]),r=Math.ceil(t+this.#Or*this.scaleFactor),o=Math.ceil(t+this.#Lr*this.scaleFactor),[i,n]=this.parentDimensions,this.width=r/i,this.height=o/n,this.setAspectRatio(r,o),i=this.translationX,n=this.translationY,this.translationX=-s[0],this.translationY=-s[1],this.#Yr(),this.#zr(),this.#Xr=r,this.#Vr=o,this.setDims(r,o),s=e?t/this.scaleFactor/2:0,this.translate(i-this.translationX-s,n-this.translationY-s)):this.#zr())}static deserialize(e,t,r){if(e instanceof i.InkAnnotationElement)return null;var n,s=super.deserialize(e,t,r),[t,r]=(s.thickness=e.thickness,s.color=o.Util.makeHexColor(...e.color),s.opacity=e.opacity,s.pageDimensions),d=(t=s.width*t,r=s.height*r,s.parentScale),m=e.thickness/2,{paths:e,rect:c,rotation:g}=(s.#Rr=!0,s.#Xr=Math.round(t),s.#Vr=Math.round(r),e);for({bezier:n}of e){n=l.#uo(n,c,g);var u=[];s.paths.push(u);let e=d*(n[0]-m),t=d*(n[1]-m);for(let r=2,o=n.length;r<o;r+=6){var h=d*(n[r]-m),p=d*(n[r+1]-m),x=d*(n[r+2]-m),v=d*(n[r+3]-m),S=d*(n[r+4]-m),f=d*(n[r+5]-m);u.push([[e,t],[h,p],[x,v],[S,f]]),e=S,t=f}var b=this.#co(u);s.bezierPath2D.push(b)}return e=s.#po(),s.#Or=Math.max(a.AnnotationEditor.MIN_SIZE,e[2]-e[0]),s.#Lr=Math.max(a.AnnotationEditor.MIN_SIZE,e[3]-e[1]),s.#do(t,r),s}serialize(){var e,t;return this.isEmpty()?null:(e=this.getRect(0,0),t=a.AnnotationEditor._colorManager.convert(this.ctx.strokeStyle),{annotationType:o.AnnotationEditorType.INK,color:t,thickness:this.thickness,opacity:this.opacity,paths:this.#ho(this.scaleFactor/this.parentScale,this.translationX,this.translationY,e),pageIndex:this.pageIndex,rect:e,rotation:this.rotation,structTreeParentId:this._structTreeParentId})}}t.InkEditor=l},(e,t,r)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.StampEditor=void 0;var o=r(1),a=r(4),i=r(6),n=r(29);class s extends a.AnnotationEditor{#xo=null;#vo=null;#So=null;#fo=null;#bo=null;#Ao=null;#Ur=null;#_o=null;#yo=!1;#To=!1;static _type="stamp";constructor(e){super({...e,name:"stampEditor"}),this.#fo=e.bitmapUrl,this.#bo=e.bitmapFile}static initialize(e){a.AnnotationEditor.initialize(e)}static get supportedTypes(){return(0,o.shadow)(this,"supportedTypes",["apng","avif","bmp","gif","jpeg","png","svg+xml","webp","x-icon"].map((e=>"image/"+e)))}static get supportedTypesStr(){return(0,o.shadow)(this,"supportedTypesStr",this.supportedTypes.join(","))}static isHandlingMimeForPasting(e){return this.supportedTypes.includes(e)}static paste(e,t){t.pasteEditor(o.AnnotationEditorType.STAMP,{bitmapFile:e.getAsFile()})}#Po(e,t=!1){e?(this.#xo=e.bitmap,t||(this.#vo=e.id,this.#yo=e.isSvg),this.#Qr()):this.remove()}#$o(){this.#So=null,this._uiManager.enableWaiting(!1),this.#Ao&&this.div.focus()}#Mo(){var e;if(this.#vo)this._uiManager.enableWaiting(!0),this._uiManager.imageManager.getFromId(this.#vo).then((e=>this.#Po(e,!0))).finally((()=>this.#$o()));else if(this.#fo)e=this.#fo,this.#fo=null,this._uiManager.enableWaiting(!0),this.#So=this._uiManager.imageManager.getFromUrl(e).then((e=>this.#Po(e))).finally((()=>this.#$o()));else if(this.#bo)e=this.#bo,this.#bo=null,this._uiManager.enableWaiting(!0),this.#So=this._uiManager.imageManager.getFromFile(e).then((e=>this.#Po(e))).finally((()=>this.#$o()));else{const e=document.createElement("input");e.type="file",e.accept=s.supportedTypesStr,this.#So=new Promise((t=>{e.addEventListener("change",(async()=>{var r;e.files&&0!==e.files.length?(this._uiManager.enableWaiting(!0),r=await this._uiManager.imageManager.getFromFile(e.files[0]),this.#Po(r)):this.remove(),t()})),e.addEventListener("cancel",(()=>{this.remove(),t()}))})).finally((()=>this.#$o())),e.click()}}remove(){this.#vo&&(this.#xo=null,this._uiManager.imageManager.deleteId(this.#vo),this.#Ao?.remove(),this.#Ao=null,this.#Ur?.disconnect(),this.#Ur=null),super.remove()}rebuild(){this.parent?(super.rebuild(),null===this.div||(this.#vo&&this.#Mo(),this.isAttachedToDOM)||this.parent.add(this)):this.#vo&&this.#Mo()}onceAdded(){this._isDraggable=!0,this.div.focus()}isEmpty(){return!(this.#So||this.#xo||this.#fo||this.#bo)}get isResizable(){return!0}render(){if(!this.div){let r,o;var e,t;this.width&&(r=this.x,o=this.y),super.render(),this.div.hidden=!0,this.#xo?this.#Qr():this.#Mo(),this.width&&([e,t]=this.parentDimensions,this.setAt(r*e,o*t,this.width*e,this.height*t))}return this.div}#Qr(){var e=this.div;let{width:t,height:r}=this.#xo;var[o,a]=this.pageDimensions,[i,n]=(this.width?(t=this.width*o,r=this.height*a):(t>.75*o||r>.75*a)&&(t*=i=Math.min(.75*o/t,.75*a/r),r*=i),this.parentDimensions),i=(this.setDims(t*i/o,r*n/a),this._uiManager.enableWaiting(!1),this.#Ao=document.createElement("canvas"));e.append(i),e.hidden=!1,this.#wo(t,r),this.#jr(),this.#To||(this.parent.addUndoableEditor(this),this.#To=!0),this._uiManager._eventBus.dispatch("reporttelemetry",{source:this,details:{type:"editing",subtype:this.editorType,data:{action:"inserted_image"}}}),this.addAltTextButton()}#Co(e,t){var[r,o]=this.parentDimensions;this.width=e/r,this.height=t/o,this.setDims(e,t),this._initialOptions?.isCentered?this.center():this.fixAndSetPosition(),(this._initialOptions=null)!==this.#_o&&clearTimeout(this.#_o),this.#_o=setTimeout((()=>{this.#_o=null,this.#wo(e,t)}),200)}#Eo(e,t){var{width:r,height:o}=this.#xo;let a=r,i=o,n=this.#xo;for(;a>2*e||i>2*t;){var s=a,l=i,d=(a>2*e&&(a=16384<=a?Math.floor(a/2)-1:Math.ceil(a/2)),i>2*t&&(i=16384<=i?Math.floor(i/2)-1:Math.ceil(i/2)),new OffscreenCanvas(a,i));d.getContext("2d").drawImage(n,0,0,s,l,0,0,a,i),n=d.transferToImageBitmap()}return n}#wo(e,t){e=Math.ceil(e),t=Math.ceil(t);var r,o=this.#Ao;!o||o.width===e&&o.height===t||(o.width=e,o.height=t,r=this.#yo?this.#xo:this.#Eo(e,t),(o=o.getContext("2d")).filter=this._uiManager.hcmFilter,o.drawImage(r,0,0,r.width,r.height,0,0,e,t))}#Lo(e){return e?this.#yo&&(e=this._uiManager.imageManager.getSvgUrl(this.#vo))?e:(e=document.createElement("canvas"),({width:e.width,height:e.height}=this.#xo),e.getContext("2d").drawImage(this.#xo,0,0),e.toDataURL()):this.#yo?([e,t]=this.pageDimensions,e=Math.round(this.width*e*i.PixelsPerInch.PDF_TO_CSS_UNITS),t=Math.round(this.height*t*i.PixelsPerInch.PDF_TO_CSS_UNITS),(r=new OffscreenCanvas(e,t)).getContext("2d").drawImage(this.#xo,0,0,this.#xo.width,this.#xo.height,0,0,e,t),r.transferToImageBitmap()):structuredClone(this.#xo);var t,r}#jr(){this.#Ur=new ResizeObserver((e=>{(e=e[0].contentRect).width&&e.height&&this.#Co(e.width,e.height)})),this.#Ur.observe(this.div)}static deserialize(e,t,r){var o,a,i,s;return e instanceof n.StampAnnotationElement?null:(t=super.deserialize(e,t,r),({rect:e,bitmapUrl:o,bitmapId:s,isSvg:a,accessibilityData:i}=e),[r,s]=(s&&r.imageManager.isValidId(s)?t.#vo=s:t.#fo=o,t.#yo=a,t.pageDimensions),t.width=(e[2]-e[0])/r,t.height=(e[3]-e[1])/s,i&&(t.altTextData=i),t)}serialize(e=!1,t=null){var r,a;return this.isEmpty()?null:(r={annotationType:o.AnnotationEditorType.STAMP,bitmapId:this.#vo,pageIndex:this.pageIndex,rect:this.getRect(0,0),rotation:this.rotation,isSvg:this.#yo,structTreeParentId:this._structTreeParentId},e?(r.bitmapUrl=this.#Lo(!0),r.accessibilityData=this.altTextData):(({decorative:e,altText:a}=this.altTextData),!e&&a&&(r.accessibilityData={type:"Figure",alt:a}),null!==t&&(t.stamps||=new Map,e=this.#yo?(r.rect[2]-r.rect[0])*(r.rect[3]-r.rect[1]):null,t.stamps.has(this.#vo)?this.#yo&&e>(a=t.stamps.get(this.#vo)).area&&(a.area=e,a.serialized.bitmap.close(),a.serialized.bitmap=this.#Lo(!1)):(t.stamps.set(this.#vo,{area:e,serialized:r}),r.bitmap=this.#Lo(!1)))),r)}}t.StampEditor=s}],__webpack_module_cache__={};function __w_pdfjs_require__(e){var t=__webpack_module_cache__[e];return void 0!==t||(t=__webpack_module_cache__[e]={exports:{}},__webpack_modules__[e](t,t.exports,__w_pdfjs_require__)),t.exports}var __webpack_exports__={};return(()=>{var e=__webpack_exports__,t=(Object.defineProperty(e,"__esModule",{value:!0}),Object.defineProperty(e,"AbortException",{enumerable:!0,get:function(){return t.AbortException}}),Object.defineProperty(e,"AnnotationEditorLayer",{enumerable:!0,get:function(){return i.AnnotationEditorLayer}}),Object.defineProperty(e,"AnnotationEditorParamsType",{enumerable:!0,get:function(){return t.AnnotationEditorParamsType}}),Object.defineProperty(e,"AnnotationEditorType",{enumerable:!0,get:function(){return t.AnnotationEditorType}}),Object.defineProperty(e,"AnnotationEditorUIManager",{enumerable:!0,get:function(){return n.AnnotationEditorUIManager}}),Object.defineProperty(e,"AnnotationLayer",{enumerable:!0,get:function(){return s.AnnotationLayer}}),Object.defineProperty(e,"AnnotationMode",{enumerable:!0,get:function(){return t.AnnotationMode}}),Object.defineProperty(e,"CMapCompressionType",{enumerable:!0,get:function(){return t.CMapCompressionType}}),Object.defineProperty(e,"DOMSVGFactory",{enumerable:!0,get:function(){return o.DOMSVGFactory}}),Object.defineProperty(e,"FeatureTest",{enumerable:!0,get:function(){return t.FeatureTest}}),Object.defineProperty(e,"GlobalWorkerOptions",{enumerable:!0,get:function(){return l.GlobalWorkerOptions}}),Object.defineProperty(e,"ImageKind",{enumerable:!0,get:function(){return t.ImageKind}}),Object.defineProperty(e,"InvalidPDFException",{enumerable:!0,get:function(){return t.InvalidPDFException}}),Object.defineProperty(e,"MissingPDFException",{enumerable:!0,get:function(){return t.MissingPDFException}}),Object.defineProperty(e,"OPS",{enumerable:!0,get:function(){return t.OPS}}),Object.defineProperty(e,"PDFDataRangeTransport",{enumerable:!0,get:function(){return r.PDFDataRangeTransport}}),Object.defineProperty(e,"PDFDateString",{enumerable:!0,get:function(){return o.PDFDateString}}),Object.defineProperty(e,"PDFWorker",{enumerable:!0,get:function(){return r.PDFWorker}}),Object.defineProperty(e,"PasswordResponses",{enumerable:!0,get:function(){return t.PasswordResponses}}),Object.defineProperty(e,"PermissionFlag",{enumerable:!0,get:function(){return t.PermissionFlag}}),Object.defineProperty(e,"PixelsPerInch",{enumerable:!0,get:function(){return o.PixelsPerInch}}),Object.defineProperty(e,"PromiseCapability",{enumerable:!0,get:function(){return t.PromiseCapability}}),Object.defineProperty(e,"RenderingCancelledException",{enumerable:!0,get:function(){return o.RenderingCancelledException}}),Object.defineProperty(e,"SVGGraphics",{enumerable:!0,get:function(){return r.SVGGraphics}}),Object.defineProperty(e,"UnexpectedResponseException",{enumerable:!0,get:function(){return t.UnexpectedResponseException}}),Object.defineProperty(e,"Util",{enumerable:!0,get:function(){return t.Util}}),Object.defineProperty(e,"VerbosityLevel",{enumerable:!0,get:function(){return t.VerbosityLevel}}),Object.defineProperty(e,"XfaLayer",{enumerable:!0,get:function(){return d.XfaLayer}}),Object.defineProperty(e,"build",{enumerable:!0,get:function(){return r.build}}),Object.defineProperty(e,"createValidAbsoluteUrl",{enumerable:!0,get:function(){return t.createValidAbsoluteUrl}}),Object.defineProperty(e,"getDocument",{enumerable:!0,get:function(){return r.getDocument}}),Object.defineProperty(e,"getFilenameFromUrl",{enumerable:!0,get:function(){return o.getFilenameFromUrl}}),Object.defineProperty(e,"getPdfFilenameFromUrl",{enumerable:!0,get:function(){return o.getPdfFilenameFromUrl}}),Object.defineProperty(e,"getXfaPageViewport",{enumerable:!0,get:function(){return o.getXfaPageViewport}}),Object.defineProperty(e,"isDataScheme",{enumerable:!0,get:function(){return o.isDataScheme}}),Object.defineProperty(e,"isPdfFile",{enumerable:!0,get:function(){return o.isPdfFile}}),Object.defineProperty(e,"loadScript",{enumerable:!0,get:function(){return o.loadScript}}),Object.defineProperty(e,"noContextMenu",{enumerable:!0,get:function(){return o.noContextMenu}}),Object.defineProperty(e,"normalizeUnicode",{enumerable:!0,get:function(){return t.normalizeUnicode}}),Object.defineProperty(e,"renderTextLayer",{enumerable:!0,get:function(){return a.renderTextLayer}}),Object.defineProperty(e,"setLayerDimensions",{enumerable:!0,get:function(){return o.setLayerDimensions}}),Object.defineProperty(e,"shadow",{enumerable:!0,get:function(){return t.shadow}}),Object.defineProperty(e,"updateTextLayer",{enumerable:!0,get:function(){return a.updateTextLayer}}),Object.defineProperty(e,"version",{enumerable:!0,get:function(){return r.version}}),__w_pdfjs_require__(1)),r=__w_pdfjs_require__(2),o=__w_pdfjs_require__(6),a=__w_pdfjs_require__(26),i=__w_pdfjs_require__(27),n=__w_pdfjs_require__(5),s=__w_pdfjs_require__(29),l=__w_pdfjs_require__(14),d=__w_pdfjs_require__(32)})(),__webpack_exports__})()))}(pdf),pdf.exports);const _tmpl$$k=template("<style>"),_tmpl$2$d=template('<div class="relative z-10" aria-labelledby="modal-title" role="dialog" aria-modal="true"><style></style><div class="fixed inset-0 bg-black bg-opacity-50 transition-opacity animate-fade-in"></div><div class="fixed inset-0 z-10 overflow-y-auto"><div class="flex min-h-full items-center justify-center text-center sm:p-0"><div>'),_tmpl$3$6=template('<div class="flex justify-center items-center p-4"><div class="animate-spin rounded-full h-8 w-8 border-b-2 border-gray-900"></div><span class="ml-2">Loading<!>...'),_tmpl$4$6=template('<div class="text-red-500 p-4">'),_tmpl$5$6=template('<div><div class="m-0 p-0 prose prose-sm max-w-none">');function syntaxHighlight(e){return(e=(e="string"!=typeof e?JSON.stringify(e,void 0,2):e).replace(/&/g,"&").replace(/</g,"<").replace(/>/g,">")).replace(/("(\\u[a-zA-Z0-9]{4}|\\[^u]|[^\\"])*"(\s*:)?|\b(true|false|null)\b|-?\d+(?:\.\d*)?(?:[eE][+-]?\d+)?)/g,(function(e){let t="number";return/^"/.test(e)?t=/:$/.test(e)?"key":"string":/true|false/.test(e)?t="boolean":/null/.test(e)&&(t="null"),'<span class="'+t+'">'+e+"</span>"}))}pdfExports.GlobalWorkerOptions.workerSrc=`//cdnjs.cloudflare.com/ajax/libs/pdf.js/${pdfExports.version}/pdf.worker.min.js`;const Popup=e=>{let t,r=[];Marked.setOptions({isNoP:!0,sanitize:!0});const[o,a]=createSignal(!1),[i,n]=createSignal(null),[s,l]=createSignal(null),[d]=splitProps(e,["onOpen","onClose","isOpen","value"]),[m,c]=(createEffect((()=>{i()&&(async()=>{var e=i();if(e)try{var o=[];for(let t=1;t<=e.numPages;t++){var a=await e.getPage(t);o.push(a)}var n=document.createElement("div");n.style.display="flex",n.style.flexDirection="column",n.style.gap="20px",n.style.alignItems="center",n.style.maxHeight="80vh",n.style.overflowY="auto",n.style.padding="20px",t&&(t.innerHTML="",t.appendChild(n));for(let e=0;e<o.length;e++){var s=o[e],d=document.createElement("canvas"),m=(r.push(d),n.appendChild(d),s.getViewport({scale:1.5})),c=d.getContext("2d");if(!c)return!l("Failed to get canvas context");d.height=m.height,d.width=m.width,d.style.maxWidth="100%",d.style.height="auto";var g={canvasContext:c,viewport:m};await s.render(g).promise}}catch(e){l("Failed to render PDF pages: "+e.message)}})()})),onMount((async()=>{if(t)if(e.value?.metadata?.source?.endsWith(".pdf")){a(!0),l(null);let t=e.value.metadata.source||"";t.startsWith("s3://")&&((t=(t=t.replace("s3://","")).split("/")).shift(),t=t.join("/")),axios$1.post(`${import.meta?.env?.VITE_DOCUMENT_STORE_BASE_URL||window.VITE_DOCUMENT_STORE_BASE_URL||"https://stock.cmcts.ai/c-agent/s3e"}/api/download`,{paths:[t]},{responseType:"arraybuffer",headers:{Authorization:"Basic am9obkBleGFtcGxlLmNvbTphYmMxMjM="}}).then((async e=>{console.log("response",e.data);try{var t=await pdfExports.getDocument({data:e.data}).promise;n(t)}catch(t){l("Failed to load PDF: "+(e=t).message)}})).catch((e=>{l("Failed to download PDF: "+e.message)})).finally((()=>{a(!1)}))}else if(e.value?.metadata?.source?.endsWith(".docx")||e.value?.metadata?.source?.endsWith(".xlsx")){a(!0),l(null);let t=e.value.metadata.source||"";t.startsWith("s3://")&&((t=(t=t.replace("s3://","")).split("/")).shift(),t=t.join("/"));try{await axios$1.post(`${import.meta?.env?.VITE_DOCUMENT_STORE_BASE_URL||window.VITE_DOCUMENT_STORE_BASE_URL||"https://vib.cagent.cmcts.ai/s3-explorer"}/api/download`,{paths:[t]},{headers:{Authorization:"Basic am9obkBleGFtcGxlLmNvbTphYmMxMjM="},responseType:"blob"}).then((async t=>{t=window.URL.createObjectURL(t.data);var r=document.createElement("a");r.href=t,r.setAttribute("download",e.value?.metadata?.source.split("/").pop()),document.body.appendChild(r),r.click(),document.body.removeChild(r),window.URL.revokeObjectURL(t)}))}catch(e){l("Failed to download PDF: "+e.message)}finally{a(!1),h()}}else"string"==typeof e.value?.pageContent?(t.innerHTML=Marked.parse(e.value.pageContent),t.style.padding="1rem",t.style.lineHeight="1.25rem",t.querySelectorAll("a").forEach((e=>{e.target="_blank"}))):t.innerHTML=syntaxHighlight(JSON.stringify(e?.value,void 0,2))})),onCleanup((()=>{i()&&(i()?.destroy(),n(null)),r=[]})),createSignal(d.isOpen??!1)),g=(createEffect((()=>{isNotDefined(e.isOpen)||e.isOpen===m()||h()})),e=>{e.stopPropagation()}),u=()=>{c(!1),d.onClose?.(),document.body.style.overflow="auto"},h=()=>{m()?u():(c(!0),d.onOpen?.(),document.body.style.overflow="hidden")};return createComponent(Show,{get when(){return m()},get children(){return[(insert(r=_tmpl$$k(),css_248z),r),(()=>{const r=_tmpl$2$d(),a=r.firstChild,i=a.nextSibling.nextSibling.firstChild.firstChild;return r.style.setProperty("z-index","1100"),r.addEventListener("click",u),insert(a,css_248z),i.style.setProperty("background-color","transparent"),i.style.setProperty("margin-left","20px"),i.style.setProperty("margin-right","20px"),i.addEventListener("click",g),i.addEventListener("pointerdown",g),insert(i,(()=>{const r=memo((()=>!!e.value));return()=>{return r()&&(i=(a=_tmpl$5$6()).firstChild,a.style.setProperty("background","white"),a.style.setProperty("margin","auto"),a.style.setProperty("padding","7px"),insert(a,createComponent(Show,{get when(){return o()},get children(){var t=_tmpl$3$6(),r=t.firstChild.nextSibling,o=r.firstChild.nextSibling;return o.nextSibling,insert(r,(()=>e.value?.metadata?.source?.endsWith(".pdf")?" PDF ":""),o),t}}),i),insert(a,createComponent(Show,{get when(){return s()},get children(){var e=_tmpl$4$6();return insert(e,s),e}}),i),"function"==typeof(n=t)?use(n,i):t=i,i.style.setProperty("font-family","inherit"),i.style.setProperty("font-size","0.875rem"),a);var a,i,n}})()),createRenderEffect((()=>className(i,"relative transform overflow-hidden rounded-lg text-left shadow-xl transition-all sm:my-8 sm:w-full "+(e.value?.metadata?.source?.endsWith(".pdf")?"sm:max-w-3xl":"sm:max-w-xl")))),r})()];var r}})},_tmpl$$j=template('<div class="fixed inset-0 rounded-lg flex items-center justify-center backdrop-blur-sm z-50"><div class="p-10 rounded-lg shadow-lg max-w-md w-full text-center mx-4 font-sans"><h2 class="text-2xl font-semibold mb-4 flex justify-center items-center"></h2><p class="text-gray-700 text-base mb-6"></p><div class="flex justify-center"><button class="font-bold py-2 px-6 rounded focus:outline-none focus:shadow-outline">'),DisclaimerPopup=e=>{const[t]=splitProps(e,["onAccept","isOpen","title","message","textColor","buttonColor","buttonText","buttonTextColor","blurredBackgroundColor","backgroundColor"]),r=()=>{t.onAccept?.()};return createComponent(Show,{get when(){return t.isOpen},get children(){const e=_tmpl$$j(),o=e.firstChild,a=o.firstChild,i=a.nextSibling,n=i.nextSibling.firstChild;return insert(a,(()=>t.title??"Disclaimer")),n.$$click=r,insert(n,(()=>t.buttonText??"Start Chatting")),createRenderEffect((r=>{var a=t.blurredBackgroundColor||"rgba(0, 0, 0, 0.4)",s=t.backgroundColor||"white",l=t.textColor||"black",d=t.textColor||"black",m=t.message??'By using this chatbot, you agree to the <a target="_blank" href="https://flowiseai.com/terms">Terms & Condition</a>.',c=t.buttonColor||"#3b82f6",g=t.buttonTextColor||"white";return a!==r._v$&&(null!=(r._v$=a)?e.style.setProperty("background",a):e.style.removeProperty("background")),s!==r._v$2&&(null!=(r._v$2=s)?o.style.setProperty("background",s):o.style.removeProperty("background")),l!==r._v$3&&(null!=(r._v$3=l)?o.style.setProperty("color",l):o.style.removeProperty("color")),d!==r._v$4&&(null!=(r._v$4=d)?i.style.setProperty("color",d):i.style.removeProperty("color")),m!==r._v$5&&(i.innerHTML=r._v$5=m),c!==r._v$6&&(null!=(r._v$6=c)?n.style.setProperty("background",c):n.style.removeProperty("background")),g!==r._v$7&&(null!=(r._v$7=g)?n.style.setProperty("color",g):n.style.removeProperty("color")),r}),{_v$:void 0,_v$2:void 0,_v$3:void 0,_v$4:void 0,_v$5:void 0,_v$6:void 0,_v$7:void 0}),e}})};delegateEvents(["click"]);var client={},browser={},version={},trim={};Object.defineProperty(trim,"__esModule",{value:!0}),trim.trim=(e,t)=>e.replace(new RegExp("^["+t+"]+|["+t+"]+$","g"),""),Object.defineProperty(version,"__esModule",{value:!0});const trim_1=trim;version.formatVersion=(e,t)=>{var r;return void 0===e?"":(r=(e=trim_1.trim(e,". ").replace(new RegExp("_","g"),".")).split("."),/^\d+$/.test(r.join(""))?0!==t&&Number.isInteger(parseFloat(e))?parseInt(e,10).toFixed(1):1<r.length&&null!==t?r.slice(0,t+1).join("."):e:e)},version.parseBrowserEngineVersion=(e,t)=>{if(!t)return"";if("Gecko"===t){const t=e.match(/[ ](?:rv[: ]([0-9\.]+)).*gecko\/[0-9]{8,10}/i);if(t)return t.pop()}t=new RegExp(t+"\\s*\\/?\\s*((?:(?=\\d+\\.\\d)\\d+[.\\d]*|\\d{1,7}(?=(?:\\D|$))))","i");const r=e.match(t);return r?r.pop():""};var variableReplacement={},userAgent=(Object.defineProperty(variableReplacement,"__esModule",{value:!0}),variableReplacement.variableReplacement=(e,t)=>{var r=new RegExp("\\$\\d","g");return null==e?"":e.replace(r,(e=>(e=parseInt(e.substr(1),10),t[e-1]||"")))},{}),memoryCache={};Object.defineProperty(memoryCache,"__esModule",{value:!0}),memoryCache.memoryCache=()=>{const e={};return{set:(t,r)=>{e[t]=r},get:t=>{if(e.hasOwnProperty(t))return e[t]}}},Object.defineProperty(userAgent,"__esModule",{value:!0});const memory_cache_1=memoryCache,cache=memory_cache_1.memoryCache(),getRegexInstance=e=>{var t=cache.get(e);return t?t.value:(t=RegExp(`(?:^|[^A-Z0-9-_]|[^A-Z0-9-]_|sprd-)(?:${e})`,"i"),cache.set(e,{value:t}),t)};userAgent.userAgentParser=(e,t)=>{try{var r=getRegexInstance(e).exec(t);return r?r.slice(1):null}catch(e){return null}};var require$$3=[{regex:"Helio/(\\d+[\\.\\d]+)",name:"Helio",version:"$1",engine:{default:"Blink"}},{regex:"7654Browser/(\\d+[\\.\\d]+)",name:"7654 Browser",version:"$1",engine:{default:"Blink"}},{regex:"Qazweb/(\\d+[\\.\\d]+)",name:"Qazweb",version:"$1",engine:{default:"Gecko"}},{regex:"Degdegan/(\\d+[\\.\\d]+)",name:"deg-degan",version:"$1",engine:{default:"Blink"}},{regex:"JavaFX/(\\d+[\\.\\d]+)",name:"JavaFX",version:"$1",engine:{default:"WebKit"}},{regex:"Chedot/(\\d+[\\.\\d]+)",name:"Chedot",version:"$1",engine:{default:"Blink"}},{regex:"Chrome/(\\d+[\\.\\d]+) \\(Chromium GOST\\)",name:"Chromium GOST",version:"$1",engine:{default:"Blink"}},{regex:"(?:DeledaoPersonal|DeledaoFamily)/(\\d+[\\.\\d]+)",name:"Deledao",version:"$1",engine:{default:"Blink"}},{regex:"HasBrowser/(\\d+[\\.\\d]+)",name:"HasBrowser",version:"$1",engine:{default:"Blink"}},{regex:"Byffox/(\\d+[\\.\\d]+)",name:"Byffox",version:"$1",engine:{default:"Gecko"}},{regex:"Chrome/(\\d+[\\.\\d]+).+AgentWeb.+UCBrowser",name:"CoolBrowser",version:"$1",engine:{default:"Blink"}},{regex:"DotBrowser/(\\d+[\\.\\d]+)",name:"Dot Browser",version:"$1",engine:{default:"Blink"}},{regex:"CravingExplorer/(\\d+[\\.\\d]+)",name:"Craving Explorer",version:"$1",engine:{default:"Blink"}},{regex:"DeskBrowse/(\\d+[\\.\\d]+)",name:"DeskBrowse",version:"$1"},{regex:"Lolifox/(\\d+[\\.\\d]+)",name:"Lolifox",version:"$1"},{regex:"qutebrowser/(\\d+[\\.\\d]+).+Chrome",name:"Qutebrowser",version:"$1",engine:{default:"Blink"}},{regex:"qutebrowser(?:/(\\d+[\\.\\d]+))?",name:"Qutebrowser",version:"$1"},{regex:"flast/(\\d+[\\.\\d]+)",name:"Flast",version:"$1",engine:{default:"Blink"}},{regex:"PolyBrowser/(\\d+[\\.\\d]+)",name:"PolyBrowser",version:"$1",engine:{default:"Gecko"}},{regex:"Chrome.+BriskBard/(\\d+[\\.\\d]+)",name:"BriskBard",version:"$1",engine:{default:"Blink"}},{regex:"BriskBard(?:/(\\d+[\\.\\d]+))?",name:"BriskBard",version:"$1"},{regex:"GinxDroidBrowser/(\\d+[\\.\\d]+)",name:"GinxDroid Browser",version:"$1",engine:{default:"Blink"}},{regex:"AviraScout/(\\d+[\\.\\d]+)",name:"Avira Scout",version:"$1",engine:{default:"Blink"}},{regex:"VenusBrowser/(\\d+[\\.\\d]+)",name:"Venus Browser",version:"$1",engine:{default:"Blink"}},{regex:"Chrome.+Otter(?:[ /](\\d+[\\.\\d]+))?",name:"Otter Browser",version:"$1",engine:{default:"Blink"}},{regex:"Otter(?:[ /](\\d+[\\.\\d]+))?",name:"Otter Browser",version:"$1"},{regex:"Chrome.+Smooz/(\\d+[\\.\\d]+)",name:"Smooz",version:"$1",engine:{default:"Blink"}},{regex:"Smooz/(\\d+[\\.\\d]+)",name:"Smooz",version:"$1"},{regex:"Cornowser/(\\d+[\\.\\d]+)",name:"Cornowser",version:"$1",engine:{default:"Blink"}},{regex:"Orca/(\\d+[\\.\\d]+)",name:"Orca",version:"$1"},{regex:"Flow/(?:(\\d+[\\.\\d]+))",name:"Flow",version:"$1",engine:{default:"EkiohFlow"}},{regex:"Ekioh/(?:(\\d+[\\.\\d]+))",name:"Flow",version:"$1",engine:{default:"EkiohFlow"}},{regex:"xStand/(\\d+[\\.\\d]+)",name:"xStand",version:"$1",engine:{default:"WebKit"}},{regex:"Biyubi/(\\d+[\\.\\d]+)",name:"Biyubi",version:"$1"},{regex:"(?:Perfect%20Browser(?:-iPad)?|Perfect(?:BrowserPro)?)/(\\d+[\\.\\d]+)",name:"Perfect Browser",version:"$1",engine:{default:"WebKit"}},{regex:"Browser/Phantom/V(\\d+[\\.\\d]+)",name:"Phantom Browser",version:"$1"},{regex:"AwoX(?:/(\\d+[\\.\\d]+))? Browser",name:"AwoX",version:"$1"},{regex:"Zetakey/(\\d+[\\.\\d]+)",name:"Zetakey",version:"$1",engine:{default:"WebKit"}},{regex:"PlayFreeBrowser/(?:(\\d+[\\.\\d]+))?",name:"PlayFree Browser",version:"$1"},{regex:"(?:chimlac_browser|chimlac)/(?:(\\d+[\\.\\d]+))",name:"Chim Lac",version:"$1",engine:{default:"Blink"}},{regex:"Odin/(?:(\\d+[\\.\\d]+))",name:"Odin",version:"$1",engine:{default:"Blink"}},{regex:"Tbrowser/(\\d+[\\.\\d]+)",name:"T-Browser",version:"$1",engine:{default:"Blink"}},{regex:"SFive(?:_Android)?/.+ Chrome/(\\d+[\\.\\d]+)",name:"SFive",version:"$1",engine:{default:"Blink"}},{regex:"SFive_IOS/(\\d+[\\.\\d]+)",name:"SFive",version:"$1"},{regex:"Navigateur web/(?:(\\d+[\\.\\d]+))?",name:"Navigateur Web",version:"$1"},{regex:"Sraf(?:[/ ](\\d+[\\.\\d]+))?",name:"Seraphic Sraf",version:"$1",engine:{default:"Blink"}},{regex:"SeewoBrowser/(?:(\\d+[\\.\\d]+))?",name:"Seewo Browser",version:"$1",engine:{default:"Blink"}},{regex:"(?:Kode(?:iOS)?/(?:(\\d+[\\.\\d]+))?|TansoDL)",name:"Kode Browser",version:"$1"},{regex:"UR/(?:(\\d+[\\.\\d]+))",name:"UR Browser",version:"$1",engine:{default:"Blink"}},{regex:"OceanHero/([\\.\\d]+)",name:"OceanHero",version:"$1",engine:{default:"Blink"}},{regex:"Chrome/.+ SLBrowser/(?:(\\d+[\\.\\d]+))?",name:"Smart Lenovo Browser",version:"$1",engine:{default:"Blink"}},{regex:"SLBrowser/(?:(\\d+[\\.\\d]+))?",name:"Smart Lenovo Browser",version:"$1"},{regex:"Browzar",name:"Browzar",version:""},{regex:"Stargon/(?:(\\d+[\\.\\d]+))?",name:"Stargon",version:"$1",engine:{default:"Blink"}},{regex:"NFSBrowser/(?:(\\d+[\\.\\d]+))?",name:"NFS Browser",version:"$1",engine:{default:"Blink"}},{regex:"Borealis/(\\d+[\\.\\d]+)",name:"Borealis Navigator",version:"$1"},{regex:"YoloBrowser/(?:(\\d+[\\.\\d]+))?",name:"Yolo Browser",version:"$1",engine:{default:"Blink"}},{regex:"PHX/(?:(\\d+[\\.\\d]+))?",name:"Phoenix Browser",version:"$1"},{regex:"PrivacyWall/(?:(\\d+[\\.\\d]+))?",name:"PrivacyWall",version:"$1"},{regex:"Ghostery:?(\\d+[\\.\\d]+)?",name:"Ghostery Privacy Browser",version:"$1"},{regex:"Firefox/.*(?:Turkcell-)?YaaniBrowser(?:/(\\d+[\\.\\d]+))?",name:"Yaani Browser",version:"$1",engine:{default:"Gecko"}},{regex:"(?:Turkcell-)?YaaniBrowser(?:/(\\d+[\\.\\d]+))?",name:"Yaani Browser",version:"$1",engine:{default:"Blink"}},{regex:"SEB/(?:(\\d+[\\.\\d]+))?",name:"Safe Exam Browser",version:"$1"},{regex:"Colibri/(?:(\\d+[\\.\\d]+))?",name:"Colibri",version:"$1"},{regex:"Xvast/(?:(\\d+[\\.\\d]+))?",name:"Xvast",version:"$1"},{regex:"TungstenBrowser/(?:(\\d+[\\.\\d]+))?",name:"Tungsten",version:"$1"},{regex:"Lulumi-browser/(?:(\\d+[\\.\\d]+))?",name:"Lulumi",version:"$1"},{regex:"ybrowser/(?:(\\d+[\\.\\d]+))?",name:"Yahoo! Japan Browser",version:"$1"},{regex:"iLunascapeLite/(?:(\\d+[\\.\\d]+))?",name:"Lunascape Lite",version:"$1"},{regex:"Polypane/(?:(\\d+[\\.\\d]+))?",name:"Polypane",version:"$1"},{regex:"OhHaiBrowser/(?:(\\d+[\\.\\d]+))?",name:"OhHai Browser",version:"$1"},{regex:"Sizzy/(?:(\\d+[\\.\\d]+))?",name:"Sizzy",version:"$1"},{regex:"GlassBrowser/(?:(\\d+[\\.\\d]+))?",name:"Glass Browser",version:"$1"},{regex:"ToGate/(?:(\\d+[\\.\\d]+))?",name:"ToGate",version:"$1"},{regex:"AirWatch Browser v(?:(\\d+[\\.\\d]+))?",name:"VMware AirWatch",version:"$1"},{regex:"ADG/(?:(\\d+[\\.\\d]+))?",name:"AOL Desktop",version:"$1"},{regex:"Elements Browser/(?:(\\d+[\\.\\d]+))?",name:"Elements Browser",version:"$1"},{regex:"Light/(\\d+[\\.\\d]+)",name:"Light",version:"$1"},{regex:"Valve Steam GameOverlay/(?:(\\d+[\\.\\d]+))?",name:"Steam In-Game Overlay",version:"$1"},{regex:"115Browser/(?:(\\d+[\\.\\d]+))?",name:"115 Browser",version:"$1"},{regex:"Atom/(?:(\\d+[\\.\\d]+))?",name:"Atom",version:"$1"},{regex:"Mobile VR.+Firefox",name:"Firefox Reality",version:""},{regex:"AVG(?:/(\\d+[\\.\\d]+))?",name:"AVG Secure Browser",version:"$1"},{regex:"Start/(?:(\\d+[\\.\\d]+))?",name:"START Internet Browser",version:"$1"},{regex:"Lovense(?:/(\\d+[\\.\\d]+))?",name:"Lovense Browser",version:"$1"},{regex:"com.airfind.deltabrowser(?:/(\\d+[\\.\\d]+))?",name:"Delta Browser",version:"$1"},{regex:"(?:Ordissimo|webissimo3)(?:/(\\d+[\\.\\d]+))?",name:"Ordissimo",version:"$1"},{regex:"CCleaner(?:/(\\d+[\\.\\d]+))?",name:"CCleaner",version:"$1"},{regex:"AlohaLite(?:/(\\d+[\\.\\d]+))?",name:"Aloha Browser Lite",version:"$1",engine:{default:"Blink"}},{regex:"TaoBrowser(?:/(\\d+[\\.\\d]+))?",name:"Tao Browser",version:"$1"},{regex:"Falkon(?:/(\\d+[\\.\\d]+))?",name:"Falkon",version:"$1"},{regex:"mCent(?:/(\\d+[\\.\\d]+))?",name:"mCent",version:"$1"},{regex:"SalamWeb(?:/(\\d+[\\.\\d]+))?",name:"SalamWeb",version:"$1"},{regex:"BlackHawk(?:/(\\d+[\\.\\d]+))?",name:"BlackHawk",version:"$1"},{regex:"Minimo(?:/(\\d+[\\.\\d]+))?",name:"Minimo",version:"$1"},{regex:"WIB(?:/(\\d+[\\.\\d]+))?",name:"Wear Internet Browser",version:"$1"},{regex:"Origyn Web Browser",name:"Origyn Web Browser",version:""},{regex:"Kinza(?:/(\\d+[\\.\\d]+))?",name:"Kinza",version:"$1"},{regex:"Beamrise(?:/(\\d+[\\.\\d]+))?",name:"Beamrise",version:"$1"},{regex:"Faux(?:/(\\d+[\\.\\d]+))?",name:"Faux Browser",version:"$1"},{regex:"splash Version(?:/(\\d+[\\.\\d]+))?",name:"Splash",version:"$1"},{regex:"MZBrowser(?:/(\\d+[\\.\\d]+))?",name:"Meizu Browser",version:"$1"},{regex:"COSBrowser(?:/(\\d+[\\.\\d]+))?",name:"COS Browser",version:"$1"},{regex:"Crusta(?:/(\\d+[\\.\\d]+))?",name:"Crusta",version:"$1"},{regex:"Hawk/TurboBrowser(?:/v?(\\d+[\\.\\d]+))?",name:"Hawk Turbo Browser",version:"$1",engine:{default:"Blink"}},{regex:"FreeU(?:/(\\d+[\\.\\d]+))?",name:"FreeU",version:"$1",engine:{default:"Blink"}},{regex:"NoxBrowser(?:/(\\d+[\\.\\d]+))?",name:"Nox Browser",version:"$1",engine:{default:"Blink"}},{regex:"Basilisk(?:/(\\d+[\\.\\d]+))?",name:"Basilisk",version:"$1",engine:{default:"Goanna"}},{regex:"SputnikBrowser(?:/(\\d+[\\.\\d]+))?",name:"Sputnik Browser",version:"$1",engine:{default:"Blink"}},{regex:"TNSBrowser(?:/(\\d+[\\.\\d]+))?",name:"K.Browser",version:"$1",engine:{default:"Blink"}},{regex:"OculusBrowser(?:/(\\d+[\\.\\d]+))?",name:"Oculus Browser",version:"$1"},{regex:"Jio(?:Browser|Pages)(?:/(\\d+[\\.\\d]+))?",name:"Jio Browser",version:"$1",engine:{default:"Blink"}},{regex:"Chrome/.+ Hola(?:/(\\d+[\\.\\d]+))?",name:"hola! Browser",version:"$1",engine:{default:"Blink"}},{regex:"Slimjet/(?:(\\d+[\\.\\d]+))",name:"Slimjet",version:"$1",engine:{default:"Blink"}},{regex:"7Star/(?:(\\d+[\\.\\d]+))",name:"7Star",version:"$1",engine:{default:"Blink"}},{regex:"MxNitro/(?:(\\d+[\\.\\d]+))",name:"MxNitro",version:"$1",engine:{default:"Blink"}},{regex:"HuaweiBrowser(?:/(\\d+[\\.\\d]+))?",name:"Huawei Browser",version:"$1"},{regex:"VivoBrowser(?:/(\\d+[\\.\\d]+))?",name:"vivo Browser",version:"$1"},{regex:"RealmeBrowser(?:/(\\d+[\\.\\d]+))?",name:"Realme Browser",version:"$1"},{regex:"Beaker ?Browser(?:[/ ](\\d+[\\.\\d]+))?",name:"Beaker Browser",version:"$1",engine:{default:"Blink"}},{regex:"QwantiOS/(\\d+[\\.\\d]+)",name:"Qwant Mobile",version:"$1",engine:{default:"WebKit"}},{regex:"QwantMobile(?:/(\\d+[\\.\\d]+))?",name:"Qwant Mobile",version:"$1",engine:{default:"Gecko"}},{regex:"Qwant/(\\d+[\\.\\d]+)",name:"Qwant Mobile",version:"$1",engine:{default:"Gecko"}},{regex:"TenFourFox(?:/(\\d+[\\.\\d]+))?",name:"TenFourFox",version:"$1",engine:{default:"Gecko"}},{regex:"AOLShield(?:/(\\d+[\\.\\d]+))?",name:"AOL Shield",version:"$1",engine:{default:"Gecko"}},{regex:"Edge[ /](\\d+[\\.\\d]+)",name:"Microsoft Edge",version:"$1",engine:{default:"Edge"}},{regex:"EdgiOS[ /](\\d+[\\.\\d]+)",name:"Microsoft Edge",version:"$1",engine:{default:"WebKit"}},{regex:"EdgA[ /](\\d+[\\.\\d]+)",name:"Microsoft Edge",version:"$1",engine:{default:"Blink"}},{regex:"Edg[ /](\\d+[\\.\\d]+)",name:"Microsoft Edge",version:"$1",engine:{default:"Blink"}},{regex:"QIHU 360[ES]E",name:"360 Browser",version:""},{regex:"360 Aphone Browser(?: \\((\\d+[\\.\\d]+)(?:beta)?\\))?",name:"360 Phone Browser",version:"$1",engine:{default:"WebKit"}},{regex:"SailfishBrowser(?:/(\\d+[\\.\\d]+))?",name:"Sailfish Browser",version:"$1",engine:{default:"Gecko"}},{regex:"IceCat(?:/(\\d+[\\.\\d]+))?",name:"IceCat",version:"$1",engine:{default:"Gecko"}},{regex:"Mobicip",name:"Mobicip",version:"",engine:{default:"Gecko"}},{regex:"Camino(?:/(\\d+[\\.\\d]+))?",name:"Camino",version:"$1",engine:{default:"Gecko"}},{regex:"Waterfox(?:/(\\d+[\\.\\d]+))?",name:"Waterfox",version:"$1",engine:{default:"Gecko"}},{regex:"Chrome/.+ AlohaBrowser(?:/(\\d+[\\.\\d]+))?",name:"Aloha Browser",version:"$1",engine:{default:"Blink"}},{regex:"AlohaBrowser(?:/(\\d+[\\.\\d]+))?",name:"Aloha Browser",version:"$1"},{regex:"(?:Avast|ASW|Safer)(?:/(\\d+[\\.\\d]+))?",name:"Avast Secure Browser",version:"$1"},{regex:"Epic(?:/(\\d+[\\.\\d]+))",name:"Epic",version:"$1",engine:{default:"Gecko"}},{regex:"Fennec(?:/(\\d+[\\.\\d]+))?",name:"Fennec",version:"$1",engine:{default:"Gecko"}},{regex:"Firefox.*Tablet browser (\\d+[\\.\\d]+)",name:"MicroB",version:"$1",engine:{default:"Gecko"}},{regex:"Maemo Browser(?: (\\d+[\\.\\d]+))?",name:"MicroB",version:"$1",engine:{default:"Gecko"}},{regex:"Deepnet Explorer (\\d+[\\.\\d]+)?",name:"Deepnet Explorer",version:"$1"},{regex:"Avant ?Browser",name:"Avant Browser",version:"",engine:{default:""}},{regex:"OppoBrowser(?:/(\\d+[\\.\\d]+))?",name:"Oppo Browser",version:"$1"},{regex:"Chrome/(\\d+[\\.\\d]+).*MRCHROME",name:"Amigo",version:"$1",engine:{default:"WebKit",versions:{28:"Blink"}}},{regex:"AtomicBrowser(?:/(\\d+[\\.\\d]+))?",name:"Atomic Web Browser",version:"$1"},{regex:"Bunjalloo(?:/(\\d+[\\.\\d]+))?",name:"Bunjalloo",version:"$1"},{regex:"Brave(?:/(\\d+[\\.\\d]+))?",name:"Brave",version:"$1",engine:{default:"Blink"}},{regex:"Iridium(?:/(\\d+[\\.\\d]+))?",name:"Iridium",version:"$1"},{regex:"Iceweasel(?:/(\\d+[\\.\\d]+))?",name:"Iceweasel",version:"$1",engine:{default:"Gecko"}},{regex:"WebPositive",name:"WebPositive",version:"",engine:{default:"WebKit"}},{regex:".*Goanna.*PaleMoon(?:/(\\d+[\\.\\d]+))?",name:"Pale Moon",version:"$1",engine:{default:"Goanna"}},{regex:"PaleMoon(?:/(\\d+[\\.\\d]+))?",name:"Pale Moon",version:"$1",engine:{default:"Gecko"}},{regex:"CometBird(?:/(\\d+[\\.\\d]+))?",name:"CometBird",version:"$1",engine:{default:"Gecko"}},{regex:"IceDragon(?:/(\\d+[\\.\\d]+))?",name:"IceDragon",version:"$1",engine:{default:"Gecko"}},{regex:"Flock(?:/(\\d+[\\.\\d]+))?",name:"Flock",version:"$1",engine:{default:"Gecko",versions:{3:"WebKit"}}},{regex:"JigBrowserPlus/(?:(\\d+[\\.\\d]+))?",name:"Jig Browser Plus",version:"$1"},{regex:"jig browser(?: web;|9i?)?(?:[/ ](\\d+[\\.\\d]+))?",name:"Jig Browser",version:"$1"},{regex:"Kapiko(?:/(\\d+[\\.\\d]+))?",name:"Kapiko",version:"$1",engine:{default:"Gecko"}},{regex:"Kylo(?:/(\\d+[\\.\\d]+))?",name:"Kylo",version:"$1",engine:{default:"Gecko"}},{regex:"Origin/(?:(\\d+[\\.\\d]+))?",name:"Origin In-Game Overlay",version:"$1"},{regex:"Cunaguaro(?:/(\\d+[\\.\\d]+))?",name:"Cunaguaro",version:"$1"},{regex:"(?:TO-Browser/TOB|DT-Browser/DTB)(\\d+[\\.\\d]+)",name:"t-online.de Browser",version:"$1"},{regex:"Kazehakase(?:/(\\d+[\\.\\d]+))?",name:"Kazehakase",version:"$1",engine:{default:""}},{regex:"ArcticFox(?:/(\\d+[\\.\\d]+))?",name:"Arctic Fox",version:"$1",engine:{default:"Goanna"}},{regex:"Mypal(?:/(\\d+[\\.\\d]+))?",name:"Mypal",version:"$1",engine:{default:"Goanna"}},{regex:"Centaury(?:/(\\d+[\\.\\d]+))?",name:"Centaury",version:"$1",engine:{default:"Goanna"}},{regex:"(?:Focus|Klar)(?:/(\\d+[\\.\\d]+))?",name:"Firefox Focus",version:"$1"},{regex:"Cyberfox(?:/(\\d+[\\.\\d]+))?",name:"Cyberfox",version:"$1",engine:{default:"Gecko"}},{regex:"Firefox/(\\d+[\\.\\d]+).*\\(Swiftfox\\)",name:"Swiftfox",version:"$1",engine:{default:"Gecko"}},{regex:"(?:Mobile|Tablet).*Servo.*Firefox(?:/(\\d+[\\.\\d]+))?",name:"Firefox Mobile",version:"$1",engine:{default:"Servo"}},{regex:"(?:Mobile|Tablet).*Firefox(?:/(\\d+[\\.\\d]+))?",name:"Firefox Mobile",version:"$1",engine:{default:"Gecko"}},{regex:"FxiOS/(\\d+[\\.\\d]+)",name:"Firefox Mobile iOS",version:"$1",engine:{default:"WebKit"}},{regex:".*Servo.*Firefox(?:/(\\d+[\\.\\d]+))?",name:"Firefox",version:"$1",engine:{default:"Servo"}},{regex:"(?!.*Opera[ /])Firefox(?:/(\\d+[\\.\\d]+))?",name:"Firefox",version:"$1",engine:{default:"Gecko"}},{regex:"(?:BonEcho|GranParadiso|Lorentz|Minefield|Namoroka|Shiretoko)/(\\d+[\\.\\d]+)",name:"Firefox",version:"$1",engine:{default:"Gecko"}},{regex:"ANTFresco(?:[/ ](\\d+[\\.\\d]+))?",name:"ANT Fresco",version:"$1"},{regex:"ANTGalio(?:/(\\d+[\\.\\d]+))?",name:"ANTGalio",version:"$1"},{regex:"(?:Espial|Escape)(?:[/ ](\\d+[\\.\\d]+))?",name:"Espial TV Browser",version:"$1"},{regex:"RockMelt(?:/(\\d+[\\.\\d]+))?",name:"RockMelt",version:"$1",engine:{default:"WebKit"}},{regex:"Fireweb Navigator(?:/(\\d+[\\.\\d]+))?",name:"Fireweb Navigator",version:"$1"},{regex:"Fireweb(?:/(\\d+[\\.\\d]+))?",name:"Fireweb",version:"$1"},{regex:"(?:Navigator|Netscape6?)(?:/(\\d+[\\.\\d]+))?",name:"Netscape",version:"$1",engine:{default:""}},{regex:"(?:Polarity)(?:[/ ](\\d+[\\.\\d]+))?",name:"Polarity",version:"$1"},{regex:"(?:QupZilla)(?:[/ ](\\d+[\\.\\d]+))?",name:"QupZilla",version:"$1"},{regex:"(?:Dooble)(?:[/ ](\\d+[\\.\\d]+))?",name:"Dooble",version:"$1"},{regex:"Whale/(\\d+[\\.\\d]+)",name:"Whale Browser",version:"$1",engine:{default:"Blink"}},{regex:"Obigo[ ]?(?:InternetBrowser|Browser)?(?:[ /]([a-z0-9]*))?",name:"Obigo",version:"$1"},{regex:"Obigo|Teleca",name:"Obigo",version:""},{regex:"UCBrowserHD/(\\d[\\d\\.]+)",name:"UC Browser HD",version:"$1"},{regex:"UCMini(?:[ /]?(\\d+[\\.\\d]+))?",name:"UC Browser Mini",version:"$1"},{regex:"UC[ ]?Browser.* \\(UCMini\\)",name:"UC Browser Mini",version:""},{regex:"UCTurbo(?:[ /]?(\\d+[\\.\\d]+))?",name:"UC Browser Turbo",version:"$1"},{regex:"UC[ ]?Browser.* \\(UCTurbo\\)",name:"UC Browser Turbo",version:""},{regex:"OPRGX(?:/(\\d+[\\.\\d]+))?",name:"Opera GX",version:"$1",engine:{default:"Blink"}},{regex:"(?:Opera Tablet.*Version|Opera/.+Opera Mobi.+Version|Mobile.+OPR)/(\\d+[\\.\\d]+)",name:"Opera Mobile",version:"$1",engine:{default:"Presto",versions:{15:"Blink"}}},{regex:"MMS/(\\d+[\\.\\d]+)",name:"Opera Neon",version:"$1",engine:{default:"Blink"}},{regex:"OMI/(\\d+[\\.\\d]+)",name:"Opera Devices",version:"$1",engine:{default:"Blink"}},{regex:"Opera%20Touch/(\\d+[\\.\\d]+)? CFNetwork/.+Darwin/.+(?!.*x86_64)",name:"Opera Touch",version:"$1",engine:{default:"WebKit"}},{regex:"OPT/(\\d+[\\.\\d]+)",name:"Opera Touch",version:"$1",engine:{default:"Blink"}},{regex:"Opera/(\\d+[\\.\\d]+).+Opera Mobi",name:"Opera Mobile",version:"$1",engine:{default:"Presto",versions:{15:"Blink"}}},{regex:"Opera ?Mini/(?:att/)?(\\d+[\\.\\d]+)",name:"Opera Mini",version:"$1",engine:{default:"Presto"}},{regex:"Opera ?Mini.+Version/(\\d+[\\.\\d]+)",name:"Opera Mini",version:"$1",engine:{default:"Presto"}},{regex:"OPiOS/(\\d+[\\.\\d]+)",name:"Opera Mini iOS",version:"$1",engine:{default:"WebKit"}},{regex:"Opera%20Mini/(\\d+[\\.\\d]+) CFNetwork",name:"Opera Mini iOS",version:"$1",engine:{default:"WebKit"}},{regex:"Opera.+Edition Next.+Version/(\\d+[\\.\\d]+)",name:"Opera Next",version:"$1",engine:{default:"Presto",versions:{15:"Blink"}}},{regex:"(?:Opera|OPR)[/ ](?:9.80.*Version/)?(\\d+[\\.\\d]+).+Edition Next",name:"Opera Next",version:"$1",engine:{default:"Presto",versions:{15:"Blink"}}},{regex:"(?:Opera[/ ]?|OPR[/ ])(?:9.80.*Version/)?(\\d+[\\.\\d]+)",name:"Opera",version:"$1",engine:{default:"",versions:{7:"Presto",15:"Blink",3.5:"Elektra"}}},{regex:"rekonq(?:/(\\d+[\\.\\d]+))?",name:"Rekonq",version:"$1",engine:{default:"WebKit"}},{regex:"CoolNovo(?:/(\\d+[\\.\\d]+))?",name:"CoolNovo",version:"$1",engine:{default:""}},{regex:"(?:Comodo[ _])?Dragon(?!fruit)(?:/(\\d+[\\.\\d]+))?",name:"Comodo Dragon",version:"$1",engine:{default:"WebKit",versions:{28:"Blink"}}},{regex:"ChromePlus(?:/(\\d+[\\.\\d]+))?",name:"ChromePlus",version:"$1",engine:{default:""}},{regex:"Conkeror(?:/(\\d+[\\.\\d]+))?",name:"Conkeror",version:"$1",engine:{default:"Gecko"}},{regex:"Konqueror(?:/(\\d+[\\.\\d]+))?",name:"Konqueror",version:"$1",engine:{default:"KHTML",versions:{4:""}}},{regex:"(?:baidubrowser|bdbrowser(?:(?:hd)?_i18n)?|FlyFlow|BaiduHD)(?:[/ ](\\d+[\\.\\d]*))?",name:"Baidu Browser",version:"$1"},{regex:"(?:(?:BD)?Spark(?:Safe)?|BIDUBrowser)[/ ](\\d+[\\.\\d]*)",name:"Baidu Spark",version:"$1"},{regex:"YaBrowser(?:/(\\d+[\\.\\d]*)) \\(lite\\)?",name:"Yandex Browser Lite",version:"$1",engine:{default:"Blink"}},{regex:"YaBrowser(?:/(\\d+[\\.\\d]*))(?: \\((alpha|beta)\\))?",name:"Yandex Browser",version:"$1 $2",engine:{default:"Blink"}},{regex:"Ya(?:ndex)?SearchBrowser(?:/(\\d+[\\.\\d]*))",name:"Yandex Browser",version:"$1",engine:{default:"Blink"}},{regex:"Vivaldi(?:/(\\d+[\\.\\d]+))?",name:"Vivaldi",version:"$1",engine:{default:"Blink"}},{regex:"TweakStyle(?:/(\\d+[\\.\\d]+))?",name:"TweakStyle",version:"$1",engine:{default:"Blink"}},{regex:"Chrome.+Midori Browser/(\\d+[\\.\\d]+)",name:"Midori",version:"$1",engine:{default:"Blink"}},{regex:"Midori(?:/(\\d+[\\.\\d]+))?",name:"Midori",version:"$1",engine:{default:"WebKit"}},{regex:"Mercury(?:/(\\d+[\\.\\d]+))?",name:"Mercury",version:"$1"},{regex:"Chrome.+Maxthon(?:.+\\(portable\\))?/(\\d+[\\.\\d]+)",name:"Maxthon",version:"$1",engine:{default:"WebKit",versions:{5.2:"Blink"}}},{regex:"(?:Maxthon(?:%20Browser)?|MxBrowser(?:-inhouse|-iPhone)?)[ /](\\d+[\\.\\d]+)",name:"Maxthon",version:"$1",engine:{default:"",versions:{3:"WebKit"}}},{regex:"(?:Maxthon|MyIE2)",name:"Maxthon",version:"",engine:{default:""}},{regex:"Puffin(?:/(\\d+[\\.\\d]+))?",name:"Puffin",version:"$1"},{regex:"MobileIron(?:/(\\d+[\\.\\d]+))?",name:"Iron Mobile",version:"$1",engine:{default:"Blink"}},{regex:"Chrome(?:/(\\d+[\\.\\d]+))?.*Iron",name:"Iron",version:"$1",engine:{default:"WebKit"}},{regex:"Iron(?:/(\\d+[\\.\\d]+))?",name:"Iron",version:"$1",engine:{default:"WebKit",versions:{28:"Blink"}}},{regex:"Epiphany(?:/(\\d+[\\.\\d]+))?",name:"GNOME Web",version:"$1",engine:{default:"Gecko",versions:{"2.9.16":"",2.28:"WebKit"}}},{regex:"LieBaoFast(?:[ /](\\d+[\\.\\d]+))?",name:"LieBaoFast",version:"$1"},{regex:"LBBrowser(?:[ /](\\d+[\\.\\d]+))?",name:"Cheetah Browser",version:"$1"},{regex:"SE (\\d+[\\.\\d]+)",name:"Sogou Explorer",version:"$1"},{regex:"QQBrowserLite/([\\d\\.]+)",name:"QQ Browser Lite",version:"$1"},{regex:"M?QQBrowser/Mini([\\.\\d]+)?",name:"QQ Browser Mini",version:"$1",engine:{default:""}},{regex:"M?QQBrowser(?:/([\\.\\d]+))?",name:"QQ Browser",version:"$1",engine:{default:""}},{regex:"(?:MIUIBrowser|MiuiBrowser)(?:/(\\d+[\\.\\d]+))?",name:"MIUI Browser",version:"$1",engine:{default:""}},{regex:"(?:coc_coc_browser|coccocbrowser|CocCoc)(?:/(\\d+[\\.\\d]+))?",name:"Coc Coc",version:"$1",engine:{default:"WebKit",versions:{28:"Blink"}}},{regex:"DuckDuckGo/(\\d+[\\.\\d]*)",name:"DuckDuckGo Privacy Browser",version:"$1",engine:{default:"Blink"}},{regex:"Samsung ?Browser(?:[/ ](\\d+[\\.\\d]+))?",name:"Samsung Browser",version:"$1"},{regex:"(?:SFB(?:rowser)?)/(\\d+[\\.\\d]+)",name:"Super Fast Browser",version:"$1"},{regex:"com.browser.tssomas(?:/(\\d+[\\.\\d]+))?",name:"Super Fast Browser",version:"$1"},{regex:"EUI Browser(?:/(\\d+[\\.\\d]+))?",name:"EUI Browser",version:"$1"},{regex:"UBrowser(?:/(\\d+[\\.\\d]+))?",name:"UBrowser",version:"$1"},{regex:"Streamy(?:/(\\d+[\\.\\d]+))?",name:"Streamy",version:"$1",engine:{default:"WebKit"}},{regex:"isivioo",name:"Isivioo",version:"",engine:{default:"WebKit"}},{regex:"UC[ ]?Browser(?:[ /]?(\\d+[\\.\\d]+))?",name:"UC Browser",version:"$1"},{regex:"UCWEB(?:[ /]?(\\d+[\\.\\d]+))?",name:"UC Browser",version:"$1"},{regex:"UC AppleWebKit",name:"UC Browser",version:""},{regex:"Tenta/(\\d+[\\.\\d]+)",name:"Tenta Browser",version:"$1",engine:{default:"WebKit"}},{regex:"Rocket/(\\d+[\\.\\d]+)",name:"Firefox Rocket",version:"$1",engine:{default:"WebKit"}},{regex:"Web Explorer/(\\d+[\\.\\d]+).*Chrome",name:"Web Explorer",version:"$1",engine:{default:"WebKit"}},{regex:"SznProhlizec/(\\d+[\\.\\d]+)",name:"Seznam Browser",version:"$1",engine:{default:"Blink"}},{regex:"SogouMobileBrowser/(\\d+[\\.\\d]+)",name:"Sogou Mobile Browser",version:"$1",engine:{default:""}},{regex:"Mint Browser/(\\d+[\\.\\d]+)",name:"Mint Browser",version:"$1",engine:{default:""}},{regex:"Ecosia (?:android|ios)@(\\d+[\\.\\d]+)",name:"Ecosia",version:"$1",engine:{default:""}},{regex:"ACHEETAHI",name:"CM Browser",version:"",engine:{default:""}},{regex:"Kiwi Chrome",name:"Kiwi",version:"",engine:{default:""}},{regex:"Mb2345Browser/(\\d+[\\.\\d]+)",name:"2345 Browser",version:"$1",engine:{default:""}},{regex:"QtWebEngine/(\\d+[\\.\\d]+)",name:"QtWebEngine",version:"$1",engine:{default:""}},{regex:"Silk/(\\d+[\\.\\d]+) like Chrome",name:"Mobile Silk",version:"$1",engine:{default:"Blink"}},{regex:"Silk(?:/(\\d+[\\.\\d]+))?",name:"Mobile Silk",version:"$1",engine:{default:"WebKit"}},{regex:"IBrowse(?:[ /](\\d+[\\.\\d]+))?",name:"IBrowse",version:"$1"},{regex:"UP.Browser(?:/(\\d+[\\.\\d]+))?",name:"Openwave Mobile Browser",version:"$1"},{regex:"Openwave(?:/(\\d+[\\.\\d]+))?",name:"Openwave Mobile Browser",version:"$1"},{regex:"OneBrowser(?:[ /](\\d+[\\.\\d]+))?",name:"ONE Browser",version:"$1",engine:{default:"WebKit"}},{regex:"(?:NokiaBrowser|BrowserNG)(?:/(\\d+[\\.\\d]+))?",name:"Nokia Browser",version:"$1"},{regex:"Series60/5\\.0",name:"Nokia Browser",version:"7.0"},{regex:"Series60/(\\d+[\\.\\d]+)",name:"Nokia OSS Browser",version:"$1"},{regex:"S40OviBrowser/(\\d+[\\.\\d]+)",name:"Nokia Ovi Browser",version:"$1"},{regex:"^Nokia|Nokia[EN]?\\d+",name:"Nokia Browser",version:""},{regex:"Sleipnir(?:(?:%20Browser)?[ /](\\d+[\\.\\d]+))?",name:"Sleipnir",version:"$1",engine:{default:""}},{regex:"NTENTBrowser(?:/(\\d+[\\.\\d]+))?",name:"NTENT Browser",version:"$1"},{regex:"TV Bro/(\\d+[\\.\\d]+)",name:"TV Bro",version:"$1"},{regex:"Chrome/.+ Quark(?:/(\\d+[\\.\\d]+))?",name:"Quark",version:"$1",engine:{default:"WebKit"}},{regex:"MonumentBrowser(?:/(\\d+[\\.\\d]+))?",name:"Monument Browser",version:"$1",engine:{default:"WebKit"}},{regex:"BlueBrowser(?:/(\\d+[\\.\\d]+))?",name:"Blue Browser",version:"$1",engine:{default:"WebKit"}},{regex:"JAPAN Browser(?:/(\\d+[\\.\\d]+))?",name:"Japan Browser",version:"$1",engine:{default:"WebKit"}},{regex:"Version/.* Chrome(?:/(\\d+[\\.\\d]+))?",name:"Chrome Webview",version:"$1",engine:{default:"WebKit",versions:{28:"Blink"}}},{regex:"CrMo(?:/(\\d+[\\.\\d]+))?",name:"Chrome Mobile",version:"$1",engine:{default:"WebKit",versions:{28:"Blink"}}},{regex:"CriOS(?:/(\\d+[\\.\\d]+))?",name:"Chrome Mobile iOS",version:"$1",engine:{default:"WebKit"}},{regex:"Chrome(?:/(\\d+[\\.\\d]+))? Mobile",name:"Chrome Mobile",version:"$1",engine:{default:"WebKit",versions:{28:"Blink"}}},{regex:"chromeframe(?:/(\\d+[\\.\\d]+))?",name:"Chrome Frame",version:"$1",engine:{default:"WebKit"}},{regex:"Chromium(?:/(\\d+[\\.\\d]+))?",name:"Chromium",version:"$1",engine:{default:"WebKit",versions:{28:"Blink"}}},{regex:"HeadlessChrome(?:/(\\d+[\\.\\d]+))?",name:"Headless Chrome",version:"$1",engine:{default:"Blink"}},{regex:"Chrome(?!book)(?:/(\\d+[\\.\\d]+))?",name:"Chrome",version:"$1",engine:{default:"WebKit",versions:{28:"Blink"}}},{regex:"(?:Tizen|SLP) Browser(?:/(\\d+[\\.\\d]+))?",name:"Tizen Browser",version:"$1"},{regex:"Blazer(?:/(\\d+[\\.\\d]+))?",name:"Palm Blazer",version:"$1"},{regex:"Pre/(\\d+[\\.\\d]+)",name:"Palm Pre",version:"$1"},{regex:"(?:hpw|web)OS/(\\d+[\\.\\d]+)",name:"wOSBrowser",version:"$1"},{regex:"WebPro(?:[ /](\\d+[\\.\\d]+))?",name:"Palm WebPro",version:"$1"},{regex:"Palmscape(?:[ /](\\d+[\\.\\d]+))?",name:"Palmscape",version:"$1"},{regex:"Jasmine(?:[ /](\\d+[\\.\\d]+))?",name:"Jasmine",version:"$1"},{regex:"Lynx(?:/(\\d+[\\.\\d]+))?",name:"Lynx",version:"$1",engine:{default:"Text-based"}},{regex:"NCSA_Mosaic(?:/(\\d+[\\.\\d]+))?",name:"NCSA Mosaic",version:"$1"},{regex:"ABrowse(?: (\\d+[\\.\\d]+))?",name:"ABrowse",version:"$1"},{regex:"amaya(?:/(\\d+[\\.\\d]+))?",name:"Amaya",version:"$1"},{regex:"AmigaVoyager(?:/(\\d+[\\.\\d]+))?",name:"Amiga Voyager",version:"$1"},{regex:"Amiga-Aweb(?:/(\\d+[\\.\\d]+))?",name:"Amiga Aweb",version:"$1"},{regex:"Arora(?:/(\\d+[\\.\\d]+))?",name:"Arora",version:"$1",engine:{default:"WebKit"}},{regex:"Beonex(?:/(\\d+[\\.\\d]+))?",name:"Beonex",version:"$1",engine:{default:"Gecko"}},{regex:"bline(?:/(\\d+[\\.\\d]+))?",name:"B-Line",version:"$1",engine:{default:"WebKit"}},{regex:"BrowseX \\((\\d+[\\.\\d]+)",name:"BrowseX",version:"$1"},{regex:"Charon(?:[/ ](\\d+[\\.\\d]+))?",name:"Charon",version:"$1"},{regex:"Cheshire(?:/(\\d+[\\.\\d]+))?",name:"Cheshire",version:"$1"},{regex:"dbrowser",name:"dbrowser",version:"",engine:{default:"WebKit"}},{regex:"Dillo(?:/(\\d+[\\.\\d]+))?",name:"Dillo",version:"$1",engine:{default:"Dillo"}},{regex:"Dolfin(?:/(\\d+[\\.\\d]+))?|dolphin",name:"Dolphin",version:"$1",engine:{default:"WebKit"}},{regex:"Elinks(?:/(\\d+[\\.\\d]+))?",name:"Elinks",version:"$1",engine:{default:"Text-based"}},{regex:"Element Browser(?:[ /](\\d+[\\.\\d]+))?",name:"Element Browser",version:"$1"},{regex:"eZBrowser(?:/(\\d+[\\.\\d]+))?",name:"eZ Browser",version:"$1"},{regex:"Firebird(?! Build)(?:/(\\d+[\\.\\d]+))?",name:"Firebird",version:"$1",engine:{default:"Gecko"}},{regex:"Fluid(?:/(\\d+[\\.\\d]+))?",name:"Fluid",version:"$1",engine:{default:"WebKit"}},{regex:"Galeon(?:/(\\d+[\\.\\d]+))?",name:"Galeon",version:"$1",engine:{default:"Gecko"}},{regex:"Google Earth(?:/(\\d+[\\.\\d]+))?",name:"Google Earth",version:"$1",engine:{default:"WebKit"}},{regex:"HotJava(?:/(\\d+[\\.\\d]+))?",name:"HotJava",version:"$1"},{regex:"iCabMobile(?:[ /](\\d+[\\.\\d]+))?",name:"iCab Mobile",version:"$1",engine:{default:"WebKit"}},{regex:"iCab(?:[ /](\\d+[\\.\\d]+))?",name:"iCab",version:"$1",engine:{default:"iCab",versions:{4:"WebKit"}}},{regex:"i?Lunascape(?:[/ ](\\d+[\\.\\d]+))?",name:"Lunascape",version:"$1",engine:{default:""}},{regex:"Crazy Browser (\\d+[\\.\\d]+)",name:"Crazy Browser",version:"$1",engine:{default:"Trident"}},{regex:"IEMobile[ /](\\d+[\\.\\d]+)",name:"IE Mobile",version:"$1",engine:{default:"Trident"}},{regex:"MSIE (\\d+[\\.\\d]+).*XBLWP7",name:"IE Mobile",version:"$1",engine:{default:"Trident"}},{regex:"MSIE.*Trident/4.0",name:"Internet Explorer",version:"8.0",engine:{default:"Trident"}},{regex:"MSIE.*Trident/5.0",name:"Internet Explorer",version:"9.0",engine:{default:"Trident"}},{regex:"MSIE.*Trident/6.0",name:"Internet Explorer",version:"10.0",engine:{default:"Trident"}},{regex:"Trident/[78].0",name:"Internet Explorer",version:"11.0",engine:{default:"Trident"}},{regex:"MSIE (\\d+[\\.\\d]+)",name:"Internet Explorer",version:"$1",engine:{default:"Trident"}},{regex:"IE[ /](\\d+[\\.\\d]+)",name:"Internet Explorer",version:"$1",engine:{default:"Trident"}},{regex:"Kindle/(\\d+[\\.\\d]+)",name:"Kindle Browser",version:"$1"},{regex:"K-meleon(?:/(\\d+[\\.\\d]+))?",name:"K-meleon",version:"$1",engine:{default:"Gecko"}},{regex:"Links(?: \\((\\d+[\\.\\d]+))?",name:"Links",version:"$1",engine:{default:"Text-based"}},{regex:"LG Browser(?:/(\\d+[\\.\\d]+))",name:"LG Browser",version:"$1"},{regex:"LuaKit(?:/(\\d+[\\.\\d]+))?",name:"LuaKit",version:"$1"},{regex:"OmniWeb(?:/[v]?(\\d+[\\.\\d]+))?",name:"OmniWeb",version:"$1",engine:{default:"WebKit"}},{regex:"Phoenix(?:/(\\d+[\\.\\d]+))?",name:"Phoenix",version:"$1"},{regex:"NetFrontLifeBrowser(?:/(\\d+[\\.\\d]+))?",name:"NetFront Life",version:"$1",engine:{default:"NetFront"}},{regex:"NetFront(?:/(\\d+[\\.\\d]+))?",name:"NetFront",version:"$1",engine:{default:"NetFront"}},{regex:"PLAYSTATION|NINTENDO 3|AppleWebKit.+ N[XF]/\\d+\\.\\d+\\.\\d+",name:"NetFront",version:""},{regex:"NetPositive(?:/(\\d+[\\.\\d]+))?",name:"NetPositive",version:"$1"},{regex:"Odyssey Web Browser(?:.*OWB/(\\d+[\\.\\d]+))?",name:"Odyssey Web Browser",version:"$1"},{regex:"OffByOne",name:"Off By One",version:""},{regex:"(?:Oregano|OreganMediaBrowser)(?:[ /](\\d+[\\.\\d]+))?",name:"Oregano",version:"$1"},{regex:"(?:Polaris|Embider)(?:[/ ](\\d+[\\.\\d]+))?",name:"Polaris",version:"$1"},{regex:"SEMC-Browser(?:[/ ](\\d+[\\.\\d]+))?",name:"SEMC-Browser",version:"$1"},{regex:"Shiira(?:[/ ](\\d+[\\.\\d]+))?",name:"Shiira",version:"$1",engine:{default:"WebKit"}},{regex:"Skyfire(?:[/ ](\\d+[\\.\\d]+))?",name:"Skyfire",version:"$1"},{regex:"Snowshoe(?:/(\\d+[\\.\\d]+))?",name:"Snowshoe",version:"$1",engine:{default:"WebKit"}},{regex:"Sunrise(?:Browser)?(?:/(\\d+[\\.\\d]+))?",name:"Sunrise",version:"$1"},{regex:"SuperBird(?:/(\\d+[\\.\\d]+))?",name:"SuperBird",version:"$1"},{regex:"Vision-Browser(?:/(\\d+[\\.\\d]+))",name:"Vision Mobile Browser",version:"$1"},{regex:"WeTab-Browser",name:"WeTab Browser",version:""},{regex:"Xiino(?:/(\\d+[\\.\\d]+))?",name:"Xiino",version:"$1"},{regex:"BlackBerry|PlayBook|BB10",name:"BlackBerry Browser",version:""},{regex:"Android",name:"Android Browser",version:"",engine:{default:"WebKit"}},{regex:"Coast(?:/(\\d+[\\.\\d]+))?",name:"Coast",version:"$1"},{regex:"Surf(?:/(\\d+[\\.\\d]+))?",name:"surf",version:"$1",engine:{default:"WebKit"}},{regex:"(?:(?:iPod|iPad|iPhone).+Version|MobileSafari)/(\\d+[\\.\\d]+)",name:"Mobile Safari",version:"$1",engine:{default:"WebKit"}},{regex:"(?:Version/(\\d+[\\.\\d]+).*)?Mobile.*Safari/",name:"Mobile Safari",version:"$1",engine:{default:"WebKit"}},{regex:"(?:iPod|iPhone|iPad)",name:"Mobile Safari",version:"",engine:{default:"WebKit"}},{regex:"Version/(\\d+[\\.\\d]+).*Safari/|Safari/?\\d+",name:"Safari",version:"$1",engine:{default:"WebKit"}},{regex:"Dorado WAP-Browser[/ ](\\d+[\\.\\d]+)",name:"Dorado",version:"$1"},{regex:"NetSurf(?:/(\\d+[\\.\\d]+))?",name:"NetSurf",version:"$1",engine:{default:"NetSurf"}},{regex:"Uzbl",name:"Uzbl",version:""},{regex:"SimpleBrowser",name:"SimpleBrowser",version:""},{regex:"Zvu(?:/(\\d+[\\.\\d]+))?",name:"Zvu",version:"$1",engine:{default:"Gecko"}},{regex:"GOGGalaxyClient/(\\d+[\\.\\d]+)?",name:"GOG Galaxy",version:"$1"},{regex:"WAP Browser/MAUI|(?:\\w+)?Maui Wap Browser|MAUI[- ]Browser",name:"MAUI WAP Browser",version:""},{regex:"SP%20Browser/(\\d+[\\.\\d]+)",name:"SP Browser",version:"$1",engine:{default:"WebKit"}}],require$$4$1=[{regex:"NetFront",name:"NetFront"},{regex:"Edge",name:"Edge"},{regex:"Trident",name:"Trident"},{regex:"(?<!SmartHu)Blink",name:"Blink"},{regex:"(?:Apple)?WebKit",name:"WebKit"},{regex:"Presto",name:"Presto"},{regex:"Goanna",name:"Goanna"},{regex:"(?<!like )Gecko",name:"Gecko"},{regex:"KHTML",name:"KHTML"},{regex:"NetSurf",name:"NetSurf"},{regex:"Servo",name:"Servo"},{regex:"Goanna",name:"Goanna"},{regex:"Ekioh(?:Flow)?",name:"EkiohFlow"}],AA="Avant Browser",AB="ABrowse",AF="ANT Fresco",AG="ANTGalio",AL="Aloha Browser",AH="Aloha Browser Lite",AM="Amaya",AO="Amigo",AN="Android Browser",AE="AOL Desktop",AD="AOL Shield",AR="Arora",AX="Arctic Fox",AV="Amiga Voyager",AW="Amiga Aweb",A0="Atom",AT="Atomic Web Browser",AS="Avast Secure Browser",VG="AVG Secure Browser",AC="Avira Scout",A1$1="AwoX",BA="Beaker Browser",BM="Beamrise",BB="BlackBerry Browser",BD="Baidu Browser",BS="Baidu Spark",BI="Basilisk",BE="Beonex",BH="BlackHawk",BJ="Bunjalloo",BL="B-Line",BU="Blue Browser",BN="Borealis Navigator",BR="Brave",BK="BriskBard",BX="BrowseX",BZ="Browzar",BY="Biyubi",BF="Byffox",CA="Camino",CL="CCleaner",C6="Chedot",C0="Centaury",CC="Coc Coc",C4="CoolBrowser",C2="Colibri",CD="Comodo Dragon",C1="Coast",CX="Charon",CE="CM Browser",CF="Chrome Frame",HC="Headless Chrome",CH="Chrome",CI="Chrome Mobile iOS",CK="Conkeror",CM="Chrome Mobile",CN="CoolNovo",CO="CometBird",CB="COS Browser",CW="Cornowser",C3="Chim Lac",CP="ChromePlus",CR="Chromium",C5="Chromium GOST",CY="Cyberfox",CS="Cheshire",CT="Crusta",CG="Craving Explorer",CZ="Crazy Browser",CU="Cunaguaro",CV="Chrome Webview",DB="dbrowser",DE="Deepnet Explorer",DG="deg-degan",DA="Deledao",DT="Delta Browser",DS="DeskBrowse",DF="Dolphin",DO="Dorado",DR="Dot Browser",DL="Dooble",DI="Dillo",DD="DuckDuckGo Privacy Browser",EC="Ecosia",EI="Epic",EL="Elinks",EB="Element Browser",EE$1="Elements Browser",EZ="eZ Browser",EU="EUI Browser",EP="GNOME Web",ES="Espial TV Browser",FA="Falkon",FX="Faux Browser",F1="Firefox Mobile iOS",FB="Firebird",FD="Fluid",FE="Fennec",FF="Firefox",FK="Firefox Focus",FY="Firefox Reality",FR="Firefox Rocket",FL="Flock",FO="Flow",FM="Firefox Mobile",FW="Fireweb",FN="Fireweb Navigator",FS="Flast",FU="FreeU",GA="Galeon",GH="Ghostery Privacy Browser",GI="GinxDroid Browser",GB="Glass Browser",GE="Google Earth",GO="GOG Galaxy",HS="HasBrowser",HA="Hawk Turbo Browser",HE="Helio",HO="hola! Browser",HJ="HotJava",HU="Huawei Browser",IB="IBrowse",IC="iCab",I2="iCab Mobile",I1="Iridium",I3="Iron Mobile",I4="IceCat",ID="IceDragon",IV="Isivioo",IW="Iceweasel",IE="Internet Explorer",IM="IE Mobile",IR="Iron",JB="Japan Browser",JS="Jasmine",JA="JavaFX",JI="Jig Browser",JP="Jig Browser Plus",JO="Jio Browser",KB="K.Browser",KI="Kindle Browser",KM="K-meleon",KO="Konqueror",KP="Kapiko",KN="Kinza",KW="Kiwi",KD="Kode Browser",KY="Kylo",KZ="Kazehakase",LB="Cheetah Browser",LF="LieBaoFast",LG$2="LG Browser",LH="Light",LI="Links",IF="Lolifox",LO="Lovense Browser",LU="LuaKit",LL="Lulumi",LS="Lunascape",LN="Lunascape Lite",LX="Lynx",M1="mCent",MB="MicroB",MC="NCSA Mosaic",MZ="Meizu Browser",ME="Mercury",MF="Mobile Safari",MI="Midori",MO="Mobicip",MU="MIUI Browser",MS="Mobile Silk",MN="Minimo",MT="Mint Browser",MX="Maxthon",NM="MxNitro",MY="Mypal",MR="Monument Browser",MW="MAUI WAP Browser",NW="Navigateur Web",NR="NFS Browser",NB="Nokia Browser",NO="Nokia OSS Browser",NV="Nokia Ovi Browser",NX="Nox Browser",NE="NetSurf",NF="NetFront",NL="NetFront Life",NP="NetPositive",NS="Netscape",NT="NTENT Browser",OC="Oculus Browser",O1="Opera Mini iOS",OB="Obigo",O2$1="Odin",H2="OceanHero",OD="Odyssey Web Browser",OF="Off By One",HH="OhHai Browser",OE="ONE Browser",OX="Opera GX",OG="Opera Neon",OH="Opera Devices",OI="Opera Mini",OM="Opera Mobile",OP="Opera",ON="Opera Next",OO="Opera Touch",OA="Orca",OS="Ordissimo",OR="Oregano",O0="Origin In-Game Overlay",OY="Origyn Web Browser",OV="Openwave Mobile Browser",OW="OmniWeb",OT="Otter Browser",PL="Palm Blazer",PM="Pale Moon",PY="Polypane",PP="Oppo Browser",PR="Palm Pre",PU="Puffin",PW="Palm WebPro",PA="Palmscape",PE="Perfect Browser",PH="Phantom Browser",PX="Phoenix",PB="Phoenix Browser",PF="PlayFree Browser",PO="Polaris",PT="Polarity",LY="PolyBrowser",PI="PrivacyWall",PS="Microsoft Edge",QA="Qazweb",Q2="QQ Browser Lite",Q1="QQ Browser Mini",QQ="QQ Browser",QT="Qutebrowser",QU="Quark",QZ="QupZilla",QM="Qwant Mobile",QW="QtWebEngine",RE="Realme Browser",RK="Rekonq",RM="RockMelt",SB="Samsung Browser",SA="Sailfish Browser",S8="Seewo Browser",SC="SEMC-Browser",SE="Sogou Explorer",SF="Safari",S5="Safe Exam Browser",SW="SalamWeb",SV="SFive",SH="Shiira",S1="SimpleBrowser",SY="Sizzy",SK="Skyfire",SS="Seraphic Sraf",SL="Sleipnir",S6="Slimjet",S7="SP Browser",LE="Smart Lenovo Browser",OZ="Smooz",SN="Snowshoe",SO="Sogou Mobile Browser",S2="Splash",SI="Sputnik Browser",SR="Sunrise",SP="SuperBird",SU="Super Fast Browser",S3="surf",SG="Stargon",S0="START Internet Browser",S4="Steam In-Game Overlay",ST="Streamy",SX="Swiftfox",SZ="Seznam Browser",TR="T-Browser",TO="t-online.de Browser",TA="Tao Browser",TF="TenFourFox",TB="Tenta Browser",TZ="Tizen Browser",TU="Tungsten",TG="ToGate",TS="TweakStyle",TV="TV Bro",UB="UBrowser",UC="UC Browser",UH="UC Browser HD",UM="UC Browser Mini",UT="UC Browser Turbo",UR="UR Browser",UZ="Uzbl",VE="Venus Browser",VI="Vivaldi",VV="vivo Browser",VB="Vision Mobile Browser",VM="VMware AirWatch",WI="Wear Internet Browser",WP="Web Explorer",WE$1="WebPositive",WF="Waterfox",WH="Whale Browser",WO="wOSBrowser",WT="WeTab Browser",YJ="Yahoo! Japan Browser",YA="Yandex Browser",YL="Yandex Browser Lite",YN="Yaani Browser",YB="Yolo Browser",XS="xStand",XI="Xiino",XV="Xvast",ZE="Zetakey",ZV="Zvu",require$$5={36:"360 Phone Browser","1B":"115 Browser","2B":"2345 Browser","3B":"360 Browser","7B":"7654 Browser",AA:AA,AB:AB,AF:AF,AG:AG,AL:AL,AH:AH,AM:AM,AO:AO,AN:AN,AE:AE,AD:AD,AR:AR,AX:AX,AV:AV,AW:AW,A0:A0,AT:AT,AS:AS,VG:VG,AC:AC,A1:A1$1,BA:BA,BM:BM,BB:BB,BD:BD,BS:BS,BI:BI,BE:BE,BH:BH,BJ:BJ,BL:BL,BU:BU,BN:BN,BR:BR,BK:BK,BX:BX,BZ:BZ,BY:BY,BF:BF,CA:CA,CL:CL,C6:C6,C0:C0,CC:CC,C4:C4,C2:C2,CD:CD,C1:C1,CX:CX,CE:CE,CF:CF,HC:HC,CH:CH,CI:CI,CK:CK,CM:CM,CN:CN,CO:CO,CB:CB,CW:CW,C3:C3,CP:CP,CR:CR,C5:C5,CY:CY,CS:CS,CT:CT,CG:CG,CZ:CZ,CU:CU,CV:CV,DB:DB,DE:DE,DG:DG,DA:DA,DT:DT,DS:DS,DF:DF,DO:DO,DR:DR,DL:DL,DI:DI,DD:DD,EC:EC,EI:EI,EL:EL,EB:EB,EE:EE$1,EZ:EZ,EU:EU,EP:EP,ES:ES,FA:FA,FX:FX,F1:F1,FB:FB,FD:FD,FE:FE,FF:FF,FK:FK,FY:FY,FR:FR,FL:FL,FO:FO,FM:FM,FW:FW,FN:FN,FS:FS,FU:FU,GA:GA,GH:GH,GI:GI,GB:GB,GE:GE,GO:GO,HS:HS,HA:HA,HE:HE,HO:HO,HJ:HJ,HU:HU,IB:IB,IC:IC,I2:I2,I1:I1,I3:I3,I4:I4,ID:ID,IV:IV,IW:IW,IE:IE,IM:IM,IR:IR,JB:JB,JS:JS,JA:JA,JI:JI,JP:JP,JO:JO,KB:KB,KI:KI,KM:KM,KO:KO,KP:KP,KN:KN,KW:KW,KD:KD,KY:KY,KZ:KZ,LB:LB,LF:LF,LG:LG$2,LH:LH,LI:LI,IF:IF,LO:LO,LU:LU,LL:LL,LS:LS,LN:LN,LX:LX,M1:M1,MB:MB,MC:MC,MZ:MZ,ME:ME,MF:MF,MI:MI,MO:MO,MU:MU,MS:MS,MN:MN,MT:MT,MX:MX,NM:NM,MY:MY,MR:MR,MW:MW,NW:NW,NR:NR,NB:NB,NO:NO,NV:NV,NX:NX,NE:NE,NF:NF,NL:NL,NP:NP,NS:NS,NT:NT,OC:OC,O1:O1,OB:OB,O2:O2$1,H2:H2,OD:OD,OF:OF,HH:HH,OE:OE,OX:OX,OG:OG,OH:OH,OI:OI,OM:OM,OP:OP,ON:ON,OO:OO,OA:OA,OS:OS,OR:OR,O0:O0,OY:OY,OV:OV,OW:OW,OT:OT,PL:PL,PM:PM,PY:PY,PP:PP,PR:PR,PU:PU,PW:PW,PA:PA,PE:PE,PH:PH,PX:PX,PB:PB,PF:PF,PO:PO,PT:PT,LY:LY,PI:PI,PS:PS,QA:QA,Q2:Q2,Q1:Q1,QQ:QQ,QT:QT,QU:QU,QZ:QZ,QM:QM,QW:QW,RE:RE,RK:RK,RM:RM,SB:SB,SA:SA,S8:S8,SC:SC,SE:SE,SF:SF,S5:S5,SW:SW,SV:SV,SH:SH,S1:S1,SY:SY,SK:SK,SS:SS,SL:SL,S6:S6,S7:S7,"7S":"7Star",LE:LE,OZ:OZ,SN:SN,SO:SO,S2:S2,SI:SI,SR:SR,SP:SP,SU:SU,S3:S3,SG:SG,S0:S0,S4:S4,ST:ST,SX:SX,SZ:SZ,TR:TR,TO:TO,TA:TA,TF:TF,TB:TB,TZ:TZ,TU:TU,TG:TG,TS:TS,TV:TV,UB:UB,UC:UC,UH:UH,UM:UM,UT:UT,UR:UR,UZ:UZ,VE:VE,VI:VI,VV:VV,VB:VB,VM:VM,WI:WI,WP:WP,WE:WE$1,WF:WF,WH:WH,WO:WO,WT:WT,YJ:YJ,YA:YA,YL:YL,YN:YN,YB:YB,XS:XS,XI:XI,XV:XV,ZE:ZE,ZV:ZV},require$$6=["36","OC","PU","SK","MF","OI","OM","DD","DB","ST","BL","IV","FM","C1","C4","SA","SB","FR","WP","HA","NX","HU","VV","RE","CB","MZ","UM","FK","FX","WI","MN","M1","AH","SU","EU","EZ","UT","DT","S0","QU","YN","JB","GH","PI","SG","KD","PE","UH","S7","CW","OZ","GI","VE"],__importDefault$i=commonjsGlobal&&commonjsGlobal.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(browser,"__esModule",{value:!0});const version_1$6=version,variable_replacement_1$d=variableReplacement,user_agent_1$g=userAgent,browsers_json_1=__importDefault$i(require$$3),browser_engine_json_1=__importDefault$i(require$$4$1),available_browsers_json_1=__importDefault$i(require$$5),mobile_only_browsers_json_1=__importDefault$i(require$$6);class BrowserParser{constructor(e){this.options={versionTruncation:1},this.parse=e=>{var t={type:"",name:"",version:"",engine:"",engineVersion:""};for(const l of browsers_json_1.default){var r=user_agent_1$g.userAgentParser(l.regex,e);if(r){var o,a,i=variable_replacement_1$d.variableReplacement(l.version,r),n=version_1$6.formatVersion(i,this.options.versionTruncation),s=n&&parseFloat(version_1$6.formatVersion(i,1))||"";if(l.engine&&(t.engine=l.engine.default,l.engine&&l.engine.versions&&s))for([o,a]of Object.entries(l.engine.versions).sort(((e,t)=>parseFloat(e[0])>parseFloat(t[0])?1:-1)))parseFloat(o)<=s&&(t.engine=a||"");t.type="browser",t.name=variable_replacement_1$d.variableReplacement(l.name,r),t.version=n;break}}if(!t.engine)for(const o of browser_engine_json_1.default){let a=null;try{a=RegExp(o.regex,"i").exec(e)}catch(r){}if(a){t.engine=o.name;break}}return t.engineVersion=version_1$6.formatVersion(version_1$6.parseBrowserEngineVersion(e,t.engine),this.options.versionTruncation),t},this.options=Object.assign(Object.assign({},this.options),e)}}browser.default=BrowserParser,BrowserParser.getBrowserShortName=e=>{for(var[t,r]of Object.entries(available_browsers_json_1.default))if(r===e)return t;return""},BrowserParser.isMobileOnlyBrowser=e=>mobile_only_browsers_json_1.default.includes(BrowserParser.getBrowserShortName(e));var mobileApps={},require$$0$e=[{regex:"AndroidDownloadManager(?:[ /]([\\d\\.]+))?",name:"AndroidDownloadManager",version:"$1"},{regex:"(?:Apple)?News(?:[ /][\\d\\.]+)? Version(?:[ /]([\\d\\.]+))?",name:"Apple News",version:"$1"},{regex:"bPod",name:"bPod",version:""},{regex:"MessengerLiteForiOS.(?:FBAV)(?:[ /]([\\d\\.]+))?",name:"Facebook Messenger Lite",version:"$1"},{regex:"(?:MessengerForiOS|MESSENGER).(?:FBAV)(?:[ /]([\\d\\.]+))?",name:"Facebook Messenger",version:"$1"},{regex:"(?:FBAV|com.facebook.katana)(?:[ /]([\\d\\.]+))?",name:"Facebook",version:"$1"},{regex:"(?:FBAN|FBSV|FBID|FBBV)/",name:"Facebook",version:""},{regex:"FeedR(?:/([\\d\\.]+))?",name:"FeedR",version:"$1"},{regex:"com.google.android.apps.searchlite",name:"Google Go",version:""},{regex:"com.google.android.apps.magazines",name:"Google Play Newsstand",version:""},{regex:"com.google.GooglePlus",name:"Google Plus",version:""},{regex:"MicroMessenger/([^; ]+)",name:"WeChat",version:"$1"},{regex:"WeChatShareExtensionNew/([\\d\\.]+)",name:"WeChat Share Extension",version:"$1"},{regex:"DingTalk/([0-9\\.]+)",name:"DingTalk",version:"$1"},{regex:".*__weibo__([0-9\\.]+)__",name:"Sina Weibo",version:"$1"},{regex:"Pinterest(?: for (?:Android|iOS))?(?:/([\\d\\.]+))?",name:"Pinterest",version:"$1"},{regex:"Podcatcher Deluxe",name:"Podcatcher Deluxe",version:""},{regex:"com.google.android.youtube(?:/([\\d\\.]+))?",name:"YouTube",version:"$1"},{regex:"([^/]+)/(\\d+(?:\\.\\d+)+) \\((?:iPhone|iPad); iOS [0-9\\.]+; Scale/[0-9\\.]+\\)",name:"$1",version:"$2"},{regex:"WhatsApp(?:[ /]([\\d\\.]+))?",name:"WhatsApp",version:"$1"},{regex:"Line(?:[ /]([\\d\\.]+))",name:"Line",version:"$1"},{regex:"Instacast(?:HD)?/(\\d\\.[\\d\\.abc]+) CFNetwork/([\\d\\.]+) Darwin/([\\d\\.]+)",name:"Instacast",version:"$1"},{regex:"Podcasts/([\\d\\.]+)",name:"Podcasts",version:"$1"},{regex:"Pocket Casts(?:, (?:Android|iOS) v([\\d\\.]+))?",name:"Pocket Casts",version:"$1"},{regex:"Podcat/([\\d\\.]+)",name:"Podcat",version:"$1"},{regex:"BeyondPod",name:"BeyondPod",version:null},{regex:"AntennaPod/?([\\d\\.]+)?",name:"AntennaPod",version:"$1"},{regex:"Overcast/([\\d\\.]+)",name:"Overcast",version:"$1"},{regex:"(?:CastBox|fm.castbox.audiobook.radio.podcast)/?([\\d\\.]+)?",name:"CastBox",version:"$1"},{regex:"Player FM",name:"Player FM",version:""},{regex:"Podkicker(?: Pro)?/([\\d\\.]+)",name:"Podkicker",version:"$1"},{regex:"PodcastRepublic/([\\d\\.]+)",name:"Podcast Republic",version:"$1"},{regex:"Castro/(\\d+)",name:"Castro",version:"$1"},{regex:"Castro 2 ([\\d\\.]+)/[\\d]+ Like iTunes",name:"Castro 2",version:"$1"},{regex:"Castro 2",name:"Castro 2",version:""},{regex:"DoggCatcher",name:"DoggCatcher",version:null},{regex:"PodcastAddict/v([\\d]+)",name:"Podcast & Radio Addict",version:"$1"},{regex:"Podcat(?:%202)?/([\\d]+) CFNetwork",name:"Podcat",version:"$1"},{regex:"iCatcher[^\\d]+([\\d\\.]+)",name:"iCatcher",version:"$1"},{regex:"YelpApp/([\\d\\.]+)",name:"Yelp Mobile",version:"$1"},{regex:"jp.co.yahoo.android.yjtop/([\\d\\.]+)",name:"Yahoo! Japan",version:"$1"},{regex:"RSSRadio/([\\d]+)?",name:"RSSRadio",version:"$1"},{regex:"SogouSearch Android[\\d\\.]+ version([\\d\\.]+)?",name:"SogouSearch App",version:"$1"},{regex:"NewsArticle/([\\d\\.]+)?",name:"NewsArticle App",version:"$1"},{regex:"tieba/([\\d\\.]+)?",name:"tieba",version:"$1"},{regex:"com\\.douban\\.group/([\\d\\.]+)?",name:"douban App",version:"$1"},{regex:"BingWeb/([\\d\\.]+)?",name:"BingWebApp",version:"$1"},{regex:"(?:com.google.GoogleMobile|GSA)/([\\d\\.]+)?",name:"Google Search App",version:"$1"},{regex:"Flipboard/([\\d\\.]+)?",name:"Flipboard App",version:"$1"},{regex:"Instagram[ /]([\\d\\.]+)?",name:"Instagram App",version:"$1"},{regex:"baiduboxapp/([\\d\\.]+)?",name:"Baidu Box App",version:"$1"},{regex:"Crosswalk(?!.*(?:Streamy|QwantMobile))/([\\d\\.]+)?",name:"CrosswalkApp",version:"$1"},{regex:"Twitter for iPhone[/]?([\\d\\.]+)?",name:"Twitter",version:"$1"},{regex:"Twitter/([\\d\\.]+)",name:"Twitter",version:"$1"},{regex:"TwitterAndroid[/]?([\\d\\.]+)?",name:"Twitter",version:"$1"},{regex:"TopBuzz/([\\d\\.]+)",name:"TopBuzz",version:"$1"},{regex:"Snapchat/([\\d\\.]+)",name:"Snapchat",version:"$1"},{regex:"UnityPlayer/([\\d\\.]+)",name:"UnityPlayer",version:"$1"},{regex:"UCURSOS/v([\\d\\.]+)",name:"U-Cursos",version:"$1"},{regex:"HeyTapBrowser/([\\d\\.]+)",name:"HeyTapBrowser",version:"$1"},{regex:"RobloxApp/([\\d\\.]+)",name:"Roblox",version:"$1"},{regex:"Viber/([\\d\\.]+)",name:"Viber",version:"$1"},{regex:"Siri/1",name:"Siri",version:"1.0"},{regex:"LinkedIn/([\\d\\.]+)",name:"LinkedIn",version:"$1"},{regex:"Instapaper/([\\d\\.]+)",name:"Instapaper",version:"$1"},{regex:"Keeper/([\\d\\.]+)",name:"Keeper Password Manager",version:"$1"},{regex:"Skyeng Teachers/([\\d\\.]+)",name:"Skyeng Teachers",version:"$1"},{regex:"Kik/([\\d\\.]+) \\(Android",name:"Kik",version:"$1"},{regex:"Procast/?([\\d\\.]+)?",name:"Procast",version:"$1"},{regex:"DeviantArt/([\\d\\.]+)",name:"DeviantArt",version:""},{regex:"Discord/([\\d\\.]+)",name:"Discord",version:""},{regex:"Covenant%20Eyes/([\\d\\.]+)",name:"Covenant Eyes",version:"$1"},{regex:"HP%20Smart/([\\d\\.]+)",name:"HP Smart",version:""},{regex:"Bitsboard/([\\d\\.]+)",name:"Bitsboard",version:"$1"},{regex:"Betbull/([\\d\\.]+)",name:"BetBull",version:""},{regex:"U-Cursos/([\\d\\.]+)",name:"U-Cursos",version:""},{regex:"1PasswordThumbs/([\\d\\.]+)",name:"1Password",version:"$1"},{regex:"(?:Microsoft Office )?(Access|Excel|OneDrive for Business|OneNote|PowerPoint|Project|Publisher|Visio|Word)[ /]([\\d\\.]+)",name:"Microsoft Office $1",version:"$2"},{regex:"OneDriveiOSApp/([\\d\\.]+)",name:"Microsoft OneDrive",version:"$1"},{regex:"Microsoft Office Mobile/([\\d\\.]+)",name:"Microsoft Office Mobile",version:"$1"},{regex:"OC/([\\d\\.]+) \\(Skype for Business\\)",name:"Skype for Business",version:"$1"},{regex:"TikTok[/ ](\\d+\\.(?:[\\.\\d]+))?",name:"TikTok",version:"$1"},{regex:"NAVER/(\\d+[\\.\\d]+) CFNetwork",name:"Naver",version:"$1"},{regex:"Copied/(\\d+[\\.\\d]+) CFNetwork",name:"Copied",version:""},{regex:"Pic%20Collage/(\\d+[\\.\\d]+) CFNetwork",name:"Pic Collage",version:"$1"},{regex:"Papers/(\\d+[\\.\\d]+) CFNetwork",name:"Papers",version:"$1"},{regex:"RoboForm/(\\d+[\\.\\d]+) CFNetwork",name:"RoboForm",version:""},{regex:"Slack/(\\d+[\\.\\d]+) CFNetwork",name:"Slack",version:""},{regex:"KAKAOTALK (\\d+\\.(?:[\\.\\d]+))?",name:"KakaoTalk",version:"$1"},{regex:"ShopeeVN/([\\d\\.]+)",name:"Shopee",version:"$1"},{regex:"SPORT1/([\\d\\.]+)",name:"SPORT1",version:""},{regex:"Clovia/([\\d\\.]+)",name:"Clovia",version:"$1"},{regex:"ShowMe/([\\d\\.]+)",name:"ShowMe",version:"$1"},{regex:"Wattpad/([\\d\\.]+)",name:"Wattpad",version:"$1"},{regex:"WSJ/([\\d\\.]+)",name:"The Wall Street Journal",version:""},{regex:"WH%20Questions/([\\d\\.]+)",name:"WH Questions",version:"$1"},{regex:"whisper/([\\d\\.]+)",name:"Whisper",version:""},{regex:"Opal/([\\d\\.]+)",name:"Opal Travel",version:"$1"},{regex:"Zalo/([\\d\\.]+)",name:"Zalo",version:"$1"},{regex:"Yandex/([\\d\\.]+)",name:"Yandex",version:""},{regex:"Zoho%20Chat/([\\d\\.]+)",name:"Zoho Chat",version:"$1"},{regex:"Thunder/(\\d+[\\.\\d]+)",name:"Thunder",version:"$1"},{regex:"CGNBrowser/(\\d+[\\.\\d]+)",name:"CGN",version:"$1"},{regex:"Podbean/.+App (\\d+[\\.\\d]+)",name:"Podbean",version:"$1"},{regex:"AlexaMediaPlayer/(\\d+[\\.\\d]+)",name:"Alexa Media Player",version:"$1"},{regex:"TuneIn Radio Pro(?:[^/]+)?/(\\d+[\\.\\d]+)",name:"TuneIn Radio Pro",version:"$1"},{regex:"TuneIn Radio(?:[^/]+)?/(\\d+[\\.\\d]+)",name:"TuneIn Radio",version:"$1"},{regex:"Podcaster/(\\d+[\\.\\d]+)",name:"Podcaster",version:"$1"},{regex:"Swoot/(\\d+[\\.\\d]+)",name:"Swoot",version:"$1"},{regex:"RadioPublic/android-(\\d+[\\.\\d]+)",name:"RadioPublic",version:"$1"},{regex:"Podimo/(\\d+[\\.\\d]+)",name:"Podimo",version:"$1"},{regex:"com.evolve.podcast/(\\d+[\\.\\d]+)",name:"Evolve Podcast",version:"$1"},{regex:" Rocket.Chat\\+?/(\\d+[\\.\\d]+)",name:"Rocket Chat",version:"$1"},{regex:"^Pandora Audio.+Android",name:"Pandora",version:""},{regex:"^NPROneAndroid",name:"NPR One",version:""},{regex:"^WirtschaftsWoche-iOS-(\\d+[\\.\\d]+)",name:"Wirtschafts Woche",version:"$1"},{regex:"^Outlook-iOS/.+\\((\\d+[\\.\\d]+)\\)$",name:"Microsoft Outlook",version:"$1"},{regex:"^TVirl/(\\d+[\\.\\d]+)",name:"TVirl",version:"$1"},{regex:"2?chMate/(\\d+[\\.\\d]+)",name:"ChMate",version:"$1"},{regex:"2tch/(\\d+[\\.\\d]+)",name:"2tch",version:"$1"},{regex:"Ciisaa/(\\d+[\\.\\d]+)",name:"Ciisaa",version:"$1"},{regex:"BB2C (\\d+[\\.\\d]+)",name:"BB2C",version:"$1"},{regex:"twinkle/(\\d+[\\.\\d]+)",name:"twinkle",version:"$1"},{regex:"JaneStyle_iOS/(\\d+[\\.\\d]+)",name:"JaneStyle",version:"$1"}],__importDefault$h=commonjsGlobal&&commonjsGlobal.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(mobileApps,"__esModule",{value:!0});const mobile_apps_json_1=__importDefault$h(require$$0$e),version_1$5=version,variable_replacement_1$c=variableReplacement,user_agent_1$f=userAgent;class MobileAppParser{constructor(e){this.options={versionTruncation:1},this.parse=e=>{var t={type:"",name:"",version:""};for(const o of mobile_apps_json_1.default){var r=user_agent_1$f.userAgentParser(o.regex,e);if(r){t.type="mobile app",t.name=variable_replacement_1$c.variableReplacement(o.name,r),t.version=version_1$5.formatVersion(variable_replacement_1$c.variableReplacement(o.version,r),this.options.versionTruncation);break}}return t},this.options=Object.assign(Object.assign({},this.options),e)}}mobileApps.default=MobileAppParser;var feedReaders={},require$$0$d=[{regex:"Akregator(?:/(\\d+[\\.\\d]+))?",name:"Akregator",version:"$1",url:"http://userbase.kde.org/Akregator",type:"Feed Reader"},{regex:"Apple-PubSub(?:/(\\d+[\\.\\d]+))?",name:"Apple PubSub",version:"$1",url:"https://developer.apple.com/library/mac/documentation/Darwin/Reference/ManPages/man1/pubsub.1.html",type:"Feed Reader"},{regex:"BashPodder",name:"BashPodder",version:"",url:"http://lincgeek.org/bashpodder/",type:"Feed Reader"},{regex:"Breaker/v([\\d\\.]+)",name:"Breaker",version:"$1",url:"https://www.breaker.audio/",type:"Feed Reader App"},{regex:"Downcast/([\\d\\.]+)",name:"Downcast",version:"$1",url:"http://downcastapp.com/",type:"Feed Reader App"},{regex:"FeedDemon(?:/(\\d+[\\.\\d]+))?",name:"FeedDemon",version:"$1",url:"http://www.feeddemon.com/",type:"Feed Reader"},{regex:"Feeddler(?:RSS|PRO)(?:[/ ](\\d+[\\.\\d]+))?",name:"Feeddler RSS Reader",version:"$1",url:"http://www.chebinliu.com/projects/iphone/feeddler-rss-reader/",type:"Feed Reader App"},{regex:"QuiteRSS(?:[/ ](\\d+[\\.\\d]+))?",name:"QuiteRSS",version:"$1",url:"https://quiterss.org",type:"Feed Reader App"},{regex:"gPodder/([\\d\\.]+)",name:"gPodder",version:"$1",url:"http://gpodder.org/",type:"Feed Reader App"},{regex:"JetBrains Omea Reader(?:[/ ](\\d+[\\.\\d]+))?",name:"JetBrains Omea Reader",version:"$1",url:"http://www.jetbrains.com/omea/reader/",type:"Feed Reader"},{regex:"Liferea(?:[/ ](\\d+[\\.\\d]+))?",name:"Liferea",version:"$1",url:"http://liferea.sf.net/",type:"Feed Reader"},{regex:"(?:NetNewsWire|Evergreen.+MacOS)(?:[/ ](\\d+[\\.\\d]+))?",name:"NetNewsWire",version:"$1",url:"http://netnewswireapp.com/",type:"Feed Reader"},{regex:"NewsBlur (?:iPhone|iPad) App(?: v(\\d+[\\.\\d]+))?",name:"NewsBlur Mobile App",version:"$1",url:"http://www.newsblur.com",type:"Feed Reader App"},{regex:"NewsBlur(?:/(\\d+[\\.\\d]+))",name:"NewsBlur",version:"$1",url:"http://www.newsblur.com",type:"Feed Reader"},{regex:"newsbeuter(?:[/ ](\\d+[\\.\\d]+))?",name:"Newsbeuter",version:"$1",url:"http://www.newsbeuter.org/",type:"Feed Reader"},{regex:"PritTorrent/([\\d\\.]+)",name:"PritTorrent",version:"$1",url:"http://bitlove.org",type:"Feed Reader"},{regex:"Pulp[/ ](\\d+[\\.\\d]+)",name:"Pulp",version:"$1",url:"http://www.acrylicapps.com/pulp/",type:"Feed Reader App"},{regex:"ReadKit(?:[/ ](\\d+[\\.\\d]+))?",name:"ReadKit",version:"$1",url:"http://readkitapp.com/",type:"Feed Reader App"},{regex:"Reeder[/ ](\\d+[\\.\\d]+)",name:"Reeder",version:"$1",url:"http://reederapp.com/",type:"Feed Reader App"},{regex:"RSSBandit(?:[/ ](\\d+[\\.\\d]+))?",name:"RSS Bandit",version:"$1",url:"http://www.rssbandit.org)",type:"Feed Reader"},{regex:"RSS Junkie(?:[/ ](\\d+[\\.\\d]+))?",name:"RSS Junkie",version:"$1",url:"https://play.google.com/store/apps/details?id=com.bitpowder.rssjunkie",type:"Feed Reader App"},{regex:"RSSOwl(?:[/ ](\\d+[\\.\\d]+))?",name:"RSSOwl",version:"$1",url:"http://www.rssowl.org/",type:"Feed Reader"},{regex:"Stringer",name:"Stringer",version:"",url:"https://github.com/swanson/stringer",type:"Feed Reader"}],__importDefault$g=commonjsGlobal&&commonjsGlobal.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(feedReaders,"__esModule",{value:!0});const feed_readers_json_1=__importDefault$g(require$$0$d),version_1$4=version,variable_replacement_1$b=variableReplacement,user_agent_1$e=userAgent;class FeedReaderParser{constructor(e){this.options={versionTruncation:1},this.parse=e=>{var t={type:"",name:"",version:"",url:""};for(const o of feed_readers_json_1.default){var r=user_agent_1$e.userAgentParser(o.regex,e);if(r){t.type="feed reader",t.name=variable_replacement_1$b.variableReplacement(o.name,r),t.version=version_1$4.formatVersion(variable_replacement_1$b.variableReplacement(o.version,r),this.options.versionTruncation),t.url=o.url;break}}return t},this.options=Object.assign(Object.assign({},this.options),e)}}feedReaders.default=FeedReaderParser;var libraries={},require$$0$c=[{regex:"Wget(?:/(\\d+[\\.\\d]+))?",name:"Wget",version:"$1"},{regex:"Guzzle(?:/(\\d+[\\.\\d]+))?",name:"Guzzle (PHP HTTP Client)",version:"$1"},{regex:"(?:lib)?curl(?:/(\\d+[\\.\\d]+))?",name:"curl",version:"$1"},{regex:"python-requests(?:/(\\d+[\\.\\d]+))?",name:"Python Requests",version:"$1"},{regex:"Python-urllib(?:/?(\\d+[\\.\\d]+))?",name:"Python urllib",version:"$1"},{regex:"Java(?:/?(\\d+[\\.\\d]+))?",name:"Java",version:"$1"},{regex:"(?:perlclient|libwww-perl)(?:/?(\\d+[\\.\\d]+))?",name:"Perl",version:"$1"},{regex:"okhttp/([\\d\\.]+)",name:"OkHttp",version:"$1"},{regex:"HTTP_Request2(?:/(\\d+[\\.\\d]+))?",name:"HTTP_Request2",version:"$1"},{regex:"HTTP_Request2(?:/(\\d+[\\.\\d]+))?",name:"HTTP_Request2",version:"$1",url:"http://pear.php.net/package/http_request2"},{regex:"Mechanize(?:/(\\d+[\\.\\d]+))?",name:"Mechanize",version:"$1",url:"http://github.com/sparklemotion/mechanize/"},{regex:"aiohttp(?:/(\\d+[\\.\\d]+))?",name:"aiohttp",version:"$1"},{regex:"Google-HTTP-Java-Client(?:/(\\d+[\\.\\d\\w-]+))?",name:"Google HTTP Java Client",version:"$1"},{regex:"WWW-Mechanize(?:/(\\d+[\\.\\d]+))?",name:"WWW-Mechanize",version:"$1"},{regex:"Faraday(?: v(\\d+[\\.\\d]+))?",name:"Faraday",version:"$1"},{regex:"(?:Go-http-client|Go )/?(?:(\\d+[\\.\\d]+))?(?: package http)?",name:"Go-http-client",version:"$1"},{regex:"urlgrabber(?:/(\\d+[\\.\\d]+))?",name:"urlgrabber (yum)",version:"$1"},{regex:"libdnf(?:/(\\d+[\\.\\d]+))?",name:"libdnf",version:"$1"},{regex:"HTTPie(?:/(\\d+[\\.\\d]+))?",name:"HTTPie",version:"$1"},{regex:"rest-client/(\\d+[\\.\\d]+).*ruby",name:"REST Client for Ruby",version:"$1"},{regex:"RestSharp/(\\d+[\\.\\d]+)",name:"RestSharp",version:"$1",url:"http://restsharp.org/"},{regex:"scalaj-http/(\\d+[\\.\\d]+)",name:"ScalaJ HTTP",version:"$1",url:"https://github.com/scalaj/scalaj-http"},{regex:"REST::Client/(\\d+)",name:"Perl REST::Client",version:"$1",url:"https://metacpan.org/pod/REST::Client"},{regex:"node-fetch/(\\d+[\\.\\d]+)",name:"Node Fetch",version:"$1",url:"https://github.com/node-fetch/node-fetch"},{regex:"ReactorNetty/(\\d+[\\.\\d]+)",name:"ReactorNetty",version:"$1",url:"https://github.com/reactor/reactor-netty"},{regex:"PostmanRuntime(?:/(\\d+[\\.\\d]+))?",name:"Postman Desktop",version:"$1",url:"https://github.com/postmanlabs/postman-runtime"},{regex:"Jakarta Commons-HttpClient/([\\.\\d]+)",name:"Jakarta Commons HttpClient",version:"$1",url:"https://hc.apache.org/httpclient-3.x"},{regex:"WinHttp.WinHttpRequest.+([\\.\\d]+)",name:"WinHttp WinHttpRequest",version:"$1"},{regex:"Embarcadero URI Client/([\\.\\d]+)",name:"Embarcadero URI Client",version:"$1"},{regex:"Mikrotik/([\\.\\d]+)",name:"Mikrotik Fetch",version:"$1"},{regex:"GRequests(?:/(\\d+[\\.\\d]+))?",name:"GRequests",version:"$1"},{regex:"akka-http/([\\.\\d]+)",name:"Akka HTTP",version:"$1"}],__importDefault$f=commonjsGlobal&&commonjsGlobal.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(libraries,"__esModule",{value:!0});const libraries_json_1=__importDefault$f(require$$0$c),version_1$3=version,variable_replacement_1$a=variableReplacement,user_agent_1$d=userAgent;class LibraryParser{constructor(e){this.options={versionTruncation:1},this.parse=e=>{var t={type:"",name:"",version:"",url:""};for(const o of libraries_json_1.default){var r=user_agent_1$d.userAgentParser(o.regex,e);if(r){t.type="library",t.name=variable_replacement_1$a.variableReplacement(o.name,r),t.version=version_1$3.formatVersion(variable_replacement_1$a.variableReplacement(o.version,r),this.options.versionTruncation),t.url=o.url||"";break}}return t},this.options=Object.assign(Object.assign({},this.options),e)}}libraries.default=LibraryParser;var mediaPlayers={},require$$0$b=[{regex:"Audacious(?:[ /]([\\d\\.]+))?",name:"Audacious",version:"$1"},{regex:"Banshee(?:[ /]([\\d\\.]+))?",name:"Banshee",version:"$1"},{regex:"Boxee(?:[ /]([\\d\\.]+))?",name:"Boxee",version:"$1"},{regex:"Clementine(?:[ /]([\\d\\.]+))?",name:"Clementine",version:"$1"},{regex:"Deezer(?:/([\\d\\.]+))?",name:"Deezer",version:"$1"},{regex:"iTunes(?:-iPhone|-iPad)?(?:/([\\d\\.]+))?",name:"iTunes",version:"$1"},{regex:"FlyCast(?:/([\\d\\.]+))?",name:"FlyCast",version:"$1"},{regex:"foobar2000(?:/([\\d\\.]+))?",name:"Foobar2000",version:"$1"},{regex:"MediaMonkey(?:[ /](\\d+[\\.\\d]+))?",name:"MediaMonkey",version:"$1"},{regex:"Miro(?:/(\\d+[\\.\\d]+))?",name:"Miro",version:"$1"},{regex:"NexPlayer(?:/(\\d+[\\.\\d]+))?",name:"NexPlayer",version:"$1"},{regex:"Nightingale(?:/([\\d\\.]+))?",name:"Nightingale",version:"$1"},{regex:"QuickTime(?:(?:(?:.+qtver=)|(?:(?: E-)?[\\./]))([\\d\\.]+))?",name:"QuickTime",version:"$1"},{regex:"Songbird(?:/([\\d\\.]+))?",name:"Songbird",version:"$1"},{regex:"SubStream(?:/([\\d\\.]+))?",name:"SubStream",version:"$1"},{regex:"Sonos/([\\d\\.]+)?",name:"SONOS",version:"$1"},{regex:"(?:Lib)?VLC(?:/([\\d\\.]+))?",name:"VLC",version:"$1"},{regex:"Winamp(?:MPEG)?(?:/(\\d+[\\.\\d]+))?",name:"Winamp",version:"$1"},{regex:"(?:Windows-Media-Player|NSPlayer)(?:/(\\d+[\\.\\d]+))?",name:"Windows Media Player",version:"$1"},{regex:"XBMC(?:/([\\d\\.]+))?",name:"XBMC",version:"$1"},{regex:"Kodi(?:/([\\d\\.]+))?",name:"Kodi",version:"$1"},{regex:"stagefright(?:/([\\d\\.]+))?",name:"Stagefright",version:"$1"},{regex:"GoogleChirp(?:/(\\d+[\\.\\d]+))?",name:"Google Podcasts",version:"$1"},{regex:"Music Player Daemon (?:(\\d+[\\.\\d]+))?",name:"Music Player Daemon",version:"$1"},{regex:"mpv (?:(\\d+[\\.\\d]+))?",name:"mpv",version:"$1"}],__importDefault$e=commonjsGlobal&&commonjsGlobal.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(mediaPlayers,"__esModule",{value:!0});const mediaplayers_json_1=__importDefault$e(require$$0$b),version_1$2=version,variable_replacement_1$9=variableReplacement,user_agent_1$c=userAgent;class MediaPlayerParser{constructor(e){this.options={versionTruncation:1},this.parse=e=>{var t={type:"",name:"",version:""};for(const o of mediaplayers_json_1.default){var r=user_agent_1$c.userAgentParser(o.regex,e);if(r){t.type="media player",t.name=variable_replacement_1$9.variableReplacement(o.name,r),t.version=version_1$2.formatVersion(variable_replacement_1$9.variableReplacement(o.version,r),this.options.versionTruncation);break}}return t},this.options=Object.assign(Object.assign({},this.options),e)}}mediaPlayers.default=MediaPlayerParser;var personalInformationManagers={},require$$0$a=[{regex:"Outlook-Express(?:/(\\d+[\\.\\d]+))?",name:"Outlook Express",version:"$1"},{regex:"Microsoft Outlook(?:[/ ](\\d+[\\.\\d]+))?",name:"Microsoft Outlook",version:"$1"},{regex:"(?:Thunderbird|Icedove|Shredder)(?:/(\\d+[\\.\\d]+))?",name:"Thunderbird",version:"$1"},{regex:"Airmail(?: (\\d+[\\.\\d]+))?",name:"Airmail",version:"$1"},{regex:"Lotus-Notes(?:/(\\d+[\\.\\d]+))?",name:"Lotus Notes",version:"$1"},{regex:"Barca(?:Pro)?(?:[/ ](\\d+[\\.\\d]+))?",name:"Barca",version:"$1"},{regex:"Postbox(?:[/ ](\\d+[\\.\\d]+))?",name:"Postbox",version:"$1"},{regex:"MailBar(?:[/ ](\\d+[\\.\\d]+))?",name:"MailBar",version:"$1"},{regex:"The Bat!(?: Voyager)?(?:[/ ](\\d+[\\.\\d]+))?",name:"The Bat!",version:"$1"},{regex:"DAVdroid(?:/(\\d+[\\.\\d]+))?",name:"DAVdroid",version:"$1"},{regex:"(?:SeaMonkey|Iceape)(?:/(\\d+[\\.\\d]+))?",name:"SeaMonkey",version:"$1"},{regex:"Live5ch/(\\d+[\\.\\d]+)",name:"Live5ch",version:"$1"},{regex:"JaneView/",name:"JaneView",version:""},{regex:"BathyScaphe/",name:"BathyScaphe",version:""}],__importDefault$d=commonjsGlobal&&commonjsGlobal.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(personalInformationManagers,"__esModule",{value:!0});const pim_json_1=__importDefault$d(require$$0$a),version_1$1=version,variable_replacement_1$8=variableReplacement,user_agent_1$b=userAgent;class PersonalInformationManagerParser{constructor(e){this.options={versionTruncation:1},this.parse=e=>{var t={type:"",name:"",version:""};for(const o of pim_json_1.default){var r=user_agent_1$b.userAgentParser(o.regex,e);if(r){t.type="personal information manager",t.name=variable_replacement_1$8.variableReplacement(o.name,r),t.version=version_1$1.formatVersion(variable_replacement_1$8.variableReplacement(o.version,r),this.options.versionTruncation);break}}return t},this.options=Object.assign(Object.assign({},this.options),e)}}personalInformationManagers.default=PersonalInformationManagerParser;var __importDefault$c=commonjsGlobal&&commonjsGlobal.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(client,"__esModule",{value:!0});const browser_1$1=__importDefault$c(browser),mobile_apps_1=__importDefault$c(mobileApps),feed_readers_1=__importDefault$c(feedReaders),libraries_1=__importDefault$c(libraries),media_players_1=__importDefault$c(mediaPlayers),personal_information_managers_1=__importDefault$c(personalInformationManagers),clientParsers=[feed_readers_1.default,mobile_apps_1.default,media_players_1.default,personal_information_managers_1.default,browser_1$1.default,libraries_1.default];let ClientParser$1=class{constructor(e){this.options={versionTruncation:1},this.parse=e=>{for(const r of clientParsers){var t=new r(this.options).parse(e);if(""!==t.type)return t}return null},this.options=Object.assign(Object.assign({},this.options),e)}};client.default=ClientParser$1;var device={},cameras={},Nikon={regex:"Coolpix S800c",device:"camera",model:"Coolpix S800c"},Samsung$4={regex:"EK-G[CN][0-9]{3}",device:"camera",models:[{regex:"EK-GN120",model:"Galaxy NX"},{regex:"EK-GC100",model:"Galaxy Camera"},{regex:"EK-GC110",model:"Galaxy Camera WiFi only"},{regex:"EK-GC200",model:"Galaxy Camera 2"},{regex:"EK-GC([0-9]{3})",model:"Galaxy Camera $1"}]},require$$0$9={Nikon:Nikon,Samsung:Samsung$4},__importDefault$b=commonjsGlobal&&commonjsGlobal.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(cameras,"__esModule",{value:!0});const cameras_json_1=__importDefault$b(require$$0$9),variable_replacement_1$7=variableReplacement,user_agent_1$a=userAgent;class CameraParser{constructor(){this.parse=e=>{var t,r,o={type:"",brand:"",model:""};for([t,r]of Object.entries(cameras_json_1.default)){var a=user_agent_1$a.userAgentParser(r.regex,e);if(a){if(o.type="camera",o.brand=t,"model"in r&&r.model)o.model=variable_replacement_1$7.variableReplacement(r.model,a).trim();else if("models"in r&&r.models)for(const t of r.models){var i=user_agent_1$a.userAgentParser(t.regex,e);if(i){o.model=variable_replacement_1$7.variableReplacement(t.model,i).trim();break}}break}}return o}}}cameras.default=CameraParser;var mobiles={},Ace={regex:"(?:BUZZ [12]|BUZZ 2|CLEVER 1|URBAN 1(?: Pro)?)(?:[);/ ]|$)",device:"smartphone",models:[{regex:"BUZZ ([12]) Lite",model:"Buzz $1 Lite"},{regex:"BUZZ ([12]) Plus",model:"Buzz $1 Plus"},{regex:"BUZZ ([12])",model:"Buzz $1"},{regex:"CLEVER 1",model:"Clever 1"},{regex:"URBAN 1 Pro",model:"Urban 1 Pro"},{regex:"URBAN 1",model:"Urban 1"}]},SFR={regex:"StarShine|StarTrail|STARADDICT|StarText|StarNaute|StarXtrem|StarTab",device:"smartphone",models:[{regex:"StarXtrem II(?:[);/ ]|$)",model:"StarXtrem 2"},{regex:"StarXtrem ?([3-6])(?:[);/ ]|$)",model:"StarXtrem $1"},{regex:"StarXtrem(?:[);/ ]|$)",model:"StarXtrem"},{regex:"StarTrail III(?:[);/ ]|$)",model:"StarTrail 3"},{regex:"StarTrail II(?:[);/ ]|$)",model:"StarTrail 2"},{regex:"StarTrail[ _]?([1-9])[ _]([34])G(?:[);/ ]|$)",model:"StarTrail $1 $2G"},{regex:"StarTrail[ _]?([1-9])(?:[);/ ]|$)",model:"StarTrail $1"},{regex:"StarTrail(?:[);/ ]|$)",model:"StarTrail"},{regex:"StarShine II(?:[);/ ]|$)",model:"StarShine 2"},{regex:"StarShine(?:[);/ ]|$)",model:"StarShine"},{regex:"STARADDICT 4(?:[);/ ]|$)",model:"Staraddict 4"},{regex:"STARADDICT III(?:[);/ ]|$)",model:"Staraddict 3"},{regex:"STARADDICT II Plus(?:[);/ ]|$)",model:"Staraddict 2 Plus"},{regex:"STARADDICT II(?:[);/ ]|$)",model:"Staraddict 2"},{regex:"STARADDICT(?:[);/ ]|$)",model:"Staraddict"},{regex:"StarText II(?:[);/ ]|$)",model:"StarText 2"},{regex:"StarText(?:[);/ ]|$)",model:"StarText"},{regex:"StarNaute II(?:[);/ ]|$)",model:"StarNaute 2"},{regex:"StarNaute(?:[);/ ]|$)",model:"StarNaute"},{regex:"StarTab",model:"StarTab",device:"tablet"},{regex:"((?:StarShine|StarTrail|STARADDICT|StarText|StarNaute|StarXtrem)[^;/]*) Build",model:"$1"}]},HTC={regex:"HTC|Sprint (?:APA|ATP)|ADR(?!910L)[a-z0-9]+|NexusHD2|Amaze[ _]4G(?:[);/ ]|$)|(Desire|Sensation|Evo ?3D|IncredibleS|Wildfire|Butterfly)[ _]?([^;/)]+)(?: Build|\\))|(Amaze[ _]4G|(?<!BLU LIFE )One ?[XELSV\\+]+)(?:[);/ ]|$)|SPV E6[05]0|(One M8|One Mini 2|X525a|PG86100|PC36100|XV6975|PJ83100|2PYB2|2PS64|2PZC5|0PJA10|0PJA2|HTV33|0PM92|0PCV1|601HT|0PAJ5|HTL2[23]|HTV3[12]|2PQ93|X2-HT|EXODUS 1|ISW13HT)(?:[);/ ]|$)",device:"smartphone",models:[{regex:"2PZC5(?:[);/ ]|$)",model:"U11"},{regex:"XV6975(?:[);/ ]|$)",model:"Imagio"},{regex:"PG86100(?:[);/ ]|$)",model:"Evo 3G"},{regex:"PC36100(?:[);/ ]|$)",model:"Evo 4G"},{regex:"(?:HTV33|601HT)(?:[);/ ]|$)",model:"U11"},{regex:"(?:801e|802[wdt])",model:"One"},{regex:"PJ83100(?:[);/ ]|$)",model:"One X"},{regex:"One Mini 2(?:[);/ ]|$)",model:"One Mini 2"},{regex:"X2-HT(?:[);/ ]|$)",model:"One X2"},{regex:"ISW13HT(?:[);/ ]|$)",model:"J"},{regex:"HTL22(?:[);/ ]|$)",model:"J One"},{regex:"HTL23(?:[);/ ]|$)",model:"J Butterfly"},{regex:"(?:0PJA2|0PJA10)(?:[);/ ]|$)",model:"One M9"},{regex:"X525a(?:[);/ ]|$)",model:"One X+"},{regex:"2PQ93(?:[);/ ]|$)",model:"One A9"},{regex:"ADR6300",model:"Droid Incredible"},{regex:"ADR6400L",model:"ThunderBolt"},{regex:"ADR6410LRA",model:"Droid Incredible 3"},{regex:"SPV E600",model:"Excalibur"},{regex:"SPV E650",model:"Vox"},{regex:"2PYB2",model:"Bolt"},{regex:"2PS64",model:"10"},{regex:"0PM92(?:[);/ ]|$)",model:"Desire 626S"},{regex:"0PCV1(?:[);/ ]|$)",model:"Desire 510"},{regex:"608t(?:[);/ ]|$)",model:"Desire 608t"},{regex:"EXODUS 1(?:[);/ ]|$)",model:"Exodus 1"},{regex:"NexusHD2",model:"HD2"},{regex:"HTC[ _\\-]P715a",device:"tablet",model:"P715a"},{regex:"HTC[ _\\-]Flyer Build",device:"tablet",model:"Flyer"},{regex:"HTC[ _\\-]Flyer[ _\\-]([\\w]{1,5})",device:"tablet",model:"Flyer $1"},{regex:"HTC[ _\\-]One[ _\\-]max(?:[);/ ]|$)",device:"phablet",model:"One max"},{regex:"HTC[ _]([^/;]+) [0-9]+(?:\\.[0-9]+)+ Build",model:"$1"},{regex:"HTC[ _]([^/;]+) Build",model:"$1"},{regex:"HTC[ _]([a-z0-9]+[ _\\-]?(?:[a-z0-9_+\\-])*)",model:"$1"},{regex:"USCCHTC(\\d+)",model:"$1"},{regex:"Sprint (ATP.*) Build",device:"tablet",model:"$1 (Sprint)"},{regex:"Sprint (APA.*) Build",model:"$1 (Sprint)"},{regex:"(?:HTC-)?HTC(?:[\\-/ ])?([a-z0-9\\-_]+)",model:"$1"},{regex:"HTC;(?: )?([a-z0-9 ]+)",model:"$1"},{regex:"(Desire|Sensation|Evo ?3D|IncredibleS|Wildfire|Butterfly)[ _]?([^;/)]+)(?: Build|\\))",model:"$1 $2"},{regex:"(Amaze[ _]4G|One ?[XELSV\\+]*) Build",model:"$1"},{regex:"(ADR[^;/]+) Build",model:"$1"},{regex:"(ADR[a-z0-9]+)",model:"$1"},{regex:"(One M8)",model:"$1"},{regex:"0PAJ5(?:[);/ ]|$)",model:"One E8"},{regex:"HTV32(?:[);/ ]|$)",model:"10"},{regex:"HTV31(?:[);/ ]|$)",model:"J Butterfly"}]},Microsoft$2={regex:"KIN\\.(One|Two)|RM-(?:1010|1031|106[57]|107[23467]|1089|109[02]|1096|1099|1109|111[348]|1127|1141|115[24]|994)|Microsoft; Lumia|Lumia (?:1530|1320|950|850|650|640|550|535|435)|Corporation/Surface",device:"smartphone",models:[{regex:"KIN\\.(One|Two)",device:"feature phone",model:"Kin $1"},{regex:"RM-1099|Lumia 430",model:"Lumia 430"},{regex:"RM-1114|Lumia 435",model:"Lumia 435"},{regex:"RM-1031|Lumia 532",model:"Lumia 532"},{regex:"Lumia 535 Dual SIM",model:"Lumia 535 Dual SIM"},{regex:"RM-109[02]|RM-1089|Lumia 535",model:"Lumia 535"},{regex:"RM-1141|Lumia 540",model:"Lumia 540"},{regex:"RM-1127|Lumia 550",model:"Lumia 550"},{regex:"RM-1010",model:"Lumia 638"},{regex:"Lumia 640 XL LTE",model:"Lumia 640 XL LTE",device:"phablet"},{regex:"RM-106[57]|RM-1096|Lumia 640 XL",model:"Lumia 640 XL",device:"phablet"},{regex:"Lumia 640 LTE Dual SIM",model:"Lumia 640 LTE Dual SIM"},{regex:"Lumia 640 LTE",model:"Lumia 640 LTE"},{regex:"Lumia 640 Dual SIM",model:"Lumia 640 Dual SIM"},{regex:"RM-1109|RM-1113|RM-107[23467]|Lumia 640",model:"Lumia 640"},{regex:"RM-1154|Lumia 650",model:"Lumia 650"},{regex:"RM-1152",model:"Lumia 650 SS"},{regex:"Lumia 850",model:"Lumia 850"},{regex:"Lumia 950 XL Dual SIM",model:"Lumia 950 XL Dual SIM",device:"phablet"},{regex:"Lumia 950 XL",model:"Lumia 950 XL",device:"phablet"},{regex:"Lumia 950 Dual SIM",model:"Lumia 950 Dual SIM"},{regex:"Lumia 950|RM-1118",model:"Lumia 950"},{regex:"RM-994|Lumia 1320",model:"Lumia 1320"},{regex:"Lumia 1530",model:"Lumia 1530"},{regex:"Surface Book 3",device:"desktop",model:"Surface Book 3"},{regex:"Surface Pro( [34])?",device:"desktop",model:"Surface Pro$1"},{regex:"Microsoft; Lumia ([^;/)]+)(?:[;/)]|$)",model:"Lumia $1"}]},Nokia={regex:"Nokia(?!Browser|Webview|; GT-I8750)|Lumia|Maemo RX|portalmmm/2\\.0 N7|portalmmm/2\\.0 NK|nok[0-9]+|Symbian.*\\s([a-z0-9]+)$|RX-51 N900|TA-[0-9]{4}|ARM; 909",device:"smartphone",models:[{regex:"TA-10(07|23|29|35)",model:"2"},{regex:"TA-10(20|28|32|38)",model:"3"},{regex:"TA-10(24|27|44|53)",model:"5"},{regex:"TA-10(00|03|21|25|33|39|54)",model:"6"},{regex:"TA-1041",model:"7"},{regex:"TA-10(04|12|52)",model:"8"},{regex:"Nokia 8\\.1",model:"8.1"},{regex:"Nokia 8 Sirocco",model:"8 Sirocco"},{regex:"Nokia 7\\.1",model:"7.1"},{regex:"Nokia 7 plus",model:"7 plus"},{regex:"Nokia 6\\.1 Plus",model:"6.1 Plus"},{regex:"Nokia 6\\.1",model:"6.1"},{regex:"Nokia 5\\.1 Plus",model:"5.1 Plus"},{regex:"Nokia 5\\.1",model:"5.1"},{regex:"Nokia 3\\.1 Plus",model:"3.1 Plus"},{regex:"Nokia 3\\.1",model:"3.1"},{regex:"Nokia 2\\.1",model:"2.1"},{regex:"Nokia 1 Plus",model:"1 Plus"},{regex:"Nokia 1",model:"1"},{regex:"RX-51 N900",model:"N900"},{regex:"(?: )?(Nokia500|nokiaasha500(?:dualsim)?)(?: Build|[_);/])",model:"Asha 500"},{regex:"Nokia5130c(?:-2)?",model:"5130 XpressMusic"},{regex:"Nokia5230",model:"Nuron"},{regex:"Nokia5233",model:"5233"},{regex:"Nokia5800d-1",model:"5800 XpressMusic"},{regex:"Nokia6210Navigator",model:"Navigator"},{regex:"Nokia8800e?",model:"Sapphire Arte"},{regex:"NOKIA-RH-17",model:"2280"},{regex:"NOKIA-RH-27",model:"6225"},{regex:"NOKIA-RH-34",model:"6585"},{regex:"NOKIA-RH-48",model:"3105"},{regex:"NOKIA-RM-11",model:"3205"},{regex:"Nokia808 PureView",model:"808 PureView"},{regex:"Nokia ?([0-9]{4})c(?:-)?",model:"$1 Classic"},{regex:"Nokia ?([0-9]{4})s(?:-)?",model:"$1 Slide"},{regex:"Nokia ?([0-9]{4})",model:"$1"},{regex:"(?: )?Nokia([235][0-9]{2})(?: Build|[_);/])",model:"Asha $1"},{regex:"Nokia([CEX]-?[0-9]{1,2}i?)-[0-9]{1,2}u?(?: Build|[_);/])",model:"$1"},{regex:"Nokia;? 520T",model:"Lumia 520T"},{regex:"RM-91[45]",model:"Lumia 520"},{regex:"RM-997|Nokia 526",model:"Lumia 526"},{regex:"RM-846",model:"Lumia 620"},{regex:"RM-97[68]",model:"Lumia 630"},{regex:"RM-97[45]",model:"Lumia 635"},{regex:"RM-1027",model:"Lumia 636"},{regex:"NOKIA;? 710",model:"Lumia 710"},{regex:"Nokia;? 720T",model:"Lumia 720T"},{regex:"RM-885",model:"Lumia 720"},{regex:"Lumia 730",model:"Lumia 730"},{regex:"RM-103[89]",model:"Lumia 735"},{regex:"Nokia;? 800C",model:"Lumia 800C"},{regex:"Nokia;? 800",model:"Lumia 800"},{regex:"Nokia 820",model:"Lumia 820"},{regex:"RM-984",model:"Lumia 830"},{regex:"Nokia;? 900",model:"Lumia 900"},{regex:"(RM-82[12]|Nokia;? 920)(?: Build|[_);/])",model:"Lumia 920"},{regex:"(RM-89[23]|RM-910|Nokia;? 925)(?: Build|[a_);/])",model:"Lumia 925"},{regex:"Lumia 929",model:"Lumia Icon"},{regex:"RM-1045",model:"Lumia 930"},{regex:"(ARM; 909|NOKIA;? 909|NOKIA; id300)(?: Build|[_);/])",model:"Lumia 1020"},{regex:"NOKIA;? 1520\\.1",model:"Lumia 1520.1"},{regex:"Nokia ([A-Za-z0-9\\. ]+)(?: Build|\\))",model:"$1"},{regex:"Nokia(N[0-9]+)",model:"$1"},{regex:"Nokia-([a-z0-9]+)",model:"N$1"},{regex:"NOKIA; (?!Qt;)([a-z0-9\\- ]+)",model:"$1"},{regex:"NOKIA[ _]?([a-z0-9\\-]+)",model:"$1"},{regex:"NOKIA/([a-z0-9 ]+)",model:"$1"},{regex:"(Lumia [a-z0-9\\-]+ XL)",device:"phablet",model:"$1"},{regex:"(Lumia [a-z0-9\\-]+)",model:"$1"},{regex:"Maemo RX-51 ([a-z0-9]+)",model:"$1"},{regex:"Maemo RX-34",model:"N800"},{regex:"NokiaInternal|Nokia-WAP-Toolkit|Nokia-MIT-Browser|Nokia Mobile|Nokia Browser|Nokia/Series",model:""},{regex:"portalmmm/2\\.0 (N7[37]|NK[a-z0-9]+)",model:"$1"},{regex:"nok([0-9]+)",model:"$1"},{regex:"Symbian.*\\s([a-z0-9]+)$",device:"feature phone",model:"$1"}]},CnM={regex:"CnM",device:"tablet",models:[{regex:"CnM[ \\-](?:Touchpad|TP)[ \\-]([0-9\\.]+)",model:"Touchpad $1"}]},RIM={regex:"BB10;|BlackBerry|rim[0-9]+|PlayBook|STV100-[1234]|STH100-[12]|BBA100-[12]|BBB100-[1234567]|BBD100-[126]|BB[EF]100-[123456789]|BB[CGH]100-1",device:"smartphone",models:[{regex:"BBA100-[12]",model:"BlackBerry DTEK60"},{regex:"BBB100-[1234567]",model:"KEYone"},{regex:"BBC100-1",model:"Aurora"},{regex:"BBD100-[126]",model:"Motion"},{regex:"BBE100-[123456789]",model:"KEY2 LE"},{regex:"BBF100-[1234567]",model:"KEY2"},{regex:"BBF100-8",model:"KEY2 Silver"},{regex:"BBF100-9",model:"KEY2 Black"},{regex:"BBG100-1",model:"Evolve"},{regex:"BBH100-1",model:"Evolve X"},{regex:"STV100-[1234]",model:"BlackBerry Priv"},{regex:"STH100-[12]",model:"BlackBerry DTEK50"},{regex:"BB10; ([a-z0-9\\- ]+)\\)",model:"BlackBerry $1"},{regex:"PlayBook.+RIM Tablet OS",model:"BlackBerry Playbook",device:"tablet"},{regex:"BlackBerry(?: )?([a-z0-9]+)",model:"BlackBerry $1"},{regex:"rim([0-9]+)",model:"BlackBerry $1"},{regex:"9000",model:"Bold 9000"},{regex:"9300",model:"Curve 3G 9300"},{regex:"(8520|8530|9220|9320|9360)",model:"Curve $1"},{regex:"9630",model:"Tour 9630"},{regex:"9720",model:"9720"},{regex:"(9800|9860)",model:"Torch $1"},{regex:"BlackBerry",model:"BlackBerry"}]},CHIA={regex:"(SVEGLIO[ _][QH]1|TREO_TAB8G|GTA7WF)(?:[);/ ]|$)",device:"smartphone",models:[{regex:"SVEGLIO[ _]([QH]1)",model:"Sveglio $1"},{regex:"TREO_TAB8G",device:"tablet",model:"TREO TAB8G"},{regex:"GTA7WF",device:"tablet",model:"GTA7WF"}]},Palm={regex:"(?:Pre|Pixi)/(\\d+)\\.(\\d+)|Palm|Treo|Xiino",device:"smartphone",models:[{regex:"((?:Pre|Pixi))/(\\d+\\.\\d+)",model:"$1 $2"},{regex:"Palm(?:[ \\-])?((?!OS|Source|scape)[a-z0-9]+)",model:"$1"},{regex:"Treo([a-z0-9]+)",model:"Treo $1"},{regex:"Tungsten",model:"Tungsten"},{regex:"Xiino|Palmscape",model:""}]},HP$2={regex:"Hewlett-Packard|HP/HP|HP EliteBook 820|TouchPad/\\d+\\.\\d+|hp-tablet|HP ?iPAQ|webOS.*P160U|HP (?:Pro )?Slate|HP [78]|HP 10 Plus|Compaq [7|8]|HP; [^;/)]+",device:"smartphone",models:[{regex:"HP Slate 6 Voice Tab",model:"Slate 6 VoiceTab",device:"phablet"},{regex:"HP 10 Plus",model:"10 Plus",device:"tablet"},{regex:"HP ([78][^)/;]*)(?: Build|\\))",model:"Slate $1",device:"tablet"},{regex:"Compaq ([78][^/;]*) Build",model:"Compaq $1",device:"tablet"},{regex:"HP Pro Slate 8",model:"Pro Slate 8",device:"tablet"},{regex:"HP Slate ?(.+) Build",model:"Slate $1",device:"tablet"},{regex:"HP Slate ?([0-9]+)",model:"Slate $1",device:"tablet"},{regex:"TouchPad/(\\d+\\.\\d+)|hp-tablet",model:"TouchPad",device:"tablet"},{regex:"HP; ([^;/)]+)",model:"$1"},{regex:"HP ?iPAQ ?([a-z0-9]+)",model:"iPAQ $1"},{regex:"webOS.*(P160U)",model:"Veer"},{regex:"HP ProBook (6560b)",device:"desktop",model:"ProBook $1"},{regex:"HP EliteBook 820 G2",device:"desktop",model:"EliteBook 820 G2"},{regex:"Z240 Tower Workstation",device:"desktop",model:"Z240 Tower Workstation"}]},TiPhone={regex:"TiPhone ?([a-z0-9]+)",device:"smartphone",model:"$1"},Apple$1={regex:"(?:iTunes-)?Apple[ _]?TV|Apple/|(?:Apple-|iTunes-)?(?<!like )(?:iPad|iPhone)|iPh[0-9],[0-9]|CFNetwork|HomePod|Watch ?OS|Watch1,[12]|MDCR_Mac|ICRU_iP(?:ad|hone)",models:[{regex:"HomePod",device:"smart speaker",model:"HomePod"},{regex:"Watch1,1",device:"wearable",model:"Watch 38mm"},{regex:"Watch1,2",device:"wearable",model:"Watch 42mm"},{regex:"Watch2,6",device:"wearable",model:"Watch Series 1 38mm"},{regex:"Watch2,7",device:"wearable",model:"Watch Series 1 42mm"},{regex:"Watch2,3",device:"wearable",model:"Watch Series 2 38mm"},{regex:"Watch2,4",device:"wearable",model:"Watch Series 2 42mm"},{regex:"Watch3,[13]",device:"wearable",model:"Watch Series 3 38mm"},{regex:"Watch3,[24]",device:"wearable",model:"Watch Series 3 42mm"},{regex:"Watch5,(?:9|11)",device:"wearable",model:"Watch SE 40mm"},{regex:"Watch5,1[02]",device:"wearable",model:"Watch SE 44mm"},{regex:"Watch([456]),[13]",device:"wearable",model:"Watch Series $1 40mm"},{regex:"Watch([456]),[24]",device:"wearable",model:"Watch Series $1 44mm"},{regex:"(?:.+_)?MacBook7(?:%2C|,)1",device:"desktop",model:'MacBook 13" (2010)'},{regex:"(?:.+_)?MacPro5(?:%2C|,)1",device:"desktop",model:"Mac Pro (2010-2012)"},{regex:"(?:.+_)?iMac12(?:%2C|,)1",device:"desktop",model:'iMac 21.5" (2011)'},{regex:"(?:.+_)?iMac17(?:%2C|,)1",device:"desktop",model:'iMac 27" (2015)'},{regex:"(?:.+_)?iMac19(?:%2C|,)2",device:"desktop",model:'iMac 21.5" (2019)'},{regex:"(?:.+_)?iMac19(?:%2C|,)1",device:"desktop",model:'iMac 27" (2019)'},{regex:"(?:.+_)?iMac20(?:%2C|,)[12]",device:"desktop",model:'iMac 27" (2020)'},{regex:"(?:.+_)?iMac14(?:%2C|,)2",device:"desktop",model:'iMac 27" (2013)'},{regex:"(?:.+_)?iMac14(?:%2C|,)4",device:"desktop",model:'iMac 21.5" (2014)'},{regex:"(?:.+_)?iMac14(?:%2C|,)1",device:"desktop",model:'iMac 21.5" (2013)'},{regex:"(?:.+_)?MacBook6(?:%2C|,)1",device:"desktop",model:'MacBook 13" (2009)'},{regex:"(?:.+_)?MacBook8(?:%2C|,)1",device:"desktop",model:'MacBook 12" (2015)'},{regex:"(?:.+_)?MacBook9(?:%2C|,)1",device:"desktop",model:'MacBook 12" (2016)'},{regex:"(?:.+_)?iMac10(?:%2C|,)1",device:"desktop",model:"iMac (2009)"},{regex:"(?:.+_)?MacBookAir2(?:%2C|,)1",device:"desktop",model:"MacBook Air (2009)"},{regex:"(?:.+_)?MacBookAir3(?:%2C|,)1",device:"desktop",model:'MacBook Air 11" (2010)'},{regex:"(?:.+_)?MacBookAir3(?:%2C|,)2",device:"desktop",model:'MacBook Air 13" (2010)'},{regex:"(?:.+_)?MacBookAir4(?:%2C|,)1",device:"desktop",model:'MacBook Air 11" (2011)'},{regex:"(?:.+_)?MacBookAir4(?:%2C|,)2",device:"desktop",model:'MacBook Air 13" (2011)'},{regex:"(?:.+_)?MacBookAir5(?:%2C|,)1",device:"desktop",model:'MacBook Air 11" (2012)'},{regex:"(?:.+_)?MacBookAir5(?:%2C|,)2",device:"desktop",model:'MacBook Air 13" (2012)'},{regex:"(?:.+_)?MacBookAir6(?:%2C|,)1",device:"desktop",model:'MacBook Air 11" (2013-2014)'},{regex:"(?:.+_)?MacBookAir6(?:%2C|,)2",device:"desktop",model:'MacBook Air 13" (2013-2014)'},{regex:"(?:.+_)?MacBookAir7(?:%2C|,)1",device:"desktop",model:'MacBook Air 11" (2015)'},{regex:"(?:.+_)?MacBookAir7(?:%2C|,)2",device:"desktop",model:'MacBook Air 13" (2015-2017)'},{regex:"(?:.+_)?MacBookAir8(?:%2C|,)1",device:"desktop",model:'MacBook Air 13" (2018)'},{regex:"(?:.+_)?MacBookAir8(?:%2C|,)2",device:"desktop",model:'MacBook Air 13" (2019)'},{regex:"(?:.+_)?MacBookAir9(?:%2C|,)1",device:"desktop",model:'MacBook Air 13" (2020)'},{regex:"(?:.+_)?MacBookAir10(?:%2C|,)1",device:"desktop",model:'MacBook Air 13" (2020)'},{regex:"(?:.+_)?MacBookPro1(?:%2C|,)1",device:"desktop",model:'MacBook Pro 15" (2006)'},{regex:"(?:.+_)?MacBookPro1(?:%2C|,)2",device:"desktop",model:'MacBook Pro 17" (2006)'},{regex:"(?:.+_)?MacBookPro2(?:%2C|,)1",device:"desktop",model:'MacBook Pro 17" (2007)'},{regex:"(?:.+_)?MacBookPro2(?:%2C|,)2",device:"desktop",model:'MacBook Pro 15" (2007)'},{regex:"(?:.+_)?MacBookPro[34](?:%2C|,)1",device:"desktop",model:"MacBook Pro (2008)"},{regex:"(?:.+_)?MacBookPro5(?:%2C|,)1",device:"desktop",model:'MacBook Pro 15" (2008)'},{regex:"(?:.+_)?MacBookPro5(?:%2C|,)2",device:"desktop",model:'MacBook Pro 17" (2009)'},{regex:"(?:.+_)?MacBookPro5(?:%2C|,)[34]",device:"desktop",model:'MacBook Pro 15" (2009)'},{regex:"(?:.+_)?MacBookPro5(?:%2C|,)5",device:"desktop",model:'MacBook Pro 13" (2009)'},{regex:"(?:.+_)?MacBookPro6(?:%2C|,)1",device:"desktop",model:'MacBook Pro 17" (2010)'},{regex:"(?:.+_)?MacBookPro6(?:%2C|,)2",device:"desktop",model:'MacBook Pro 15" (2010)'},{regex:"(?:.+_)?MacBookPro7(?:%2C|,)1",device:"desktop",model:'MacBook Pro 13" (2010)'},{regex:"(?:.+_)?MacBookPro8(?:%2C|,)1",device:"desktop",model:'MacBook Pro 13" (2011)'},{regex:"(?:.+_)?MacBookPro8(?:%2C|,)2",device:"desktop",model:'MacBook Pro 15" (2011)'},{regex:"(?:.+_)?MacBookPro8(?:%2C|,)3",device:"desktop",model:'MacBook Pro 17" (2011)'},{regex:"(?:.+_)?MacBookPro9(?:%2C|,)1",device:"desktop",model:'MacBook Pro 15" (2012)'},{regex:"(?:.+_)?MacBookPro9(?:%2C|,)2",device:"desktop",model:'MacBook Pro 13" (2012)'},{regex:"(?:.+_)?MacBookPro10(?:%2C|,)1",device:"desktop",model:'MacBook Pro 15" (2012-2013)'},{regex:"(?:.+_)?MacBookPro10(?:%2C|,)2",device:"desktop",model:'MacBook Pro 13" (2012-2013)'},{regex:"(?:.+_)?MacBookPro11(?:%2C|,)1",device:"desktop",model:'MacBook Pro 13" (2013-2014)'},{regex:"(?:.+_)?MacBookPro11(?:%2C|,)[23]",device:"desktop",model:'MacBook Pro 15" (2013-2014)'},{regex:"(?:.+_)?MacBookPro11(?:%2C|,)[45]",device:"desktop",model:'MacBook Pro 15" (2015)'},{regex:"(?:.+_)?MacBookPro12(?:%2C|,)1",device:"desktop",model:'MacBook Pro 13" (2015)'},{regex:"(?:.+_)?MacBookPro13(?:%2C|,)[12]",device:"desktop",model:'MacBook Pro 13" (2016)'},{regex:"(?:.+_)?MacBookPro13(?:%2C|,)3",device:"desktop",model:'MacBook Pro 15" (2016)'},{regex:"(?:.+_)?MacBookPro14(?:%2C|,)[12]",device:"desktop",model:'MacBook Pro 13" (2017)'},{regex:"(?:.+_)?MacBookPro14(?:%2C|,)3",device:"desktop",model:'MacBook Pro 15" (2017)'},{regex:"(?:.+_)?MacBookPro15(?:%2C|,)1",device:"desktop",model:'MacBook Pro 15" (2018-2019)'},{regex:"(?:.+_)?MacBookPro15(?:%2C|,)2",device:"desktop",model:'MacBook Pro 13" (2018-2019)'},{regex:"(?:.+_)?MacBookPro15(?:%2C|,)3",device:"desktop",model:'MacBook Pro 15" (2019)'},{regex:"(?:.+_)?MacBookPro15(?:%2C|,)4",device:"desktop",model:'MacBook Pro 13" (2019)'},{regex:"(?:.+_)?MacBookPro16(?:%2C|,)[14]",device:"desktop",model:'MacBook Pro 16" (2019)'},{regex:"(?:.+_)?MacBookPro16(?:%2C|,)[23]",device:"desktop",model:'MacBook Pro 13" (2020)'},{regex:"(?:.+_)?MacBookPro17(?:%2C|,)1",device:"desktop",model:'MacBook Pro 13" (2020)'},{regex:"(?:.+_)?Macmini8(?:%2C|,)1",device:"desktop",model:"Mac Mini (2018)"},{regex:"(?:.+_)?Macmini9(?:%2C|,)1",device:"desktop",model:"Mac Mini (2020)"},{regex:"(?:.+_)?Macmini7(?:%2C|,)1",device:"desktop",model:"Mac Mini (2014)"},{regex:"(?:Apple-|.+_)?iPh(?:one)?1[C,_]1",model:"iPhone",device:"smartphone"},{regex:"(?:Apple-|.+_)?iPh(?:one)?1[C,_]2",model:"iPhone 3G",device:"smartphone"},{regex:"(?:Apple-|.+_)?iPh(?:one)?2[C,_]1| 3GS\\)$",model:"iPhone 3GS",device:"smartphone"},{regex:"(?:Apple-|.+_)?iPh(?:one)?3[C,_][123]",model:"iPhone 4",device:"smartphone"},{regex:"(?:Apple-|.+_)?iPh(?:one)?4[C,_]1|1C2%254enohPi| 4S\\)$",model:"iPhone 4S",device:"smartphone"},{regex:"(?:Apple-|.+_)?iPh(?:one)?5[C,_][12]| 5\\)$",model:"iPhone 5",device:"smartphone"},{regex:"(?:Apple-|.+_)?iPh(?:one)?5[C,_][34]",model:"iPhone 5C",device:"smartphone"},{regex:"(?:Apple-|.+_)?iPh(?:one)?6[C,_][12]| 5S\\)$",model:"iPhone 5S",device:"smartphone"},{regex:"(?:Apple-|.+_)?iPh(?:one)?7[C,_]1|1C2%257enohPi| 6PLUS\\)$",model:"iPhone 6 Plus",device:"phablet"},{regex:"(?:Apple-|.+_)?iPh(?:one)?7[C,_]2| 6\\)$",model:"iPhone 6",device:"smartphone"},{regex:"(?:Apple-|.+_)?iPh(?:one)?8[C,_]2| 6SPLUS\\)$",model:"iPhone 6s Plus",device:"phablet"},{regex:"(?:Apple-|.+_)?iPh(?:one)?8[C,_]1|iPhone 6s| 6S\\)$",model:"iPhone 6s",device:"smartphone"},{regex:"(?:Apple-|.+_)?iPh(?:one)?8[C,_]4| SE\\)$",model:"iPhone SE",device:"smartphone"},{regex:"(?:Apple-|.+_)?iPh(?:one)?9[C,_][13]| 7\\)$",model:"iPhone 7",device:"smartphone"},{regex:"(?:Apple-|.+_)?iPh(?:one)?9[C,_][24]| 7PLUS\\)$",model:"iPhone 7 Plus",device:"phablet"},{regex:"(?:Apple-|.+_)?iPh(?:one)?10[C,_][14]| 8\\)$",model:"iPhone 8",device:"smartphone"},{regex:"(?:Apple-|.+_)?iPh(?:one)?10[C,_][25]| 8PLUS\\)$",model:"iPhone 8 Plus",device:"phablet"},{regex:"(?:Apple-|.+_)?iPh(?:one)?10[C,_][36]|iPhone X| X\\)$",model:"iPhone X",device:"phablet"},{regex:"(?:Apple-|.+_)?iPh(?:one)?11[C,_][2]| XS\\)$",model:"iPhone XS",device:"smartphone"},{regex:"(?:Apple-|.+_)?iPh(?:one)?11[C,_][46]| XSMAX\\)$",model:"iPhone XS Max",device:"phablet"},{regex:"(?:Apple-|.+_)?iPh(?:one)?11[C,_][8]| XR\\)$",model:"iPhone XR",device:"smartphone"},{regex:"(?:Apple-|.+_)?iPh(?:one)?12[C,_][1]| 11\\)$",model:"iPhone 11",device:"smartphone"},{regex:"(?:Apple-|.+_)?iPh(?:one)?12[C,_][3]| 11PRO\\)$",model:"iPhone 11 Pro",device:"phablet"},{regex:"(?:Apple-|.+_)?iPh(?:one)?12[C,_][5]| 11PROMAX\\)$",model:"iPhone 11 Pro Max",device:"phablet"},{regex:"(?:Apple-|.+_)?iPh(?:one)?12[C,_][8]",model:"iPhone SE (2020)",device:"phablet"},{regex:"(?:Apple-|.+_)?iPh(?:one)?13[C,_][1]",model:"iPhone 12 Mini",device:"smartphone"},{regex:"(?:Apple-|.+_)?iPh(?:one)?13[C,_][2]",model:"iPhone 12",device:"phablet"},{regex:"(?:Apple-|.+_)?iPh(?:one)?13[C,_][3]",model:"iPhone 12 Pro",device:"phablet"},{regex:"(?:Apple-|.+_)?iPh(?:one)?13[C,_][4]",model:"iPhone 12 Pro Max",device:"phablet"},{regex:"(?:Apple-|.+_)?iPad1[C,_]1",model:"iPad",device:"tablet"},{regex:"(?:Apple-|.+_)?iPad2[C,_][1234]",model:"iPad 2",device:"tablet"},{regex:"(?:Apple-|.+_)?iPad2[C,_][567]",model:"iPad Mini",device:"tablet"},{regex:"(?:Apple-|.+_)?iPad3[C,_][123]",model:"iPad 3",device:"tablet"},{regex:"(?:Apple-|.+_)?iPad3[C,_][456]",model:"iPad 4",device:"tablet"},{regex:"(?:Apple-|.+_)?iPad4[C,_][123]",model:"iPad Air",device:"tablet"},{regex:"(?:Apple-|.+_)?iPad4[C,_][456]",model:"iPad Mini 2",device:"tablet"},{regex:"(?:Apple-|.+_)?iPad4[C,_][789]",model:"iPad Mini 3",device:"tablet"},{regex:"(?:Apple-|.+_)?iPad5[C,_][12]",model:"iPad Mini 4",device:"tablet"},{regex:"(?:Apple-|.+_)?iPad5[C,_][34]",model:"iPad Air 2",device:"tablet"},{regex:"(?:Apple-|.+_)?iPad6[C,_][34]",model:"iPad Pro 9.7",device:"tablet"},{regex:"(?:Apple-|.+_)?iPad6[C,_][78]",model:"iPad Pro 12.9",device:"tablet"},{regex:"(?:Apple-|.+_)?iPad6[C,_](?:11|12)",model:"iPad 5 9.7",device:"tablet"},{regex:"(?:Apple-|.+_)?iPad7[C,_][12]",model:"iPad Pro 2 12.9",device:"tablet"},{regex:"(?:Apple-|.+_)?iPad7[C,_][34]",model:"iPad Pro 10.5",device:"tablet"},{regex:"(?:Apple-|.+_)?iPad7[C,_][56]",model:"iPad 6 9.7",device:"tablet"},{regex:"(?:Apple-|.+_)?iPad7[C,_](?:11|12)",model:"iPad 7 10.2",device:"tablet"},{regex:"(?:Apple-|.+_)?iPad8[C,_](?:9|10)",model:'iPad Pro 2 11"',device:"tablet"},{regex:"(?:Apple-|.+_)?iPad8[C,_]1[12]",model:'iPad Pro 4 12.9"',device:"tablet"},{regex:"(?:Apple-|.+_)?iPad8[C,_][1-4]",model:"iPad Pro 3 11.0",device:"tablet"},{regex:"(?:Apple-|.+_)?iPad8[C,_][5-8]",model:"iPad Pro 3 12.9",device:"tablet"},{regex:"(?:Apple-|.+_)?iPad11[C,_][12]",model:"iPad Mini 5",device:"tablet"},{regex:"(?:Apple-|.+_)?iPad11[C,_][34]",model:"iPad Air 3",device:"tablet"},{regex:"(?:Apple-|.+_)?iPad11[C,_][67]",model:'iPad 8 10.2"',device:"tablet"},{regex:"(?:Apple-|.+_)?iPad13[C,_][12]",model:"iPad Air 4",device:"tablet"},{regex:"Apple-?TV2[C,_]1",model:"Apple TV 2",device:"tv"},{regex:"Apple-?TV3[C,_][12]",model:"Apple TV 3",device:"tv"},{regex:"Apple-?TV5[C,_]3",model:"Apple TV 4",device:"tv"},{regex:"Apple-?TV6[C,_]2",model:"Apple TV 4K",device:"tv"},{regex:"(?:iTunes-)?Apple[ _]?TV",model:"Apple TV",device:"tv"},{regex:"HomePod",model:"HomePod",device:"smart speaker"},{regex:"iTunes-iPad/[0-9]+(?:\\.[0-9]+)* \\(([^;]+);",model:"iPad $1",device:"tablet"},{regex:"(?:Apple-|.+_)?iPad",model:"iPad",device:"tablet"},{regex:"iTunes-iPhone/[0-9]+(?:\\.[0-9]+)* \\(([^;]+);",model:"iPhone $1",device:"smartphone"},{regex:"(?:Apple-)?iPhone ?(3GS?|4S?|5[CS]?|6(:? Plus)?)?",model:"iPhone $1",device:"smartphone"}]},MicroMax={regex:"(?:MicroMax[ \\-\\_]?[a-z0-9]+|Q327)|4560MMX|P70221|(?:YU(?:5040|5530)|AQ5001(?: Canvas Power)?|N8216|N8301)(?:[);/ ]|$)",device:"smartphone",models:[{regex:"AQ5001 Canvas Power",model:"Canvas Power"},{regex:"AQ5001",model:"Canvas Juice 2"},{regex:"4560MMX(?:[);/ ]|$)",model:"4560MMX"},{regex:"E481",model:"Canvas 5"},{regex:"P70221(?:[);/ ]|$)",model:"Canvas Tab",device:"tablet"},{regex:"Q327",model:"Bolt"},{regex:"Q417",model:"Canvas Mega"},{regex:"Q402\\+",model:"Bolt Pace"},{regex:"YU5040(?:[);/ ]|$)",model:"YU Yureka YU5040"},{regex:"YU5530(?:[);/ ]|$)",model:"YU Yureka S YU5530"},{regex:"Q424",model:"Bolt Selfie"},{regex:"Q426",model:"Canvas Mega 2"},{regex:"N8216",model:"Infinity N11"},{regex:"N8301",model:"Infinity N12"},{regex:"MicroMax(?:[ \\-\\_])?(X291|X246|X252|X458|X312)",model:"$1",device:"feature phone"},{regex:"MicroMax(?:[ \\-\\_])?(P[a-z0-9]+)",model:"$1",device:"tablet"},{regex:"MicroMax(?:[ \\-\\_])?([a-z0-9]+)",model:"$1"}]},Acteck={regex:"BLECK",device:"tablet",model:"Bleck"},Alba={regex:"Alba ?(?:57|4|10 TABLET|(?:7|10)(?:Nou|Pie))(?:[);/ ]|$)",device:"smartphone",models:[{regex:"Alba 57",model:"5.7"},{regex:"Alba (4)",model:"$1"},{regex:"10 TABLET",device:"tablet",model:"10 Tablet"},{regex:"Alba((?:7|10)(?:Nou|Pie))",device:"tablet",model:"$1"}]},AllCall={regex:"AllCall_|Heat[34]|Rio_X(?:[);/ ]|$)|Hot ?[125][^;/]+ Build",device:"smartphone",models:[{regex:"AllCall_(Alpha|Atom|Bro|Madrid)",model:"$1"},{regex:"AllCall_S1_X",model:"S1 X"},{regex:"AllCall_S1",model:"S1"},{regex:"AllCall_RIO_S",model:"Rio S"},{regex:"AllCall_RIO_PRO",model:"Rio Pro"},{regex:"AllCall_RIO",model:"Rio"},{regex:"Heat([34])",model:"Heat $1"},{regex:"Rio_X(?:[);/ ]|$)",model:"Rio X"},{regex:"Hot ?([125][^;/]+) Build",model:"Hot $1"}]},Bravis={regex:"Bravis[ _]|A501 Bright|A552 JOY Max|A504 Trace|A505 JOY Plus|A503 Joy|NB(?:106M|10[1-8]|751|7[145]|8[57]1|76)|NP101|NB961|NP 104 3G|B501|N1-570 Space|Atlas A551|A512 Harmony Pro|A510_Jeans_4G|A509_Jeans|N1_550_Cruiser",device:"smartphone",models:[{regex:"A501 BRIGHT",model:"A501 Bright"},{regex:"Bravis[_ ]X500",model:"Trace Pro"},{regex:"Bravis[_ ]A506",model:"Crystal"},{regex:"Bravis[_ ]A553",model:"Discovery"},{regex:"BRAVIS[ _]TAU",model:"Tau"},{regex:"BRAVIS[ _]DELTA",model:"Delta"},{regex:"BRAVIS[ _]TREND",model:"Trend"},{regex:"B501",model:"Easy"},{regex:"N1-570",model:"Space"},{regex:"BRAVIS[ ]A554",model:"A554 Grand"},{regex:"BRAVIS[ ]S500",model:"S500 Diamond"},{regex:"A505 JOY Plus",model:"A505 Joy Plus"},{regex:"A552 JOY Max",model:"A552 Joy Max"},{regex:"Atlas A551",model:"A551 Atlas"},{regex:"A503 Joy",model:"A503 Joy"},{regex:"A504 Trace",model:"A504 Trace"},{regex:"A512 Harmony Pro",model:"A512 Harmony Pro"},{regex:"A510_Jeans_4G",model:"A510 Jeans 4G"},{regex:"A509_Jeans",model:"A509 Jeans"},{regex:"BRAVIS NEO",model:"A401 Neo"},{regex:"N1_550_Cruiser",model:"N1-550 Cruiser"},{regex:"BRAVIS OMEGA",model:"Omega"},{regex:"BRAVIS BIZ",model:"Biz"},{regex:"BRAVIS POWER",model:"Power"},{regex:"BRAVIS[ _]SPARK",model:"Spark"},{regex:"BRAVIS[ _]SLIM[ _]3G",model:"Slim 3G",device:"tablet"},{regex:"NP 104 3G",model:"NP104 3G",device:"tablet"},{regex:"BRAVIS NP 103",model:"NP103",device:"tablet"},{regex:"BRAVIS NP 844",model:"NP844",device:"tablet"},{regex:"Bravis[_ ]([^;\\)]+) Build",model:"$1"},{regex:"(NB(?:106M|10[1-8]|751|7[145]|8[57]1|76)|NP101|NB961)",model:"$1",device:"tablet"}]},Acer$2={regex:"acer|(?<!Satellite |ZTE BLADE |ImSmart |ERGO |X-Style Tab )a(?:101|110|2[10]0|211|50[10]|51[10]|70[10])(?:[);/ ]|$)|Android.*V3[67]0(?:[);/ ]|$)|Android.*Z1[23456]0 Build|Android.*Z5\\d{2} Build|Android.*T0[234678] Build|Android.*S55(?:[);/ ]|$)|(?:A1-(713(HD)?|7[23]4|830|841|840FHD|81[01])|A3-A[1234][01]|B1-(7[1235-8][01](HD)?|7[23]3|7A0|8[1235]0|A71|860A)|TPA60W|B3-(A[125]0|A3[02]|A40FHD)|E39)(?:[);/ ]|$)|S5[12]0 Build|(DA[0-9]+HQ?L|Aspire (?:V5-121|XC-704G|V5-573G)|Chromebook 14 \\(CB3-431\\)|Predator G9-793|GT-810|B1-870|B3-A4[02]|B3-A50FHD)(?:[);/ ]|$)",device:"smartphone",models:[{regex:"DA220HQL(?:[);/ ]|$)",model:"DA220HQL",device:"smart display"},{regex:"DA241HL(?:[);/ ]|$)",model:"DA241HL",device:"smart display"},{regex:"(DA[0-9]+HQ?L)(?:[);/ ]|$)",model:"$1",device:"smart display"},{regex:"A1-81[01]",model:"Iconia A",device:"tablet"},{regex:"TPA60W",model:"TPA60W",device:"tablet"},{regex:"A1-84(1|0FHD)",model:"Iconia Tab 8",device:"tablet"},{regex:"A1-713(HD)?",model:"Iconia Tab 7",device:"tablet"},{regex:"A1-830",model:"Iconia A1",device:"tablet"},{regex:"A1-7[23]4",model:"Iconia Talk S",device:"tablet"},{regex:"A3-A[12][01]",model:"Iconia A3",device:"tablet"},{regex:"A3-A[34]0",model:"Iconia Tab 10",device:"tablet"},{regex:"B1-7(?:[5678]0|30HD|A0)",model:"Iconia One 7",device:"tablet"},{regex:"B1-7[123][01]|B1-A71",model:"Iconia B1",device:"tablet"},{regex:"B1-7[23]3",model:"Iconia Talk 7",device:"tablet"},{regex:"B1-8[123567]0",model:"Iconia One 8",device:"tablet"},{regex:"B3-A([125]0|3[02]|[45]0FHD|4[02])",model:"Iconia One 10",device:"tablet"},{regex:"A101",model:"Vangogh",device:"tablet"},{regex:"A200",model:"Picasso E",device:"tablet"},{regex:"A50[01]",model:"Picasso",device:"tablet"},{regex:"Acer One 7",model:"One 7",device:"tablet"},{regex:"GT-810",model:"Predator 8",device:"tablet"},{regex:"E39(?:[);/ ]|$)",model:"Liquid E700"},{regex:"E310(?:[);/ ]|$)",model:"Liquid Mini"},{regex:"E320(?:-orange)?(?:[);/ ]|$)",model:"Liquid Express"},{regex:"E310(?:[);/ ]|$)",model:"beTouch E210"},{regex:"Android.*V360(?:[);/ ]|$)",model:"Liquid E1 Duo"},{regex:"Android.*V370(?:[);/ ]|$)",model:"Liquid E2 Duo"},{regex:"S510(?:[);/ ]|$)",model:"Liquid S1"},{regex:"S520(?:[);/ ]|$)",model:"Liquid S2"},{regex:"(?:Acer_)?P400(?:[);/ ]|$)",model:"neoTouch P400"},{regex:"(?:Acer_)?P300(?:[);/ ]|$)",model:"neoTouch P300"},{regex:"(?:Acer_)?S200(?:[);/ ]|$)",model:"neoTouch S200"},{regex:"(?:Acer_)?E100(?:[);/ ]|$)",model:"beTouch E100"},{regex:"Android.*Z1([234])0(?:[);/ ]|$)",model:"Liquid Z$1"},{regex:"Android.*Z110(?:[);/ ]|$)",model:"Liquid Z110"},{regex:"Android.*Z150(?:[);/ ]|$)",model:"Liquid Z5 Duo"},{regex:"Android.*Z160(?:[);/ ]|$)",model:"Liquid Z4 Duo"},{regex:"Android.*Z(5\\d{2})(?:[);/ ]|$)",model:"Liquid Z$1"},{regex:"Android.*S57(?:[);/ ]|$)",model:"Liquid Jade Z"},{regex:"Android.*T02(?:[);/ ]|$)",model:"Liquid Z530"},{regex:"Android.*T03(?:[);/ ]|$)",model:"Liquid Z630"},{regex:"Android.*T04(?:[);/ ]|$)",model:"Liquid Z630S"},{regex:"Android.*T06(?:[);/ ]|$)",model:"Liquid Zest"},{regex:"Android.*T07(?:[);/ ]|$)",model:"Liquid Zest 4G"},{regex:"Android.*T08(?:[);/ ]|$)",model:"Liquid Zest Plus"},{regex:"TM01(?:[);/ ]|$)",model:"Liquid M330"},{regex:"M220(?:[);/ ]|$)",model:"Liquid M220"},{regex:"AcerTD600",model:"TD600"},{regex:"Android.*S55(?:[);/ ]|$)",model:"Liquid Jade"},{regex:"(?:Acer )?(Chromebook R1[13])",model:"$1",device:"desktop"},{regex:"(?:Acer )?(Chromebook 14)",model:"$1",device:"desktop"},{regex:"(Aspire (?:V5-121|XC-704G|V5-573G|A515-51G))",model:"$1",device:"desktop"},{regex:"(Predator G9-793|Aspire E5-511)",model:"$1",device:"desktop"},{regex:"Acer; ?([^;\\(\\)/]+)",model:"$1"},{regex:"Acer(?! ?inc)[ _\\-]?([^;\\(\\)/]+)[();/ ]",model:"$1"},{regex:"acer[\\-_]([a-z0-9]+)",model:"$1"},{regex:"a(101|110|2[10]0|211|50[10]|51[10]|70[10])(?:[);/ ]|$)",model:"Iconia Tab A$1",device:"tablet"}]},Advan={regex:"(?:ADVAN (?:M4|S40)|i7U|S45E|S50H|I7D|i55[KD]|i4U|S7D|S4Z|i5[KE]|S5E[ _]NXT|S5J\\+|S4\\+)(?:[);/ ]|$)|[ ](?:50(?:[46]1|59)|600[24])(?: Build|\\) AppleWebKit)|(?:E1C_3G)(?:[);/ ]|$)",device:"smartphone",models:[{regex:"ADVAN M4",model:"M4"},{regex:"ADVAN S40",model:"S40"},{regex:"i7U",model:"I Lite i7U"},{regex:"S5E[ _]NXT",model:"S5E NXT"},{regex:"i(55[KD]|5[KE])",model:"I$1"},{regex:"i4U",model:"I4U"},{regex:" 6004(?: Build|\\) AppleWebKit)",model:"G2 Pro"},{regex:" 6002(?: Build|\\) AppleWebKit)",model:"G3 Pro"},{regex:"(S45E|50[46]1|5059|S50H|I7D|S7D|S4Z|S5J\\+|S4\\+)(?:[);/ ]|$)",model:"$1"},{regex:"E1C_3G",device:"tablet",model:"E1C 3G"}]},Advance={regex:"Hollogram|(?:HL(?:4936|6246|[56]575|5[67]67)|IntroTr3544|Pr(?:61(?:4[56]|50)|60[27]0|5[69]50)|Tr3845)(?:[);/ ]|$)",device:"smartphone",models:[{regex:"IntroTr3544|Tr3845",model:"Intro",device:"tablet"},{regex:"Pr(61(?:4[56]|50)|60[27]0|5[69]50)",model:"Prime PR$1",device:"tablet"},{regex:"HL(4936|6246|[56]575|5[67]67)",model:"Hollogram HL$1"},{regex:"Hollogram ([^;/)]+)(?: Build|[;)])",model:"Hollogram $1"}]},AGM={regex:"AGM ([^/;)]+)(?: Build|[;)])",device:"smartphone",model:"$1"},Airness={regex:"AIRNESS-([\\w]+)",device:"feature phone",model:"$1"},Aiwa={regex:"(?:AW790|M300|AWM(?:533|50[19]|561)|AW500)(?:[);/ ]|$)",device:"smartphone",models:[{regex:"AW790(?:[);/ ]|$)",model:"AW790"},{regex:"AW500(?:[);/ ]|$)",model:"AW500"},{regex:"AWM(533|50[19]|561)(?:[);/ ]|$)",model:"AWM$1"},{regex:"M300(?:[);/ ]|$)",model:"M300",device:"phablet"}]},Akai={regex:"AKAI,|Akai[ _-]|Eco[ _]E2|Glory[ _](?:G[1235]|L[123]|O[125])|TAB-[79]8[03]0Q?|X6 METAL|AKTB-703MZ",device:"smartphone",models:[{regex:"TAB-([79]8[03]0Q?)",device:"tablet",model:"TAB $1"},{regex:"AKTB-703MZ",device:"tablet",model:"AKTB-703MZ"},{regex:"X6 METAL",model:"iLike"},{regex:"Glory[ _](G[1235]|L[123]|O[125])",model:"Glory $1"},{regex:"Eco[ _]E2",model:"Eco E2"},{regex:"Akai[ _-]([^;/)]+)(?: Build|[;)])",model:"$1"},{regex:"AKAI,(AK3219NF)",device:"tv",model:"$1"},{regex:"Si2157LG32",device:"tv",model:"Si2157LG32"}]},Alcatel={regex:"Alcatel|Alc(?!or )[a-z0-9]+|One[ _]?Touch|idol3|TIMXL|(?:(?:4003[AJ]|4009[ADEFIKMSX]|4013[DEJKMX]|4014[ADEKMX]|4015[ADNTX]|4016[ADX]|4017[ADEFSX]|4018[ADEFMX]|4024[EDX]|4027[ADNX]|4028[AEJS]|4032[ADEX]|4034[ADEFGXTL]|4035[ADXY]|4045[ADEX]|4047[ADFGNX]|4049[DEGMX]|4060[SW]|A466BG|A621BL|4114E|4087U|5001[ADJTU]|5002[ADFH]|5003[ADGU]|5006D|5007[AU]|5008[ADUYT]|5009[AD]|5010[DEGSUX]|5011A|5012[DFG]|5015[ADEX]|5016[AXJ]|5017[ABDEOX]|5019D|5022[EDX]|5023[EF]|5024[ADJF]|5025[DEG]|5026[ADJ]|5027B|5028[AYD]|5029[EYD]|5030[DE]|5032W|5033[AEFXDJGMOTXYQS]|5034D|5036D|5038[ADEX]|5039[DY]|5041[CD]|5042[ADEFGWXT]|5044[ADGIKOPSTY]|5045[ADFGIJTXY]|5046[ADGIJSTUY]|5047[DIUY]|5048[AYUI]|5049[EGSWZ]|5050[ASXY]|5051[ADEJMTWX]|5052[ADY]|5053[ADKY]|5054[ADNSTWX]|5056[ADEGIJMNTUWX]|5057M|5058[AIY]|5059[ADJXYZIST]|5060[ADJ]|5061[KU]|5065[ADNWX]|5070D|5080[ADFQUX]|5085[ABCDGHIJNOQY]|5086[ADY]|5090[AIY]|5095[IKY]|5098[OS]|5099[ADYUI]|5116J|5145A|6016[ADEX]|6036[AXY]|6037[BKY]|6039[AHJKY]|6042D|6043[AD]|6044D|6045[BFIKOYX]|6050[AFY]|6055[ABDHIKPUYZ]|6058[ADX]|6060[SX]|6062W|6070K|7040[ADEFKRT]|7041[DX]|7042A|7043[AEKY]|7044[AX]|7045Y|7048[ASWX]|7053D|7055A|7070X|7071[ADX]|8030Y|8050[DEGX]|8063|8088[XQM]|9001[DIX]|9002X|9003[AX]|9024O|9005X|9026X|9007[ATX]|9008[ADIJNTUX]|9009G|9010X|9020A|9022X|9027[FTWX]|9029Z|9203A|A(?:464BG|570BL|50[13]DL|57[17]VL|574BL)|I213|I216X|(?<!\\.)80(?:82|6[78])|A576CC)(?:_(?:EEA|RU))?|P360X)(?:[);/ ]|$)",device:"smartphone",models:[{regex:"4087U",model:"1SE Light"},{regex:"5022[EDX]|5070D",model:"One Touch Pop Star"},{regex:"6044D",model:"One Touch Pop Up"},{regex:"4015[ATX]|4016A",model:"One Touch Pop C1"},{regex:"4015[DN]|4016[DX]",model:"One Touch Pop C1 Dual SIM"},{regex:"4032[AX]",model:"One Touch Pop C2"},{regex:"4032[DE]",model:"One Touch Pop C2 Dual SIM"},{regex:"5036D",model:"One Touch Pop C5 Dual SIM"},{regex:"7040[AFK]|7041X|7042A",model:"One Touch Pop C7"},{regex:"7040[DE]|7041D",model:"One Touch Pop C7 Dual SIM"},{regex:"4018[ADEFMX]",model:"One Touch Pop D1"},{regex:"4035[ADXY]",model:"One Touch Pop D3"},{regex:"5038[ADEX]",model:"One Touch Pop D5"},{regex:"4045[AX]",model:'One Touch Pop 2 4"'},{regex:"4045[DE]",model:'One Touch Pop 2 4" Dual SIM'},{regex:"5042[AFGWX]",model:'One Touch Pop 2 4.5"'},{regex:"5042[DE]",model:'One Touch Pop 2 4.5" Dual SIM'},{regex:"7043[AY]|7044[AX]",model:'One Touch Pop 2 5"'},{regex:"7043[EK]",model:'One Touch Pop 2 5" Dual SIM'},{regex:"50[16]5X",model:"One Touch Pop 3"},{regex:"5015[AE]|5016[AJ]|5065[ADWX]|5116J",model:'One Touch Pop 3 5"'},{regex:"5025[DEG]|5054[ADSTX]",model:'One Touch Pop 3 5.5"'},{regex:"5015D",model:"One Touch Pop 3 Dual SIM"},{regex:"5051[AEJMTWX]",model:"One Touch Pop 4"},{regex:"5051D",model:"One Touch Pop 4 Dual SIM"},{regex:"5095[IKY]",model:"One Touch Pop 4S"},{regex:"5056[ADEGJMTUX]",model:"One Touch Pop 4+"},{regex:"7070X",model:'One Touch Pop 4 6"'},{regex:"5057M",model:"One Touch Pop Mirage"},{regex:"5050[ASXY]",model:"One Touch Pop S3"},{regex:"7045Y",model:"One Touch Pop S7"},{regex:"6037[BKY]",model:"One Touch Idol 2"},{regex:"5042T",model:"One Touch Astro"},{regex:"5027B",model:"One Touch Dawn"},{regex:"5024[ADF]|5028Y",model:"1S"},{regex:"7071[ADX]",model:"A7 XL"},{regex:"5002[ADH]",model:"1B (2020)"},{regex:"4034T",model:"1E"},{regex:"5002F",model:"1A (2020)"},{regex:"5034D",model:"3L"},{regex:"A576CC",model:"Kora A576CC"},{regex:"7040[RT]",model:"One Touch Fierce 2"},{regex:"5056[NW]",model:"One Touch Fierce 4"},{regex:"5054N",model:"One Touch Fierce XL"},{regex:"6042D",model:"One Touch Flash"},{regex:"6016[AX]",model:"One Touch Idol 2 mini"},{regex:"6016[DE]",model:"One Touch Idol 2 mini Dual SIM"},{regex:"6036[AXY]",model:"One Touch Idol 2 mini S"},{regex:"6050[AFY]",model:"One Touch Idol 2S"},{regex:"6039[AHJKY]|idol3",model:"One Touch Idol 3"},{regex:"6045[BFIKOYX]",model:'One Touch Idol 3 5.5"'},{regex:"6055[ABDHIKPUYZ]",model:"One Touch Idol 4"},{regex:"6070K",model:"One Touch Idol 4S"},{regex:"6058[ADX]",model:"One Touch Idol 5"},{regex:"6060[SX]",model:"One Touch Idol 5S"},{regex:"6043[AD]",model:"One Touch Idol X+"},{regex:"8030Y",model:"One Touch Hero 2"},{regex:"7055A",model:"One Touch Hero 2C"},{regex:"7053D",model:"One Touch X1"},{regex:"5065N",model:"TRU"},{regex:"A574BL",model:"Raven"},{regex:"A577VL",model:"Zip"},{regex:"A466BG",model:"Pixi Unite"},{regex:"5056I",model:"One Touch Optus X Smart"},{regex:"A570BL",model:"One Touch Pixi Avion LTE"},{regex:"A571VL",model:"One Touch Pixi Avion 4G LTE"},{regex:"4024[DEX]",model:"One Touch Pixi First"},{regex:"A464BG",model:"One Touch Pixi Glitz"},{regex:"A621BL",model:"One Touch Pixi Glory"},{regex:"4014D",model:"One Touch Pixi 2"},{regex:"4009[AFIKMSX]",model:'One Touch Pixi 3 3.5"'},{regex:"4009[DE]",model:'One Touch Pixi 3 3.5" Dual SIM'},{regex:"4003[AJ]|4013[DEJKMX]|4014[AEKMX]|4114E",model:'One Touch Pixi 3 4"'},{regex:"4027[ADNX]|4028[AEJS]|5019D",model:'One Touch Pixi 3 4.5"'},{regex:"5017[ABDEOX]",model:'One Touch Pixi 3 4.5" 4G'},{regex:"9002X",model:'One Touch Pixi 3 7"',device:"phablet"},{regex:"9007A",model:'One Touch Pixi 3 7"',device:"tablet"},{regex:"9007[TX]",model:'One Touch Pixi 3 7" 4G',device:"tablet"},{regex:"9009G",model:"1T",device:"tablet"},{regex:"(?!<\\.)8082(?:_(?:EEA|RU))?(?:[);/ ]|$)",model:"1T 10",device:"tablet"},{regex:"(?!<\\.)806[78](?:_(?:EEA|RU))?(?:[);/ ]|$)",model:"1T 7",device:"tablet"},{regex:"9022X",model:'One Touch Pixi 3 8"',device:"phablet"},{regex:"9010X",model:'One Touch Pixi 3 10"',device:"tablet"},{regex:"4017[ADEFSX]",model:'One Touch Pixi 4 3.5"'},{regex:"4034[ADEFGXL]",model:'One Touch Pixi 4 4"'},{regex:"4060[SW]",model:'One Touch Pixi 4 4.5"'},{regex:"5023[EF]",model:"One Touch Pixi 4 Plus Power"},{regex:"5010[DEGSUX]",model:'One Touch Pixi 4 5" 3G'},{regex:"5041D",model:'One Touch Pixi 4 5.0"'},{regex:"5012[DFG]",model:'One Touch Pixi 4 5.5" 3G'},{regex:"5045[ADFGIJTXY]|5145A",model:'One Touch Pixi 4 5" 4G'},{regex:"5098O",model:"One Touch Pixi Theatre"},{regex:"A501DL",model:"A1"},{regex:"A503DL",model:"A1X"},{regex:"5046[ADIJTUY]",model:"A3"},{regex:"5011A|5049[EG]",model:"A3 Plus"},{regex:"9008[ADIJNTUX]",model:"A3 XL"},{regex:"9203A",model:'A3 7" 3G',device:"tablet"},{regex:"9027[FTWX]",model:'3T 8.0"',device:"tablet"},{regex:"9026X",model:'A3 10"',device:"tablet"},{regex:"5085[BQ]",model:"A5"},{regex:"5085[ADHIJY]",model:"A5 LED"},{regex:"5085N",model:"A5 Max LED"},{regex:"5090[AIY]",model:"A7"},{regex:"5046[GS]",model:"A30"},{regex:"5049S",model:"A30 Plus"},{regex:"5049Z",model:"A30 Fierce"},{regex:"5085[GO]",model:"A50"},{regex:"5048[AYUI]",model:"3X (2019)"},{regex:"5049W",model:"Revvl"},{regex:"8050[GX]",model:'One Touch Pixi 4 6" 3G'},{regex:"8050[ED]",model:'One Touch Pixi 4 6" 3G Dual SIM'},{regex:"5098S|9001[DIX]",model:'One Touch Pixi 4 6" 4G'},{regex:"9003[AX]",model:'One Touch Pixi 4 7" 3G',device:"tablet"},{regex:"8063",model:'One Touch Pixi 4 7" WiFi',device:"tablet"},{regex:"9024O",model:"One Touch Pixi 5",device:"tablet"},{regex:"I216X",model:"One Touch Pixi 7",device:"tablet"},{regex:"I213",model:"One Touch Pixi 7",device:"tablet"},{regex:"9005X",model:"One Touch Pixi 8",device:"tablet"},{regex:"P320X",model:"One Touch POP 8",device:"tablet"},{regex:"P310X",model:"One Touch POP 7",device:"tablet"},{regex:"9020A",model:"One Touch Trek HD",device:"tablet"},{regex:"7048[ASWX]",model:"One Touch Go Play"},{regex:"(?:Alcatel-)?OT-802",model:"Wave"},{regex:"ALCATEL_ONE_TOUCH_768T",model:"Island"},{regex:"(?:TRIBE_)?3075A",model:"One Touch Tribe"},{regex:"ALCATEL_one_touch_585",model:"One Touch 585"},{regex:"ALCATEL_ONE_TOUCH_838",model:"One Touch 838"},{regex:"ALCATEL_one_touch_813d",model:"One Touch 813D"},{regex:"ALCATEL_one_touch_813",model:"One Touch 813"},{regex:"OT871A",model:"One Touch 871A"},{regex:"P360X",model:"One Touch Pop 10"},{regex:"(?:Alcatel[ _])?One[ _]?Touch[ _]((?:T[0-9]+|TAB[^/;]+|EVO[78](?:HD)?)) Build",device:"tablet",model:"One Touch $1"},{regex:"(?:Alcatel[ _])?One[ _]?Touch([^/;]*) Build",model:"One Touch$1"},{regex:"(?:Alcatel[ _])?One[ _]?Touch([^/;\\)]*)\\)",model:"One Touch$1"},{regex:"5080[ADFQUX]",model:"Shine Lite"},{regex:"TIMXL",model:"TIM XL"},{regex:"5085C",model:"PulseMix"},{regex:"4049[DEGMX]",model:"U3"},{regex:"5044[ADIKOPTY]",model:"U5"},{regex:"4047[DFXN]",model:"U5 3G"},{regex:"5047[DIUY]",model:"U5 HD"},{regex:"4047G",model:"U5 Lite"},{regex:"4047A",model:"U5 Plus"},{regex:"4044[CV]",model:"Quick Flip"},{regex:"4044O",model:"Cingular Flip 2"},{regex:"(?:Alcatel)?4044[MNT]",model:"Go Flip"},{regex:"5044[GS]",model:"U50"},{regex:"5033[ADXJEFGMOTXYQS]",model:"1"},{regex:"5009[AD]",model:"1C"},{regex:"5008[ADUYT]",model:"1X (2019)"},{regex:"5007[AU]",model:"1V (2020)"},{regex:"5003[ADGU]",model:"1C (2019)"},{regex:"5006D",model:"3C (2019)"},{regex:"5024J",model:"1S"},{regex:"5028[AD]",model:"1S (2020)"},{regex:"5030[DE]",model:"1SE (2020)"},{regex:"5001[ADJTU]",model:"1V"},{regex:"5059[ADJXYZIT]",model:"1X"},{regex:"5059S",model:"Avalon V"},{regex:"5060[ADJ]",model:"5V",device:"phablet"},{regex:"5052[ADY]|5053[ADKY]",model:"3"},{regex:"5029E",model:"3 (2020)"},{regex:"5029[DY]",model:"3L (2020)"},{regex:"5032W|5099[ADYUI]",model:"3V"},{regex:"5026[ADJ]",model:"3C"},{regex:"5039[DY]",model:"3L",device:"phablet"},{regex:"5058[AIY]",model:"3X"},{regex:"5061[KU]",model:"3X (2020)"},{regex:"5086[ADY]",model:"5"},{regex:"6062W",model:"7"},{regex:"8088[XQM]",model:"3T 10",device:"tablet"},{regex:"9029Z",model:"Joy Tab",device:"tablet"},{regex:"9029Z",model:"Joy Tab",device:"tablet"},{regex:"Alcatel UP",model:""},{regex:"(?:ALCATEL_)?A383G",model:"Big Easy Plus"},{regex:"5041C",model:"TETRA"},{regex:"ALCATEL([^/;]+) Build",model:"$1"},{regex:"ALCATEL[ \\-]?([^/;\\)]+)",model:"$1"},{regex:"ALCATEL_([^/;\\)]+)",model:"$1"},{regex:"Alc([a-z0-9]+)",model:"$1"}]},Allview={regex:"Allview|A4You|H1003_LTE_PRO|A5_(?:Easy(?:_TM)?|Ready(?:_TM)?|Quad|Quad_Plus_TM)|A[5-9]_Lite|A5Smiley|A6_Duo|A10_Lite_2019|A10_(?:Plus|Max)|AX2_Frenzy|AX4Nano|AX5NanoQ|C6_Duo|E[23]_Living|E3_(?:Jump|Sign)|E4_Lite|M9_Connect|P(?:43_Easy|[5689]_Energy|6_Energy_Lite|[68]_Energy_Mini(?:_TM)?|(41|[458])_eMagic(?:_TM)?|[589](?:_)?Life(?:_TM)?|[567]_Lite(?:_TM)?|6_plus|[45678]_Pro|7_Seon|10_Life|10_Max|10_Style|7_Xtreme|6_Qmax|4_Quad)|V(?:[134]_Viper|1_Viper_I|2_Viper_(?:E|I|S|X|X_plus|Xe))|X4_Soul_Vision|X(?:[1-46]_Soul_Xtreme|[1-5]_Soul|3_Soul_Lite|[2-6]_Soul_Mini(?:_TM)?|4_Soul_Mini_S(?:_TM)?|[2-5]_Soul_Style(?:_TM)?|2_Soul_Style_Plus|2_Twin)|Viva_(?:H801|100[13]G|(?:H100[12]|H701|H802)_LTE|C701|i701G)",device:"smartphone",models:[{regex:"A4You",model:"A4 You"},{regex:"AX2_Frenzy",model:"AX2 Frenzy",device:"tablet"},{regex:"AX4Nano",model:"AX4 Nano"},{regex:"AX5NanoQ",model:"AX5 Nano Q",device:"tablet"},{regex:"C6_Duo",model:"C6 Duo"},{regex:"E([23])_Living",model:"E$1 Living"},{regex:"E3_Jump",model:"E3 Jump"},{regex:"E3_Sign",model:"E3 Sign"},{regex:"E4_Lite",model:"E4 Lite"},{regex:"M9_Connect",model:"M9 Connect"},{regex:"P43_Easy",model:"P43 Easy"},{regex:"P(41|[458])_eMagic(?:_TM)?",model:"P$1 eMagic"},{regex:"P([567])_Lite(?:_TM)?",model:"P$1 Lite"},{regex:"P6_plus",model:"P6 Plus"},{regex:"P6_Qmax",model:"P6 Qmax"},{regex:"P([45678])_Pro",model:"P$1 Pro"},{regex:"P4_Quad",model:"P4 Quad"},{regex:"P9_Energy_Lite_2017",model:"P9 Energy Lite (2017)"},{regex:"P9_Energy_S",model:"P9 Energy S"},{regex:"P([69])_Energy_Lite",model:"P$1 Energy Lite"},{regex:"P8_Energy_PRO",model:"P8 Energy Pro"},{regex:"P([689])_Energy_mini(?:_TM)?",model:"P$1 Energy Mini"},{regex:"P([5689])_Energy",model:"P$1 Energy"},{regex:"P7_Seon",model:"P7 Seon"},{regex:"P7_Xtreme",model:"P7 Xtreme"},{regex:"P([589])(?:_)?Life(?:_TM)?",model:"P$1 Life"},{regex:"P10_Life",model:"P10 Life"},{regex:"P10_Max",model:"P10 Max"},{regex:"P10_Style",model:"P10 Style"},{regex:"V([12])_Viper_I4G(?:_TM)?",model:"V$1 Viper I 4G"},{regex:"V1_Viper_I",model:"V1 Viper I"},{regex:"V([134])_Viper",model:"V$1 Viper"},{regex:"V2_Viper_X_plus",model:"V2 Viper X Plus"},{regex:"V2_Viper_(E|I|S|X(?:e)?)",model:"V2 Viper $1"},{regex:"X4_Soul_Vision",model:"X4 Soul Vision"},{regex:"X([1246])_Soul_Xtreme",model:"X$1 Soul Xtreme"},{regex:"X4_Soul_Infinity_(L|N|S|Z)",model:"X4 Soul Infinity $1"},{regex:"X([34])_Soul_Lite",model:"X$1 Soul Lite"},{regex:"X4_Soul_Mini_S(?:_TM)?",model:"X4 Soul Mini S"},{regex:"X([23456])_Soul_Mini(?:_TM)?",model:"X$1 Soul Mini"},{regex:"X3_Soul_PLUS",model:"X3 Soul Plus"},{regex:"X([35])_Soul_Pro",model:"X$1 Soul Pro"},{regex:"X2_Soul_Style_Plus",model:"X2 Soul Style Plus"},{regex:"X([2345])_Soul_Style(?:_TM)?",model:"X$1 Soul Style"},{regex:"X([12345])_Soul",model:"X$1 Soul"},{regex:"X2_Twin",model:"X2 Twin"},{regex:"A5_Easy(?:_TM)?",model:"A5 Easy"},{regex:"A([56789])_Lite",model:"A$1 Lite"},{regex:"A5_Ready(?:_TM)?",model:"A5 Ready"},{regex:"A5Smiley",model:"A5 Smiley"},{regex:"A5_Quad_Plus_TM",model:"A5 Quad Plus"},{regex:"A5_Quad",model:"A5 Quad"},{regex:"A6_Duo",model:"A6 Duo"},{regex:"A10_Lite_2019",model:"A10 Lite (2019)"},{regex:"A10_Plus",model:"A10 Plus"},{regex:"A10_Max",model:"A10 Max"},{regex:"Impera S",model:"Impera S"},{regex:"ALLVIEW P4i",model:"AllDro P4"},{regex:"Allview_P2",model:"AllDro"},{regex:"AllviewCityPlus",device:"tablet",model:"City Plus"},{regex:"AllviewCity",device:"tablet",model:"City"},{regex:"AllviewAX2Frenzy",device:"tablet",model:"AX2 Frenzy"},{regex:"Allview2SpeedDuo",device:"tablet",model:"Alldro 2 Speed Duo"},{regex:"Allview3SpeedQuad",device:"tablet",model:"Alldro 3 Speed Quad"},{regex:"H1003_LTE_PRO",device:"tablet",model:"Viva H1003 LTE Pro"},{regex:"Viva_(H801|100[13]G|(?:H802|H100[12]|H701)_LTE|C701|i701G)",device:"tablet",model:"Viva $1"},{regex:"ALLVIEW ?SPEEDI",device:"tablet",model:"Speed I"},{regex:"ALLVIEW ?SPEED",device:"tablet",model:"Speed"},{regex:"ALLVIEWSPEED",device:"tablet",model:"Speed"},{regex:"AX4Nano",device:"tablet",model:"AX4 Nano"},{regex:"ALLVIEW_TX1_Quasar",device:"tablet",model:"TX1 Quasar"},{regex:"Allview[ _-]([^;/]+) Build",model:"$1"},{regex:"Allview[ _-]([^;/]+)(?:[;/)]|$)",model:"$1"}]},Allwinner={regex:"(?:QUAD-CORE (?:A64 p3|A33 y3|T3 K2001M)|ZY-07B|UltraOcta-T8|OCTA-CORE T8)(?:[);/ ]|$)",device:"tablet",models:[{regex:"QUAD-CORE A64 p3",model:"A64 QUAD-CORE p3"},{regex:"QUAD-CORE A33 y3",model:"A33 QUAD-CORE y3"},{regex:"ZY-07B",model:"ZY-07B"},{regex:"UltraOcta-T8",device:"car browser",model:"Ultra Octa T8"},{regex:"QUAD-CORE T3 K2001M",device:"car browser",model:"QUAD-CORE T3 K2001M"},{regex:"OCTA-CORE T8",device:"car browser",model:"OCTA-CORE T8"}]},altron={regex:"(AL-555|GI-626|OB[_-](?:421|728|627))(?:[);/ ]|$)",device:"smartphone",models:[{regex:"AL-555",model:"AL-555"},{regex:"OB[_-](421|728|627)",model:"OB-$1"},{regex:"GI-626",device:"phablet",model:"GI-626"}]},AMGOO={regex:"AM(350|355|40[257]|41[025]|450|50[89]|52[037]|51[58]|53[05])(?:[);/ ]|$)",device:"smartphone",models:[{regex:"AM350",model:"Jack Pro"},{regex:"AM(355|407)",model:"Tigo"},{regex:"AM402",model:"Pronto"},{regex:"AM410",model:"Unico"},{regex:"AM450",model:"Swift"},{regex:"AM508",model:"Fuego"},{regex:"AM509",model:"Uno"},{regex:"AM515",model:"D1"},{regex:"AM518",model:"C1"},{regex:"AM520",model:"Pro"},{regex:"AM523",model:"Plus"},{regex:"AM527",model:"Geo"},{regex:"AM530",model:"A1"},{regex:"AM535",model:"P1"},{regex:"AM([0-9]{3})",model:"AM$1"}]},Amoi={regex:"Amoi|(?:A862W|Clever[ -]?(?:Gem S52|Gleam S45|Pad P7|Wave S50|Touch S46|JOY S40|Lite S41))(?:[);/ ]|$)",device:"smartphone",models:[{regex:"Clever Pad P7",model:"Clever Pad P7"},{regex:"A862W",model:"A862W"},{regex:"CLEVER JOY S40",model:"Clever Joy S40"},{regex:"Clever[ -]?(Gleam S45|Gem S52|Wave S50|Touch S46|Lite S41)",model:"Clever $1"},{regex:"Amoi[\\- /]([a-z0-9]+)",model:"$1"},{regex:"Amoisonic-([a-z0-9]+)",model:"$1"}]},Ainol={regex:"Numy|novo[0-9]|Novo 10 Hero|AX10PRO|NUMY3GAX9|NOVO10 Spark|Aurora-II",device:"tablet",models:[{regex:"Numy 3G AX1",model:"Novo 7 Numy AX1 3G"},{regex:"Numy[_ ]?3G[_ ]?Sword",model:"Numy 3G Sword"},{regex:"NOVO10 Spark",model:"Novo 10 Spark"},{regex:"AX10PRO",model:"Numy AX10 Pro"},{regex:"Numy_3G_AX3",model:"Numy AX3 Sword"},{regex:"Numy3GTalos",model:"Numy 3G Talos"},{regex:"Numy_3G_BW1",model:"Numy 3G Talos 2"},{regex:"NUMY3GAX9(?:[);/ ]|$)",model:"Numy 3G AX9"},{regex:"Numy3G_AX10(?:[);/ ]|$)",model:"Numy 3G AX10"},{regex:"(Novo 10 Hero QuadCore)",model:"$1"},{regex:"Aurora-II",model:"Novo 7 Aurora II"},{regex:"Novo7 Flame(?:[);/ ]|$)",model:"Novo 7 Flame"},{regex:"NOVO7(?:[);/ ]|$)",model:"Novo 7"},{regex:"Numy[ _]([^;/]+) Build",model:"Numy $1"},{regex:"Novo([0-9]+)[ \\-]([^;/]+) Build",model:"Novo $1 $2"}]},Archos$1={regex:"(?:YL-)?Archos|(?:A50TI|AC101BHE)(?:[);/ ]|$)",device:"smartphone",models:[{regex:"Archos (Oxygen (?:63|57|68XL))(?:[);/ ]|$)",model:"$1"},{regex:"A50TI(?:[);/ ]|$)",model:"50 Titanium 4G"},{regex:"Archos ?5(?:[);/ ]|$)",device:"tablet",model:"5"},{regex:"AC101BHE(?:[);/ ]|$)",device:"tablet",model:"101B Helium 4G"},{regex:"(?:YL-)?Archos ([^/;]*(?:PAD)[^/;]*) Build",device:"tablet",model:"$1"},{regex:"Archos ((?:[789]|10)[0-9]?[a-z]* ?(?:G9|G10|Helium|Titanium|Cobalt|Platinum|Xenon|Carbon|Neon|XS|IT)[^/;]*) Build",device:"tablet",model:"$1"},{regex:"(?:YL-)?Archos ([a-z0-9 ]+) Build",model:"$1"},{regex:"(?:YL-)?Archos ([a-z0-9]+)",model:"$1"}]},Axxion={regex:"Axxion ATAB-[0-9]+(?:[);/ ]|$)",device:"tablet",models:[{regex:"Axxion ATAB-([0-9]+)(?:[);/ ]|$)",model:"ATAB-$1"}]},MEU={regex:"MEU ([a-z0-9]+) Build",device:"smartphone",model:"$1"},Arnova={regex:"arnova|ARCHM901|AN7CG2|AN7G2(DTE|I)?|AN7[BCDFH]?G3|A80KSC|AN8G2|AN8[BC]?G3|AN9G2I?|AN9G3|A101[BC]|AN10G2|AN10BG2(DT|I)?|AN10BG3(DT)?|AN10[CD]G3",device:"tablet",models:[{regex:"ARCHM901",model:"M901"},{regex:"AN7CG2",model:"7c G2"},{regex:"AN7G2I|AN7G2|AN7G2DTE",model:"7 G2"},{regex:"AN7G3",model:"7 G3"},{regex:"AN7BG3",model:"7b G3"},{regex:"AN7CG3",model:"7c G3"},{regex:"AN7DG3-CP",model:"Childpad"},{regex:"AN7DG3",model:"7d G3"},{regex:"AN7FG3",model:"7f G3"},{regex:"AN7HG3",model:"7h G3"},{regex:"A80KSC",model:"8"},{regex:"AN8G2",model:"8 G2"},{regex:"AN8G3",model:"8 G3"},{regex:"AN8BG3",model:"8b G3"},{regex:"AN8CG3",model:"8c G3"},{regex:"AN9G2I",model:"9i G2"},{regex:"AN9G2",model:"9 G2"},{regex:"AN9G3",model:"9 G3"},{regex:"A101B2|A101C|AN10G2",model:"10 G2"},{regex:"A101B",model:"10"},{regex:"AN10BG2|AN10BG2DT|AN10BG2I",model:"10b G2"},{regex:"AN10BG3|AN10BG3DT|AN10BG3-LZ",model:"10b G3"},{regex:"AN10CG3",model:"10c G3"},{regex:"AN10DG3",model:"10d G3"},{regex:"ARNOVA 90G3",model:"90 G3"},{regex:"ARNOVA 90 G4",model:"90 G4"},{regex:"ARNOVA 97G4",model:"97 G4"},{regex:"ARNOVA 101 G4",model:"101 G4"},{regex:"Arnova ([^/;]*) Build",model:"$1"}]},ARRIS$1={regex:"ARRIS",device:"tv",models:[{regex:"ARRIS[,;] ([^),;/]+)",model:"$1"}]},Ask={regex:"ASK[ _]",device:"smartphone",models:[{regex:"ASK[ _]791SP[ _]3G",model:"791SP 3G",device:"tablet"},{regex:"ASK[_ ]([^/;]*) Build",model:"$1"}]},ANS={regex:"UL40 Build",device:"smartphone",model:"UL40"},AOC$1={regex:"AOC,",device:"tv",models:[{regex:"(LE(?:32|43)S5970(?:s)?-20|LE55U7970-30|LE43S5977-20|U60856)",model:"$1"}]},Assistant={regex:"(AS[-_](?:50[123]|543[1-6]|44[12]1|541[12]|54[23]1|6431|[46]01L)|AP-(?:109|115G|721N|753G|7[25]7G|10[68]|107G|110N|941|719))[;/)_ ]",device:"smartphone",models:[{regex:"AS[-_]401L(?:[);/ ]|$)",model:"Asper"},{regex:"AS-5432(?:[);/ ]|$)",model:"Agio"},{regex:"AS[-_](?:5434|501)(?:[);/ ]|$)",model:"Club"},{regex:"AS_601L(?:[);/ ]|$)",model:"AS-601L"},{regex:"AS-5433 Secret(?:[);/ ]|$)",model:"Secret"},{regex:"AS-5433(?:[);/ ]|$)",model:"Max Secret"},{regex:"AS-5421(?:[);/ ]|$)",model:"Surf"},{regex:"AS-44[12]1(?:[);/ ]|$)",model:"Unami"},{regex:"AS-5431(?:[);/ ]|$)",model:"Prima"},{regex:"AS-502(?:[);/ ]|$)",model:"Shot"},{regex:"AS-503(?:[);/ ]|$)",model:"Target"},{regex:"AS-5435(?:[);/ ]|$)",model:"Shine"},{regex:"AS-5436[ _]",model:"Grid"},{regex:"AS-6431(?:[);/ ]|$)",model:"Rider"},{regex:"AS-5411[_ ]",model:"Max Ritm"},{regex:"AS-5412 Max(?:[);/ ]|$)",model:"AS-5412 Max"},{regex:"AP-721N(?:[);/ ]|$)",model:"AP-721N Force",device:"tablet"},{regex:"AP-941(?:[);/ ]|$)",model:"AP-941",device:"tablet"},{regex:"AP-108(?:[);/ ]|$)",model:"Cetus",device:"tablet"},{regex:"AP-106(?:[);/ ]|$)",model:"AP-106 Force",device:"tablet"},{regex:"(AP-(?:109|115G|7[25]7G|753G|107G|110N|719))(?:[);/ ]|$)",device:"tablet",model:"$1"}]},Ark={regex:"(ARK[_ -])?Benefit[_ -]([^/;]*)(?: Build|\\))|EDGE A5HD|Elf_S8|ICON (R40\\+|R45)|Impulse[ _](P[12])|Wizard_[12](?:[);/ ]|$)",device:"smartphone",models:[{regex:"(?:ARK[_ -])?Benefit[_ -]([^/;]*)(?: Build|\\))",model:"Benefit $1"},{regex:"Impulse[ _]P1\\+",model:"Impulse P1 Plus"},{regex:"Impulse[ _](P[12])",model:"Impulse $1"},{regex:"EDGE (A5HD)",model:"Edge $1"},{regex:"ICON (R40\\+|R45)",model:"Icon $1"},{regex:"Wizard_([12])",model:"Wizard $1"},{regex:"Elf_S8(?:[);/ ]|$)",model:"Elf S8"}]},Asus$2={regex:"Asus|Transformer|ZenFone Max|TF300T|Slider SL101|PadFone|ME302(?:C|KL)|ME301T|ME371MG|ME17(?:1|2V|3X)|(?:K0[01][0-9a-z]|P(?:00[18ACIL]|01[MTVWYZ]|01MA|01T_1|02[13478])(?: Build|\\))|X015D|X018D|X003|X00[7ABT]D|Z00D|Z00[MTY]D|Z01[7FGHKMR]D)(?:[);/ ]|$)|G55[023]KL|ZB(631|602|633|55[135]|50[01])KL|ZC(55[134]|520|600)KL|ZA550KL|ZE(5[02]0|620|55[2345])KL|ZD55[23]KL|ZS6(?:61|7[01])KS|ZS(6[0236]0|55[10])KL|ZB(500KG|601KL)|MeMo Pad FHD 10 LTE|Z00[SV]D",device:"smartphone",models:[{regex:"ME171(?:[);/ ]|$)",model:"Eee Pad MeMO 171",device:"tablet"},{regex:"ASUS Z906(?:[);/ ]|$)",model:'Z906 10.1"',device:"tablet"},{regex:"ME172V",model:"MeMO Pad",device:"tablet"},{regex:"ME302C(?:[);/ ]|$)",model:"MeMO Pad FHD 10",device:"tablet"},{regex:"(ME302KL|MeMo Pad FHD 10 LTE)(?:[);/ ]|$)",model:"MeMO Pad FHD 10 LTE",device:"tablet"},{regex:"ME301T(?:[);/ ]|$)",model:"MeMO Pad Smart 10",device:"tablet"},{regex:"Z101(?:[);/ ]|$)",model:"Z101",device:"tablet"},{regex:"X Pad 10 LTE(?:[);/ ]|$)",model:"X Pad 10 LTE",device:"tablet"},{regex:"(?:K01[3A]|K007|K00R)(?:[);/ ]|$)|MeMO Pad 7",model:"MeMO Pad 7",device:"tablet"},{regex:"K01E(?:[);/ ]|$)",model:"MeMO Pad 10 ME103K",device:"tablet"},{regex:"K00U|ME173X(?:[);/ ]|$)",model:"MeMO Pad HD 7",device:"tablet"},{regex:"(?:K011|K00L)(?:[);/ ]|$)",model:"MeMO Pad 8",device:"tablet"},{regex:"K014(?:[);/ ]|$)",model:"MeMO Pad 8.9",device:"tablet"},{regex:"K00S(?:[);/ ]|$)",model:"MeMO Pad HD 7 Dual SIM",device:"tablet"},{regex:"K00F(?:[);/ ]|$)",model:"MeMO Pad 10",device:"tablet"},{regex:"K00C(?:[);/ ]|$)",model:"Transformer Pad TF701T",device:"tablet"},{regex:"K010(?:[);/ ]|$)",model:"Transformer Pad TF103C",device:"tablet"},{regex:"K018(?:[);/ ]|$)",model:"Transformer Pad TF103CG",device:"tablet"},{regex:"TF300T(?:[);/ ]|$)",model:"Transformer Pad TF300T",device:"tablet"},{regex:"K01B(?:[);/ ]|$)",model:"Transformer Pad TF303K",device:"tablet"},{regex:"Slider SL101",model:"Eee Pad Slider SL101",device:"tablet"},{regex:"P01[YZ]",model:"ZenPad C 7.0",device:"tablet"},{regex:"P008 Build",model:"ZenPad Z8",device:"tablet"},{regex:"P001",model:"ZenPad Z10",device:"tablet"},{regex:"(?:ASUS_)?P00J",model:"ZenPad Z8s",device:"tablet"},{regex:"P01[VW]",model:"ZenPad 7.0",device:"tablet"},{regex:"(?:P024|P00A)(?:[);/ ]|$)",model:"ZenPad 8.0",device:"tablet"},{regex:"P01MA(?: Build|\\))|P01M(?: Build|\\))",model:"ZenPad S 8.0",device:"tablet"},{regex:"P027",model:"ZenPad 3S 10",device:"tablet"},{regex:"(?:ASUS_)?P00I",model:"ZenPad 3S 10 LTE",device:"tablet"},{regex:"(?:ASUS_)?P00C|P02[138]|P00L|P01T_1",model:"ZenPad 10",device:"tablet"},{regex:"ASUS Tablet P1801-T",model:'Transformer AiO P1801 18.4"',device:"tablet"},{regex:"ASUS TAB A8",model:"TAB A8",device:"tablet"},{regex:"ME371MG(?:[);/ ]|$)",model:"Fonepad",device:"phablet"},{regex:"K00G(?:[);/ ]|$)",model:"Fonepad Note 6",device:"phablet"},{regex:"(?:K012|K00E)(?:[);/ ]|$)",model:"Fonepad 7",device:"phablet"},{regex:"K00Z(?:[);/ ]|$)",model:"Fonepad 7 Dual SIM",device:"phablet"},{regex:"K016(?:[);/ ]|$)",model:"Fonepad 8",device:"phablet"},{regex:"(?:ASUS_)?T00N",model:"PadFone S"},{regex:"(?:ASUS_)?T00[CE]",model:"PadFone Mini"},{regex:"(?:ASUS[-_])?T00T",model:"PadFone X Mini"},{regex:"PadFone T008",model:"PadFone E"},{regex:"PadFone T004",model:"PadFone Infinity"},{regex:"(?:ASUS_)?A002(A)?",model:"ZenFone AR"},{regex:"(?:ASUS_)?A006",model:"ZenFone V"},{regex:"(?:ASUS_)?A009",model:"ZenFone V Live"},{regex:"(?:ASUS_)?Z007",model:"ZenFone C"},{regex:"(?:ASUS_)?(X00P[SD]|ZB555KL)",model:"ZenFone Max M1"},{regex:"(?:ASUS_)?(?:ZB60[12]KL)|ZenFone Max Pro M1",model:"ZenFone Max Pro M1"},{regex:"(?:ASUS_)?(X01([AB]D)|ZB633KL)(?:[);/ ]|$)",model:"ZenFone Max M2"},{regex:"(?:ASUS_)?(?:Z00[AD]|Z008D|Z008|Z00AD[AB]?|ZE551ML)",model:"ZenFone 2"},{regex:"(?:ASUS_)?(?:ZenFone 2E)",model:"ZenFone 2E"},{regex:"(?:ASUS_)?(?:A007|Z00YD|ZA550KL|ZB553KL|ZB501KL)(?:[);/ ]|$)",model:"ZenFone Live"},{regex:"(?:ASUS_)?(?:X00RD|G552KL)",model:"ZenFone Live L1"},{regex:"G553KL",model:"ZenFone Lite L1"},{regex:"(?:ASUS_)?(?:Z00[ERLMTW]D|Z011D|ZE500KL)",model:"ZenFone 2 Laser"},{regex:"(?:ASUS_)?(?:T00[IQ1]|Z01KD)",model:"ZenFone 4"},{regex:"(?:ASUS_)?(?:T00[JF]|X00QD|X00QSA|ZE620KL)",model:"ZenFone 5"},{regex:"(?:ASUS_)?T00P",model:"ZenFone 5 LTE"},{regex:"(?:ASUS_)?(?:T00K|X017DA|X017D|ZC600KL)",model:"ZenFone 5 Lite"},{regex:"(?:ASUS_)?(?:Z01RD|ZS620KL)",model:"ZenFone 5Z"},{regex:"(?:ASUS_)?(?:T00G|Z002|ZS630KL|I01WD[X]?)",model:"ZenFone 6"},{regex:"(?:ASUS_)?ZS671KS",model:"ZenFone 7 Pro"},{regex:"(?:ASUS_)?(?:ZS670KS|I002D)(?:[);/ ]|$)",model:"ZenFone 7"},{regex:"(?:ASUS_)?Z010D",model:"ZenFone Max"},{regex:"(?:ASUS_)?X018D",model:"ZenFone Max Plus M1"},{regex:"(?:ASUS_)?X00TD?",model:"ZenFone Max Pro M1"},{regex:"(?:ASUS_)?(?:X01BDA|ZB631KL|Zenfone Max Pro M2)",model:"ZenFone Max Pro M2"},{regex:"(?:ASUS_)?X014D",model:"ZenFone Go Plus"},{regex:"(?:ASUS_)?(L001|X00[7AB]D|X009[DB][DA]|X009D|Z00[SV]D|ZB500K[LG]|ZB551KL)",model:"ZenFone Go"},{regex:"(?:ASUS_)?X013D",model:"ZenFone Go Life"},{regex:"(?:ASUS_)?G550KL",model:"ZenFone Go TV"},{regex:"(?:ASUS_)?Z00[SV]D",model:"ZenFone Go"},{regex:"(?:ASUS_)?(X00[23])",model:"ZenFone Pegasus"},{regex:"(?:ASUS_)?X005",model:"ZenFone Pegasus 5000"},{regex:"(?:ASUS_)?X550",model:"ZenFone Pegasus 2 Plus"},{regex:"(?:ASUS_)?(X00GD)",model:"ZenFone Pegasus 3S Max"},{regex:"(?:ASUS_)?(?:X00D[DS]|X008D)|ZC553KL",model:"ZenFone 3 Max"},{regex:"(?:ASUS_)?(X008)",model:"ZenFone 3 Pegasus"},{regex:"(?:ASUS_)?(ZE553KL|Z01HD)",model:"ZenFone 3 Zoom"},{regex:"(?:ASUS_)?ZS550KL",model:"ZenFone 3 Deluxe"},{regex:"(?:ASUS_)?Z00UD",model:"ZenFone Selfie"},{regex:"(?:ASUS_)?(Z016[DS]|Z01FD)",model:"ZenFone 3 Deluxe"},{regex:"(?:ASUS_)?(Z017DA|ZE520KL|ZE552KL|Z017D|Z012(D|S))",model:"ZenFone 3"},{regex:"(?:ASUS_)?Z01B[DS]|ZC551KL",model:"ZenFone 3 Laser"},{regex:"(?:ASUS_)?A001",model:"ZenFone 3 Ultra"},{regex:"(?:ASUS_)?(?:ZD552KL|Z01MDA?)(?:[);/ ]|$)",model:"ZenFone 4 Selfie Pro"},{regex:"(?:ASUS_)?(?:X00LDA|ZD553KL)",model:"ZenFone 4 Selfie"},{regex:"(?:ASUS_)?(?:X00LD|Z01KS|Z01KDA|ZE554KL)",model:"ZenFone 4"},{regex:"(?:ASUS_)?X00(?:[HIK]D|IS)|ZC554KL|ZC520KL",model:"ZenFone 4 Max"},{regex:"(?:ASUS_)?X015D",model:"ZenFone 4 Max Plus"},{regex:"(?:ASUS_)?(:?Z01G[DS]|ZS551KL)",model:"ZenFone 4 Pro"},{regex:"(?:ASUS_)?Z00XS",model:"ZenFone Zoom"},{regex:"(?:ASUS_)?(?:Z01QD|ZS600KL)",model:"ROG Phone"},{regex:"(?:ASUS_)?(?:I001D[ABCE]?|ZS660KL)",model:"ROG Phone 2"},{regex:"(?:ASUS_)?(?:I003DD?|ZS661KS)",model:"ROG Phone 3"},{regex:"(?:ASUS_)?(?:I005DA)",model:"ROG Phone 5"},{regex:"ZN220IC",device:"desktop",model:"Zen AiO ZN220IC"},{regex:"(?:ASUS_)?ZenWatch( 2)?",device:"wearable",model:"ZenWatch$1"},{regex:"Asus(?:-|;)?([a-z0-9]+)",model:"$1"},{regex:"(PadFone(?: [^;/]+)?) Build",model:"$1"},{regex:"(PadFone(?: [a-z0-9]+)?)",model:"$1"},{regex:"(?:Asus|Transformer) ((?:Pad |Prime )?TF[0-9a-z]+)",device:"tablet",model:"Transformer $1"},{regex:"Chromebook Flip (C10[01]PA|C302)",device:"desktop",model:"Chromebook Flip $1"}]},Audiovox={regex:"Audiovox|CDM|UTS(?:TARCOM)?\\-|audio(?!book)[a-z0-9\\-]+",device:"smartphone",models:[{regex:"Audiovox[_\\-]([a-z0-9\\-]+)",model:"$1"},{regex:"CDM(?:-)?([a-z0-9]+)",model:"CDM-$1"},{regex:"UTS(?:TARCOM)?-([a-z0-9\\-]+)",model:"CDM-$1"},{regex:"audio([a-z0-9\\-]+)",model:"CDM-$1"}]},AVH={regex:"Excer[ _]",device:"tablet",models:[{regex:"Excer[ _]G5.3",model:"Excer G5.3"},{regex:"Excer[ _]G5",model:"Excer G5"},{regex:"Excer[ _]10[ _]PRO",model:"Excer 10 Pro"},{regex:"Excer[ _]8",model:"Excer 8"}]},Avvio={regex:"Avvio[ _]?([a-z0-9\\-]+)|(?:CHIVAS_55|Colombia_2018|Mint_M353)(?:[);/ ]|$)",device:"smartphone",models:[{regex:"CHIVAS_55",model:"Chivas 55"},{regex:"Mint_M353",model:"Mint M353"},{regex:"Colombia_2018",model:"Colombia (2018)"},{regex:"Avvio[ _]PAD",model:"PAD",device:"tablet"},{regex:"Avvio[ _]?([a-z0-9\\-]+)",model:"$1"}]},BGH={regex:"(?!Positivo )BGH ([^/;\\)]+)(?: Build|\\))",device:"smartphone",models:[{regex:"Y([17]00|2[01]0|1010)",device:"tablet",model:"Y$1"},{regex:"BGH (\\+Simple|Mini)",device:"tablet",model:"$1"},{regex:"Y710 KIDS",device:"tablet",model:"Y710 Kids"},{regex:"JOY X2",model:"Joy X2"},{regex:"BGH ([^/;\\)]+)(?: Build|\\))",model:"$1"}]},Bitel={regex:"Bitel[ _-]([^/;]+) Build|(?:B(?:840[5-9]|841[0456]|850[2346]|860[146]|9401|950[1-5])|S8402L?|S8501L?)(?:[);/ ]|$)",device:"smartphone",models:[{regex:"(B(?:840[5789]|841[0456]|850[2346]|860[146]|9401|950[12345])|S8402L?|S8501L?)",model:"$1"},{regex:"Bitel[ _-]([^/;]+) Build",model:"$1"}]},Blu={regex:"BLU[ _]|(?:blu|Dash)[ _]([^/;)]+)(?: Build|[;)])|(?:Studio[ _](5.0K|5.5|View XL|Mega|C 8\\+8|[CGM][ _]HD|[CGX]|SELFIE|Selfie LTE|Touch|M5 Plus|J[1258]|X8 HD)|Advance (4.0 ?[LM]|5.[02](?: HD)?|A4|L[45])|ENERGY (DIAMOND|XL)|Energy X 2|LIFE XL|B110DL|Dash (?:X[2L]|L3)|PURE (?:X[LR]|MINI)|Life One X2|G90(?: PRO)?|Grand M3|GRAND (?:5.5 HD|XL LTE)|R1 (?:HD|PLUS)|Tank Xtreme [45].0|Tank Xtreme Pro|Touchbook M7 Pro|DASH X PLUS|C[456] 2019|BOLD N1|B130DL|Vivo 5 Mini)(?:[);/ ]|$)",device:"smartphone",models:[{regex:"Advance (4.0 ?[LM]|4.0|5.[02](?: HD)?|A4|L[54])",model:"Advance $1"},{regex:"(?:BLU[_ ])?Studio[ _](5.0 C|5.5|View XL|Mega|C 8\\+8|[CG][ _]HD|C|G|Touch|M HD|M5 Plus|J[1258]|X8 HD|X5|XL|X)(?:[);/ ]|$)",model:"Studio $1"},{regex:"(?:BLU[_ ])?Studio[ _]5.0 ?K(?:[);/ ]|$)",model:"Studio 5.0 K"},{regex:"STUDIO SELFIE LTE",model:"Studio Selfie LTE"},{regex:"STUDIO ONE",model:"Studio One"},{regex:"STUDIO SELFIE ([23]|LTE)",model:"Studio Selfie $1"},{regex:"STUDIO SELFIE",model:"Studio Selfie"},{regex:"(?:BLU[_ ])?NEO_ENERGY_MINI",model:"Neo Energy Mini"},{regex:"ENERGY DIAMOND",model:"Energy Diamond"},{regex:"ENERGY XL",model:"Energy XL"},{regex:"Energy X 2",model:"Energy X 2"},{regex:"ENERGY X PLUS 2",model:"Energy X Plus 2"},{regex:"ENERGY X PLUS",model:"Energy X Plus"},{regex:"LIFE XL",model:"Life XL"},{regex:"DASH[ _]X[ _]PLUS[ _]LTE",model:"Dash X Plus LTE"},{regex:"DASH X PLUS",model:"Dash X Plus"},{regex:"DASH 4.5",model:"Dash 4.5"},{regex:"Dash XL",model:"Dash XL"},{regex:"PURE (X[LR])",model:"Pure $1"},{regex:"PURE MINI",model:"Pure Mini"},{regex:"BOLD N1",model:"Bold N1"},{regex:"Life One X2",model:"Life One X2"},{regex:"LIFE ONE X",model:"Life One X"},{regex:"LIFE ONE",model:"Life One"},{regex:"LIFE MARK",model:"Life Mark"},{regex:"NEO X PLUS",model:"Neo X Plus"},{regex:"NEO (XL|X)",model:"Neo $1"},{regex:"G90 PRO",model:"G90 Pro"},{regex:"G90",model:"G90"},{regex:"GRAND 5.5 HD",model:"Grand 5.5 HD"},{regex:"Grand X LTE",model:"Grand X LTE"},{regex:"Grand XL LTE",model:"Grand XL LTE"},{regex:"Grand M3",model:"Grand M3"},{regex:"B110DL",model:"View Mega"},{regex:"B130DL",model:"View 2"},{regex:"R1 HD",model:"R1 HD"},{regex:"R1 PLUS",model:"R1 Plus"},{regex:"C([456]) (2019)",model:"C$1 ($2)"},{regex:"Tank Xtreme ([45]).0",model:'Tank Xtreme $1.0"'},{regex:"Tank Xtreme Pro",model:"Tank Xtreme Pro"},{regex:"VIVO AIR LTE",model:"Vivo Air LTE"},{regex:"Touchbook G7",model:"Touchbook G7"},{regex:"(?:BLU[_ ])?VIVO[ _]SELFIE",model:"Vivo Selfie"},{regex:"(?:BLU[_ ])?Vivo 5 Mini",model:"Vivo 5 Mini"},{regex:"Touchbook M7 Pro",model:"Touchbook M7 Pro",device:"tablet"},{regex:"STUDIO 7.0 II",model:'Studio 7.0" II',device:"tablet"},{regex:"DASH (L[45] LTE|5.0|L[45]X|L3|X2|[LMX])(?:[);/ ]|$)",model:"Dash $1"},{regex:"DASH[ _]([^)/;]+)(?: Build|\\))",model:"Dash $1"},{regex:"blu[ _]([^/;]+)( Build|[);])",model:"$1"}]},Bluegood={regex:"BLUEGOOD",device:"smartphone",models:[{regex:"V6",model:"V6"}]},Blackview={regex:"Blackview|(BV([24-9]000|[46]900|(5[1589]|9[15689])00|6[138]00)(?:[ _](?:PRO))?|(P10000(?:[ _](?:PRO))?)|omega[ _]pro|Alife[ _][PS]1|Heatwave|DM550|BV9700Pro|(?<!Lenovo[_ ])A[68]0(?:Pro)?\\))|A[86]0Plus|BL6000Pro",device:"smartphone",models:[{regex:"A60Pro\\)",model:"A60 Pro"},{regex:"A60\\)",model:"A60"},{regex:"A80Pro(?:[);/ ]|$)",model:"A80 Pro"},{regex:"A([86]0)Plus(?:[);/ ]|$)",model:"A$1 Plus"},{regex:"(BV6000S)",model:"$1"},{regex:"(BV9700|BL6000)Pro",model:"$1 Pro"},{regex:"Blackview (A[78]|E7S)",model:"$1"},{regex:"BV9000Pro-F",model:"BV9000 Pro F"},{regex:"(BV([48]000|9[56]00|6[83]00))Pro",model:"$1 Pro"},{regex:"(BV6[13]00)(?:[);/ ]|$)",model:"$1",device:"phablet"},{regex:"(BV([24-9]000|6900|4900|(5[1589]|9[15689])00)(?:[ _](?:PRO))?)",model:"$1"},{regex:"(P10000(?:[ _](?:PRO))?)",model:"$1"},{regex:"omega[ _]pro",model:"Omega Pro"},{regex:"(Alife[ _][PS]1|DM550|Heatwave)",model:"$1"}]},Bluboo={regex:"Bluboo|Xfire|Picasso 4G|Maya Build",device:"smartphone",models:[{regex:"Maya Build",model:"Maya"},{regex:"Xfire2",model:"Xfire 2"},{regex:"Picasso 4G",model:"Picasso 4G"},{regex:"Xfire",model:"Xfire"},{regex:"Bluboo[ _-]?([^;/)]+) Build",model:"$1"},{regex:"Bluboo[ _-]?([^;/)]+)",model:"$1"}]},bogo={regex:"BO-(FRSP4|LFSPBS5|LFSP4|LFSPSL4|LFSPBS5|LFSPSL6QCI)",device:"smartphone",models:[{regex:"BO-LFSP4",model:"LifeStyle 4DC"},{regex:"BO-LFSPSL4",model:"LifeStyle 4SL"},{regex:"BO-LFSPBS5",model:"LifeStyle 5BS"},{regex:"BO-LFSPSL6QCI",model:"LifeStyle 6QC"},{regex:"BO-(FRSP4)",model:"$1"}]},Boway={regex:"(?:sprd-)?(BOWAY)",device:"smartphone",models:[{regex:"BOWAY[ _-]([^/;]+)[ _]Build",model:"$1"},{regex:"([^/;]+) Build/BOWAY",model:"$1"},{regex:".*BOWAY[ _-]([^/;]+)/",model:"$1"}]},Brondi={regex:"Brondi[ _]|(?:CENTURION|GLADIATOR| GLORY|LUXURY|SENSUELLE|VICTORY)(?:[ _-]?[2-6])?(?:[);/ ]|$)|Surfing Tab|501 SZ",device:"smartphone",models:[{regex:"(?:Brondi[ _])?(620 SZ|730_4G_HD|501 SZ)(?:[);/ ]|$)",model:"$1"},{regex:"CENTURION(?:[ _-]?([2-6]))?(?:[);/ ]|$)",model:"CENTURION $1"},{regex:"GLADIATOR(?:[ _-]?([2-6]))?(?:[);/ ]|$)",model:"GLADIATOR $1"},{regex:"GLORY(?:[ _-]?([2-6]))?(?:[);/ ]|$)",model:"GLORY $1"},{regex:"LUXURY(?:[ _-]?([2-6]))?(?:[);/ ]|$)",model:"LUXURY $1"},{regex:"SENSUELLE(?:[ _-]?([2-6]))?(?:[);/ ]|$)",model:"SENSUELLE $1"},{regex:"VICTORY(?:[ _-]?([2-6]))?(?:[);/ ]|$)",model:"VICTORY $1"},{regex:"Surfing Tab ([^;/]+) Build",model:"SURFING TAB $1",device:"tablet"},{regex:"Surfing Tab ([^;/)]+)[;/)]",model:"SURFING TAB $1",device:"tablet"}]},Vivo={regex:"((?:VIV-|BBG-)?(?<!FBCR/)vivo(?!(?:Browser)))|(?:V1730(D[AT]|GA)|V18(18CA|01A0|13B[AT]|18T|09[AT]|1[346][AT]|[13]8[AT]|14A|24[B]?A|2[19][AT]|3[12][AT]|36[AT])|V1731CA|V1732[AT]|V1818CT|V19[01]1[AT]|V1932[AT]|V191[3469][AT]|V192[1348]A|V193[04]A|V194[15]A|V1938CT|V1955A|V1938T|V1730EA|V19[26]2A|V196[35]A|V198[16]A|V1936A[L]?|V19[59]0A|V200[125]A|1819|V201[12]A|V202[0345]C?A|V202[235-9]|V2054A|V203[026]|V204[03]|V2049A|X50 Pro\\+|I1927)(?:[);/ ]|$)",device:"smartphone",models:[{regex:"V1824[B]?A(?:[);/ ]|$)",model:"iQOO"},{regex:"V1955A(?:[);/ ]|$)",model:"iQOO 3"},{regex:"I1927(?:[);/ ]|$)",model:"iQOO 3 5G"},{regex:"V2049A(?:[);/ ]|$)",model:"iQOO 7"},{regex:"V1922A(?:[);/ ]|$)",model:"iQOO Pro"},{regex:"V1916A(?:[);/ ]|$)",model:"iQOO Pro 5G"},{regex:"V1914A(?:[);/ ]|$)",model:"iQOO Neo"},{regex:"V1981A(?:[);/ ]|$)",model:"iQOO Neo 3"},{regex:"V1936A[L]?(?:[);/ ]|$)",model:"iQOO Neo 855"},{regex:"V1986A(?:[);/ ]|$)",model:"iQOO Z1"},{regex:"V2012A(?:[);/ ]|$)",model:"iQOO Z1x"},{regex:"V1919A(?:[);/ ]|$)",model:"iQOO Z5x"},{regex:"V2023A(?:[);/ ]|$)",model:"iQOO U1"},{regex:"V2024A(?:[);/ ]|$)",model:"iQOO 5"},{regex:"V2025A(?:[);/ ]|$)",model:"iQOO 5 Pro"},{regex:"V2025(?:[);/ ]|$)",model:"V20"},{regex:"V2040(?:[);/ ]|$)",model:"V20 (2021)"},{regex:"vivo 1805(?:[);/ ]|$)",model:"Nex"},{regex:"V1923A(?:[);/ ]|$)",model:"Nex 3"},{regex:"V1924A(?:[);/ ]|$)",model:"Nex 3 5G"},{regex:"V1950A(?:[);/ ]|$)",model:"Nex 3S"},{regex:"V1821[AT](?:[);/ ]|$)",model:"Nex Dual Display"},{regex:"Vivo ONE(?:[);/ ]|$)",model:"One"},{regex:"V1831[AT](?:[);/ ]|$)",model:"S1"},{regex:"V1832[AT](?:[);/ ]|$)",model:"S1 Pro"},{regex:"V1932[AT](?:[);/ ]|$)",model:"S5"},{regex:"V1962A(?:[);/ ]|$)",model:"S6 5G"},{regex:"V2020C?A(?:[);/ ]|$)",model:"S7"},{regex:"V1941A(?:[);/ ]|$)",model:"U3"},{regex:"V1928A(?:[);/ ]|$)",model:"U3X"},{regex:"vivo 1804(?:[);/ ]|$)",model:"V11 Pro"},{regex:"vivo 1806(?:[);/ ]|$)",model:"V11i"},{regex:"1819(?:[);/ ]|$)",model:"V15"},{regex:"vivo 1818(?:[);/ ]|$)",model:"V15 Pro"},{regex:"vivo 1909(?:[);/ ]|$)",model:"V17 Pro"},{regex:"V2022(?:[);/ ]|$)",model:"V20 SE"},{regex:"(?:VIV-|BBG-)?vivo[ _]1601(?:[);/ ]|$)",model:"V5"},{regex:"vivo 1609(?:[);/ ]|$)",model:"V5 Lite"},{regex:"vivo 1611(?:[);/ ]|$)",model:"V5 Plus"},{regex:"vivo (1713|1612)(?:[);/ ]|$)",model:"V5s"},{regex:"vivo 1718(?:[);/ ]|$)",model:"V7"},{regex:"vivo 1716(?:[);/ ]|$)",model:"V7 Plus"},{regex:"vivo 1723(?:[);/ ]|$)",model:"V9"},{regex:"vivo 1727(?:[);/ ]|$)",model:"V9 Youth"},{regex:"vivo 1721(?:[);/ ]|$)",model:"X20"},{regex:"X20Plus(?:[);/ ]|$)",model:"X20 Plus"},{regex:"vivo 1725(?:[);/ ]|$)",model:"X21"},{regex:"V1814[AT](?:[);/ ]|$)",model:"X21S"},{regex:"V1809[AT](?:[);/ ]|$)",model:"X23"},{regex:"V1816[AT](?:[);/ ]|$)",model:"X23"},{regex:"V18(38|29)[AT](?:[);/ ]|$)",model:"X27"},{regex:"V1836[AT](?:[);/ ]|$)",model:"X27 Pro"},{regex:"V1938CT(?:[);/ ]|$)",model:"X30"},{regex:"V1938T(?:[);/ ]|$)",model:"X30 Pro"},{regex:"V2001A(?:[);/ ]|$)",model:"X50"},{regex:"V2005A(?:[);/ ]|$)",model:"X50 Pro"},{regex:"(?:V2011A|X50 Pro\\+)(?:[);/ ]|$)",model:"X50 Pro Plus"},{regex:"X9Plus(?:[);/ ]|$)",model:"X9 Plus"},{regex:"vivo 1902(?:[);/ ]|$)",model:"Y17"},{regex:"vivo 1915(?:[);/ ]|$)",model:"Y19"},{regex:"V202[79](?:[);/ ]|$)",model:"Y20"},{regex:"V2028(?:[);/ ]|$)",model:"Y11s"},{regex:"V2043(?:[);/ ]|$)",model:"Y20 (2021)"},{regex:"V2032(?:[);/ ]|$)",model:"Y20i"},{regex:"V2023(?:[);/ ]|$)",model:"V20 SE"},{regex:"V1901[AT](?:[);/ ]|$)",model:"Y3"},{regex:"V1930A(?:[);/ ]|$)",model:"Y3 Standard"},{regex:"V2036(?:[);/ ]|$)",model:"Y31"},{regex:"V1934A(?:[);/ ]|$)",model:"Y5s"},{regex:"V1965A(?:[);/ ]|$)",model:"Y50"},{regex:"V2030(?:[);/ ]|$)",model:"Y51"},{regex:"V2054A(?:[);/ ]|$)",model:"Y31s"},{regex:"vivo 1606(?:[);/ ]|$)",model:"Y53i"},{regex:"vivo 1603(?:[);/ ]|$)",model:"Y55l"},{regex:"vivo 1610(?:[);/ ]|$)",model:"Y55s"},{regex:"vivo 1719(?:[);/ ]|$)",model:"Y65"},{regex:"vivo 1714(?:[);/ ]|$)",model:"Y69"},{regex:"V2002A(?:[);/ ]|$)",model:"Y70s"},{regex:"vivo 1724(?:[);/ ]|$)",model:"Y71"},{regex:"vivo 1801(?:[);/ ]|$)",model:"Y71i"},{regex:"V1731CA(?:[);/ ]|$)",model:"Y73"},{regex:"V1913[AT](?:[);/ ]|$)",model:"Y7s"},{regex:"vivo 180([38]|8i)(?:[);/ ]|$)",model:"Y81"},{regex:"vivo 1812(?:[);/ ]|$)",model:"Y81i"},{regex:"V1732[AT](?:[);/ ]|$)",model:"Y81s"},{regex:"vivo 1726(?:[);/ ]|$)",model:"Y83 Pro"},{regex:"V1730EA(?:[);/ ]|$)",model:"Y89"},{regex:"vivo 181[17](?:[);/ ]|$)",model:"Y91"},{regex:"V1945A(?:[);/ ]|$)",model:"Y9s"},{regex:"V2026(?:[);/ ]|$)",model:"Y12s"},{regex:"vivo 18(16|20)(?:[);/ ]|$)",model:"Y91i"},{regex:"(V1818[AT]|vivo 181[45])(?:[);/ ]|$)",model:"Y93"},{regex:"V1818C[AT](?:[);/ ]|$)",model:"Y93s"},{regex:"vivo 1807(?:[);/ ]|$)",model:"Y95"},{regex:"V1813[AT](?:[);/ ]|$)",model:"Y97"},{regex:"V1801A0(?:[);/ ]|$)",model:"Z1"},{regex:"V1730D[AT](?:[);/ ]|$)",model:"Z1i"},{regex:"vivo 1917(?:[);/ ]|$)",model:"Z1x"},{regex:"V1813B[AT](?:[);/ ]|$)",model:"Z3"},{regex:"V1730GA(?:[);/ ]|$)",model:"Z3x"},{regex:"V1921A(?:[);/ ]|$)",model:"Z5"},{regex:"V1911A(?:[);/ ]|$)",model:"Z5x"},{regex:"V1990A(?:[);/ ]|$)",model:"Z5x (2020)"},{regex:"V1963A(?:[);/ ]|$)",model:"Z6"},{regex:"(?:VIV-|BBG-)?vivo[ _]([^/;]+) Build",model:"$1"},{regex:"(?:VIV-|BBG-)?vivo[ _]([^);/]+)(?:[);/]|$)",model:"$1"}]},Vinsoc={regex:"(XA Pro) Build",device:"smartphone",model:"$1"},Bird={regex:"BIRD[\\-. _]([^;/]+)",device:"feature phone",models:[{regex:"BIRD[\\-. _]([^;/]+) Build",model:"$1"},{regex:"BIRD[\\-. _]([^;/]+)",model:"$1"}]},Becker={regex:"Becker-([a-z0-9]+)",device:"feature phone",model:"$1"},Beeline={regex:"Beeline",device:"smartphone",models:[{regex:"Beeline[_ ]Pro[_ ]([2436])",model:"Pro $1"},{regex:"Tab (Fast|Pro)",model:"Tab $1",device:"tablet"},{regex:"Tab ([0-9])",model:"Tab $1",device:"tablet"},{regex:"Tab",model:"Tab",device:"tablet"},{regex:"E700",model:"E700"},{regex:"Smart2",model:"Smart 2"},{regex:"Smart ([0-9])",model:"Smart $1"},{regex:"Smart Dual",model:"Smart Dual"},{regex:"(?:Beeline[_ ])?Fast[_ ]2(?:[);/ ]|$)",model:"Fast 2"},{regex:"Fast(?:[);/ ]|$)",model:"Fast"}]},Beetel={regex:"Beetel ([a-z0-9]+)",device:"feature phone",model:"$1"},BenQ={regex:"BENQ(?:[ \\-])?([a-z0-9]+)|F52_09(?:[);/ ]|$)",device:"feature phone",models:[{regex:"F52_09(?:[);/ ]|$)",model:"F52"},{regex:"BENQ(?:[ \\-])?([a-z0-9]+)",model:"$1"}]},Blaupunkt$1={regex:"Blaupunkt|Soundphone S2|Atlantis[_ ](?:1001A|1010A|A10\\.G40[23])|SLplus02|Discovery[_ ](?:A10_302|111C|1000C|1001A?)|Endeavour[_ ](?:785|101[GLM]|1000|1001|101[03]|1100)|Polaris[_ ]803|BP_6010",device:"tablet",models:[{regex:"Discovery[_ ]111C",model:"Discovery 111C"},{regex:"Discovery[_ ]A10_302",model:"Discovery A10.302"},{regex:"Discovery[_ ]1000C",model:"Discovery 1000C"},{regex:"Discovery[_ ]1001A",model:"Discovery 1001A"},{regex:"Discovery[_ ]1001",model:"Discovery 1001"},{regex:"Soundphone S2",model:"Soundphone S2"},{regex:"Endeavour[_ ](101[GLM]|785|100[01]|101[03]|1100)",model:"Endeavour $1"},{regex:"Polaris[_ ](803)",model:"Polaris $1"},{regex:"Atlantis[_ ](1001A|1010A|A10\\.G40[23])",model:"Atlantis $1"},{regex:"SLplus02",model:"SL Plus 02"},{regex:"(BP_6010)",model:"$1"},{regex:"Blaupunkt[_ ](SL[_ ]0[124]|SM[_ ]0[12])",device:"smartphone",model:"$1"},{regex:"(4K Android TV)",device:"tv",model:"$1"}]},Bmobile={regex:"Bmobile[_ ]|AX-?(?:[1-9][0-9]{2,3}[eEO+]?|7OO)(?:[);/ ]|$)",device:"smartphone",models:[{regex:"AX-?([1-9][0-9]{2,3}[eEO+]?)",model:"AX$1"},{regex:"AX7OO",model:"AX700"},{regex:"Bmobile[_ ]([^/;]+) Build",model:"$1"},{regex:"Bmobile[_ ]([a-z0-9]+)",model:"$1"}]},bq={regex:"Aquaris|bq [^/;]+ Build|BQS[-_]([0-9]{4})|(BQ(ru)?[_ -][0-9]{3,4})|BQ5059|BQ1008G|BQru_BQru-",device:"smartphone",models:[{regex:"BQ(?:ru)?-(?:5209L|5044)(?:[);/ ]|$)",model:"Strike LTE"},{regex:"BQ(?:ru)?-(?:6035L)(?:[);/ ]|$)",model:"Strike Power Max"},{regex:"BQ(?:ru)?-(?:5535L)(?:[);/ ]|$)",model:"Strike Power Plus"},{regex:"BQ(S|ru)?-(?:5070|6040L)(?:[);/ ]|$)",model:"Magic"},{regex:"BQ(S|ru)?-(?:6424L)(?:[);/ ]|$)",model:"Magic O"},{regex:"BQ(?:S|ru)?-(?:5730L)(?:[);/ ]|$)",model:"Magic C"},{regex:"BQ(?:S|ru)?-(?:5731L)(?:[);/ ]|$)",model:"Magic S"},{regex:"BQ(?:S|ru)?-5745L(?:[);/ ]|$)",model:"Clever"},{regex:"BQ(?:S|ru)?-5533G(?:[);/ ]|$)",model:"Fresh"},{regex:"BQ(?:S|ru)?-5031G(?:[);/ ]|$)",model:"Fun"},{regex:"BQ(?:S|ru)?-(?:5732L)(?:[);/ ]|$)",model:"Aurora SE"},{regex:"BQ(?:S|ru)?-6430L(?:[);/ ]|$)",model:"Aurora"},{regex:"BQ(?:S|ru)?-6630L(?:[);/ ]|$)",model:"Magic L"},{regex:"BQ-9011[G]?(?:[);/ ]|$)",model:"Vision",device:"tablet"},{regex:"BQ-8068L(?:[);/ ]|$)",model:"Hornet Plus Pro"},{regex:"BQ-8067L",model:"Hornet Plus",device:"tablet"},{regex:"BQ-8052G",model:"BQ-8052G",device:"tablet"},{regex:"BQ-8041L",model:"Art",device:"tablet"},{regex:"BQ-7084G",model:"Simple",device:"tablet"},{regex:"BQ-7061G",model:"Andros",device:"tablet"},{regex:"BQ(ru)?-(7082)",model:"Armor",device:"tablet"},{regex:"BQ-7051G",model:"Elba",device:"tablet"},{regex:"BQ-7036L",model:"Hornet",device:"tablet"},{regex:"BQ-7022(G)?",model:"Canion",device:"tablet"},{regex:"BQ-7021G",model:"Hit",device:"tablet"},{regex:"BQ-7010G",model:"Max",device:"tablet"},{regex:"BQ-7006G",model:"Union",device:"tablet"},{regex:"BQ-7003",model:"Jamaica",device:"tablet"},{regex:"BQ-6200L|BQ-6000L",model:"Aurora"},{regex:"BQ-6631G",model:"Surf"},{regex:"BQ-6022G",model:"Aura"},{regex:"BQ(ru)?[ -]6015L",model:"Universe"},{regex:"BQ(?:S|ru)?-(?:5525|6030G|6010G)",model:"Practic"},{regex:"BQ-6001L|BQ-6050",model:"Jumbo"},{regex:"BQ-5707G(?:[);/ ]|$)",model:"Next Music"},{regex:"BQ-5702(?:[);/ ]|$)",model:"Spring"},{regex:"BQ-5700L(?:[);/ ]|$)",model:"Space X"},{regex:"BQ-(?:5591|551[89]G)(?:[);/ ]|$)",model:"Jeans"},{regex:"BQ-5522",model:"Next"},{regex:"BQ-5520L(?:[);/ ]|$)",model:"Silk"},{regex:"BQ-5519L(?:[);/ ]|$)",model:"Fast Plus"},{regex:"BQ-5540L(?:[);/ ]|$)",model:"Fast Pro"},{regex:"BQ-5517L(?:[);/ ]|$)",model:"Twin Pro"},{regex:"BQ-5516L(?:[);/ ]|$)",model:"Twin"},{regex:"BQS-5515(?:[);/ ]|$)",model:"Wide"},{regex:"BQ-5515[L]?(?:[);/ ]|$)",model:"Fast"},{regex:"BQ-(?:5512L|5528L)(?:[);/ ]|$)",model:"Strike Forward"},{regex:"BQ-5511L(?:[);/ ]|$)",model:"Bliss"},{regex:"BQS[_ ]5505(?:[);/ ]|$)",model:"Amsterdam"},{regex:"BQ(?:ru)?-5510(?:[);/ ]|$)",model:"Strike Power Max 4G"},{regex:"BQ(?:ru)?-(?:5521|5594)(?:[);/ ]|$)",model:"Strike Power Max"},{regex:"BQ-5508L(?:[);/ ]|$)",model:"Next LTE"},{regex:"BQ-5507L(?:[);/ ]|$)",model:"Iron Max"},{regex:"BQ(?:ru)?-5504(?:[);/ ]|$)",model:"Strike Selfie Max"},{regex:"BQ(?:ru)?-5503(?:[);/ ]|$)",model:"Nice 2"},{regex:"BQ(?:ru)?-6045L(?:[);/ ]|$)",model:"Nice"},{regex:"BQ(?:ru)?-4030G(?:[);/ ]|$)",model:"Nice Mini"},{regex:"BQS-5502(?:[);/ ]|$)",model:"Hammer"},{regex:"BQS-5501(?:[);/ ]|$)",model:"Kawasaki"},{regex:"BQS-5500(?:[);/ ]|$)",model:"Vancouver"},{regex:"BQ-5500L(?:[);/ ]|$)",model:"Advance"},{regex:"BQ-5302G(?:[);/ ]|$)",model:"Velvet 2"},{regex:"BQ-5301(?:[);/ ]|$)",model:"Strike View"},{regex:"BQ-5300G(?:[);/ ]|$)",model:"Velvet View"},{regex:"BQ(ru|S)?-(?:5211|5020)(?:[);/ ]|$)",model:"Strike"},{regex:"BQ-5206L(?:[);/ ]|$)",model:"Balance"},{regex:"BQ(?:ru|S)?-(?:5204|5050)(?:[);/ ]|$)",model:"Strike Selfie"},{regex:"BQ(?:ru)?-5203(?:[);/ ]|$)",model:"Vision"},{regex:"BQ(?:ru)?-5202(?:[);/ ]|$)",model:"Space Lite"},{regex:"BQ(?:ru)?-5201(?:[);/ ]|$)",model:"Space"},{regex:"BQ-5082(?:[);/ ]|$)",model:"Sense 2"},{regex:"BQ-5045L(?:[);/ ]|$)",model:"Wallet"},{regex:"BQ-5047L(?:[);/ ]|$)",model:"Like"},{regex:"BQ-5071(?:[);/ ]|$)",model:"Belief"},{regex:"BQ[S]?-(?:5065|5340)(?:[);/ ]|$)",model:"Choice"},{regex:"BQ(?:S|ru)?-5046L(?:[);/ ]|$)",model:"Choice LTE"},{regex:"BQ(?:ru)?-?(?:5059|5514G)(?:[);/ ]|$)",model:"Strike Power"},{regex:"(?:BQru_)?BQ(?:ru)?-5058(?:[);/ ]|$)",model:"Strike Power Easy"},{regex:"BQ(?:ru)?-5057(?:[);/ ]|$)",model:"Strike 2"},{regex:"BQ[S]?-(?:5056|5030)(?:[);/ ]|$)",model:"Fresh"},{regex:"BQ-6042l(?:[);/ ]|$)",model:"Magic E"},{regex:"BQS-5055(?:[);/ ]|$)",model:"Turbo Plus"},{regex:"BQ(?:ru)?-5054(?:[);/ ]|$)",model:"Crystal"},{regex:"BQ-5052(?:[);/ ]|$)",model:"Sense"},{regex:"BQ[S]?-5045(?:[);/ ]|$)",model:"Fast"},{regex:"BQ(?:ru)?-(?:5037|5514L)(?:[);/ ]|$)",model:"Strike Power 4G"},{regex:"BQ(?:ru)?-5035(?:[);/ ]|$)",model:"Velvet"},{regex:"BQ(?:ru)?-5033(?:[);/ ]|$)",model:"Shark"},{regex:"BQ-5541L(?:[);/ ]|$)",model:"Shark Rush"},{regex:"BQ-5032(?:[);/ ]|$)",model:"Element"},{regex:"BQS-5025(?:[);/ ]|$)",model:"High Way"},{regex:"BQ(?:ru)?-5022(?:[);/ ]|$)",model:"Bond"},{regex:"BQ-5015L(?:[);/ ]|$)",model:"First"},{regex:"BQ-5016G(?:[);/ ]|$)",model:"Choice"},{regex:"BQ-5012L(?:[);/ ]|$)",model:"Rich"},{regex:"BQ-5521L(?:[);/ ]|$)",model:"Rich Max"},{regex:"BQS-5011(?:[);/ ]|$)",model:"Monte Carlo"},{regex:"BQ-5010G(?:[);/ ]|$)",model:"Spot"},{regex:"BQ-5000G(?:[);/ ]|$)",model:"Velvet Easy"},{regex:"BQS-5010(?:[);/ ]|$)",model:"Prague"},{regex:"BQ-5009L(?:[);/ ]|$)",model:"Trend"},{regex:"BQS-500[59](?:[);/ ]|$)",model:"Sydney"},{regex:"BQ-5008L(?:[);/ ]|$)",model:"Brave"},{regex:"BQ-5007L(?:[);/ ]|$)",model:"Iron"},{regex:"BQS-5006(?:[);/ ]|$)",model:"Los Angeles"},{regex:"BQ-(?:5005L|5530L)(?:[);/ ]|$)",model:"Intense"},{regex:"BQS-5004(?:[);/ ]|$)",model:"Paris"},{regex:"BQ-5003L(?:[);/ ]|$)",model:"Shark Pro"},{regex:"BQ-5002G(?:[);/ ]|$)",model:"Fun"},{regex:"BQS-5002(?:[);/ ]|$)",model:"Colombo"},{regex:"BQS-5003(?:[);/ ]|$)",model:"Colombo II"},{regex:"BQ-5001L(?:[);/ ]|$)",model:"Contact"},{regex:"BQS-5001(?:[);/ ]|$)",model:"Milan"},{regex:"BQ(?:ru|S)?-5000(?:[);/ ]|$)",model:"Tokyo"},{regex:"BQS-4800(?:[);/ ]|$)",model:"Blade"},{regex:"BQS-4707(?:[);/ ]|$)",model:"Montreal"},{regex:"BQS-4702(?:[);/ ]|$)",model:"Оsaka"},{regex:"BQS-4701(?:[);/ ]|$)",model:"Venice"},{regex:"BQ-(?:4585|5011G)(?:[);/ ]|$)",model:"Fox View"},{regex:"BQ(?:ru)?-4583(?:[);/ ]|$)",model:"Fox Power"},{regex:"BQS-4570(?:[);/ ]|$)",model:"Drive"},{regex:"BQS-4560(?:[);/ ]|$)",model:"Golf"},{regex:"BQS-4555(?:[);/ ]|$)",model:"Turbo"},{regex:"BQS-4550(?:[);/ ]|$)",model:"Richmond"},{regex:"BQ(?:ru)?-(?:4526|5004G)(?:[);/ ]|$)",model:"Fox"},{regex:"BQS-4525(?:[);/ ]|$)",model:"Vienna"},{regex:"BQS-4516(?:[);/ ]|$)",model:"Singapore"},{regex:"BQS-4515(?:[);/ ]|$)",model:"Moscow"},{regex:"BQS-4510(?:[);/ ]|$)",model:"Florence"},{regex:"BQS-4505(?:[);/ ]|$)",model:"Santiago"},{regex:"BQS-4503(?:[);/ ]|$)",model:"Dubai"},{regex:"BQS-4502(?:[);/ ]|$)",model:"Kingston"},{regex:"BQS-4501 Bristol",model:"Bristol"},{regex:"BQ-4501G(?:[);/ ]|$)",model:"Fox Easy"},{regex:"BQ(?:ru)?-4500(?:[);/ ]|$)",model:"Fox LTE"},{regex:"BQ-4077(?:[);/ ]|$)",model:"Shark Mini"},{regex:"BQ(?:ru)?-4072(?:[);/ ]|$)",model:"Strike Mini"},{regex:"BQ(?:ru)?[- ]402[68](?:[);/ ]|$)",model:"Up!"},{regex:"BQS-4010(?:[);/ ]|$)",model:"Aspen"},{regex:"BQS-4009(?:[);/ ]|$)",model:"Orleans"},{regex:"BQS-4008(?:[);/ ]|$)",model:"Shanghai"},{regex:"BQS-4007(?:[);/ ]|$)",model:"Valencia"},{regex:"BQS-4005(?:[);/ ]|$)",model:"Seoul"},{regex:"BQS-4004(?:[);/ ]|$)",model:"Dusseldorf"},{regex:"BQS-4003(?:[);/ ]|$)",model:"Verona"},{regex:"BQ-4001G(?:[);/ ]|$)",model:"Cool"},{regex:"BQS-4001(?:[);/ ]|$)",model:"Oxford"},{regex:"BQS-3510(?:[);/ ]|$)",model:"Aspen Mini"},{regex:"BQS-3503(?:[);/ ]|$)",model:"Bombay"},{regex:"BQ-1085L(?:[);/ ]|$)",model:"Hornet Max Pro",device:"tablet"},{regex:"BQ-1084L(?:[);/ ]|$)",model:"Hornet Max",device:"tablet"},{regex:"BQ-1083G(?:[);/ ]|$)",model:"Armor Pro Plus",device:"tablet"},{regex:"BQ-1082G(?:[);/ ]|$)",model:"Armor Pro",device:"tablet"},{regex:"BQ-1077L(?:[);/ ]|$)",model:"Armor Pro LTE",device:"tablet"},{regex:"BQ(?:ru)?-1057L(?:[);/ ]|$)",model:"Passion",device:"tablet"},{regex:"BQ-1051G(?:[);/ ]|$)",model:"Corsika",device:"tablet"},{regex:"BQ-1050G(?:[);/ ]|$)",model:"Hawaii",device:"tablet"},{regex:"BQ[-]?1008G(?:[);/ ]|$)",model:"Grace",device:"tablet"},{regex:"Aquaris M8",model:"Aquaris M8",device:"tablet"},{regex:"Aquaris_([AM])4.5",model:"Aquaris $14.5"},{regex:"BQ(?:ru)?[_ -](?:5590|5740G)(?:[);/ ]|$)",model:"Spring"},{regex:"BQ[S]?-(?:6016L|5520)(?:[);/ ]|$)",model:"Mercury"},{regex:"BQ(?:S|ru)?-(?:5701L|5060)(?:[);/ ]|$)",model:"Slim"},{regex:"(BQ-7850|BQ-700[12]G|BQ-8002G|BQ-905[12]G|BQ-9702G|BQ-7056G)",model:"$1",device:"tablet"},{regex:"BQ-8006G(?:[);/ ]|$)",model:"Java",device:"tablet"},{regex:"BQ-7062G(?:[);/ ]|$)",model:"Fiji",device:"tablet"},{regex:"BQ(?:ru)?-1081G(?:[);/ ]|$)",model:"Grace 3G",device:"tablet"},{regex:"BQ-7802G(?:[);/ ]|$)",model:"Luzon",device:"tablet"},{regex:"BQ-7008G(?:[);/ ]|$)",model:"Clarion",device:"tablet"},{regex:"BQ-7064G(?:[);/ ]|$)",model:"Fusion",device:"tablet"},{regex:"BQ-7050G(?:[);/ ]|$)",model:"Malta",device:"tablet"},{regex:"BQ-7000G(?:[);/ ]|$)",model:"Сharm",device:"tablet"},{regex:"BQ-7040G(?:[);/ ]|$)",model:"Сharm Plus",device:"tablet"},{regex:"BQ-7038G(?:[);/ ]|$)",model:"Light Plus",device:"tablet"},{regex:"BQ-7005G(?:[);/ ]|$)",model:"Maui",device:"tablet"},{regex:"BQ-7098G(?:[);/ ]|$)",model:"Armor Power",device:"tablet"},{regex:"BQ-1007(?:[);/ ]|$)",model:"Necker",device:"tablet"},{regex:"BQ-1045[G]?(?:[);/ ]|$)",model:"Orion",device:"tablet"},{regex:"BQ-(?:1054L|1020L)(?:[);/ ]|$)",model:"Nexion",device:"tablet"},{regex:"BQ-7083G(?:[);/ ]|$)",model:"Light",device:"tablet"},{regex:"BQ-8077L(?:[);/ ]|$)",model:"Exion Plus",device:"tablet"},{regex:"BQ(?:ru)?-7083(?:[);/ ]|$)",model:"7083",device:"tablet"},{regex:"BQ(?:ru)?-1056L(?:[);/ ]|$)",model:"1056L",device:"tablet"},{regex:"BQ(?:ru)?-1022l(?:[);/ ]|$)",model:"Armor Pro LTE+",device:"tablet"},{regex:"BQ(?:ru)?-1024L(?:[);/ ]|$)",model:"Exion Pro",device:"tablet"},{regex:"BQ(?:ru)?-7081(?:[);/ ]|$)",model:"Charm",device:"tablet"},{regex:"(?:bq )?(Aquaris[^/;]*) Build",model:"$1"},{regex:"Aquaris (E(4.5|[56])|M(5|10)|U2 Lite|U2|U (Lite|Plus)|V Plus|X5 Plus|X2? Pro|X[25]|[CMUVX])",model:"Aquaris $1"},{regex:"bq ([^/;]+) Build",model:"$1",device:"tablet"}]},Bush$1={regex:"Bush[ _-]|Bush10Nou",device:"smartphone",models:[{regex:"Bush10Nou",device:"tablet",model:"10Nou"},{regex:"BUSH ([^;/)]+)Tablet(?: Build|[);])",model:"$1Tablet",device:"tablet"},{regex:"BUSH ([^;/)]+)(?: Build|[);])",model:"$1"}]},CAGI={regex:"CAGI-",device:"smartphone",models:[{regex:"CAGI-OMEGA",model:"Omega"},{regex:"CAGI-([a-z0-9_\\-]+)",model:"$1"}]},Capitel={regex:"Capitel-([a-z0-9]+)",device:"feature phone",model:"$1"},Captiva={regex:"Captiva[ _-]([^;/)]+)(?: Build|\\))",device:"tablet",model:"Pad $1"},Casio={regex:"(C811|C7[57]1)(?: 4G)?(?:[);/ ]|$)",device:"smartphone",models:[{regex:"C751(?:[);/ ]|$)",model:"G'zOne Ravine"},{regex:"C771(?:[);/ ]|$)",model:"G'zOne Commando"},{regex:"C811 4G(?:[);/ ]|$)",model:"G'zOne Commando 4G LTE"}]},Casper={regex:"CASPER[_ ]|VIA[- _](T7D|A[34]|E3|F[123]|G4|M4|[LS]8|S7|P2|V8C|A1_Plus(?:_64)?|A1(?:_1)?|S[13]0|S|T17_M|T1[07]|T7|T7-3G|T8B|T8D-3G|S1[78])(?:[);/ ]|$)",device:"smartphone",models:[{regex:"(?:CASPER[_ ])?VIA_A1_Plus(?:_64)?",model:"VIA A1 Plus"},{regex:"(?:CASPER[_ ])?VIA[_ ](G1_Plus|G1|E1|[AE]2|M[123]|V[35689]|V10|G3|V6X|A[34]|E3|F[123]|G4|M4|P2|S|V8C|A1(?:_1)?)(?:[);/ ]|$)",model:"VIA $1"},{regex:"CASPER_VIA_E1c",model:"VIA E1C"},{regex:"CASPER_L10_4.5G",model:"L10 4.5G",device:"tablet"},{regex:"CASPER_(S[23]8)(?:[);/ ]|$)",model:"$1",device:"tablet"},{regex:"VIA[- _](T7|T8D)-3G",model:"VIA $1 3G",device:"tablet"},{regex:"VIA[- _](T7D|S[13]0|[LS]8|S7|T17_M|T1[07]|T7|T8B|S1[78])(?:[);/ ]|$)",model:"VIA $1",device:"tablet"}]},Cat={regex:"Cat ?(tablet|stargate|nova)|B15Q|CAT B35|CAT-B100",device:"tablet",models:[{regex:"B15Q",model:"B15Q",device:"smartphone"},{regex:"CAT B35",model:"B35",device:"smartphone"},{regex:"Cat ?(?:tablet)? ?((?:Galactica|Nova|StarGate|PHOENIX)[^/;]*) Build",model:"$1"},{regex:"Cat ?tablet",model:"Nova"},{regex:"CAT-(B100)",device:"feature phone",model:"$1"}]},Carrefour={regex:"CT(?:10[0123]0|7[12]0|820)(?:W|FR)?(?:[);/ ]|$)",device:"tablet",models:[{regex:"CT820",model:"Touch Tablet Neo2"},{regex:"CT(10[0123]0(?:W|FR)?)",model:"CT$1"},{regex:"CT(7[12]0(?:W|FR)?)",model:"CT$1"}]},Celkon={regex:"Celkon|Millennia Hero",device:"smartphone",models:[{regex:"Celkon[ _*](C[78]20)",model:"$1",device:"tablet"},{regex:"Millennia Hero",model:"Millennia Hero"},{regex:"Celkon[ _*](CT[^;/]+) Build",model:"$1",device:"tablet"},{regex:"Celkon[ _*]([^;/]+) Build",model:"$1"},{regex:"Celkon[\\. _*]([^;/\\)]+)[\\)/]",model:"$1"}]},Changhong$1={regex:"Changhong",device:"smartphone",models:[{regex:"Changhong[ ]?(X1-K|X6|R8|Z9S?|Z1S|S18)(?:[);/ ]|$)",model:"$1"},{regex:"ChangHong Android TV",device:"tv",model:""},{regex:"(?:Opera TV.+)Changhong-([^);/]+)",device:"tv",model:"$1"}]},Comio={regex:"Comio|CT701G PLUS|CT701W|GT100",device:"smartphone",models:[{regex:"GT100",model:"GT100",device:"tablet"},{regex:"CT701W",model:"CT701W",device:"tablet"},{regex:"CT701G PLUS",model:"CT701G Plus",device:"tablet"},{regex:"Comio[ _-]?([^;/)]+)(?: Build|[);])",model:"$1"}]},Compal={regex:"Compal-[a-z0-9]+",device:"feature phone",model:"$1"},Artel={regex:"Artel[_ ]|\\w+_ARTEL_\\w+|GAP YOQ(?:[);/ ]|$)",device:"smartphone",models:[{regex:"GAP YOQ(?:[);/ ]|$)",model:"Gap Yo Q"},{regex:"Artel[_ ](Quadro(?: Pro)?|Tesla|Air|Tomchi|Premium|U3_4G|Z5|Sentinel (?:X 8G|X D5|X)|T10)",model:"$1"},{regex:"Artel[_ ]Komi3",model:"Komi 3"},{regex:"Artel[_ ](Star|Nova|Connect|Choice|Style)",model:"$1",device:"tablet"},{regex:"(?:\\w+_)?ARTEL_([FVM]5|X[45])_\\w+",device:"feature phone",model:"$1"}]},ConCorde={regex:"ConCorde ([^/;]+) Build|Concorde_Raptor_Z55(?:[);/ ]|$)",device:"smartphone",models:[{regex:"Concorde_(Raptor_Z55)(?:[);/ ]|$)",model:"$1"},{regex:"ConCorde Tab ?([^/;]+) Build",model:"Tab $1",device:"tablet"},{regex:"ConCorde ReadMan ?([^/;]+) Build",model:"ReadMan $1",device:"tablet"},{regex:"ConCorde ([^/;]+) Build",model:"$1"}]},Condor={regex:"Allure (?:M[13]|X)|Griffe T[2356789]|TFX712G|TRA-901G|TGW[-]?(710G|709)|(?:PGN\\-?[456][012][0-9]|PHS\\-601|PHQ519|PHQ52[056]|TB105L|TB717G|PKT\\-301|Plume (?:H1|L[1-468]|P8|P6 PRO LTE))(?:[);/ ]|$)|CTAB[^/;]+ Build",device:"smartphone",models:[{regex:"CTAB([^/;]+) Build",device:"tablet",model:"CTAB $1"},{regex:"(TGW)-?(710G|709)(?:[);/ ]|$)",device:"tablet",model:"$1 $2"},{regex:"(TFX712G|TB105L|TB717G)(?:[);/ ]|$)",device:"tablet",model:"$1"},{regex:"(TRA)-(901G)(?:[);/ ]|$)",device:"tablet",model:"$1 $2"},{regex:"PHS\\-601",model:"C8"},{regex:"PGN\\-?403",model:"C4+ Noir"},{regex:"PGN\\-?404",model:"C7 Mini"},{regex:"PGN\\-?409",model:"Plume P4"},{regex:"PKT\\-?301",model:"C2"},{regex:"PGN\\-?504",model:"C5"},{regex:"PGN\\-?505",model:"C8S"},{regex:"PGN\\-?506",model:"C7"},{regex:"(Allure (?:M[13]|X))",model:"$1"},{regex:"PGN\\-?507",model:"Allure A9"},{regex:"PGN\\-?508",model:"C6+"},{regex:"PGN\\-?509",model:"C6 Pro"},{regex:"PGN\\-?511",model:"Allure A9 Plus"},{regex:"PGN\\-?513",model:"Griffe G4"},{regex:"PHQ519",model:"Griffe G4S"},{regex:"PHQ520",model:"Griffe G5"},{regex:"PHQ525",model:"Griffe G6"},{regex:"PHQ526",model:"Griffe G6 Pro"},{regex:"PGN\\-?514",model:"Plume P7"},{regex:"PGN\\-?515",model:"Plume P4 Pro"},{regex:"PGN\\-?516",model:"Plume P5"},{regex:"PGN\\-?51[78]",model:"Plume P6"},{regex:"PGN\\-?521",model:"Griffe G4 Plus"},{regex:"Griffe T3 ?pro",model:"Griffe T3 Pro"},{regex:"Griffe T([0-9]) Plus",model:"Griffe T$1 Plus"},{regex:"Griffe T([0-9])",model:"Griffe T$1"},{regex:"PGN\\-?522",model:"P6 Plus"},{regex:"PGN\\-?523",model:"P7 Plus"},{regex:"PGN\\-?527",model:"Plume P4 Plus"},{regex:"PGN\\-?528|PLUME P6 PRO LTE",model:"Plume P6 Pro LTE"},{regex:"PGN\\-?605",model:"Plume P8"},{regex:"PGN\\-?606",model:"Allure A55"},{regex:"PGN\\-?607",model:"Allure A100"},{regex:"PGN\\-?608",model:"Allure A55 Slim"},{regex:"PGN\\-?609",model:"Allure A100 Lite"},{regex:"PGN\\-?610",model:"Plume P8 Lite"},{regex:"PGN\\-?611",model:"Allure A8"},{regex:"PGN\\-?612",model:"Allure A8 Plus"},{regex:"PGN\\-?613",model:"Allure A55 Plus"},{regex:"Plume H1",model:"Plume H1"},{regex:"Plume L([2468]) Pro",model:"Plume L$1 Pro"},{regex:"Plume L3 Plus",model:"Plume L3 Plus"},{regex:"Plume L3 Smart",model:"Plume L3 Smart"},{regex:"Plume L([1-4])",model:"Plume L$1"},{regex:"Plume P8 Pro",model:"Plume P8 Pro"},{regex:"PGN\\-?([0-9]{3})",model:"PGN-$1"}]},Coolpad={regex:"(?:YL-)?Coolpad|(?:Cool_9S|1824-S0|8190Q|1831-A0|8676-[AM]01|CP8298_I00|CP3648A|CP8676_I0[23]|REVVLPLUS C3701A|VCR-[AI]0|C105-E0|C106-[79]| C106|MTS-T0|cp3705A[S]?|ORL-C0|DLS-E0|8298-M02|5560S)(?:[);/ ]|$)|(8295|5860S) Build",device:"smartphone",models:[{regex:"VCR-[AI]0",model:"Cool Play 6"},{regex:"1831-A0(?:[);/ ]|$)",model:"Cool Play C7"},{regex:"REVVLPLUS C3701A",model:"REVVL Plus",device:"phablet"},{regex:"8190Q(?:[);/ ]|$)",model:"8190Q"},{regex:"DLS-E0(?:[);/ ]|$)",model:"N5"},{regex:"1824-S0(?:[);/ ]|$)",model:"N5C"},{regex:"CP3705A[S]?(?:[);/ ]|$)",model:"Legacy"},{regex:"CP3648A(?:[);/ ]|$)",model:"Legacy S"},{regex:"MTS-T0(?:[);/ ]|$)",model:"N2M"},{regex:"C106-[79](?:[);/ ]|$)",model:"Cool 1"},{regex:"C105-E0(?:[);/ ]|$)",model:"Cool S1"},{regex:"ORL-C0(?:[);/ ]|$)",model:"Cool 9"},{regex:"Cool_9S(?:[);/ ]|$)",model:"Cool 9S"},{regex:"5560S(?:[);/ ]|$)",model:"Arise"},{regex:"(5860S|8295) Build",model:"$1"},{regex:"CP8676_I02(?:[);/ ]|$)",model:"Note 3"},{regex:"CP8676_I03(?:[);/ ]|$)",model:"Note 3 Plus"},{regex:"CP8298_I00(?:[);/ ]|$)",model:"Note 3 Lite"},{regex:"(8676-[AM]01|8298-M02)(?:[);/ ]|$)",model:"$1"},{regex:"(?:YL-)?Coolpad[ _\\-]?([^/;]+) Build",model:"$1"},{regex:"(?:YL-)?Coolpad[ _\\-]?([a-z0-9\\-]+)",model:"$1"}]},Clarmin={regex:"Clarmin",device:"smartphone",models:[{regex:"Clarmin[_ ](B[65]|C1)",model:"$1"}]},CORN={regex:"CORN ",device:"smartphone",models:[{regex:"CORN R20",model:"R20"}]},Cosmote={regex:"Cosmote",device:"smartphone",models:[{regex:"Cosmote_My_mini_Tab",device:"tablet",model:"My Mini Tab"}]},Cricket={regex:"Cricket-([a-z0-9]+)|U705AC(?:[);/ ]|$)",device:"smartphone",models:[{regex:"U705AC",model:"Ovation"},{regex:"Cricket-([a-z0-9]+)",device:"feature phone",model:"$1"}]},Crosscall={regex:"Crosscall|ODYSSEY_Plus|Odyssey S1|Trekker-[MSX][1234]|Action-X3|Core-X3",device:"smartphone",models:[{regex:"Action-X3",model:"Action-X3"},{regex:"Core-X3",model:"Core-X3"},{regex:"Crosscall ([^;/]+) Build",model:"$1"},{regex:"ODYSSEY_Plus",model:"ODYSSEY+"},{regex:"Odyssey S1",model:"ODYSSEY S1"},{regex:"Trekker-([MSX][1234](?: Core)?)",model:"Trekker-$1"}]},AllDocube={regex:"(?:T1001XS?|T1006S?|iPlay_[24]0|U1006H?)(?:[);/ ]|$)",device:"tablet",models:[{regex:"T1001XS(?:[);/ ]|$)",model:"M5XS"},{regex:"T1006S(?:[);/ ]|$)",model:"M5S"},{regex:"T1006(?:[);/ ]|$)",model:"M5"},{regex:"T1001X(?:[);/ ]|$)",model:"M5X"},{regex:"U1006H?(?:[);/ ]|$)",model:'iPlay 10 Pro 10.1"'},{regex:"iPlay_([24]0)(?:[);/ ]|$)",model:"iPlay $1"}]},Cube={regex:"(<!myPhone ?)Cube|(U[0-9]+GT|K8GT)|(?:T8-PLUSM?S?|T8PLUSML|I1-TF[BD]?|I1-TC|i1002S|Iwork10 Flagship|iwork10 Pro)(?:[);/ ]|$)",device:"tablet",models:[{regex:"U27GT",model:"Talk 8"},{regex:"(?:T8-PLUSM?S?|T8PLUSML)(?:[);/ ]|$)",model:"T8 Ultimate"},{regex:"U55GT",model:"Talk 79"},{regex:"U65GT",model:"Talk 9X"},{regex:"I1-TF[BD]?(?:[);/ ]|$)",model:"iWork 8 Air"},{regex:"I1-TC(?:[);/ ]|$)",model:"iWork 8 Ultimate"},{regex:"(?:i1002S|iwork10 Pro)(?:[);/ ]|$)",model:"iWork 10 Pro"},{regex:"Iwork10 Flagship(?:[);/ ]|$)",model:"iWork 10 Flagship"},{regex:"(U[0-9]+GT[^;/]*) Build",model:"$1"},{regex:"(U[0-9]+GT(?:[0-9]|[\\-_][a-z]+)?)",model:"$1"},{regex:"(K8GT)",model:"$1"}]},CUBOT={regex:"CUBOT|RAINBOW 2|KING_KONG_3|ZORRO 001|KINGKONG[_ ]MINI2?|KING KONG CS|(?<!QUMO )QUEST(?!(?:[0-9]|\\s[0-9]))(?: LITE)?|NOTE 20 PRO",device:"smartphone",models:[{regex:"CHEETAH 2",model:"Cheetah 2"},{regex:"RAINBOW 2",model:"Rainbow 2"},{regex:"RAINBOW",model:"Rainbow"},{regex:"DINOSAUR",model:"Dinosaur"},{regex:"KINGKONG MINI2",model:"King Kong Mini 2"},{regex:"KINGKONG_MINI",model:"King Kong Mini"},{regex:"KING_KONG_3",model:"King Kong 3"},{regex:"KING KONG CS",model:"King Kong CS"},{regex:"KING KONG",model:"King Kong"},{regex:"QUEST LITE",model:"Quest Lite"},{regex:"QUEST",model:"Quest"},{regex:"ZORRO 001",model:"Zorro 001"},{regex:"CUBOT[ _]Echo",model:"Echo"},{regex:"CUBOT[ _]MANITO",model:"Manito"},{regex:"CUBOT[ _]MAGIC",model:"Magic"},{regex:"CUBOT[ _]MAX",model:"Max"},{regex:"NOTE Plus",model:"Note Plus"},{regex:"NOTE 20 PRO",model:"Note 20 Pro"},{regex:"CUBOT[_ ]NOTE[_ ]S",model:"Note S"},{regex:"CUBOT_NOVA",model:"Nova"},{regex:"CUBOT_POWER",model:"Power"},{regex:"CUBOT_X18_Plus",model:"X18 Plus"},{regex:"CUBOT[ _](A5|C6W|H3|J3|P7|P20|[RXJ]9|R11|X18)(?:[);/ ]|$)",model:"$1"},{regex:"CUBOT ([^;/]+) Build",model:"$1"},{regex:"([^;/]+) Build/CUBOT",model:"$1"}]},Clout={regex:"Hind[ _]5\\.1|X417[ _]Amaze|X418[ _]Zest|X421[ _]Nova|X422[ ]Exotic|X425[ _]Shavit|X428[ _]Astute",device:"smartphone",models:[{regex:"Hind[ _]5\\.1",model:"Hind 5.1"},{regex:"X417[ _]Amaze",model:"X417 Amaze"},{regex:"X418[ _]Zest",model:"X418 Zest"},{regex:"X421[ _]Nova",model:"X421 Nova"},{regex:"X422[ _]Exotic",model:"X422 Exotic"},{regex:"X425[ _]Shavit",model:"X425 Shavit"},{regex:"X428[ _]Astute",model:"X428 Astute"}]},Concord={regex:"Concord[ _-]|(?:Flyfix 6|C-721|Plus-7_C777|Plus_M19_C779|Plus-9_C778)(?:[);/ ]|$)",device:"smartphone",models:[{regex:"M10",model:"M10"},{regex:"Flyfix 6",model:"Flyfix 6"},{regex:"C-721",model:"Flyfix Q",device:"tablet"},{regex:"Plus[-_]([79]|M19)_(C77[789])(?:[);/ ]|$)",model:"Plus-$1 $2",device:"tablet"}]},Crescent={regex:"WING 5|WING9|Venus[ _][14]",device:"smartphone",models:[{regex:"WING 5",model:"Wing 5"},{regex:"WING9",model:"Wing 9"},{regex:"Venus[ _]([14])",model:"Venus $1"}]},Cyrus={regex:"Cyrus[ _-]",device:"smartphone",models:[{regex:"Cyrus[ _-]?([^;/)]+) Build",model:"$1"},{regex:"Cyrus[ _-]?([^;/)]+)(?:[);/ ]|$)",model:"$1"}]},Datang={regex:"DATANG",device:"smartphone",models:[{regex:"(?:DATANG[ _-])+([^;/]+) Build",model:"$1"},{regex:"(?:DATANG[ _-])+([^;/)]+)(?:[;/)]|$)",model:"$1"}]},Datsun={regex:"DATSUN",device:"smartphone",models:[{regex:"DATSUN_D5500",model:"D5500"},{regex:"Datsun_D5001",model:"D5001"}]},Danew={regex:"Dslide ?([^;/]+) Build|Konnect_?(?:402|50[246]|60[127])|GEODROID_A5",device:"smartphone",models:[{regex:"Konnect_?(402|50[246]|60[127])",model:"Konnect $1"},{regex:"Dslide ?([^;/]+) Build",device:"tablet",model:"DSlide $1"},{regex:"GEODROID_A5",device:"tablet",model:"Geodroid A5"}]},Denver={regex:"(?:TA[CDQ]-[0-9]+)|P(?:.+)TAQ-(?:[0-9]+)|SDQ[_-](?:550[24]4L|52001G|50002G|57004L)",device:"tablet",models:[{regex:"P(?:.+)TAQ-(10213GMK2|10172MK3|10242MK2|70242MK2|[0-9]+)(?:[);/ ]|$)",model:"TAQ-$1"},{regex:"(TA[CDQ]-[0-9]+)",model:"$1"},{regex:"SDQ[_-](550[24]4L|52001G|50002G|57004L)",device:"smartphone",model:"SDQ-$1"}]},Dell$2={regex:"Dell[^a-z]|Venue|XCD35",device:"smartphone",models:[{regex:"XCD35",model:"XCD35"},{regex:"Venue (8 7840|10 7040|8 3830)",model:"Venue $1",device:"tablet"},{regex:"(?:Dell )?Venue Build",model:"Venue"},{regex:"Dell; Venue Pro",model:"Venue Pro"},{regex:"(OptiPlex (?:3050|7010))",device:"desktop",model:"$1"},{regex:"(?:Dell )?(Streak|Venue) ?([^/;]*) Build",model:"$1 $2",device:"tablet"},{regex:"(?:Dell Inc./)?(XPS 13 9360|Latitude 7480)(?:[);/ ]|$)",device:"desktop",model:"$1"},{regex:"Dell; ((?:Streak|Venue)[^;/\\)]*)",model:"$1",device:"tablet"},{regex:"Dell; ([^;/\\)]+)",model:"$1"},{regex:"Dell[ _\\-]([^/;]+) Build",model:"$1"}]},Desay={regex:"Desay",device:"smartphone",models:[{regex:"Desay[ _-]?([^;/)]+) Build",model:"$1"},{regex:"Desay[ _-]?([^;/)]+)(?:[);/ ]|$)",model:"$1"}]},DEXP={regex:"DEXP|(?:Ursus|Ixion)[ _]([^;/)]+)|H135[ _]Build|Larus_TV1|Ixion(?:ML4.7|ES250)|M150Storm|(?:SENIOR|F4[38]D8000K|VA[12]10|VA170|ML450|MS[56]50|BL[123]50|BS155|BS160|BS[1256]50|AL[12]40|AL[23]50|AS155|AS260|GS15[035]| (?:N280i|P380i|R110|BL160|B450|B340|A1[45]0|A340|AS160|GL[23]55|ES750))(?:[);/ ]|$)",device:"smartphone",models:[{regex:"Ixion[_ ]([^;/]+)(?: Build|\\))",model:"Ixion $1"},{regex:"(ML450|MS[56]50|ES750)(?:[);/ ]|$)",model:"Ixion $1"},{regex:"IxionES250(?:[);/ ]|$)",model:"Ixion ES250 Rage"},{regex:"IxionML4.7(?:[);/ ]|$)",model:'Ixion ML 4.7"'},{regex:"M150Storm(?:[);/ ]|$)",model:"Ixion M150 Storm"},{regex:"AL250(?:[);/ ]|$)",model:'4.5" AL250'},{regex:"AL350(?:[);/ ]|$)",model:'5.0" AL350'},{regex:"AS155(?:[);/ ]|$)",model:'5.45" AS155'},{regex:"AS260(?:[);/ ]|$)",model:'5.85" AS260',device:"phablet"},{regex:"Ursus ([^;/)]+)(?: Build|\\))",model:"Ursus $1",device:"tablet"},{regex:"(VA[21]10|VA170|R110|N280i|P380i)(?:[);/ ]|$)",model:"Ursus $1",device:"tablet"},{regex:" (B450|B340|BL160|A340)(?:[);/ ]|$)",model:"$1"},{regex:"SENIOR(?:[);/ ]|$)",model:"Senior"},{regex:"Larus_TV1",device:"feature phone",model:"Larus_TV1"},{regex:"H135[ _]Build",model:"Atlas",device:"desktop"},{regex:"(BL[123]50|BS155|BS160|BS[1256]50|AL[12]40|A1[45]0|GS15[035]|AS160|GL[23]55)(?:[);/ ]|$)",model:"$1"},{regex:"DEXP[ _]([^;/]+) Build",model:"$1"},{regex:"DEXP[ _]([^);/]+)(?:[);/ ]|$)",model:"$1"},{regex:"(F4[38]D8000K)(?:[);/ ]|$)",device:"tv",model:"$1"}]},Dbtel={regex:"DBTEL(?:[\\-/])?([a-z0-9]+)",device:"feature phone",model:"$1"},Dialog={regex:"Dialog ?([^;/]+) Build",device:"smartphone",model:"$1"},Dicam={regex:"DICAM-([a-z0-9]+)",device:"feature phone",model:"$1"},Digi={regex:"(?<!FBCR/)Digi[ _]([^);/]+)(?:[);/ ]|$)",device:"smartphone",model:"$1"},Digicel={regex:"DIGICEL",device:"smartphone",models:[{regex:"DL810",model:"DL810"},{regex:"DIGICEL ([^/;]+) Build",model:"$1"}]},Digiland={regex:"(?:DL1008M|DL(?:1023|9002|[78]006))(?:[);/ ]|$)",device:"tablet",models:[{regex:"DL1008M",model:"DL1008M"},{regex:"DL(1023|9002|[78]006)",model:"DL$1"}]},Digma={regex:"Digma[_ ]([^;/]+) Build|HIT HT707[10]MG|CITI (?:7 E401 4G|8 E400 4G|ATL 4G|Kids|Octa [178]0|1902 3G|10 E402|Z530 3G)|(CITI[_ ](?:[A-Z0-9]+)[_ ][34]G)[ _][TC][ST](606[32]ML|111[46]ML|11[459]4MG|1117PG|1207MG|1210MG|1195MG|1196ML|3001ML|4024PG|5009PL|5021ML|5026PL|500[67]PG|7052PG|706[56]MG|709[68]PL|7097MG|720[48]MG|7140ML|7141MG|7113PL|7193MG|820[69]MG|7153MG|8139ML|8143MG|8152ML|1050PL|8205PG|7203MG|106[24]ML|1115MG)|HIT 4G|HT7074ML|IDX5|(iDx10|iDx7)|MVM900H(?:WZ|C)|MVM908HCZ|(iDxD8 3G|iDxD10 3G|iDrQ10 3G|iDxD[45]|iDxQ5|iD[nx]D7(?:[_ ]3G)?)|PS604M|PT452E|LINX B510 3G LT5037MG|LINX A452 3G LT4030PG|LINX A453 3G LT4038PG|LINX A420 3G LS4019PG|LINX A450 3G LT4028PG|Linx A400 3G LT4001PG|Linx C500 3G LT5001PG|Linx PS474S|LS504[01]PL|LT40(47|54)MG|PS1043MG|LS405[01]MG|LS5053ML|LT5048MG|HT7071MG|LT5052ML|HT5035PG|HT4039PG|LT4049PG|NS6902QL|NS9797MG|TS7854M|TS1012E 3G|TT1004PG|TT702[045]MG|TT1002MG|TT7026MW|((?:Optima|Platina|Plane)[ _](?:[EM])?(?:[0-9\\.ST]+|Prime)(?:[ _][43]G)?)|(VOX[ _](?:[0-9\\.A-Z]+)[_ ][43]G)",device:"smartphone",models:[{regex:"HIT(?: 3G)? HT707[10]MG",model:"HIT 3G",device:"tablet"},{regex:"iDx5",model:"iDx5"},{regex:"HT5035PG",model:"HIT Q500 3G"},{regex:"HT4039PG",model:"HIT Q401 3G"},{regex:"(VOX[ _](?:[0-9\\.A-Z]+)[_ ][43]G)",model:"$1"},{regex:"PS604M",model:"Linx 6.0"},{regex:"LT4049PG",model:"Linx Atom 3G"},{regex:"LT5048MG",model:"Linx Joy 3G"},{regex:"LT5052ML",model:"Linx Base 4G"},{regex:"LT4047MG",model:"Linx Alfa 3G"},{regex:"LS4050MG",model:"Linx X1 3G"},{regex:"LS4051MG",model:"Linx X1 Pro 3G"},{regex:"LT4054MG",model:"Linx Argo 3G"},{regex:"LS5041PL",model:"Linx Trix 4G"},{regex:"LS5040PL",model:"Linx Rage 4G"},{regex:"LS5053ML",model:"Linx Pay 4G"},{regex:"Linx ([A-Z][0-9]{3}) 3G (?:LT4028PG|LS4019PG|LT4001PG|LT5001PG|LT4038PG|LT5037MG|LT4030PG)",model:"Linx $1 3G"},{regex:"(Linx PS474S)",model:"$1"},{regex:"PT452E",model:"Linx 4.5"},{regex:"CITI ATL 4G CS5029ML",model:"CITI ATL 4G"},{regex:"(CITI Z530 3G)",model:"$1"},{regex:"(CITI [A-Z0-9]+ [34]G) C[ST](?:606[32]ML|4024PG|5009PL|5021ML|5026PL)",model:"$1"},{regex:"TS7854M",model:'Plane 8.1" 3G',device:"tablet"},{regex:"PS1043MG",model:'Plane 10.3" 3G',device:"tablet"},{regex:"TS1012E 3G",model:'Plane 10.1" 3G',device:"tablet"},{regex:"MVM900H(?:WZ|C)",model:"iDx8",device:"tablet"},{regex:"MVM908HCZ",model:"iDx9",device:"tablet"},{regex:"(iD(?:xD10|rQ10|xD7)[_ ]3G)",model:"$1",device:"tablet"},{regex:"(iDx10|iDx7)",model:"$1"},{regex:"(iDxD[45]|iDxQ5)",model:"$1"},{regex:"HIT 4G HT7074ML",model:"HIT 4G",device:"tablet"},{regex:"CITI[_ ](1902 3G|Kids|8527_4G|Octa [178]0|10 E402 4G|8 E400 4G|7 E401 4G)",model:"CITI $1",device:"tablet"},{regex:"(CITI[ _](?:[A-Z0-9]+)[ _][34]G)[ _][TC][ST](?:106[24]ML|111[46]ML|1115MG|1117PG|1207MG|1210MG|3001ML|500[67]PG|7052PG|706[567]MG|7097MG|720[48]MG|820[69]MG|11[459]4MG|1195MG|1196ML|3001ML|8152ML|1050PL|709[68]PL|7113PL|7193MG|7216MG|8205PG|7203MG|8143MG|7153MG|7141MG|7140ML)",model:"$1",device:"tablet"},{regex:"iDxD8 3G",model:"D-Plane2 8",device:"tablet"},{regex:"(iDnD7)",model:"$1",device:"tablet"},{regex:"NS6902QL",model:"Platina 7.2 4G",device:"tablet"},{regex:"NS9797MG",model:"Platina 7.2 3G",device:"tablet"},{regex:"TT1004PG",model:'Optima 10.4" 3G',device:"tablet"},{regex:"TT1002MG",model:'Optima D 10.4" 3G',device:"tablet"},{regex:"TT7025MG",model:'Optima 7.5" 3G',device:"tablet"},{regex:"TT7026MW",model:'Optima 7.6" 3G',device:"tablet"},{regex:"TT7020MG",model:'Optima 7.3" 3G',device:"tablet"},{regex:"TT7024MG",model:'Optima 7.4" 3G',device:"tablet"},{regex:"((?:Optima|Platina|Plane)[ _](?:[EM])?(?:[0-9\\.STNM]+|Prime)(?:[ _][43]G)?)",model:"$1",device:"tablet"},{regex:"Digma[_ ]([^;/]+) Build",model:"$1",device:"tablet"}]},DoCoMo={regex:"DoCoMo|\\;FOMA|KGT/1\\.0",device:"feature phone",models:[{regex:"DoCoMo/.+MST.+(SH2101V)",model:"$1"},{regex:"DoCoMo/[12]\\.0[/ ]([a-z0-9]+)",model:"$1"},{regex:"([a-z0-9]+)(?:_W)?\\;FOMA",model:"$1"},{regex:"KGT/1\\.0 ([a-z0-9]+)",model:"$1"}]},Doogee={regex:"DOOGEE[ _-]|Valencia2_Y100_?(?:pro|plus)|Y100_Plus|X5max(?:[_ ]PRO)?|Shoot_[12]|x5_doogee|(KISSME|BIGBOY|COLLO[23]?|DAGGER|DISCOVERY2?|FIND|HOTWIND|LATTE|MAX|MINT|MOON|PIXELS|RAINBOX|TURBO|VALENCIA|VOYAGER2?|TITANS2?)[ -_](DG[0-9]+C?)(?:[);/ ]|$)|(?:BL12000|BL5500[_ ]Lite|X9 Mini|LEO_DG280|Y9Plus|Hitman_DG850|S(?:[568]8|9[056]|59|40)Pro|X95Pro|S40Lite|BL[579]000|N20Pro|(?<!Lenovo )S90C|Ibiza_F2)(?:[);/ ]|$)",device:"smartphone",models:[{regex:"(?:Valencia2_)?Y100_Plus(?:[);/ ]|$)",model:"Valencia2 Y100 Plus"},{regex:"Valencia2_Y100pro",model:"Valencia2 Y100 Pro"},{regex:"LEO_(DG280)",model:"Leo $1"},{regex:"(BL[579]000|S90C)(?:[);/ ]|$)",model:"$1"},{regex:"X95Pro(?:[);/ ]|$)",model:"X95 Pro"},{regex:"N20Pro(?:[);/ ]|$)",model:"N20 Pro"},{regex:"BL12000 PRO",model:"BL12000 Pro"},{regex:"BL5500[_ ]Lite",model:"BL5500 Lite"},{regex:"BL12000",model:"BL12000"},{regex:"S([568]8|9[056]|59|40)Pro",model:"S$1 Pro"},{regex:"S40Lite",model:"S40 Lite"},{regex:"KISSME-DG580",model:"Kissme DG580"},{regex:"Hitman_DG850",model:"Hitman DG580"},{regex:"X9 Mini",model:"X9 Mini"},{regex:"x5_doogee",model:"X5"},{regex:"Shoot_([12])",model:"Shoot $1"},{regex:"Ibiza_F2",model:"Ibiza F2"},{regex:"(X5max(?:[_ ]PRO)?)",model:"$1"},{regex:"(?:DOOGEE[ _-])?(BIGBOY|COLLO[23]?|DAGGER|DISCOVERY2?|FIND|HOTWIND|LATTE|MAX|MINT|MOON|PIXELS|RAINBOX|TURBO|VALENCIA|Valencia2_Y100pro|VOYAGER2?|TITANS2?)[ -_](DG[0-9]+C?)(?:[);/ ]|$)",model:"$1 $2"},{regex:"DOOGEE[ _-]([^);/]+) Build",model:"$1"},{regex:"DOOGEE[ _-]([^);/]+)(?:[);/ ]|$)",model:"$1"},{regex:"Y9Plus(?:[);/ ]|$)",model:"Y9 Plus"}]},Doov={regex:"(?:Doov-)?Doov[ _]",device:"smartphone",models:[{regex:"(?:Doov-)?Doov[ _]([^;/]+) Build",model:"$1"},{regex:"(?:Doov-)?Doov[ _]([^);/]+)(?:[);/ ]|$)",model:"$1"}]},Dopod={regex:"Dopod(?: )?([a-z0-9]+)",device:"feature phone",model:"$1"},Doro={regex:"Doro",device:"smartphone",models:[{regex:"Doro[ _-]?([^;/)]+) Build",model:"$1"},{regex:"Doro[ _-]([0-9a-z]+)",model:"$1"}]},DNS={regex:"(?:DNS|AirTab)[ _\\-]([^;/)]+)|(?:S4505M|S4004M|SD01M)(?:[);/ ]|$)",device:"smartphone",models:[{regex:"(?:DNS[_ ])?(S4505M|S4004M|SD01M|S4502|S4003|S4003)(?:[);/ ]|$)",model:"$1"},{regex:"AirTab[ _\\-]([^;/]+)(?: Build|[);])",model:"AirTab $1",device:"tablet"},{regex:"DNS[ _\\-]([^;/]+)(?: Build|[);])",model:"$1"}]},Easypix={regex:"EasyPad|EasyPhone",device:"smartphone",models:[{regex:"(EasyPhone[^/;]+) Build",model:"$1"},{regex:"EasyPad ([^/;)]+)(?: Build|[;)])",model:"EasyPad $1",device:"tablet"}]},EBEST={regex:"EBEST",device:"smartphone",models:[{regex:"EBEST[ _-]?([^;/)]+) Build",model:"$1"},{regex:"EBEST[ _-]?([^;/)]+)(?:[);/ ]|$)",model:"$1"}]},ECS={regex:"(?:TA10CA3|TM105A?|TR10[CR]S1)(?:[);/ ]|$)",device:"tablet",models:[{regex:"TA10CA3(?:[);/ ]|$)",model:"TA10CA3"},{regex:"(TR10[CR]S1)(?:[);/ ]|$)",model:"$1"},{regex:"TM105A(?:[);/ ]|$)",model:"TM105A"},{regex:"TM105(?:[);/ ]|$)",model:"TM105"}]},EE={regex:"Hawk_from_EE",device:"smartphone",models:[{regex:"Hawk_from_EE",model:"Hawk"}]},EKT={regex:"EK-(?:5040|5336|5540|5937|6020|8680|MII|T7020)",device:"tablet",models:[{regex:"EK-(MII|T7020)",model:"EK-$1"},{regex:"EK-(5040|5336|5540|5937|6020|8680)",device:"smartphone",model:"EK-$1"}]},Elephone={regex:"Elephone|P6000( ?Pro| ?Plus|\\+| ?02| 5.0 01)?",device:"smartphone",models:[{regex:"Elephone Trunk(?:[);/ ]|$)",model:"Trunk"},{regex:"P6000(\\+| ?Plus)(?:[);/ ]|$)",model:"P6000 Plus"},{regex:"P6000 02(?:[);/ ]|$)",model:"P6000 02"},{regex:"P6000 5.0 01(?:[);/ ]|$)",model:"P6000 01"},{regex:"P6000 ?Pro(?:[);/ ]|$)",model:"P6000 Pro"},{regex:"(?:Elephone[ _])?(P[768]000|S2)(?:[);/ ]|$)",model:"$1"},{regex:"Elephone[ _\\-]([^/;]+)(?: Build|[;)])",model:"$1"}]},Element={regex:"AFTRS",model:"Element 4K (2017)",device:"tv"},Elenberg={regex:"(TAB(?:101|728)[ _]3G|TAB7(?:[03]8|16|40|3[30]))(?:[);/ ]|$)",device:"tablet",model:"$1"},Ericy={regex:"Ericy-([a-z0-9]+)",device:"feature phone",model:"$1"},Essential={regex:"PH-1[ )]",device:"smartphone",models:[{regex:"PH-1[ )]",model:"PH-1"}]},Evercoss={regex:"EVERCOSS[ _]|(A75A\\*|U50A_PLUS|M50 STAR|A75 MAX)(?:[);/ ]|$)",device:"smartphone",models:[{regex:"A75A\\*(?:[);/ ]|$)",model:"A75A Star"},{regex:"A75 MAX*(?:[);/ ]|$)",model:"A75 Max"},{regex:"U50A_PLUS(?:[);/ ]|$)",model:"U50A Plus"},{regex:"M50 STAR(?:[);/ ]|$)",model:"M50 Star"},{regex:"EVERCOSS[ _](A7[BRLZ]|A65|A74A|A5Z)(?:[);/ ]|$)",model:"$1"}]},Eurostar={regex:"(ET7002C-H12|Onyx-[13]S)(?:[);/ ]|$)",device:"smartphone",models:[{regex:"Onyx-([13]S)(?:[);/ ]|$)",model:"Onyx $1"},{regex:"ET7002C-H12(?:[);/ ]|$)",model:"ePad 4S",device:"tablet"}]},Eton={regex:"Eton",device:"smartphone",models:[{regex:"Eton[ _-]?([^;/)]+) Build",model:"$1"},{regex:"Eton[ _-]?([^;/)]+)(?:[);/ ]|$)",model:"$1"}]},Essentielb$1={regex:"(?:Wooze[_ ]?(?:I55?|I45|X?L)|HEYOU(?:[135]|30))(?:[);/ ]|$)",device:"smartphone",models:[{regex:"HEYOU([135]|30)(?:[);/ ]|$)",model:"HEYou $1"},{regex:"Wooze[_ ]?((?:I55?|I45|X?L))(?:[);/ ]|$)",model:"Wooze $1"}]},Facebook={regex:"PortalTV",device:"tv",model:"Portal TV"},Rikomagic={regex:"MK(80[28][^/;]*) Build",device:"tv",model:"MK$1"},Rinno={regex:"Rinno (R(?:400|505))",device:"smartphone",model:"$1"},Riviera={regex:"RIVIERA ",device:"smartphone",models:[{regex:"F23",model:"F23"}]},Senseit={regex:"SENSEIT[ _]?([^;/)]+)( Build|\\))",device:"smartphone",model:"$1"},Sony$3={regex:"Sony(?: ?Ericsson)?|SGP|Xperia|(?:[4-9]0[12])SO|C1[569]0[45]|C2[01]0[45]|C230[45]|C530[236]|C550[23]|C6[56]0[236]|C6616|C68(?:0[26]|[34]3)|C69(?:0[236]|16|43)|D200[45]|D21(?:0[45]|14)|D22(?:0[236]|12|43)|D230[2356]|D240[36]|D25(?:02|33)|D510[236]|D530[36]|D5316|D5322|D5503|D58[03]3|D65(?:0[23]|43|63)|D66[03458]3|D66[14]6|D6708|E(?:20[0345]3|2006|210[45]|2115|2124|230[36]|2312|23[356]3|530[36]|53[3456]3|5506|55[356]3|56[46305][36]|58[02]3|65[35]3|66[0358]3|68[358]3)|I[34]312|I4332|F311[12356]|F331[13]|F321[12356]|F5[13]21|F5122|F813[12]|F833[12]|G312[135]|G311[26]|G322[136]|G3212|G331[123]|G3412|G3416|G342[136]|G823[12]|G834[123]|G8[14]4[12]|H(?:3113|3123|3133|3213|3223|3311|3321|4113|4133|4213|4233|4311|4331|4413|4433|82[167]6|83[12]4|8416|9436)|(?:WT|LT|SO|ST|SK|MK)[0-9]+[a-z]+[0-9]*(?: Build|\\))|X?L39H|XM50[ht]|W960|portalmmm/2\\.0 K|S3[69]h|SOG01|SOL2[2346]|SOV3[1-9]|SOV4[0-3]|X10[ia]v?|E1[05][ai]v?|MT[0-9]{2}[a-z]? Build|SO-0(?:[12]C|[345]D|[234]E|[1-5]F|[1-5]G|[1-4]H|[1-4]J|[1-5]K|1M|[1-3]L)|R800[aix]|J3173|J82[17]0|J9110|J92[16]0|J81[17]0|I[34]113|I3[12]23|I42[19]3|H9493|H8296|H8166|H4493|G2299|LiveWithWalkman|BRAVIA|SGP771|E3 Dual|A001SO|I4193|E6508|SOT31|SO-[45]1A|SO-52A|XQ-A[DT]51|XQ-A[TU]42|XQ-AS[67]2|XQ-A[TSU]52|SOL25|SOG02|A002SO|NW-(A100|Z1000)Series|J3273",device:"smartphone",models:[{regex:"(?:Sony(?:Ericsson)?)?E10[ai]v?",model:"Xperia X10 mini",brand:"Sony Ericsson"},{regex:"(?:Sony(?:Ericsson)?)?U20",model:"Xperia X10 mini pro",brand:"Sony Ericsson"},{regex:"(?:Sony(?:Ericsson)?)?E15[ai]v?",model:"Xperia X8",brand:"Sony Ericsson"},{regex:"(?:Sony(?:Ericsson)?)?(LT15[ai]?v?|SO-01C)",model:"Xperia arc",brand:"Sony Ericsson"},{regex:"(?:Sony(?:Ericsson)?)?LT18[ai]v?",model:"Xperia arc S",brand:"Sony Ericsson"},{regex:"(?:Sony(?:Ericsson)?)?MT11",model:"Xperia neo V",brand:"Sony Ericsson"},{regex:"(?:Sony(?:Ericsson)?)?MT15",model:"Xperia neo",brand:"Sony Ericsson"},{regex:"(?:Sony(?:Ericsson)?)?MT27",model:"Xperia Sola",brand:"Sony Ericsson"},{regex:"(?:Sony(?:Ericsson)?)?MK16[ai]",model:"Xperia pro",brand:"Sony Ericsson"},{regex:"(?:Sony(?:Ericsson)?)?ST15[ai]",model:"Xperia mini",brand:"Sony Ericsson"},{regex:"(?:Sony(?:Ericsson)?)?ST17[ai]",model:"Xperia active",brand:"Sony Ericsson"},{regex:"(?:Sony(?:Ericsson)?)?SO-02L",model:"Xperia Ace",brand:"Sony Ericsson"},{regex:"(?:Sony(?:Ericsson)?)?ST18[ai]",model:"Xperia ray",brand:"Sony Ericsson"},{regex:"(?:Sony(?:Ericsson)?)?SK17[ai]?",model:"Xperia mini pro",brand:"Sony Ericsson"},{regex:"(?:Sony(?:Ericsson)?)?X10[ai]v?",model:"Xperia X10",brand:"Sony Ericsson"},{regex:"(?:Sony(?:Ericsson)?)M1",model:"Aspen",brand:"Sony Ericsson"},{regex:"(?:Sony(?:Ericsson)?)?R800",model:"Xperia PLAY",brand:"Sony Ericsson"},{regex:"(?:Sony(?:Ericsson)?)?WT19|LiveWithWalkman",model:"Live with Walkman",brand:"Sony Ericsson"},{regex:"(?:Sony(?:Ericsson)?)?CK13i",model:"txt",brand:"Sony Ericsson",device:"feature phone"},{regex:"(?:Sony(?:Ericsson)?)?CK15[ai]",model:"txt pro",brand:"Sony Ericsson",device:"feature phone"},{regex:"(?:Sony(?:Ericsson)?)?F100i",model:"Jalou",brand:"Sony Ericsson",device:"feature phone"},{regex:"(?:Sony(?:Ericsson)?)?J105",model:"Naite",brand:"Sony Ericsson",device:"feature phone"},{regex:"(?:Sony(?:Ericsson)?)?J108",model:"Cedar",brand:"Sony Ericsson",device:"feature phone"},{regex:"(?:Sony(?:Ericsson)?)?J10",model:"Elm",brand:"Sony Ericsson",device:"feature phone"},{regex:"(?:Sony(?:Ericsson)?)?J20",model:"Hazel",brand:"Sony Ericsson",device:"feature phone"},{regex:"(?:Sony(?:Ericsson)?)?U10",model:"Aino",brand:"Sony Ericsson",device:"feature phone"},{regex:"(?:Sony(?:Ericsson)?)?U100",model:"Yari",brand:"Sony Ericsson",device:"feature phone"},{regex:"(?:Sony(?:Ericsson)?)?U1",model:"Satio",brand:"Sony Ericsson",device:"feature phone"},{regex:"(?:Sony(?:Ericsson)?)?U5",model:"Vivaz",brand:"Sony Ericsson",device:"feature phone"},{regex:"(?:Sony(?:Ericsson)?)?U8",model:"Vivaz pro",brand:"Sony Ericsson",device:"feature phone"},{regex:"(?:Sony(?:Ericsson)?)?W20",model:"Zylo",brand:"Sony Ericsson",device:"feature phone"},{regex:"(?:Sony(?:Ericsson)?)?W100",model:"Spiro",brand:"Sony Ericsson",device:"feature phone"},{regex:"(?:Sony(?:Ericsson)?)?W150",model:"Yendo",brand:"Sony Ericsson",device:"feature phone"},{regex:"(?:Sony(?:Ericsson)?)?W960",model:"W960",brand:"Sony Ericsson",device:"feature phone"},{regex:"(?:Sony(?:Ericsson)?)?WT13",model:"Mix Walkman",brand:"Sony Ericsson",device:"feature phone"},{regex:"SO-04F",model:"Xperia A2"},{regex:"G2299",model:"Xperia R1 Plus"},{regex:"SO-04G",model:"Xperia A4"},{regex:"(?:Sony(?:Ericsson)?)?I(?:4113|31[12]3)",model:"Xperia 10"},{regex:"(?:Sony(?:Ericsson)?)?J3173(?:[);/ ]|$)",model:"Xperia Ace"},{regex:"(?:A001SO|XQ-A[TU]52|XQ-AU42|SO-41A|SOV43)(?:[);/ ]|$)",model:"Xperia 10 II"},{regex:"(?:Sony(?:Ericsson)?)?I(?:42[19]3|3223)",model:"Xperia 10 Plus"},{regex:"(?:Sony(?:Ericsson)?)?I4193",model:"Xperia 10 Dual"},{regex:"(?:Sony(?:Ericsson)?)?(?:J(?:9110|81[17]0)|SOV40|SO-03L|802SO)",model:"Xperia 1"},{regex:"(?:Sony(?:Ericsson)?)?(?:SOG01|SO-51A|XQ-AT42|XQ-AT51)(?:[);/ ]|$)",model:"Xperia 1 II"},{regex:"(?:Sony(?:Ericsson)?)?LT22i|Xperia P",model:"Xperia P"},{regex:"(?:Sony(?:Ericsson)?)?LT25i|Xperia V",model:"Xperia V"},{regex:"(?:Sony(?:Ericsson)?)?J92[16]0",model:"Xperia 5 Dual"},{regex:"(?:Sony(?:Ericsson)?)?(?:J82[17]0|SO-01M|SOV41|901SO)",model:"Xperia 5"},{regex:"(?:Sony(?:Ericsson)?)?(?:SOG02|A002SO|XQ-AS[567]2|SO-52A)",model:"Xperia 5 II"},{regex:"(?:Sony(?:Ericsson)?)?(?:SOV42|902SO)",model:"Xperia 8"},{regex:"(?:Sony(?:Ericsson)?)?J3273",model:"Xperia 8 Lite"},{regex:"(?:Sony(?:Ericsson)?)?LT26ii",model:"Xperia SL"},{regex:"(?:Sony(?:Ericsson)?)?LT26i|Xperia S(?:[);/ ]|$)",model:"Xperia S"},{regex:"(?:Sony(?:Ericsson)?)?SO-02C",model:"Xperia arco"},{regex:"(?:Sony(?:Ericsson)?)?SO-03D",model:"Xperia arco HD"},{regex:"(?:Sony(?:Ericsson)?)?LT26w",model:"Xperia arco S"},{regex:"(?:Sony(?:Ericsson)?)?LT28[aih]",model:"Xperia ion"},{regex:"(?:Sony(?:Ericsson)?)?LT29i|Xperia TX(?:[);/ ]|$)",model:"Xperia TX"},{regex:"(?:Sony(?:Ericsson)?)?LT30a",model:"Xperia T LTE"},{regex:"(?:Sony(?:Ericsson)?)?LT30p",model:"Xperia T"},{regex:"(?:Sony(?:Ericsson)?)?ST21[ia]2",model:"Xperia tipo dual"},{regex:"(?:Sony(?:Ericsson)?)?ST21[ia]",model:"Xperia tipo"},{regex:"(?:Sony(?:Ericsson)?)?ST23[ia]",model:"Xperia miro"},{regex:"(?:Sony(?:Ericsson)?)?ST25[ia]",model:"Xperia U"},{regex:"(?:Sony(?:Ericsson)?)?SOL22",model:"Xperia UL"},{regex:"(?:Sony(?:Ericsson)?)?ST26[ia]",model:"Xperia J"},{regex:"(?:Sony(?:Ericsson)?)?ST27[ia]",model:"Xperia go"},{regex:"(?:Sony(?:Ericsson)?)?C150[45]",model:"Xperia E"},{regex:"(?:Sony(?:Ericsson)?)?C160[45]",model:"Xperia E Dual"},{regex:"(?:Sony(?:Ericsson)?)?(?:E210[45]|E2115|E2124)",model:"Xperia E4"},{regex:"(?:Sony(?:Ericsson)?)?E20[05]3|E2006",model:"Xperia E4G"},{regex:"(?:Sony(?:Ericsson)?)?C190[45]",model:"Xperia M"},{regex:"(?:Sony(?:Ericsson)?)?C200[45]",model:"Xperia M Dual"},{regex:"(?:Sony(?:Ericsson)?)?C210[45]|S36h",model:"Xperia L"},{regex:"(?:Sony(?:Ericsson)?)?C230[45]|S39h",model:"Xperia C"},{regex:"(?:Sony(?:Ericsson)?)?C530[236]|Xperia SP(?:[);/ ]|$)",model:"Xperia SP"},{regex:"(?:Sony(?:Ericsson)?)?C550[23]",model:"Xperia ZR"},{regex:"(?:Sony(?:Ericsson)?)?C650[236]|Xperia ZL(?:[);/ ]|$)",model:"Xperia ZL"},{regex:"(?:Sony(?:Ericsson)?)?SOL25(?:[);/ ]|$)",model:"Xperia ZL2"},{regex:"(?:Sony(?:Ericsson)?)?(?:C66(?:0[236]|16)|SO-02E)",model:"Xperia Z"},{regex:"(?:Sony(?:Ericsson)?)?(?:C68(?:0[26]|[34]3)|XL39H|SOL24)|Xperia Z Ultra(?:[);/ ]|$)",device:"phablet",model:"Xperia Z Ultra"},{regex:"Xperia Z(?:[);/ ]|$)",model:"Xperia Z"},{regex:"(?:Sony(?:Ericsson)?)?D200[45]",model:"Xperia E1"},{regex:"(?:Sony(?:Ericsson)?)?D21(?:0[45]|14)",model:"Xperia E1 Dual"},{regex:"(?:Sony(?:Ericsson)?)?D22(?:0[236]|43)",model:"Xperia E3"},{regex:"(?:Sony(?:Ericsson)?)?D2212|E3 Dual",model:"Xperia E3 Dual"},{regex:"(?:Sony(?:Ericsson)?)?E20[34]3",model:"Xperia E4g Dual"},{regex:"H33[12]1",model:"Xperia L2"},{regex:"H43[13]1",model:"Xperia L2 Dual"},{regex:"I3312",model:"Xperia L3"},{regex:"I43[13]2",model:"Xperia L3 Dual"},{regex:"XQ-AD51",model:"Xperia L4"},{regex:"(?:Sony(?:Ericsson)?)?D2302",model:"Xperia M2 Dual"},{regex:"(?:Sony(?:Ericsson)?)?D230[356]",model:"Xperia M2"},{regex:"(?:Sony(?:Ericsson)?)?D240[36]",model:"Xperia M2 Aqua"},{regex:"(?:Sony(?:Ericsson)?)?(?:E230[36]|E23[35]3)",model:"Xperia M4 Aqua"},{regex:"(?:Sony(?:Ericsson)?)?(?:E2312|E2363)",model:"Xperia M4 Aqua Dual"},{regex:"(?:Sony(?:Ericsson)?)?E56[05][36]",model:"Xperia M5"},{regex:"(?:Sony(?:Ericsson)?)?E56[436]3",model:"Xperia M5 Dual"},{regex:"(?:Sony(?:Ericsson)?)?D2502",model:"Xperia C3 Dual"},{regex:"(?:Sony(?:Ericsson)?)?D2533",model:"Xperia C3"},{regex:"(?:Sony(?:Ericsson)?)?E53[05]3|E5306",model:"Xperia C4"},{regex:"(?:Sony(?:Ericsson)?)?E53[0346]3",model:"Xperia C4 Dual"},{regex:"(?:Sony(?:Ericsson)?)?E5506|E5553",model:"Xperia C5 Ultra"},{regex:"(?:Sony(?:Ericsson)?)?E55[36]3",model:"Xperia C5 Ultra Dual"},{regex:"(?:Sony(?:Ericsson)?)?D510[236]",model:"Xperia T3"},{regex:"(?:Sony(?:Ericsson)?)?(?:D530[36]|D5316|XM50[ht])",model:"Xperia T2 Ultra",device:"phablet"},{regex:"(?:Sony(?:Ericsson)?)?D5322",model:"Xperia T2 Ultra Dual",device:"phablet"},{regex:"(?:Sony(?:Ericsson)?)?D5503|Xperia Z1 Compact",model:"Xperia Z1 Compact"},{regex:"(?:Sony(?:Ericsson)?)?(?:C69(?:0[236]|16|43)|SOL23|L39H|SO-0[12]F)|Xperia Z1(?:[);/ ]|$)",model:"Xperia Z1"},{regex:"(?:Sony(?:Ericsson)?)?(?:D58[03]3|SO-02G)|Xperia Z3 Compact(?:[);/ ]|$)",model:"Xperia Z3 Compact"},{regex:"Xperia Z2 Tablet Wifi",model:"Xperia Z2 Tablet WiFi",device:"tablet"},{regex:"SGP561",model:"Xperia Z2 Tablet",device:"tablet"},{regex:"(?:Sony(?:Ericsson)?)?(?:D65(?:0[23]|43)|SO-03F)|Xperia Z2(?:[);/ ]|$)",model:"Xperia Z2"},{regex:"D6563",model:"Xperia Z2a"},{regex:"(?:Sony(?:Ericsson)?)?(?:D66[045]3|D66[14]6|SO-01G|SOL26|401SO)|Xperia Z3(?:[);/ ]|$)",model:"Xperia Z3"},{regex:"(?:Sony(?:Ericsson)?)?(?:D6633|D6683)",model:"Xperia Z3 Dual"},{regex:"(?:Sony(?:Ericsson)?)?(?:E65[35]3)",model:"Xperia Z3+"},{regex:"(?:Sony(?:Ericsson)?)?(?:D6708)",model:"Xperia Z3v"},{regex:"SOV31|402SO|SO-03G",model:"Xperia Z4"},{regex:"E6508",model:"Xperia Z4v"},{regex:"SGP771|SOT31|SO-05G",model:"Xperia Z4",device:"tablet"},{regex:"(?:Sony(?:Ericsson)?)?(?:E58[02]3|SO-02H)",model:"Xperia Z5 Compact"},{regex:"(?:Sony(?:Ericsson)?)?(?:E66[05]3|SOV32|501SO|SO-01H)",model:"Xperia Z5"},{regex:"(?:Sony(?:Ericsson)?)?E66[38]3",model:"Xperia Z5 Dual"},{regex:"(?:Sony(?:Ericsson)?)?(?:E68[58]3|SO-03H)",model:"Xperia Z5 Premium"},{regex:"(?:Sony(?:Ericsson)?)?E6833",model:"Xperia Z5 Premium Dual"},{regex:"(?:Sony(?:Ericsson)?)?F311[135]",model:"Xperia XA"},{regex:"(?:Sony(?:Ericsson)?)?F311[26]",model:"Xperia XA Dual"},{regex:"(?:Sony(?:Ericsson)?)?F321[135]",model:"Xperia XA Ultra"},{regex:"(?:Sony(?:Ericsson)?)?F321[26]",model:"Xperia XA Ultra Dual"},{regex:"(?:Sony(?:Ericsson)?)?F833[12]|SOV34|601SO|SO-01J",model:"Xperia XZ"},{regex:"(?:Sony(?:Ericsson)?)?(?:701SO|SOV36|G834[123]|SO-01K)",model:"Xperia XZ1"},{regex:"(?:Sony(?:Ericsson)?)?G8441|SO-02K",model:"Xperia XZ1 Compact"},{regex:"(?:Sony(?:Ericsson)?)?F331[13]",model:"Xperia E5"},{regex:"(?:Sony(?:Ericsson)?)?G312[135]|G311[26]",model:"Xperia XA1"},{regex:"(?:Sony(?:Ericsson)?)?G341[26]|G342[13]",model:"Xperia XA1 Plus"},{regex:"(?:Sony(?:Ericsson)?)?G3426",model:"Xperia XA1 Plus Dual"},{regex:"(?:Sony(?:Ericsson)?)?G322[136]|G3212",model:"Xperia XA1 Ultra"},{regex:"(?:Sony(?:Ericsson)?)?H31[123]3",model:"Xperia XA2"},{regex:"(?:Sony(?:Ericsson)?)?H41[13]3",model:"Xperia XA2 Dual"},{regex:"H44[19]3",model:"Xperia XA2 Plus Dual"},{regex:"H4433",model:"H4433"},{regex:"(?:Sony(?:Ericsson)?)?H(?:3213|3223|4213|4233)",model:"Xperia XA2 Ultra"},{regex:"(?:Sony(?:Ericsson)?)?G823[12]|SOV35|602SO|SO-03J",model:"Xperia XZs"},{regex:"(?:Sony(?:Ericsson)?)?G814[12]|SO-04[JK]",model:"Xperia XZ Premium"},{regex:"(?:Sony(?:Ericsson)?)?(?:H83[12]4|H82[17]6|SOV37|SO-03K|H8296|702SO)",model:"Xperia XZ2"},{regex:"H8266",model:"Xperia XZ2 Dual"},{regex:"SO-05K",model:"Xperia XZ2 Compact"},{regex:"(?:H8166|SOV38)(?:[);/ ]|$)",model:"Xperia XZ2 Premium Dual"},{regex:"(?:Sony(?:Ericsson)?)?(?:H(8416|9436|9493)|SO-01L|SOV39|801SO)",model:"Xperia XZ3"},{regex:"(?:Sony(?:Ericsson)?)?G331[13]",model:"Xperia L1"},{regex:"(?:Sony(?:Ericsson)?)?G3312",model:"Xperia L1 Dual"},{regex:"(?:Sony(?:Ericsson)?)?SO-04E",model:"Xperia A"},{regex:"(?:Sony(?:Ericsson)?)?SO-04D",model:"Xperia GX"},{regex:"(?:Sony(?:Ericsson)?)?SO-05D",model:"Xperia SX"},{regex:"(?:Sony(?:Ericsson)?)?F5121",model:"Xperia X"},{regex:"(?:Sony(?:Ericsson)?)?F5122",model:"Xperia X Dual"},{regex:"(?:Sony(?:Ericsson)?)?F5321|SO-02J",model:"Xperia X Compact"},{regex:"(?:Sony(?:Ericsson)?)?(?:F8131|502SO|SOV33|SO-04H)",model:"Xperia X Performance"},{regex:"(?:Sony(?:Ericsson)?)?F8132",model:"Xperia X Performance Dual"},{regex:"SGP(?:311|312|321)(?:[);/ ]|$)|SO-03E",model:"Xperia Tablet Z",device:"tablet"},{regex:"SGP712(?:[);/ ]|$)",model:"Xperia Tablet Z4",device:"tablet"},{regex:"SGP(?:511|512|521)(?:[);/ ]|$)|SO-05F",model:"Xperia Tablet Z2",device:"tablet"},{regex:"SGP(?:6[124]1|612)(?:[);/ ]|$)",model:"Xperia Tablet Z3 Compact",device:"tablet"},{regex:"SGPT(?:12|121|122|123|13|131|132|133)(?:[);/ ]|$)",model:"Xperia Tablet S",device:"tablet"},{regex:"(?:BRAVIA )(2K GB ATV3|4K UR2|4K GB ATV3|4K GB|4K 2015|2015)(?:[);/ ]|$)",model:"Bravia $1",device:"tv"},{regex:"NW-A100Series",model:"Walkman A100",device:"portable media player"},{regex:"NW-Z1000Series",model:"Walkman Z1000",device:"portable media player"},{regex:"SonyBDP|SonyDBV",model:"Blu-ray Player",device:"tv"},{regex:"(?:Sony-)?(KDL?-?[0-9a-z]+)",model:"$1",device:"tv"},{regex:"Opera TV Store.*(?:Sony-)([0-9a-z\\-_]+)",model:"$1",device:"tv"},{regex:"((?:WT|SO|ST|SK|MK)[0-9]+[a-z]*[0-9]*)(?: Build|\\))",model:"$1",brand:"Sony Ericsson"},{regex:"(MT[0-9]{2}[a-z]?)(?:[);/ ]|$)",model:"$1",brand:"Sony Ericsson"},{regex:"portalmmm/2.0 K([a-z0-9]+)",model:"K$1",brand:"Sony Ericsson"},{regex:"Sony ?Ericsson?([^/;]*) Build",model:"$1",brand:"Sony Ericsson"},{regex:"SonyEricsson([CGJKPTWZ][0-9]+[a-z]+)/",model:"$1",brand:"Sony Ericsson",device:"feature phone"},{regex:"Sony ?Ericsson ?([a-z0-9\\-]+)",model:"$1",brand:"Sony Ericsson"},{regex:"Sony (Tablet[^/;]*) Build",model:"$1",device:"tablet"},{regex:"(SGP[^/;]*) Build",model:"$1",device:"tablet"},{regex:"Xperia ([^/;]*Tablet[^/;]*) Build",model:"Xperia $1",device:"tablet"},{regex:"Xperia ([^;/]+) Build",model:"Xperia $1"},{regex:"Sony[ -]?([^/;]*) Build",model:"$1"},{regex:"Sony[ -]?([a-z0-9\\-]+)",model:"$1"}]},Ergo={regex:"ERGO|(V550[_ ]Vision|B502 Basic|B504[_ ]Unit|A502[_ ]Aurum|A503[ _]Optima|Prime B400|A551 Sky 4G|A553 Power|A555 Universe|Force F500|GoTab GBT9|GoTab Gti8|F501_Magic|V551[ _]Aura|V540_Level|V570_BIG_BEN|B506[_ ]INTRO|A503-Optima|B505_Unit_4G)",device:"smartphone",models:[{regex:"F501_Magic",model:"F501 Magic"},{regex:"B502 Basic",model:"B502 Basic"},{regex:"A503-Optima",model:"A503 Optima"},{regex:"B506[_ ]INTRO",model:"B506 Intro"},{regex:"V550[_ ]Vision",model:"V550 Vision"},{regex:"B504[_ ]Unit",model:"B504 Unit"},{regex:"B505_Unit_4G",model:"B505 Unit 4G"},{regex:"V551[ _]Aura",model:"V551 Aura"},{regex:"V540_Level",model:"V540 Level"},{regex:"V570_BIG_BEN",model:"V570 Big Ben"},{regex:"Ergo F502",model:"F502 Platinum"},{regex:"(ERGO_)?A500[ _]Best",model:"A500 Best"},{regex:"(ERGO_)?A550[ _]Maxx",model:"A550 Maxx"},{regex:"Prime B400",model:"Prime B400"},{regex:"A502[_ ]Aurum",model:"A502 Aurum"},{regex:"A503[ _]Optima",model:"A503 Optima"},{regex:"A551 Sky 4G",model:"A551 Sky 4G"},{regex:"A553 Power",model:"A553 Power"},{regex:"A555 Universe",model:"A555 Universe"},{regex:"ERGO[_ ]A556",model:"A556"},{regex:"ERGO[_ ]F500",model:"F500"},{regex:"ERGO[_ ]F501",model:"F501"},{regex:"B500 First",model:"B500 First"},{regex:"Force F500",model:"Force F500"},{regex:"GoTab GBT9",model:"GoTab GBT9",device:"tablet"},{regex:"GoTab Gti8",model:"GoTab GTi8",device:"tablet"},{regex:"ERGO[_ ]Tab[ _]Crystal[ _]Lite",model:"Tab Crystal Lite",device:"tablet"},{regex:"ERGO[_ ]Tab[ _]Hero[ _]II",model:"Tab Hero II",device:"tablet"},{regex:"ERGO[_ ](B700)",model:"Tab $1",device:"tablet"},{regex:"ERGO SmartBox SX",model:"SmartBox SX",device:"tv"}]},Ericsson={regex:"(?:Ericsson(?:/ )?[a-z0-9]+)|(?:R380 2.0 WAP1.1)",device:"feature phone",models:[{regex:"Ericsson(?:/ )?([a-z0-9]+)",model:"$1"},{regex:"R380 2.0 WAP1.1",model:"R380"}]},Energizer={regex:"PowerMax|ENERGY[_ ]?(?:[45]00|400S|S[56]00|E12|E5[02]0S?)(?:[_ ](?:LTE|EU))?",device:"smartphone",models:[{regex:"PowerMax(P[0-9]+S?)",model:"Power Max $1"},{regex:"ENERGY[_ ]([45]00|E520)[_ ]LTE",model:"Energy $1 LTE"},{regex:"ENERGY[_ ]400S",model:"Energy 400S"},{regex:"ENERGY400",model:"Energy 400"},{regex:"ENERGY[_ ]S([56]00)",model:"Energy S$1"},{regex:"ENERGY[_ ]?(E500S|E500|E12)",model:"Energy $1"}]},eTouch={regex:"eTouch ?([a-z0-9]+)",device:"smartphone",model:"$1"},Etuline={regex:"(ETL-S(?:3520|4521|5042|5084|6022)|ETL-T(?:752G|882G|9[78]0))(?:[);/ ]|$)",device:"smartphone",models:[{regex:"(ETL-S(?:[^/); ]+))",model:"$1"},{regex:"(ETL-T(?:[^/); ]+))",device:"tablet",model:"$1"}]},Storex={regex:"eZee[^a-z]*Tab ?([^;/]*) Build|STOREX LinkBox",device:"tablet",models:[{regex:"eZee[^a-z]*Tab ?([^;/]*) Build",model:"eZee'Tab$1"},{regex:"STOREX LinkBox",model:"LinkBox",device:"tv"}]},Evertek={regex:"(Ever(?:Glory|Shine|Miracle|Mellow|Classic|Trendy|Fancy|Vivid|Slim|Glow|Magic|Smart|Star)[^/;]*) Build|E70[25]0HD|E805[01]HD|E9054HD|E8050HG|E7914HG",device:"smartphone",models:[{regex:"(E70[25]0HD|E805[01]HD|E9054HD|E8050HG|E7914HG)",device:"tablet",model:"Everpad $1"},{regex:"(Ever(?:Glory|Shine|Miracle|Mellow|Classic|Trendy|Fancy|Vivid|Slim|Glow|Magic|Smart|Star)[^/;]*) Build",model:"$1"}]},Evolio={regex:"Evolio|M4MAGIC",device:"smartphone",models:[{regex:"M4MAGIC",model:"M4 Magic"},{regex:"Evolio_M5Pro",model:"M5 Pro"},{regex:"Evolio[ _](M6|S4 Cobalt|S5|X10|Yuppi)",model:"$1"}]},Evolveo={regex:"EVOLVEO|StrongPhone",device:"smartphone",models:[{regex:"EVOLVEO MultiMedia Box M4",device:"tv",model:"MultiMedia Box M4"},{regex:"Smart TV ([^;/]*) Build",device:"tv",model:"Smart TV $1"},{regex:"EVOLVEO StrongPhone G([248])",model:"StrongPhone G$1"},{regex:"(?:EVOLVEO[ _])?StrongPhone[ _]?Q([679])(_LTE)?",model:"StrongPhone Q$1$2"},{regex:"EVOLVEO[ _]([^;/]*) Build",model:"$1"}]},Explay={regex:"Explay|[\\w]+-EXPLAY-FIN|ActiveD[ _]|Atlant |Informer[ _][0-9]+|CinemaTV 3G|Surfer[ _][0-9\\.]|sQuad[ _][0-9\\.]|Onliner[1-3]|RioPlay|Leader|Pulsar|Infinityll|Imperium[78]|Indigo|Lagoon",device:"tablet",models:[{regex:"ActiveD[ _]7.4[ _]3G",model:"ActiveD 7.4 3G"},{regex:"Imperium([78])(?:[);/ ]|$)",model:"Imperium $1 3G"},{regex:"ActiveD[ _]8.2[ _]3G",model:"ActiveD 8.2 3G"},{regex:"CinemaTV[ _]3G",model:"CinemaTV 3G"},{regex:"Infinityll",model:"Infinity II"},{regex:"Informer[ _]([0-9]+(?:[ _]3G)?)",model:"Informer $1"},{regex:"Surfer[ _]([0-9\\.]+(?:[ _]3G)?)",model:"Surfer $1"},{regex:"sQuad[ _]([0-9\\.]+(?:[ _]3G)?)",model:"sQuad $1"},{regex:"Onliner([1-3])",model:"Onliner $1"},{regex:"Atlant(?:[);/ ]|$)",device:"smartphone",model:"Atlant"},{regex:"Indigo(?:[);/ ]|$)",device:"smartphone",model:"Indigo"},{regex:"Pulsar(?:[);/ ]|$)",device:"smartphone",model:"Pulsar"},{regex:"[\\w]+-EXPLAY-FIN",device:"feature phone",model:"Fin"},{regex:"Lagoon(?:[);/ ]|$)",model:"Lagoon"},{regex:"Explay[ _-]([^;/]+)(?: Build|[;)])",model:"$1"},{regex:"RioPlay(?:[);/ ]|$)",device:"smartphone",model:"Rio Play"},{regex:"Leader",model:"Leader"}]},EvroMedia={regex:"EVROMEDIA|Playpad[ _]|PLAY_PAD_PRO_XL",device:"tablet",models:[{regex:"Playpad 3G GOO",model:"Play Pad 3G Goo"},{regex:"Play Pad 3G 2Goo",model:"Play Pad 3G 2Goo"},{regex:"Play Pad PRO",model:"Play Pad Pro"},{regex:"PLAY_PAD_PRO_XL",model:"Play Pad Pro XL"},{regex:"PlayPad 3GTab XL",model:"Play Pad 3G Tab XL"}]},EKO={regex:"EKO",device:"smartphone",models:[{regex:"EKO[ _-]?([^;/)]+) Build",model:"$1"},{regex:"EKO[ _-]?([^;/)]+)(?:[);/ ]|$)",model:"$1"}]},Extrem={regex:"Rock X9+|ROCK_X11",device:"smartphone",models:[{regex:"Rock X9+",model:"Rock X9+"},{regex:"ROCK_X11",model:"Rock X11"}]},Ezze={regex:"EZZE-|EZ(?!Browser)[a-z0-9]+",device:"feature phone",models:[{regex:"EZZE-([a-z0-9]+)",model:"$1"},{regex:"EZ([a-z0-9]+)",model:"EZ$1"}]},Ezio={regex:"EZIO-([a-z0-9]+)",device:"feature phone",model:"$1"},Forstar={regex:"Amosta ?3G5",device:"smartphone",models:[{regex:"Amosta ?3G5",model:"Amosta 3G5"}]},Foxconn={regex:"InFocus M[0-9]+[a-z]?",device:"smartphone",models:[{regex:"InFocus M([0-9]+[a-z]?)",model:"InFocus M$1"}]},Fondi={regex:"Fondi[- _]([^;/)]+)|(T702|Q008B|Q010B|Q718B|Q902|T602B|T707G|T708B|T725B|T725B1|T907B)(?:\\)| Build)",device:"smartphone",models:[{regex:"(T702|T602B)",model:"$1"},{regex:"(Q008B|Q010B|Q718B|Q902|T707G|T708B|T725B|T725B1|T907B)",device:"tablet",model:"$1"},{regex:"Fondi[- _]([^;/)]+)",model:"$1"}]},Fairphone={regex:"(FP(?:1U?|2))(?:[);/ ]|$)",device:"smartphone",model:"$1"},Famoco={regex:"(FX[123]00)",device:"smartphone",model:"$1"},FiGO={regex:"ATRIUM II F55L2|TRIO F40LT|CENTRIC S50G|EPIC F50G|Gravity X55L|Orion M50L|ULTRA M50G|M405B|VIRTUE3|F55L Build",device:"smartphone",models:[{regex:"ATRIUM II F55L2",model:"Atrium II"},{regex:"(F55L)",model:"$1"},{regex:"TRIO F40LT",model:"Trio F40LT"},{regex:"EPIC F50G",model:"Epic F50G"},{regex:"(Gravity X55L|Orion M50L)",model:"$1"},{regex:"ULTRA M50G",model:"Prime"},{regex:"M405B_8GB",model:"Virtue II 8GB"},{regex:"M405B",model:"Virtue II"},{regex:"VIRTUE3",model:"Virtue III"},{regex:"CENTRIC S50G",model:"Centric S50G"}]},FNB={regex:"ConeXis (A[12]|X[12])|SP5045V",device:"smartphone",models:[{regex:"SP5045V",model:"SP5045V"},{regex:"ConeXis A1",model:"ConeXis A1"},{regex:"ConeXis A2",model:"ConeXis A2"},{regex:"ConeXis X1",model:"ConeXis X1"},{regex:"ConeXis X2",model:"ConeXis X2"}]},Fujitsu$1={regex:"(?:F-01[FHJKLM]|F-02[EFGHLK]|F-03[DEFGKHL]|F-04[EGFHKJ]|F-05[DEFJG]|F-06[EF]|F-07[DE]|F-08D|F-09[DE]|F-10D|F-[45]1A|F-[45]2A|F-11D|F-12C|M532|FARTM933KZ|901FJ|arrows(?:RX|M03|M0[45](?:-PREMIUM)?)|801FJ|FJL2[12])(?:[);/ ]|$)",device:"smartphone",models:[{regex:"F-51A(?:[);/ ]|$)",model:"Arrows 5G F-51A"},{regex:"F-01F(?:[);/ ]|$)",model:"Arrows NX F-01F"},{regex:"(F-01[LM]|F-06F|F-03K|F-42A)(?:[);/ ]|$)",model:"Easy Phone $1"},{regex:"F-03L(?:[);/ ]|$)",model:"Arrows Phone F-03L"},{regex:"F-01J(?:[);/ ]|$)",model:"Arrows NX F-01J"},{regex:"F-01K(?:[);/ ]|$)",model:"Arrows NX F-01K"},{regex:"F-01H(?:[);/ ]|$)",model:"Arrows Fit F-01H"},{regex:"F-02E(?:[);/ ]|$)",model:"Arrows X F-02E"},{regex:"F-02G(?:[);/ ]|$)",model:"Arrows NX F-02G"},{regex:"FJL21(?:[);/ ]|$)",model:"Arrows EF FJL21"},{regex:"FJL22(?:[);/ ]|$)",model:"Arrows Z FJL22"},{regex:"F-02H(?:[);/ ]|$)",model:"Arrows NX F-02H"},{regex:"F-52A(?:[);/ ]|$)",model:"Arrows NX9 F-52A"},{regex:"F-03D(?:[);/ ]|$)",model:"Arrows Kiss F-03D"},{regex:"F-03E(?:[);/ ]|$)",model:"Arrows Kiss F-03E"},{regex:"F-03F(?:[);/ ]|$)",model:"Disney Mobile F-03F"},{regex:"F-03H(?:[);/ ]|$)",model:"Arrows SV F-03H"},{regex:"901FJ(?:[);/ ]|$)",model:"Arrows J 901FJ"},{regex:"F-04E(?:[);/ ]|$)",model:"Arrows V F-04E"},{regex:"F-04G(?:[);/ ]|$)",model:"Arrows NX F-04G"},{regex:"F-05D(?:[);/ ]|$)",model:"Arrows X LTE F-05D"},{regex:"F-05F(?:[);/ ]|$)",model:"Arrows NX F-05F"},{regex:"F-05J(?:[);/ ]|$)",model:"Arrows Be F-05J"},{regex:"F-05G(?:[);/ ]|$)",model:"Arrows K-tai"},{regex:"F-04K(?:[);/ ]|$)",model:"Arrows Be F-04K"},{regex:"F-02L(?:[);/ ]|$)",model:"Arrows Be 3 F-02L"},{regex:"F-41A(?:[);/ ]|$)",model:"Arrows Be 4 F-41A"},{regex:"F-06E(?:[);/ ]|$)",model:"Arrows NX F-06E"},{regex:"F-07D(?:[);/ ]|$)",model:"Arrows μ F-07D"},{regex:"801FJ(?:[);/ ]|$)",model:"Arrows U 801FJ"},{regex:"F-07E(?:[);/ ]|$)",model:"Disney Mobile F-07E"},{regex:"F-08D(?:[);/ ]|$)",model:"Disney Mobile F-08D"},{regex:"F-09D(?:[);/ ]|$)",model:"ANTEPRIMA F-09D"},{regex:"F-09E(?:[);/ ]|$)",model:"Raku-Raku Smartphone Premium F-09E"},{regex:"F-10D(?:[);/ ]|$)",model:"Arrows X F-10D"},{regex:"F-11D(?:[);/ ]|$)",model:"Arrows Me F-11D"},{regex:"F-12C(?:[);/ ]|$)",model:"F-12C"},{regex:"(F-04[JF])(?:[);/ ]|$)",model:"$1"},{regex:"arrowsM03(?:[);/ ]|$)",model:"Arrows M03"},{regex:"arrowsRX(?:[);/ ]|$)",model:"Arrows RX"},{regex:"arrowsM04-PREMIUM(?:[);/ ]|$)",model:"Arrows M04 Premium"},{regex:"arrowsM(0[45])(?:[);/ ]|$)",model:"Arrows M$1"},{regex:"(F-0[32]F|F-03G|F-04H|F-05E|F-02K)(?:[);/ ]|$)",model:"Arrows Tab $1",device:"tablet"},{regex:"FARTM933KZ",model:"Arrows Tab M504/HA4",device:"tablet"},{regex:"M532(?:[);/ ]|$)",model:"Stylistic",device:"tablet"}]},Gemini={regex:"(GEM[0-9]+[a-z]*)",device:"tablet",model:"$1"},Geotel={regex:"GEOTEL[ _]?",device:"smartphone",models:[{regex:"G1",model:"G1"},{regex:"GEOTEL[ _]?Note",model:"Note"},{regex:"GEOTEL[ _]AMIGO",model:"Amigo"}]},Ghia={regex:"GHIA|QS702|VECTOR10\\.1",device:"smartphone",models:[{regex:"QS702",model:"QS702"},{regex:"GHIA_ZEUS_3G",model:"Zeus 3G"},{regex:"GHIA_AXIS7",model:"Axis 7",device:"tablet"},{regex:"VECTOR10\\.1",model:'Vector 10.1"',device:"tablet"}]},Gigabyte={regex:"GSmart[ _][a-z0-9 ]+(?: Build|\\))|Gigabyte-[a-z0-9]+|Simba SX1|GSmart_Classic_Lite|(?<!Eagle )Classic[_ ](?:Joy|Pro)",device:"smartphone",models:[{regex:"(GSmart[ _][a-z0-9 ]+)(?: Build|[);])",model:"$1"},{regex:"Gigabyte-([a-z0-9]+)",model:"$1"},{regex:"(Classic[ _](?:Joy|Pro)|GSmart_Classic_Lite)",model:"$1"},{regex:"Simba SX1",model:"GSmart Simba SX1"}]},Gigaset={regex:"Gigaset|(?: GS80|GS1[0189]0|GS1[89]5|GS2[89]0|GS5[357]-6|GS[23]70(?:_Plus)?)(?:[);/ ]|$)",device:"smartphone",models:[{regex:"Gigaset QV(1030|830)",model:"Gigaset QV$1",device:"tablet"},{regex:"G(S[23]70)[_ ]Plus(?:[);/ ]|$)",model:"G$1 Plus"},{regex:"GS([23]70|1[0189]0|1[89]5|2[89]0|80)(?:[);/ ]|$)",model:"GS$1"},{regex:"GS57-6",model:"ME Pro"},{regex:"GS55-6",model:"ME"},{regex:"GS53-6",model:"ME Pure"},{regex:"Gigaset ([^;/]+) Build",model:"$1"},{regex:"Gigaset ([^;/)]+)(?:[);/]|$)",model:"$1"}]},Ginzzu={regex:"GINZZU[_ ]|((?:RS(?:7[14]|81|9[67])D)|S5002|(?<!Wave Pro )S5021|S5230|S50[45]0|S5120|RS(6[12]|9[45])D|S40[23]0|RS850[12]|RS9602)(?:[);/ ]|$)",device:"smartphone",models:[{regex:"GINZZU[_ ]?(S40[17]0|S4710|ST60[14]0|ST6120)",model:"$1"},{regex:"GINZZU[_ ]?(GT-(?:1050|7105|70[1-4]0|7115|7210|[WX]831|X[78]70|7810|8[01]10|X853))",model:"$1",device:"tablet"},{regex:"(RS6[12]D) ULTIMATE",model:"$1 Ultimate"},{regex:"(?:GINZZU[ _])?((?:RS(?:7[14]|81|9[4-7])D)|S50[45]0|S5002|S5021|S5230|S5120|S40[23]0|RS850[12]|RS9602|RS94D)(?:[);/ ]|$)",model:"$1"}]},Gionee={regex:"(?:GIO-)?GIONEE[ _-]?[a-z0-9]+|(?:Dream_D1|V188S?|GN[0-9]{3,4}[a-z]?)(?:[);/ ]|$)|F103(?: Pro)?(?: Build|\\))|P5 mini Build|P7 Max Build|(M7 Power|F106L|F100A|F103S|F103 Pro)(?:[);/ ]|$)",device:"smartphone",models:[{regex:"GN810(?:[);/ ]|$)",model:"GN810",device:"phablet"},{regex:"GN([0-9]{3,4}[a-z]?)(?:[);/ ]|$)",model:"GN$1"},{regex:"(F106L|F100A|V188S|V188|F103S)(?:[);/ ]|$)",model:"$1"},{regex:"M7 Power(?:[);/ ]|$)",model:"M7 Power"},{regex:"P5 mini Build",model:"P5 mini"},{regex:"P7 Max Build",model:"P7 Max"},{regex:"(S11) Lite(?:[);/ ]|$)",model:"$1 Lite"},{regex:"F103( Pro)?( BUILD|\\))",model:"F103$1"},{regex:"(?:(?:GIO-)?GIONEE[ _-])?Dream_D1(?:[);/ ]|$)",model:"Dream D1"},{regex:"(?:GIO-)?GIONEE[ _-]([a-z0-9_-]+).*Android",model:"$1"},{regex:"Android.*(?:GIO-)?GIONEE[ _-]([a-z0-9_-]+)",model:"$1"},{regex:"(?:GIO-)?GIONEE[ _-]?([a-z0-9]+)",model:"$1",device:"feature phone"}]},Grape={regex:"(?:Grape[ _])?GTM-5([^;/]+) Build",device:"smartphone",model:"GTM-5$1"},Vizio={regex:"Vizio|VAP430|VTAB1008",device:"tv",models:[{regex:"VAP430",model:"VAP430"},{regex:"VTAB1008",device:"tablet",model:"VTAB1008"}]},GOCLEVER={regex:"GOCLEVER|QUANTUM_[0-9]{3}|QUANTUM [0-9]{1}|QUANTUM 700N|Quantum2 500|QUANTUM_(1010N|1010M|900)|ARIES|INSIGNIA|ORION_|ELIPSO|LIBRA[ _]97",device:"smartphone",models:[{regex:"QUANTUM_(1010N|1010M|900)",model:"QUANTUM $1",device:"tablet"},{regex:"INSIGNIA_(785_PRO|1010M|800M)",model:"INSIGNIA $1",device:"tablet"},{regex:"(ORION|ARIES|ELIPSO)[_ ](71|101|102)",model:"$1 $2",device:"tablet"},{regex:"TQ700N",model:"QUANTUM 700N",device:"tablet"},{regex:"Quantum2 500",model:"Quantum 2 500"},{regex:"((?:QUANTUM|ARIES|INSIGNIA|ORION|ELIPSO)[ _-]?[^;/]+)(?: Build|\\))",model:"$1"},{regex:"GOCLEVER[ _-]TAB[ _-]?([^;/]+) Build",model:"TAB $1",device:"tablet"},{regex:"GOCLEVER[ _-]?([^;/]+) Build",model:"$1"},{regex:"TAB ([^;/)]+) Build/GOCLEVER",model:"TAB $1",device:"tablet"},{regex:"([^;/)]+) Build/GOCLEVER",model:"$1"},{regex:"GOCLEVER[ _-]?TAB[ _-]([^;/)]+)(?:[;/)]|$)",model:"TAB $1",device:"tablet"},{regex:"GOCLEVER[ _-]?([^;/)]+)(?:[;/)]|$)",model:"$1"},{regex:"LIBRA[ _]97",model:"Libra 97",device:"tablet"}]},GoMobile={regex:"GO Onyx|GO[0-9]{3,4}",device:"smartphone",models:[{regex:"GO Onyx",model:"Go Onyx"},{regex:"GO([0-9]{3,4})",model:"Go$1"}]},Goly={regex:"Goly[ _-]",device:"smartphone",models:[{regex:"Goly[ _-]([^;/]+) Build",model:"$1"},{regex:"Goly[ _-]([^;/)]+)(?:[;/)]|$)",model:"$1"}]},Google={regex:"Nexus|GoogleTV|Glass(?<!Browser)|CrKey[^a-z0-9]|Pixel(?: Build|\\))|Pixel (?:XL|C|[2-5]|[2-4] XL)|Google 2XL|G011A",device:"smartphone",models:[{regex:"Glass",model:"Glass"},{regex:"Galaxy Nexus",model:"Galaxy Nexus"},{regex:"(Nexus (?:S|4|5X?|One))",model:"$1"},{regex:"(Nexus (?:6P?))",device:"phablet",model:"$1"},{regex:"(Nexus (?:7|9|10))",device:"tablet",model:"$1"},{regex:"CrKey[^a-z0-9]",model:"Chromecast",device:"tv"},{regex:"GoogleTV",device:"tv",model:"GoogleTV"},{regex:"Pixel(?: Build|\\))",model:"Pixel"},{regex:"Pixel XL",model:"Pixel XL"},{regex:"Pixel 3 XL",model:"Pixel 3 XL"},{regex:"Pixel 2 XL",model:"Pixel 2 XL"},{regex:"Pixel 3a XL",model:"Pixel 3a XL"},{regex:"Pixel 3a",model:"Pixel 3a"},{regex:"Pixel 4 XL",model:"Pixel 4 XL"},{regex:"Pixel 4a \\(5G\\)",model:"Pixel 4a (5G)"},{regex:"pixel 4a",model:"Pixel 4a"},{regex:"G011A",model:"Pixel 2"},{regex:"Google 2XL",model:"Pixel 2 XL"},{regex:"pixel ([2-5])",model:"Pixel $1"},{regex:"Pixel C",device:"tablet",model:"Pixel C"}]},Gradiente={regex:"GRADIENTE",device:"feature phone",models:[{regex:"GRADIENTE-([a-z0-9]+)",model:"$1"},{regex:"GRADIENTE ([a-z0-9\\-]+)",model:"$1"}]},Grundig$1={regex:"GR?-TB[0-9]+[a-z]*|GRUNDIG|portalmmm/2\\.0 G|AFTEU(?:011|014|FF014)",device:"tv",models:[{regex:"(GR?-TB[0-9]+[a-z]*)",device:"tablet",model:"$1"},{regex:"GRUNDIG ([a-z0-9]+)",model:"$1"},{regex:"portalmmm/2\\.0 G([a-z0-9]+)",model:"G$1"},{regex:"AFTEU014",model:"Vision 7 4K (2019)"},{regex:"AFTEUFF014",model:"OLED 4K (2019)"},{regex:"AFTEU011",model:"Vision 6 HD (2019)"}]},Hafury={regex:"HAFURY",device:"smartphone",models:[{regex:"(MIX|UMAX)",model:"$1"}]},Haier$1={regex:"Haier|I6_Infinity|Titan[ _]T[135]|(?:HW-)?W(?:71[67]|757|860|970)(?:[);/ ]|$)|S5 Silk|(?:HM-)?(N505|N700|G(?:152|303|353|552|70[01])?-FL|HM-N501-FL|G(?:303)?-W|I(?:557)?-FL)|(?:PAD[ _](?:D71|G781|d85))|A2_Lite_NFC",device:"smartphone",models:[{regex:"A2_Lite_NFC",model:"Alpha A2 Lite NFC"},{regex:"HM-N505-FL",model:"I8"},{regex:"S5 Silk",model:"S5 Silk"},{regex:"HM-N700-FL",model:"L7"},{regex:"HM-N501-FL",model:"L56"},{regex:"(?:HM-)?(G(?:152|353|552|70[01])|G(?:303)|I(?:557))",model:"$1"},{regex:"(Titan[_ ]T[135]|I6_Infinity)",model:"$1"},{regex:"(?:HW-)?W(71[67]|757|860|970)(?:[);/ ]|$)",model:"W$1"},{regex:"PAD[ -_](D71|G781|d85)",device:"tablet",model:"$1"},{regex:"Haier[ _\\-](H[WT]-[^/;]+) Build",model:"$1"},{regex:"Haier[ _\\-](H[WT]-[a-z0-9_\\-]+)",model:"$1"},{regex:"Haier[ _\\-](sy[0-9]+)",model:"$1"},{regex:"Haier[ _\\-]([a-z0-9\\-]+)",model:"$1",device:"feature phone"}]},HannSpree={regex:"(HSG[0-9]{4})|SN97T41W|SN1AT71W\\(B\\)|SN70T51A|SN70T31?|T7-QC",device:"tablet",models:[{regex:"(HSG[0-9]{4})",model:"$1"},{regex:"SN1AT71W\\(B\\)",model:"SN1AT71W(B)"},{regex:"SN70T31",model:"SN70T31"},{regex:"SN70T3",model:"SN70T3"},{regex:"SN70T51A",model:"SN70T51A"},{regex:"SN97T41W",model:"SN97T41W"},{regex:"T7-QC",model:"SNAT71BUE"}]},Hasee={regex:"Hasee",device:"smartphone",models:[{regex:"Hasee ([^;/]+) Build",model:"$1"},{regex:"Hasee ([^;/)]+)(?:[);/ ]|$)",model:"$1"}]},Hisense$1={regex:"(?:HS-)?Hisense ([^;/]+) Build|Hisense [^);/]+|HISENSE; |HS-(?:G|U|EG?|I|L|T|X)[0-9]+[a-z0-9\\-]*|E270BSA|HWCD100E|HITV300C|M470BS[AE]|EG98|E2281|EG680|I46D1G|HAT4KDTV|HLTE([237]00T|200M|203T|202N|21[023567]T|22[67]T|22[13]E|230E|310[TM]|31[16]T|500T|501N|510[TM]|7[23]0T)",device:"smartphone",models:[{regex:"E270BSA",device:"tablet",model:"Sero 7"},{regex:"M470BS[AE]",device:"tablet",model:"Sero 7 Pro"},{regex:"E2281",device:"tablet",model:"Sero 8"},{regex:"HLTE202N",model:"A5"},{regex:"HLTE203T",model:"A5 Pro CC"},{regex:"HLTE700T",model:"A6"},{regex:"HLTE730T",model:"A6L"},{regex:"HLTE221E",model:"E Max"},{regex:"HLTE501N",model:"V Plus"},{regex:"HLTE223E",model:"H30"},{regex:"I46D1G",model:"Smartfren Andromax R"},{regex:"EG680",model:"Smartfren Andromax Z"},{regex:"EG98",model:"Smartfren Andromax U2"},{regex:"HLTE200T(?:[);/ ]|$)",model:"F26"},{regex:"HLTE210T(?:[);/ ]|$)",model:"F28"},{regex:"HLTE215T(?:[);/ ]|$)",model:"F29"},{regex:"HLTE213T(?:[);/ ]|$)",model:"King Kong 4"},{regex:"HLTE311T(?:[);/ ]|$)",model:"King Kong 4 Pro"},{regex:"HLTE216T(?:[);/ ]|$)",model:"King Kong 5"},{regex:"HLTE316T(?:[);/ ]|$)",model:"King Kong 5 Pro"},{regex:"HLTE226T(?:[);/ ]|$)",model:"King Kong 6"},{regex:"HLTE217T(?:[);/ ]|$)",model:"F30S"},{regex:"HLTE227T(?:[);/ ]|$)",model:"F40"},{regex:"HLTE310[TM](?:[);/ ]|$)",model:"H18"},{regex:"HLTE510[TM](?:[);/ ]|$)",model:"H20"},{regex:"HLTE500T(?:[);/ ]|$)",model:"H11"},{regex:"HLTE230E(?:[);/ ]|$)",model:"H40 Lite"},{regex:"HLTE720T(?:[);/ ]|$)",model:"U30",device:"phablet"},{regex:"HWCD100E(?:[);/ ]|$)",model:"U40 Lite"},{regex:"(HLTE300T|HLTE200M|HLTE212T)(?:[);/ ]|$)",model:"$1"},{regex:"HITV300C(?:[);/ ]|$)",model:"E9"},{regex:"E260T\\+(?:[);/ ]|$)",model:"Nana"},{regex:"(HS-(?:G|U|EG?|I|L|T|X)[0-9]+[a-z0-9\\-]*)",model:"$1"},{regex:"(HAT4KDTV)(?:[);/ ]|$)",device:"tv",model:"$1"},{regex:"(?:HS-)?Hisense ([^;/]+) Build",model:"$1"},{regex:"Hisense ([^);/]+)",model:"$1"}]},Hoffmann={regex:"(HOFFMANN|Neo[_ ]A[1379]00)(?:[);/ ]|$)",device:"smartphone",models:[{regex:"Neo[_ ](A[1379]00)",model:"Neo $1"},{regex:"HOFFMANN[ _]X[-_ ](Prime|Twist|Max)",model:"X $1"}]},Homtom={regex:"Homtom|(?:HT[0-9]{1,2})(?: ?Pro)?(?:[);/ ]|$)",device:"smartphone",models:[{regex:"(?:Homtom[_ ])?HT ?([0-9]{1,2}(?: ?Pro)?)(?:[);/ ]|$)",model:"HT$1"},{regex:"Homtom ([^;/]+) Build",model:"$1"}]},Hosin={regex:"HOSIN[ _-]",device:"smartphone",models:[{regex:"HOSIN[ _-]([^;/]+) Build",model:"$1"},{regex:"HOSIN[ _-]([^;/]+)(?:[;/)]|$)",model:"$1"}]},Hoozo={regex:"(?:HOOZO[_ ](MT232|MT116|MT Pad 116 LTE|X1001)|HZ0010)(?:[);/ ]|$)",device:"tablet",models:[{regex:"HOOZO[_ ](MT232|MT116|MT Pad 116 LTE|X1001)(?:[);/ ]|$)",model:"$1"},{regex:"(HZ0010)(?:[);/ ]|$)",model:"$1"}]},Minix={regex:"NEO-(?:X8-H|U9-H|X[57]-mini|X8H-PLUS|X88-?I|X7-216A|X5-116A|X[68]|U1|Z64)(?:[);/ ]|$)",device:"tv",models:[{regex:"NEO-X8-H(?:[);/ ]|$)",model:"NEO X8H"},{regex:"NEO-X([57])-mini(?:[);/ ]|$)",model:"NEO X$1 Mini"},{regex:"NEO-X8H-PLUS(?:[);/ ]|$)",model:"NEO X8H Plus"},{regex:"NEO-X88-?I(?:[);/ ]|$)",model:"NEO X88i"},{regex:"NEO-X7-216A(?:[);/ ]|$)",model:"NEO X7"},{regex:"NEO-X5-116A(?:[);/ ]|$)",model:"NEO X5"},{regex:"NEO-X([68])(?:[);/ ]|$)",model:"NEO X$1"},{regex:"NEO-U1(?:[);/ ]|$)",model:"NEO U1"},{regex:"NEO-Z64(?:[);/ ]|$)",model:"NEO Z64"},{regex:"NEO-U9-H(?:[);/ ]|$)",model:"NEO U9H"}]},Huawei={regex:"(HW-)?(?:Huawei|MediaPad T1|Ideos|Honor[ _]?|(?:(?:AGS|AGS2|ALE|ALP|AMN|ANA|ANE|ARE|ARS|ASK|ATH|ATU|AUM|BAC|BAH[23]?|BG2|BGO|B[ZK]K|BKL|BL[ALN]|BND|BTV|CA[GMNZ]|CH[CM]|CHE[12]?|CLT|CMR|COL|COR|CPN|CRO|CRR|CUN|DIG|DLI|DRA|DUA|DUB|DUK|EDI|ELE|EML|EVA|EVR|FDR|FIG|FLA|FRD|FRL|GEM|GRA|HDN|HLK|HMA|Hol|HRY|HWI|H[36]0|INE|JAT|JEF|JDN|JDN2|JKM|JMM|JSN|KII|KIW|KNT|KOB|KSA|LDN|LEO|LIO|LLD|LND|LON|LRA|LUA|LY[AO]|MAR|MHA|MRD|MYA|NCE|NEM|NEO|NXT|PAR|PCT|PIC|PLE|PLK|POT|PPA|PRA|RIO|RNE|RVL|SCC|SCL|SCM|SEA|SHT|SLA|SNE|SPN|STF|STK|TAG|TIT|TNY|TRT|VCE|VEN|VIE|VKY|VNS|VOG|VRD|VTR|WAS|YAL|G(?:527|620S|621|630|735)|Y(?:221|330|550|6[23]5))-(?:[A-Z]{0,2}[0-9]{1,4}[A-Z]{0,3}?)|H1711|U(?:8230|8500|8661|8665|8667|8800|8818|8860|9200|9508))(?:[);/ ]|$))|hi6210sft|PE-(UL00|TL[12]0|TL00M)|T1-(A21[Lw]|A23L|701u|823L)|G7-(?:L01|TL00)|HW-01K|JNY-(LX[12]|AL10)|OXF-AN[01]0|TAS-(A[LN]00|L29|TL00)|WLZ-(AL10|AN00)|NIC-LX1A|MRX-(AL09|W09)|CDY-(?:[AT]N00|AN90|NX9A)|GLK-(?:[AT]L00|LX1U)|JER-[AT]N10|ELS-(?:[AT]N[10]0|NX9|N39|N04)|AKA-(AL10|L29)|MON-(W|AL)19|BMH-AN[12]0|AQM-([AT]L[01]0|LX1)|MOA-(AL[02]0|LX9N)|NTS-AL00|ART-(?:[AT]L00[xm]|L29N?|L28)|MED-(?:[AT]L00|LX9N?)|EBG-(?:AN[01]0|TN00)|ANA-(?:[AT]N00|NX9)|BZ[AK]-W00|BZT-(W09|AL[01]0)|HDL-(AL09|W09)|HWV3[123]|HW-02L|TEL-[AT]N(?:00a?|10)|KKG-AN00|MXW-AN00|JKM-AL00[ab]|TAH-(?:N29|AN00)m|C8817D|T1-821W|d-01[JK]|d-02[HK]|KRJ-W09|HWT31|Y320-U10|Y541-U02|VAT-L19|70[14]HW|60[58]HW|NOH-(?:NX9|AN00)|TNNH-AN00|LIO-(?:[TA]L00|[LN]29|AN00)|KOB2-[LW]09|AGS3-[WL]09|DNN-LX9|NEY-NX9|LON-AL00|HLK-L41|503HW|AGR-[LW]09|PPA-LX[12]|ANG-AN00|NOP-AN00",device:"smartphone",models:[{regex:"POT-[TA]L00a(?:[);/ ]|$)",model:"9S"},{regex:"U9500(?:[);/ ]|$)",model:"Ascend D1"},{regex:"Z100-UL00(?:[);/ ]|$)",model:"Ascend D3"},{regex:"Y320-(?:U10|T00|U05)(?:[);/ ]|$)",model:"Ascend Y320"},{regex:"Y330-U05(?:[);/ ]|$)",model:"Ascend Y330"},{regex:"Y541-U02(?:[);/ ]|$)",model:"Ascend Y5C"},{regex:"U8818(?:[);/ ]|$)",model:"Ascend G300"},{regex:"G527-U081(?:[);/ ]|$)",model:"Ascend G527"},{regex:"(G620S-L0[13]|C8817D)(?:[);/ ]|$)",model:"Ascend G620S"},{regex:"G630-U251(?:[);/ ]|$)",model:"Ascend G630"},{regex:"G7-(?:L01|TL00)(?:[);/ ]|$)",model:"Ascend G7"},{regex:"P7-L10(?:[);/ ]|$)",model:"Ascend P7"},{regex:"G730-C00(?:[);/ ]|$)",model:"Ascend G730"},{regex:"U9200(?:[);/ ]|$)",model:"Ascend P1"},{regex:"H1711(?:[);/ ]|$)",model:"Ascend XT2"},{regex:"Y221-U(?:[12]2|[0345]3)(?:[);/ ]|$)",model:"Ascend Y221"},{regex:"Y550-L03(?:[);/ ]|$)",model:"Ascend Y550"},{regex:"ART-[AT]L00[xm](?:[);/ ]|$)",model:"Enjoy 10"},{regex:"STK-[AT]L00(?:[);/ ]|$)",model:"Enjoy 10 Plus"},{regex:"MED-[AT]L00(?:[);/ ]|$)",model:"Enjoy 10E"},{regex:"AQM-[AT]L00(?:[);/ ]|$)",model:"Enjoy 10S"},{regex:"TAG-[ACT]L00(?:[);/ ]|$)",model:"Enjoy 5S"},{regex:"NCE-(AL[10]0|TL10)(?:[);/ ]|$)",model:"Enjoy 6"},{regex:"DIG-(?:TL10|AL00)(?:[);/ ]|$)",model:"Enjoy 6S"},{regex:"SLA-(?:AL00|TL10)(?:[);/ ]|$)",model:"Enjoy 7"},{regex:"FIG-(?:[AT]L[10]0)(?:[);/ ]|$)",model:"Enjoy 7S"},{regex:"(?:TRT-AL00[A]?|TRT-TL10A)(?:[);/ ]|$)",model:"Enjoy 7 Plus"},{regex:"LDN-(?:AL[12]0|TL[02]0)(?:[);/ ]|$)",model:"Enjoy 8"},{regex:"FLA-AL10(?:[);/ ]|$)",model:"Enjoy 8 Plus"},{regex:"ATU-[AT]L10(?:[);/ ]|$)",model:"Enjoy 8e"},{regex:"MRD-[TA]L00(?:[);/ ]|$)",model:"Enjoy 9e"},{regex:"DVC-TN20(?:[);/ ]|$)",model:"Enjoy 20 Pro"},{regex:"U8665(?:[);/ ]|$)",model:"Fusion 2"},{regex:"MED-LX9N?(?:[);/ ]|$)",model:"Y6p"},{regex:"G735-L(?:03|12|23)(?:[);/ ]|$)",model:"G Play"},{regex:"CHC-U(?:0[13]|23)(?:[);/ ]|$)",model:"G Play Mini"},{regex:"(?:Honor_|HW-)?G621-TL00M?(?:[);/ ]|$)",model:"G621"},{regex:"DIG-L2[12](?:[);/ ]|$)",model:"GR3 (2017)"},{regex:"KII-L21(?:[);/ ]|$)",model:"GR5"},{regex:"BLL-L2[12](?:[);/ ]|$)",model:"GR5 (2017)"},{regex:"RIO-L03(?:[);/ ]|$)",model:"GX8"},{regex:"U8860(?:[);/ ]|$)",model:"Honor"},{regex:"COL-(?:AL[01]0|TL[01]0|L29)(?:[);/ ]|$)",model:"Honor 10"},{regex:"HRY-(?:[AT]L00[A]?|LX[12]|LX1MEB)(?:[);/ ]|$)",model:"Honor 10 Lite"},{regex:"HRY-LX1T(?:[);/ ]|$)",model:"Honor 10I"},{regex:"U9508(?:[);/ ]|$)",model:"Honor 2"},{regex:"YAL-(?:L21|[AT]L00)(?:[);/ ]|$)",model:"Honor 20"},{regex:"LRA-AL00(?:[);/ ]|$)",model:"Honor 20 Lite"},{regex:"(HRY-AL00T[a]?)(?:[);/ ]|$)",model:"Honor 20I"},{regex:"YAL-(L41|AL10)(?:[);/ ]|$)",model:"Honor 20 Pro"},{regex:"(MAR-LX1H|YAL-AL50)(?:[);/ ]|$)",model:"Honor 20S"},{regex:"(?:BMH-AN[12]0|MXW-AN00)(?:[);/ ]|$)",model:"Honor 30"},{regex:"EBG-[AT]N00(?:[);/ ]|$)",model:"Honor 30 Pro"},{regex:"EBG-AN10(?:[);/ ]|$)",model:"Honor 30 Pro Plus"},{regex:"CDY-(?:AN90|NX9A)(?:[);/ ]|$)",model:"Honor 30S"},{regex:"LRA-LX1(?:[);/ ]|$)",model:"Honor 30I"},{regex:"(?:Honor_|HW-)?H30-(?:C00|L01M?|L02|U10|T00|T10)(?:_TD)?(?:[);/ ]|$)",model:"Honor 3C"},{regex:"Hol-U19(?:[);/ ]|$)",model:"Honor 3C Lite"},{regex:"G750-T01(?:[);/ ]|$)",model:"Honor 3X"},{regex:"(?:Honor_|HW-)?SCL-(?:AL00|CL00|TL00H?)(?:_TD)?(?:[);/ ]|$)",model:"Honor 4A"},{regex:"(?:Honor_|HW-)?CHM-U01(?:_TD)?(?:[);/ ]|$)",model:"Honor 4C"},{regex:"Honor 4c Pro(?:[);/ ]|$)",model:"Honor 4C Pro"},{regex:"AQM-AL10(?:[);/ ]|$)",model:"Honor 4T Pro"},{regex:"(CHE2?-[UT]L00[HM]?|CHE1-CL[12]0|CHE2-L(?:1[12]|23)|Che1-L04|CHE-TL00)(?:[);/ ]|$)",model:"Honor 4X"},{regex:"(?:Honor_|HW-)?CUN-[AT]L00(?:[);/ ]|$)",model:"Honor 5 Play"},{regex:"(?:Honor_|HW-)?CAM-(?:AL00|TL00H|TL00)(?:_TD)?(?:[);/ ]|$)",model:"Honor 5A"},{regex:"(?:Honor_|HW-)?NEM-(?:AL10|L51|UL10|TL00)(?:[);/ ]|$)",model:"Honor 5C"},{regex:"(?:Honor_|HW-)?NEM-(?:L22|TL00H)(?:[);/ ]|$)",model:"Honor 5C Dual SIM"},{regex:"(?:Honor_|HW-)?KIW-(?:AL10|TL00H|[TC]L00|L2[1-4]|UL00)(?:_TD)?(?:[);/ ]|$)",model:"Honor 5X"},{regex:"((?:Honor_|HW-)?H60-L(?:01|02|03|04|11|12)(?:_TD)?|HW-H60-J1)(?:[);/ ]|$)",model:"Honor 6"},{regex:"MYA-TL10(?:[);/ ]|$)",model:"Honor 6 Play"},{regex:"PE-(UL00|TL[12]0|TL00M)(?:[);/ ]|$)",model:"Honor 6 Plus"},{regex:"(?:HONOR[ _]?)?DLI-(?:AL10|L[24]2|TL20)(?:[);/ ]|$)",model:"Honor 6A"},{regex:"DIG-L21HN(?:[);/ ]|$)",model:"Honor 6C"},{regex:"JMM-L22(?:[);/ ]|$)",model:"Honor 6C Pro"},{regex:"(?:HONOR[ _]?)?BLN-(?:L2[124]|AL[1234]0|TL[01]0(?:[);/ ]|$))",model:"Honor 6X"},{regex:"(?:Honor[_]?|HW-)?PLK-(?:AL10|CL00|TL00|TL01H?|UL00|L01)(?:[);/ ]|$)",model:"Honor 7"},{regex:"(?:Honor_|HW-)?NEM-L21(?:[);/ ]|$)",model:"Honor 7 Lite"},{regex:"AUM-(?:AL[20]0|L33[A]?|TL20)(?:[);/ ]|$)",model:"Honor 7A"},{regex:"AUM-L29(?:[);/ ]|$)",model:"Honor 7A Pro"},{regex:"(?:Honor_|HW-)?(?:LND-(?:AL[34]0|L29|TL40)|AUM-L41)(?:[);/ ]|$)",model:"Honor 7C"},{regex:"ATH-(?:[CAU]L00|TL00H)(?:[);/ ]|$)",model:"Honor 7i"},{regex:"(?:Honor_|HW-)?DUA-(?:L22|LX3)(?:[);/ ]|$)",model:"Honor 7S"},{regex:"(?:HONOR[ _]?)?BND-(?:AL[01]0|TL10|L2[14]|L31)(?:[);/ ]|$)",model:"Honor 7X"},{regex:"(?:FRD-(?:AL[01]0|L0[249]|L1[49]|DL00)|VAT-L19)(?:[);/ ]|$)",model:"Honor 8"},{regex:"PRA-(?:AL00X|AL00|TL10)(?:[);/ ]|$)",model:"Honor 8 Lite"},{regex:"DUK-(?:L09|TL30)(?:[);/ ]|$)",model:"Honor 8 Pro"},{regex:"VEN-L22(?:[);/ ]|$)",model:"Honor 8 Smart"},{regex:"JAT-L(29|X[13])(?:[);/ ]|$)",model:"Honor 8A"},{regex:"JAT-L41(?:[);/ ]|$)",model:"Honor 8A Pro"},{regex:"BKK-(?:AL[10]0|L21|L22|LX2|TL00)(?:[);/ ]|$)",model:"Honor 8C"},{regex:"KSA-(LX[239]|AL00)(?:[);/ ]|$)",model:"Honor 8S"},{regex:"JSN-L(?:2[123]|42)|JSN-[TA]L00[a]?(?:[);/ ]|$)",model:"Honor 8X"},{regex:"ARE-(?:AL[10]0|L22(?:HN)?|TL00)(?:[);/ ]|$)",model:"Honor 8X Max"},{regex:"STF-(?:AL[10]0|L09S?|TL10)(?:[);/ ]|$)",model:"Honor 9"},{regex:"MOA-LX9N(?:[);/ ]|$)",model:"Honor 9A"},{regex:"AKA-L29(?:[);/ ]|$)",model:"Honor 9C"},{regex:"LLD-(?:AL[01]0|L[23]1|TL10)(?:[);/ ]|$)",model:"Honor 9 Lite"},{regex:"LLD-AL[23]0(?:[);/ ]|$)",model:"Honor 9i"},{regex:"DUA-LX9(?:[);/ ]|$)",model:"Honor 9S"},{regex:"HLK-AL00a?(?:[);/ ]|$)",model:"Honor 9X"},{regex:"HLK-(?:AL10|L4[12])(?:[);/ ]|$)",model:"Honor 9X Pro"},{regex:"CAM-UL00(?:[);/ ]|$)",model:"Honor Holly 3"},{regex:"NTS-AL00(?:[);/ ]|$)",model:"Honor Magic"},{regex:"TNY-[AT]L00(?:[);/ ]|$)",model:"Honor Magic 2"},{regex:"RVL-AL09(?:[);/ ]|$)",model:"Honor Note 10"},{regex:"EDI-AL10(?:[);/ ]|$)",model:"Honor Note 8"},{regex:"VKY-TL00(?:[);/ ]|$)",model:"Honor P10 Plus"},{regex:"VOG-AL00(?:[);/ ]|$)",model:"Honor P30 Pro"},{regex:"ANA-(?:[AT]N00|NX9)(?:[);/ ]|$)",model:"Honor P40"},{regex:"COR-(?:AL[01]0|L29|TL10)(?:[);/ ]|$)",model:"Honor Play"},{regex:"ASK-AL00x(?:[);/ ]|$)",model:"Honor Play 3"},{regex:"KSA-AL10(?:[);/ ]|$)",model:"Honor Play 3E"},{regex:"TNNH-AN00(?:[);/ ]|$)",model:"Honor Play 4"},{regex:"CHM-[CUT]L00[HM]?(?:[);/ ]|$)",model:"Honor Play 4C"},{regex:"AKA-AL10(?:[);/ ]|$)",model:"Honor Play 4T"},{regex:"DUA-[TA]L00(?:[);/ ]|$)",model:"Honor Play 7"},{regex:"JAT-[AT]L00(?:[);/ ]|$)",model:"Honor Play 8A"},{regex:"MOA-AL[02]0(?:[);/ ]|$)",model:"Honor Play 9A"},{regex:"BKL-(?:AL00|AL20|AL30|L09|TL10)(?:[);/ ]|$)",model:"Honor V10"},{regex:"PCT-[TA]L10(?:[);/ ]|$)",model:"Honor V20"},{regex:"KNT-(?:AL[12]0|[TU]L10)(?:[);/ ]|$)",model:"Honor V8"},{regex:"DUK-AL20(?:[);/ ]|$)",model:"Honor V9"},{regex:"JMM-[AT]L[01]0(?:[);/ ]|$)",model:"Honor V9 Play"},{regex:"BKL-L04(?:[);/ ]|$)",model:"Honor View 10"},{regex:"PCT-L29(?:[);/ ]|$)",model:"Honor View 20"},{regex:"OXF-AN00(?:[);/ ]|$)",model:"Honor View 30"},{regex:"OXF-AN10(?:[);/ ]|$)",model:"Honor View 30 Pro"},{regex:"(?:Honor_|HW-)?SCL-L(01|32)(?:_TD)?(?:[);/ ]|$)",model:"Honor Y6"},{regex:"(?:Honor_|HW-)?LYO-L21(?:[);/ ]|$)",model:"Honor Y6 II Compact"},{regex:"TEL-(?:AN(?:00a?|10)|TN00)(?:[);/ ]|$)",model:"Honor X10"},{regex:"KKG-AN00(?:[);/ ]|$)",model:"Honor X10 Max"},{regex:"DNN-LX9(?:[);/ ]|$)",model:"Honor X10 Lite"},{regex:"U8500(?:[);/ ]|$)",model:"Ideos X2"},{regex:"U8510(?:[);/ ]|$)",model:"Ideos X3"},{regex:"U8800(?:[);/ ]|$)",model:"Ideos X5"},{regex:"MLA-AL10(?:[);/ ]|$)",model:"Maimang 5"},{regex:"POT-AL10(?:[);/ ]|$)",model:"Maimang 8"},{regex:"TAH-(?:N29|AN00)m(?:[);/ ]|$)",model:"Mate XS"},{regex:"ALP-(?:[TA]L00|L[02]9)(?:[);/ ]|$)",model:"Mate 10"},{regex:"RNE-(?:AL00|L(?:01|03|21|23))(?:[);/ ]|$)",model:"Mate 10 Lite"},{regex:"BLA-(?:A09|L[02]9|[TA]L00)(?:[);/ ]|$)",model:"Mate 10 Pro"},{regex:"HMA-(?:[AT]L00|L[02]9)(?:[);/ ]|$)",model:"Mate 20"},{regex:"SNE-(?:AL00|LX[0-3])(?:[);/ ]|$)",model:"Mate 20 Lite"},{regex:"LYA-(?:AL[01]0|L[02]9|L0C|TL00)(?:[);/ ]|$)",model:"Mate 20 Pro"},{regex:"LYA-AL00P(?:[);/ ]|$)",model:"Mate 20 RS"},{regex:"EVR-(?:[TA]L00|L29|N29|AN00)(?:[);/ ]|$)",model:"Mate 20 X"},{regex:"TAS-([AT]L00|L29)(?:[);/ ]|$)",model:"Mate 30"},{regex:"TAS-AN00(?:[);/ ]|$)",model:"Mate 30 5G"},{regex:"SPN-AL00(?:[);/ ]|$)",model:"Mate 30 Lite"},{regex:"LIO-(?:[TA]L00|L29|AN00)(?:[);/ ]|$)",model:"Mate 30 Pro"},{regex:"LIO-N29(?:[);/ ]|$)",model:"Mate 30 Pro 5G"},{regex:"NOH-(?:NX9|AN00)(?:[);/ ]|$)",model:"Mate 40 Pro"},{regex:"NOP-AN00(?:[);/ ]|$)",model:"Mate 40 Pro+"},{regex:"NXT-(?:AL10|L29)(?:[);/ ]|$)",model:"Mate 8"},{regex:"MHA-(?:L[02]9|[AT]L00)(?:[);/ ]|$)",model:"Mate 9"},{regex:"BLL-L23(?:[);/ ]|$)",model:"Mate 9 Lite"},{regex:"LON-(?:AL00(?:-PD)?|L29)(?:[);/ ]|$)",model:"Mate 9 Pro"},{regex:"NEO-AL00(?:[);/ ]|$)",model:"Mate RS"},{regex:"NEO-L29(?:[);/ ]|$)",model:"Mate RS Porsche Design"},{regex:"CRR-(?:L09|UL00)(?:[);/ ]|$)",model:"Mate S"},{regex:"BND-L34(?:[);/ ]|$)",model:"Mate SE"},{regex:"(CAZ-(?:AL[01]0|TL[12]0)|CAN-L[01][1-3])(?:[);/ ]|$)",model:"Nova"},{regex:"608HW(?:[);/ ]|$)",model:"Nova Lite"},{regex:"(?:PIC-(?:[AT]L00|LX9)|HWV31)(?:[);/ ]|$)",model:"Nova 2"},{regex:"704HW(?:[);/ ]|$)",model:"Nova 2 Lite"},{regex:"BAC-(?:L01|TL00)(?:[);/ ]|$)",model:"Nova 2 Plus"},{regex:"BAC-(?:AL00|L2[12])(?:[);/ ]|$)",model:"Nova 2 Plus Dual SIM"},{regex:"RNE-L[02]2(?:[);/ ]|$)",model:"Nova 2I"},{regex:"HWI-[AT]L00(?:[);/ ]|$)",model:"Nova 2S"},{regex:"PAR-(?:[AT]L00|LX[19]|LX1M|TL20)(?:[);/ ]|$)",model:"Nova 3"},{regex:"ANE-AL00(?:[);/ ]|$)",model:"Nova 3e"},{regex:"INE-(?:AL00|LX[12]r|LX[12]|TL00)(?:[);/ ]|$)",model:"Nova 3i"},{regex:"VCE-(L22|[AT]L00)(?:[);/ ]|$)",model:"Nova 4"},{regex:"MAR-AL00(?:[);/ ]|$)",model:"Nova 4e"},{regex:"SEA-AL00(?:[);/ ]|$)",model:"Nova 5"},{regex:"SEA-AL10(?:[);/ ]|$)",model:"Nova 5 Pro"},{regex:"GLK-(?:[AT]L00|LX1U)(?:[);/ ]|$)",model:"Nova 5i"},{regex:"SPN-TL00(?:[);/ ]|$)",model:"Nova 5i Pro"},{regex:"WLZ-AL10(?:[);/ ]|$)",model:"Nova 6"},{regex:"WLZ-AN00(?:[);/ ]|$)",model:"Nova 6 5G"},{regex:"JNY-AL10(?:[);/ ]|$)",model:"Nova 6 SE"},{regex:"JEF-(?:[AT]N00|AN20|NX9)(?:[);/ ]|$)",model:"Nova 7 5G"},{regex:"JER-[AT]N10(?:[);/ ]|$)",model:"Nova 7 Pro 5G"},{regex:"CDY-(?:[AT]N00|NX9B)(?:[);/ ]|$)",model:"Nova 7 SE 5G"},{regex:"JNY-LX2(?:[);/ ]|$)",model:"Nova 7i"},{regex:"ANG-AN00(?:[);/ ]|$)",model:"Nova 8 5G"},{regex:"DIG-L01(?:[);/ ]|$)",model:"Nova Smart"},{regex:"WAS-AL00(?:[);/ ]|$)",model:"Nova Youth"},{regex:"FIG-L(?:A1|X[123])(?:[);/ ]|$)",model:"P smart"},{regex:"POT-(?:LX(?:[13]|1T|2J|1AF)|AL00)(?:[);/ ]|$)",model:"P smart (2019)"},{regex:"POT-LX1A(?:[);/ ]|$)",model:"P smart (2020)"},{regex:"PPA-LX[12](?:[);/ ]|$)",model:"P smart (2021)"},{regex:"STK-LX1(?:[);/ ]|$)",model:"P smart Z"},{regex:"VTR-(?:L[02]9|AL00|TL00)(?:[);/ ]|$)",model:"P10"},{regex:"WAS-(?:L(?:X1|X1A|X2|X2J|X3|03T)|TL10)(?:[);/ ]|$)",model:"P10 Lite"},{regex:"VKY-(?:AL00|L09|L29)(?:[);/ ]|$)",model:"P10 Plus"},{regex:"BAC-L[02]3(?:[);/ ]|$)",model:"P10 Selfie"},{regex:"EML-(?:[TA]L00|L[02]9)(?:[);/ ]|$)",model:"P20"},{regex:"(?:ANE-(?:LX[123]|LX2J|TL00)|HWV32)(?:[);/ ]|$)",model:"P20 Lite"},{regex:"(?:CLT-(?:AL0[01]|TL0[01]|L(?:04|[02]9))|HW-01K)(?:[);/ ]|$)",model:"P20 Pro"},{regex:"(ELE-L(?:04|09|29)|ELE-[AT]L00)(?:[);/ ]|$)",model:"P30"},{regex:"(?:MAR-(?:LX(?:1[BM]|2J?|3BM)|TL00)|NIC-LX1A|HWV33)(?:[);/ ]|$)",model:"P30 Lite"},{regex:"MAR-LX[13]Am?(?:[);/ ]|$)",model:"P30 Lite Dual SIM"},{regex:"(?:VOG-(?:L(?:04|09|29)|TL00|AL10)|HW-02L)(?:[);/ ]|$)",model:"P30 Pro"},{regex:"ANA-LX4(?:[);/ ]|$)",model:"P40"},{regex:"JNY-LX1(?:[);/ ]|$)",model:"P40 Lite"},{regex:"ART-L29(?:[);/ ]|$)",model:"P40 Lite E"},{regex:"ART-L29N(?:[);/ ]|$)",model:"P40 Lite E NFC"},{regex:"(?:ELS-(?:[AT]N00|NX9|N04)|NEY-NX9)(?:[);/ ]|$)",model:"P40 Pro"},{regex:"ELS-(?:AN10|N39)(?:[);/ ]|$)",model:"P40 Pro Plus"},{regex:"GRA-(?:L09|UL00)(?:[);/ ]|$)",model:"P8"},{regex:"(?:ALE-L(?:02|21|23)|ALE-UL00|ALE-TL00|503HW)(?:[);/ ]|$)",model:"P8 Lite (2015)"},{regex:"(?:PRA-L(?:A1|X2|X1|X3)|hi6210sft)(?:[);/ ]|$)",model:"P8 Lite (2017)"},{regex:"EVA-(?:AL[10]0|L[012]9|[TCD]L00)(?:[);/ ]|$)",model:"P9"},{regex:"VNS-L(?:[23]1|[26]2)(?:[);/ ]|$)",model:"P9 Lite"},{regex:"SLA-L(?:02|03|22|23)(?:[);/ ]|$)",model:"P9 Lite Mini"},{regex:"DIG-L(?:03|23)(?:[);/ ]|$)",model:"P9 Lite Smart"},{regex:"VIE-(?:AL10|L[02]9)(?:[);/ ]|$)",model:"P9 Plus"},{regex:"ATH-UL0[16](?:[);/ ]|$)",model:"ShotX"},{regex:"U(8230|8661|8667)(?:[);/ ]|$)",model:"U$1"},{regex:"ARS-([AT]L00|L22)(?:[);/ ]|$)",model:"Y Max"},{regex:"CRO-(?:L[02]2|U00)(?:[);/ ]|$)",model:"Y3 (2017)"},{regex:"CAG-L[02]2(?:[);/ ]|$)",model:"Y3 (2018)"},{regex:"LUA-(U22|L2[12]|U03)(?:[);/ ]|$)",model:"Y3II"},{regex:"MYA-(?:L(?:02|03|2[23])|U29)(?:[);/ ]|$)",model:"Y5 (2017)"},{regex:"DRA-L(?:01|03|21|23|X3)(?:[);/ ]|$)",model:"Y5 (2018)"},{regex:"AMN-LX[1239](?:[);/ ]|$)",model:"Y5 (2019)"},{regex:"DRA-LX5(?:[);/ ]|$)",model:"Y5 lite"},{regex:"DRA-LX9(?:[);/ ]|$)",model:"Y5p"},{regex:"CRO-L[02]3(?:[);/ ]|$)",model:"Y5 Lite (2017)"},{regex:"CAG-L[02]3(?:[);/ ]|$)",model:"Y5 Lite (2018)"},{regex:"DRA-(?:LX2|[AT]L00)(?:[);/ ]|$)",model:"Y5 Prime (2018)"},{regex:"MYA-L13(?:[);/ ]|$)",model:"Y5 Pro (2017)"},{regex:"CUN-(?:L(?:0[123]|2[123]|33)|U29)(?:[);/ ]|$)",model:"Y5II"},{regex:"(?:SCC-U21|SCL-U31)(?:[);/ ]|$)",model:"Y6"},{regex:"MYA-L11(?:[);/ ]|$)",model:"Y6 (2016)"},{regex:"MYA-(L41|AL10)(?:[);/ ]|$)",model:"Y6 (2017)"},{regex:"ATU-L(?:11|21|22|X3)(?:[);/ ]|$)",model:"Y6 (2018)"},{regex:"MRD-L(?:X1[NF]?|X3)(?:[);/ ]|$)",model:"Y6 (2019)"},{regex:"ATU-L(?:31|42)(?:[);/ ]|$)",model:"Y6 Prime (2018)"},{regex:"TIT-(?:AL00|L01|U02)(?:[);/ ]|$)",model:"Y6 Pro"},{regex:"MRD-LX2(?:[);/ ]|$)",model:"Y6 Pro (2019)"},{regex:"Y625-U03(?:[);/ ]|$)",model:"Y625"},{regex:"Y635-L0[123](?:[);/ ]|$)",model:"Y635"},{regex:"Y635-L21(?:[);/ ]|$)",model:"Y635 Dual SIM"},{regex:"CAM-L(?:03|21|23|32)(?:[);/ ]|$)",model:"Y6II"},{regex:"TRT-LX[123](?:[);/ ]|$)",model:"Y7 (2017)"},{regex:"LDN-L(?:01|X3)(?:[);/ ]|$)",model:"Y7 (2018)"},{regex:"(?:HUAWEI[ _]?)?DUB-(?:LX[13]|TL00)(?:[);/ ]|$)",model:"Y7 (2019)"},{regex:"(LDN-(?:AL00|L21)|TRT-TL10)(?:[);/ ]|$)",model:"Y7 Prime"},{regex:"(LDN-(?:LX2|TL10)|TRT-(?:L21A|L53))(?:[);/ ]|$)",model:"Y7 Prime (2018)"},{regex:"DUB-(?:LX2|AL00)(?:[);/ ]|$)",model:"Y7 Pro (2019)"},{regex:"DUB-AL00a(?:[);/ ]|$)",model:"Enjoy 9"},{regex:"DUB-AL20(?:[);/ ]|$)",model:"Y7 Pro (2019)"},{regex:"PPA-LX3(?:[);/ ]|$)",model:"Y7a"},{regex:"ART-L28(?:[);/ ]|$)",model:"Y7p"},{regex:"AQM-LX1(?:[);/ ]|$)",model:"Y8p"},{regex:"FLA-(LX[123]|AL20|TL10)(?:[);/ ]|$)",model:"Y9 (2018)"},{regex:"JKM-(?:[TA]L00[ab]?|LX[123])(?:[);/ ]|$)",model:"Y9 (2019)"},{regex:"STK-(L2[12]|LX3)(?:[);/ ]|$)",model:"Y9 Prime (2019)"},{regex:"FRL-L2[23](?:[);/ ]|$)",model:"Y9a"},{regex:"HWT31(?:[);/ ]|$)",model:'Qua Tab 02 10.1"',device:"tablet"},{regex:"HDN-[LW]09(?:[);/ ]|$)",model:"Honor Water Play 10.1",device:"tablet"},{regex:"BAH3-(?:AL00|[LW]09)(?:[);/ ]|$)",model:'MatePad 10.4"',device:"tablet"},{regex:"BAH3-W59(?:[);/ ]|$)",model:'MatePad 10.4" WiFi',device:"tablet"},{regex:"AGS3-[WL]09(?:[);/ ]|$)",model:"MatePad T10s",device:"tablet"},{regex:"HDL-(?:W09|AL09)(?:[);/ ]|$)",model:"Honor Water Play 8.0",device:"tablet"},{regex:"JDN-(?:AL00|W09)(?:[);/ ]|$)",model:"Honor Pad 2",device:"tablet"},{regex:"KRJ-W09(?:[);/ ]|$)",model:"Honor Pad V6",device:"tablet"},{regex:"MON-(W|AL)19(?:[);/ ]|$)",device:"tablet",model:"MatePad C5 8"},{regex:"BZA-W00(?:[);/ ]|$)",device:"tablet",model:"C3 9.6"},{regex:"M2-801L(?:[);/ ]|$)",device:"tablet",model:'MediaPad M2 8.0"'},{regex:"MRX-(AL09|W09)(?:[);/ ]|$)",device:"tablet",model:"MatePad Pro"},{regex:"CMR-(?:AL[01]9|W09)(?:[);/ ]|$)",device:"tablet",model:"MediaPad M5 10.8"},{regex:"CMR-W19(?:[);/ ]|$)",device:"tablet",model:"MediaPad M5 Pro 10.8"},{regex:"SCM-AL09(?:[);/ ]|$)",device:"tablet",model:"MediaPad M5 Pro"},{regex:"GEM-70[1-3]L(?:[);/ ]|$)",device:"tablet",model:"MediaPad X2"},{regex:"(?:JDN2-(:?[WL]09|AL[50]0)|BAH2-(?:AL[01]0|L09|W[01]9))(?:[);/ ]|$)",device:"tablet",model:"MediaPad M5 Lite"},{regex:"SHT-(?:AL|W)09(?:[);/ ]|$)",device:"tablet",model:"MediaPad M5 8.4"},{regex:"VRD-(?:(AL|W)09|AL10|W10)(?:[);/ ]|$)",device:"tablet",model:"MediaPad M6 8.4"},{regex:"SCM-W09(?:[);/ ]|$)",device:"tablet",model:"MediaPad M6 10"},{regex:"BTV-W09(?:[);/ ]|$)",device:"tablet",model:"MediaPad M3 8"},{regex:"(BAH-W09|CPN-(?:L|W)09|CPN-AL00|701HW)(?:[);/ ]|$)",device:"tablet",model:"MediaPad M3 Lite"},{regex:"BAH-(?:L09|AL00)(?:[);/ ]|$)",device:"tablet",model:"MediaPad M3 Lite 10"},{regex:"BTV-DL09",device:"tablet",model:"MediaPad M3"},{regex:"(AGS2-AL00|JDN2-W09)HN(?:[);/ ]|$)",device:"tablet",model:"Honor Tab 5"},{regex:"AGS2-(?:[LW]09|W19|L03)(?:[);/ ]|$)",device:"tablet",model:"MediaPad T5 10"},{regex:"KOB2-[LW]09(?:[);/ ]|$)",device:"tablet",model:'MediaPad T 8.0"'},{regex:"AGR-[LW]09(?:[);/ ]|$)",device:"tablet",model:"MediaPad T 10"},{regex:"AGS-(?:L0[39]|W09)(?:[);/ ]|$)",device:"tablet",model:"MediaPad T3 10"},{regex:"(KOB-(?:L|W)09|BZK-[LW]00)(?:[);/ ]|$)",device:"tablet",model:"MediaPad T3 8"},{regex:"BG2-(?:U0[13]|W09)(?:[);/ ]|$)",device:"tablet",model:"MediaPad T3 7"},{regex:"BGO-L03(?:[);/ ]|$)",device:"tablet",model:"MediaPad T2 7.0"},{regex:"(?:BGO-DL09|PLE-70[13]L)(?:[);/ ]|$)",device:"tablet",model:"MediaPad T2 7.0 Pro"},{regex:"JDN-L01(?:[);/ ]|$)",device:"tablet",model:"MediaPad T2 8.0 Pro"},{regex:"(?:FDR-(A01[LW]|A03L)|605HW)(?:[);/ ]|$)",device:"tablet",model:'MediaPad T2 10.0" Pro'},{regex:"T1-(?:A21[LW]|A23L)(?:[);/ ]|$)",device:"tablet",model:"MediaPad T1 10"},{regex:"T1-701u(?:[);/ ]|$)",device:"tablet",model:"MediaPad T1 7"},{regex:"(?:T1-82(?:3L|1W)|MediaPad T1 8.0)(?:[);/ ]|$)",device:"tablet",model:"MediaPad T1 8"},{regex:"AGS2-AL00(?:[);/ ]|$)",device:"tablet",model:"Enjoy Tablet 10.1"},{regex:"BZT-(W09|AL[01]0)(?:[);/ ]|$)",device:"tablet",model:"MediaPad C5 10.1"},{regex:"(?:d-01J|d-02[HK])(?:[);/ ]|$)",device:"tablet",model:"D Tab Compact"},{regex:"(d-01K)(?:[);/ ]|$)",device:"tablet",model:"dtab d-01K"},{regex:"LEO-BX9(?:[);/ ]|$)",device:"wearable",model:"Smart Watch 2"},{regex:"(MediaPad[^/;]*) Build",device:"tablet",model:"$1"},{regex:"Ideos([^;/]*) Build",model:"Ideos$1"},{regex:"(?:HUAWEI )?MT([0-9]+)",device:"phablet",model:"Ascend Mate $1"},{regex:"Huawei[ _\\-]?([^/;]*) Build",model:"$1"},{regex:"(?:HW-)?Huawei(?!Browser)(?:/1\\.0/0?(?:Huawei))?[_\\- /]?([a-z0-9\\-_]+)",model:"$1"},{regex:"Huawei; ([a-z0-9 \\-]+)",model:"$1"}]},Hyundai$1={regex:"Hyundai|Ultra (?:Active|Air|Charm|Dream|Energy|Latitude|Link|Live|Shadow|Shine|Storm|Style|Sync|Trend|Vision|Wave)|G(24027|2552[34])K|W25042L|HP554O|Seoul S8|L503F Plus|HT0701L16|HT0704K08|HT1004L16|HT1004LI16|Koral_8W2|Eternity[_ ]G25",device:"smartphone",models:[{regex:"Ultra (Active|Air|Charm|Dream|Energy Lite|Energy Plus|Energy|Latitude|Link|Live II|Live|Shadow|Shine|Storm|Style|Sync|Trend|Vision|Wave)",model:"Ultra $1"},{regex:"Seoul S8",model:"Seoul S8"},{regex:"G25523K",model:"Eternity G23"},{regex:"Eternity[_ ]G25",model:"Eternity G25"},{regex:"G25524K",model:"Eternity G24"},{regex:"G24027K",model:"Eternity G27"},{regex:"W25042L",model:"Eternity W42"},{regex:"HP554O",model:"HP554O"},{regex:"L503F Plus",model:"L503F Plus"},{regex:"L503F Plus",model:"L503F Plus"},{regex:"(?:Hyundai_)?(Eternity_G57L)",model:"$1"},{regex:"HT0701L16",model:"Koral 7XL",device:"tablet"},{regex:"HT1004LI16",model:"Koral 10XL",device:"tablet"},{regex:"Koral_8W2",model:"Koral 8W2",device:"tablet"},{regex:"HT1004L16",model:"Koral 10XL",device:"tablet"},{regex:"HT0704K08",model:"Koral 7M4",device:"tablet"},{regex:"Hyundai ([^;/]+) Build",model:"$1",device:"tablet"},{regex:"Hyundai[ _\\-]?([a-z0-9_-]+)",model:"$1",device:"tablet"}]},iBall={regex:"iBall[ _]([^;/)]+)[ _]Build|iBall_Slide|(?:Snap[_ ]4G2|6351-Q400i|iT-KSA0003|iT-KSA0012|iT-KSA0066|Avid|Twinkle_i5|Gorgeo[_ ]4GL|Brisk 4G2|Blaze_V4|Wondro 10|Q27 4G|Andi (?:Wink|5G Blink) 4G)(?:[);/ ]|$)",device:"tablet",models:[{regex:"Andi Wink 4G",device:"smartphone",model:"Andi Wink 4G"},{regex:"Andi 5G Blink 4G",device:"smartphone",model:"Andi 5G Blink 4G"},{regex:"(Snap[_ ]4G2|Avid|Twinkle_i5|Gorgeo[_ ]4GL|Blaze_V4|Wondro 10|Q27 4G|Brisk 4G2)(?:[);/ ]|$)",model:"$1"},{regex:"6351-Q400i(?:[);/ ]|$)",model:"Slide"},{regex:"iT-KSA0003(?:[);/ ]|$)",model:"iTAB BizniZ"},{regex:"iT-KSA0066(?:[);/ ]|$)",model:"iTAB BizniZ Mini"},{regex:"iT-KSA0012(?:[);/ ]|$)",model:"iTAB Moviez Pro"},{regex:"iBall[ _]([^;/)]+)(?:[ _]Build|\\))",model:"$1"}]},iRola={regex:"iRola ([^/;]+) Build|(DX758|DX752|DX752|DX758[ _]?Pro) Build",device:"tablet",models:[{regex:"DX758[ _]?Pro",model:"DX758 Pro"},{regex:"(DX758|DX752)",model:"$1"},{regex:"iRola ([^/;]+) Build",model:"$1"}]},iRulu={regex:"iRULU[ _-](X11|V[34]|U2|AL101)(?:[);/ ]|$)",device:"tablet",models:[{regex:"iRULU[ _-](X11|V[34]|AL101)(?:[);/ ]|$)",model:"$1"},{regex:"iRULU[ _](U2)(?:[);/ ]|$)",device:"smartphone",model:"$1"}]},Irbis={regex:"IRBIS|TZ(1(?:0[04]|42|5[01]|84|65|7[01345-89]|8[356]|9[12578])|49|55|72|22|7(?:1[124679]|2[021567]|37|4[257]|5[23457]|6[12]|72|7[17]|8[1]|9[147])|8(?:[34]1|5[3-8]|6[45]|7[2478]|8[1-5]|9[0127])|96[0-9])|TZ85|TZ13|TZ(?:one|art|HIT|81L)|(SP(?:0[56]|2[01]|4[1-36]|40[12]|45[345]|49[34]|50|51[0147]|531|54[12]|55[0124]|571))(?:[);/ ]|$)",device:"tablet",models:[{regex:"(TZ(?:[0-9]+)|TZ(?:one|art|HIT|81L))(?:[);/ ]|$)",model:"$1"},{regex:"(SP[0-9]+)(?:[);/ ]|$)",device:"smartphone",model:"$1"}]},iBerry={regex:"AUXUS ([^/;]+) Build",device:"smartphone",models:[{regex:"AUXUS (Core[^/;]+) Build",device:"tablet",model:"$1"},{regex:"AUXUS ([^/;]+) Build",model:"$1"}]},iHunt={regex:"iHunt|One_ Love_|TITAN_P11000_PRO|Like_(3|4U|3_Pro)|X300 Elite|S10_Tank_2019|S60_Discovery_2019|AlienXLite2020|Alien X Lite|Alien_X|S20 Ultra ApeX 2021",device:"smartphone",models:[{regex:"iHunt_Like",model:"Like"},{regex:"S10_Tank_2019",model:"S10 Tank (2019)"},{regex:"One_ Love_",model:"One Love"},{regex:"TITAN_P11000_PRO",model:"Titan P11000 Pro"},{regex:"Like_3_Pro",model:"Like 3 Pro"},{regex:"Like_3",model:"Like 3"},{regex:"Like_4U",model:"Like 4U"},{regex:"X300 Elite",model:"X300 Elite"},{regex:"S60_Discovery_2019",model:"S60 Discovery (2019)"},{regex:"AlienXLite2020",model:"Alien X Lite (2020)"},{regex:"Alien X Lite PRO",model:"Alien X Lite Pro"},{regex:"Alien X Lite",model:"Alien X Lite"},{regex:"Alien_X_ApeX",model:"Alien X ApeX"},{regex:"Alien_X",model:"Alien X"},{regex:"S20 Ultra ApeX 2021",model:"S20 Ultra ApeX (2021)"}]},IconBIT={regex:"IconBIT|NT-(3506M|0704S|0909T|1009T|10[01]1T|1017T|3601P/3602P|3603P|3702S|3805C|3905T|3701S|0701S|0805C|0902S|370[23]M)|XDS[789]4K|Omnicast UHD|Movie Smart 4K|Movie IPTV Quad",device:"tablet",models:[{regex:"NT-3506M",device:"smartphone",model:"NetTAB Mercury Quad FHD"},{regex:"NT-0704S",model:"NetTAB Sky LE"},{regex:"NT-0909T",model:"NetTAB Thor IZ"},{regex:"NT-1009T",model:"NetTAB Thor quad II"},{regex:"NT-10[01]1T",model:"NetTAB Thor LE"},{regex:"NT-1017T",model:"NetTAB Thor 3G quad"},{regex:"NT-3601P/3602P",model:"NetTAB Pocket 3G"},{regex:"NT-3603P",model:"NetTAB Pocket 3G Slim"},{regex:"NT-3702S",model:"NetTAB Sky HD 3G"},{regex:"NT-3805C",model:"NetTAB Skat 3G quad"},{regex:"NT-3701S",model:"NetTAB Sky 3G duo"},{regex:"NT-3905T",model:"NetTAB Thor ZX 3G"},{regex:"NT-0701S",model:"NetTAB Sky net"},{regex:"NT-0805C",model:"NetTAB Skat MX"},{regex:"NT-0902S",model:"NetTAB Space quad RX"},{regex:"NT-3702M",model:"NetTAB Matrix 3G duo"},{regex:"NT-3703M",model:"NetTAB Matrix 3GT"},{regex:"(?:iconBIT )?(Movie Smart 4K|Movie IPTV Quad|Movie Ultra HD 4K|XDS[789]4K|Omnicast UHD)",model:"$1",device:"tv"}]},LYF={regex:"(LYF[ _])?LS-[456][0-9]{3}|LYF/[^/]+/",device:"smartphone",models:[{regex:"LS-4004",model:"Flame 2"},{regex:"LS-5501",model:"Earth 1"},{regex:"LS-5021",model:"Earth 2"},{regex:"LS-5505",model:"Water F1"},{regex:"LS-4503",model:"Flame LS-4503"},{regex:"LS-4001",model:"Flame 3"},{regex:"LS-4003",model:"Flame 4"},{regex:"LS-4002",model:"Flame 5"},{regex:"LS-4005",model:"Flame 6"},{regex:"(LYF[ _])?LS-4006",model:"Flame 7"},{regex:"LS-4008",model:"Flame 7S"},{regex:"LS-450[58]",model:"Flame 8"},{regex:"LS-5002",model:"Water 1"},{regex:"LS-5005",model:"Water 4"},{regex:"LS-5006",model:"Water 6"},{regex:"LS-5008",model:"Water 2"},{regex:"LS-5009",model:"Wind 6"},{regex:"LS-5013",model:"Wind 5"},{regex:"LS-5014",model:"Wind 4"},{regex:"LS-5010",model:"Wind 1"},{regex:"LS-5015",model:"Water 8"},{regex:"LS-5016",model:"Wind 7"},{regex:"LS-5504",model:"Water 7"},{regex:"LS-5507",model:"Water 7S"},{regex:"LS-5017",model:"Water 11"},{regex:"LS-5018",model:"Wind 4S"},{regex:"LS-5020",model:"Water 10"},{regex:"LS-5201",model:"Water F1S"},{regex:"LS-5502",model:"Wind 3"},{regex:"LS-5503",model:"Water 3"},{regex:"LS-5506",model:"Water 9"},{regex:"LS-6001",model:"Wind 2"},{regex:"LYF/([^/]+)/",model:"$1"}]},Lumus={regex:"LUMUS Shell|(?:NEO(SR620|SC600)|INNOSR545|Lumus[_ ]Ion)(?:[);/ ]|$)",device:"smartphone",models:[{regex:"NEO(SR620|SC600)(?:[);/ ]|$)",model:"Neo $1"},{regex:"INNO(SR545)(?:[);/ ]|$)",model:"INNO $1"},{regex:"Lumus[_ ]Ion(?:[);/ ]|$)",model:"Ion"},{regex:"LUMUS Shell [0-9A-Z]+",device:"tv",model:""}]},M4tel={regex:"M4 SS[0-9]{4}(?:-R)?|M4_B[23]",device:"smartphone",models:[{regex:"SS1050",model:"Joy"},{regex:"SS1060",model:"Live"},{regex:"SS1070",model:"Sense"},{regex:"SS1080",model:"Max One"},{regex:"SS1090",model:"Max Ultra"},{regex:"SS4020",model:"Play"},{regex:"SS4040",model:"In Touch"},{regex:"SS4045",model:"Style"},{regex:"SS4345",model:"Soul Mini"},{regex:"SS4350",model:"Soul"},{regex:"SS4445",model:"Style Access"},{regex:"SS4450",model:"Share"},{regex:"SS4451",model:"Believe"},{regex:"SS4452",model:"Dream"},{regex:"SS4453",model:"Inspiration"},{regex:"SS4455",model:"Excite"},{regex:"SS4456",model:"Evolution"},{regex:"SS4457-R",model:"Ever"},{regex:"SS4457",model:"Elegance"},{regex:"SS4458-R",model:"Feel Plus"},{regex:"SS4458",model:"Attitude"},{regex:"M4_B([23])",model:"B$1"}]},iLA={regex:"iLA[-_ ](Silk|X)(?:[);/ ]|$)",device:"smartphone",model:"$1"},iNew={regex:"iNew|(?:V7A|V3 Plus|V3-?E|V3C|FIRE_Tab_6)(?:[);/ ]|$)",device:"smartphone",models:[{regex:"V3C(?:[);/ ]|$)",model:"V3C"},{regex:"V3-?E(?:[);/ ]|$)",model:"V3-E"},{regex:"V3 Plus(?:[);/ ]|$)",model:"V3 Plus"},{regex:"V7A(?:[);/ ]|$)",model:"V7A"},{regex:"FIRE_Tab_6(?:[);/ ]|$)",device:"tablet",model:"Fire Tab 6"},{regex:"iNew[ -_]([^;/]+) Build",model:"$1"}]},iPro={regex:"(?:Kylin[ _]5.[05]S?|KYLIN40|Jade[78]s|Amber[67]S?|Amber5S_Pro|Phonenix50S|Zafiro)(?:[);/ ]|$)",device:"smartphone",models:[{regex:"Kylin_5.0S",model:"Kylin 5.0S"},{regex:"Kylin (5.[05])",model:"Kylin $1"},{regex:"KYLIN40",model:"Kylin 40"},{regex:"Jade([78])s",model:"Jade $1s"},{regex:"Amber7S",model:"Amber 7S"},{regex:"Amber5S_Pro",model:"Amber 5S Pro"},{regex:"Amber6",model:"Amber 6"},{regex:"Phonenix50S",model:"Phonenix 50S"},{regex:"Zafiro",model:"Zafiro"}]},Infinix={regex:"Infinix",device:"smartphone",models:[{regex:"Infinix[ _-]X260",model:"Buzz"},{regex:"Infinix[ _-]X502",model:"Alpha Marvel"},{regex:"Infinix[ _-]X570",model:"Alpha"},{regex:"Infinix[ _-]X350",model:"Surf Smart"},{regex:"Infinix[ _-]X351",model:"Surf Smart 3G"},{regex:"Infinix[ _-]X352",model:"Surf Smart 2"},{regex:"Infinix[ _-]X403",model:"Surf Spice"},{regex:"Infinix[ _-]X503",model:"Surf Bravo"},{regex:"Infinix[ _-]X511",model:"Surf Noir"},{regex:"Infinix[ _-]X400",model:"Race"},{regex:"Infinix[ _-]X401",model:"Race Lite"},{regex:"Infinix[ _-]X450",model:"Race Bolt"},{regex:"Infinix[ _-]X451",model:"Race Bolt Q"},{regex:"Infinix[ _-]X454",model:"Race Bolt 2"},{regex:"Infinix[ _-]X500",model:"Race Eagle"},{regex:"Infinix[ _-]X501",model:"Race Jet"},{regex:"Infinix[ _-]X506",model:"Zero"},{regex:"Infinix[ _-]X509",model:"Zero 2"},{regex:"Infinix[ _-]X552",model:"Zero 3"},{regex:"Infinix[ _-]X555",model:"Zero 4"},{regex:"Infinix[ _-]X(?:574|602)",model:"Zero 4 Plus"},{regex:"Infinix[ _-]X603",model:"Zero 5"},{regex:"Infinix[ _-]X603B",model:"Zero 5 Pro"},{regex:"Infinix[ _-]X620",model:"Zero 6"},{regex:"Infinix[ _-]X507",model:"Hot"},{regex:"Infinix[ _-]X510",model:"Hot 2"},{regex:"Infinix[ _-]X55[34]",model:"Hot 3"},{regex:"Infinix[ _-]X521",model:"Hot S"},{regex:"Infinix[ _-]X522",model:"Hot S2"},{regex:"Infinix[ _-]X557",model:"Hot 4"},{regex:"Infinix[ _-]X556",model:"Hot 4 Pro"},{regex:"Infinix[ _-]X559c",model:"Hot 5"},{regex:"Infinix[ _-]X559",model:"Hot 5 Lite"},{regex:"Infinix[ _-]X606[BC]?",model:"Hot 6"},{regex:"Infinix[ _-]X608",model:"Hot 6 Pro"},{regex:"Infinix[ _-]X624",model:"Hot 7"},{regex:"Infinix[ _-]X650",model:"Hot 8"},{regex:"Infinix[ _-]X680",model:"Hot 9 Play"},{regex:"Infinix[ _-]X573B?",model:"Hot S3"},{regex:"Infinix[ _-]X5010",model:"Smart"},{regex:"Infinix[ _-]X5515F",model:"Smart 2"},{regex:"Infinix[ _-]X5514D",model:"Smart 2 Pro"},{regex:"Infinix[ _-]X653",model:"Smart 4"},{regex:"Infinix[ _-]X626",model:"S4"},{regex:"Infinix[ _-]X652",model:"S5"},{regex:"Infinix[ _-]X660",model:"S5 Pro"},{regex:"Infinix[ _-]X551",model:"Hot Note",device:"phablet"},{regex:"Infinix[ _-]X600",model:"Note 2",device:"phablet"},{regex:"Infinix[ _-]X601",model:"Note 3",device:"phablet"},{regex:"Infinix[ _-]X572",model:"Note 4",device:"phablet"},{regex:"Infinix[ _-]X571",model:"Note 4 Pro",device:"phablet"},{regex:"Infinix[ _-]X604",model:"Note 5",device:"phablet"},{regex:"Infinix[ _-]X610",model:"Note 6",device:"phablet"},{regex:"Infinix[ _-]X690",model:"Note 7",device:"phablet"},{regex:"Infinix[ _-]X656",model:"Note 7 Lite",device:"phablet"},{regex:"Infinix HOT ([a-z]?[1-6])( (?:Lite|Plus|Pro))?",model:"Hot $1$2"},{regex:"Infinix[ _-](X[78]00)",device:"tablet",model:"$1"},{regex:"Infinix[ _-](X\\d+)",model:"$1"},{regex:"Infinix[ _-]([a-z0-9_\\-]+)",model:"$1"}]},InFocus={regex:"IF(900[1237]|902[19]|903[15])(?:[);/ ]|$)",device:"smartphone",models:[{regex:"IF9001",model:"Turbo 5"},{regex:"IF9007",model:"A3"},{regex:"IF9021",model:"Turbo 5 Plus"},{regex:"IF9035",model:"A2"},{regex:"IF9002",model:"M5s"},{regex:"IF9003",model:"M6s"},{regex:"IF9031",model:"Vision 3"},{regex:"IF9029",model:"Vision 3 Pro"}]},InnJoo={regex:"InnJoo|(?:Halo Plus|Halo X|Halo[ _]4(?:[ _]mini[ _]LTE)?|Halo2 3G|Fire2 Plus LTE)(?:[);/ ]|$)",device:"smartphone",models:[{regex:"InnJoo[ _]X3(?:[);/ ]|$)",model:"X3"},{regex:"Halo[ _]X[ _]LTE(?:[);/ ]|$)",model:"Halo X LTE"},{regex:"InnJoo[ _]X(?:[);/ ]|$)",model:"X"},{regex:"Halo Plus(?:[);/ ]|$)",model:"Halo Plus"},{regex:"Halo[ _]4[ _]mini[ _]LTE(?:[);/ ]|$)",model:"Halo 4 Mini LTE"},{regex:"Halo 4(?:[);/ ]|$)",model:"Halo 4"},{regex:"Halo2 3G(?:[);/ ]|$)",model:"Halo 2 3G"},{regex:"InnJoo[ _]Pro2(?:[);/ ]|$)",model:"Pro 2"},{regex:"Innjoo ONE 3G(?:[);/ ]|$)",model:"One 3G"},{regex:"Innjoo[ _]2[ _]LTE(?:[);/ ]|$)",model:"2 LTE"},{regex:"InnJoo[ _]([2-4])",model:"$1"},{regex:"Fire2 Plus LTE",model:"Fire 2 Plus LTE"}]},Inkti={regex:"intki[ _]([^/;]*)[ _]Build",device:"smartphone",model:"$1"},Innos={regex:"Innos_?(D6000)(?:[);/ ]|$)",device:"smartphone",model:"$1"},Innostream={regex:"INNO([a-z0-9]+)",device:"feature phone",model:"INNO$1"},Insignia={regex:"NS-(P11A8100|P10A8100|P10A6100|P16AT08|P16AT10|P16AT785HD|P08A7100|P10A7100)(?:[);/ ]|$)|AFTEAMR311|AFTJMST12",device:"tablet",models:[{regex:"NS-P11A8100",model:'11.6"'},{regex:"NS-(P10A6100|P16AT10)",model:'Flex 10.1"'},{regex:"NS-P16AT08",model:'Flex 8"'},{regex:"NS-P08A7100",model:'8"'},{regex:"NS-(P10A8100|P10A7100)",model:'10.1"'},{regex:"NS-P16AT785HD",model:'Flex Elite 7.85"'},{regex:"AFTEAMR311",model:"HD (2018)",device:"tv"},{regex:"AFTJMST12",model:"4K (2018)",device:"tv"}]},INQ={regex:"INQ[/ ]",device:"feature phone",models:[{regex:"INQ/([a-z0-9\\-]+)",model:"$1"},{regex:"INQ ([^;/]+) Build",model:"$1",device:"smartphone"}]},Intex={regex:"Intex|(Aqua|Cloud[ _][XY][0-9]{1}|Cloud (?:Fame|Glory) 4G)|IM0318ND(?:[);/ ]|$)",device:"smartphone",models:[{regex:"IM0318ND",model:"Aqua Lions 3"},{regex:"Intex[ _]([^/;]*)[ _]Build",model:"$1"},{regex:"(Cloud (?:Fame|Glory) 4G)",model:"$1"},{regex:"(Aqua|Cloud)[ _\\.]([^/;\\)]+)(?:[ _]Build|(?<!Build)/|\\))",model:"$1 $2"},{regex:"Intex[ _]([a-z0-9_+\\-]+)",model:"$1"}]},iKoMo={regex:"iKoMo ([a-z0-9]+)",device:"feature phone",model:"$1"},iOcean={regex:"iOCEAN|M6752|W180|X7[ _]?S|X8 mini",device:"smartphone",models:[{regex:"X7S-T",model:"X7S-T"},{regex:"X8 mini pro",model:"X8 Mini Pro"},{regex:"X8 mini",model:"X8 Mini"},{regex:"X7[ _]?S",model:"X7S Elite"},{regex:"(M6752|W180) Build",model:"$1"},{regex:"iOCEAN[ _\\-]?([^/;]+) Build",model:"$1"},{regex:"iOCEAN[ _\\-]?([^);/ ]+)",model:"$1"}]},iView={regex:"(733TPC|730TPC|769TPCII|930TPC)(?:[);/ ]|$)",device:"tablet",model:"$1"},Impression={regex:"(?:Impression[ _\\-]?([^/;]+)|A502|I10\\-LE|ImPad[ _]?(.*)|ImSmart[ _]?(.*))(?:[);/ ]|$)",device:"tablet",models:[{regex:"(A502)",model:"$1",device:"smartphone"},{regex:"ImSmart[ _]?([^/;)]+)(?: Build|\\))",model:"ImSmart $1",device:"smartphone"},{regex:"ImPad[ _]?([^/;)]+)(?: Build|\\))",model:"ImPad $1"},{regex:"(I10\\-LE)",model:"$1",device:"smartphone"},{regex:"Impression[ _\\-]?([^/;)]+)(?: Build|\\))",model:"$1"}]},iLife={regex:"(ITELL[_ ](?:K3300|K3500N?|K4700))(?:[);/ ]|$)",device:"tablet",model:"$1"},iTel={regex:"itel|iNote|GP10X2019(?:[);/ ]|$)",device:"smartphone",models:[{regex:"W6502",device:"phablet",model:"S16"},{regex:"W5505",model:"A36"},{regex:"W6002E?",model:"S15"},{regex:"L5502",model:"A44 Air"},{regex:"L5505",model:"A47"},{regex:"L6006",model:"A48"},{regex:"L6003P",model:"A55 LTE"},{regex:"L6002P",model:"S15 Pro"},{regex:"L5002",model:"A22"},{regex:"L5503",model:"A46"},{regex:"L6004",model:"A56 LTE"},{regex:"W6004P",model:"A56 Pro"},{regex:"W6001",model:"P33 Plus"},{regex:"W6003",model:"A55"},{regex:"L6005",model:"Vision 1"},{regex:"L6501",model:"Vision 1 Plus"},{regex:"L6502",model:"Vision 1 Pro"},{regex:"GP10X2019",model:"GP10X2019"},{regex:"iNote ([^/;]*)Build",model:"iNote $1"},{regex:"iNote_([a-z0-9\\-_]+)",model:"iNote $1"},{regex:"itel-it(1410|1512|1520)(?:[);/ ]|$)",model:"it$1"},{regex:"itel-it1553(?:[);/ ]|$)",model:"Power Pro"},{regex:"itel[- ](A14|A16 Plus|A44 Power|A23S|A52 Lite)",model:"$1"},{regex:"itel it1701",device:"tablet",model:"iNote Prime"},{regex:"itel it170([23])",device:"tablet",model:"iNote Prime $1"},{regex:"iTel ([^/;]*)Build",model:"$1"},{regex:"iTel[_ ]([a-z0-9\\-_]*)",model:"$1"}]},iZotron={regex:"(Mi7_HERO_(?:BETA|TAB))(?:[);/ ]|$)",device:"tablet",models:[{regex:"Mi7[_ ]HERO[_ ]BETA(?:[);/ ]|$)",model:"MI7 Hero Beta"},{regex:"Mi7[_ ]HERO[_ ]TAB(?:[);/ ]|$)",model:"MI7 Hero Tab"}]},Jiayu={regex:"JIAYU[ _-]|(?:JY-G4[\\\\_]G5|(?:JY-[a-z0-9]+)|JY_G4C)(?:[);/ ]|$)",device:"smartphone",models:[{regex:"(?:JIAYU G4_G5|JY-G4[\\\\_]G5)(?:[);/ ]|$)",model:"G4/G5"},{regex:"JIAYU[ _-](G4[S]?|G2F|G3[S]?|S[23])(?:[);/ ]|$)",model:"$1"},{regex:"JY[-_]([a-z0-9]+|G4C)(?:[);/ ]|$)",model:"JY-$1"}]},Jolla={regex:"Jolla",device:"smartphone",model:""},Just5={regex:"JUST5(-)?SPACER(s)?|COSMO[_ ](L707|L808)|BLASTER|FREEDOM[ _](C100|M303|X1)|Freedom",device:"smartphone",models:[{regex:"COSMO[_ ](L707|L808)",model:"Cosmo $1"},{regex:"FREEDOM[ _](C100|M303|X1)",model:"Freedom $1"},{regex:"Freedom",model:"Freedom"},{regex:"JUST5(-)?SPACER2s",model:"Spacer 2S"},{regex:"JUST5(-)?SPACER2",model:"Spacer 2"},{regex:"JUST5SPACER",model:"Spacer"},{regex:"BLASTER 2",model:"Blaster 2"},{regex:"BLASTER",model:"Blaster"}]},Kalley$1={regex:"KALLEY|(?:ELEMENT (?:MAX|Q)|ELEMENT_PRO_2|K-BOOK(?:8MG|73G))(?:[);/ ]|$)",device:"smartphone",models:[{regex:"ELEMENT MAX",model:"Element Max"},{regex:"ELEMENT Q",model:"Element Q"},{regex:"ELEMENT_PRO_2",model:"Element Pro 2"},{regex:"K-BOOK(8MG|73G)",device:"tablet",model:"K-BOOK$1"},{regex:"KALLEY,(55D1240)",device:"tv",model:"$1"}]},Kaan={regex:"KAAN[ _](N[12]|A1)(?:[);/ ]|$)",device:"smartphone",model:"$1"},Kazam={regex:"Kazam|Trooper_X[0-9][0-9](?:[);/ ]|$)|Tornado 348|TROOPER 4\\.0",device:"smartphone",models:[{regex:"Tornado 348",model:"Tornado 348"},{regex:"Thunder 450W",model:"Thunder 450W"},{regex:"TROOPER 4\\.0",model:"Trooper X4.0"},{regex:"Trooper_X([0-9])([0-9])(?:[);/ ]|$)",model:"Trooper X$1.$2"},{regex:"Kazam[; _]([^;/)]+)(?: Build|\\))",model:"$1"}]},Keneksi={regex:"KENEKSI|(?:Hemera|Teta Dual|Helios)(?:[);/ ]|$)",device:"smartphone",models:[{regex:"(Hemera|Teta Dual|Helios)(?:[);/ ]|$)",model:"$1"},{regex:"KENEKSI[ _-]liberty",model:"Liberty"},{regex:"KENEKSI[ _-]FLASH",model:"Flash"},{regex:"KENEKSI[ _-]SUN",model:"Sun"},{regex:"KENEKSI[ _-]ZETA",model:"Zeta"},{regex:"KENEKSI[ _-]SIGMA",model:"Sigma"},{regex:"KENEKSI[ _-](Moon|Libra_Dual|Glass|Amber|Chance|Amulet|Choice|Crystal|Dream|Delta[_ ]Dual|Norma 2|Norma|Sky|Fire 2|Fire|Flame|Flora|Rock|Solo|Soul|Step|Smart|Star|Storm|Wind)",model:"$1"}]},Kiano={regex:"Kiano|Elegance_[45]_[015](?:_PRO)?|Elegance 6|CORE 10.1 DUAL 3G|Intelect ?(7|8|10)|Slim ?Tab ?\\d+(?:[_ ]3GR?)?(?:[);/ ]|$)",device:"smartphone",models:[{regex:"Slim ?Tab ?(\\d+)(?:[_ ]3GR?)?",model:"Slim Tab $1",device:"tablet"},{regex:"CORE 10.1 DUAL 3G",model:"CORE 10.1 DUAL 3G",device:"tablet"},{regex:"Elegance_(5)_([51])_Pro",model:'Elegance $1.$2" Pro'},{regex:"Elegance_([45])_([015])",model:'Elegance $1.$2"'},{regex:"Elegance 6",model:'Elegance 6 5.85"'},{regex:"(Kiano)?(Intelect|Elegance) ?(7|8|10)?",model:"$2 $3",device:"tablet"},{regex:"Kiano[ _]([^;/]+) Build",model:"$1"}]},Kingsun={regex:"Kingsun[ _-]",device:"smartphone",models:[{regex:"Kingsun[ _-]([^;/]+) Build",model:"$1"},{regex:"Kingsun[ -]((?!Build)[a-z0-9_-]+)",model:"$1"}]},Kocaso={regex:"Kocaso|M(?:729|7[357][026][hw]?|76[01236][bw]?|83[016]|8[567]0|1050s|106[012368]w?|1070|X736(?:-kit)?|X780)(?:[);/ ]|$)",device:"tablet",models:[{regex:"M729(?:[);/ ]|$)",model:"M729"},{regex:"M(7[357][026])[hw]?(?:[);/ ]|$)",model:"M$1"},{regex:"M(76[01236])[bw]?(?:[);/ ]|$)",model:"M$1"},{regex:"MX780(?:[);/ ]|$)",model:"MX780"},{regex:"M(83[016])(?:[);/ ]|$)",model:"M$1"},{regex:"M(8[567]0)(?:[);/ ]|$)",model:"M$1"},{regex:"M851(?:[);/ ]|$)",model:"M851"},{regex:"M1050S(?:[);/ ]|$)",model:"M1050s"},{regex:"M(106[012368])W?(?:[);/ ]|$)",model:"M$1"},{regex:"M1070(?:[);/ ]|$)",model:"M1070"},{regex:"MX736(?:-kit)?(?:[);/ ]|$)",model:"MX736"},{regex:"MX780(?:[);/ ]|$)",model:"MX780"},{regex:"Kocaso[ _\\-]?([^;/]+) Build",model:"$1"},{regex:"Kocaso[ _\\-]?([a-z0-9_-]+)",model:"$1"}]},Kogan={regex:"Kogan",device:"smartphone",models:[{regex:"Kogan[ _-]([^;/]+) Build",model:"$1"},{regex:"Kogan[ _-]([a-z0-9_-]+)",model:"$1"}]},Komu={regex:"Komu[ -]",device:"smartphone",models:[{regex:"Komu[ -]([^;/]+) Build",model:"$1"},{regex:"Komu[ -]([a-z0-9_-]+)",model:"$1"}]},Koobee={regex:"Koobee",device:"smartphone",models:[{regex:"Koobee[ _\\-]?([^;/]+) Build",model:"$1"},{regex:"Koobee[ _\\-]?([a-z0-9_-]+)",model:"$1"}]},Kumai={regex:"(?:KM-)?Kumai",device:"smartphone",models:[{regex:"(?:KM-)?Kumai[ _\\-]?([^;/]+) Build",model:"$1"},{regex:"(?:KM-)?Kumai[ _\\-]?([a-z0-9_-]+)",model:"$1"}]},KDDI={regex:"kddi-([a-z0-9]+)",device:"feature phone",model:"$1"},Kodak={regex:"KODAK|(?:IM5|Ektra|Smartway_T1)(?:[);/ ]|$)",device:"smartphone",models:[{regex:"IM5",model:"IM5"},{regex:"Ektra(?:[);/ ]|$)",model:"Ektra"},{regex:"(?:KODAK[_ ])?SMARTWAY[_ ]([MTX]1)",model:"Smartway $1"},{regex:"Tablet (7|10)",device:"tablet",model:"Tablet $1"}]},KOPO={regex:"KOPO[ _-]",device:"smartphone",models:[{regex:"KOPO[ _\\-]?([^/;]+) Build",model:"$1"},{regex:"KOPO[ _\\-]?([^);/ ]+)",model:"$1"}]},Koridy={regex:"KORIDY[ _-]([^/;]+) Build",device:"smartphone",model:"$1"},KRONO={regex:"NET1100|NET_(?:TITAN|VOLT)",device:"smartphone",models:[{regex:"NET1100",model:"NET 1100"},{regex:"NET_(TITAN|VOLT)",model:"NET $1"}]},Diva={regex:"(QC-(?:703GN|704GA|803GN|1013G|7BHD))(?:[);/ ]|$)",device:"tablet",model:"$1"},Kyocera={regex:"Kyocera|KWC-|QC-[0-9]{4}|(?:QC6035|NP501KC|302KC|503KC|602KC|705KC|901KC|C51[27]0|C5155|C5215|C67[35]0|C6522N?|C6530N|C6740N?|C6743|E6[89]10|KYL2[13]|KYV3[13-9]|KYT3[123]|KYF3[123579]|KYF40|KYX31|KYG01|KYY2[1-4]|S2151|KC-S701|S[468]-KC|KYV40U?|KYV4[1-8]|KYV4[47]|KC-S301AE|X3-KC|E6560[CT]|E6782[L]?|E6790(?:TM)?|[47]04KC|A001KC|WX10K|URBANO PROGRESSO|E7110)(?:[-_]u2?)?(?:[);/ ]|$)",device:"smartphone",models:[{regex:"C5120(?:[);/ ]|$)",model:"Milano"},{regex:"S4-KC(?:[);/ ]|$)",model:"One S4"},{regex:"S6-KC(?:[);/ ]|$)",model:"One S6"},{regex:"S8-KC(?:[);/ ]|$)",model:"One S8"},{regex:"C5155(?:[);/ ]|$)",model:"Rise"},{regex:"602KC(?:[);/ ]|$)",model:"Digno G"},{regex:"503KC(?:[);/ ]|$)",model:"Digno E"},{regex:"404KC(?:[);/ ]|$)",model:"Digno C"},{regex:"704KC(?:[);/ ]|$)",model:"Digno J"},{regex:"302KC(?:[);/ ]|$)",model:"Digno T"},{regex:"NP501KC(?:[);/ ]|$)",model:"Digno"},{regex:"WX10K(?:[);/ ]|$)",model:"Digno Dual 2"},{regex:"KYV36(?:[);/ ]|$)",model:"Digno Rafre"},{regex:"901KC(?:[);/ ]|$)",model:"Digno BX"},{regex:"KYV39(?:[);/ ]|$)",model:"Miraie F"},{regex:"KYX31(?:[);/ ]|$)",model:"Infobar XV"},{regex:"C5170(?:[);/ ]|$)",model:"Hydro"},{regex:"C5215(?:[);/ ]|$)",model:"Hydro EDGE"},{regex:"C6522N?",model:"Hydro XTRM"},{regex:"C6730",model:"Hydro ICON"},{regex:"C6750",model:"Hydro ELITE"},{regex:"C6530N",model:"Hydro LIFE"},{regex:"C6740(N)?",model:"Hydro WAVE"},{regex:"C6743",model:"Hydro Reach"},{regex:"E6560[CT]",model:"DuraForce"},{regex:"E6810",model:"DuraForce Pro"},{regex:"E6910",model:"DuraForce Pro 2"},{regex:"E7110",model:"DuraForce Ultra 5G"},{regex:"KC-S701",model:"Torque"},{regex:"KYG01",model:"Torque 5G"},{regex:"KYL21(?:[);/ ]|$)",model:"Digno S"},{regex:"KYL23(?:[);/ ]|$)",model:"Miraie"},{regex:"KYY24(?:[);/ ]|$)",model:"Torque G01"},{regex:"KYF32(?:[);/ ]|$)",model:"Easy Mobile Phone"},{regex:"KYF35(?:[);/ ]|$)",model:"Marvera"},{regex:"KYF40(?:[);/ ]|$)",model:"Mamorino 5"},{regex:"KYF3[179](?:[);/ ]|$)",model:"Gratina 4G"},{regex:"KYV48(?:[);/ ]|$)",model:"Gratina KYV48"},{regex:"KYF33(?:[);/ ]|$)",model:"Torque X01"},{regex:"KYV35(?:[);/ ]|$)",model:"Torque G02"},{regex:"KYV41(?:[);/ ]|$)",model:"Torque G03"},{regex:"KYV46(?:[);/ ]|$)",model:"Torque G04"},{regex:"KYV47(?:-u)?(?:[);/ ]|$)",model:"Basio 4"},{regex:"KYV43(?:[);/ ]|$)",model:"Basio 3"},{regex:"705KC(?:[);/ ]|$)",model:"Kantan Sumaho"},{regex:"KYV37(?:[);/ ]|$)",model:"Qua Phone"},{regex:"KYV42(?:_u)?(?:[);/ ]|$)",model:"Qua Phone QX"},{regex:"KYV44(?:_u2?)?(?:[);/ ]|$)",model:"Qua Phone QZ"},{regex:"KYT33(?:[);/ ]|$)",model:"Qua Tab QZ10",device:"tablet"},{regex:"KYT32(?:[);/ ]|$)",model:"Qua Tab QZ8",device:"tablet"},{regex:"KYT31(?:[);/ ]|$)",model:"Qua Tab 01",device:"tablet"},{regex:"KYV40U?(?:[);/ ]|$)",model:"Rafre"},{regex:"KYV33(?:[);/ ]|$)",model:"Infobar A03"},{regex:"KYY21(?:[);/ ]|$)",model:"Urbano L01"},{regex:"KYY22(?:[);/ ]|$)",model:"Urbano L02"},{regex:"KYY23(?:[);/ ]|$)",model:"Urbano L03"},{regex:"KYV31(?:[);/ ]|$)",model:"Urbano V01"},{regex:"KYV34(?:[);/ ]|$)",model:"Urbano V02"},{regex:"KYV(?:45|38)(?:[);/ ]|$)",model:"Urbano V03"},{regex:"(?:Kyocera-)?E6790(?:TM)?",model:"DuraForce XD"},{regex:"X3-KC(?:[);/ ]|$)",model:"One X3"},{regex:"E6782(?:[);/ ]|$)",model:"Brigadier"},{regex:"E6782L(?:[);/ ]|$)",model:"DuraScout"},{regex:"(KC-S301AE)(?:[);/ ]|$)",model:"$1"},{regex:"A001KC(?:[);/ ]|$)",model:"Katan Sumaho 2"},{regex:"URBANO PROGRESSO(?:[);/ ]|$)",model:"Urbano Progresso"},{regex:"S2151",model:"Coast",device:"feature phone"},{regex:"Kyocera-KZ-([a-z0-9]+)",model:"KZ $1"},{regex:"Kyocera(?:[\\-/])?([a-z0-9]+)",model:"$1"},{regex:"(KWC|QC)-?([a-z0-9]+)",model:"$1-$2"}]},LAIQ={regex:"LAIQ",device:"smartphone",models:[{regex:"(Glam|New York|Dubai)(?:[);/ ]|$)",model:"$1"}]},AIS={regex:"iris708|Kingcomm C500",device:"smartphone",models:[{regex:"iris708",model:"LAVA PRO 4.5"},{regex:"Kingcomm C500",model:"Super Smart Plus X3"}]},Lava={regex:"Lava[ _]|LAVAA1|(?:DISCOVER136|KKT QUADRA)|iris[ _]?([^/;]+)(?:\\)| Build)|A(?:67|76) Build|X1 Selfie Build|X41 Plus Build|(?:Flair Z1|PixelV1|Pixel V2|Z61_2GB|A97 IPS|A97 2GB PLUS|L[EH]9920(?:[_ ]P)?|L[NEH]9910|LH9810|Ivory(?:S1|S4G)?|A76Plus)(?:[);/ ]|$)",device:"smartphone",models:[{regex:"Flair Z1(?:[);/ ]|$)",model:"Flair Z1"},{regex:"A97 IPS(?:[);/ ]|$)",model:"A97 IPS"},{regex:"A97 2GB PLUS(?:[);/ ]|$)",model:"A97 2GB Plus"},{regex:"A76Plus(?:[);/ ]|$)",model:"A76 Plus"},{regex:"Pixel ?V([12])(?:[);/ ]|$)",model:"Pixel V$1"},{regex:"X1 Selfie(?:[);/ ]|$)",model:"Iris X1 Selfie"},{regex:"X41 Plus(?:[);/ ]|$)",model:"X41 Plus"},{regex:"(?:LAVA[_ ]?)?A([13]|67|76)(?:[);/ ]|$)",model:"A$1"},{regex:"LAVA_R1",model:"R1"},{regex:"Z61_2GB(?:[);/ ]|$)",model:"Z61"},{regex:"LE9920[ _]P(?:[);/ ]|$)",model:"V7"},{regex:"LE9920(?:[);/ ]|$)",model:"Z53"},{regex:"LH9910(?:[);/ ]|$)",model:"Z52"},{regex:"LH9810(?:[);/ ]|$)",model:"Iris 52"},{regex:"LN9910(?:[);/ ]|$)",model:"Z41"},{regex:"LE9910(?:[);/ ]|$)",model:"V8"},{regex:"LH9920(?:[);/ ]|$)",model:"V+6"},{regex:"DISCOVER136",device:"feature phone",model:"Discover 136"},{regex:"KKT QUADRA",device:"feature phone",model:"KKT Quadra"},{regex:"KKT40[ ]?Power[P\\+]",device:"feature phone",model:"KKT40 Power Plus"},{regex:"Ivory(S1|S4G)?(?:[);/ ]|$)",device:"tablet",model:"Ivory $1"},{regex:"iris[ _]?([^/;]+)(?:\\)| Build)",model:"Iris $1"},{regex:"Lava[ _]?([^/;]+)(?:/| Build)",model:"$1"}]},SKG={regex:"(Modern[ _](?:S10?|S[3679]))(?:[);/ ]|$)",device:"smartphone",model:"$1"},Landvo={regex:"XM[123]00|(?<!Blade )S6 Build",device:"smartphone",models:[{regex:"S6 Build",model:"S6"},{regex:"XM([123])00([^/;]*) Build",model:"XM$100$2"}]},Lanix={regex:"LANIX-([a-z0-9]+)|Ilium[ _]|IliumPad|X120C|Alpha 950",device:"smartphone",models:[{regex:"ILIUM[ _]?PAD[ _]?([^;/]+)(?: Build|[;)])",model:"Ilium Pad $1",device:"tablet"},{regex:"X120C",model:"Ilium X120C"},{regex:"Ilium[ _](Alpha [15]s|Alpha [379]|L(?:200|6[12]0|9[0125]0|1[0124]00|1050|1120)|LT5[012]0|M[13579]|S(?:106|520|6[27]0)|X(?:1[12]0|2[0126]0|5[12]0|500B|710)|M[579]s)(?:[);/ ]|$)",model:"Ilium $1"},{regex:"ILIUM[ _]([^;/]+) Build",model:"Ilium $1"},{regex:"Alpha 950",model:"Ilium Alpha 950"},{regex:"LANIX-([a-z0-9]+)",device:"feature phone",model:"$1"}]},Lark={regex:"(Lark|Cumulus|Evolution|FreeMe|Ultimate (?:X4|7i))[ _-]|Build/Lark|Bjorn[_ ]SP-500|FreeBird 5WiFi",device:"tablet",models:[{regex:"Cumulus[ _](5\\.5|[56])[ _]HD",model:"Cumulus $1 HD",device:"smartphone"},{regex:"FreeMe X2 ([79]) (?:ver|v)?\\.([23])",model:"FreeMe X2 $1 Version $2"},{regex:"FreeMe X4 7 3G HD",model:"FreeMe X4 7HD 3G"},{regex:"FreeMe[ _]X2[ _]([7-9])",model:"FreeMe X2 $1"},{regex:"FreeMe X4[ _]7[_ ]HD",model:"FreeMe X4 7HD"},{regex:"FreeMe X4[ _]9",model:"FreeMe X4 9"},{regex:"FreeBird 5WiFi",model:"FreeBird 5 WiFi"},{regex:"(?:Lark[ _-])?Evolution[ _](X2 7 3G-GPS|X4[_ ]10\\.1|10|X4[_ ]7[ _]IPS)",model:"Evolution $1"},{regex:"Ul(?:ti|it)mate (X4 10\\.1 3G IPS|X4 8s 3G|7i)",model:"Ultimate $1"},{regex:"PHABLET 7",model:"Phablet 7"},{regex:"Phablet 6\\.0",model:"Phablet 6.0",device:"smartphone"},{regex:"Bjorn[_ ]SP-500",model:"Bjorn SP-500",device:"smartphone"},{regex:"Cirrus[ _](4\\.5|[45])",model:"Cirrus $1",device:"smartphone"},{regex:"Lark[ _](Stratus[_ ]5)",model:"$1",device:"smartphone"}]},LCT={regex:"LCT_([a-z0-9]+)",device:"feature phone",model:"$1"},Leagoo={regex:"(?:MY)?LEAGOO[ _-]?|(?:M5 EDGE|KIICAA (POWER|MIX)|Leapad[ _](?:X|7s)|Elite [15]|Venture 1|Z10-E)(?:[);/ ]|$)",device:"smartphone",models:[{regex:"LEAGOO[- _]M8[_-]?Pro(?:[);/ ]|$)",model:"M8 Pro"},{regex:"LEAGOO[- _](Z[156]|M[58]|T1)(?:[);/ ]|$)",model:"$1"},{regex:"M5 EDGE",model:"M5 Edge"},{regex:"LEAGOO[_ ]Lead([57])",model:"Lead $1"},{regex:"KIICAA POWER",model:"KICCAA Power"},{regex:"KIICAA MIX",model:"KICCAA Mix"},{regex:"Elite ([15])(?:[);/ ]|$)",model:"Elite $1"},{regex:"Venture 1(?:[);/ ]|$)",model:"Venture 1"},{regex:"(?:LEAGOO[- _])?(Z10-E|M6)(?:[);/ ]|$)",model:"$1"},{regex:"(?:My)?Leagoo[- _](E4)(?:[);/ ]|$)",model:"$1"},{regex:"(?:Leapad[ _])(7s|10|X)",model:"LeaPad $1",device:"tablet"}]},Ledstar={regex:"(?:Ledstar[_ ])?(?:Trendy 5.0|Novus_Premium_6.0)",device:"smartphone",models:[{regex:"Trendy 5.0",model:"Trendy 5.0"},{regex:"Ledstar_Novus_Premium_6.0(?:[);/ ]|$)",model:'Novus Premium 6.0"'}]},LeEco={regex:"Letv|LeEco|Le ?X[0-9][^;/]+|Le Max|Le [12]|Le2[_ ]x527|X900 Build|(?:X[89]00\\+|X52[67])(?:[);/ ]|$)",device:"smartphone",models:[{regex:"X800\\+",model:"Le 1 Pro"},{regex:"X900\\+",model:"Max X900+"},{regex:"X50[10]",model:"Le 1S"},{regex:"(X910)",model:"$1"},{regex:"X900 Build",model:"Le X900"},{regex:"(?:Le ?X526|Le2[_ ]x527|Le 2|X52[67])(?:[);/ ]|$)",model:"Le 2"},{regex:"Le ?X([^;/]+) Build",model:"Le X$1"},{regex:"Le ?X([^) ;/]+)",model:"Le X$1"},{regex:"Le ?([12][^;/]+) Build",model:"Le $1"},{regex:"Le Max([^;/]*) Build",model:"Le Max$1"},{regex:"Le Max([^ ;/]*)",model:"Le Max$1"},{regex:"LeEco ([^;/]+) Build",model:"$1"}]},Leotec={regex:"LESPH501[14]|LESPH5003B|SUPERNOVA (Qi16|Qi32|i3G96[X]?)",device:"smartphone",models:[{regex:"LESPH5011",model:"Argon e250"},{regex:"LESPH5003B",model:"Argon A250B"},{regex:"LESPH5014",model:"Krypton K150"},{regex:"SUPERNOVA (Qi16|Qi32|i3G96[X]?)",device:"tablet",model:"Supernova $1"}]},Lephone={regex:"lephone[ _]|lephoneP1",device:"smartphone",models:[{regex:"lephone[ _](K7|K10)",device:"feature phone",model:"$1"},{regex:"lephone(?:[ _])?(W(1[0125]|[279])|T2|P1)(?:[);/ ]|$)",model:"$1"},{regex:"lephone_W7_plus",model:"W7 Plus"}]},Lenco={regex:"Lenco ([^/;]*) Build",device:"tablet",model:"$1"},Lenovo$2={regex:"(?:LNV-)?Lenovo|IdeaTab|IdeaPad|Thinkpad|Yoga Tablet|Tab2A[0-9]-[0-9]{2}[a-z]?|ZUK[ -_]|(?:TB2-X30L|TB3-710I|YT3-X50[ML]|K50a40|TB-(?:X103F|8504F|X304F|X704V|X704A)|A5500-H|A2107A-H|A3500-HV|A2109A|S6000|Z2 Plus|Vibe[ _](?:P1|S6i Plus|S[23567]i|C|[ZX]2|K5(?: Plus)?|V7)|P2A42|L38011|L18011|[5-8]01LV|[67]02LV|Z2131|K350t|K31-t3|TAB 2 A8-50LC|S90-A|P70-A|VR-1541F)(?:[);/ ]|$)",device:"smartphone",models:[{regex:"Lenovo ?G780",model:"G780",device:"desktop"},{regex:"Lenovo ?A3500-FL",model:"IdeaTab A7-40",device:"tablet"},{regex:"(?:Lenovo ?)?A3500-(?:H|HV|F)",model:"IdeaTab A7-50",device:"tablet"},{regex:"(?:Lenovo[ _])?A5500-[HF]",model:"IdeaTab A8-50",device:"tablet"},{regex:"Lenovo ?A7600-[HF]",model:"IdeaTab A10-70",device:"tablet"},{regex:"A2107A-H",model:"A2107",device:"tablet"},{regex:"A2109A",model:"IdeaTab A2109A",device:"tablet"},{regex:"TB2-X30[FL]",model:"Tab 2 A10-30",device:"tablet"},{regex:"YT3-X50[FLM]",model:"Yoga Tab 3",device:"tablet"},{regex:"TB3-730X",model:"TAB3 7",device:"tablet"},{regex:"TB3-710[IF]",model:"TAB3 7 Essential",device:"tablet"},{regex:"TB-7703X",model:"TAB3 7 Plus",device:"tablet"},{regex:"TB3-X70L",model:"TAB3 10 Plus",device:"tablet"},{regex:"TB-8703X",model:"TAB3 8 Plus",device:"tablet"},{regex:"TAB 2 A8-50LC",model:"TAB2 A8-50LC",device:"tablet"},{regex:"501LV(?:[);/ ]|$)",model:'TAB2 8.0"',device:"tablet"},{regex:"TAB 2 A10-70L(?:[);/ ]|$)",model:"TAB 2 A10",device:"tablet"},{regex:"(?:TB3-850[FM]|601LV)(?:[);/ ]|$)",model:"TAB3 8",device:"tablet"},{regex:"602LV(?:[);/ ]|$)",model:"TAB3 8 Dual",device:"tablet"},{regex:"TB-X304[FL]",model:"TAB4 10",device:"tablet"},{regex:"TB-8504X",model:"TAB4 8",device:"tablet"},{regex:"TB-8704X",model:"TAB4 8 Plus",device:"tablet"},{regex:"(?:TB-X704[FVL]|70[12]LV)(?:[);/ ]|$)",model:"TAB4 10 Plus",device:"tablet"},{regex:"801LV(?:[);/ ]|$)",model:'TAB5 10.1"',device:"tablet"},{regex:"TB-X103F(?:[);/ ]|$)",model:'TAB10 10.1"',device:"tablet"},{regex:"TB-X704A(?:[);/ ]|$)",model:"Moto Tab",device:"tablet"},{regex:"TB-X605F(?:[);/ ]|$)",model:"Tab M10",device:"tablet"},{regex:"TB-X705F(?:[);/ ]|$)",model:"Tab P10",device:"tablet"},{regex:"TB-X705F(?:[);/ ]|$)",model:"Tab P10",device:"tablet"},{regex:"TB-7104I(?:[);/ ]|$)",model:"Tab E7",device:"tablet"},{regex:"TB-8304F1(?:[);/ ]|$)",model:"Tab E8",device:"tablet"},{regex:"TB-7304X(?:[);/ ]|$)",model:"Tab 7 Essential",device:"tablet"},{regex:"TB-7504X(?:[);/ ]|$)",model:"Tab 7",device:"tablet"},{regex:"TB-X606[FXV](?:[);/ ]|$)",model:"Tab M10 FHD Plus",device:"tablet"},{regex:"Lenovo ?B8000(-[FH])?",model:"Yoga Tablet 10",device:"tablet"},{regex:"YOGA Tablet 2 Pro-1380[FL]",model:'Yoga Tablet 2 Pro 13.3"',device:"tablet"},{regex:"YOGA Tablet 2-1050[FL]",model:'Yoga Tablet 2 10.1"',device:"tablet"},{regex:"YOGA Tablet 2-830(?:[FL]|LC)",model:'Yoga Tablet 2 8.0"',device:"tablet"},{regex:"Lenovo ?B6000(-[FH])?",model:"Yoga Tablet 8",device:"tablet"},{regex:"YT3-X90(L|F|X)",model:"Yoga 3 Pro",device:"tablet"},{regex:"YT3-850[FL]",model:"Yoga Tab 3 8",device:"tablet"},{regex:"YT3-850M",model:"Yoga Tab 3 10",device:"tablet"},{regex:"YT-X703L",model:"Yoga Tab 3 Plus",device:"tablet"},{regex:"S6000(?:[);/ ]|$)",model:"IdeaTab S6000",device:"tablet"},{regex:"Lenovo ([ASB][0-9]{4})[A-Z]?\\-[EHF]",model:"IdeaTab $1",device:"tablet"},{regex:"ThinkPadTablet_(A[0-9]{3})_",model:"ThinkPad Tablet $1",device:"tablet"},{regex:"ThinkPad ?Tablet([^;/]*) Build",model:"ThinkPad Tablet$1",device:"tablet"},{regex:"Lenovo ?A3300-(?:GV|H)",model:"TAB 2 A7-30",device:"tablet"},{regex:"TAB 2 A7-30[HGD]C",model:"TAB 2 A7",device:"tablet"},{regex:"TB-8504F",model:"TAB 4 8",device:"tablet"},{regex:"TB-X304X",model:'Tab 4 10.1"',device:"tablet"},{regex:"TB-X304X",model:'Tab 4 10.1"',device:"tablet"},{regex:"TB-X304F",model:"TAB4 10",device:"tablet"},{regex:"TB-X505[FX]",model:"M10",device:"tablet"},{regex:"TB-X104[FXL]",model:"E10",device:"tablet"},{regex:"Tab2A([0-9]-[0-9]{2}[a-z]?)",model:"TAB 2 A$1",device:"tablet"},{regex:"IdeaTab[ \\-_]?([a-z0-9]+)",model:"IdeaTab $1",device:"tablet"},{regex:"Yoga Tablet([^;/]+) Build",model:"Yoga Tablet$1",device:"tablet"},{regex:"TB-8505F",model:"Tab M8",device:"tablet"},{regex:"TB-8705F",model:"Tab M8 FHD",device:"tablet"},{regex:"TB-8705F",model:"Tab M8 FHD",device:"tablet"},{regex:"Lenovo (TB[0-9]?\\-[a-z0-9\\-]+) Build",model:"$1",device:"tablet"},{regex:"L18011(?:[);/ ]|$)",model:"A5"},{regex:"Z2 Plus",model:"Z2 Plus"},{regex:"Z2151",model:"ZUK Edge"},{regex:"Z213[12]",model:"ZUK Z2"},{regex:"Z2121",model:"ZUK Z2 Pro"},{regex:"ZUK[ -_]([^/;]*)(?: Build|\\))",model:"ZUK $1"},{regex:"K10a40(?:[);/ ]|$)",model:"C2"},{regex:"k50a40(?:[);/ ]|$)",model:"K3 Note"},{regex:"A7010a48(?:[);/ ]|$)",model:"K4 Note"},{regex:"K350t(?:[);/ ]|$)",model:"K5"},{regex:"L38011(?:[);/ ]|$)",model:"K5 Play"},{regex:"A7020a4[08](?:[);/ ]|$)",model:"K5 Note"},{regex:"K31-t3(?:[);/ ]|$)",model:"K31"},{regex:"(?:A6020a46|Vibe K5 Plus)(?:[);/ ]|$)",model:"Vibe K5 Plus"},{regex:"(?:Lenovo-)?(?:A6020(?:a40|l36)|Vibe K5)(?:[);/ ]|$)",model:"Vibe K5"},{regex:"VIBE Z2(?:[);/ ]|$)",model:"Vibe Z2"},{regex:"VIBE C(?:[);/ ]|$)",model:"Vibe C"},{regex:"VIBE X2(?:[);/ ]|$)",model:"Vibe X2"},{regex:"VIBE V7(?:[);/ ]|$)",model:"Vibe V7"},{regex:"VIBE S6i Plus(?:[);/ ]|$)",model:"Vibe S6i Plus"},{regex:"VIBE[ _]S([23567])i(?:[);/ ]|$)",model:"Vibe S$1i"},{regex:"k33a48(?:[);/ ]|$)",model:"K6"},{regex:"P2A42(?:[);/ ]|$)",model:"P2"},{regex:"k53a48(?:[);/ ]|$)",model:"K6 Note"},{regex:"K33a42(?:[);/ ]|$)",model:"K6 Power"},{regex:"P1ma40(?:[);/ ]|$)",model:"Vibe P1m"},{regex:"Vibe P1 Turbo(?:[);/ ]|$)",model:"Vibe P1 Turbo"},{regex:"(?:P1(?:a42|c72)|Vibe P1)(?:[);/ ]|$)",model:"Vibe P1"},{regex:"A2016a40(?:[);/ ]|$)",model:"Vibe B"},{regex:"A1010a20(?:[);/ ]|$)",model:"A Plus"},{regex:"Z90a40(?:[);/ ]|$)",model:"Vibe Shot"},{regex:"S1a40(?:[);/ ]|$)",model:"Vibe S1"},{regex:"L78071(?:[);/ ]|$)",model:"Z5s"},{regex:"L58041(?:[);/ ]|$)",model:"S5 Pro"},{regex:"L18021(?:[);/ ]|$)",model:"A3"},{regex:"PB2-670M(?:[);/ ]|$)",model:"Phab 2"},{regex:"(S90-A|P70-A)(?:[);/ ]|$)",model:"$1"},{regex:"IdeaPad ?([^;/]*) Build",model:"IdeaPad $1",device:"tablet"},{regex:"VR-1541F",device:"wearable",model:"Mirage Solo"},{regex:"LENOVO/81W8(?:[);/ ]|$)",device:"desktop",model:"IdeaPad S145-15IIL"},{regex:"LENOVO/81MV(?:[);/ ]|$)",device:"desktop",model:"IdeaPad S145-15IWL"},{regex:"LENOVO/81SS(?:[);/ ]|$)",device:"desktop",model:"Flex 14API 81SS"},{regex:"Lenovo TAB ?([^/;]*) Build",model:"TAB $1",device:"tablet"},{regex:"Lenovo ([^/;]*) Build",model:"$1"},{regex:"(?:LNV-|Lenovo-)?Lenovo[ \\-_]?([a-z0-9_+\\-]+)",model:"$1"}]},Lexand={regex:"(?:SC7 PRO HD|S5A[1-4]|S4A[1-5]|S6A1|A811|A802)(?:[);/ ]|$)|Lexand ([^;/]+) Build",device:"smartphone",models:[{regex:"A(811|802)",device:"tablet",model:"A$1"},{regex:"S4A1",model:"Vega"},{regex:"S4A2",model:"Irida"},{regex:"S4A3",model:"Pallada"},{regex:"S4A5",model:"Oxygen"},{regex:"S4A4 NEON",model:"S4A4 Neon"},{regex:"S5A1",model:"Callisto"},{regex:"S5A2",model:"Overon"},{regex:"S5A3",model:"Capella"},{regex:"S5A4",model:"Argon"},{regex:"S6A1",model:"Antares"},{regex:"SC7 PRO HD",model:"SC7 PRO HD"},{regex:"Lexand ([^;/]+) Build",model:"$1"}]},Lexibook={regex:"(MFC[0-9]{3}[a-z]{2,})",device:"tablet",models:[{regex:"MFC191FR",model:"Tablet Ultra 3 XL"},{regex:"MFC045FR",model:"TabTab"},{regex:"MFC163FR",model:"Tablet Master 3"},{regex:"MFC142FR",model:"Tablet Kids"},{regex:"MFC250FR",model:"Tablet Junior"},{regex:"MFC270FR",model:"Tablet Junior Power Touch"},{regex:"MFC280FR",model:"Tablet Junior 2"},{regex:"MFC156FR",model:"Tablet One"},{regex:"MFC155FR",model:"Tablet Master"},{regex:"MFC157FR",model:"Tablet Master 2"},{regex:"MFC17[05]FR",model:"Tablet Ultra"},{regex:"MFC375FR",model:"Tablet Ultra 2"},{regex:"MFC162FR",model:"Power Tablet"},{regex:"MFC180FR",model:"Tablet Advanced"},{regex:"MFC181FR",model:"Tablet Advanced 2"},{regex:"MFC500FR",model:"Tablet XL"},{regex:"MFC190BBFR",model:"Barbie Tablet"},{regex:"MFC195DCFR",model:"Tablet Disney Cars HD"},{regex:"MFC195FUFR",model:"Furby Tablet"},{regex:"MFC195DPFR",model:"Tablet Disney Princesse HD"},{regex:"MFC140FR",model:"LapTab"},{regex:"MFC141FR",model:"LapTab 2"},{regex:"(MFC[0-9]{3}[a-z]{2,})",model:"$1"}]},LG$1={regex:"LG|Web0S; Linux/SmartTV|portalmmm/2\\.0 (?:KE|KG|KP|L3)|(?:VX[0-9]+|L-0[12]D|L-07C|P713|(LM-[A-Z][0-9]{3}[A-Z]{0,3}(?:\\(FGN?\\)|\\(G\\)|\\.FN|\\.F(?:GN?)?)?)|LM-(X625N1|G820QM[0127]))(?:[);/ ]|$)|NetCast|RS98[78]|RS500|VS(?:50[01]|835|876|880|98[0578]|99[056]|(410|415|425|500|880)PP)|VS820|VS870 4G|Nexsus 5|LML(41[34]D|211B|713D|212V)L|VK810 4G|VK815|X5-LG|L-05[DE]|L-03K|L-01[LJK]|L-52A|L-[45]1A|901LG|A001LG|80[12]LG|402LG|LGT32|L-02K|L-01F|LM-V40|DM-01K|LMX130IM",device:"smartphone",models:[{regex:"DM-01K",model:"Disney Mobile DM-01K"},{regex:"LG-D325",model:"L70"},{regex:"LG-D340F8",model:"L70 Tri"},{regex:"LM-X210APM",model:"Phoenix 4"},{regex:"LG-P505R",model:"Phoenix"},{regex:"LM-X210VPP",model:"Zone 4"},{regex:"LM-X220PM",model:"Tribute Empire"},{regex:"VS980|L-01F",model:"G2"},{regex:"LG-D6(?:18|20)",model:"G2 Mini"},{regex:"LG-D85[01258]|VS985",model:"G3"},{regex:"LG-D72[2458]",model:"G3 Beat"},{regex:"LG-H81[158]",model:"G4"},{regex:"LG-H525n?",model:"G4c"},{regex:"LG-(?:H540|H542|H630)",model:"G4 Stylus"},{regex:"LG-H736",model:"G4s"},{regex:"LG-H735",model:"G4 Beat"},{regex:"LG-H8(?:20|3[01]|5[08]|6[08])|VS987|RS988",model:"G5"},{regex:"LG-H84[05]",model:"G5 SE"},{regex:"VS988|LG-H87(?:0DS|3)",model:"G6"},{regex:"LM-Q850",model:"G7 Fit"},{regex:"LM-Q910",model:"G7 One"},{regex:"LM-G820(N|QM[0127]|UMB)?",model:"G8"},{regex:"LM-G850",model:"G8X ThinQ"},{regex:"LM-G810",model:"G8S ThinQ"},{regex:"901LG(?:[);/ ]|$)",model:"G8X ThinQ"},{regex:"VS501|LM-X120",model:"K20"},{regex:"(?:LG-)?H502",model:"Magna"},{regex:"(?:LG-)?H343",model:"Risio"},{regex:"(?:LG-)?H650",model:"Zero"},{regex:"(?:LG-)?M154",model:"Risio 2"},{regex:"(?:LG-)?P500H",model:"Optimus One"},{regex:"(L-05[DE])(?:[);/ ]|$)",model:"Optimus it $1"},{regex:"LG-L160L(?:[);/ ]|$)",model:"Optimus LTE 2"},{regex:"P713(?:[);/ ]|$)",model:"Optimus L7II"},{regex:"L-01D(?:[);/ ]|$)",model:"Optimus LTE L-01D"},{regex:"L-02D(?:[);/ ]|$)",model:"PRADA phone L-02D"},{regex:"L-07C",model:"Optimus Bright L-07C"},{regex:"(?:LG-)?F800(?:S|K|L)?",model:"V20"},{regex:"LM-Q710(?:\\(FGN\\)|[\\.]?FGN)",model:"Q Stylus Plus"},{regex:"801LG",model:"Q Stylus"},{regex:"LM-Q[67]10\\.FG(?:[);/ ]|$)",model:"Q7"},{regex:"LM-(Q725[KL]|Q610.FGN)(?:[);/ ]|$)",model:"Q7+"},{regex:"LM-Q815[SL](?:[);/ ]|$)",model:"Q8+"},{regex:"LM-Q925L(?:[);/ ]|$)",model:"Q9"},{regex:"LM-Q730N(?:[);/ ]|$)",model:"Q70"},{regex:"LGV33(?:[);/ ]|$)",model:"Qua Phone PX"},{regex:"L-03K(?:[);/ ]|$)",model:"Style"},{regex:"L-01L(?:[);/ ]|$)",model:"Style 2"},{regex:"VS835(?:[);/ ]|$)",model:"Stylo 2 V"},{regex:"L-41A(?:[);/ ]|$)",model:"Style 3"},{regex:"LM-Q710|LML713DL",model:"Stylo 4"},{regex:"(?:LM-Q720|LGL722DL)(?:[);/ ]|$)",model:"Stylo 5"},{regex:"LM-Q730(?:[);/ ]|$)",model:"Stylo 6"},{regex:"LM-G710(N|VM)?",model:"G7 ThinQ"},{regex:"LM-X210CM",model:"Fortune 2"},{regex:"LM-X410\\.F(?:[);/ ]|$)",model:"Premier Pro"},{regex:"LML41[34]DL(?:[);/ ]|$)",model:"Premier Pro LTE"},{regex:"LM-X525",model:"Q60"},{regex:"LM-X210K",model:"X2"},{regex:"LG-K580",model:"X Cam"},{regex:"LM-X510WM",model:"X Power 3"},{regex:"LM-X(?:41[05]K|410S)",model:"X4"},{regex:"LM-X(415[LS]|410L)",model:"X4+"},{regex:"LM-X410(?:\\.FN|\\(FG\\))",model:"K11"},{regex:"LM-X(?:320|410[UP]M)",model:"K30"},{regex:"LMX130IM",model:"W10"},{regex:"LM-X410",model:"LM-X410"},{regex:"LM-X420N",model:"X4 (2019)"},{regex:"LG-X230",model:"K4"},{regex:"LM-X420",model:"K40"},{regex:"LM-X430(?:[);/ ]|$)",model:"K40S"},{regex:"LG-X220",model:"K5"},{regex:"LM-X540",model:"K50S"},{regex:"(?:802LG|LM-X520)(?:[);/ ]|$)",model:"K50"},{regex:"402LG",model:"Spray"},{regex:"L-02K",model:"JoJo"},{regex:"(?:LM-X510[KLS]|X5-LG)",model:"X5"},{regex:"LM-X625N1",model:"X6"},{regex:"LM-X625N",model:"X6 (2019)"},{regex:"LGMS210",model:"Aristo"},{regex:"LM-X210[G]?",model:"Aristo 2"},{regex:"LM-X220",model:"Aristo 3"},{regex:"LM-V40(?:5|9N)?(?:[);/ ]|$)",model:"V40 ThinQ"},{regex:"LM-(?:V500N|V450)(?:[);/ ]|$)",model:"V50 ThinQ"},{regex:"LM-V510N",model:"V50S ThinQ"},{regex:"LM-Q920N",model:"Q92"},{regex:"LM-Q927L",model:"Q9 One"},{regex:"(?:LG-)?(?:RS987|H901|H96[0128]|VS990)",model:"V10"},{regex:"LG-X240",model:"K8 (2017)"},{regex:"(?:LG-)?RS500",model:"K8 4G"},{regex:"(?:LG-)?VS500",model:"K8 V"},{regex:"LM-X212\\(G\\)",model:"K8 (2018)"},{regex:"(?:LG-)?H91[058]",model:"V20"},{regex:"(?:LG-)?H990(?:DS|N|T)?",model:"V20"},{regex:"(?:LG-)?LS997",model:"V20"},{regex:"(?:LG-)?VS995",model:"V20"},{regex:"(?:LG-)?US999",model:"V20"},{regex:"(?:VS996|LG-(?:H933|H93[012]|H932PR|[LU]S998|AS998)|LGM-V300[KLS])(?:[);/ ]|$)",model:"V30"},{regex:"L-01J(?:[);/ ]|$)",model:"V20 Pro"},{regex:"(?:L-01K|LGV35)(?:[);/ ]|$)",model:"V30 Plus"},{regex:"L-51A(?:[);/ ]|$)",model:"V60"},{regex:"(?:L-52A|LM-G900N?)(?:[);/ ]|$)",model:"Velvet 5G"},{regex:"(?:LM-G910)(?:[);/ ]|$)",model:"Velvet 4G"},{regex:"(?:A001LG|LM-V600)(?:[);/ ]|$)",model:"V60 ThinQ 5G"},{regex:"(?:LG-)?VS410PP",model:"Optimus Zone"},{regex:"LM-V350[N]?",model:"V35"},{regex:"(?:LG-)?VS415PP",model:"Optimus Zone 2"},{regex:"(?:LG-)?VS425PP",model:"Optimus Zone 3"},{regex:"(?:LG-)?K100",model:"K3"},{regex:"(?:LG-?)?(?:K|MS)33[02]",model:"K7"},{regex:"(?:LG-?)?(?:K|MS)350",model:"K8"},{regex:"VS500PP",model:"K8 V"},{regex:"(?:LG-)?K420(?:N)?",model:"K10"},{regex:"(?:LG-)?K430(?:DS|DSF|DSY)?",model:"K10"},{regex:"(?:LG-)?M250N?",model:"K10 (2017)"},{regex:"(?:LG-)?F670[KLS]?",model:"K10"},{regex:"(?:LG-)?M255",model:"K20"},{regex:"(?:LG-?)?[MT]P260",model:"K20 Plus"},{regex:"LM-K200(?:[);/ ]|$)",model:"K22"},{regex:"LM-K300(?:[);/ ]|$)",model:"K31"},{regex:"LM-K420(?:[);/ ]|$)",model:"K42"},{regex:"LM-K500(?:[);/ ]|$)",model:"K51"},{regex:"LM-K520(?:[);/ ]|$)",model:"K52"},{regex:"LM-Q510N(?:[);/ ]|$)",model:"Q51"},{regex:"LM-Q630N?(?:[);/ ]|$)",model:"Q61"},{regex:"(?:LG-)?M700(?:N|A|DSK|AN)?",model:"Q6"},{regex:"LM-X440IM",model:"W30"},{regex:"(?:LG-?)?K220",model:"X Power"},{regex:"(?:LG-?)?M320",model:"X Power 2"},{regex:"(?:LG-)?K371",model:"Phoenix 2"},{regex:"(?:LG-)?M150",model:"Phoenix 3"},{regex:"(?:LG-)?F100[SL]",model:"Optimus Vu"},{regex:"(?:LG-)?P880",model:"Optimus 4X HD"},{regex:"(?:LG-)?(H340n?|H324)",model:"Leon"},{regex:"(?:LG-)?H342",model:"Leon 4G LTE"},{regex:"(?:LG-)?H422",model:"Spirit"},{regex:"(?:LG)?C660",model:"Optimus Pro"},{regex:"LML21(?:1B|2V)L",model:"Rebel 4"},{regex:"VS876",model:"Lucid 3"},{regex:"VS880(PP)?",model:"G Vista"},{regex:"VS820",model:"Lancet"},{regex:"VS870 4G",model:"Lucid 2"},{regex:"LM-F100N?(?:[);/ ]|$)",device:"phablet",model:"WING"},{regex:"LGUK410",model:'G Pad 7.0" LTE',device:"tablet"},{regex:"LGLK430",model:'G Pad F 7.0"',device:"tablet"},{regex:"LGLK430",model:'G Pad F 7.0"',device:"tablet"},{regex:"LG-V490",model:"G Pad 8.0",device:"tablet"},{regex:"LGT01",model:'G Pad 8.0" LTE',device:"tablet"},{regex:"LG-V500",model:"G Pad 8.3",device:"tablet"},{regex:"LG-V700",model:"G Pad 10.1",device:"tablet"},{regex:"LG-V935",model:"G Pad II 10.1",device:"tablet"},{regex:"LG-V521",model:"G Pad X 8.0",device:"tablet"},{regex:"VK810",model:"G Pad 8.3 LTE",device:"tablet"},{regex:"VK815",model:"G Pad X 8.3",device:"tablet"},{regex:"LGT32",model:"Qua Tad PZ",device:"tablet"},{regex:"LGT31",model:"Qua Tad PX",device:"tablet"},{regex:"webOS.TV",device:"tv",model:"WebOS TV"},{regex:"LGE_DLNA_SDK|NetCast",device:"tv",model:"NetCast"},{regex:"LG Watch Urbane",device:"wearable",model:"Watch Urbane"},{regex:"(LM-[A-Z]{1}[0-9]{3}([A-Z]{1,3})?)",model:"$1"},{regex:"LGE(?: |-LG| LG-AX|-)([a-z0-9]+)",model:"$1"},{regex:"FBDV/LG-([a-z0-9]+);FBSV",model:"$1"},{regex:"LGE;([a-z0-9\\-]+)",model:"$1"},{regex:"LG[ _\\-](V90.*|Optimus[ _\\-]Pad.*) Build",device:"tablet",model:"$1"},{regex:"LG(?:/|-LG| |-)?([^/;]*) Build",model:"$1"},{regex:"LG(?:/|-LG| |-)?([a-z0-9]+)",model:"$1"},{regex:"LG; ([a-z0-9 ]+)",model:"$1"},{regex:"portalmmm/2.0 ((?:KE|KG|KP|L3)[a-z0-9]+)",model:"$1"},{regex:"(VX[0-9]+)",model:"$1"},{regex:"Web0S; Linux/SmartTV",device:"tv",model:""}]},Lingwin={regex:"Lingwin[ _\\-]",device:"smartphone",models:[{regex:"Lingwin[ _\\-]?([^/;]+) Build",model:"$1"},{regex:"Lingwin[ _\\-]?([^);/ ]+)",model:"$1"}]},Logicom={regex:"LOGICOM[_ ]|(TAB950|TAB1062|E731|E812|E912|E1031|POWER BOT|La[ _]Tab[ _](?:7[24]|10[57]|114)|(?:B|C|M|ID|VR)[ _]?BOT[ _]?(?:TAB[ _])?([0-9]+\\+?)(?:PLUS)?|KT712A_4\\.4|L-?IXIR[0-9]*|L-ITE|L-EGANTONE(?:-R)?|L-?EMENT.+|Le[ _]?(?:Hop|Hello|Lift|Hola|Moov[2]?|Must(?: 2)?|Starter L|Fit FR|Spark|Prime|Smooth(?: FR)?))[_);/ ]",device:"tablet",models:[{regex:"La[ _]Tab[ _](7[24]|10[57]|114)(?:[);/ ]|$)",model:"La Tab $1"},{regex:"LOGICOM_LA_TAB_LINK_71",model:"La Tab Link 71"},{regex:"KT712A_4.4|L-IXIR TAB 701 3G",model:"L-ixir Tab 701 3G"},{regex:"LIXIR1041",model:"L-ixir Tab 1041"},{regex:"L-?IXIR[ _]TAB[ _]([^);/]+)( Build|[);])",model:"L-ixir Tab $1"},{regex:"L-ITE[ _](400M|452|50[46] HD|506R HD|552 HD)(?:[);/ ]|$)",device:"smartphone",model:"L-ite $1"},{regex:"L-ITE[ _]([^;/]+) Build",model:"L-ite Tab $1"},{regex:"L-?EMENT[ _]?(350|451|40[103]|55[013]|50[15]|500L?)(?:[);/ ]|$)",model:"L-ement $1",device:"smartphone"},{regex:"L-?EMENT[ _](?:TAB)[ )]?([^);/]+)(?: Build|[);])",model:"L-ement Tab $1"},{regex:"L-?EMENT[ _]?(74[01])(?:[);/ ]|$)",model:"L-ement Tab $1"},{regex:"(TAB950|TAB1062|E731|E812|E912|E1031)(?:[);/ ]|$)",model:"$1"},{regex:"POWER BOT",model:"POWER BOT"},{regex:"((?:B|C|M|ID|VR))[ _]?BOT[ _]?((?:TAB[ _])?([0-9]+\\+?)(?:PLUS)?)",model:"$1 BOT $2"},{regex:"Le Lift",model:"Le Lift",device:"smartphone"},{regex:"Le Hola FR(?:[);/ ]|$)",model:"Le Hola FR",device:"smartphone"},{regex:"Le[ _]Hola(?:[);/ ]|$)",model:"Le Hola",device:"smartphone"},{regex:"LeMoov2(?:[);/ ]|$)",model:"Le Moov 2",device:"smartphone"},{regex:"LeMoov(?:[);/ ]|$)",model:"Le Moov",device:"smartphone"},{regex:"Le Fit FR(?:[);/ ]|$)",model:"Le Fit FR",device:"smartphone"},{regex:"Le Hop(?:[);/ ]|$)",model:"Le Hop",device:"smartphone"},{regex:"Le[ _]Hello(?:[);/ ]|$)",model:"Le Hello",device:"smartphone"},{regex:"Le Smooth FR(?:[);/ ]|$)",model:"Le Smooth FR",device:"smartphone"},{regex:"Le Smooth(?:[);/ ]|$)",model:"Le Smooth",device:"smartphone"},{regex:"Le Must 2(?:[);/ ]|$)",device:"smartphone",model:"Le Must 2"},{regex:"Le Must(?:[);/ ]|$)",model:"Le Must",device:"smartphone"},{regex:"Le Starter L(?:[);/ ]|$)",model:"Le Starter L",device:"smartphone"},{regex:"Le[ _]Spark(?:[);/ ]|$)",model:"Le Spark",device:"smartphone"},{regex:"Le[ _]Prime(?:[);/ ]|$)",model:"Le Prime",device:"smartphone"},{regex:"L-EGANTONE-R",model:"L-Egant One R",device:"smartphone"},{regex:"L-EGANTONE",model:"L-Egant One",device:"smartphone"}]},Konka={regex:"KONKA[_ ]([a-z0-9]+)",device:"smartphone",models:[{regex:"E5660S",model:"Viva 5660s"},{regex:"W830",model:"Tango 830"},{regex:"W(9[67]0)",model:"Expose $1"},{regex:"W990",model:"Tuxedo 990"},{regex:"KONKA[_ ]([a-z0-9]+)",device:"feature phone",model:"$1"}]},Konrow={regex:"(?:BIGCOOL|COOLFIVE|COOL-K|Just5|Link5|EASY(?:5|62)|CITY55|Cool55)(?:[);/ ]|$)",device:"smartphone",models:[{regex:"BIGCOOL(?:[);/ ]|$)",model:"BigCool"},{regex:"COOL-K(?:[);/ ]|$)",model:"Cool-K"},{regex:"Cool55(?:[);/ ]|$)",model:"Cool 55"},{regex:"COOLFIVE(?:[);/ ]|$)",model:"Cool Five"},{regex:"Just5(?:[);/ ]|$)",model:"Just 5"},{regex:"Link5(?:[);/ ]|$)",model:"Link 5"},{regex:"EASY(5|62)(?:[);/ ]|$)",model:"Easy $1"},{regex:"CITY55(?:[);/ ]|$)",model:"City 55"}]},Karbonn={regex:"(?:Browser-)?Karbonn|K9 Kavach 4G|K9[_ ]Viraat[_ ]Plus|K9 Music 4G|K9 Smart|K9 VIRAAT 4G|Aura (?:Sleek Plus|Power 4G Plus|Note Play)|Titanium[ _](?:3D-Plex|Octane Plus|Vista 4G|Jumbo|S360|S1[059]|S35|S20[13]|S22|S[15]|S200 HD|Frames S7|MOGHUL|S9)|K-lite F3|Sparkle V|Alfa A114 Quad|Quattro L55 HD",device:"smartphone",models:[{regex:"K9 Kavach 4G",model:"K9 Kavach 4G"},{regex:"K9 Music 4G",model:"K9 Music 4G"},{regex:"K9 Smart 1GB",model:"K9 Smart"},{regex:"K9 Smart 4G",model:"K9 Smart 4G"},{regex:"K9 Smart Grand",model:"K9 Smart Grand"},{regex:"K9 Smart Yuva",model:"K9 Smart Yuva"},{regex:"K9 Smart",model:"K9 Smart"},{regex:"K9[_ ]Viraat[_ ]Plus",model:"K9 Viraat Plus"},{regex:"Aura Sleek Plus",model:"Aura Sleek Plus"},{regex:"Aura Power 4G Plus",model:"Aura Power 4G Plus"},{regex:"Aura Note Play",model:"Aura Note Play"},{regex:"Alfa A114 Quad",model:"Alfa A114 Quad"},{regex:"karbonnK9 Viraat 4G|K9 VIRAAT 4G",model:"K9 Viraat 4G"},{regex:"Titanium[ _]S2[ _]Plus",model:"Titanium S2 Plus"},{regex:"Titanium_S9Plus",model:"Titanium S9 Plus"},{regex:"Titanium[_ ]S(99|360|1[059]|109|35|200 HD|20[13]|22|[15])(?:[);/ ]|$)",model:"Titanium S$1"},{regex:"Titanium Vista 4G",model:"Titanium Vista 4G"},{regex:"Titanium Jumbo 2",model:"Titanium Jumbo 2"},{regex:"Titanium Jumbo",model:"Titanium Jumbo"},{regex:"Titanium[ _]MOGHUL",model:"Titanium Moghul"},{regex:"Titanium Frames S7",model:"Titanium Frames S7"},{regex:"Titanium Octane Plus",model:"Titanium Octane Plus"},{regex:"Titanium[ _]3D-Plex",model:"Titanium 3D Plex"},{regex:"K-lite F3",model:"K-Lite F3"},{regex:"Sparkle V",model:"Sparkle V"},{regex:"Quattro L55 HD",model:"Quattro L55 HD"},{regex:"Karbonn ([a-z0-9]+) WAP-Browser",model:"$1",device:"feature phone"},{regex:"WAP Browser-Karbonn ([a-z0-9]+)/",model:"$1",device:"feature phone"},{regex:"Karbonn_([^;/)]+)",model:"$1"},{regex:"Karbonn ([^;/]+) Build",model:"$1"},{regex:"Karbonn ([^;/]+)/",model:"$1"}]},Sagem={regex:"SAGEM|portalmmm/2.0 (?:SG|my)",device:"smartphone",models:[{regex:"SAGEM-(my[a-z0-9\\-]+)",model:"$1",device:"feature phone"},{regex:"SAGEM ([a-z0-9]+)",model:"$1"},{regex:"SAGEM-([a-z0-9\\-]+)",model:"$1"},{regex:"portalmmm/2.0 ((?:SG|my)[a-z0-9]+)",model:"$1"}]},Mpman={regex:"(?:MPQC|MPDC)[0-9]+|PH(?:150|340|350|360|451|500|520|544|604)|(?:MID(?:7C|74C|82C|84C|801|811|701|711|170|77C|43C|102C|103C|104C|114C)|MP100i OCTA|MP(?:843|717|718|1010|7007|7008|843|888|959|969)|MGP7)(?:[);/ ]|$)",device:"tablet",models:[{regex:"((?:MPQC|MPDC)[0-9]+[^/;)]+)(?: Build|\\))",model:"$1"},{regex:"MP100i OCTA(?:[);/ ]|$)",model:"MP100i OCTA"},{regex:"(MID(?:7C|74C|82C|84C|801|811|701|711|170|77C|43C|102C|103C|104C|114C)|MP(?:843|717|718|1010|7007|7008|843|888|959|969)|MGP7)(?:[);/ ]|$)",model:"$1"},{regex:"(PH(?:150|340|350|360|451|500|520|544|604))",model:"$1",device:"smartphone"}]},Majestic={regex:"MAJESTIC[ _-]|CRONO ?[0-9]+|TAB (?:647|411) 3G|URANO 77LTE",device:"smartphone",models:[{regex:"URANO 77LTE(?:[);/ ]|$)",model:"Urano 77 LTE"},{regex:"TAB (647|411) 3G",model:"Tab $1 3G",device:"tablet"},{regex:"MAJESTIC[ _]Tab([^;/]+)Build",model:"Tab$1",device:"tablet"},{regex:"MAJESTIC[ _]Tab([^);/]+)(?:[);/]|$)",model:"Tab$1",device:"tablet"},{regex:"MAJESTIC[ _]([^;/]+)Build",model:"$1"},{regex:"MAJESTIC[ _]([^);/]+)(?:(?:[);/ ]|$)|$)",model:"$1"},{regex:"CRONO ?([0-9]+) Build",model:"Crono $1"},{regex:"CRONO ?([0-9]+)(?:[);/]|$)",model:"Crono $1"}]},Masstel={regex:"Masstel",device:"smartphone",models:[{regex:"Masstel[_ ](Juno[_ ]Q3|X9|N4[56]0|N5[2458]0|N536|M05|M1[29]0|M1[125]|M250|M25)(?:[);/ ]|$)",model:"$1"},{regex:"Masstel[_ ]\\((M18)\\)",model:"$1"},{regex:"Masstel_Tab7LTE(?:[);/ ]|$)",model:"Tab 7 LTE",device:"tablet"},{regex:"Masstel Tab (840|700i)(?:[);/ ]|$)",model:"Tab $1",device:"tablet"}]},Maxwest={regex:"(?:Astro[_ ](?:5N_LTE|X4|5_GO_LTE|X55s)|Virtue Z5|Nitro[_ ](?:4S?|55R|5[XR]|[45] GO|4s LTE)|Gravity_55?_GO|Nitro_Phablet_9s)(?:[);/ ]|$)",device:"smartphone",models:[{regex:"Astro_5N_LTE",model:"Astro 5N LTE"},{regex:"Astro_5_GO_LTE",model:"Astro 5 Go LTE"},{regex:"Virtue Z5",model:"Virtue Z5"},{regex:"Astro X55s",model:"Astro X55s"},{regex:"Astro[_ ]X4",model:"Astro X4"},{regex:"Nitro ([45]) GO",model:"Nitro $1 GO"},{regex:"Nitro 4s LTE",model:"Nitro 4s LTE"},{regex:"Nitro[ _]4s",model:"Nitro 4s"},{regex:"Nitro_(4|55R|5[XR])",model:"Nitro $1"},{regex:"Gravity_(55?)_GO",model:"Gravity $1 GO"},{regex:"Nitro_Phablet_9s",device:"tablet",model:"Nitro Phablet 9s"}]},Maze={regex:"(?:Alpha[_ ]X|Maze Alpha)(?:[);/ ]|$)",device:"smartphone",models:[{regex:"Alpha[_ ]X(?:[);/ ]|$)",model:"Alpha X"},{regex:"Maze Alpha(?:[);/ ]|$)",model:"Alpha"}]},Mediacom={regex:"(?:SmartPad7503G|M-SP10MXA|M-PPAB500|SmartPad970s2(?:3G)?|M[_-][MPS]P[0-9a-z]+|M-IPRO[0-9a-z]+|1AEC)(?:[);/ ]|$)",device:"tablet",models:[{regex:"SmartPad7503G(?:[);/ ]|$)",model:"SmartPad 750 3G"},{regex:"SmartPad970s23G(?:[);/ ]|$)",model:"SmartPad 970 S2 3G"},{regex:"SmartPad970s2(?:[);/ ]|$)",model:"SmartPad 970 S2"},{regex:"M-MP84[02]M(?:[);/ ]|$)",model:'SmartPad 8.0" Mobile'},{regex:"M-MP940M(?:[);/ ]|$)",model:'SmartPad 9.7" Mobile'},{regex:"M-SP10MXA(?:[);/ ]|$)",model:'SmartPad MX 10.1"'},{regex:"M-SP8MXA(?:[);/ ]|$)",model:'SmartPad MX 8.0"'},{regex:"M-SP7HXAH(?:[);/ ]|$)",model:'SmartPad HX 7.0"'},{regex:"M-SP8HXAH(?:[);/ ]|$)",model:'SmartPad HX 8.0" HD'},{regex:"M-MP(?:710|720|725|726|740)GOx?(?:[);/ ]|$)",model:'SmartPad 7.0" Go'},{regex:"M-MP876S2(?:[);/ ]|$)",model:'SmartPad 8.0" S2'},{regex:"M-MP8S2[AB]?3G(?:[);/ ]|$)",model:'SmartPad 8.0" S2 3G'},{regex:"M-MP(101|102|860|875)S2[BW]?(?:[);/ ]|$)",model:"SmartPad $1 S2"},{regex:"M-MP85S23G(?:[);/ ]|$)",model:"SmartPad 875 S2 3G"},{regex:"M-SP1AGO3G",model:"SmartPad 10 Go 3G"},{regex:"M-SP7xGO3G",model:'SmartPad 10.1" iPro 3G'},{regex:"1AEC",model:"SmartPad 10 Eclipse"},{regex:"M-MP10[45][01]S2(?:[);/ ]|$)",model:'SmartPad 10.1" S2'},{regex:"M-MP1S2[AB]3G(?:[);/ ]|$)",model:'SmartPad 10.1" S2 3G'},{regex:"M-MP8[24]S4(?:[);/ ]|$)",model:'SmartPad 8.0" S4'},{regex:"M-MP8S4[AB]3G(?:[);/ ]|$)",model:'SmartPad 8.0" S4 3G'},{regex:"M-MP9S4A3G(?:[);/ ]|$)",model:'SmartPad 9.7" S4 3G'},{regex:"M-MP1[02]S4(?:[);/ ]|$)",model:'SmartPad 10.1" S4'},{regex:"M-MP1040MC?(?:[);/ ]|$)",model:'SmartPad 10.1" HD S4 3G'},{regex:"M-MP1S4[AB]3G(?:[);/ ]|$)",model:'SmartPad 10.1" S4 3G'},{regex:"M-SP10HXxH(?:[);/ ]|$)",model:'SmartPad 10.1" HX HD'},{regex:"M-SP10MXHA(?:[);/ ]|$)",model:'SmartPad 10.1" MX'},{regex:"M-SP10MXHL(?:[);/ ]|$)",model:'SmartPad 10.1" MX Lite'},{regex:"M-MP8PA3G(?:[);/ ]|$)",model:'SmartPad 8.0" HD Pro 3G'},{regex:"M-MP10PA(?:[);/ ]|$)",model:'SmartPad 10.1" HD Pro'},{regex:"M-MP10PA3G(?:[);/ ]|$)",model:'SmartPad 10.1" HD Pro 3G'},{regex:"M-IPRO([18][01]0)[BW](?:[);/ ]|$)",model:'SmartPad 8.0" HD iPro$1 3G'},{regex:"(?:M-MP75S23G|M-MP72[01]M)(?:[);/ ]|$)",model:'SmartPad 7.0" Mobile',device:"phablet"},{regex:"M-MP7S2[ABDK]3G(?:[);/ ]|$)",model:'SmartPad 7.0" S2 3G',device:"phablet"},{regex:"M-MP5303G(?:[);/ ]|$)",model:"SmartPad Mini Mobile",device:"phablet"},{regex:"M-PPxB400(?:[);/ ]|$)",model:"PhonePad Duo B400",device:"phablet"},{regex:"M-PPAG550(?:[);/ ]|$)",model:"PhonePad Duo G550",device:"phablet"},{regex:"M-PPAB500(?:[);/ ]|$)",model:"PhonePad Duo B500",device:"phablet"},{regex:"M-PP2G530(?:[);/ ]|$)",model:"PhonePad Duo G530",device:"phablet"},{regex:"M-PPG700(?:[);/ ]|$)",model:"PhonePad Duo G700",device:"phablet"},{regex:"M-PPxS531(?:[);/ ]|$)",model:"PhonePad Duo S531",device:"phablet"},{regex:"M-PP2S550(?:[);/ ]|$)",model:"PhonePad Duo S550",device:"phablet"},{regex:"M-PP2S650C?(?:[);/ ]|$)",model:"PhonePad Duo S650",device:"phablet"},{regex:"M-PPxS551U(?:[);/ ]|$)",model:"PhonePad Duo S551U",device:"phablet"},{regex:"M-PPAG4(?:[);/ ]|$)",model:"PhonePad Duo G4",device:"smartphone"},{regex:"M-PP[ABC]G500(?:[);/ ]|$)",model:"PhonePad Duo G500",device:"smartphone"},{regex:"M-PP2S500[BC]?(?:[);/ ]|$)",model:"PhonePad Duo S500",device:"smartphone"},{regex:"M[_-]PP[Ax]X(470|510|520)U(?:[);/ ]|$)",model:"PhonePad Duo X$1U",device:"smartphone"},{regex:"M-PPxG(400|501|[457][PM]?)(?:[);/ ]|$)",model:"PhonePad Duo G$1",device:"smartphone"},{regex:"M-PPxS(532[LU]|470|501|5P?|7P?)(?:[);/ ]|$)",model:"PhonePad Duo S$1",device:"smartphone"},{regex:"M-PPxG(450)(?:[);/ ]|$)",model:"PhonePad Duo G$1",device:"smartphone"},{regex:"M-MP([0-9a-z]+)",model:"SmartPad $1"}]},Medion$2={regex:"Medion|(?:MD_)?LIFETAB|([SPX]10[0-9]{2}X|E10[45]1X|X5001|P851X|P850X|E691X|E1050X)(?:[);/ ]|$)",device:"smartphone",models:[{regex:"(?:MD_)?LIFETAB_([a-z0-9]+)",device:"tablet",model:"Lifetab $1"},{regex:"(E450[46]|E5004|S5004|X5001|E5020|P5015)(?:[);/ ]|$)",model:"Life $1"},{regex:"(B5530)(?:[);/ ]|$)",model:"$1"},{regex:"(E10[45]1X)(?:[);/ ]|$)",device:"tablet",model:"$1"},{regex:"([SPX]10[0-9]{2}X|P851X|P850X|E691X|E1050X)(?:[);/ ]|$)",model:"Lifetab $1",device:"tablet"},{regex:"Medion(?: Smartphone)? ([^/;]+) Build",model:"$1"}]},MEEG={regex:"MEEG[ _-]",device:"smartphone",models:[{regex:"MEEG[ _\\-]?([^/;]+) Build",model:"$1"},{regex:"MEEG[ _\\-]?([^);/ ]+)",model:"$1"}]},Fourel={regex:"(?:EASYSMARTM3|EasySmart M2)(?:[);/ ]|$)",device:"smartphone",models:[{regex:"EASY ?SMART ?M([32])",model:"Easy Smart M$1"}]},Meizu={regex:"Meizu|MZ-[a-z]|(?<!POCO )(M04[05]|MZ-16th(?: Plus)?|MZ-16[st]|M7[12]1C|M35[1356]|M612C|M578CA|M181[36]|M1822|M681C|M6T|MX[ -]?[2345](?: Pro)?|(?:MZ-)?m[1-6] note|M621C|M1852|M57[18]C|M3[ESX]|M031|m1 metal|M1 E|M2|M2 E|M5s Build|PRO [67]|PRO 7-[HS]| 15 Lite| 16th|MZ-15 (?:Lite|Plus)|MZ-16 X)(?:[);/ ]|$)",device:"smartphone",models:[{regex:"(?:MZ-)?M571C",device:"phablet",model:"M2 Note"},{regex:"(?:MZ-|Meizu-)?m([1-6])[_ ]note(?:[);/ ]|$)",device:"phablet",model:"M$1 Note"},{regex:"M1 E(?:[);/ ]|$)",model:"M1E"},{regex:"M2 E(?:[);/ ]|$)",model:"M2E"},{regex:"(?:MZ-)?M578C[A]?|M2(?:[);/ ]|$)",model:"M2"},{regex:"M681C(?:[);/ ]|$)",model:"M3 Note",device:"phablet"},{regex:"M621C(?:[);/ ]|$)",model:"M5 Note",device:"phablet"},{regex:"M711C(?:[);/ ]|$)",model:"M6"},{regex:"M721C(?:[);/ ]|$)",model:"M6 Note",device:"phablet"},{regex:"M6T",model:"M6T"},{regex:"M3E",model:"M3E"},{regex:"M3S",model:"M3S"},{regex:"M3X",model:"M3X"},{regex:"M5S|M612C",model:"M5S"},{regex:"(M04[05]|MX[ -]?2)(?:[);/ ]|$)",model:"MX2"},{regex:"(M35[1356]|MX[ -]?3)(?:[);/ ]|$)",model:"MX3"},{regex:"MX[ -]?4 Pro(?:[);/ ]|$)",model:"MX4 Pro"},{regex:"MX[ -]?4(?:[);/ ]|$)",model:"MX4"},{regex:"(Meizu[- _])?MX[ -]?5(?:[);/ ]|$)",model:"MX5"},{regex:"m1 metal",model:"M1 Metal"},{regex:"M1813(?:[);/ ]|$)",model:"M8"},{regex:"M1816(?:[);/ ]|$)",model:"M8 Lite"},{regex:"PRO 7-[HS](?:[);/ ]|$)",model:"PRO 7"},{regex:"PRO 7 Plus(?:[);/ ]|$)",model:"Pro 7 Plus"},{regex:"PRO ([67])",model:"PRO $1"},{regex:"M031(?:[);/ ]|$)",model:"MX Dual Core"},{regex:"M1852(?:[);/ ]|$)",model:"X8"},{regex:"M1822(?:[);/ ]|$)",model:"Note 8"},{regex:"MZ-16T(?:[);/ ]|$)",model:"16T"},{regex:"(?:MZ-)?16th Plus(?:[);/ ]|$)",model:"16th Plus"},{regex:"MZ-15 Plus(?:[);/ ]|$)",model:"15 Plus"},{regex:"(?:MZ-15 Lite| 15 Lite)(?:[);/ ]|$)",model:"15 Lite"},{regex:"MZ-16th| 16th(?:[);/ ]|$)",model:"16th"},{regex:"MZ-16 X(?:[);/ ]|$)",model:"16X"},{regex:"Meizu[_ ]note([89])(?:[);/ ]|$)",device:"phablet",model:"Note $1"},{regex:"(?:MZ-)?Meizu[_ ]([^/;]+) Build",model:"$1"},{regex:"(?:MZ-)?Meizu[_ ]([a-z0-9_]+)",model:"$1"},{regex:"MZ-([^/;]+) Build",model:"$1"}]},Meitu={regex:"(?:(?<!MI CC 9 )Meitu[2]?|MP1503|MP1512|MP160[235]|MP170[19]|MP171[138])(?:[);/ ]|$)",device:"smartphone",models:[{regex:"MP1503(?:[);/ ]|$)",model:"M6"},{regex:"MP1512(?:[);/ ]|$)",model:"M6s"},{regex:"MP1602(?:[);/ ]|$)",model:"T8"},{regex:"MP1605(?:[);/ ]|$)",model:"V6"},{regex:"MP17(?:01|13)(?:[);/ ]|$)",model:"T8s"},{regex:"MP1718(?:[);/ ]|$)",model:"T9"},{regex:"MP1603(?:[);/ ]|$)",model:"M8"},{regex:"MP17(?:09|11)(?:[);/ ]|$)",model:"M8s"},{regex:"Meitu2(?:[);/ ]|$)",model:"2"},{regex:"Meitu (Kiss|[MV]4)(?:[);/ ]|$)",model:"$1"}]},Memup={regex:"SlidePad ?([^;/]*) Build|SPNG?[0-9]{2,4}[a-z]{0,2}(?:[);/ ]|$)|SP704CE?|SP-NG708-3G",device:"tablet",models:[{regex:"SlidePad ?([^;/]*) Build",model:"SlidePad $1"},{regex:"SPNG([0-9]{2,4}[a-z]{0,2})(?:[);/ ]|$)",model:"SlidePad NG$1"},{regex:"SP-NG(708)-3G(?:[);/ ]|$)",model:"SlidePad NG$1 3G"},{regex:"SP704(CE?)",model:"SlidePad 704$1"}]},Mecer={regex:"(M785|800P3[12]C|101P51C|X1010)(?:[);/ ]|$)",device:"tablet",models:[{regex:"M785(?:[);/ ]|$)",model:"Xpress Smartlife M785"},{regex:"X1010(?:[);/ ]|$)",model:"X1010"},{regex:"800P31C(?:[);/ ]|$)",model:"Xpress Smartlife 800P31C"},{regex:"800P32C(?:[);/ ]|$)",model:"Xpress Smartlife 800P32C"},{regex:"101P51C(?:[);/ ]|$)",model:"Xpress Smartlife 101P51C"}]},Mio={regex:"MIO(?:/)?([a-z0-9]+)|(?:MOBIX M6|Mio TouchPad 7 Quad Core)(?:[);/ ]|$)",device:"smartphone",models:[{regex:"MOBIX M6(?:[);/ ]|$)",model:"Mobix M6"},{regex:"MIO(?:/)?([a-z0-9]+)",model:"$1"},{regex:"Mio TouchPad 7 Quad Core",device:"tablet",model:"TouchPad 7 Quad Core"}]},Miray$1={regex:"MIDM[_-]|MPM[_-]",device:"smartphone",models:[{regex:"MIDM[_-]([a-z0-9]+)",model:"MIDM $1",device:"tablet"},{regex:"MPM[_-]([a-z0-9]+)",model:"MPM $1"}]},Mitsubishi={regex:"MITSU|portalmmm/[12]\\.0 M",device:"feature phone",models:[{regex:"MITSU/[a-z0-9.]+ \\(([a-z0-9]+)\\)",model:"$1"},{regex:"MITSU[ \\-]?([a-z0-9]+)",model:"$1"},{regex:"portalmmm/[12]\\.0 (M[a-z0-9]+)",model:"$1"}]},MIXC={regex:"(M35|M20|G7106|G7108)(?:[);/ ]|$)",device:"smartphone",models:[{regex:"(M[0-9]{1,2})(?:[);/ ]|$)",model:"$1"},{regex:"(G[0-9]{4})(?:[);/ ]|$)",model:"$1"}]},Mobiola={regex:"(MS5[50]X6|MS55X5|MS55L1|MS50L1|MS43A3000|MS45A4000|MS50A4000|MS50A4500|MS50A5000|MS50A6000|MS50B11000|MB-2900 QUATTRO|POLYS[_ ]MS45L1|Wave5)",device:"smartphone",models:[{regex:"MS50X6",model:"Atmos II"},{regex:"POLYS[_ ]MS45L1",model:"Polys MS45L1"},{regex:"MS55X6",model:"Atmos Pro II"},{regex:"MS55X5",model:"Atmos Pro"},{regex:"MS55L1",model:"GAIA"},{regex:"MS50L1",model:"Inti"},{regex:"MB-2900 QUATTRO",model:"MB-2900 Quattro"},{regex:"MS43A3000",model:"MS43A3000"},{regex:"MS45A4000",model:"eOn 45"},{regex:"MS50A4000",model:"eOn 50"},{regex:"MS50A4500",model:"eOn 50 Elegance"},{regex:"MS50A5000",model:"eOn 50 Quad 8"},{regex:"MS50A6000",model:"eOn 50 Quad 16"},{regex:"MS50B11000",model:"MS50B11000"},{regex:"Wave5",model:"Wave 5"}]},Mobicel={regex:"Mobicel_(R1)|(?:HYPE|DANDY(?:_ZAM)?|(?<!SMADL )Matrix|TRENDY PLUS|FENDY_DS|TANGO_LITE|BLINK|BERRY[_ ]?(?:[12]|PLUS))(?:[);/ ]|$)",device:"smartphone",models:[{regex:"Matrix",model:"Matrix"},{regex:"BLINK",model:"Blink"},{regex:"BERRY1",model:"Berry 1"},{regex:"BERRY 2",model:"Berry 2"},{regex:"BERRY[_ ]PLUS",model:"Berry Plus"},{regex:"TRENDY PLUS",model:"Trendy Plus"},{regex:"HYPE",model:"Hype"},{regex:"DANDY_ZAM",model:"Dandy Zam"},{regex:"DANDY",model:"Dandy"},{regex:"TANGO_LITE",model:"Tango Lite"},{regex:"FENDY_DS",model:"Fendy DS"},{regex:"Mobicel_(R1)",model:"$1"}]},Mobiistar={regex:"Mobiistar|Zumbo[ _]S|PRIME X MAX|X1 Notch|E1 Selfie",device:"smartphone",models:[{regex:"X1 Notch(?:[);/ ]|$)",model:"X1 Notch"},{regex:"E1 Selfie(?:[);/ ]|$)",model:"E1 Selfie"},{regex:"mobiistar_LAI_Zumbo(?:[);/ ]|$)",model:"Zumbo"},{regex:"Zumbo[_ ]S[_ ]2017[_ ]Lite(?:[);/ ]|$)",model:"Lai Zumbo S Lite (2017)"},{regex:"Zumbo[_ ]S[_ ]2017(?:[);/ ]|$)",model:"Lai Zumbo S (2017)"},{regex:"mobiistar ZUMBO S2( Dual)",model:"Zumbo S2"},{regex:"Mobiistar_LAI_Zumbo_J_2017(?:[);/ ]|$)",model:"Lai Zumbo J (2017)"},{regex:"Mobiistar_LAI_Zumbo_J(?:[);/ ]|$)",model:"Lai Zumbo J"},{regex:"Mobiistar_Zumbo_J2",model:"Lai Zumbo J2"},{regex:"Mobiistar[_ ]Zumbo[_ ]S2",model:"Zumbo S2"},{regex:"mobiistar ZUMBO Power",model:"Zumbo Power"},{regex:"mobiistar[ _]LAI[ _]YUNA[ _]([1XCS])",model:"Lai Yuna $1"},{regex:"mobiistar LAI Yuki",model:"Lai Yuki"},{regex:"mobiistar[ _]LAI[ _]ZORO[ _]([23])",model:"Lai Zoro $1"},{regex:"mobiistar[ _]LAI[ _]Zena",model:"Lai Zena"},{regex:"mobiistar[ _]LAI[ _]Z([12])?",model:"Lai Z$1"},{regex:"mobiistar_ZORO_4G",model:"Zoro 4G"},{regex:"mobiistar touch LAI 512",model:"Touch Lai 512"},{regex:"mobiistar LAI 504([KC])",model:"Lai 504$1"},{regex:"mobiistar LAI Y",model:"Lai Y"},{regex:"mobiistar PRIME X 2017",model:"Prime X"},{regex:"mobiistar[ _]PRIME[ _](X1|558|X[ _]Plus|X[ _]Grand) Build",model:"Prime $1"},{regex:"PRIME X MAX 2018",model:"Prime X Max"},{regex:"mobiistar[ _]KOOL([ _]Lite)?",model:"Kool$1"},{regex:"mobiistar KAT 452 Build",model:"Kat 452"},{regex:"mobiistar_LAI_YOLLO Build",model:"Lai Yollo"},{regex:"Mobiistar[ _]([^;/)]+)(?: Build|[;)])",model:"$1"}]},MSI$1={regex:"Primo ?(?:9[13]|81|76)|Enjoy 7 Plus",device:"tablet",models:[{regex:"Primo ?(9[13]|76|81)",model:"Primo $1"},{regex:"Enjoy 7 Plus",model:"Enjoy 7 Plus"}]},MLLED={regex:"MLLED[ _]",device:"smartphone",models:[{regex:"MLLED[ _]([^;/]+)Build",model:"$1"},{regex:"MLLED[ _]([^);/]+)(?:[);/]|$)",model:"$1"}]},Mobistel={regex:"(Cynus[ _][^/;)]+)( Build|\\))",device:"smartphone",model:"$1"},Mecool={regex:"(?:KM9PRO|BB2 PRO|K[I]{1,3} PRO|KI PLUS|KM9_TV_BOX|M8SPROW|M8S (?:PLUS|PRO) (?:DVB|[LW]|PLUS)|M8S (?:MAX|PRO))(?:[);/ ]|$)",device:"tv",models:[{regex:"KM9PRO(?:[);/ ]|$)",model:"KM9 Pro"},{regex:"KM9_TV_BOX(?:[);/ ]|$)",model:"KM9 TV Box"},{regex:"BB2 PRO(?:[);/ ]|$)",model:"BB2 Pro"},{regex:"(K[I]{1,3}) PRO(?:[);/ ]|$)",model:"$1 Pro"},{regex:"KI PLUS(?:[);/ ]|$)",model:"KI Plus"},{regex:"M8SPROW(?:[);/ ]|$)",model:"M8S Pro W"},{regex:"M8S PLUS DVB(?:[);/ ]|$)",model:"M8S Plus DVB"},{regex:"M8S PLUS ([LW])(?:[);/ ]|$)",model:"M8S Plus $1"},{regex:"M8S PRO ([LW])(?:[);/ ]|$)",model:"M8S Pro $1"},{regex:"M8S PRO PLUS(?:[);/ ]|$)",model:"M8S Pro Plus"},{regex:"M8S PRO(?:[);/ ]|$)",model:"M8S Pro"},{regex:"M8S MAX(?:[);/ ]|$)",model:"M8S Max"}]},Modecom={regex:"Modecom|Free(?:Way )?Tab|xino z[\\d]+ x[\\d]+",device:"tablet",models:[{regex:"xino Z([\\d]+) X([\\d]+)",model:"Xino Z$1 X$2",device:"smartphone"},{regex:"FreeTab[ _\\-]?([^/;]+)? Build",model:"FreeTab $1"},{regex:"FreeTab[ _\\-]?((?!Build)[^);/ ]+)?",model:"FreeTab $1"},{regex:"FreeWay Tab[ _\\-]?([^/;]+) Build",model:"FreeWay Tab $1"},{regex:"FreeWay Tab[ _\\-]?((?!Build)[^);/ ]+)",model:"FreeWay Tab $1"}]},Mofut={regex:"Mofut",device:"smartphone",models:[{regex:"Mofut[ _\\-]?([^/;]+) Build",model:"$1"},{regex:"Mofut[ _\\-]?((?!Build)[^);/ ]+)",model:"$1"}]},BrightSign={regex:"BrightSign",device:"tv",models:[{regex:"(HD1023|XD233|XD230|XD1030|XT114[34]|4K1142|LS424)",model:"$1"}]},Motorola={regex:"MOT(?!TO)|(?<!AN)DROID ?(?:Build|[a-z0-9]+)|portalmmm/2.0 (?:E378i|L6|L7|v3)|XOOM [^;/]*Build|XT1941-2|XT1924-9|XT1925-10|XT1965-6|XT1970-5|XT1799-2|XT1021|XT1710-08|XT180[3-5]|XT194[23]-1|XT1929-15|(?:XT|MZ|MB|ME)[0-9]{3,4}[a-z]?(?:\\(Defy\\)|-0[1-5])?(?:[;]? Build|\\))",device:"smartphone",models:[{regex:"MOT-V360",model:"V360",device:"feature phone"},{regex:"(?:MOT-|Motorola-)?XT300",model:"Spice"},{regex:"(?:MOT-|Motorola-)?XT30[35]",model:"Motosmart ME"},{regex:"(?:MOT-|Motorola-)?XT31[16]",model:"Fire"},{regex:"(?:MOT-|Motorola-)?XT32[01]",model:"Defy Mini"},{regex:"(?:MOT-|Motorola-)?XT3(?:89|90)",model:"Motosmart"},{regex:"(?:MOT-|Motorola-)?XT502",model:"Quench"},{regex:"(?:MOT-|Motorola-)?XT531",model:"Fire XT"},{regex:"(?:MOT-|Motorola-)?XT535",model:"Defy"},{regex:"(?:MOT-|Motorola-)?XT55[567]C?",model:"Defy XT"},{regex:"(?:MOT-|Motorola-)?XT603",model:"Admiral"},{regex:"(?:MOT-|Motorola-)?XT610",model:"Droid Pro"},{regex:"(?:MOT-|Motorola-)?XT615",model:"Motoluxe"},{regex:"(?:MOT-|Motorola-)?XT621",model:"Primus"},{regex:"(?:MOT-|Motorola-)?XT626",model:"IronRock"},{regex:"(?:MOT-|Motorola-)?XT682",model:"Atrix"},{regex:"(?:MOT-|Motorola-)?XT685",model:"Motoluxe Dual-SIM"},{regex:"(?:MOT-|Motorola-)?XT687",model:"Atrix TV"},{regex:"(?:MOT-|Motorola-)?XT720",model:"Milestone"},{regex:"(?:MOT-|Motorola-)?XT800W",model:"Glam"},{regex:"(?:MOT-|Motorola-)?XT860",model:"Milestone 3"},{regex:"(?:MOT-|Motorola-)?XT881",model:"Electrify 2"},{regex:"(?:MOT-|Motorola-)?XT882",model:"Moto XT882"},{regex:"(?:MOT-|Motorola-)?XT88[56]",model:"Droid RAZR V"},{regex:"(?:MOT-|Motorola-)?XT890",model:"Droid RAZR i"},{regex:"(?:MOT-|Motorola-)?XT894",model:"Droid 4"},{regex:"(?:MOT-|Motorola-)?XT897",model:"Photon Q"},{regex:"(?:MOT-|Motorola-)?XT901",model:"Electrify M"},{regex:"(?:MOT-|Motorola-)?XT90[567]",model:"Droid RAZR M"},{regex:"(?:MOT-|Motorola-)?XT910S?",model:"Droid RAZR"},{regex:"(?:MOT-|Motorola-)?XT91[4568]",model:"Droid RAZR D1"},{regex:"(?:MOT-|Motorola-)?XT9(?:19|20)",model:"Droid RAZR D3"},{regex:"(?:MOT-|Motorola-)?XT925",model:"Droid RAZR HD"},{regex:"(?:MOT-|Motorola-)?XT102[12]",model:"Moto E"},{regex:"(?:MOT-|Motorola-)?XT1706",model:"Moto E3 Power"},{regex:"(?:MOT-|Motorola-)?XT1924-9|moto e5 plus",model:"Moto E5 Plus"},{regex:"Moto E5 Play",model:"Moto E5 Play"},{regex:"Moto E5 go(?:[);/ ]|$)",model:"Moto E5 Go"},{regex:"Moto E6(?:[);/ ]|$)",model:"Moto E6"},{regex:"(?:MOT-|Motorola-)?XT1030",model:"Droid Mini"},{regex:"(?:MOT-|Motorola-)?XT1096",model:"Moto X2"},{regex:"(?:MOT-|Motorola-)?XT1254",model:"Droid Turbo"},{regex:"(?:MOT-|Motorola-)?XT10(?:28|3[1234]|68|69)",model:"Moto G"},{regex:"(?:MOT-|Motorola-)?XT1799-2",model:"Moto G5s"},{regex:"(?:MOT-|Motorola-)?XT180[3-5]",model:"Moto G5s Plus"},{regex:"(?:MOT-|Motorola-)?XT168[57]",model:"Moto G5 Plus"},{regex:"(?:MOT-|Motorola-)?XT1670",model:"Moto G5"},{regex:"(?:MOT-|Motorola-)?XT1925-10",model:"Moto G6"},{regex:"(?:MOT-|Motorola-)?XT1965-6",model:"Moto G7 Plus"},{regex:"(?:MOT-|Motorola-)?XT10(?:49|5[23568]|60|9[23457])",model:"Moto X"},{regex:"(?:MOT-|Motorola-)?XT1562",model:"Moto X Play"},{regex:"(?:MOT-|Motorola-)?XT1572",model:"Moto X Style"},{regex:"(?:MOT-|Motorola-)?XT1080",model:"Droid Ultra"},{regex:"(?:MOT-|Motorola-)?XT1650-05",model:"Moto Z"},{regex:"moto z4(?:[);/ ]|$)",model:"Moto Z4"},{regex:"(?:MOT-|Motorola-)?XT1635(?:-0[1-3])?",model:"Moto Z Play"},{regex:"(?:MOT-|Motorola-)?XT1710-(?:-0[28])?",model:"Moto Z2 Play"},{regex:"(?:MOT-|Motorola-)?XT1789-05",model:"Moto Z2 Force"},{regex:"(?:MOT-|Motorola-)?XT1929-15",model:"Moto Z3"},{regex:"(?:MOT-|Motorola-)?XT1663",model:"Moto M"},{regex:"(?:MOT-|Motorola-)?XT1943-1",model:"P30"},{regex:"(?:MOT-|Motorola-)?XT1941-2",model:"P30 Play"},{regex:"(?:MOT-|Motorola-)?XT1942-1",model:"P30 Note"},{regex:"(?:MOT-|Motorola-)?XT1970-5",model:"One Vision"},{regex:"(?:MOT-|Motorola-)?one zoom",model:"One Zoom"},{regex:"motorola one action",model:"One Action"},{regex:"motorola one macro",model:"One Macro"},{regex:"motorola one 5G UW",model:"One 5G UW"},{regex:"moto g power",model:"Moto G Power"},{regex:"moto g\\(([0-9])\\) power lite",model:"Moto G$1 Power Lite"},{regex:"moto g\\(([0-9])\\) power",model:"Moto G$1 Power"},{regex:"moto g\\(([0-9])\\) supra",model:"Moto G$1 Supra"},{regex:"moto g\\(([0-9])\\) plus",model:"Moto G$1 Plus"},{regex:"moto g\\(([0-9]+)\\) play",model:"Moto G$1 Play"},{regex:"moto g\\(([0-9]+)\\)",model:"Moto G$1"},{regex:"Moto ([CGEXZ]) ?\\(([a-z0-9]+)\\)( Plus| Play)?",model:"Moto $1$2$3"},{regex:"Moto ?([CGEXZ])([0-9]+)( Plus| Play)?",model:"Moto $1$2$3"},{regex:"(?:Motorola-)?Moto[ _]?([CGEXZ])([ _](?:Plus|Play))?",model:"Moto $1$2"},{regex:"MotoroiX",model:"MotoroiX"},{regex:"Motorola[ _\\-]([^/;]+)(?: Build|[);])",model:"$1"},{regex:"MOTORAZR[ _\\-]([a-z0-9]+)",model:"RAZR $1"},{regex:"MOTORIZR[ _\\-]([a-z0-9]+)",model:"RIZR $1"},{regex:"MOT(?!OROLA)[O]?[_\\-]?([a-z0-9.]+)",model:"$1"},{regex:"(?<!AN)DROID ?([a-z0-9 ]*) Build",model:"DROID $1"},{regex:"(?<!AN)DROID ?([a-z0-9]+)",model:"DROID $1"},{regex:"portalmmm/2.0 ((?:E378i|L6|L7|V3)[a-z0-9]+)",model:"$1"},{regex:"(XOOM [^;/]*)Build",device:"tablet",model:"$1"},{regex:"(MZ[0-9]{3})(?:[);/ ]|$)",device:"tablet",model:"$1"},{regex:"((?:ME|MB|XT)[0-9]{3,4}(?:\\(Defy\\))?)(?:[);/ ]|$)",model:"$1"}]},Movic={regex:"MOVIC",device:"smartphone",models:[{regex:"MOVIC[ -]W([2345])",model:"W$1"}]},MTN={regex:"MTN-",device:"smartphone",models:[{regex:"MTN-(L860|S620)",model:"Sm@rt Mini $1"},{regex:"MTN-8978P",device:"tablet",model:"Steppa"},{regex:"MTN-([a-z0-9_\\-]+)",model:"MTN-$1"}]},MyTab={regex:"MyTAB[ _-](?:8 MINI Dual Core|U55GT)(?:[);/ ]|$)",device:"tablet",models:[{regex:"MyTAB[ _-]8 MINI Dual Core(?:[);/ ]|$)",model:"8 Mini Dual Core"},{regex:"MyTAB-U55GT(?:[);/ ]|$)",model:"U55GT"}]},MyPhone={regex:"(?:MyPhone|MyPad|MyTab)[ _][^;/)]+( Build|\\))|Cube_LTE|myTab10II|HAMMER[ _](Blade2_PRO|IRON_3|Explorer|ENERGY|Titan 2|AXE[_ ](?:M[_ ]LTE|Pro)|Iron 2|Active[2]?(_LTE)?)|C-Smart_pix|myPhone_Fun_8|FUN_18x9|MyPhoneMY27|Prime_4_Lite|myA17|myX12|Pocket_2|Prime_18x9|Prime3Lite|myT6 DTV|myXI1 (?:Plus|Pro)|myXI3|Q_Smart_BE",device:"smartphone",models:[{regex:"MyPad[ _]([^;/]+) Build",model:"MyPad $1",device:"tablet"},{regex:"MyTab[ _]([^;/]+) Build",model:"MyTab $1",device:"tablet"},{regex:"myTab_10III",model:"MyTab 10 III",device:"tablet"},{regex:"myTab10II",model:"MyTab 10 II",device:"tablet"},{regex:"myT6 DTV",model:"myT6 DTV",device:"tablet"},{regex:"Cube_LTE",model:"Cube LTE"},{regex:"Prime_4_Lite",model:"Prime 4 Lite"},{regex:"HAMMER[ _]ENERGY",model:"Hammer Energy"},{regex:"HAMMER_AXE[_ ]M[_ ]LTE",model:"Hammer Axe M LTE"},{regex:"Hammer Titan 2",model:"Hammer Titan 2"},{regex:"Hammer[ _]Iron[ _](2|3)",model:"Hammer Iron $1"},{regex:"Hammer[ _]Explorer",model:"Hammer Explorer"},{regex:"Hammer Active(?:[);/ ]|$)",model:"Hammer Active"},{regex:"Hammer_Active2(?:[);/ ]|$)",model:"Hammer Active 2"},{regex:"Hammer_Active2_LTE(?:[);/ ]|$)",model:"Hammer Active 2 LTE"},{regex:"Hammer AXE Pro",model:"Hammer Axe Pro"},{regex:"Hammer_Blade2_PRO",model:"Hammer Blade 2 Pro"},{regex:"C-Smart_pix",model:"C-Smart Pix"},{regex:"Pocket_2(?:[);/ ]|$)",model:"Pocket 2"},{regex:"myA17(?:[);/ ]|$)",model:"myA17"},{regex:"(?:myPhone_)?Fun_(8|18x9)",model:"FUN $1"},{regex:"MyPhoneMY27",model:"my27"},{regex:"myX12(?:[);/ ]|$)",model:"myX12"},{regex:"myXI1 Plus(?:[);/ ]|$)",model:"myXI1 Plus"},{regex:"myXI1 Pro(?:[);/ ]|$)",model:"myXI1 Pro"},{regex:"myXI3(?:[);/ ]|$)",model:"myXI3"},{regex:"Q_Smart_BE(?:[);/ ]|$)",model:"Q-Smart BE"},{regex:"Prime_18x9(_LTE)?(?:[);/ ]|$)",model:"Prime 18x9$1"},{regex:"Prime3Lite(?:[);/ ]|$)",model:"Prime 3 Lite"},{regex:"MyPhone[ _]([^;/)]+)( Build|\\))",model:"$1"}]},MyWigo={regex:"MyWigo ",device:"smartphone",models:[{regex:"City3",model:"City 3"}]},Myros={regex:"(E70 Ultra)(?:[);/ ]|$)",device:"smartphone",model:"$1"},Myria={regex:" (Myria_[^/;]+|502M|Cozy|Easy tab 9|Grand) Build|Myria_FIVE|Myria_Grand_4G|Myria_Wide_2|Myria_Wide_4G",device:"smartphone",models:[{regex:"Myria_([^/;]+) Build",model:"$1"},{regex:"Myria_FIVE",model:"Five"},{regex:"(502M|Grand)",model:"$1"},{regex:"Myria_Grand_4G",model:"Grand 4G"},{regex:"Myria_Wide_4G",model:"Wide 4G"},{regex:"Myria_Wide_2",model:"Wide 2"},{regex:"(Cozy|Easy tab 9)",model:"$1",device:"tablet"}]},Navon={regex:"Navon[_ ]|(?:Vision_Tab_(?:7|10)|Superme_Max|Predator (?:10|3G)|Platinum[_ ]10[_ ]3G(?:_V2)?|Supreme[_ ](?:Fine(?:[_ ]Micro)?|Chief|Pure|Pro)(?:[_ ](?:Mini|Plus))?)(?:[);/ ]|$)",device:"smartphone",models:[{regex:"M505 LTE(?:[);/ ]|$)",model:"Mizu M505 LTE"},{regex:"(F552|D504)(?:[);/ ]|$)",model:"Mizu $1"},{regex:"Superme_Max(?:[);/ ]|$)",model:"Supreme Max"},{regex:"Supreme_Fine_Mini(?:[);/ ]|$)",model:"Supreme Fine Mini"},{regex:"Supreme_Fine_Micro(?:[);/ ]|$)",model:"Supreme Fine Micro"},{regex:"Supreme[_ ]Fine[_ ]Plus(?:[);/ ]|$)",model:"Supreme Fine Plus"},{regex:"Supreme_Fine(?:[);/ ]|$)",model:"Supreme Fine"},{regex:"Supreme[_ ]Chief(?:[);/ ]|$)",model:"Supreme Chief"},{regex:"Supreme[_ ]Pure[ _]Plus(?:[);/ ]|$)",model:"Supreme Pure Plus"},{regex:"Supreme Pure(?:[);/ ]|$)",model:"Supreme Pure"},{regex:"Supreme[_ ]Pro(?:[);/ ]|$)",model:"Supreme Pro"},{regex:"Navon[_ ]Infinity(?:[);/ ]|$)",model:"Infinity"},{regex:"(?:Navon[_ ])?Platinum[ _]10[ _]3G(_V2)?(?:[);/ ]|$)",device:"tablet",model:'Platinum 10.1" 3G$1'},{regex:"(?:Navon[_ ])?Orpheus[ _]3G(?:[);/ ]|$)",device:"tablet",model:"Orpheus 3G"},{regex:"Predator (3G|10)(?:[);/ ]|$)",device:"tablet",model:"Predator $1"},{regex:"Vision_Tab_(7|10)(?:[);/ ]|$)",device:"tablet",model:"Vision Tab $1"}]},NOA={regex:"(?:NOA-)?NOA[ _]|Hummer(?:_2019_R|LE)|NextSE",device:"smartphone",models:[{regex:"NOA[_ ]CORE[_ ]FORTE",model:"Core Forte"},{regex:"HummerLE",model:"Hummer LE"},{regex:"Hummer_2019_R",model:"Hummer R (2019)"},{regex:"NOA[_ ]Hummer[_ ]Lite",model:"Hummer Lite"},{regex:"NOA[_ ]MOVEse",model:"Move SE"},{regex:"NextSE",model:"Next SE"},{regex:"NOA[_ ]NEXT",model:"Next"},{regex:"NOA[_ ]VISION[_ ]H3SE",model:"Vision H3SE"},{regex:"NOA[_ ]VISION[_ ]H3",model:"Vision H3"},{regex:"NOA[_ ]LOOP",model:"Loop"},{regex:"(?:NOA-)?NOA[_ ]H4se",model:"H4SE"},{regex:"NOA[_ ]Mg12",model:"MG12"},{regex:"NOA[_ ]H44SE",model:"H44SE"},{regex:"NOA[_ ]H10LE",model:"H10LE"},{regex:"NOA[_ ]([^;)/ ]+)",model:"$1"}]},Nobby={regex:"Nobby[ ](S500|X800|S300(?: Pro)?)(?:[);/ ]|$)",device:"smartphone",model:"$1"},NEC={regex:"NEC[ _\\-]|KGT/2\\.0|PC-TE508(?:S1|[BH]AW)|PC-TE510(?:HAW|BAL|S1)|PC-TS708T1W|PC-TS507N1S|PC-TE507JAW|portalmmm/1\\.0 (?:DB|N)|(?:portalmmm|o2imode)/2.0[ ,]N|(?:N-06C|N-02E|LAVIE Tab E (?:10|8)FHD1)(?:[);/ ]|$)",device:"smartphone",models:[{regex:"N-06C(?:[);/ ]|$)",model:"Medias Amadana"},{regex:"N-02E(?:[);/ ]|$)",model:"Medias U"},{regex:"(?:NEC[ _\\-]|KGT/2\\.0 )([a-z0-9]+)",model:"$1"},{regex:"portalmmm/1\\.0 ((?:DB|N)[a-z0-9]+)",model:"$1"},{regex:"(?:portalmmm|o2imode)/2\\.0[ ,](N[a-z0-9]+)",model:"$1"},{regex:"PC-TE508[BH]AW(?:[);/ ]|$)",device:"tablet",model:"LAVIE Tab E TE508"},{regex:"PC-TE510(?:BAL|HAW|S1)(?:[);/ ]|$)",device:"tablet",model:"LAVIE Tab E TE510"},{regex:"PC-TS507N1S(?:[);/ ]|$)",device:"tablet",model:"LAVIE Tab S TS507"},{regex:"PC-TS708T1W(?:[);/ ]|$)",device:"tablet",model:"LAVIE Tab S TS708"},{regex:"PC-TE507JAW(?:[);/ ]|$)",device:"tablet",model:"LAVIE Tab E TS507"},{regex:"PC-TE508S1(?:[);/ ]|$)",device:"tablet",model:"LAVIE Tab E TE508"},{regex:"(LAVIE Tab E (?:10|8)FHD1)(?:[);/ ]|$)",device:"tablet",model:"$1"}]},Neffos={regex:"Neffos|(TP601A)(?:[);/ ]|$)",device:"smartphone",models:[{regex:"TP601A(?:[);/ ]|$)",model:"C5L"},{regex:"Neffos[_ ]Y50",model:"Y50"},{regex:"Neffos X20 Pro",model:"X20 Pro"},{regex:"Neffos[_ ]((?:[YNCXA])[0-9][A-Z]?(?: Max| Lite)?)",model:"$1"}]},Nextbit={regex:"Nextbit|(?:Robin)(?: Build|\\))",device:"smartphone",models:[{regex:"(Robin)(?:[);/ ]|$)",model:"$1"}]},Newgen={regex:"NEWGEN\\-([a-z0-9]+)",device:"feature phone",model:"$1"},Netgear={regex:"GTV100",device:"tv",models:[{regex:"GTV100",model:"NeoTV Prime"}]},NeuImage={regex:"NIM-",device:"smartphone",models:[{regex:"NIM-(450D|550O|600Q)",model:"$1"}]},NextBook={regex:"Next[0-9]|NX(?:785QC8G|M900MC|008HD8G|010HI8G|M908HC|M726|16A8116K|A8QC116|16A10132S|16A11264)",device:"tablet",models:[{regex:"NX008HD8G",model:"Premium 8 HD"},{regex:"NXA8QC116",model:"Ares 8"},{regex:"NX16A8116K",model:"Ares A8"},{regex:"NX16A10132S",model:"Ares A10"},{regex:"NX16A11264",model:"Ares A11"},{regex:"NXM908HC",model:"Premium 9"},{regex:"NX010HI8G",model:"Premium 10 Hi"},{regex:"NX785QC8G",model:"8"},{regex:"NXM900MC",model:"8 HD"},{regex:"NXM726",model:"Premium 7"},{regex:"Next([0-9]+[^;/]+) Build",model:"Next $1"}]},NGM={regex:"NGM[_ ][a-z0-9]+|(Forward|Dynamic)[ _]?[^/;]+(?:Build|/)",device:"smartphone",models:[{regex:"(Forward|Dynamic)[ _]?([^/;]+) Build",model:"$1 $2"},{regex:"(Forward|Dynamic)[ _]?([^/;]+)/",model:"$1 $2"},{regex:"NGM ([^;/]+) Build",model:"$1"},{regex:"NGM_([a-z0-9]+)",model:"$1"}]},Nexian={regex:"S?Nexian",device:"smartphone",models:[{regex:"S?Nexian[ ]?([a-z0-9\\-]+)",model:"$1"},{regex:"S?Nexian-([a-z0-9]+)",model:"$1"}]},Noain={regex:"NOAIN",device:"smartphone",models:[{regex:"NOAIN[ _-]([^;/]+) Build",model:"$1"},{regex:"NOAIN[ _-]([^;/)]+)(?:[;/)]|$)",model:"$1"}]},Noblex={regex:"Noblex|NBX-",device:"smartphone",models:[{regex:"(?:Noblex|NBX)[ _-]([^;/]+) Build",model:"$1"},{regex:"(?:Noblex|NBX)[ _-]([^;/)]+)(?:[;/)]|$)",model:"$1"}]},Nomu={regex:"Nomu[ _-](?:T18|S30mini|S10)(?:[);/ ]|$)|V1600S(?:[);/ ]|$)",device:"smartphone",models:[{regex:"Nomu[ _-]T18(?:[);/ ]|$)",model:"T18"},{regex:"Nomu[ _-]s10(?:[);/ ]|$)",model:"S10"},{regex:"Nomu[ _-]S30mini(?:[);/ ]|$)",model:"S30 Mini"},{regex:"(V1600S)(?:[);/ ]|$)",model:"$1"}]},Nomi={regex:"Nomi[ _-]|(C101010 Ultra2|i501[234]|i5032|i50[57]0|i5510|i5532|C0(700(?:[02358]|2HD)|7850)|C1010[0-3])(?:[);/ ]|$)",device:"smartphone",models:[{regex:"i501[23](?:[);/ ]|$)",model:"Evo M2"},{regex:"I5070(?:[);/ ]|$)",model:"Iron-X"},{regex:"i5014(?:[);/ ]|$)",model:"Evo M4"},{regex:"i5032(?:[);/ ]|$)",model:"Evo X2"},{regex:"i5050(?:[);/ ]|$)",model:"Evo Z"},{regex:"Nomi_i4510(?:[);/ ]|$)",model:"Beat M"},{regex:"i5532(?:[);/ ]|$)",model:"Space X2"},{regex:"i5510(?:[);/ ]|$)",model:"Space M"},{regex:"C101010 Ultra2",model:"Ultra 2",device:"tablet"},{regex:"(C0(?:700(?:[02358]|2HD)|7850)|C1010[0-3])(?:[);/ ]|$)",model:"$1",device:"tablet"},{regex:"Nomi[ _-]([^;/]+) Build",model:"$1"},{regex:"Nomi[ _-]([^;/)]+)(?:[;/)]|$)",model:"$1"}]},Nous={regex:"(?:NS(?:[356]|500[2-68]|5511|5502)|NS 5511)(?:[);/ ]|$)",device:"smartphone",models:[{regex:"NS 5511(?:[);/ ]|$)",model:"NS5511"},{regex:"(NS[0-9]{1,4})(?:[);/ ]|$)",model:"$1"}]},Nvidia={regex:"NVIDIA|SHIELD Tablet K1|SHIELD Android TV|Tegra(Note-P1640| Note 7)",device:"tablet",models:[{regex:"TegraNote-P1640",model:"Tegra Note P1640"},{regex:"(SHIELD Tablet K1|Tegra Note 7)(?: Build|[;)])",model:"$1"},{regex:"SHIELD Android TV",model:"SHIELD Android TV",device:"tv"},{regex:"NVIDIA_SHIELD_PRO_2019",model:"SHIELD TV Pro",device:"tv"},{regex:"NVIDIA Shield",model:"SHIELD TV",device:"tv"}]},O2={regex:"Xda|(?<!FBCR/)O2[ \\-]|COCOON",device:"smartphone",models:[{regex:"(Xda[ _][a-z0-9_]+)",model:"$1"},{regex:"(COCOON)",model:"$1"},{regex:"O2 ([a-z0-9 ]+)",model:"$1"},{regex:"O2-([a-z0-9]+)",model:"$1"}]},Odys={regex:"ODYS[ _-]|IEOS[_ ]([^/;]+)|NOON(?:_PRO)? Build|SPACE10_(?:PLUS|PRO)_3G|THOR_?10|TAO_X10|RAPID_?(?:10|7)_?LTE|MAVEN_?10_|CONNECT[78]|ELEMENT10_PLUS_3G|XELIO[_0-9P]|ADM816HC|ADM8000KP|NEO6_LTE|EOS10|AEON|FALCON_10_PLUS_3G|FUSION|THANOS_10|MAVEN_X10_HD(?:_LTE)?|JUNIOR_8_PRO|JuniorT8Pro|(?:NOVA|PYRO)_X?7_PLUS_3G|UNO_X8|SLADE_X55|XELIO_PRO_10_LTE|NOTOSplus3G",device:"tablet",models:[{regex:"XELIO[_ ]A10",model:"Xelio A10"},{regex:"XELIOPHONETAB3",model:"Xelio Phonetab 3"},{regex:"THANOS_10",model:"Thanos 10"},{regex:"XELIO_NEXT_10_PLUS_3G",model:"Xelio Next 10 Plus 3G"},{regex:"XELIO_PHONE_TAB7_3G",model:"Xelio Phonetab 7 3G"},{regex:"XELIO10EXTREME",model:"Xelio 10 Xtreme"},{regex:"XELIO10_PLUS_3G",model:"Xelio 10 Plus 3G"},{regex:"XELIO10_HD_PLUS_3G",model:"Xelio 10 HD Plus 3G"},{regex:"XELIO_10_HD",model:"Xelio 10 HD"},{regex:"XELIO_PRO_10_LTE",model:"Xelio Pro 10 LTE"},{regex:"ELEMENT10_PLUS_3G",model:"Element 10 Plus 3G"},{regex:"CONNECT8PLUS",model:"Connect 8 Plus"},{regex:"CONNECT7PRO",model:"Connect 7 Pro"},{regex:"MAVEN_X10_HD_LTE",model:"Maven X10 HD LTE"},{regex:"MAVEN_X10_HD",model:"Maven X10 HD"},{regex:"MAVEN_?10_PRO_PLUS_3G",model:"Maven 10 Pro Plus 3G"},{regex:"MAVEN_?10_?PLUS",model:"Maven 10 Plus"},{regex:"MAVEN_?10_?PRO",model:"Maven 10 Pro"},{regex:"MAVEN_?10_?HD",model:"Maven 10 HD"},{regex:"RAPID_?7_?LTE",model:"Rapid 7 LTE"},{regex:"RAPID_?10_?LTE",model:"Rapid 10 LTE"},{regex:"TAO_X10",model:"Tao X10"},{regex:"SPACE10_PLUS_3G",model:"Space 10 Plus 3G"},{regex:"SPACE10_PRO_3G",model:"Space 10 Pro 3G"},{regex:"THOR_?10 Build",model:"Thor 10"},{regex:"JuniorT8Pro",model:"Junior T8 Pro"},{regex:"JUNIOR_8_PRO",model:"Junior 8 Pro"},{regex:"ADM816HC",model:"Neo X"},{regex:"EOS10",model:"EOS 10"},{regex:"AEON",model:"Aeon"},{regex:"FALCON_10_PLUS_3G",model:"Falcon 10 Plus 3G"},{regex:"FUSION",model:"Fusion 7"},{regex:"UNO_X8",model:"Uno X8"},{regex:"ADM8000KP",model:"Titan"},{regex:"PYRO_7_PLUS_3G",model:"Pyro 7 Plus 3G"},{regex:"NOVA_X7_PLUS_3G",model:"Nova X7 Plus 3G"},{regex:"ODYS_NOVA_X7",model:"Nova X7"},{regex:"THOR_?10_PLUS_3G",model:"Thor 10 Plus 3G"},{regex:"NOTOSplus3G",model:"Notos Plus 3G"},{regex:"NEO6[_ ]LTE",model:"Neo 6 LTE",device:"smartphone"},{regex:"SLADE_X55",model:"Slade X55",device:"smartphone"},{regex:"IEOS[ _]([^/;]+) Build",model:"Ieos $1"},{regex:"(?:ODYS[ _-])?NOON Build",model:"Noon"},{regex:"(?:ODYS[ _-])?NOON_PRO Build",model:"Noon Pro"},{regex:"Odys[ _-]([^/;]+) Build",model:"$1"}]},Obi={regex:"Obi[ _-]|(SJ1\\.5|SJ2\\.6|S400|S452\\+|S451|S453|S501|S502|S503\\+?|S507|S520|S550|S551|falcon)[ _]",device:"smartphone",models:[{regex:"SJ2\\.6",model:"SJ2.6"},{regex:"SJ1\\.5",model:"SJ1.5"},{regex:"(?:Obi_)?S400",model:"Skipper"},{regex:"(?:Obi_)?S451|falcon",model:"Flacon"},{regex:"(?:Obi_)?S452\\+",model:"Python"},{regex:"(?:Obi_)?S453",model:"Fox"},{regex:"(?:Obi_)?S501",model:"Wolverine"},{regex:"(?:Obi_)?S502",model:"Leopard"},{regex:"(?:Obi_)?S503\\+",model:"Boa Plus"},{regex:"(?:Obi_)?S503",model:"Boa"},{regex:"(?:Obi_)?S507",model:"Pelican"},{regex:"(?:Obi_)?S520",model:"Octopus"},{regex:"(?:Obi_)?S550",model:"Crane"},{regex:"(?:Obi_)?S551",model:"Hornbill"},{regex:"(?:Obi_)?S454",model:"Alligator"},{regex:"Obi[ _-]([^;/]+) Build",model:"$1"},{regex:"Obi[ _-]([^;/)]+)(?:[;/)]|$)",model:"$1"}]},Okapia={regex:"Signature (?:L|Pro|Touch)",device:"smartphone",models:[{regex:"Signature (L|Pro|Touch)",model:"Signature $1"}]},Onda={regex:"Onda|(?:(?:V820w|V891[w]?|V919(?: 3G)? Air)[ _-]DualOS|(?:V919 4G Air|V989 Air|V972) Core[48]|T2101L2B1C| V10 4G|OBOOK (?:20 SE|20 PLUS DUALOS)|OBOOK10 SE|V919 Air CH DualOS)(?:[);/ ]|$)",device:"smartphone",models:[{regex:"ONDA[ _]MID",model:"MID",device:"tablet"},{regex:"V820w[ _-]DualOS",model:"V820W Dual OS",device:"tablet"},{regex:"V891W[ _-]DualOS",model:"V891W Dual OS",device:"tablet"},{regex:"V891[ _-]DualOS",model:"V891 Dual OS",device:"tablet"},{regex:"V919 3G Air[ _-]DualOS",model:"V919 3G Air Dual OS",device:"tablet"},{regex:"V919 Air[ _-]DualOS",model:"V919 Air Dual OS",device:"tablet"},{regex:"V919 Air CH DualOS",model:"V919 Air CH Dual OS",device:"tablet"},{regex:"V919 4G Air Core8",model:"V919 4G Air Core 8",device:"tablet"},{regex:"V972 Core4",model:"V919 Core 4",device:"tablet"},{regex:"V989 Air Core8",model:"V989 Air Core 8",device:"tablet"},{regex:"T2101L2B1C|OBOOK 20 PLUS DUALOS",model:"oBook 20 Plus Dual OS",device:"tablet"},{regex:" V10 4G(?:[);/ ]|$)",model:'V10 10.1" 4G',device:"tablet"},{regex:"OBOOK 20 SE(?:[);/ ]|$)",model:"oBook 20 SE",device:"tablet"},{regex:"OBOOK10 SE(?:[);/ ]|$)",model:"oBook 10 SE",device:"tablet"},{regex:"([a-z0-9]+)[ _]Onda",model:"$1"},{regex:"Onda ([a-z0-9]+)",model:"$1"}]},OnePlus={regex:"(?:du_)?ONEPLUS|(?:A0001|A200[135]|AC200[13]|A300[03]|A3010|A5000|A600[03]|A601[03]|BE201[1235]|BE2025|BE202[89]|E100[135]|GM191[03517]|GM190[0135]|GM192[05]|HD191[013]|HD190[01357]|HD1925|IN201[013579]|IN202[0135]|KB200[01357]|LE2117|LE212[03])(?: Build|\\))",device:"smartphone",models:[{regex:"AC200[13](?:[);/ ]|$)",model:"Nord 5G"},{regex:"BE2012(?:[);/ ]|$)",model:"Clover"},{regex:"BE201[135](?:[);/ ]|$)",model:"Nord N100"},{regex:"BE2025(?:[);/ ]|$)",model:"Nord N10"},{regex:"BE2029(?:[);/ ]|$)",model:"Nord N10 5G"},{regex:"BE2028(?:[);/ ]|$)",model:"Nord N10 Lite"},{regex:"IN202[0135](?:[);/ ]|$)",model:"8 Pro"},{regex:"KB2000(?:[);/ ]|$)",model:"8T"},{regex:"IN201[01357](?:[);/ ]|$)",model:"8"},{regex:"IN2019(?:[);/ ]|$)",model:"8 5G UW"},{regex:"LE2117(?:[);/ ]|$)",model:"9"},{regex:"LE212[03](?:[);/ ]|$)",model:"9 Pro"},{regex:"(?:GM191[01357]|OnePlus 7 Pro)(?:[);/ ]|$)",model:"7 Pro"},{regex:"GM190[0135](?:[);/ ]|$)",model:"7"},{regex:"HD190[01357](?:[);/ ]|$)",model:"7T"},{regex:"(?:HD191[013]|OnePlus 7T Pro)(?:[);/ ]|$)",model:"7T Pro"},{regex:"(?:HD1925|GM192[05])(?:[);/ ]|$)",model:"7T Pro 5G"},{regex:"KB200[1357](?:[);/ ]|$)",model:"8T"},{regex:"A0001(?:[);/ ]|$)",model:"One"},{regex:"A200[135]|OnePlus2",model:"2"},{regex:"E100[135](?:[);/ ]|$)",model:"X"},{regex:"A3010|OnePlus3T",model:"3T"},{regex:"A300[03]|OnePlus3",model:"3"},{regex:"A5010|OnePlus[ ]?5T",model:"5T"},{regex:"A5000|OnePlus5",model:"5"},{regex:"A600[03]|OnePlus6",model:"6"},{regex:"A601[03](?:[);/ ]|$)",model:"6T"},{regex:"(?:du_)?ONEPLUS ?([^;/]+) Build",model:"$1"}]},Realme={regex:"Realme[ _]|(?:RMX(?:19(03|4[1235]|19|9[23]|2[157]|[01379]1|73)|20(?:[025-7]1|[037]2|2[57]|63|7[56]|8[156]|[2-5]0)|21(?:0[13]|17|[12]1|4[24]|5[15]|6[13]|7[60]|8[059]|9[35])|2200|18(0[1579]|11|3[13]|2[157]|[45]1|45)|3201|30[38]1|3063)|(?:OPPO[ _]?)?CPH1861)(?:[);/ ]|$)",device:"smartphone",models:[{regex:"(?:OPPO[ _]?)?CPH1861(?:[);/ ]|$)",model:"1"},{regex:"RMX180[59]",model:"2"},{regex:"RMX180[17]",model:"2 Pro"},{regex:"RMX(1833|182[15])",model:"3"},{regex:"RMX1827",model:"3i"},{regex:"RMX1851",model:"3 Pro"},{regex:"RMX190[13]|Realme X(?:[);/ ]|$)",model:"X"},{regex:"RMX199[12]",model:"X2"},{regex:"RMX1993",model:"X2 Dual"},{regex:"RMX1931|Realme X2 Pro(?:[);/ ]|$)",model:"X2 Pro"},{regex:"RMX2117",model:"Q2 5G"},{regex:"RMX2176(?:[);/ ]|$)",model:"X7 5G"},{regex:"RMX2121(?:[);/ ]|$)",model:"X7 Pro 5G"},{regex:"RMX1921|Realme XT(?:[);/ ]|$)",model:"XT"},{regex:"RMX19(1[19]|27)",model:"5"},{regex:"RMX197[13]",model:"5 Pro"},{regex:"RMX203[02]",model:"5i"},{regex:"RMX2001",model:"6"},{regex:"RMX2040",model:"6I"},{regex:"RMX2002",model:"6S"},{regex:"RMX206[13](?:[);/ ]|$)",model:"6 Pro"},{regex:"RMX215[15]",model:"7"},{regex:"RMX2103",model:"7I"},{regex:"RMX2170",model:"7 Pro"},{regex:"RMX3081",model:"8 Pro"},{regex:"RMX1925(?:[);/ ]|$)",model:"5S"},{regex:"RMX1811(?:[);/ ]|$)",model:"C1"},{regex:"RMX194[1235](?:[);/ ]|$)",model:"C2"},{regex:"RMX202[107](?:[);/ ]|$)",model:"C3"},{regex:"RMX2185(?:[);/ ]|$)",model:"C11"},{regex:"RMX2189(?:[);/ ]|$)",model:"C12"},{regex:"RMX2180(?:[);/ ]|$)",model:"C15"},{regex:"RMX2195(?:[);/ ]|$)",model:"C15 Qualcomm Edition"},{regex:"RMX2101(?:[);/ ]|$)",model:"C17"},{regex:"RMX3063(?:[);/ ]|$)",model:"C20"},{regex:"RMX3031(?:[);/ ]|$)",model:"GT Neo"},{regex:"RMX216[13](?:[);/ ]|$)",model:"Narzo 20 Pro"},{regex:"RMX2193(?:[);/ ]|$)",model:"Narzo 20"},{regex:"RMX2050(?:[);/ ]|$)",model:"Narzo 20A"},{regex:"RMX1831(?:[);/ ]|$)",model:"U1"},{regex:"RMX(?:20(?:51|[2]5)|2144)(?:[);/ ]|$)",model:"X50 5G"},{regex:"RMX2071(?:[);/ ]|$)",model:"X50 Pro"},{regex:"RMX207[56](?:[);/ ]|$)",model:"X50 Pro 5G"},{regex:"RMX2072(?:[);/ ]|$)",model:"X50 Pro Player"},{regex:"RMX(2142|2081)(?:[);/ ]|$)",model:"X3"},{regex:"RMX208[56](?:[);/ ]|$)",model:"X3 Super Zoom"},{regex:"RMX2111",model:"V5 5G"},{regex:"RMX2200",model:"V3 5G"},{regex:"RMX3201",model:"C21"},{regex:"Realme[ _]([1-9])[ _]Pro(?:[);/ ]|$)",model:"$1 Pro"}]},OPPO={regex:"(?:OB-)?OPPO[ _]?([a-z0-9]+)|N1T|R8001|OPG01|A00[12]OP|(?:X90[07][0679]|U70[57]T?|X909T?|R(?:10[01]1|2001|201[07]|6007|7005|7007|80[13579]|81[13579]|82[01379]|83[013]|800[067]|8015|810[679]|811[13]|820[057])[KLSTW]?|N520[79]|N5117|A33f|A33fw|A37fw?|PAAM00|PAAT00|PAC[TM]00)(?:[);/ ]|$)|R7kf|R7plusf|R7Plusm|A1601|CPH[0-9]{4}|CPH19(69|79|23|1[179])|PB(A[TM]00|CT10|BT30|CM[13]0|[FD]M00)|P(DAM10|ADM00|AF[TM]00|ADT00|AHM00|BBM[03]0|BBT00|BDT00|BFT00|[CB]E[MT]00|CA[MT]00|C[CDG]M00|CA[MT]10|[CD]PM00|CRM00|CDT00|CD[TM]10|CHM[013]0|CKM[08]0|CLM[15]0|DEM[13]0|DHM00|DK[TM]00|DPT00|DB[TM]00|DCM00|[CD]NM00|DVM00|DY[TM]20|DNT00|EA[TM]00)|PDSM00",device:"smartphone",models:[{regex:"PCHM10(?:[);/ ]|$)",model:"A11"},{regex:"(?:CPH2083|CPH2077)(?:[);/ ]|$)",model:"A12"},{regex:"PCHM00(?:[);/ ]|$)",model:"A11x"},{regex:"CPH1923(?:[);/ ]|$)",model:"A1K"},{regex:"(?:OPPO[ _]?)?(CPH1837|PAD[TM]00)(?:[);/ ]|$)",model:"A3"},{regex:"(?:OPPO[ _]?)?A37f(w)(?:[);/ ]|$)",model:"A37f$1"},{regex:"A37f(?:[);/ ]|$)",model:"A37f"},{regex:"(?:OPPO[ _]?)?CPH1605(?:[);/ ]|$)",model:"A39"},{regex:"CPH20(?:81|73|31|15)(?:[);/ ]|$)",model:"A31"},{regex:"(?:OPPO[ _]?)?(?:CPH18(?:0[35]|53)|PBBM30)(?:[);/ ]|$)",model:"A3s"},{regex:"(?:OPPO[ _]?)?(?:CPH1809|PBA[TM]00|PBBT30)(?:[);/ ]|$)",model:"A5"},{regex:"CPH19(?:3[13]|43)(?:[);/ ]|$)",model:"A5 (2020)"},{regex:"PDVM00(?:[);/ ]|$)",model:"A32"},{regex:"(?:PDAM10|CPH2069|CPH2061)(?:[);/ ]|$)",model:"A52"},{regex:"CPH2127(?:[);/ ]|$)",model:"A53"},{regex:"(?:OPPO[ _]?)?CPH170[15](?:[);/ ]|$)",model:"A57"},{regex:"CPH19(?:09|1[02])(?:[);/ ]|$)",model:"A5S"},{regex:"(?:OPPO[ _]?)?(?:CPH190[15]|PBF[TM]00)(?:[);/ ]|$)",model:"A7"},{regex:"(?:OPPO[ _]?)?(CPH1801|CPH1717)(?:[);/ ]|$)",model:"A71"},{regex:"(?:OPPO[ _]?)?(?:PDY[TM]20|CPH2067)(?:[);/ ]|$)",model:"A72"},{regex:"(?:OPPO[ _]?)?CPH1715(?:[);/ ]|$)",model:"A77"},{regex:"PCD[TM]00(?:[);/ ]|$)",model:"A7n"},{regex:"(PBBT00|PBBM00)(?:[);/ ]|$)",model:"A7x"},{regex:"(?:OPPO[ _]?)?(?:PDBM00)(?:[);/ ]|$)",model:"A8"},{regex:"(?:OPPO[ _]?)?CPH1729(?:[);/ ]|$)",model:"A83"},{regex:"(?:OPPO[ _]?)?CPH1827(?:[);/ ]|$)",model:"A83 (2018)"},{regex:"PCA[TM]10(?:[);/ ]|$)",model:"A9"},{regex:"(CPH1937|CPH1941|PCHM30)(?:[);/ ]|$)",model:"A9 (2020)"},{regex:"(?:OPPO[ _]?)?CPH1938(?:[);/ ]|$)",model:"A9 (EN)"},{regex:"(?:PCPM00|CPH20[02]1)(?:[);/ ]|$)",model:"A91"},{regex:"CPH2059(?:[);/ ]|$)",model:"A92"},{regex:"PDKT00(?:[);/ ]|$)",model:"A92s"},{regex:"PDKM00(?:[);/ ]|$)",model:"A93s"},{regex:"PCE[TM]00(?:[);/ ]|$)",model:"A9x"},{regex:"(?:OPPO[ _]?)?CPH1851(?:[);/ ]|$)",model:"AX5"},{regex:"CPH1920(?:[);/ ]|$)",model:"AX5s"},{regex:"(?:OPPO[ _]?)?CPH1903(?:[);/ ]|$)",model:"AX7"},{regex:"(?:OPPO[ _]?)?X9009(?:[);/ ]|$)",model:"F1 Plus"},{regex:"CPH191[135](?:[);/ ]|$)",model:"F11"},{regex:"CPH19(?:69|87)(?:[);/ ]|$)",model:"F11 Pro"},{regex:"(?:OPPO[ _]?)?(?:CPH2119)(?:[);/ ]|$)",model:"F17 Pro"},{regex:"(?:OPPO[ _]?)?A1601(?:[);/ ]|$)",model:"F1s"},{regex:"(?:OPPO[ _]?)?CPH1609(?:[);/ ]|$)",model:"F3"},{regex:"(?:OPPO[ _]?)?CPH1613(?:[);/ ]|$)",model:"F3 Plus"},{regex:"(?:OPPO[ _]?)?CPH172[37](?:[);/ ]|$)",model:"F5"},{regex:"(?:OPPO[ _]?)?CPH1725(?:[);/ ]|$)",model:"F5 Youth"},{regex:"(?:OPPO[ _]?)?CPH(1859|18(?:19|21))(?:[);/ ]|$)",model:"F7"},{regex:"(?:OPPO[ _]?)?(?:CPH1825|CPH1881)(?:[);/ ]|$)",model:"F9"},{regex:"(?:OPPO[ _]?)?CPH1823(?:[);/ ]|$)",model:"F9 Pro"},{regex:"(?:OPPO[ _]?)?X909T?(?:[);/ ]|$)",model:"Find 5"},{regex:"(?:OPPO[ _]?)?R827T?(?:[);/ ]|$)",model:"Find 5 Mini"},{regex:"(?:OPPO[ _]?)?X907[067](?:[);/ ]|$)",model:"Find 7"},{regex:"(?:OPPO[ _]?)?X900[067](?:[);/ ]|$)",model:"Find 7a"},{regex:"(?:OPPO[ _]?)?R815[TW]?(?:[);/ ]|$)",model:"Find Clover"},{regex:"(?:OPPO[ _]?)?R8015(?:[);/ ]|$)",model:"Find Guitar"},{regex:"(?:OPPO[ _]?)?R8111(?:[);/ ]|$)",model:"Find Melody"},{regex:"(?:OPPO[ _]?)?R821T?(?:[);/ ]|$)",model:"Find Muse"},{regex:"(?:OPPO[ _]?)?U707T?(?:[);/ ]|$)",model:"Find Way S"},{regex:"(?:OPPO[ _]?)?U705T(?:[);/ ]|$)",model:"Ulike 2"},{regex:"(?:OPPO[ _]?)?(?:CPH187[15]|PAF[MT]00)(?:[);/ ]|$)",model:"Find X"},{regex:"(?:OPPO[ _]?)?(?:PAHM00)(?:[);/ ]|$)",model:"Find X Lamborghini"},{regex:"(?:OPPO[ _]?)?(?:PDEM10|CPH2023)(?:[);/ ]|$)",model:"Find X2"},{regex:"(?:OPPO[ _]?)?CPH2005(?:[);/ ]|$)",model:"Find X2 Lite"},{regex:"(?:OPPO[ _]?)?(?:PDEM30|OPG01|CPH2025)(?:[);/ ]|$)",model:"Find X2 Pro"},{regex:"(?:OPPO[ _]?)?R1011 Build",model:"Joy Plus"},{regex:"(?:OPPO[ _]?)?(PBC(?:M30|T10))(?:[);/ ]|$)",model:"K1"},{regex:"CPH1955(?:[);/ ]|$)",model:"K3"},{regex:"(?:OPPO[ _]?)?(PCNM00)(?:[);/ ]|$)",model:"K5"},{regex:"(?:OPPO[ _]?)?(PCLM50)(?:[);/ ]|$)",model:"K7"},{regex:"(?:OPPO[ _]?)?N5117(?:[);/ ]|$)",model:"N1 Mini"},{regex:"(?:OPPO[ _]?)?N520[79](?:[);/ ]|$)",model:"N3"},{regex:"(?:OPPO[ _]?)?R831T?(?:[);/ ]|$)",model:"Neo"},{regex:"(?:OPPO[ _]?)?R831K(?:[);/ ]|$)",model:"Neo 3"},{regex:"(?:OPPO[ _]?)?R831[SL](?:[);/ ]|$)",model:"Neo 5"},{regex:"(?:OPPO[ _]?)?A33f(?:[);/ ]|$)",model:"Neo 7"},{regex:"(?:OPPO[ _]?)?A33fw(?:[);/ ]|$)",model:"Neo 7s"},{regex:"(?:OPPO[ _]?)?R8113(?:[);/ ]|$)",model:"Piano"},{regex:"(?:OPPO[ _]?)?CPH1707(?:[);/ ]|$)",model:"R11"},{regex:"R8001(?:[);/ ]|$)",model:"R1K"},{regex:"(?:OPPO[ _]?)?CPH1719(?:[);/ ]|$)",model:"R11s"},{regex:"(?:OPPO[ _]?)?CPH1721(?:[);/ ]|$)",model:"R11s Plus"},{regex:"(?:OPPO[ _]?)?(?:CPH1835|PAC[TM]00|PAAM00)(?:[);/ ]|$)",model:"R15"},{regex:"(?:OPPO[ _]?)?(?:CPH183[13]|PAAT00)(?:[);/ ]|$)",model:"R15 Pro"},{regex:"PBCM10(?:[);/ ]|$)",model:"R15x"},{regex:"(?:OPPO[ _]?)?(?:CPH1879|PBE[MT]00)(?:[);/ ]|$)",model:"R17"},{regex:"(?:OPPO[ _]?)?(?:CPH1893)(?:[);/ ]|$)",model:"R17 Neo"},{regex:"(?:OPPO[ _]?)?(?:CPH1877|PBD[MT]00)(?:[);/ ]|$)",model:"R17 Pro"},{regex:"(?:OPPO[ _]?)?R8006(?:[);/ ]|$)",model:"R1L"},{regex:"(?:OPPO[ _]?)?R800[07](?:[);/ ]|$)",model:"R1S"},{regex:"(?:OPPO[ _]?)?R810[679](?:[);/ ]|$)",model:"R5"},{regex:"(?:OPPO[ _]?)?R7kf(?:[);/ ]|$)",model:"R7 Lite"},{regex:"(?:OPPO[ _]?)?R7Plusm(?:[);/ ]|$)",model:"R7 Plus"},{regex:"(?:OPPO[ _]?)?R7Plusf(?:[);/ ]|$)",model:"R7 Plus F"},{regex:"(?:OPPO[ _]?)?X9079(?:[);/ ]|$)",model:"R9 Plus"},{regex:"(?:OPPO[ _]?)?CPH1607(?:[);/ ]|$)",model:"R9s"},{regex:"(?:OPPO[ _]?)?(?:CPH1611|R9s Plus)(?:[);/ ]|$)",model:"R9s Plus"},{regex:"(?:CPH1917|PCA[MT]00)(?:[);/ ]|$)",model:"Reno"},{regex:"CPH1983(?:[);/ ]|$)",model:"Reno A"},{regex:"PCCM00(?:[);/ ]|$)",model:"Reno 10X"},{regex:"CPH1919(?:[);/ ]|$)",model:"Reno 10X Zoom"},{regex:"(?:PCKM00|CPH1907)(?:[);/ ]|$)",model:"Reno 2"},{regex:"CPH1989(?:[);/ ]|$)",model:"Reno 2F"},{regex:"(?:PCKM80|CPH1945|CPH1951)(?:[);/ ]|$)",model:"Reno 2Z"},{regex:"CPH2043(?:[);/ ]|$)",model:"Reno 3"},{regex:"(?:CPH2013|A002OP)(?:[);/ ]|$)",model:"Reno 3A"},{regex:"(?:PDCM00|A001OP)(?:[);/ ]|$)",model:"Reno 3 5G"},{regex:"(?:PCRM00|CPH203[57]|CPH2009)",model:"Reno 3 Pro"},{regex:"CPH2113(?:[);/ ]|$)",model:"Reno 4 4G"},{regex:"CPH2125(?:[);/ ]|$)",model:"Reno 4 Lite"},{regex:"CPH2109(?:[);/ ]|$)",model:"Reno 4 Pro 4G"},{regex:"PDP[TM]00(?:[);/ ]|$)",model:"Reno 4 5G"},{regex:"PEA[TM]00(?:[);/ ]|$)",model:"Reno 4 SE 5G "},{regex:"PDN[TM]00(?:[);/ ]|$)",model:"Reno 4 Pro 5G"},{regex:"PDSM00(?:[);/ ]|$)",model:"Reno 5 Pro 5G"},{regex:"CPH192[15]",model:"Reno 5G"},{regex:"PCLM10(?:[);/ ]|$)",model:"Reno Ace"},{regex:"PDHM00(?:[);/ ]|$)",model:"Reno Ace 2"},{regex:"PCGM00(?:[);/ ]|$)",model:"Reno K3"},{regex:"(?:OPPO[ _]?)?(?:CPH1979|PCD[TM]10)(?:[);/ ]|$)",model:"Reno Z"},{regex:"N1T?(?:[);/ ]|$)",model:"N1T",device:"phablet"},{regex:"R([0-9]{3,4}[KSTW]?)(?:[);/ ]|$)",model:"R$1"},{regex:"(CPH[0-9]{4})",model:"$1"},{regex:"(?:OB-)?OPPO[ _]?((?!Browser)[a-z0-9]+)",model:"$1"}]},Opsson={regex:"Opsson|IUSAI",device:"smartphone",models:[{regex:"IUSAI[ _]([^/;]+) Build",model:"Iusai $1"},{regex:"IUSAI[ _]([^/;\\)]+)[/;\\)]",model:"Iusai $1"},{regex:"Opsson[ _]([^/;]+) Build",model:"$1"},{regex:"(?:Opsson-)?Opsson[ -_]([^/;]+)/",model:"$1"}]},Orange={regex:"SPV[ \\-]?([a-z0-9]+)|(?<!FBCR/)Orange[ _-](?!Tahiti-LS\\))([^/;]+)( Build|\\))(?<!Tahiti-LS\\))|SC/IHD92|Nura 2|FunTab ([^/;]+) Build|Orange Mahpee",device:"smartphone",models:[{regex:"SC/IHD92",model:"Livebox Play",device:"tv"},{regex:"Nura 2",model:"Nura 2"},{regex:"Sego",model:"Sego",device:"tablet"},{regex:"FunTab ([^/;]+) Build",model:"FunTab $1",device:"tablet"},{regex:"Orange[ _-](Rise)(3[12]|5[12])(?:[);/ ]|$)",model:"$1 $2"},{regex:"Orange[ _-](Dive)72(?:[);/ ]|$)",model:"$1 72"},{regex:"Orange[ _-](Daytona|Dive (30|7[13])|Dublin|Fova|Gova|Hi 4G|Hiro|Kivo|Monte Carlo|Neva 80|Neva play|Nura|Reyo|Rise[_ ](3[034]|40|5[345])|Rono|Roya|San Francisco|Tactile internet 2|Tado|Yomi|Yumo|Zali|Mahpee)(?:[);/ ]|$)",model:"$1"},{regex:"SPV[ \\-]?([a-z0-9]+)",model:"SPV $1"}]},Oukitel={regex:"OUKITEL|(?:(?:C15|C16|K10000|K[46]000)(?:[ _]Pro)|K4000Pro|U16 Max|U7 Max|U7 Plus|U11[_ ]Plus|U20_Plus|OK6000 Plus|WP5000|WP[58] Pro|K[46]000[ _](?:Plus|Lite)|Y4800|K10000|K[4-8]000| WP[5-7])(?:[);/ ]|$)",device:"smartphone",models:[{regex:"(C15|C16|K10000|K[46]000|WP[258]|U15)[ _]?Pro(?:[);/ ]|$)",model:"$1 Pro"},{regex:"OUKITEL K([37])(?:[);/ ]|$)",model:"K$1"},{regex:"(K10000|U16|U7)[ _]Max(?:[);/ ]|$)",model:"$1 Max"},{regex:"(U20|K[46]000|U7|U11|OK6000)[_ ]?Plus(?:[);/ ]|$)",model:"$1 Plus"},{regex:"(K4000)[_ ]Lite(?:[);/ ]|$)",model:"$1 Lite"},{regex:"(Y4800|K10000|K[4-8]000|WP2|WP5000|[CU]2|U10)(?:[);/ ]|$)",model:"$1"},{regex:" (WP[5-7])(?:[);/ ]|$)",model:"$1"},{regex:"OUKITEL; ([^;]+);",model:"$1"}]},OKWU={regex:"OKWU SIGMA(?:[);/ ]|$)",device:"smartphone",model:"Sigma"},Ouki={regex:"OUKI|OK[AU][0-9]+[a-z]* Build",device:"smartphone",models:[{regex:"OUKI[ _-]?([^;/]+) Build",model:"$1"},{regex:"([^;/)]+) Build/OUKI",model:"$1"},{regex:"OUKI[ _-]?([^;/)]+)(?:[;/)]|$)",model:"$1"},{regex:"(OK[AU][0-9]+[a-z]*) Build",model:"$1"}]},Overmax={regex:"OV-[a-z]+(?:[^;(/]*)[();/ ]|Qualcore 10(?:10|27)|Vertis 5021 Aim|OV1027[34]G",device:"tablet",models:[{regex:"OV-V10",model:"Vertis Yard",device:"smartphone"},{regex:"Vertis 5021 Aim",model:"Vertis 5021 Aim",device:"smartphone"},{regex:"OV-Vertis[ _-]([^;/]+) Build",model:"Vertis $1",device:"smartphone"},{regex:"Qualcore 1010",model:"Qualcore 1010",device:"tablet"},{regex:"Qualcore 1027 4G",model:"Qualcore 1027 4G",device:"tablet"},{regex:"OV1027([34])G",model:"Qualcore 1027 $1G",device:"tablet"},{regex:"(OV-[a-z]+(?:[^;(/]*))(?<!Build)[();/ ]",model:"$1"}]},Oysters={regex:"Oysters|T84ERI[ _]3G|T72HM(s_)?3G|T102MS_3G|T102ER3G|(T74HMi|T84Bi)[_ ]4G|T74MR4G|T84Ni[_ ][34]G|Pacific[ ]?800i|T104B_[34]G|IndianV|T72HA_3G|T74D_3G|T74N_3G|T74SC_3G|T74Mai_3G|T104MBi_3G|T104SCi_3G|T104ER4G|Atlantic4G|AntarcticE|T7V 3G",device:"tablet",models:[{regex:"Pacific[ ]?800i",device:"smartphone",model:"Pacific 800i"},{regex:"Atlantic4G",device:"smartphone",model:"Atlantic 4G"},{regex:"AntarcticE",device:"smartphone",model:"Antarctic E"},{regex:"IndianV",device:"smartphone",model:"Indian V"},{regex:"Oysters[_ ]PacificV",device:"smartphone",model:"Pacific V"},{regex:"Oysters ((?:Arctic|Indian|Atlantic|Pacific)[^/;]+) Build",device:"smartphone",model:"$1"},{regex:"(T84ERI[ _]3G|T72HM(s_)?3G|(?:(T74HMi|T84Bi)[_ ]4G)|T84Ni[_ ][34]G)",model:"$1"},{regex:"(T74MR|T102MS|T104B|T74SC|T74[DN]|T72HA|T102ER|T104SCi|T104MBi|T104ER|T7V)[ _]?([34]G)",model:"$1 $2"},{regex:"T74Mai_3G",model:"T74MAi 3G"},{regex:"Oysters ([^/;]+)( Build|\\))",model:"$1"}]},Panacom={regex:"T-i708D",device:"smartphone",models:[{regex:"T-i708D",device:"tablet",model:"T-i708D"}]},Panasonic$2={regex:"Panasonic|PANATV[0-9]+|Viera/|(?:P902i|P-0[28]D|FZ-B2D|FZ-[NX]1|DMC-CM1|P-01J|P-03E)(?:[);/ ]|$)|Eluga[ _]|P55 Novo 4G",device:"smartphone",models:[{regex:"P-01J(?:[);/ ]|$)",model:"P-smart Keitai"},{regex:"P-03E(?:[);/ ]|$)",model:"Eluga P"},{regex:"Eluga[ _-]([^;/]+) Build",model:"Eluga $1"},{regex:"Eluga[ _-]([^);/]+)[;/)]",model:"Eluga $1"},{regex:"(DMC-CM1)",model:"Lumix $1",device:"camera"},{regex:"P-02D(?:[);/ ]|$)",model:"Lumix Phone P-02D"},{regex:"(FZ-[XN]1)(?:[);/ ]|$)",model:"Toughpad $1"},{regex:"FZ-B2D(?:[);/ ]|$)",model:"Toughpad FZ-B2D",device:"tablet"},{regex:"P55 Novo 4G",model:"P55 Novo 4G"},{regex:"P902i(?:[);/ ]|$)",device:"feature phone",model:"P902i"},{regex:"Panasonic MIL DLNA",device:"tv",model:"Viera Cast"},{regex:"PANATV[0-9]+|Viera/",device:"tv",model:"Smart TV"},{regex:"(43D1200|(?:32|43)D1270|32D1280)",device:"tv",model:"$1"},{regex:"Panasonic[ _\\-]?([a-z0-9]+)",model:"$1"},{regex:"portalmmm/2.0 (P[a-z0-9]+)",model:"$1"},{regex:"P-08D(?:[);/ ]|$)",model:'Eluga Live 10.1"',device:"tablet"}]},PCBOX={regex:"Art-PCB-V116|Bee-PCB-V216|Clap-PCB-I316|PCB-T(103|715)",device:"smartphone",models:[{regex:"Art-PCB-V116",model:"Art"},{regex:"Bee-PCB-V216",model:"Bee"},{regex:"Clap-PCB-I316",model:"Clap"},{regex:"PCB-T103",device:"tablet",model:"Curi Lite"},{regex:"PCB-T715",device:"tablet",model:"T715"}]},PCD={regex:"PH4001",device:"smartphone",models:[{regex:"PH4001",model:"PH4001"}]},ArmPhone={regex:"(TSD Octa A0520P|TSD Quadra A050[59]P)(?:[);/ ]|$)",device:"smartphone",model:"$1"},Pentagram={regex:"Pentagram|Quadra|Monster X5",device:"tablet",models:[{regex:"(?:PENTAGRAM[_ ])?EON[_ ]PRIX",model:"Eon Prix"},{regex:"Quadra 7(?: UltraSlim)?",model:"Quadra 7 UltraSlim"},{regex:"Monster X5?",model:"Monster X5",device:"smartphone"},{regex:"Quadra ?([^);/]*) Build",model:"Quadra $1"},{regex:"Pentagram ?TAB ?([^);/]*) Build",model:"Tab $1"},{regex:"Pentagram ?([^);/]*) Build",model:"$1",device:"smartphone"}]},TCL$1={regex:"TCL,|TCL[_ -][a-z0-9]+|(?:TCL[_ -][^;/]+ Build)|(?:TCLGalaG60(?:\\(9108A\\))?|A502DL|T78[02]H|5199I|7040N|5133A|5159[AJ]|5152D|T770H|T671H|T790Y|T766H_EEA|T766A|T799[BH]|Percee TV)(?:[);/ ]|$)",device:"smartphone",models:[{regex:"TCLGalaG60(?:\\(9108A\\))?(?:[);/ ]|$)",model:"Gala G60"},{regex:"5199I(?:[);/ ]|$)",model:"C9"},{regex:"5152D(?:[);/ ]|$)",model:"C5"},{regex:"5133A(?:[);/ ]|$)",model:"L5"},{regex:"T780H(?:[);/ ]|$)",model:"Plex"},{regex:"T782H(?:[);/ ]|$)",model:"10 Plus"},{regex:"T790Y(?:[);/ ]|$)",model:"10 5G"},{regex:"TCL[_ -]([^;/]+) Build",model:"$1"},{regex:"TCL[_ -]([a-z0-9]+)",model:"$1"},{regex:"(7040N)(?:[);/ ]|$)",model:"$1"},{regex:"A502DL(?:[);/ ]|$)",model:"LX"},{regex:"5159[AJ](?:[);/ ]|$)",model:"L9"},{regex:"T770H(?:[);/ ]|$)",model:"10L"},{regex:"T766[HA](?:_EEA)?(?:[);/ ]|$)",model:"10 SE"},{regex:"T671H(?:_EEA)?(?:[);/ ]|$)",model:"20 SE"},{regex:"T799[BH](?:[);/ ]|$)",model:"10 Pro"},{regex:"(Percee TV)(?:[);/ ]|$)",device:"tv",model:"$1"},{regex:"((?:43|55)S62FS|(?:43|50)P65US|U(?:43|60)P60|65P4USM|(?:40|49)S62|L32S6|55P610|50P8S|55S62|(?:43|50)P6US|55DP60)",device:"tv",model:"$1"}]},JVC$1={regex:"JVC[;,]|JVC Shell",device:"tv",models:[{regex:"JVC Shell [0-9A-Z]+",model:""},{regex:"JVC[;,](32D1290)",model:"$1"}]},phoneOne={regex:"phoneOne[ \\-]?([a-z0-9]+)",device:"smartphone",model:"$1"},Primepad={regex:"PD\\-(3127NC|3127) Build",device:"tablet",models:[{regex:"PD\\-3127NC Build",model:"PD-3127NC"},{regex:"PD\\-3127 Build",model:"PD-3127"}]},Pioneer={regex:"Pioneer|.*; R1 Build|dvr700pi|XDP-300R",device:"smartphone",models:[{regex:".*; R1 Build",model:"R1",device:"tablet"},{regex:"Pioneer[ _-]?([^;/]+) Build",model:"$1"},{regex:"Pioneer[ _-]?([^;/)]+)(?:[;/)]|$)",model:"$1"},{regex:"dvr700pi",model:'DVR700PI 7.0"',device:"tablet"},{regex:"(XDP-300R)",device:"portable media player",model:"$1"}]},Pixus={regex:"Pixus|(hiPower|Ride[_ ][34]G|Play[ _]Three[ _]v(?:[24].0|3.1))(?:[);/ ]|$)",device:"tablet",models:[{regex:"Ride[_ ]([34])G",model:"Ride $1G"},{regex:"Play[ _]Three[ _]v([24].0|3.1)",model:"Play Three v$1"},{regex:"Play Two",model:"Play Two"},{regex:"Play Five",model:"Play Five"},{regex:"hiPower",model:"hiPower"},{regex:"Pixus[ _]Sprint",model:"Sprint"},{regex:"Touch 7 3G",model:"Touch 7 3G"},{regex:"Pixus[ _]hiMax",model:'HiMax 9.6"'},{regex:"Pixus[ _]Blast",model:'Blast 10.1"'},{regex:"Pixus[ _]Joker",model:'Joker 10.1"'},{regex:"Pixus Blaze 10.1 3G",model:'Blaze 10.1" 3G'},{regex:"Raze",model:"Raze",device:"smartphone"},{regex:"Pixus_Jet",model:"Jet",device:"smartphone"},{regex:"pixus hit 2",model:"Hit 2",device:"smartphone"}]},PULID={regex:"PULID[ _]|F1[01357]\\+? Build",device:"smartphone",models:[{regex:"F(1[01357]\\+?) Build",model:"F$1"},{regex:"PULID[ _]([^;/]+) Build",model:"$1"},{regex:"PULID[ _]([a-z0-9_]+)\\)",model:"$1"}]},Pomp={regex:"POMP[ _-]",device:"smartphone",models:[{regex:"POMP[ _-]([^;/]+) Build",model:"$1"},{regex:"POMP[ _-]([^;/)]+)(?:[;/)]|$)",model:"$1"}]},PPTV={regex:"(KING 7S?)",device:"smartphone",model:"$1"},ProScan={regex:"PLT([^;/]+) Build|PLT(?:777[45]|9774|1074)G(?:[);/ ]|$)",device:"tablet",models:[{regex:"PLT([^;/]+) Build",model:"PLT$1"},{regex:"PLT(777[45]|9774|1074)G",model:"PLT$1G"}]},Readboy={regex:"Readboy[ _-]",device:"tablet",models:[{regex:"Readboy[ _-]([^;/)]+)(?: Build|[;)])",model:"$1"}]},Roku={regex:"Roku/DVP",device:"tv",model:"Digital Video Player"},Rokit={regex:"IO Pro",device:"smartphone",models:[{regex:"IO Pro",model:"IO Pro"}]},Rombica={regex:"(Rombica|SSQ-A0500|Smart Box v[0-9]+)(?:[);/ ]|$)",device:"tv",models:[{regex:"SSQ-A0500(?:[);/ ]|$)",model:"Smart Stick 4K"},{regex:"(Infinity K8|Smart Box (?:v00[345789]|Quad|Ultra HD v002|4K V001))(?:[);/ ]|$)",model:"$1"}]},Rover={regex:"Rover ([0-9]+)",device:"feature phone",model:"$1"},RoverPad={regex:"(?:Rover[ ]?Pad|RoverPhone|Sky 7.85 3G)(?:[);/ ]|$)",device:"tablet",models:[{regex:"RoverPhone(?:[);/ ]|$)",model:"",device:"smartphone"},{regex:"(?:Rover[ ]?Pad)?sky 7.85(?: 3G)?(?:[);/ ]|$)",model:'Sky 7.85" 3G'},{regex:"RoverPad (10.4|Air S70|9.7 3G|Sky 9.7|3W A73|3W7|3WT70|3W9.4)(?:[);/ ]|$)",model:"$1"}]},Roadrover={regex:"Roadrover ChangAn S",device:"tablet",model:"ChangAn S"},Safaricom={regex:"NEON_RAY",device:"smartphone",models:[{regex:"NEON_RAY",model:"Neon Ray"}]},Santin={regex:"(?:SANTIN|BiTBiZ_V58|ACTOMA ACE|DREAMPLUS03A|Candy U7 Pro)[);/_ ]",device:"smartphone",models:[{regex:"BiTBiZ_V58(?:[);/ ]|$)",model:"BiTBiZ V58"},{regex:"Candy U7 Pro(?:[);/ ]|$)",model:"Candy U7 Pro"},{regex:"DREAMPLUS03A(?:[);/ ]|$)",model:"Dream Plus 03A"},{regex:"GreenOrange(?:[);/ ]|$)",model:"Green Orange"},{regex:"halove(?:[);/ ]|$)",model:"Halove"},{regex:"ACTOMA ACE(?:[);/ ]|$)",model:"Actoma Ace"},{regex:"monica(?:[);/ ]|$)",model:"Monica"},{regex:"POWER(?:[);/ ]|$)",model:"Power"},{regex:"GALAZ(?:[);/ ]|$)",model:"Galaz"},{regex:"NEWDUN(?:[);/ ]|$)",model:"Newdun"},{regex:"SANTIN[ _][#]?(Dante|Candy U7|Armor|YSL-Y7|ANT.W|N[13]|JS|S6|V9|Life Shine)(?:[);/ ]|$)",model:"$1"}]},Siemens={regex:"SIEMENS|SIE-|portalmmm/2\\.0 SI|(?:S55|SL45i)(?:[);/ ]|$)",device:"smartphone",models:[{regex:"(?:SIE-)?(S[56]5|S40|C45|ME45|SLIK)(?:[);/ ]|$)",device:"feature phone",model:"$1"},{regex:"SIEMENS[ \\-]([a-z0-9]+)",model:"$1"},{regex:"SIE(?:MENS )?[\\-]?([a-z0-9]+)",model:"$1"},{regex:"(?:SIE-)?(SL45i)",model:"$1"},{regex:"portalmmm/2.0 (SI[a-z0-9]+)",model:"$1"}]},Soundmax={regex:"((?:SM-LED32M(?:11|04)S)(?:_-Ver01)?|SM-LED40M04S)(?:[);/ ]|$)",device:"tv",model:"$1"},Samsung$3={regex:"SAMSUNG(?! ?Browser)|Maple (?!III)|SC-(?:01[FGHKLM]|02[CGHJKLM]|03[JKL]|04[EJL]|05[GL]|(?:4[12]|5[1234])A)|N[57]100|N5110|N9100|S(?:CH|GH|PH|EC|AM|HV|HW|M)-|SMART-TV|GT-|(?<!GOG|GOG )Galaxy|(?:portalmmm|o2imode)/2\\.0 [SZ]|sam[rua]|vollo Vi86(?:[);/ ]|$)|(?:OTV-)?SMT-E5015|ISW11SC|SCV4[0-9]|SCV3[1-9]|40[34]SC|SCL2[234]|SCG0[1-7]|SCT21",device:"smartphone",models:[{regex:"GT-B9150",device:"tv",model:"Home Sync"},{regex:"(?:OTV-)?SMT-E5015",device:"tv",model:"SMT-E5015"},{regex:"Maple ",device:"tv",model:""},{regex:"(?:SAMSUNG-)?(?:GT-)?N5100",device:"tablet",model:'Galaxy Note 8.0"'},{regex:"(?:SAMSUNG-)?SM-T677(?:[ATV]|N[KL])?(?:[);/ ]|$)",device:"tablet",model:'Galaxy View 18.4" LTE'},{regex:"(?:SAMSUNG-)?SM-T670(?:[);/ ]|$)",device:"tablet",model:'Galaxy View 18.4" WiFi'},{regex:"(?:SAMSUNG-)?(?:GT-)?N5110",device:"tablet",model:'Galaxy Note 8.0" WiFi'},{regex:"(?:SAMSUNG-)?GT-N5120",device:"tablet",model:'Galaxy Note 8.0" LTE'},{regex:"(?:SAMSUNG-)?(?:GT|SM)-N8000",device:"tablet",model:'Galaxy Note 10.1"'},{regex:"(?:SAMSUNG-)?GT-N8010",device:"tablet",model:'Galaxy Note 10.1" WiFi'},{regex:"(?:SAMSUNG-)?GT-N8020",device:"tablet",model:'Galaxy Note 10.1" LTE'},{regex:"(?:SAMSUNG-)?GT-P1000M?|SCH-I800",device:"tablet",model:"Galaxy Tab"},{regex:"(?:SAMSUNG-)?GT-P3100B?",device:"tablet",model:'Galaxy Tab 2 7"'},{regex:"(?:SAMSUNG-)?GT-P311[03]",device:"tablet",model:'Galaxy Tab 2 7" WiFi'},{regex:"(?:SAMSUNG-)?GT-P5100|SCH-I915",device:"tablet",model:'Galaxy Tab 2 10.1"'},{regex:"(?:SAMSUNG-)?GT-P511[03]",device:"tablet",model:'Galaxy Tab 2 10.1" WiFi'},{regex:"(?:SAMSUNG-)?SM-T217T",device:"tablet",model:'Galaxy Tab 3 7.0" 4G'},{regex:"(?:SAMSUNG-)?GT-P5200",device:"tablet",model:'Galaxy Tab 3 10.1"'},{regex:"(?:SAMSUNG-)?GT-P5210",device:"tablet",model:'Galaxy Tab 3 10.1" WiFi'},{regex:"(?:SAMSUNG-)?GT-P5220",device:"tablet",model:'Galaxy Tab 3 10.1" LTE'},{regex:"(?:SAMSUNG-)?GT-P6200",device:"tablet",model:'Galaxy Tab 7" Plus'},{regex:"(?:SAMSUNG-)?GT-P6201",device:"tablet",model:'Galaxy Tab 7" Plus N'},{regex:"(?:SAMSUNG-)?GT-P6810",device:"tablet",model:'Galaxy Tab 7.7"'},{regex:"(?:SAMSUNG-)?GT-P7100",device:"tablet",model:"Galaxy Tab 10.1v"},{regex:"(?:SAMSUNG-)?GT-P75[01]0",device:"tablet",model:'Galaxy Tab 10.1"'},{regex:"(?:SAMSUNG-)?SM-P600",device:"tablet",model:'Galaxy Note 10.1" 2014 Edition WiFi'},{regex:"(?:SAMSUNG-)?SM-P60[12]",device:"tablet",model:'Galaxy Note 10.1" 2014 Edition'},{regex:"(?:SAMSUNG-)?SM-(?:P605|P607T)",device:"tablet",model:'Galaxy Note 10.1" 2014 Edition LTE'},{regex:"(?:SAMSUNG-)?SM-P900",device:"tablet",model:'Galaxy NotePRO 12.2" WiFi'},{regex:"(?:SAMSUNG-)?SM-P901",device:"tablet",model:'Galaxy NotePRO 12.2"'},{regex:"(?:SAMSUNG-)?SM-P905",device:"tablet",model:'Galaxy NotePRO 12.2" LTE'},{regex:"(?:SAMSUNG-)?SM-(?:P587|P588C)(?:[);/ ]|$)",device:"tablet",model:'Galaxy Tab A 10.1" with S Pen (2016) LTE'},{regex:"(?:SAMSUNG-)?SM-P583(?:[);/ ]|$)",device:"tablet",model:'Galaxy Tab A 10.1" with S Pen (2016) WiFi'},{regex:"(?:SAMSUNG-)?SM-P205(?:[);/ ]|$)",device:"tablet",model:'Galaxy Tab A 8.0" with S Pen (2019) LTE'},{regex:"(?:SAMSUNG-)?SM-P200(?:[);/ ]|$)",device:"tablet",model:'Galaxy Tab A 8.0" with S Pen (2019) WiFi'},{regex:"(?:SAMSUNG-)?SM-T307U(?:[);/ ]|$)",device:"tablet",model:'Galaxy Tab A 8.4" (2020) LTE'},{regex:"(?:SAMSUNG-)?SM-(?:T505[CN]?|T507)(?:[);/ ]|$)",device:"tablet",model:'Galaxy Tab A7 10.4" (2020) LTE'},{regex:"(?:SAMSUNG-)?SM-T500(?:[);/ ]|$)",device:"tablet",model:'Galaxy Tab A7 10.4" (2020) WiFi'},{regex:"(?:SAMSUNG-)?SM-T11[03]",device:"tablet",model:'Galaxy Tab 3 Lite 7.0" WiFi'},{regex:"(?:SAMSUNG-)?SM-(?:T830[X]?|T837R4)(?:[);/ ]|$)",device:"tablet",model:'Galaxy Tab S4 10.5" WiFi'},{regex:"(?:SAMSUNG-)?SM-T837P(?:[);/ ]|$)",device:"tablet",model:'Galaxy Tab S4 10.5" with S Pen'},{regex:"(?:SAMSUNG-)?SM-(?:T835[CN]?|T837[VTA]?)(?:[);/ ]|$)",device:"tablet",model:'Galaxy Tab S4 10.5"'},{regex:"(?:SAMSUNG-)?SM-(?:T725[CN]?|T720X|T727(?:R4|[AUV])?)(?:[);/ ]|$)",device:"tablet",model:'Galaxy Tab S5e 10.5"'},{regex:"(?:SAMSUNG-)?SM-T720(?:[);/ ]|$)",device:"tablet",model:'Galaxy Tab S5e 10.5" WiFi'},{regex:"(?:SAMSUNG-)?SM-T865N?(?:[);/ ]|$)",device:"tablet",model:'Galaxy Tab S6 10.5"'},{regex:"(?:SAMSUNG-)?SM-T867(?:R4|[VU])?(?:[);/ ]|$)",device:"tablet",model:'Galaxy Tab S6 10.5" LTE'},{regex:"(?:SAMSUNG-)?SM-(?:P615[CN]?|P617)(?:[);/ ]|$)",device:"tablet",model:'Galaxy Tab S6 Lite 10.4"'},{regex:"(?:SAMSUNG-)?SM-P610X?(?:[);/ ]|$)",device:"tablet",model:'Galaxy Tab S6 Lite 10.4" WiFi'},{regex:"(?:SAMSUNG-)?SM-T860(?:[);/ ]|$)",device:"tablet",model:'Galaxy Tab S6 10.5" WiFi'},{regex:"(?:SAMSUNG-)?SM-T866N(?:[);/ ]|$)",device:"tablet",model:'Galaxy Tab S6 10.5" 5G'},{regex:"(?:SAMSUNG-)?SM-T111[M]?(?:[);/ ]|$)",device:"tablet",model:'Galaxy Tab 3 Lite 7.0"'},{regex:"(?:SAMSUNG-)?SM-T116(?:BU|NU|NY)?",device:"tablet",model:"Galaxy Tab 3 V"},{regex:"(?:SAMSUNG-)?SM-(?:T2105|T212)",device:"tablet",model:'Galaxy Tab 3 7.0" Kids'},{regex:"(?:SAMSUNG-)?SM-T210R?",device:"tablet",model:'Galaxy Tab 3 7.0" WiFi'},{regex:"(?:SAMSUNG-)?SM-T21(?:[15]|7[AS])",device:"tablet",model:'Galaxy Tab 3 7.0"'},{regex:"(?:SAMSUNG-)?SM-T230(?:NU)?",device:"tablet",model:'Galaxy Tab 4 7.0" WiFi'},{regex:"(?:SAMSUNG-)?SM-T23[15]|403SC",device:"tablet",model:'Galaxy Tab 4 7.0" 3G'},{regex:"(?:SAMSUNG-)?SM-(?:T239|T237[PV])",device:"tablet",model:'Galaxy Tab 4 7.0" LTE'},{regex:"(?:SAMSUNG-)?SM-T232(?:[);/ ]|$)",device:"tablet",model:'Galaxy Tab 4 7.0" WiFi + 3G'},{regex:"(?:SAMSUNG-)?SM-T310",device:"tablet",model:'Galaxy Tab 3 8.0" WiFi'},{regex:"(?:SAMSUNG-)?SM-T311",device:"tablet",model:'Galaxy Tab 3 8.0"'},{regex:"(?:SAMSUNG-)?SM-T315",device:"tablet",model:'Galaxy Tab 3 8.0" LTE'},{regex:"(?:SAMSUNG-)?SM-T330",device:"tablet",model:'Galaxy Tab 4 8.0" WiFi'},{regex:"(?:SAMSUNG-)?SM-(?:T33[215]|T337[AVT])",device:"tablet",model:'Galaxy Tab 4 8.0" LTE'},{regex:"(?:SAMSUNG-)?SM-T520",device:"tablet",model:'Galaxy TabPRO 10.1" WiFi'},{regex:"(?:SAMSUNG-)?SM-(?:T53[15]|T537[AV])",device:"tablet",model:'Galaxy Tab 4 10.1" LTE'},{regex:"(?:SAMSUNG-)?SM-T536(?:[);/ ]|$)",device:"tablet",model:'Galaxy Tab 4 10.1" Advanced'},{regex:"(?:SAMSUNG-)?SM-T532(?:[);/ ]|$)",device:"tablet",model:'Galaxy Tab 4 10.1"'},{regex:"(?:SAMSUNG-)?SM-T320",device:"tablet",model:'Galaxy TabPRO 8.4" WiFi'},{regex:"(?:SAMSUNG-)?SM-T325",device:"tablet",model:'Galaxy TabPRO 8.4" LTE'},{regex:"(?:SAMSUNG-)?SM-T525",device:"tablet",model:'Galaxy TabPRO 10.1" LTE'},{regex:"(?:SAMSUNG-)?SM-(?:T530(?:NU)?|T533)",device:"tablet",model:'Galaxy Tab 4 10.1" WiFi'},{regex:"(?:SAMSUNG-)?SM-T700",device:"tablet",model:'Galaxy Tab S 8.4" WiFi'},{regex:"(?:SAMSUNG-)?SM-(?:T705|T707[AV])",device:"tablet",model:'Galaxy Tab S 8.4" LTE'},{regex:"(?:SAMSUNG-)?SM-T800",device:"tablet",model:'Galaxy Tab S 10.5" WiFi'},{regex:"(?:SAMSUNG-)?(?:SM-(?:T805|T807[PV]?)|SCT21)",device:"tablet",model:'Galaxy Tab S 10.5" LTE'},{regex:"(?:SAMSUNG-)?SM-(?:T813|T810)",device:"tablet",model:'Galaxy Tab S2 9.7" WiFi'},{regex:"(?:SAMSUNG-)?SM-(?:T719[CY]?|T715(?:N0|[CY])?)(?:[);/ ]|$)",device:"tablet",model:'Galaxy Tab S2 8.0" LTE'},{regex:"(?:SAMSUNG-)?SM-(?:T71[03]|T710X)(?:[);/ ]|$)",device:"tablet",model:'Galaxy Tab S2 8.0" WiFi'},{regex:"(?:SAMSUNG-)?SM-(?:T815|T817[ATW]?|T818[ATVW]?|T819[Y]?)",device:"tablet",model:'Galaxy Tab S2 9.7" LTE'},{regex:"(?:SAMSUNG-)?SM-T820",device:"tablet",model:'Galaxy Tab S3 9.7" WiFi'},{regex:"(?:SAMSUNG-)?SM-T82[57]",device:"tablet",model:'Galaxy Tab S3 9.7" LTE'},{regex:"(?:SAMSUNG-)?SM-T975N?(?:[);/ ]|$)",device:"tablet",model:'Galaxy Tab S7+ 12.4" LTE'},{regex:"(?:SAMSUNG-)?SM-T970(?:[);/ ]|$)",device:"tablet",model:'Galaxy Tab S7+ 12.4" WiFi'},{regex:"(?:SAMSUNG-)?SM-(?:T976[BN]|T978U)(?:[);/ ]|$)",device:"tablet",model:'Galaxy Tab S7+ 12.4" 5G'},{regex:"(?:SAMSUNG-)?SM-T870(?:[);/ ]|$)",device:"tablet",model:'Galaxy Tab S7 11.0" WiFi'},{regex:"(?:SAMSUNG-)?SM-T875N?(?:[);/ ]|$)",device:"tablet",model:'Galaxy Tab S7 11.0" LTE'},{regex:"(?:SAMSUNG-)?SM-T878U(?:[);/ ]|$)",device:"tablet",model:'Galaxy Tab S7 11.0" 5G'},{regex:"(?:SAMSUNG-)?SM-T900",device:"tablet",model:'Galaxy TabPRO 12.2" WiFi'},{regex:"(?:SAMSUNG-)?SM-T280",device:"tablet",model:'Galaxy Tab A 7.0" WiFi'},{regex:"(?:SAMSUNG-)?SM-T285",device:"tablet",model:'Galaxy Tab A 7.0" LTE'},{regex:"(?:SAMSUNG-)?SM-T3[58]0",device:"tablet",model:'Galaxy Tab A 8.0" WiFi'},{regex:"(?:SAMSUNG-)?SM-(?:P350|T3[58]5|T357[TW])",device:"tablet",model:'Galaxy Tab A 8.0" LTE'},{regex:"(?:SAMSUNG-)?SM-T387(?:AA|R4|VK|[TVW])",device:"tablet",model:'Galaxy Tab A 8.0" LTE (2018)'},{regex:"(?:SAMSUNG-)?SM-T295",device:"tablet",model:'Galaxy Tab A 8.0" LTE (2019)'},{regex:"(?:SAMSUNG-)?SM-T290",device:"tablet",model:'Galaxy Tab A 8.0" WiFi (2019)'},{regex:"(?:SAMSUNG-)?SM-(?:P355([MY])?|T550)",device:"tablet",model:'Galaxy Tab A 9.7" WiFi'},{regex:"(?:SAMSUNG-)?SM-(?:P550|P555(M)?|T555)",device:"tablet",model:'Galaxy Tab A 9.7" LTE'},{regex:"(?:SAMSUNG-)?SM-(?:T58[05]|P58[05])",device:"tablet",model:'Galaxy Tab A 10.1" WiFi (2016)'},{regex:"(?:SAMSUNG-)?SM-T587[P]?",device:"tablet",model:'Galaxy Tab A 10.1" LTE (2016)'},{regex:"(?:SAMSUNG-)?SM-T59[057]",device:"tablet",model:'Galaxy Tab A 10.5" LTE (2018)'},{regex:"(?:SAMSUNG-)?SM-T51(?:7P|[057])",device:"tablet",model:'Galaxy Tab A 10.1" (2019)'},{regex:"(?:SAMSUNG-)?SM-(?:T37[57]|T378[KLSV])",device:"tablet",model:'Galaxy Tab E 8.0"'},{regex:"(?:SAMSUNG-)?SM-T56[02]",device:"tablet",model:'Galaxy Tab E 9.6" WiFi'},{regex:"(?:SAMSUNG-)?SM-T561",device:"tablet",model:'Galaxy Tab E 9.6" 3G'},{regex:"(?:SAMSUNG-)?SM-T567V",device:"tablet",model:'Galaxy Tab E 9.6" 4G'},{regex:"(?:SAMSUNG-)?SM-T365(?:F0|[MY])?(?:[);/ ]|$)",device:"tablet",model:'Galaxy Tab Active 8.0"'},{regex:"(?:SAMSUNG-)?SM-T360(?:[);/ ]|$)",device:"tablet",model:'Galaxy Tab Active 8.0" WiFi'},{regex:"(?:SAMSUNG-)?SM-(?:T395[CN]?|T397U)(?:[);/ ]|$)",device:"tablet",model:'Galaxy Tab Active 2 8.0"'},{regex:"(?:SAMSUNG-)?SM-T390(?:[);/ ]|$)",device:"tablet",model:'Galaxy Tab Active 2 8.0" WiFi'},{regex:"(?:SAMSUNG-)?SM-(?:T575N?|T577U?)(?:[);/ ]|$)",device:"tablet",model:'Galaxy Tab Active 3 8.0"'},{regex:"(?:SAMSUNG-)?SM-T570(?:[);/ ]|$)",device:"tablet",model:'Galaxy Tab Active 3 8.0" WiFi'},{regex:"(?:SAMSUNG-)?SM-(?:T545|T547U?)(?:[);/ ]|$)",device:"tablet",model:'Galaxy Tab Active Pro 10.1"'},{regex:"(?:SAMSUNG-)?SM-T540(?:[);/ ]|$)",device:"tablet",model:'Galaxy Tab Active Pro 10.1" WiFi'},{regex:"(?:SAMSUNG-)?SM-(?:P902|P907A)(?:[);/ ]|$)",device:"tablet",model:'Galaxy Note Pro 12.2"'},{regex:"(?:SAMSUNG[- ])?SM-T2519",model:"Galaxy Tab Q",device:"tablet"},{regex:"(?:SAMSUNG )?SM-R820",device:"wearable",model:"Galaxy Watch Active 2"},{regex:"(?:SAMSUNG-)?SM-G850(?:8S|[AFKLMSWXY])",model:"Galaxy Alpha"},{regex:"(?:SAMSUNG-)?GT-B5330",model:"Galaxy Chat"},{regex:"(?:SAMSUNG-)?SM-A605K",model:"Galaxy Jean"},{regex:"(?:SAMSUNG-)?SM-A202K",model:"Galaxy Jean 2"},{regex:"(?:SAMSUNG-)?GT-B5510",model:"Galaxy Y Pro"},{regex:"(?:SAMSUNG-)?GT-B5512",model:"Galaxy Y Pro Duos"},{regex:"(?:SAMSUNG-)?GT-B7510",model:"Galaxy Pro"},{regex:"(?:SAMSUNG-)?GT-I5700",model:"Galaxy Spica"},{regex:"(?:SAMSUNG-)?GT-I5801",model:"Galaxy Apollo"},{regex:"(?:SAMSUNG-)?GT-I5800",model:"Galaxy 3"},{regex:"(?:SAMSUNG-)?GT-I8000",model:"Omnia II"},{regex:"(?:SAMSUNG-)?(?:GT-I8150|SM-T255S)",model:"Galaxy W"},{regex:"SC-01H(?:[);/ ]|$)",model:"Galaxy Active Neo"},{regex:"(?:SAMSUNG-)?GT-S5830",model:"Galaxy Ace"},{regex:"(?:SAMSUNG-)?SM-(?:G357(?:FZ|M)|G310HN)",model:"Galaxy Ace Style"},{regex:"(?:SAMSUNG-)?GT-I8160",model:"Galaxy Ace 2"},{regex:"(?:SAMSUNG-)?SM-G313(?:HY|M[LUY]|[FM])",model:"Galaxy Ace 4"},{regex:"(?:SAMSUNG-)?SM-G316M",model:"Galaxy Ace 4 Duos"},{regex:"(?:SAMSUNG-)?SM-G313[HU]",model:"Galaxy Ace 4 Lite"},{regex:"(?:SAMSUNG-)?SM-(?:G316U|G318(?:H|ML))(?:[);/ ]|$)",model:"Galaxy Ace 4 Neo"},{regex:"(?:SAMSUNG-)?SM-G9100(?:[);/ ]|$)",model:"Galaxy S II"},{regex:"(?:SAMSUNG-)?SHV-E120S(?:[);/ ]|$)",model:"Galaxy S II HD LTE"},{regex:"(?:SAMSUNG-)?GT-I8190",model:"Galaxy S III mini"},{regex:"(?:SAMSUNG-)?GT-I8200",model:"Galaxy S III mini Value Edition"},{regex:"(?:SAMSUNG-)?GT-I826[02]",model:"Galaxy Core"},{regex:"(?:SAMSUNG-)?SM-G386W",model:"Galaxy Core LTE"},{regex:"(?:SAMSUNG-)?SM-G3589W",model:"Galaxy Core Lite LTE"},{regex:"(?:SAMSUNG-)?GT-I8320",model:"H1"},{regex:"(?:SAMSUNG-)?GT-I85[23]0",model:"Galaxy Beam"},{regex:"(?:SAMSUNG-)?SM-G3858",model:"Galaxy Beam 2"},{regex:"(?:SAMSUNG-)?SM-G600S",model:"Galaxy Wide"},{regex:"(?:SAMSUNG-)?GT-I855[028]",model:"Galaxy Win"},{regex:"(?:SAMSUNG-)?SM-G381[28]",model:"Galaxy Win Pro"},{regex:"(?:SAMSUNG-)?GT-I8580",model:"Galaxy Core Advance"},{regex:"(?:SAMSUNG-)?GT-I8730",model:"Galaxy Express"},{regex:"(?:SAMSUNG-)?SM-(?:E500(?:HQ|YZ|[0FHM])|S978L)",model:"Galaxy E5"},{regex:"(?:SAMSUNG-)?SM-E700[09FHM]",model:"Galaxy E7"},{regex:"(?:SAMSUNG-)?GT-I90(?:00|08|18|88)",model:"Galaxy S"},{regex:"(?:SAMSUNG-)?GT-I9001",model:"Galaxy S Plus"},{regex:"(?:SAMSUNG-)?GT-I9003",model:"Galaxy SL"},{regex:"(?:SAMSUNG-)?GT-I9010",model:"Galaxy S Giorgio Armani"},{regex:"(?:SAMSUNG-)?GT-I9070",model:"Galaxy S Advance"},{regex:"(?:SAMSUNG-)?GT-I910[08]",model:"Galaxy S II"},{regex:"(?:SAMSUNG-)?ISW11SC",model:"Galaxy S II WiMAX"},{regex:"(?:SAMSUNG-)?GT-I9103",model:"Galaxy R"},{regex:"(?:SAMSUNG-)?GT-I9105",model:"Galaxy S II Plus"},{regex:"(?:SAMSUNG-)?SM-G730(?:W8|[AV])",model:"Galaxy S3 mini"},{regex:"(?:SAMSUNG-)?(?:GT-I919[025]|SCH-I435)",model:"Galaxy S4 mini"},{regex:"(?:SAMSUNG-)?GT-I9515",model:"Galaxy S4 Value Edition"},{regex:"(?:SAMSUNG-)?GT-I9295",model:"Galaxy S4 ACTIVE"},{regex:"(?:SAMSUNG-)?(?:GT-I9300|SCH-(?:I535|I939|L710))",model:"Galaxy S III"},{regex:"(?:SAMSUNG-)?(?:GT-I9305|SCH-R530)",model:"Galaxy S III LTE"},{regex:"(?:SAMSUNG-)?(?:SM-S975L|GT-I950[025]|SC-04E|SCH-(?:I545|I959|R970)|SGH-M919N?|Galaxy-S4)",model:"Galaxy S4"},{regex:"(?:SAMSUNG-)?GT-I9506",model:"Galaxy S4 with LTE+"},{regex:"(?:SAMSUNG-)?GT-S5280",model:"Galaxy STAR"},{regex:"(?:SAMSUNG-)?GT-S5301",model:"Galaxy POCKET Plus"},{regex:"(?:SAMSUNG-)?GT-S5310",model:"Galaxy POCKET Neo"},{regex:"(?:SAMSUNG-)?SM-G110[BHM]",model:"Galaxy POCKET 2"},{regex:"(?:SAMSUNG-)?GT-S5360",model:"Galaxy Y Hello Kitty"},{regex:"(?:SAMSUNG-)?GT-S6310",model:"Galaxy Young"},{regex:"(?:SAMSUNG-)?GT-S6312",model:"Galaxy Young DUOS"},{regex:"(?:SAMSUNG-)?SM-G130(?:BT|HN|[EHMU])",model:"Galaxy Young 2"},{regex:"(?:SAMSUNG-)?SM-G130BU",model:"Galaxy Young 2 Pro"},{regex:"(?:SAMSUNG-)?GT-S6790",model:"Galaxy FAME Lite with NFC"},{regex:"(?:SAMSUNG-)?GT-S6810",model:"Galaxy FAME"},{regex:"(?:SAMSUNG-)?GT-S6812",model:"Galaxy FAME Duos"},{regex:"SC-04J(?:[);/ ]|$)",model:"Galaxy Feel"},{regex:"SC-02L(?:[);/ ]|$)",model:"Galaxy Feel 2"},{regex:"(?:SAMSUNG-)?GT-S7275",model:"Galaxy ACE 3"},{regex:"(?:SAMSUNG-)?GT-S7500",model:"Galaxy ACE Plus"},{regex:"(?:SAMSUNG-)?(?:GT-S7560|SCH-I699)",model:"Galaxy Trend"},{regex:"(?:SAMSUNG-)?GT-S7390",model:"Galaxy Trend Lite"},{regex:"(?:SAMSUNG-)?GT-S7580",model:"Galaxy Trend Plus"},{regex:"(?:SAMSUNG-)?SCH-I739",model:"Galaxy Trend 2"},{regex:"(?:SAMSUNG-)?(?:GT-S7562|SCH-I919)",model:"Galaxy S DUOS"},{regex:"(?:SAMSUNG-)?GT-S7582",model:"Galaxy S DUOS 2"},{regex:"(?:SAMSUNG-)?SM-(?:G31[36]HU|G313HZ)",model:"Galaxy S DUOS 3"},{regex:"(?:SAMSUNG-)?GT-S7710",model:"Galaxy Xcover 2"},{regex:"(?:SAMSUNG-)?SM-G388F",model:"Galaxy Xcover 3"},{regex:"(?:SAMSUNG-)?SM-G389F",model:"Galaxy Xcover 3 VE"},{regex:"(?:SAMSUNG-)?SM-G390[FWY]",model:"Galaxy Xcover 4"},{regex:"(?:SAMSUNG-)?SM-G398FN",model:"Galaxy Xcover 4s"},{regex:"(?:SAMSUNG-)?SM-G715(?:FN|U1|[AUW])",model:"Galaxy Xcover Pro"},{regex:"(?:SAMSUNG-)?SM-G889(?:YB|[AFG])",model:"Galaxy Xcover FieldPro"},{regex:"(?:SAMSUNG-)?GT-S8500",model:"Wave"},{regex:"(?:SAMSUNG-)?GT-S8530",model:"Wave II"},{regex:"(?:SAMSUNG-)?GT-S8600",model:"Wave 3"},{regex:"(?:SAMSUNG-)?GT-S5380",model:"Wave Y"},{regex:"(?:SAMSUNG-)?GT-S7250",model:"Wave M"},{regex:"(?:SAMSUNG-)?GT-S5250",model:"Wave 525"},{regex:"(?:SAMSUNG-)?GT-S5330",model:"Wave 533"},{regex:"(?:SAMSUNG-)?GT-S5780",model:"Wave 578"},{regex:"(?:SAMSUNG-)?GT-S7230",model:"Wave 723"},{regex:"(?:SAMSUNG-)?SM-(?:C101|C105([AL])?)",model:"Galaxy S4 zoom"},{regex:"(?:SAMSUNG-)?SM-(?:C111(M)?|C115)",model:"Galaxy K zoom"},{regex:"(?:SAMSUNG-)?SM-G318[HM]Z",model:"Galaxy V Plus"},{regex:"(?:SAMSUNG-)?SM-G355(?:6D|[89HM])",model:"Galaxy Core 2"},{regex:"(?:SAMSUNG-)?SM-G350",model:"Galaxy Core Plus"},{regex:"(?:SAMSUNG-)?SM-(?:G360[FH]?|S820L)",model:"Galaxy Core Prime"},{regex:"(?:SAMSUNG-)?SM-G361[FH]?",model:"Galaxy Core Prime Value Edition"},{regex:"(?:SAMSUNG-)?SM-(?:G386F|G3518(?:_TD)?|G3586V)",model:"Galaxy Core LTE"},{regex:"(?:SAMSUNG-)?SM-G3568V",model:"Galaxy Core Mini 4G"},{regex:"(?:SAMSUNG-)?SM-G5108Q?",model:"Galaxy Core Max"},{regex:"(?:SAMSUNG-)?SM-G3815",model:"Galaxy EXPRESS II"},{regex:"(?:SAMSUNG-)?SM-G800",model:"Galaxy S5 mini"},{regex:"(?:SAMSUNG-)?SM-G9009D",model:"Galaxy S5 Dual-SIM"},{regex:"(?:SAMSUNG-)?SM-(?:G900|G906[KLS]|S902L|S903VL)|Galaxy-S5|SCL23",model:"Galaxy S5"},{regex:"(?:SAMSUNG-)?SM-G901F",model:"Galaxy S5 LTE+"},{regex:"(?:SAMSUNG-)?SM-G870[AFW]|SC-02G",model:"Galaxy S5 Active"},{regex:"(?:SAMSUNG-)?SM-G903[FMW]",model:"Galaxy S5 Neo"},{regex:"(?:SAMSUNG-)?SM-G860P",model:"Galaxy S5 K Sport"},{regex:"(?:SAMSUNG-)?(?:SM-G920(?:F[DQ]|W8|[089AFIKLPRSTVX])?|SM-S906L|SM-S907VL)|SC-05G",model:"Galaxy S6"},{regex:"(?:SAMSUNG-)?SM-G890A",model:"Galaxy S5 Active"},{regex:"(?:SAMSUNG-)?SM-G925[0ADFIKLPRSTVWX]|SCV31|404SC",model:"Galaxy S6 Edge"},{regex:"(?:SAMSUNG-)?SM-G928(?:7C|N0|R4|W8|[07ACFGIKLPSTVX])",model:"Galaxy S6 Edge+"},{regex:"(?:SAMSUNG-)?SM-G930(?:AZ|FD|R[467]|T1|V[CL]|W8|[0AFKLPRSTUVX8])?(?:[);/ ]|$)",model:"Galaxy S7"},{regex:"(?:SAMSUNG-)?SM-G935(?:R4|W8|[0AFKLPSTUVX])|SC-02H|SCV33",model:"Galaxy S7 Edge"},{regex:"(?:SAMSUNG-)?SM-G891A",model:"Galaxy S7 Active"},{regex:"(?:SAMSUNG-)?SM-G950[08FNUW]?|SCV36|SC-02J",model:"Galaxy S8"},{regex:"(?:SAMSUNG-)?SM-G8750",model:"Galaxy S8 Lite"},{regex:"(?:SAMSUNG-)?SM-G892[AU]",model:"Galaxy S8 Active"},{regex:"(?:SAMSUNG-)?SM-G955[0AFKLNPRTUVWX]?|SCV35|SC-03J",model:"Galaxy S8+"},{regex:"(?:SAMSUNG-)?SM-G960[0FNUWX]?|SCV38|SC-02K",model:"Galaxy S9"},{regex:"(?:SAMSUNG-)?SM-G965[0FNUWX]|SCV39|SC-03K",model:"Galaxy S9+"},{regex:"(?:SAMSUNG-)?(?:SM-(?:G973|G977[BNPTU])|SCV41|SC-03L)",model:"Galaxy S10"},{regex:"(?:SAMSUNG-)?SM-(?:S10 Lite|G770(?:U1|F))",model:"Galaxy S10 Lite"},{regex:"(?:SAMSUNG-)?(?:SM-G975[08FUNWX]|SCV42|SC-04L)",model:"Galaxy S10+"},{regex:"SC-05L",model:"Galaxy S10+ Olympic Games Edition"},{regex:"(?:SAMSUNG-)?SM-G970(?:U1|[08FUNWX])(?:[);/ ]|$)",model:"Galaxy S10e"},{regex:"(?:SAMSUNG-)?SM-G980F",model:"Galaxy S20"},{regex:"(?:SAMSUNG-)?SM-G981(?:U1|[0BNUVW])|SCG01|SC-51A",model:"Galaxy S20 5G"},{regex:"(?:SAMSUNG-)?SM-G780F",model:"Galaxy S20 FE"},{regex:"(?:SAMSUNG-)?SM-G781(?:U1|[0BNUVW])",model:"Galaxy S20 FE 5G"},{regex:"(?:SAMSUNG-)?SM-G988(?:U1|[0BNQUW])|SCG03",model:"Galaxy S20 Ultra 5G"},{regex:"(?:SAMSUNG-)?SM-G985F|SCG02",model:"Galaxy S20+"},{regex:"(?:SAMSUNG-)?SM-G986(?:U1|[0BNUW])|SC-52A",model:"Galaxy S20+ 5G"},{regex:"(?:SAMSUNG-)?SM-G991(?:U1|[0BNW])",model:"Galaxy S21 5G"},{regex:"(?:SAMSUNG-)?SM-G998(?:U1|[0BNUW])",model:"Galaxy S21 Ultra 5G"},{regex:"(?:SAMSUNG-)?SM-G996(?:U1|[0BNWU])",model:"Galaxy S21+ 5G"},{regex:"(?:SAMSUNG-)?SM-F700(?:U1|[0FNUW])|SCV47",model:"Galaxy Z Flip"},{regex:"(?:SAMSUNG-)?SM-F707(?:U1|[0BNUW])|SCG04",model:"Galaxy Z Flip 5G"},{regex:"(?:SAMSUNG-)?SCH-I200",model:"Galaxy Stellar"},{regex:"(?:SAMSUNG-)?SCH-I829",model:"Galaxy Style Duos"},{regex:"(?:SAMSUNG-)?(?:SCH-R740|SGH-S730)",model:"Galaxy Discover"},{regex:"(?:SAMSUNG-)?SCH-S738",model:"Galaxy Centura"},{regex:"vollo Vi86(?:[);/ ]|$)",model:"Vollo Vi86"},{regex:"(?:SAMSUNG-)?SM-G386(?:T1|T)",model:"Galaxy Avant"},{regex:"(?:SAMSUNG-)?SM-A716S",model:"Galaxy A Quantum"},{regex:"(?:SAMSUNG-)?SM-(?:A015(?:DL|[TU]1|[AFGMUV])|S111DL)",model:"Galaxy A01"},{regex:"(?:SAMSUNG-)?SM-A013[FGM]",model:"Galaxy A01 Core"},{regex:"(?:SAMSUNG-)?SM-A025[FGM]",model:"Galaxy A02s"},{regex:"(?:SAMSUNG-)?SM-A022G",model:"Galaxy A02"},{regex:"(?:SAMSUNG-)?SM-A260[FG]",model:"Galaxy A2 Core"},{regex:"(?:SAMSUNG-)?SM-A300(?:FU|YZ|XU|XZ|[09FGHMXY])",model:"Galaxy A3 (2015)"},{regex:"(?:SAMSUNG-)?SM-A310(?:N0|[FMXY])",model:"Galaxy A3 (2016)"},{regex:"(?:SAMSUNG-)?SM-A320(?:FL|[FXY])",model:"Galaxy A3 (2017)"},{regex:"(?:SAMSUNG-)?SM-A430F",model:"Galaxy A4"},{regex:"(?:SAMSUNG-)?SM-A500(?:YZ|[9LSWY])?(?:[);/ ]|$)",model:"Galaxy A5"},{regex:"(?:SAMSUNG-)?SM-A500[0FGHKM]",model:"Galaxy A5 Duos"},{regex:"(?:SAMSUNG-)?SM-A500(?:FU|X)",model:"Galaxy A5 (2015)"},{regex:"(?:SAMSUNG-)?SM-A510[08FKLMSXY]",model:"Galaxy A5 (2016)"},{regex:"(?:SAMSUNG-)?SM-A520[FKLSWX]",model:"Galaxy A5 (2017)"},{regex:"(?:SAMSUNG-)?SM-A525F",model:"Galaxy A52"},{regex:"(?:SAMSUNG-)?SM-A600(?:AZ|FN|GN|T1|[AFGNPTUX])",model:"Galaxy A6"},{regex:"(?:SAMSUNG-)?SM-A605(?:[FG]N|[08FGX])",model:"Galaxy A6+"},{regex:"(?:SAMSUNG-)?SM-G6200",model:"Galaxy A6s (2018)"},{regex:"(?:SAMSUNG-)?SM-A606[0Y]",model:"Galaxy A60"},{regex:"(?:SAMSUNG-)?SM-A700(?:YD|[09FHKLSX])",model:"Galaxy A7"},{regex:"(?:SAMSUNG-)?SM-A710[08FKLMSXY]",model:"Galaxy A7 (2016)"},{regex:"(?:SAMSUNG-)?SM-A720[FMSX]",model:"Galaxy A7 (2017)"},{regex:"(?:SAMSUNG-)?SM-A750(?:GN|[CFGNX])",model:"Galaxy A7 (2018)"},{regex:"(?:SAMSUNG-)?SM-A71(?:5[FW])?(?:[);/ ]|$)",model:"Galaxy A71"},{regex:"(?:SAMSUNG-)?SM-A725F(?:[);/ ]|$)",model:"Galaxy A72"},{regex:"(?:SAMSUNG-)?SM-A716(?:U1|[0BUV])(?:[);/ ]|$)",model:"Galaxy A71 5G"},{regex:"(?:SAMSUNG-)?SM-A(?:530F|800[0FISXY])|SCV32",model:"Galaxy A8"},{regex:"(?:SAMSUNG-)?SM-G885[FSY]",model:"Galaxy A8 Star"},{regex:"(?:SAMSUNG-)?SM-A810(?:YZ|[FS])",model:"Galaxy A8 (2016)"},{regex:"(?:SAMSUNG-)?SM-(?:A8s|G887[0F])",model:"Galaxy A8s"},{regex:"(?:SAMSUNG-)?SM-A530[MNWX]",model:"Galaxy A8 (2018)"},{regex:"(?:SAMSUNG-)?SM-A730[FX]",model:"Galaxy A8+ (2018)"},{regex:"(?:SAMSUNG-)?SM-A900[0F]",model:"Galaxy A9"},{regex:"SM-A9\\[7\\]",model:"Galaxy A9 7"},{regex:"(?:SAMSUNG-)?SM-A920[0FXN]",model:"Galaxy A9 (2018)"},{regex:"(?:SAMSUNG-)?SM-G885[08]",model:"Galaxy A9 Star"},{regex:"(?:SAMSUNG-)?SM-(?:A9 Pro|A910[0F]|G887N)",model:"Galaxy A9 Pro"},{regex:"(?:SAMSUNG-)?SM-A105[FGMN]",model:"Galaxy A10"},{regex:"(?:SAMSUNG-)?SM-A107[FM]",model:"Galaxy A10s"},{regex:"(?:SAMSUNG-)?SM-(?:S102DL|A102[NUW])",model:"Galaxy A10e"},{regex:"(?:SAMSUNG-)?SM-A115(?:A[PZ]|U1|[AFMUW])",model:"Galaxy A11"},{regex:"(?:SAMSUNG-)?SM-A125[FM]",model:"Galaxy A12"},{regex:"(?:SAMSUNG-)?SM-(?:A205(?:U1|YN|[FGSWU])|S205DL)|SC-02M|SCV46",model:"Galaxy A20"},{regex:"(?:SAMSUNG-)?(?:SM-A215(?:DL|U1|[UW])|SC-42A|SCV49)(?:[);/ ]|$)",model:"Galaxy A21"},{regex:"(?:SAMSUNG-)?SM-A217[FMN](?:[);/ ]|$)",model:"Galaxy A21s"},{regex:"(?:SAMSUNG-)?SM-A202[FG]",model:"Galaxy A20e"},{regex:"(?:SAMSUNG-)?SM-A207[0FM]",model:"Galaxy A20s"},{regex:"(?:SAMSUNG-)?(?:SM-A305(?:[FGY]N|GT|[FGN])|SCV43)",model:"Galaxy A30"},{regex:"(?:SAMSUNG-)?SM-A307(?:FN|GN|GT|[FG])",model:"Galaxy A30s"},{regex:"(?:SAMSUNG-)?SM-A315[FGN](?:[);/ ]|$)",model:"Galaxy A31"},{regex:"(?:SAMSUNG-)?SM-A325F(?:[);/ ]|$)",model:"Galaxy A32"},{regex:"(?:SAMSUNG-)?SM-A326(?:BR|B)",model:"Galaxy A32 5G"},{regex:"(?:SAMSUNG-)?SM-A405(?:F[NM]|S)",model:"Galaxy A40"},{regex:"(?:SAMSUNG-)?SM-A305[018](?:[);/ ]|$)",model:"Galaxy A40s"},{regex:"(?:SAMSUNG-)?(?:SM-A415F|SC-41A|SCV48)(?:[);/ ]|$)",model:"Galaxy A41"},{regex:"(?:SAMSUNG-)?SM-A426[0BN](?:[);/ ]|$)",model:"Galaxy A42 5G"},{regex:"(?:SAMSUNG-)?SM-(?:A505(?:F[GN]|U1|YN|[FGNUWX])|S506DL|505FN)",model:"Galaxy A50"},{regex:"(?:SAMSUNG-)?SM-A5070(?:[);/ ]|$)",model:"Galaxy A50s"},{regex:"(?:SAMSUNG-)?SM-A507FN",model:"Galaxy A50s"},{regex:"(?:SAMSUNG-)?SM-(?:A515[FUW]|S515DL)",model:"Galaxy A51"},{regex:"(?:SAMSUNG-)?(?:SM-A516(?:U1|[0BNUV])|SC-54A|SCG07)",model:"Galaxy A51 5G"},{regex:"(?:SAMSUNG-)?SM-A705(?:GM|[MYF]N|[0FUWX])",model:"Galaxy A70"},{regex:"(?:SAMSUNG-)?SM-A707[0F]",model:"Galaxy A70s"},{regex:"(?:SAMSUNG-)?SM-A805[0FNX]",model:"Galaxy A80"},{regex:"(?:SAMSUNG-)?SM-A908[BN]",model:"Galaxy A90"},{regex:"(?:SAMSUNG-)?SM-A9080",model:"Galaxy A90 5G"},{regex:"(?:SAMSUNG-)?SM-F127G(?:[);/ ]|$)",model:"Galaxy F12"},{regex:"(?:SAMSUNG-)?SM-F415F(?:[);/ ]|$)",model:"Galaxy F41"},{regex:"(?:SAMSUNG-)?GT-I9301I",model:"Galaxy S III Neo"},{regex:"(?:SAMSUNG-)?SM-S120VL(?:[);/ ]|$)",model:"Galaxy Luna"},{regex:"(?:SAMSUNG-)?SM-(?:J100(?:FN|VPP|MU|[FGHMY])|S777C)",model:"Galaxy J1"},{regex:"(?:SAMSUNG-)?SM-J105[BFHYM]",model:"Galaxy J1 Mini"},{regex:"(?:SAMSUNG-)?SM-J106[BFHM]",model:"Galaxy J1 mini Prime"},{regex:"(?:SAMSUNG-)?SM-(?:J120(?:ZN|[AFGHMPTW])|J05H)",model:"Galaxy J1 (2016)"},{regex:"(?:SAMSUNG-)?SM-(?:J110[FGHLM]|J111[FM])",model:"Galaxy J1 Ace"},{regex:"(?:SAMSUNG-)?SM-J200[FGHMY]",model:"Galaxy J2"},{regex:"(?:SAMSUNG-)?SM-J200BT",model:"Galaxy J2 Duos"},{regex:"(?:SAMSUNG-)?SM-J260AZ",model:"Galaxy J2 Pure"},{regex:"(?:SAMSUNG-)?SM-(?:J260([AFGMY]|T1)|S260DL)",model:"Galaxy J2 Core"},{regex:"(?:SAMSUNG-)?SM-J(?:210F|250[FGMNY])",model:"Galaxy J2 Pro"},{regex:"(?:SAMSUNG-)?SM-(?:S367VL|S357BL)",model:"Galaxy J3 Orbit"},{regex:"(?:SAMSUNG-)?SM-J311(?:[09]|9S)",model:"Galaxy J3 Pro"},{regex:"(?:SAMSUNG-)?SM-S320VL(?:[);/ ]|$)",model:"Galaxy J3 Sky"},{regex:"(?:SAMSUNG-)?SM-S327VL(?:[);/ ]|$)",model:"Galaxy J3 Luna Pro"},{regex:"(?:SAMSUNG-)?SM-J327(?:T1|[ATW])(?:[);/ ]|$)",model:"Galaxy J3 Prime"},{regex:"(?:SAMSUNG-)?SM-J327(?:[FP]|R4)",model:"Galaxy J3 Emerge"},{regex:"(?:SAMSUNG-)?SM-J337R4(?:[);/ ]|$)",model:"Galaxy J3 Aura"},{regex:"(?:SAMSUNG-)?SM-J337T(?:[);/ ]|$)",model:"Galaxy J3 Star"},{regex:"(?:SAMSUNG-)?SM-J327V",model:"Galaxy J3 Eclipse"},{regex:"(?:SAMSUNG-)?SM-S337TL",model:"Galaxy J3 Luna Pro"},{regex:"(?:SAMSUNG-)?SM-J3109",model:"Galaxy J3 (2015)"},{regex:"(?:SAMSUNG-)?SM-(?:J300H|J320(?:[ZF]N|R4|W8|YZ|[AFGHMNPVY]))",model:"Galaxy J3 (2016)"},{regex:"(?:SAMSUNG-)?SM-(?:J330(?:FN|[08FGLN])|J327(?:R7|U))(?:[);/ ]|$)",model:"Galaxy J3 (2017)"},{regex:"(?:SAMSUNG-)?SM-J337(?:VPP|[AWPUV])(?:[);/ ]|$)",model:"Galaxy J3 (2018)"},{regex:"(?:SAMSUNG-)?SM-(?:G400[FG]|J400[FGM])",model:"Galaxy J4"},{regex:"(?:SAMSUNG-)?SM-J500(?:FN|N0|[78FGHMY])(?:[);/ ]|$)",model:"Galaxy J5 (2015)"},{regex:"(?:SAMSUNG-)?SM-(?:J510(?:[FGMU]N|FQ|[8FGHKLSY])|5108|G510H)(?:[);/ ]|$)",model:"Galaxy J5 (2016)"},{regex:"(?:SAMSUNG-)?SM-J530",model:"Galaxy J5 (2017)"},{regex:"(?:SAMSUNG-)?SM-G570[0FMY]",model:"Galaxy J5 Prime"},{regex:"(?:SAMSUNG-)?SM-J600[FGLN]",model:"Galaxy J6"},{regex:"(?:SAMSUNG-)?SM-J610[FG]",model:"Galaxy J6+"},{regex:"(?:SAMSUNG-)?SM-J410[FG]",model:"Galaxy J4 Core"},{regex:"(?:SAMSUNG-)?SM-J415(?:[FG]N|[FGN])",model:"Galaxy J4+"},{regex:"(?:SAMSUNG-)?SM-J7[01]0(?:FN|MN|[8FHKM])",model:"Galaxy J7"},{regex:"(?:SAMSUNG-)?SM-J700P",model:"Galaxy J7 (2015)"},{regex:"(?:SAMSUNG-)?SM-(?:J700(?:T1|T)|J710GN|J7109)",model:"Galaxy J7 (2016)"},{regex:"(?:SAMSUNG-)?SM-(?:J730[K]|J727(?:R4|[AFSU]))(?:[);/ ]|$)",model:"Galaxy J7 (2017)"},{regex:"(?:SAMSUNG-)?SM-J737(?:R4|T1|VPP|[APSTUV])(?:[);/ ]|$)",model:"Galaxy J7 (2018)"},{regex:"(?:SAMSUNG-)?SM-C710F",model:"Galaxy J7+ (C7)"},{regex:"(?:SAMSUNG-)?SM-G610[FMY]",model:"Galaxy J7 Prime"},{regex:"(?:SAMSUNG-)?SM-G611(?:FF|MT|M)",model:"Galaxy J7 Prime 2"},{regex:"(?:SAMSUNG-)?SM-G615F",model:"Galaxy J7 Max"},{regex:"(?:SAMSUNG-)?SM-(?:S727VL|S737TL)",model:"Galaxy J7 Sky Pro"},{regex:"(?:SAMSUNG-)?SM-(?:J7 Pro|J730(?:GM|[FG]))",model:"Galaxy J7 Pro"},{regex:"(?:SAMSUNG-)?SM-J701[FM]",model:"Galaxy J7 Core"},{regex:"(?:SAMSUNG-)?SM-J720[FM]",model:"Galaxy J7 Duo"},{regex:"(?:SAMSUNG-)?SM-(?:S767VL|S757BL)",model:"Galaxy J7 Crown"},{regex:"(?:SAMSUNG-)?SM-J727[PTV]",model:"Galaxy J7 V"},{regex:"SM-J7\\[7\\]",model:"Galaxy J7 7"},{regex:"(?:SAMSUNG-)?SM-J810",model:"Galaxy J8"},{regex:"SM-J8 Plus",model:"Galaxy J8 Plus"},{regex:"SM-J8 Pro",model:"Galaxy J8 Pro"},{regex:"SM-J9\\[7\\] Prime",model:"Galaxy J9 7 Prime"},{regex:"SM-J9\\[8\\] Pro",model:"Galaxy J9 8 Pro"},{regex:"(?:SAMSUNG-)?SM-M015[FG]",model:"Galaxy M01"},{regex:"(?:SAMSUNG-)?SM-M013F",model:"Galaxy M01 Core"},{regex:"(?:SAMSUNG-)?SM-M017F",model:"Galaxy M01s"},{regex:"(?:SAMSUNG-)?SM-M025F",model:"Galaxy M02s"},{regex:"(?:SAMSUNG-)?SM-M105[FGMY]",model:"Galaxy M10"},{regex:"(?:SAMSUNG-)?SM-M107F",model:"Galaxy M10s"},{regex:"(?:SAMSUNG-)?SM-M115[FM]",model:"Galaxy M11"},{regex:"(?:SAMSUNG-)?SM-M127[FG]",model:"Galaxy M12"},{regex:"(?:SAMSUNG-)?SM-(?:M205(?:[FGMN]|FN)|M20)(?:[);/ ]|$)",model:"Galaxy M20"},{regex:"(?:SAMSUNG-)?SM-M215F",model:"Galaxy M21"},{regex:"(?:SAMSUNG-)?SM-(?:M307(?:FN|[0F])|M30s)",model:"Galaxy M30s"},{regex:"(?:SAMSUNG-)?SM-M305?",model:"Galaxy M30"},{regex:"(?:SAMSUNG-)?SM-M315F",model:"Galaxy M31"},{regex:"(?:SAMSUNG-)?SM-M317F",model:"Galaxy M31s"},{regex:"(?:SAMSUNG-)?SM-M405",model:"Galaxy M40"},{regex:"(?:SAMSUNG-)?SM-M515F",model:"Galaxy M51"},{regex:"(?:SAMSUNG-)?SM-W201([689])",model:"Galaxy W201$1"},{regex:"(?:SAMSUNG-)?SM-W2015",model:"Galaxy Golden 2"},{regex:"(?:SAMSUNG-)?SM-G910S",model:"Galaxy Round"},{regex:"(?:SAMSUNG-)?SM-(?:G550(?:FY|T[12]?)|S550TL|G55[01]0|G5520)",model:"Galaxy On5"},{regex:"(?:SAMSUNG-)?SM-G5528",model:"Galaxy On5 (2016)"},{regex:"(?:SAMSUNG-)?SM-G600(?:FY|[0F])",model:"Galaxy On7"},{regex:"(?:SAMSUNG-)?SM-G610[0KLS]",model:"Galaxy On7 (2016)"},{regex:"(?:SAMSUNG-)?SM-G611[FKLS]",model:"Galaxy On7 Prime"},{regex:"(?:SAMSUNG-)?SM-C500[0X]",model:"Galaxy C5"},{regex:"(?:SAMSUNG-)?SM-C501[08]",model:"Galaxy C5 Pro"},{regex:"(?:SAMSUNG-)?SM-C700[0X]",model:"Galaxy C7"},{regex:"(?:SAMSUNG-)?SM-C701[08FX]",model:"Galaxy C7 Pro"},{regex:"(?:SAMSUNG-)?SM-C710[08]",model:"Galaxy C8"},{regex:"(?:SAMSUNG-)?SM-C900[08FY]",model:"Galaxy C9 Pro"},{regex:"(?:SAMSUNG-)?SM-Z130H",model:"Galaxy Z1"},{regex:"(?:SAMSUNG-)?SM-Z200[FMY]",model:"Galaxy Z2"},{regex:"(?:SAMSUNG-)?SM-Z300H",model:"Galaxy Z3"},{regex:"(?:SAMSUNG-)?SM-Z400[FY]",model:"Galaxy Z4"},{regex:"(?:SAMSUNG-)?SM-(?:G150(?:N[0KLS])?|G155S)(?:[);/ ]|$)",model:"Galaxy Folder"},{regex:"(?:SAMSUNG-)?(?:SM-G16(?:0N|[05]0?|5N))(?:[);/ ]|$)",model:"Galaxy Folder 2"},{regex:"(?:SAMSUNG-)?SM-J321AZ(?:[);/ ]|$)",model:"Galaxy Sol"},{regex:"(?:SAMSUNG-)?SM-J326AZ(?:[);/ ]|$)",model:"Galaxy Sol 2"},{regex:"(?:SAMSUNG-)?SM-J336AZ(?:[);/ ]|$)",model:"Galaxy Sol 3"},{regex:"(?:SAMSUNG-)?SM-J727AZ(?:[);/ ]|$)",model:"Galaxy Halo"},{regex:"(?:SAMSUNG-)?SM-J327AZ",model:"Galaxy Amp Prime 2"},{regex:"(?:SAMSUNG-)?SM-J337AZ",model:"Galaxy Amp Prime 3 (2018)"},{regex:"(?:SAMSUNG-)?SM-(?:F900[0FUW]|F907[BN])|SCV44",model:"Galaxy Fold",device:"phablet"},{regex:"(?:SAMSUNG-)?SM-F916(?:U1|[0BNQUW])|SCG05",model:"Galaxy Z Fold 2 5G",device:"phablet"},{regex:"(?:SAMSUNG-)?GT-I9060(?:[);/ ]|$)",model:"Galaxy Grand Neo",device:"phablet"},{regex:"(?:SAMSUNG-)?GT-I9063",model:"Galaxy Grand Neo Duos",device:"phablet"},{regex:"(?:SAMSUNG-)?GT-I9(?:080|128)",model:"Galaxy Grand",device:"phablet"},{regex:"(?:SAMSUNG-)?GT-I9168",model:"Galaxy Grand Neo+",device:"phablet"},{regex:"(?:SAMSUNG-)?GT-I9082",model:"Galaxy Grand Duos",device:"phablet"},{regex:"(?:SAMSUNG-)?GT-N7000",model:"Galaxy Note",device:"phablet"},{regex:"(?:SC-01G|SCL24)(?:[);/ ]|$)",model:"Galaxy Note Edge",device:"phablet"},{regex:"(?:SAMSUNG-)?SM-N935[FSLK](?:[);/ ]|$)",model:"Galaxy Note Fan Edition",device:"phablet"},{regex:"(?:SAMSUNG-)?(?:(?:GT-)?N7100|SCH-(?:I605|N719|R950)|SPH-L900)(?:[);/ ]|$)",model:"Galaxy Note II",device:"phablet"},{regex:"(?:SAMSUNG-)?GT-N7105",model:"Galaxy Note II LTE",device:"phablet"},{regex:"(?:SAMSUNG-)?SM-G710(?:2T|5[HL]|[25689KLS])?(?:[);/ ]|$)",model:"Galaxy Grand 2",device:"phablet"},{regex:"(?:SAMSUNG-)?SM-G720(?:AX|N0|[02])(?:[);/ ]|$)",model:"Galaxy Grand Max"},{regex:"(?:SAMSUNG-)?SM-(?:G530(?:[689]W|[AF]Z|BT|MU|R[47]|[AFHMPTWY])|G531[FH]|S920L)(?:[);/ ]|$)",model:"Galaxy Grand Prime",device:"phablet"},{regex:"(?:SAMSUNG-)?SM-G531(?:BT|[MY])(?:[);/ ]|$)",model:"Galaxy Grand Prime VE Duos",device:"phablet"},{regex:"(?:SAMSUNG-)?SM-G532F(?:[);/ ]|$)",model:"Galaxy Grand Prime Plus",device:"phablet"},{regex:"(?:SAMSUNG-)?SM-G532MT(?:[);/ ]|$)",model:"Galaxy J2 Prime (TV)",device:"phablet"},{regex:"(?:SAMSUNG-)?SM-G532[MG](?:[);/ ]|$)",model:"Galaxy J2 Prime",device:"phablet"},{regex:"(?:SAMSUNG-)?SM-N7502(?:[);/ ]|$)",model:"Galaxy Note 3 Neo Duos",device:"phablet"},{regex:"(?:SAMSUNG-)?SM-N750[05LQ]?",model:"Galaxy Note 3 Neo",device:"phablet"},{regex:"(?:SAMSUNG-)?SM-N9002(?:[);/ ]|$)",model:"Galaxy Note 3 Duos",device:"phablet"},{regex:"(?:SAMSUNG-)?SM-9005(?:[);/ ]|$)",model:"Galaxy Note 3 LTE",device:"phablet"},{regex:"(?:SAMSUNG-)?(?:SM-N900(?:W8|[05689][VQ]?|[AKLPSTV])?|SCL22|SC-01F(?:[);/ ]|$))",model:"Galaxy Note 3",device:"phablet"},{regex:"(?:SAMSUNG-)?SM-(?:N910|910U)|N9100(?:[);/ ]|$)",model:"Galaxy Note 4",device:"phablet"},{regex:"(?:SAMSUNG-)?SM-N916[KLS]",model:"Galaxy Note 4 LTE",device:"phablet"},{regex:"(?:SAMSUNG-)?SM-N915",model:"Galaxy Note 4 Edge",device:"phablet"},{regex:"(?:SAMSUNG-)?SM-N920(?:R[467]|W8|[0ACFGIKLPSTVX])",model:"Galaxy Note 5",device:"phablet"},{regex:"(?:SAMSUNG-)?SM-N9208",model:"Galaxy Note 5 Duos",device:"phablet"},{regex:"(?:SAMSUNG-)?SM-G750(?:8Q|[9AFH])",model:"Galaxy Mega 2",device:"phablet"},{regex:"(?:SAMSUNG-)?GT-I915[028]",model:"Galaxy Mega 5.8",device:"phablet"},{regex:"(?:SAMSUNG-)?GT-I920[05]",model:"Galaxy Mega 6.3",device:"phablet"},{regex:"(?:SAMSUNG-)?(?:SM-N930(?:R[467]|W8|[0AFKLPSTUVX])|SCV34)",model:"Galaxy Note 7",device:"phablet"},{regex:"(?:SAMSUNG[- ])?SM-N950|SCV37|SC-01K",model:"Galaxy Note 8",device:"phablet"},{regex:"(?:SAMSUNG[- ])?(?:SM-N960|SCV40|SC-01L)",model:"Galaxy Note 9",device:"phablet"},{regex:"(?:SAMSUNG[- ])?SM-(?:N970(?:U1|W8|[089DFJKLSUWX])|N971N)",model:"Galaxy Note 10",device:"phablet"},{regex:"(?:SAMSUNG[- ])?SM-N770[FX]",model:"Galaxy Note 10 Lite",device:"phablet"},{regex:"(?:SAMSUNG[- ])?(?:SM-N975(?:U1|XU|[0CFUWX])|SM-N976[0BVNQU]|SC-01M|SCV45)",model:"Galaxy Note 10+",device:"phablet"},{regex:"(?:SAMSUNG[- ])?(?:SM-N980(?:F/DS|F))",model:"Galaxy Note 20",device:"phablet"},{regex:"(?:SAMSUNG[- ])?(?:SM-N981(?:B/DS|U1|[0BNUW]))",model:"Galaxy Note 20 5G",device:"phablet"},{regex:"(?:SAMSUNG[- ])?(?:SM-N985(?:F/DS|F))",model:"Galaxy Note 20 Ultra",device:"phablet"},{regex:"(?:SAMSUNG[- ])?(?:SM-N986(?:B/DS|U1|[0BNUW])|SC-53A|SCG06)",model:"Galaxy Note 20 Ultra 5G",device:"phablet"},{regex:"(?:SAMSUNG-)?SM-W750V",model:"Ativ SE"},{regex:"(?:SAMSUNG-)?SM-G310R5",model:"GreatCall Touch 3"},{regex:"(?:SAMSUNG-)?GT-E2152",model:"E2152",device:"feature phone"},{regex:"(?:SAMSUNG-)?(GT-(P|N8|N5)[0-9]+[a-z]?)",device:"tablet",model:"$1"},{regex:"SC-02C",model:"Galaxy S II"},{regex:"(?:SAMSUNG-)?((?:SM-[TNP]|GT-P)[a-z0-9_\\-]+)",device:"tablet",model:"$1"},{regex:"((?:SCH|SGH|SPH|SHV|SHW|GT|SM)-[a-z0-9_\\-]+)",model:"$1"},{regex:"SMART-TV",device:"tv",model:"Smart TV"},{regex:"Galaxy ([^/;]+) Build",model:"Galaxy $1"},{regex:"Galaxy ([a-z0-9]+)",model:"Galaxy $1"},{regex:"SAMSUNG[\\-][ ]?([a-z0-9]+[\\-_][a-z0-9]+)",model:"$1"},{regex:"SAMSUNG;[ ]?([a-z0-9]+[\\-_][a-z0-9]+)",model:"$1"},{regex:"SAMSUNG[ _/\\-]?([a-z0-9\\-]+)",model:"$1"},{regex:"SAMSUNG;[ ]?([a-z0-9 ]+)",model:"$1"},{regex:"SEC-([a-z0-9]+)",model:"$1"},{regex:"SAM-([a-z0-9]+)",model:"SCH-$1"},{regex:"(?:portalmmm|o2imode)/2\\.0 ([SZ][a-z0-9]+)",model:"$1"},{regex:"sam([rua][0-9]+)",model:"SCH-$1"}]},Sanei={regex:"(?:8312D|G(60[25]|70[3568]G?|785|803)|N83(?:-2cpu)?|N91) Build",device:"smartphone",models:[{regex:"N83",model:"N83"},{regex:"N91",model:"N91"},{regex:"8312D",model:"G101"},{regex:"G(60[25]|70[3568]G?|785|803)",model:"G$1"}]},Selfix={regex:"SELFIX",device:"smartphone",models:[{regex:"SELFIX_SLASH6",model:"Slash 6"},{regex:"VOYAGER-V45",model:"Voyager V45"}]},Sencor={regex:"Sencor|ELEMENT[ _]?(?:7|8|9\\.7|10[ _]1)(?:[ _]?V[23])?(?:[);/ ]|$)|ELEMENT[ _]?(?:P[0-9]+|10.1 Q001)(?:[);/ ]|$)",device:"tablet",models:[{regex:"(?:SENCOR[ _])?Element (10\\.1) (Q001)",model:'Element $1" $2'},{regex:"(?:SENCOR[ _])?ELEMENT[ _]?7[ _]?V3",model:"Element 7 V3"},{regex:"(?:SENCOR[ _])?ELEMENT[ _]?7[ _]?V2[ _]BASIC",model:"Element 7 V2 Basic"},{regex:"(?:SENCOR[ _])?ELEMENT[ _]?7[ _]?V2",model:"Element 7 V2"},{regex:"(?:SENCOR[ _])?ELEMENT[ _]8[ _]?V3",model:"Element 8 V3"},{regex:"(?:SENCOR[ _])?ELEMENT[ _]8[ _]?V2",model:"Element 8 V2"},{regex:"(?:SENCOR[ _])?ELEMENT8",model:"Element 8"},{regex:"(?:SENCOR[ _])?ELEMENT[ _]9\\.7[ _]?V3",model:"Element 9.7 V3"},{regex:"(?:SENCOR[ _])?ELEMENT[ _]9\\.7[ _]?V2",model:"Element 9.7 V2"},{regex:"(?:SENCOR[ _])?ELEMENT[ _]9\\.7",model:"Element 9.7"},{regex:"(?:SENCOR[ _])?ELEMENT10[ _]1",model:"Element 10.1"},{regex:"(?:SENCOR[ _])?(7Q105)(?:[);/ ]|$)",model:"$1"},{regex:"(?:SENCOR[ _])?ELEMENT[ _]?P([0-9]+)",model:"Element P$1",device:"smartphone"},{regex:"Sencor[ _]([^;/]+) Build",model:"$1"}]},Senwa={regex:"Senwa|(?:S\\-?(?:471|7[12]5|6[01]5|915|905TL|1000|5018)|V705B|LS50F| LS50?|LS5518H|LS5718)(?:[);/ ]|$)",device:"smartphone",models:[{regex:"S-?471(?:[);/ ]|$)",model:"Jazz"},{regex:"S-?605(?:[);/ ]|$)",model:"City"},{regex:"S-?905TL(?:[);/ ]|$)",model:"Odin"},{regex:"S-?1000(?:[);/ ]|$)",model:"Odin"},{regex:"S-?5018(?:[);/ ]|$)",model:"Inizio"},{regex:"S-?(615|7[12]5|915)(?:[);/ ]|$)",model:"S$1"},{regex:"V705B(?:[);/ ]|$)",model:"V705B"},{regex:"LS50F(?:[);/ ]|$)",model:"Evolution"},{regex:" LS50(?:[);/ ]|$)",model:"Pegasus"},{regex:" LS5(?:[);/ ]|$)",model:"Thor"},{regex:"LS5518H(?:[);/ ]|$)",model:"Sparkly"},{regex:"LS5718(?:[);/ ]|$)",model:"Diamond"},{regex:"Senwa[ _-]*([^;/]+)(?: Build|[;)])",model:"$1"}]},Sky={regex:"(?:SKY|Elite|Fuego)[_ ][3-7]\\.[05](?:[A-Z]{1,2})?|Elite[ _](?:5_0T|M45|[45]T|45T|GO|M5Plus|T55|T[46]|[AB]5|5_5_Octa)|Platinum[_ ](?:5.0M|5\\.5C|5\\.0+|M5|[ABCM]4|[ACG]55|[ABDEFG]5|A57|P9|X|UNO|VIEW2|O|4\\.0|4_0Plus)|PLATINUMVIEW|SKY[ _](?:55M|Pro_III)",device:"smartphone",models:[{regex:"Platinum[_ ](?:5\\.0M|M5)",model:"Platinum 5.0M"},{regex:"Platinum[_ ]5\\.5C",model:"Platinum 5.5C"},{regex:"Platinum[_ ]5\\.0\\+",model:"Platinum 5.0 Plus"},{regex:"Platinum_4_0Plus",model:"Platinum 4.0 Plus"},{regex:"Platinum[ _]4\\.0",model:"Platinum 4.0"},{regex:"Platinum[_ ](P9) Pro(?:[);/ ]|$)",model:"Platinum $1 Pro"},{regex:"Platinum[_ ]([ABCM]4|[ACG]55|[ABDEFG]5|A57|P9|X|UNO|O)(?:[);/ ]|$)",model:"Platinum $1"},{regex:"Platinum[_ ]?VIEW(2)?(?:[);/ ]|$)",device:"tablet",model:"Platinum View$1"},{regex:"Elite_5_5_Octa",model:"Elite 5.5 Octa"},{regex:"Elite M5Plus",model:"Elite M5 Plus"},{regex:"Elite[ _](M45|Go|[45]T|T[46]|T55|[AB]5|A55|45T)(?:[);/ ]|$)",model:"Elite $1"},{regex:"Elite[_ ]([3-7])[\\._]([05](?:[A-Z]{1,2})?\\+?)",model:"Elite $1.$2"},{regex:"Fuego[_ ]([3-7]\\.[05](?:[A-Z]{1,2})?\\+?)",model:"Fuego $1"},{regex:"SKY_Pro_III",model:"Pro III"},{regex:"SKY 55M",model:"55M"},{regex:"SKY[_ ]([3-7]\\.[05](?:[A-Z]{1,2})?)",model:"$1"}]},Skyworth$1={regex:"Sky_?worth",device:"tv",models:[{regex:"Sky_?worth ([^;/]+) Build",model:"$1"}]},Smartfren={regex:"Smartfren|Androtab|Andromax|PD6D1J|AD682J|AD68[89]G|AD6B1H|AD9A1H|AD682H|AD683G",device:"smartphone",models:[{regex:"S7 Build",model:"Andromax Tab 7.0",device:"tablet"},{regex:"PD6D1J",model:"Andromax V3s"},{regex:"AD682J",model:"Andromax T"},{regex:"AD688G",model:"Andromax C2"},{regex:"AD689G",model:"Andromax i3"},{regex:"AD682H",model:"Andromax i3s"},{regex:"AD6B1H",model:"Andromax G2 Hot"},{regex:"AD9A1H",model:"Andromax G2"},{regex:"AD683G",model:"Andromax I"},{regex:"New Andromax-i",model:"New Andromax I"},{regex:"Andromax[ _\\-]([^/;]+) Build",model:"Andromax $1"},{regex:"Andromax[ _\\-]([a-z0-9]+)",model:"Andromax $1"},{regex:"Smartfren[ _\\-]([^/;\\)]+)(?: Build|[/;\\)])",model:"$1"},{regex:"(Androtab[^/;]+) Build",model:"$1",device:"tablet"}]},Smartisan={regex:"(SM(?:70[15]|[89]01|919)|OD10[35]|YQ60[1357]|DE106|DT1901A|O[CE]106|OS103|O[CS]105)[ /;\\)]",device:"smartphone",models:[{regex:"SM70[15]",model:"T1"},{regex:"SM801",model:"T2"},{regex:"SM901",model:"M1"},{regex:"SM919",model:"M1L"},{regex:"YQ60[1357]",model:"U1"},{regex:"OD10[35]",model:"Pro"},{regex:"OS105[ /;\\)]",model:"Pro 2"},{regex:"DE106[ /;\\)]",model:"R1"},{regex:"OE106[ /;\\)]",model:"Nut Pro 2s"},{regex:"OC10[56][ /;\\)]",model:"Nut 3"},{regex:"DT1901A[ /;\\)]",model:"Nut Pro 3"},{regex:"OS103[ /;\\)]",model:"JianGuo Pro 2"}]},STK={regex:"STK[_ ]",device:"smartphone",models:[{regex:"STK[_ ]([^/;]+) Build",model:"$1"},{regex:"STK[_ ]([a-z0-9]+)",model:"$1"}]},Stonex={regex:"STX[ -]([^;/]+)|STONE EVO",device:"smartphone",models:[{regex:"STX[ -]([^;/]+) Build",model:"$1"},{regex:"STX[ -]([a-z0-9_-]+)",model:"$1"}]},SuperSonic={regex:"(SC-[0-9]+[a-z]+)",device:"tablet",model:"$1"},Supra={regex:"SUPRA|NVTAB 7.0 3G",device:"smartphone",models:[{regex:"SUPRA[ _]([^;/)]+)(?: Build|[;)])",device:"tablet",model:"$1"},{regex:"(NVTAB 7.0 3G)",device:"tablet",model:"$1"}]},Sumvision={regex:"(Cyclone [^/;]+) Build",device:"tablet",model:"$1"},SunVan={regex:"SUNVAN[ _\\-]",device:"smartphone",models:[{regex:"SUNVAN[ _\\-]?([^/;]+) Build",model:"$1"},{regex:"SUNVAN[ _\\-]?([^);/ ]+)",model:"$1"}]},SWISSMOBILITY={regex:"(?:SCHR9GR|PRA(?:U8|100)|ZUR(?:722M|70016W?|700[RW]|805A))(?:[);/ ]|$)",device:"smartphone",models:[{regex:"SCHR9GR",model:"SCHON R9"},{regex:"PRA(U8|100)",model:"PRA$1"},{regex:"ZUR722M",device:"phablet",model:"Z72 go"},{regex:"ZUR(70016W?|700[RW]|805A)(?:[);/ ]|$)",device:"tablet",model:"ZUR$1"}]},Thomson$2={regex:"(?:Primo(7|8)|QM73[45]-8G|QM734-2|QM736-8G\\(HD\\)|(?<!\\.)8950|MID1002|5014G|TEO7RK|Friendly_TH101|Delight TH201)(?:[);/ ]|$)|(?:Tlink|Every)[0-9]+|THOMSON,",device:"tablet",models:[{regex:"Primo(7|8)",model:"Primo $1"},{regex:"QM734-2",model:"QM734-2"},{regex:"QM734-8G",model:"QM734-8G"},{regex:"QM735-8G",model:"QM735-8G"},{regex:"QM736-8G\\(HD\\)",model:"QM736-8G (HD)"},{regex:"(?<!\\.)8950(?:[);/ ]|$)",model:"3G 8950"},{regex:"TEO7RK(?:[);/ ]|$)",model:"TEO7RK"},{regex:"5014G(?:[);/ ]|$)",device:"smartphone",model:"5014G"},{regex:"Tlink([0-9]+)",device:"smartphone",model:"Tlink$1"},{regex:"Every([0-9]+)",device:"smartphone",model:"Every$1"},{regex:"Delight TH201",device:"smartphone",model:"Delight TH201"},{regex:"Friendly_TH101",device:"smartphone",model:"Friendly TH101"},{regex:"((?:49|55)UC6306|55UC63|32HD55|40FD54|55UD63)",device:"tv",model:"$1"}]},Tanix={regex:"TX5 MAX(?:[);/ ]|$)",device:"tv",model:"TX5 Max"},Pantech={regex:"Pantech|P[GN]-|PT-[a-z0-9]{3,}|(?<!Winmax )TX[T]?[0-9]+|IM-[a-z0-9]+(?:[);/ ]|$)|ADR910L",device:"smartphone",models:[{regex:"ADR910L",model:"Star Q"},{regex:"IM-A870K",model:"Vega Iron"},{regex:"Pantech[ \\-]?([a-z0-9]+)",model:"$1"},{regex:"Pantech_([a-z0-9\\-]+)",model:"$1"},{regex:"(P[GTN]-[a-z0-9]+)",model:"$1"},{regex:"(TX[T]?[0-9]+)",model:"$1"},{regex:"(IM-[a-z0-9]+)(?:[);/ ]|$)",model:"$1"}]},Ployer={regex:"MOMO([0-9]|[ ]?mini[ ]?(?:S|3GS)?)",device:"tablet",models:[{regex:"MOMOminiS",model:"MOMO mini S"},{regex:"momo mini 3GS",model:"MOMO Mini 3GS"},{regex:"MOMO([0-9][^);/]*) Build",model:"MOMO $1"},{regex:"MOMO([0-9][^);/]*)(?:[);/]|$)",model:"MOMO $1"}]},Plum={regex:"PLUM[ _]",device:"smartphone",models:[{regex:"Z405",model:"Gator 3"},{regex:"Z407",model:"Axe 4"},{regex:"Z516",model:"Compass"},{regex:"Z811",device:"tablet",model:"Optimax 11"},{regex:"Z709",device:"tablet",model:"Optimax 7"},{regex:"Z712",device:"tablet",model:"Optimax 12"}]},Polaroid$1={regex:"Polaroid|(?:PMID|MIDC)[0-9a-z]+(?:[);/ ]|$)|MID(?:1014|0714)|PRO[VG]?(?:[0-9]{3,}[a-z]*|[0-9]{2}[a-z])|(?:P(?:400[56]|4526|500[56]|502[56]|504[67]|552[56])A|P902/A900|PSPC(?:505|550|[MZL]20A0|K2[01]NA)|SIGMA 5|MIDS145PXE|MIDS747PX|MID4004JBL|MIDS185PR|PSPTD21NA)(?:[);/ ]|$)",device:"smartphone",models:[{regex:"P4005A",model:"Turbo C4"},{regex:"P5005A",model:"Turbo C5"},{regex:"P4006A",model:"Turbo D4"},{regex:"PSPTD21NA",model:"Turbo D2 Plus"},{regex:"P4526A",model:"Turbo E"},{regex:"PSPC(505|550)",model:"Cosmo $1"},{regex:"P5006A",model:"Cosmo K"},{regex:"P5526A",model:"Cosmo K Plus"},{regex:"PSPCK20NA",model:"Cosmo K2"},{regex:"PSPCK21NA",model:"Cosmo K2 Plus"},{regex:"P5026A",model:"Cosmo L"},{regex:"PSPCL20A0",model:"Cosmo L2"},{regex:"PSPCM20A0",model:"Cosmo M2"},{regex:"P5046A",model:"Cosmo P5s"},{regex:"P5525A",model:"Cosmo Q5s"},{regex:"P5047A",model:"Cosmo Z"},{regex:"PSPCZ20A0",model:"Cosmo Z2"},{regex:"P5025A",model:"L5s"},{regex:"PRO4611(?:PR201)?",model:"Pro4611"},{regex:"PROV400",model:"Agate"},{regex:"PROV350",model:"ProV350"},{regex:"SIGMA 5(?:[);/ ]|$)",model:"Sigma 5"},{regex:"PRO([VG]?(?:[0-9]{3,}[a-z]*|[0-9]{2}[a-z]))",model:"Pro$1"},{regex:"PSPT350",model:"Turbo 350 Gris"},{regex:"MIDS185PR",model:'Pure 10.1"'},{regex:"(MID(?:1014|0714|S145PXE|S747PX|4004JBL))",model:"$1",device:"tablet"},{regex:"((?:PMID|MIDC)[0-9a-z]+)(?:[);/ ]|$)",model:"$1",device:"tablet"},{regex:"(P902/A900)(?:[);/ ]|$)",model:"$1",device:"tablet"},{regex:"Polaroid",model:"",device:"tablet"}]},PolyPad={regex:"POLY ?PAD",device:"tablet",models:[{regex:"POLY ?PAD[_ \\.]([a-z0-9]+)(?:[);/ ]|$)",model:"$1"},{regex:"POLY ?PAD[_\\.]([a-z0-9]+)",model:"$1"}]},Polytron={regex:"POLYTRON|W8480|W7430|PW1100S|W7550|W7531|W8570|R2401",device:"smartphone",models:[{regex:"R2508",model:"Rocket"},{regex:"POLYTRON[ _]R1500",model:"Rocket Q-Five"},{regex:"R2401",model:"Rocket 2X"},{regex:"POLYTRON[ _-]R2402",model:"Rocket R2402"},{regex:"POLYTRON[ _-]R2403",model:"Rocket R1"},{regex:"POLYTRON[ _-]R2406",model:"Rocket R2"},{regex:"POLYTRON[ _-]R2407",model:"Rocket R3"},{regex:"POLYTRON[ _-]R2452",model:"Rocket S1"},{regex:"POLYTRON[ _-]R2457",model:"Rocket S2"},{regex:"POLYTRON[ _-]R2501",model:"Rocket T1"},{regex:"POLYTRON[ _-]R2507",model:"Rocket T3"},{regex:"POLYTRON[ _-]R2509SE",model:"Rocket T6 SE"},{regex:"POLYTRON[ _-]R2509",model:"Rocket T6"},{regex:"POLYTRON[ _-]R250A",model:"Rocket T7"},{regex:"POLYTRON[ _-]R2506",model:"Rocket T4"},{regex:"POLYTRON[ _-](?:R3450|W1400)",model:"Rocket Jetz"},{regex:"POLYTRON[ _-]R3500",model:"Rocket Jetz 5.0"},{regex:"4G450",model:"Zap 5"},{regex:"W6500",model:"Quadra Rocket"},{regex:"W7452",model:"Quadra S2"},{regex:"W7550",model:"Quadra V5"},{regex:"W8570",model:"Quadra V7"},{regex:"POLYTRON[ _]L501",model:"Rocket L501"},{regex:"POLYTRON[ _]P520",model:"Prime 7S"},{regex:"POLYTRON[ _]P552",model:"Prime 7 Pro"},{regex:"4G500",model:"Zap 6 Cleo"},{regex:"W8480",model:"Crystal 4 W8480"},{regex:"W7531",model:"Wizard V"},{regex:"W7430",model:"Quadra Mini W7430"},{regex:"POLYTRON[ _]4G501",model:"Zap 6 Posh"},{regex:"POLYTRON[ _]4G502",model:"Zap 6 Power"},{regex:"POLYTRON[ _]4G503",model:"Zap 6 Flaz"},{regex:"POLYTRON[_ ]?[ _]4G550",model:"Zap 6 Note"},{regex:"POLYTRON[ _]4G551",model:"Zap 6 Posh Note"},{regex:"PW1100S",model:"PW1100S"},{regex:"Q2352",model:"Q2352"},{regex:"POLYTRON[ _]T7800",model:"Cosmica T7800",device:"tablet"},{regex:"POLYTRON[ _]T7700",model:"Rocket Pad",device:"tablet"}]},Positivo={regex:"YPY_S450",device:"smartphone",models:[{regex:"YPY_S450",model:"YPY S450"}]},Prestigio={regex:"Prestigio 5500 DUO|(?:PMP|PAP|PMT|PSP|PGPS)[0-9]+[a-z0-9_]+(?:[);/ ]|$)|Muze C3",device:"tablet",models:[{regex:"PMT3277_3G",model:"MultiPad Ranger 7.0 3G"},{regex:"PGPS7799CIS08GBPG(?:[);/ ]|$)",model:"Geo Vision Tour 3"},{regex:"PGPS7797(?:[);/ ]|$)",model:"Geo Vision Tour 2"},{regex:"PMT3201_4G",model:"Grace 4G"},{regex:"PSP5551DUO",model:"Grace S5"},{regex:"PMT3287_3G",model:"MultiPad Ranger 8.0 3G"},{regex:"Prestigio 5500 DUO",model:"MultiPhone 5500 Duo",device:"smartphone"},{regex:"PMT3208[_ ]3G",model:"MultiPad Wize 8.0 3G"},{regex:"PSP7546DUO([ _][A-Z]{2})?",model:"X Pro"},{regex:"PSP7610DUO([ _][A-Z]{2})?",model:"S Max"},{regex:"(PM[PT][0-9]+[a-z0-9_]+)(?:[);/ ]|$)",model:"$1"},{regex:"((?:PAP|PSP)[0-9]+[a-z0-9_]+(?: DUO)?)(?:[);/ ]|$)",model:"$1",device:"smartphone"},{regex:"Muze C3(?:[);/ ]|$)",model:"Muze C3",device:"smartphone"}]},Sanyo={regex:"Sanyo|MobilePhone[ ;]",device:"feature phone",models:[{regex:"SCP-?6750",model:"Katana Eclipse X"},{regex:"SCP-?6760",model:"Incognito"},{regex:"SCP-?6780",model:"Innuendo"},{regex:"SANYO[ /_-]([a-z0-9\\-]+)",model:"$1"},{regex:"MobilePhone ([a-z0-9\\-]+)",model:"$1"}]},Qilive$1={regex:"Qilive [0-9][^;/]*|Q(7S5[5]?IN4G|7T10INP|8T10IN|8S55IN4G2|8S[56]IN4G|9T9IN|9T(?:7|10)IN4G|9S55IN4G|10S5[37]IN4G|10S[56]IN4G|10S[56]IN4GR|9S5IN4G|6T7IN)",device:"smartphone",models:[{regex:"Q7S5IN4G",model:'Q7 5.0" 4G'},{regex:"Q7S55IN4G",model:'Q7 5.5" 4G'},{regex:"Q8S55IN4G2",model:'Q8 5.5" 4G'},{regex:"Q8S6IN4G",model:'Q8 6.0" 4G'},{regex:"Q8S5IN4GP",model:'Q8 5.1" 4G'},{regex:"Q9S5IN4G",model:'Q9 5.0" 4G'},{regex:"Q9S55IN4G",model:'Q9 5.5" 4G'},{regex:"Q10S53IN4G",model:'Q10 5.3" 4G'},{regex:"Q10S57IN4G",model:'Q10 5.7" 4G'},{regex:"Q10S5IN4G[R]?",model:'Q10 5.0" 4G'},{regex:"Q10S6IN4G",model:'Q10 6.0" 4G'},{regex:"Q6T7IN",model:"Q6",device:"tablet"},{regex:"Q7T10INP",model:'Q7 10.1"',device:"tablet"},{regex:"Q8T10IN",model:'Q8 10.1"',device:"tablet"},{regex:"Q9T7IN4G",model:'Q9 7.0" 4G',device:"tablet"},{regex:"Q9T9IN",model:'Q9 9.0"',device:"tablet"},{regex:"Q9T10IN4G",model:'Q9 10.1" 4G',device:"tablet"},{regex:"Qilive ([0-5][^;/]*) Build",model:"$1"},{regex:"Qilive ([0-5][^;/]*)/",model:"$1"},{regex:"Qilive ([6-9][^;/]*) Build",model:"$1",device:"tablet"},{regex:"Qilive ([6-9][^;/]*)/",model:"$1",device:"tablet"}]},QMobile={regex:"QMobile|QTab(?!10EW)|Q-Smart|(?:E2 Noir|Noir X1S|LUNA PRO|NICE S|JazzX JS(?:[27]|10)(?: PRO)?|LT[57]00 PRO|LT950|Q Infinity|Hot Pro 2)(?:[);/ ]|$)",device:"smartphone",models:[{regex:"JazzX JS7 PRO",model:"Jazz X JS7 Pro"},{regex:"JazzX JS(2|10)",model:"Jazz X JS$1"},{regex:"Noir X1S",model:"Noir X1S"},{regex:"E2 Noir",model:"E2 Noir"},{regex:"Hot Pro 2",model:"Hot Pro 2"},{regex:"LT([57]00) PRO",model:"Noir LT$1 Pro"},{regex:"LUNA PRO",model:"Luna Pro"},{regex:"NICE S",model:"Nice S"},{regex:"Q Infinity PRO",model:"Q Infinity Pro"},{regex:"Q Infinity E Lite",model:"Q Infinity E Lite"},{regex:"Q Infinity ([FCB])",model:"Q Infinity $1"},{regex:"(LT950)(?:[);/ ]|$)",model:"$1"},{regex:"QTab[ _-]([^;/]+) Build",model:"$1 Tab",device:"tablet"},{regex:"QTab[ _-]([^;/)]+)(?:[;/)]|$)",model:"$1 Tab",device:"tablet"},{regex:"(?:QMobile|Q-Smart)[ _-]([^;/]+) Build",model:"$1"},{regex:"(?:QMobile|Q-Smart)[ _-]([^;/)]+)(?:[;/)]|$)",model:"$1"},{regex:"Q Infinity",model:"Q Infinity"}]},Maximus={regex:"Maximus[ _]|(Noir X)(?:[);/ ]|$)",device:"smartphone",models:[{regex:"(?:Maximus[ _])?(Noir X|D1)(?:[);/ ]|$)",model:"$1"},{regex:"Maximus_(T2)",device:"tablet",model:"$1"}]},Quantum={regex:"Quantum (?:Fit|MUV (?:PRO|UP)|Go|Mini|V|You [2E])(?:[);/ ]|$)",device:"smartphone",models:[{regex:"Quantum (Fit|Go|Mini|V|You [2E])(?:[);/ ]|$)",model:"$1"},{regex:"Quantum MUV PRO(?:[);/ ]|$)",model:"MUV Pro"},{regex:"Quantum MUV UP(?:[);/ ]|$)",model:"MUV Up"}]},Quechua={regex:"Quechua Phone 5",device:"smartphone",model:"Quechua Phone 5"},Ramos={regex:"Ramos ?([^/;]+) Build|MOS1(?:[);/ ]|$)",device:"tablet",models:[{regex:"(MOS1)(?:[);/ ]|$)",model:"$1"},{regex:"Ramos ?([^/;]+) Build",model:"$1"}]},Razer={regex:"Phone 2",device:"smartphone",model:"Phone 2"},Sendo={regex:"Sendo([a-z0-9]+)",device:"feature phone",model:"$1"},Turbo={regex:"Turbo[_ ]?(?:X5[_ ]?(?:Max|Black|Space|Hero)|X8|X6[ _]Z|X[ _]Ray)(?:[);/ ]|$)",device:"smartphone",models:[{regex:"TurboX5Space(?:[);/ ]|$)",model:"X5 Space"},{regex:"TurboX5Hero(?:[);/ ]|$)",model:"X5 Hero"},{regex:"TurboX[ _]Ray(?:[);/ ]|$)",model:"X Ray"},{regex:"Turbo[ _]?X5[ _]?Black(?:[);/ ]|$)",model:"X5 Black"},{regex:"Turbo[ _]X5[ _]Max(?:[);/ ]|$)",model:"X5 Max"},{regex:"Turbo[ _]X6[ _]Z(?:[);/ ]|$)",model:"X6 Z"},{regex:"Turbo[ _]X8(?:[);/ ]|$)",model:"X8"}]},Sigma={regex:"Sigma(?!Designs)|(X[_-]Style[ _]?Tab[_ ]A([0-9]{2,3})|X[-_ ]?treme[-_ ]?PQ[0-9]{2}|X-Style_S5501)(?:[);/ ]|$)",device:"smartphone",models:[{regex:"(?:Sigma[ _])?X[-_ ]?treme[-_ ]?PQ([0-9]{2})(?:[);/ ]|$)",model:"X-Treme PQ$1"},{regex:"X[_-]Style[ _]?Tab[_ ]A([0-9]{2,3})(?:[);/ ]|$)",model:"X-Style Tab A$1",device:"tablet"},{regex:"(?:Sigma[ _])?X[-_ ]?Style[-_ ]S([0-9]+)(?:[);/ ]|$)",model:"X-Style S$1"}]},Spice={regex:"(?<![\\d];)Spice",device:"smartphone",models:[{regex:"Spice[ _\\-]?([^/;]+)(?:[\\)]| Build)",model:"$1"},{regex:"Spice[ _\\-]?([^/;]+)(?:/|$)",model:"$1"}]},Sharp$1={regex:"SHARP|SBM|SH-?[0-9]+[a-z]?(?:[);/ ]|$)|AQUOS|(?:SH-M0[14-9]|SH-M1[1-6](?:-y)?|S[357]-SH|SH-[MZ](10|01)|SH-[CL]02|SH-RM(?:1[125]|02)|[34]04SH|401SH|[45]02SH|306SH|[36]05SH|70[1246]SH|80[138]SH|90[1678]SH|50[3679]SH|SHL2[25]|SHV4[0-8]|SHV3[1-9](?:[-_]u)?|FS80(?:1[08]|32|28|0[29])|TG-L900S|NP601SH|403SH|603SH|SHF3[134]|SHV4[035][-_]u|SW001SH|SHG0[123]|X4-SH|A002SH|SH-A01|DM-01J|SH-D01|A001SH|606SH|FS801[56]|d-41A|NP80[567]SH|NP501SH)(?:[);/ ]|$)",device:"smartphone",models:[{regex:"506SH(?:[);/ ]|$)",model:"Aquos Xx3"},{regex:"603SH(?:[);/ ]|$)",model:"Aquos Xx3 Mini"},{regex:"50[23]SH(?:[);/ ]|$)",model:"Aquos Xx2"},{regex:"[34]04SH(?:[);/ ]|$)",model:"Aquos Xx"},{regex:"606SH(?:[);/ ]|$)",model:"Aquos ea"},{regex:"507SH(?:[);/ ]|$)",model:"Android One"},{regex:"S3-SH(?:[);/ ]|$)",model:"Android One S3"},{regex:"S5-SH(?:[);/ ]|$)",model:"Android One S5"},{regex:"S7-SH(?:[);/ ]|$)",model:"Android One S7"},{regex:"X4-SH(?:[);/ ]|$)",model:"Android One X4"},{regex:"SH-M04(?:[);/ ]|$)",model:"Aquos SH-M04"},{regex:"SH-M05(?:[);/ ]|$)",model:"Aquos Sense Lite"},{regex:"SH-M07(?:[);/ ]|$)",model:"Aquos Sense Plus"},{regex:"SHG03(?:[);/ ]|$)",model:"Aquos Sense 5G"},{regex:"SH-D01(?:[);/ ]|$)",model:"Aquos D10"},{regex:"SH-M12(?:-y)?(?:[);/ ]|$)",model:"Aquos S3 Dual SIM"},{regex:"(?:SH-[MZ]10|801SH)(?:[);/ ]|$)",model:"Aquos Zero"},{regex:"(?:SH-M13|906SH)(?:[);/ ]|$)",model:"Aquos Zero 2"},{regex:"(?:SHG02|A002SH)(?:[);/ ]|$)",model:"Aquos Zero 5G Basic"},{regex:"SH-Z01(?:[);/ ]|$)",model:"Aquos S2 (C10)"},{regex:"(?:SH-02E|SH-01[GH]|SH-04H)(?:[);/ ]|$)",model:"Aquos Phone Zeta"},{regex:"SH-?06D(?:[);/ ]|$)",model:"Aquos Phone SH-06D"},{regex:"(SHL2[25]|SH-M01)(?:[);/ ]|$)",model:"Aquos Phone $1"},{regex:"SH-L02(?:[);/ ]|$)",model:"Aquos L2"},{regex:"(?:605SH|SH-03J|SHV39)(?:[);/ ]|$)",model:"Aquos R"},{regex:"(?:605SH|SH-03J|SHV39)(?:[);/ ]|$)",model:"Aquos R"},{regex:"(?:701SH|SHV41|SH-M06)(?:[);/ ]|$)",model:"Aquos R Compact"},{regex:"(?:SH-M09|SHV42|706SH|SH-03K)(?:[);/ ]|$)",model:"Aquos R2"},{regex:"803SH(?:[);/ ]|$)",model:"Aquos R2 Compact"},{regex:"(?:908SH|SHG01|SH-M14)(?:[);/ ]|$)",model:"Aquos R5G"},{regex:"SH-M16(?:[);/ ]|$)",model:"Aquos S4 Plus"},{regex:"SH-M15(?:[);/ ]|$)",model:"Aquos S4 SIM"},{regex:"SH-C02(?:[);/ ]|$)",model:"Aquos V"},{regex:"(SHF3[134])(?:[);/ ]|$)",model:"Aquos K $1"},{regex:"704SH(?:[);/ ]|$)",model:"Simple Smartphone 4"},{regex:"(?:SH-02J|SH-04G)(?:[);/ ]|$)",model:"Aquos Ever"},{regex:"SH-02H(?:[);/ ]|$)",model:"Aquos Compact"},{regex:"30[56]SH(?:[);/ ]|$)",model:"Aquos Crystal"},{regex:"402SH(?:[);/ ]|$)",model:"Aquos Crystal X"},{regex:"403SH(?:[);/ ]|$)",model:"Aquos Crystal 2"},{regex:"509SH(?:[);/ ]|$)",model:"Aquos 3"},{regex:"NP601SH(?:[);/ ]|$)",model:"Aquos 2"},{regex:"(?:SHV40|SHV3[24])(?:_u)?(?:[);/ ]|$)",model:"Aquos S"},{regex:"702SH(?:[);/ ]|$)",model:"Aquos S Basic"},{regex:"SHV3[183](?:[);/ ]|$)",model:"Aquos S Mini"},{regex:"(?:FS8010|SH-M08|SHV43(?:-u)?|SH-01[KL])(?:[);/ ]|$)",model:"Aquos S2"},{regex:"FS8016(?:[);/ ]|$)",model:"Aquos S2 Plus"},{regex:"(?:SHV46|SH-R?M11|901SH)(?:[);/ ]|$)",model:"Aquos S3 Plus"},{regex:"(?:SHV44|808SH|SH-04L|SH-03G)(?:[);/ ]|$)",model:"Aquos R3"},{regex:"(?:FS8032|FS8015|SH-02M|SHV45(?:-U)?)(?:[);/ ]|$)",model:"Aquos S3"},{regex:"FS8018(?:[);/ ]|$)",model:"Aquos S3 Mini"},{regex:"(?:SHV48|907SH)(?:[);/ ]|$)",model:"Aquos S3 Basic"},{regex:"SH-RM12(?:[);/ ]|$)",model:"Aquos S3 Lite"},{regex:"SH-RM15(?:[);/ ]|$)",model:"Aquos S4 Lite"},{regex:"SH-51A(?:[);/ ]|$)",model:"Aquos R5G"},{regex:"SHV3[57](?:_u)?(?:[);/ ]|$)",model:"Aquos U"},{regex:"TG-L900S(?:[);/ ]|$)",model:"Luna S"},{regex:"SH-A01(?:[);/ ]|$)",model:"B10"},{regex:"(?:FS8002|SHV47)(?:[);/ ]|$)",model:"Z2"},{regex:"FS8009(?:[);/ ]|$)",model:"Z3"},{regex:"FS8028(?:[);/ ]|$)",model:"R1S"},{regex:"SHV36(?:[);/ ]|$)",model:"Basio 2"},{regex:"SW001SH(?:[);/ ]|$)",model:"Star Wars"},{regex:"SH-RM02",model:"Aquos SH-RM02"},{regex:"401SH",model:"Aquos 401SH"},{regex:"DM-01J",model:"Disney Mobile DM-01J"},{regex:"A001SH",model:"Simple Sumaho 5"},{regex:"NP80[56]SH",model:"Aquos Keitai 3"},{regex:"NP807SH",model:"Aquos Keitai 10"},{regex:"NP501SH",model:"Aquos Keitai"},{regex:"SH-08E(?:[);/ ]|$)",device:"tablet",model:"Sharp Aquos Pad"},{regex:"d-41A(?:[);/ ]|$)",device:"tablet",model:"dtab d-41A"},{regex:"(LC-(?:[0-9]{2})[a-z0-9]+)(?:[);/ ]|$)",device:"tv",model:"$1"},{regex:"SHARP-AQUOS|AQUOSBrowser",device:"tv",model:"Aquos Net Plus"},{regex:"SHARP[ \\-]([a-z0-9\\-]+)",model:"$1"},{regex:"(?:SHARP|SBM)([a-z0-9]+)",model:"$1"},{regex:"(SH-?[0-9]+[a-z]?)(?:[);/ ]|$)",model:"$1"}]},Simply={regex:"(NP602SI)(?:[);/ ]|$)",device:"smartphone",model:"$1"},Softbank={regex:"Softbank|J-PHONE",device:"smartphone",models:[{regex:"Softbank/[12]\\.0/([a-z0-9]+)",model:"$1"},{regex:"([a-z0-9]+);Softbank;",model:"$1"},{regex:"J-PHONE/[0-9]\\.[0-9]/([a-z0-9\\-]+)",model:"$1"}]},Sonim={regex:"Sonim[ -]|XP(?:[67]7|88)00(?:[);/ ]|$)",device:"smartphone",models:[{regex:"Sonim-XP3400",model:"XP3400",device:"feature phone"},{regex:"XP6700(?:[);/ ]|$)",model:"XP6700"},{regex:"XP7700(?:[);/ ]|$)",model:"XP7700"},{regex:"XP8800(?:[);/ ]|$)",model:"XP8"}]},Star={regex:"N(9[5678]00|8800|9000|9977)(?:[);/ ]|$)",device:"smartphone",models:[{regex:"N9000",model:"Note 3"},{regex:"N(9[5678]00|8800|9977)(?:[);/ ]|$)",model:"N$1"}]},Starmobile={regex:"(?:Starmobile (?:Play (?:Neo|Spark|GO|Click))|UP[_ ](?:Sense|Rave|Groove|Prime|Selfie|Xtreme|XL))(?:[);/ ]|$)",device:"smartphone",models:[{regex:"Starmobile PLAY GO(?:[);/ ]|$)",model:"Play Go"},{regex:"Starmobile Play (Neo|Spark|Click)(?:[);/ ]|$)",model:"Play $1"},{regex:"UP[_ ](Sense|Rave|Groove|Prime|Selfie|Xtreme|XL)(?:[);/ ]|$)",model:"UP $1"}]},Amazon={regex:"KF(?:OT|ONWI|TT|JWI|JWA|[DFS]OWI|A[PRSU]WI|T[BH]WI|SAW[IA]|GIWI|KAWI|MAWI|MEWI|MUWI|SUWI)(?:[);/ ]|$)|Kindle|Silk/\\d+\\.\\d+|AlexaMediaPlayer|Amazon (?:Tate|Jem)|AFT[ABMNRST]|SD4930UR|AEO(BC|KN)(?:[);/ ]|$)",device:"tablet",models:[{regex:"AFTA",model:"Fire TV Cube (Gen 1)",device:"tv"},{regex:"AFTR",model:"Fire TV Cube (Gen 2)",device:"tv"},{regex:"AFTN",model:"Fire TV (Gen 3)",device:"tv"},{regex:"AFTB",model:"Fire TV",device:"tv"},{regex:"AFT[MST]",model:"Fire TV stick",device:"tv"},{regex:"KFFOWI(?:[);/ ]|$)",model:'Fire 7"'},{regex:"KFMUWI(?:[);/ ]|$)",model:'Fire 7" (2019)'},{regex:"KFTT(?:[);/ ]|$)",model:"Kindle Fire HD"},{regex:"KFJWI(?:[);/ ]|$)|Amazon Jem",model:'Kindle Fire HD 8.9" WiFi'},{regex:"KFJWA(?:[);/ ]|$)",model:'Kindle Fire HD 8.9" 4G'},{regex:"KFSOWI(?:[);/ ]|$)|Amazon Tate",model:'Kindle Fire HD 7" WiFi'},{regex:"KFTHWI(?:[);/ ]|$)",model:'Kindle Fire HDX 7" WiFi'},{regex:"KFTHWA(?:[);/ ]|$)",model:'Kindle Fire HDX 7" 4G'},{regex:"KFAPWI(?:[);/ ]|$)",model:'Kindle Fire HDX 8.9" WiFi'},{regex:"KFAPWA(?:[);/ ]|$)",model:'Kindle Fire HDX 8.9" 4G'},{regex:"KFARWI(?:[);/ ]|$)",model:"Fire HD 6"},{regex:"KFASWI(?:[);/ ]|$)",model:"Fire HD 7"},{regex:"KFAUWI(?:[);/ ]|$)",model:"Fire HD 7 (2017)"},{regex:"KFMEWI(?:[);/ ]|$)",model:"Fire HD 8 (2015)"},{regex:"KFGIWI(?:[);/ ]|$)",model:"Fire HD 8 (2016)"},{regex:"KFDOWI(?:[);/ ]|$)",model:"Fire HD 8 (2017)"},{regex:"KFKAWI(?:[);/ ]|$)",model:"Fire HD 8 (2018)"},{regex:"KFONWI(?:[);/ ]|$)",model:"Fire HD 8 (2020)"},{regex:"KFSAWI(?:[);/ ]|$)",model:"Fire HDX 8.9"},{regex:"KFSAWA(?:[);/ ]|$)",model:"Fire HDX 8.9 4G"},{regex:"KFTBWI(?:[);/ ]|$)",model:"Fire HD 10"},{regex:"KFSUWI(?:[);/ ]|$)",model:"Fire HD 10 (2017)"},{regex:"KFMAWI(?:[);/ ]|$)",model:"Fire HD 10 (2019)"},{regex:"SD4930UR",model:"Fire Phone",device:"smartphone"},{regex:"KFOT|Kindle Fire|Silk/\\d+\\.\\d+",model:"Kindle Fire"},{regex:"Kindle",model:"Kindle"},{regex:"AEO(BC|KN)(?:[);/ ]|$)",model:"Echo",device:"smart speaker"},{regex:"AlexaMediaPlayer",model:"Alexa",device:"smart speaker"}]},Symphony={regex:"SYMPHONY[ \\_]([a-z0-9]+)|(?:roar[ _](?:V20|V78|E80|V150))|roarV95|ZVIII(?:[);/ ]|$)",device:"smartphone",models:[{regex:"ZVIII",model:"ZVIII"},{regex:"roar[ _]?(V20|E80|V78|V95|V150)(?:[);/ ]|$)",model:"Roar $1"},{regex:"SYMPHONY[ \\_]([a-z0-9]+)",model:"$1"}]},Helio={regex:"Helio (S60|S5)(?:[);/ ]|$)",device:"smartphone",model:"$1"},Syrox={regex:"(SYX-(?:T70[04]|T10[12]))(?:[);/ ]|$)",device:"tablet",model:"$1"},Qtek={regex:"Qtek[ _]?([a-z0-9]+)",device:"smartphone",model:"$1"},Teclast={regex:"Teclast|TLA002|TLA016|X98 Air III|M20_4G|X98 Air II\\(HG5N\\)|Tbook|X80 Power\\(B2N4\\)|(?:T30|P80X|P20HD|P10_HD|M40)_(?:ROW|EEA)|T10\\(E3C6\\)|P10S\\(N4H5\\)|98\\(M1E[45789]\\)|98\\(M3E3\\)",device:"tablet",models:[{regex:"Tbook[_ -]([^;/]+) Build",model:"Tbook $1"},{regex:"T10\\(E3C6\\)",model:"T10"},{regex:"T30_(ROW|EEA)",model:"T30 $1"},{regex:"P80X_(ROW|EEA)",model:"P80X $1"},{regex:"P10S\\(N4H5\\)",model:"P10S"},{regex:"P20HD_(?:ROW|EEA)",model:"P20HD"},{regex:"M40_(?:ROW|EEA)",model:"M40"},{regex:"P10_HD_(?:ROW|EEA)",model:"P10HD"},{regex:"M20_4G",model:"M20 4G"},{regex:"TLA002",model:"M30 4G"},{regex:"TLA016",model:"M16"},{regex:"98\\(M1E[45789]\\)|98\\(M3E3\\)",model:'TPad 98 10.1" 4G'},{regex:"X80 Power\\(B2N4\\)(?:[);/ ]|$)",model:"X98 Power"},{regex:"X98 Air III(?:[);/ ]|$)",model:"X98 Air III"},{regex:"X98 Air II\\(HG5N\\)(?:[);/ ]|$)",model:"X98 Air II"},{regex:"Teclast[_ -]([^;/]+) Build",model:"$1"}]},TechPad={regex:"Tech ?pad|XTAB[ _-]|Dual C1081HD|S813G",device:"tablet",models:[{regex:"S813G",model:"S813G"},{regex:"TechPad10QC",model:"10QC"},{regex:"TechPad_10xx",model:"10XX"},{regex:"TechPad703",model:"703"},{regex:"TechPad[_ ](10Y|9x|i700)",model:"$1"},{regex:"TechPad[_ ]3Gx",model:"3Gx"},{regex:"Dual C1081HD",model:"XTAB C1081HD"},{regex:"XTAB[ _-]([^/;]+) Build",model:"XTAB $1"},{regex:"Tech ?pad[ _-]([^/;)]+)(?: Build|[;)])",model:"$1",device:"smartphone"}]},Tesco={regex:"Hudl (?:[^/;]+)(?: Build|[;)])|W032i-C3(?:[);/ ]|$)",device:"tablet",models:[{regex:"Hudl ([^/;]+)(?: Build|[;)])",model:"Hudl $1"},{regex:"W032i-C3(?:[);/ ]|$)",model:"Op3n Dott"}]},teXet={regex:"Texet|(NaviPad [^/;]*) Build|TM-(?:1046|1058|1057|1067|3000|3200R|3500|4003|4071|450[34]|451[30]|4377|4082R|508[34]|550[358]|5010|5017|507[4-7]|5[23]77|6003|6906|702[13]|7055HD|709[69]|9747BT|9758|9751HD|9767|5513|520[410]|507[13]|558[134]|570[23]|7859|8044|9748[ _]3G|9720|7047HD[ _]3G|9757|9740|4982|4515|4083|500[3567]|5571|3204R|5016|8043|7047HD[ _]3G|8041HD|8066|705[23]|7041|8041HD|8051|8048|974[96]|973[78]W|974[170]|9743W|9750HD|7043XD|7049|7887|7037W|702[46])|TB-(771A|711A)|X-Force[\\(-]?TM-5009\\)?|X-Plus[\\(-]?TM-5577\\)?|TM_5011|X-pad (?:AIR 8|iX 7|NAVI 7.[35]|NAVI 10|SKY 8.1|STYLE 8|STYLE 10.1|HIT|LITE 7.[12]|QUAD (?:7.2|10|7)|SHINE 8.1)(?: 3G)?",device:"tablet",models:[{regex:"TM-9749",model:"X-pad Plus 7.1 3G"},{regex:"TM-9746",model:"X-pad Plus 7 3G"},{regex:"TM-8051",model:"X-pad Force 8i 3G"},{regex:"TM-1058",model:"X-Force 10 3G"},{regex:"TM-8048",model:"X-pad Force 8 3G"},{regex:"(NaviPad [^/;]*) Build",model:"$1"},{regex:"TM-7055HD",model:"NaviPad 3G"},{regex:"TM-9758",model:'X-pad Style 10.0"'},{regex:"X-pad SHINE 8.1 3G",model:'X-pad Shine 8.1" 3G'},{regex:"X-pad QUAD 10 3G",model:'X-pad Quad 10.0" 3G'},{regex:"X-pad QUAD 7 3G",model:'X-pad Quad 7.0" 3G'},{regex:"X-pad QUAD 7.2 3G",model:'X-pad Quad 7.2" 3G'},{regex:"X-pad STYLE 8 3G",model:'X-pad Style 8.0" 3G'},{regex:"X-pad HIT 3G",model:"X-pad Hit 3G"},{regex:"X-pad LITE (7.[12])",model:'X-pad Lite $1"'},{regex:"TM-9767",model:'X-pad Style 10.0" 3G'},{regex:"X-pad STYLE 10.1 3G",model:'X-pad Style 10.1" 3G'},{regex:"(X-pad (?:AIR 8|iX 7) 3G)",model:"$1"},{regex:"TM-7096|X-pad NAVI 7.3 3G",model:'X-pad NAVI 7.3" 3G'},{regex:"TM-7099",model:'X-pad NAVI 7.4" 3G'},{regex:"X-pad NAVI 7.5 3G",model:'X-pad NAVI 7.5" 3G'},{regex:"X-pad SKY 8.1 3G",model:'X-pad Sky 8.1" 3G'},{regex:"TM-1046|X-pad NAVI 10 3G",model:'X-pad NAVI 10.0" 3G'},{regex:"TM-7859",model:'X-pad NAVI 8.2" 3G'},{regex:"TM-7049",model:"NaviPad TM-7049 3G"},{regex:"TM-7887",model:"NaviPad TM-7887 3G"},{regex:"TM-8066",model:'X-pad Rapid 8.2" 4G'},{regex:"(TM-(?:1057|1067|6906|8043|9748[_ ]3G|9740|9757(?:[_ ]3G)?|7047HD[ _]3G|9747BT|9751HD|702[13]|705[23]|7041|9720|7047HD[_ ]3G|8044|8041HD|973[78]W|9743W|974[710]|9750HD|7043XD|7037W|702[46])|TB-(?:771A|711A|8041HD))",model:"$1"},{regex:"TM-4503",device:"smartphone",model:"X-Quad"},{regex:"(TM-(?:3000|3200R|4003|4083|4377|4504|451[30]|500[35]|5[23]77|5571|3204R|520[04]|5581|5505|5017|507[13-7]|5081|6003|5513))",device:"smartphone",model:"$1"},{regex:"TM-5006",device:"smartphone",model:"X-Line"},{regex:"TM-5007",device:"smartphone",model:"X-Shine"},{regex:"TM_5011",device:"smartphone",model:"X-Omega"},{regex:"TM-508(3|4)",device:"smartphone",model:"Pay $1G"},{regex:"TM-558(3|4)",device:"smartphone",model:'Pay 5.5" $1G'},{regex:"TM-5702",device:"smartphone",model:'Pay 5.7" 3G'},{regex:"TM-5703",device:"smartphone",model:'Pay 5.7" Pro'},{regex:"TM-5201",device:"smartphone",model:"Rock"},{regex:"TM-4515",device:"smartphone",model:"X-Style"},{regex:"TM-(5016|3500)",device:"smartphone",model:"X-Maxi 2"},{regex:"TM-4071",device:"smartphone",model:"X-Smart"},{regex:"TM-4982",device:"smartphone",model:"iX-Maxi"},{regex:"TEXET[_ ]IX-MINI",device:"smartphone",model:"iX-Mini"},{regex:"TM-5010",device:"smartphone",model:"X-Selfie"},{regex:"TM-4082R",device:"smartphone",model:"X-Driver Quad"},{regex:"TM-5503",device:"smartphone",model:"X-Mage"},{regex:"TM-5508",device:"smartphone",model:"X-Cosmo"},{regex:"X-Force[\\(-]?TM-5009\\)?",device:"smartphone",model:"X-Force"},{regex:"X-Plus[\\(-]?TM-5577\\)?",device:"smartphone",model:"X-Plus"},{regex:"teXet[_ ]X-medium[_ ]plus",device:"smartphone",model:"X-Medium Plus"}]},Telefunken$1={regex:"TELEFUNKEN|Foxtrot|TEL-1013GIQA|TF-SP(?:500[12]|4002)|(TF-MID(?:[78]02G|70[78]G|80[46]G|9705RG|9707G|7805G|100[57]G|1010G))|(TF-LED(?:65S75T2SU|32S39T2S|32S5[289]T2S|32S70T2S|40S63T2S))",device:"tablet",models:[{regex:"TEL-1013GIQA",model:"Giqa 10.1 3G"},{regex:"Foxtrot2",model:"Foxtrot 2",device:"smartphone"},{regex:"(?:TELEFUNKEN)?(TF-SP(?:500[12]|4002)|Outdoor LTE|Foxtrot)",model:"$1",device:"smartphone"},{regex:"(TF-MID(?:[78]02G|70[78]G|80[46]G|9705RG|9707G|7805G|100[57]G|1010G))",model:"$1"},{regex:"(TF-LED(?:65S75T2SU|32S39T2S|32S5[289]T2S|32S70T2S|40S63T2S))",model:"$1",device:"tv"}]},Telego={regex:"TELEGO",device:"smartphone",models:[{regex:"TELEGO-W503",model:"W503"},{regex:"Telego_JOY2",model:"Joy 2"},{regex:"Telego[ _]Mate",model:"Mate"}]},Telenor={regex:"(?<!FBCR/)Telenor|Infinity E5",device:"smartphone",models:[{regex:"Telenor[ _]([^;/]+)(?: Build|[;)])",model:"$1"},{regex:"Infinity E5",model:"Infinity E5"}]},Telit={regex:"Telit",device:"feature phone",models:[{regex:"Telit_Mobile_Terminals-([a-z0-9]+)",model:"$1"},{regex:"Telit[\\-_]?([a-z0-9]+)",model:"$1"}]},ThL={regex:"ThL[ _-]|Knight 2",device:"smartphone",models:[{regex:"Knight 2",model:"Knight 2"},{regex:"ThL[ _-]*([^;/]+) Build",model:"$1"},{regex:"ThL[ _-]*([^ ;/)]+)(?:[);/ ]|$)",model:"$1"}]},TIANYU={regex:"TIANYU",device:"feature phone",models:[{regex:"TIANYU ([a-z0-9]+)",model:"$1"},{regex:"TIANYU-KTOUCH/([a-z0-9]+)",model:"$1"}]},Timovi={regex:"Tmovi[ _]|(?:Infinit_Lite_2|Vision_PRO|VISION ULTRA|Epix)(?:[);/ ]|$)",device:"smartphone",models:[{regex:"Tmovi[ _]Prime",model:"Prime"},{regex:"TMOVI_YEAH_BEAT",model:"Yeah Beat"},{regex:"YeahLIVE",model:"Yeah LIVE"},{regex:"Infinit Lite",model:"Infinit Lite"},{regex:"Infinit_Lite_2",model:"Infinit Lite 2"},{regex:"Vision_PRO",model:"Vision Pro"},{regex:"VISION ULTRA",model:"Vision Ultra"},{regex:"Epix",model:"Epix"}]},Tooky={regex:"TOOKY",device:"smartphone",models:[{regex:"TOOKY (A19|W1|T8[368]|T1982)(?:[);/ ]|$)",model:"$1"},{regex:"TOOKY A9PLUS(?:[);/ ]|$)",model:"A9 Plus"}]},Tolino={regex:"Tolino Tab ([^/;]+) Build",device:"tablet",model:"Tolino Tab $1"},Toplux={regex:"Toplux ([a-z0-9]+)",device:"feature phone",model:"$1"},Touchmate={regex:"TOUCHMATE|(TM-(?:MID1050WKD|MID1020A|MID794C|MID795|MID710|MID798|MID792|MID788D|SM500N|SM410|MID1010))",device:"smartphone",models:[{regex:"(TM-(?:MID1020A|MID794C|MID795|MID710|MID798|MID792|MID788D|MID1010))",device:"tablet",model:"$1"},{regex:"TM-MID1050WKD",device:"tablet",model:'Mega Matrix 10.1" 3G'},{regex:"(TM-(?:SM500N|SM410))",model:"$1"},{regex:"Touchmate ([^/;]+) Build",model:"$1"}]},TrekStor={regex:"(?:TrekStor|Surftab) ([^/;]+)(?: Build|\\))|Surftab[^;\\)]*(?:[;\\)]|$)|ST10216-2A|ST13416-1|VT10416-[12]|TFMTKAW01232",device:"tablet",models:[{regex:"ST10216-2A|VT10416-[12]",model:"SurfTab 10.1"},{regex:"ST13416-1",model:'SurfTab Theatre 13.4"'},{regex:"PrimeTab P10",model:"PrimeTab P10"},{regex:"TrekStor ([^/;]+) Build",model:"$1"},{regex:"Surftab ([^/;]+) Build",model:"SurfTab $1"},{regex:"Surftab[ _]([^;\\)]*)(?:[;\\)]|$)",model:"SurfTab $1"},{regex:"TFMTKAW01232",model:"SurfTab L15"}]},Trevi={regex:"Trevi[ _]|TAB[ _]10[ _]3G[ _]V16|TAB[ _](7|8)[ _]3G[ _]V8|TAB9 3G|MINITAB 3GV|Phablet[ _](?:4|4\\.5|5|5\\,3|6)[ _]?[CSQ]|REVERSE[ _]5\\.5[ _]?Q",device:"tablet",models:[{regex:"TAB[ _]?(7|8)[ _]3G[ _]V8",model:"TAB $1 3G V8"},{regex:"TAB[ _]?9[ _]3G[ _]V8",model:"TAB 9 3G V8"},{regex:"TAB[ _]?9[ _]3G",model:"TAB 9 3G"},{regex:"TAB[ _]10[ _]3G[ _]V16",model:"TAB 10 3G V16"},{regex:"MINITAB 3GV",model:"MINITAB 3G V"},{regex:"(?:Trevi_)?Phablet[ _]4[ _]?C",model:"Phablet 4 C",device:"smartphone"},{regex:"(?:Trevi_)?Phablet[ _]4[ _]?S",model:"Phablet 4 S",device:"smartphone"},{regex:"(?:Trevi_)?Phablet[ _]4.5[ _]?Q",model:"Phablet 4.5Q",device:"smartphone"},{regex:"(?:Trevi_)?PHABLET[ _]5[ _]?S",model:"Phablet 5 S",device:"smartphone"},{regex:"(?:Trevi_)?PHABLET[ _]5,3[ _]?Q",model:"Phablet 5.3 Q",device:"phablet"},{regex:"(?:Trevi_)?REVERSE[ _]5.5[ _]?Q",model:"Phablet 5.5 Q REVERSE",device:"phablet"},{regex:"(?:Trevi_)?PHABLET[ _]6[ _]?S",model:"Phablet 6 S",device:"phablet"},{regex:"Trevi[_]([^;/]+) Build",model:"$1"}]},TVC={regex:"(NuclearSX-SP5)",device:"smartphone",model:"Nuclear SX-SP5"},Uhappy={regex:"Uhappy|UP?580|UP350|UP[35679]20",device:"smartphone",models:[{regex:"UP([35679]20)",model:"UP$1"},{regex:"UP350",model:"UP350"},{regex:"UP580",model:"UP580"},{regex:"U580",model:"U580"},{regex:"Uhappy[ _-]([^;/]+) Build",model:"$1"},{regex:"Uhappy[ _-]?([^;/)]+)(?:[);/ ]|$)",model:"$1"}]},Unimax={regex:"U((?:67[013]|680)C|(?:452|504)TL|683CL|693CL)(?:[);/ ]|$)",device:"smartphone",model:"U$1"},Unowhy={regex:"QOOQ ",device:"tablet",model:"QOOQ"},UTStarcom={regex:"utstar[ _-]?([a-z0-9]+)",device:"feature phone",model:"$1"},Ulefone={regex:"Ulefone|Gemini Pro|Power_[356]|S10_Pro|(?:Note [89]P|Armor(?:[ _](?:[2367]|2S|X[236]|6[SE]|3WT|3W|X))?|U00[78][ _]Pro|Be[ _]X|Be[ _]Touch(?:[ _][23])?|Be[ _](?:One|Pure)(?:[ _]Lite)?)(?:[);/ ]|$)",device:"smartphone",models:[{regex:"S10_Pro",model:"S10 Pro"},{regex:"Be[ _]Touch([ _][23])?",model:"Be Touch$1"},{regex:"Be[ _]Pure[ _]Lite",model:"Be Pure Lite"},{regex:"Be[ _]Pure",model:"Be Pure"},{regex:"Be[ _]One[ _]Lite",model:"Be One Lite"},{regex:"Be[ _]One",model:"Be One"},{regex:"Be[ _]X",model:"Be X"},{regex:"U007 Pro",model:"U007 Pro"},{regex:"U008 Pro",model:"U008 Pro"},{regex:"Armor[ _]X([236])(?:[);/ ]|$)",model:"Armor X$1"},{regex:"Armor[ _]6S(?:[);/ ]|$)",model:"Armor 6S"},{regex:"Armor[ _]([679])E(?:[);/ ]|$)",model:"Armor $1E"},{regex:"Armor[ _]X([57]) Pro(?:[);/ ]|$)",model:"Armor X$1 Pro"},{regex:"Armor[ _]X([578])(?:[);/ ]|$)",model:"Armor X$1"},{regex:"Armor[ _]([25])S(?:[);/ ]|$)",model:"Armor $1S"},{regex:"Armor[ _]X(?:[);/ ]|$)",model:"Armor X"},{regex:"Armor[ _]3W(?:[);/ ]|$)",model:"Armor 3W"},{regex:"Armor[ _]3WT(?:[);/ ]|$)",model:"Armor 3WT"},{regex:"Armor[ _]([236789])(?:[);/ ]|$)",model:"Armor $1"},{regex:"Armor(?:[);/ ]|$)",model:"Armor"},{regex:"Gemini Pro(?:[);/ ]|$)",model:"Gemini Pro"},{regex:"Power[_ ]([356])",model:"Power $1"},{regex:"Note 8P(?:[);/ ]|$)",model:"Note 8P"},{regex:"Note 9P(?:[);/ ]|$)",device:"phablet",model:"Note 9P"},{regex:"Ulefone[_ ](X|S1[ _]Pro|S[17])(?:[);/ ]|$)",model:"$1"},{regex:"Ulefone[ _-]?([^;/]+) Build",model:"$1"},{regex:"Ulefone[ _-]?([^;/)]+)(?:[;/)]|$)",model:"$1"}]},UMIDIGI={regex:"UMI(?:DIGI)?[ _]|(?:A5_Pro|ROME[_ ]X|BISON|hammer_S)(?:[;/) ]|$)",device:"smartphone",models:[{regex:"A5_Pro",model:"A5 Pro"},{regex:"UMI TOUCH X",model:"Touch X"},{regex:"UMI TOUCH",model:"Touch"},{regex:"ROME[_ ]X",model:"Rome X"},{regex:"BISON",model:"Bison"},{regex:"hammer_S",model:"Hammer S"},{regex:"UMI_(London|Diamond(?:_X)?)",model:"$1"},{regex:"UMI(?:DIGI)?[ _]([^/;)]+)(?: Build|[;)])",model:"$1"}]},Uniscope={regex:"Uniscope",device:"smartphone",models:[{regex:"Uniscope[ _\\-]?([^/;]+) Build",model:"$1"},{regex:"Uniscope[ _\\-]?([^);/ ]+)",model:"$1"}]},Unnecto={regex:"Unnecto|(?:U513|U5151|U61[1356]|U7[12]0|U-830|U90[35])(?:[);/ ]|$)",device:"smartphone",models:[{regex:"U513",model:"Drone XT"},{regex:"U5151",model:"Bolt"},{regex:"U611",model:"Quattro X"},{regex:"U613",model:"Quattro S"},{regex:"U615",model:"Quattro M"},{regex:"U616",model:"U616"},{regex:"U710",model:"Quattro U710"},{regex:"U720",model:"Quattro Z"},{regex:"U-830",model:"Rush"},{regex:"U903",model:"Air"},{regex:"U905",model:"Air 5.5"}]},Unonu={regex:"Unonu[ _-]",device:"smartphone",models:[{regex:"Unonu[ _-]([^;/]+) Build",model:"$1"},{regex:"Unonu[ _-]?([^;/)]+)(?:[);/ ]|$)",model:"$1"}]},UTOK={regex:"UTOK (45[01]D)",device:"smartphone",model:"$1"},Vastking={regex:"(M910A|M783K|M783K-16G|M1072R-3G)(?:[);/ ]|$)",device:"tablet",model:"$1"},ViewSonic={regex:"ViewSonic|VSD[0-9]+(?:[);/ ]|$)|ViewPad|ViewPhone",device:"smart display",models:[{regex:"(?:ViewSonic-)?V500(?:[);/ ]|$)",model:"V500",device:"smartphone"},{regex:"ViewSonic A8\\+(?:[);/ ]|$)",model:"A8 Plus",device:"smartphone"},{regex:"(?:ViewSonic-)?ViewPhone ?([^;/]+) Build",model:"ViewPhone $1",device:"smartphone"},{regex:"(?:ViewSonic-)?ViewPad ?([^;/]+) Build",model:"ViewPad $1",device:"tablet"},{regex:"(VSD[0-9]+)(?:[);/ ]|$)",model:"$1"}]},Vitelcom={regex:"Vitelcom|portalmmm/[12].0 TSM",device:"feature phone",models:[{regex:"TSM-([a-z0-9]+)",model:"$1"},{regex:"TSM([a-z0-9\\-]+)",model:"$1"},{regex:"portalmmm/[12].0 (TSM[a-z0-9 ]+)",model:"$1"}]},Fengxiang={regex:"(vKB011B|vKB004L)",device:"tablet",model:"$1"},Vernee={regex:"Vernee|Mars Pro|Apollo[ _](?:Lite|X)|Thor (?:E|Plus)|X2_euro",device:"smartphone",models:[{regex:"Apollo[ _]Lite",model:"Apollo Lite"},{regex:"Apollo[ _]X",model:"Apollo X"},{regex:"Mars Pro",model:"Mars Pro"},{regex:"Thor E",model:"Thor E"},{regex:"Thor Plus",model:"Thor Plus"},{regex:"Vernee_M5",model:"M5"},{regex:"X2_euro",model:"X2"},{regex:"Vernee[ _-]([^;/]+) Build",model:"$1"},{regex:"Vernee[ _-]([a-z0-9_-]+)",model:"$1"}]},Vertu={regex:"Vertu[ ]?([a-z0-9]+)|(?:ASTER P|CONSTELLATION X)(?:[);/ ]|$)",device:"feature phone",models:[{regex:"ASTER P(?:[);/ ]|$)",device:"smartphone",model:"Aster P"},{regex:"CONSTELLATION X(?:[);/ ]|$)",device:"smartphone",model:"Constellation X"},{regex:"Vertu[ ]?([a-z0-9]+)",model:"$1"}]},Venso={regex:"(?:CX-508|CX-551|Reiv 500|Creon F5|Isprit U50|Isprit-U50-LTE)(?:[);/ ]|$)",device:"smartphone",models:[{regex:"Isprit U50|Isprit-U50-LTE",model:"Isprit U50"},{regex:"(CX-508|CX-551|Reiv 500|Creon F5)",model:"$1"}]},Verizon={regex:"QTA(SUN[12]|XIA1|QZ3|QZ3KID|IR7)|QMV7B",device:"tablet",models:[{regex:"QTAXIA1|QTAIR7",model:"Ellipsis 10"},{regex:"QTASUN1",model:"Ellipsis 8 HD"},{regex:"QTASUN2",model:"Ellipsis 8 HD 4G LTE"},{regex:"QTAQZ3KID",model:"Ellipsis Kids LTE"},{regex:"QTAQZ3",model:"Ellipsis 8"},{regex:"QMV7B",model:"Ellipsis 7"}]},Verykool={regex:"verykool",device:"smartphone",models:[{regex:"verykoolS5004",model:"Lotus JR."},{regex:"verykoolS5005",model:"Lotus II"},{regex:"verykool[ _]?([^/;]+) Build",model:"$1"},{regex:"verykool[ _]?([^/;]+);",model:"$1"}]},Vestel$1={regex:"Vestel[ _]|Venus[ _](GO|E[2-5]|V[1-9]|Z[1-9]0)|(?<!Winnovo )V_?TAB|VP74|VT97PRO|VSP145M|VSP250[GS]|VSP355[GS]|V3_5580_Dual",device:"smartphone",models:[{regex:"VT97PRO",model:"VTab 9.7 Pro",device:"tablet"},{regex:"VP74",model:"VTab Lite II",device:"tablet"},{regex:"VTAB10",model:"VTab 10",device:"tablet"},{regex:"V_TAB_7_ECO_III ",model:"VTab 7 Eco 3",device:"tablet"},{regex:"V_TAB_([0-9]{4}[A-Z]?)",model:"VTab $1",device:"tablet"},{regex:"V3_5580_Dual",model:"Venus V3 5580 Dual"},{regex:"VSP145M",model:"Venus 4.5"},{regex:"VSP250G",model:"Venus 5.0V"},{regex:"VSP250S",model:"Venus 5.0X"},{regex:"VSP355G",model:"Venus 5.5V"},{regex:"VSP355S",model:"Venus 5.5X"},{regex:"Venus[ _]V([1-9])",model:"Venus V$1"},{regex:"Venus[ _]Z([1-9]0)",model:"Venus Z$1"},{regex:"Venus[ _]GO",model:"Venus Go"},{regex:"Venus E2 Plus Dual",model:"Venus E2 Plus Dual"},{regex:"Venus[ _]E2 Plus",model:"Venus E2 Plus"},{regex:"Venus[ _]E([345])",model:"Venus E$1"},{regex:"Vestel_5000_Dual",model:"5000 Dual"},{regex:"Vestel_5000_2gb",model:"5000 2GB"},{regex:"Vestel[ _](5000|5530)",model:"$1"}]},Videocon={regex:"Videocon[_ \\-]|(?:VT75C|V406018|V512930|V50(?:2430|3630|5024|5430|4630|5[98]20)|Z45_(?:Dazzle|Amaze)|Z45Q Star|Z50 Nova)(?:[);/ ]|$)",device:"smartphone",models:[{regex:"Videocon_V1585",device:"feature phone",model:"V1585"},{regex:"Videocon[_ \\-]([a-z0-9]+)",model:"$1"},{regex:"VT75C(?:[);/ ]|$)",model:"VT75C",device:"tablet"},{regex:"V502430(?:[);/ ]|$)",model:"Kryton 3"},{regex:"V505024(?:[);/ ]|$)",model:"Kryton 22 Plus"},{regex:"V503630(?:[);/ ]|$)",model:"Delite 11"},{regex:"V505920(?:[);/ ]|$)",model:"Metal Pro 2"},{regex:"V505820(?:[);/ ]|$)",model:"Metal Pro 1"},{regex:"V406018(?:[);/ ]|$)",model:"Starr 100"},{regex:"V512930(?:[);/ ]|$)",model:"Ultra 50"},{regex:"(V505430|V504630)(?:[);/ ]|$)",model:"$1"},{regex:"Z45_(Dazzle|Amaze)(?:[);/ ]|$)",model:"Infinium Z45 $1"},{regex:"Z45Q Star(?:[);/ ]|$)",model:"Infinium Z45Q Star"},{regex:"Z50 Nova(?:[);/ ]|$)",model:"Infinium Z50 Nova"}]},Vodafone={regex:"(?<!FBCR/)Vodafone[ _-]|Smart ?Tab ?(?:III? ?)?(?:|4G|7|10)[);/ -]|VodafoneSmartChat|VFD[ _][0-9]+(?:[);/ ]|$)|VFD320|VF6[89]5|VF-(696|1397|795|895N|1497)",device:"smartphone",models:[{regex:"VFD 100",model:"Smart Mini"},{regex:"VF685",model:"Smart Kicka"},{regex:"VF695",model:"Smart First 6"},{regex:"VFD 200",model:"Smart First 7"},{regex:"VFD 300",model:"Smart Mini 7"},{regex:"VFD 50[02]",model:"Smart Turbo 7"},{regex:"VFD 51[013]",model:"Smart E8"},{regex:"VFD 600",model:"Smart Prime 7"},{regex:"VFD320",model:"Smart C9"},{regex:"VFD 820",model:"Smart X9"},{regex:"VFD 610",model:"Smart N8"},{regex:"Smart ultra 6",model:"Smart Ultra 6"},{regex:"VFD 700",model:"Smart Ultra 7"},{regex:"VFD 720",model:"Smart N9"},{regex:"VFD 900",model:"Smart Platinum 7"},{regex:"Vodafone[ _]875(?:[);/ ]|$)",model:"Smart Mini"},{regex:"Vodafone[ _]975N?(?:[);/ ]|$)",model:"Smart 3"},{regex:"Vodafone[ _]785(?:[);/ ]|$)",model:"Smart 4 Mini"},{regex:"Vodafone[ _]890N(?:[);/ ]|$)",model:"Smart 4 Turbo"},{regex:"Vodafone[ _]985N(?:[);/ ]|$)",model:"Smart 4 Power"},{regex:"VodafoneSmartChat",model:"Smart Chat"},{regex:"VF-696",model:"Smart Grand 6"},{regex:"VF-795",model:"Smart Speed 6"},{regex:"VF-895N",model:"Smart Prime 6"},{regex:"VF-1397",model:"Tab Speed 6",device:"tablet"},{regex:"VF-1497",model:"Tab Prime 6",device:"tablet"},{regex:"VFD 1100",device:"tablet",model:"Tab Mini 7"},{regex:"VFD 1300",device:"tablet",model:"Smart Tab N8"},{regex:"VFD 1400",device:"tablet",model:"Tab Prime 7"},{regex:"Smart ?Tab ?3G",device:"tablet",model:"Smart Tab 3G"},{regex:"Smart ?Tab ?4G",device:"tablet",model:"Smart Tab 4G"},{regex:"Smart ?Tab ?4",model:"Smart Tab 4",device:"tablet"},{regex:"SmartTab7[);/ -]",model:"Smart Tab 7",device:"tablet"},{regex:"SmartTab10[);/ -]",model:"Smart Tab 10",device:"tablet"},{regex:"Smart ?Tab ?II ?7",model:"Smart Tab II 7",device:"tablet"},{regex:"Smart ?Tab ?II ?10",model:"Smart Tab II 10",device:"tablet"},{regex:"Smart ?Tab ?III ?7",model:"Smart Tab III 7",device:"tablet"},{regex:"Smart ?Tab ?III ?10",model:"Smart Tab III 10",device:"tablet"},{regex:"VFD[ _]([0-9]+)(?:[);/ ]|$)",model:"VFD $1"},{regex:"Vodafone[ _-]([^;/]+) Build",model:"$1"},{regex:"Vodafone[ _-]([a-z0-9_-]+)",model:"$1"}]},Vonino={regex:"Vonino|Epic (?:E8|P7)|Gyga[ _](?:X|S|QS|XS)|Jax[ _](?:QS|[SXQN]|Mini)|Magnet[ _]M[19]|Navo_QS|Onyx_(QS|Z)|Orin_QS|Pluri[ _](?:[BCMQ]7|[CQM]8)|Sirius_QS|Volt[ _][XS]|Xavy_(T7|L8)|Xylo[ _][XSPQT]|Zun[ _]X[OS]?|JAX_N",device:"smartphone",models:[{regex:"Zun[ _]XO",model:"Zun XO"},{regex:"Zun[ _]XS",model:"Zun XS"},{regex:"Zun[ _]X",model:"Zun X"},{regex:"Xylo[ _]([PSXQT])",model:"Xylo $1"},{regex:"Volt[ _]S_A7",model:"Volt S A7"},{regex:"Volt[ _]S",model:"Volt S"},{regex:"Volt[ _]X",model:"Volt X"},{regex:"Gyga[ _]QS",model:"Gyga QS"},{regex:"Gyga[ _]XS",model:"Gyga XS"},{regex:"Gyga[ _](S|X)",model:"Gyga $1"},{regex:"Jax[ _]QS",model:"Jax QS"},{regex:"Jax[ _]S_A7",model:"Jax S A7"},{regex:"Jax[ _]([SQXN])",model:"Jax $1"},{regex:"Jax[ _]Mini",model:"Jax Mini"},{regex:"Epic (E8|P7)",model:"Epic $1",device:"tablet"},{regex:"Pluri[ _](B|C|M|Q)7",model:"Pluri $17",device:"tablet"},{regex:"Pluri[ _]([CQM])8",model:"Pluri $18",device:"tablet"},{regex:"Magnet[ _]M([19])",model:"Magnet M$1",device:"tablet"},{regex:"Navo_QS",model:"Navo QS",device:"tablet"},{regex:"Onyx_(QS|Z)",model:"Onyx $1",device:"tablet"},{regex:"Orin_QS",model:"Orin QS",device:"tablet"},{regex:"Sirius_QS",model:"Sirius QS",device:"tablet"},{regex:"Xavy_T7",model:"Xavy T7",device:"tablet"},{regex:"Xavy_L8",model:"Xavy L8",device:"tablet"}]},Vorago={regex:"VORAGO",device:"smartphone",models:[{regex:"CELL-500",model:"CELL-500"}]},Voto={regex:"VOTO[ _\\-]|VT8[89]8(?:[);/ ]|$)",device:"smartphone",models:[{regex:"VOTO[ _\\-]?([^/;]+) Build",model:"$1"},{regex:"VOTO[ _\\-]?([^);/ ]+)",model:"$1"},{regex:"(VT8[89]8)(?:[);/ ]|$)",model:"$1"}]},Voxtel={regex:"Voxtel_([a-z0-9]+)",device:"feature phone",model:"$1"},Vulcan={regex:"(?:VP5004A|HT0704W08|VS5513|VS4011|VR6031)(?:[);/ ]|$)",device:"smartphone",models:[{regex:"(VP5004A|VR6031)(?:[);/ ]|$)",model:"$1"},{regex:"VS5513(?:[);/ ]|$)",model:"Tempo S13"},{regex:"VS4011(?:[);/ ]|$)",model:"Tempo S11"},{regex:"HT0704W08",model:"Koral 7W4",device:"tablet"}]},Walton={regex:"Walton|Walpad|Primo[ _](C[1234]?|D[1-689]|E[1-589]|F8s|S7|EF[23]?|EM|F[1-79]i?|G[1-9]|GF[234]?|GH[23]?|GM|H[2-689M]|H7s|N[F1]?|NX2?|R[1-46]|R[HM]2?|RX[23]?|S[1-6]|V1|X[1-4]|Z|ZX)",device:"smartphone",models:[{regex:"Walpad ([^;/]+) Build",device:"tablet",model:"Primo Walpad $1"},{regex:"Primo S6 infinity",model:"Primo S6 Infinity"},{regex:"Primo H8 Pro(?:[);/ ]|$)",model:"Primo H8 Pro"},{regex:"Primo H8(?:[);/ ]|$)",model:"Primo H8 Turbo"},{regex:"Primo[ _]([^;/)]+)(?: Build|[;)])",model:"Primo $1"},{regex:"Walton[ _]([^;/)]+)(?: Build|[;)])",model:"$1"}]},WellcoM={regex:"WELLCOM[ _\\-/]([a-z0-9]+)",device:"smartphone",model:"$1"},Wexler={regex:"Wexler|(?:ULTIMA 7 TWIST PLUS|TAB10iQ3G|TAB[ _]10Q)(?:[);/ ]|$)|ZEN[ _](?:4\\.[57]|5)",device:"tablet",models:[{regex:"(?:Wexler[ _\\-\\.])?ZEN[ _]4\\.5(?:[);/ ]|$)",model:"ZEN 4.5",device:"smartphone"},{regex:"(?:Wexler[ _\\-\\.])?ZEN[ _]4\\.7(?:[);/ ]|$)",model:"ZEN 4.7",device:"smartphone"},{regex:"(?:Wexler[ _\\-\\.])?ZEN[ _]5(?:[);/ ]|$)",model:"ZEN 5",device:"smartphone"},{regex:"(?:Wexler[ _\\-\\.])?TAB[ _]10Q(?:[);/ ]|$)",model:"TAB 10Q"},{regex:"TAB10iQ3G(?:[);/ ]|$)",model:"TAB 10iQ 3G"},{regex:"Wexler[ _\\-\\.]([^;/]+) Build",model:"$1"},{regex:"Wexler[ _\\-\\.]([^);/]+)(?:[);/]|$)",model:"$1"},{regex:"(ULTIMA 7 TWIST PLUS)(?:[);/ ]|$)",model:"$1"}]},Inco={regex:"(?:Inco[ _](Aurora II|Sphere|Plain[_ ]2S?|Plain2 S|Flex 2S|S4|Bloom 2)|(Horizon_S|Horizon \\+))(?:[);/ ]|$)",device:"smartphone",models:[{regex:"(?:Inco[ _])?(Plain[_ ]2S?|Horizon_S|Horizon \\+|Aurora II|Flex 2S|S4|Bloom 2)(?:[);/ ]|$)",model:"$1"},{regex:"Plain2 S",model:"Plain 2S"},{regex:"Inco Sphere(?:[);/ ]|$)",device:"tablet",model:"Sphere"}]},Wink={regex:"(?<!mismart )Wink[_ ]",device:"smartphone",models:[{regex:"Wink[_ ]((?:Glory|World|Share|City)(?:[_ ](?:SE|S))?)(?:[);/ ]|$)",model:"$1"},{regex:"Wink[ _](Primo|Highway)(?:[);/ ]|$)",device:"tablet",model:"$1"}]},Wiko={regex:"(?:WIKO[_ -])|(?:WIKO-)?CINK_[a-z0-9_]+|(?:WIKO-)?HIGHWAY_[a-z0-9_]+|(?:WIKO-)?(?:Cink([^/;]*)|Highway([^/;]*)|Iggy|Stairway|Rainbow ?(Jam|Lite|Up)?|Darkside|Darkmoon|Darkfull|Darknight|Freddy|FEVER|Jerry[2]?|Sublim|Ozzy|JIMMY|Barry|Birdy|Bloom|Getaway|Goa(?!nna)|Kite|Robby|Lenny[2-9]?|Slide|Sunset[2-9]?|Sunny[2-9]?|Tommy[2-9]?|PULP(?: Fab)?|Wax|HARRY|Ridge(?: Fab)?|U FEEL(?: Prime| Lite)?|U PULSE(?: LITE)?|View2 Go|View XL|View Prime)(?: Plus)?(?: 4G)?(?: Build|$)?|W_(?:C8[06]0|K[346]00|P130|P200|C200SN)|WC300|W-(?:V7[23]0|V8[30]0|P[36]11|K420|K510S?|K130)-(?:TMV|TIM|TVM|EEA|SUN|SWI|OPE|BYT|DU|TH)|WIM Lite|W-K360-TV|W-V600|W-K200|W-U300|U307AS|CINK PEAX 2|HIGHWAY PURE|C210AE|v3913",device:"smartphone",models:[{regex:"(?:WIKO-)?Cink Peax 2",model:"Cink Peax 2"},{regex:"(?:Wiko-)?Cink([^/;]*) Build",model:"Cink$1"},{regex:"(?:WIKO-)?CINK_([a-z0-9_]+)",model:"Cink $1"},{regex:"(?:WIKO-)?HIGHWAY PURE",model:"Highway Pure"},{regex:"(?:WIKO-)?HIGHWAY STAR",model:"Highway Star"},{regex:"(?:Wiko-)?Highway([^/;]*) Build",model:"Highway$1"},{regex:"(?:WIKO-)?HIGHWAY_([a-z0-9_]+)",model:"Highway $1"},{regex:"(?:WIKO-)?Iggy",model:"Iggy"},{regex:"(?:WIKO-)?FEVER",model:"Fever"},{regex:"(?:WIKO-)?Stairway",model:"Stairway"},{regex:"(?:WIKO-)?Ridge Fab 4G",model:"Ridge Fab 4G"},{regex:"(?:WIKO-)?Ridge 4G",model:"Ridge 4G"},{regex:"(?:WIKO-)?Ridge",model:"Ridge"},{regex:"(?:WIKO-)?Rainbow ([^/;]+) Build",model:"Rainbow $1"},{regex:"(?:WIKO-)?Rainbow",model:"Rainbow"},{regex:"(?:WIKO-)?Darkside",model:"Darkside"},{regex:"(?:WIKO-)?Darkmoon",model:"Darkmoon"},{regex:"(?:WIKO-)?Darkfull",model:"Darkfull"},{regex:"(?:WIKO-)?Darknight",model:"Darknight"},{regex:"(?:WIKO-)?Sublim",model:"Sublim"},{regex:"(?:WIKO-)?Ozzy",model:"Ozzy"},{regex:"(?:WIKO-)?Barry",model:"Barry"},{regex:"(?:WIKO-)?Birdy",model:"Birdy"},{regex:"(?:WIKO-)?Bloom",model:"Bloom"},{regex:"(?:WIKO-)?JIMMY",model:"Jimmy"},{regex:"JERRY MAX",model:"Jerry Max"},{regex:"W_K300",model:"Jerry 3"},{regex:"W-K420-TVM",model:"Jerry 4"},{regex:"(?:WIKO-)?Jerry2",model:"Jerry 2"},{regex:"(?:WIKO-)?Jerry",model:"Jerry"},{regex:"(?:WIKO-)?Getaway",model:"Getaway"},{regex:"(?:WIKO-)?Goa(?!nna)",model:"Goa"},{regex:"(?:WIKO-)?Freddy",model:"Freddy"},{regex:"(?:WIKO-)?Kite",model:"Kite"},{regex:"W_K400",model:"Lenny 5"},{regex:"C210AE(?:[);/ ]|$)",model:"Life"},{regex:"U307AS(?:[);/ ]|$)",model:"Life 2"},{regex:"v3913(?:[);/ ]|$)",model:"Kenny"},{regex:"(?:WIKO-)?Lenny[ -_]?3 Max",model:"Lenny 3 Max"},{regex:"(?:WIKO-)?Lenny[ -_]?4 Plus",model:"Lenny 4 Plus"},{regex:"(?:WIKO-)?Lenny[ -_]?([2-9])",model:"Lenny $1"},{regex:"(?:WIKO-)?Lenny",model:"Lenny"},{regex:"(?:WIKO-)?Slide",model:"Slide"},{regex:"(?:WIKO-)?Sunset2",model:"Sunset 2"},{regex:"(?:WIKO-)?Sunset",model:"Sunset"},{regex:"(?:WIKO-)?Sunny3",model:"Sunny 3"},{regex:"W-K200",model:"Sunny 3 Plus"},{regex:"(?:WIKO-)?Sunny2 Plus",model:"Sunny 2 Plus"},{regex:"(?:WIKO-)?Sunny2",model:"Sunny 2"},{regex:"W-K360-TV",model:"Sunny 4 Plus"},{regex:"W-K130-TMV",model:"Sunny 4"},{regex:"(?:WIKO-)?Sunny",model:"Sunny"},{regex:"(?:W_K600|Tommy3|W_C200SN)",model:"Tommy 3"},{regex:"(?:WIKO-)?Tommy2 Plus",model:"Tommy 2 Plus"},{regex:"(?:WIKO-)?Tommy2",model:"Tommy 2"},{regex:"(?:WIKO-)?Tommy",model:"Tommy"},{regex:"(?:WIKO-)?Wax",model:"Wax"},{regex:"(?:WIKO-)?HARRY",model:"Harry"},{regex:"W-V600",model:"Harry 2"},{regex:"(?:WIKO-)?WIM Lite",model:"WIM Lite"},{regex:"(?:WIKO-)?Pulp Fab 4G",model:"Pulp Fab 4G"},{regex:"(?:WIKO-)?Pulp Fab",model:"Pulp Fab"},{regex:"(?:WIKO-)?Pulp 4G",model:"Pulp 4G"},{regex:"(?:WIKO-)?Pulp",model:"Pulp"},{regex:"(?:WIKO-)?Robby",model:"Robby"},{regex:"(?:WIKO-)?U PULSE LITE",model:"U Pulse Lite"},{regex:"(?:WIKO-)?U PULSE",model:"U Pulse"},{regex:"(?:WIKO-)?U FEEL LITE",model:"U Feel Lite"},{regex:"(?:WIKO-)?U FEEL PRIME",model:"U Feel Prime"},{regex:"(?:WIKO-)?U FEEL",model:"U Feel"},{regex:"(?:WIKO-)?View2 Go",model:"View 2 Go"},{regex:"(?:WIKO-)?View XL",model:"View XL"},{regex:"(?:WIKO-)?View Prime",model:"View Prime"},{regex:"WC300",model:"View Lite"},{regex:"W_C800",model:"View 2"},{regex:"W_C860",model:"View 2 Pro"},{regex:"W_P200",model:"View Max"},{regex:"W_P130",model:"View Go"},{regex:"W-V800-(TVM|TIM|EEA|OPE|DU)",model:"View 3 Lite"},{regex:"W-K130-(?:OPE|EEA)",model:"Y50"},{regex:"W-K420-EEA",model:"Y50"},{regex:"W-K510-(?:TVM|EEA|OPE|SUN|BYT|TH)|W-K510S-SWI",model:"Y60"},{regex:"W-V720-(?:EEA|OPE|SUN)",model:"Y80"},{regex:"W-P311-(?:EEA|OPE|TVM)",model:"View 3"},{regex:"W-P611-(?:EEA|OPE)",model:"View 3 Pro"},{regex:"W-V830-EEA",model:"View 4"},{regex:"W-V730-EEA",model:"View 4 Lite"},{regex:"W-U300(?:[);/ ]|$)",model:"Ride"},{regex:"Wiko ([^/;]+) Build",model:"$1"},{regex:"Wiko ([^/; ]+)",model:"$1"}]},Wieppo={regex:"Wieppo (S6 Lite|S[658]|E1)(?:[);/ ]|$)",device:"smartphone",model:"$1"},Weimei={regex:"weplus_3",device:"smartphone",models:[{regex:"weplus_3",model:"WePlus 3"}]},Wileyfox={regex:"(?:Wileyfox [^/]+)|Swift 2(?:[);/ ]|$)",device:"smartphone",models:[{regex:"Wileyfox Spark \\+",model:"Spark +"},{regex:"Wileyfox Spark X",model:"Spark X"},{regex:"Wileyfox (Spark|Swift)",model:"$1"},{regex:"Wileyfox ([^/)]+)(?: Build|\\))",model:"$1"},{regex:"Swift 2 (X|Plus)(?:[);/ ]|$)",model:"Swift 2 $1"},{regex:"Swift 2(?:[);/ ]|$)",model:"Swift 2"}]},Wolder={regex:"miSmart|miTab|WIAM \\#24|WOLDER",device:"smartphone",models:[{regex:"WIAM \\#24",model:"Wiam #24"},{regex:"WOLDER_WIAM_65",model:"Wiam #65"},{regex:"miSmart[ \\-_]?([^/]+) Build",model:"miSmart $1"},{regex:"miTab[ \\-_]?([^/)]+)(?: Build|\\))",device:"tablet",model:"miTab $1"}]},Wolfgang={regex:"AT[ _-]AS([0-9A-Z]+)(?:[);/ ]|$)",device:"smartphone",model:"AT-AS$1"},Wonu={regex:"Wonu ([a-z0-9]+)",device:"feature phone",model:"$1"},Woo={regex:"SP5026i-Scorpio",device:"smartphone",models:[{regex:"SP5026i-Scorpio",model:"Scorpio"}]},Woxter={regex:"Woxter[ _]([^/;)]+)(?: Build|\\))|Nimbus 101Q",device:"tablet",models:[{regex:"Nimbus 101Q",model:"Nimbus 101Q"},{regex:"Woxter[ _]([^/;)]+)(?: Build|\\))",model:"$1"}]},POCO={regex:"(?:POCO[ _](?:X[23]|F2 PRO|M[32])|M2010J19C[GI]|M2007J20C[ITG]|M2012K11AG|M2006C3MI|M2004J19PI|M2102J20SG)(?:[);/ ]|$)",device:"smartphone",models:[{regex:"POCO X2(?:[);/ ]|$)",model:"X2"},{regex:"(?:M2010J19C[GI]|POCO M3)(?:[);/ ]|$)",model:"M3"},{regex:"M2012K11AG(?:[);/ ]|$)",model:"F3"},{regex:"M2004J19PI(?:[);/ ]|$)",model:"M2"},{regex:"POCO M2 Pro(?:[);/ ]|$)",model:"M2 Pro"},{regex:"(?:M2007J20C[GT]|POCO X3 NFC)(?:[);/ ]|$)",model:"X3 NFC"},{regex:"(?:M2007J20CI|POCO X3)(?:[);/ ]|$)",model:"X3"},{regex:"M2102J20SG(?:[);/ ]|$)",model:"X3 Pro"},{regex:"M2006C3MI(?:[);/ ]|$)",model:"C3"},{regex:"POCO F2 PRO(?:[);/ ]|$)",model:"F2 Pro"}]},Xiaomi={regex:"Xiaomi(?!/(?:Miui|Mint[ ])Browser)|Mi9 Pro 5G|(?:MI [a-z0-9]+|Mi-4c|MI-One[ _]?[a-z0-9]+|MIX(?: 2S?)?)(?:[);/ ]|$)|HM (?:[^/;]+) (?:Build|MIUI)|(?:2014501|2014011|201481[12378]|201302[23]|2013061) Build|Redmi|POCOPHONE|(?:SHARK )?(KLE|MBU)-[AH]0|SKR-[AH]0|SKW-[AH]0|POCO F1|DLT-[AH]0|MIBOX[234]([_ ]PRO)?|MiTV4[CSX]?|MiTV-(MSSP[01]|AXSO0)|AWM-A0|MI CC 9 Meitu Edition|MiBOX1S|MiTV4A|M2006J10C|M2006C3(?:L[IGC]|LVG|MN?G)|M2007J1(?:7[CGI]|SC)|M2002J9[EG]|HM2014819|WT88047|M2004J(?:7[AB]|19)C|M2012K11C|M2011K2[CG]|M2006C3[ML]II|M2003J15SC|M2007J3S[ICYGP]|M2007J22[CG]|M2101K6[GI]|M2101K(?:[79]AG|7AI)|M2010J19S[CGYI]|HM NOTE 1(?:LTE|W)|MI[_ ]PLAY|XIG01|MI_(NOTE_Pro|5X|4i|(?:A2|8)_Lite)",device:"smartphone",models:[{regex:"SKR-[AH]0",model:"Black Shark"},{regex:"AWM-A0",model:"Black Shark Helo"},{regex:"SKW-[AH]0",model:"Black Shark 2"},{regex:"DLT-[AH]0",model:"Black Shark 2 Pro"},{regex:"(?:SHARK )?KLE-A0",model:"Black Shark 3"},{regex:"(?:SHARK )?KLE-H0",model:"Black Shark 3 5G"},{regex:"(?:SHARK )?MBU-H0",model:"Black Shark 3 Pro 5G"},{regex:"(?:SHARK )?MBU-A0",model:"Black Shark 3 Pro"},{regex:"Xiaomi_2014501|2014501 Build",model:"Hongmi 4G"},{regex:"Xiaomi_2014011|2014011 Build",model:"Hongmi 1S"},{regex:"Xiaomi_201302[23]|201302[23] Build",model:"Hongmi"},{regex:"Xiaomi[_-]2014818|2014818 Build",model:"Hongmi 2 3G"},{regex:"Xiaomi_2014817|2014817 Build",model:"Hongmi 2"},{regex:"Xiaomi[_-]201481[123]|201481[123] Build",model:"Hongmi 2 4G"},{regex:"MI[_ ]PLAY(?:[);/ ]|$)",model:"MI Play"},{regex:"Mi 9 SE(?:[);/ ]|$)",model:"MI 9 SE"},{regex:"MI CC 9 Meitu Edition(?:[);/ ]|$)",model:"MI CC 9"},{regex:"Xiaomi_M2001J2E_TD-LTE(?:[);/ ]|$)",model:"MI 10"},{regex:"M2011K2[CG](?:[);/ ]|$)",model:"MI 11"},{regex:"M2007J3S[CYP](?:[);/ ]|$)",model:"MI 10T 5G"},{regex:"M2007J3S[GI](?:[);/ ]|$)",model:"MI 10T Pro 5G"},{regex:"M2007J17G(?:[);/ ]|$)",model:"MI 10T Lite 5G"},{regex:"M2007J1SC(?:[);/ ]|$)",model:"MI 10 Ultra 5G"},{regex:"(?:M2002J9[EG]|XIG01)(?:[);/ ]|$)",model:"MI 10 Lite 5G"},{regex:"M2007J17I(?:[);/ ]|$)",model:"MI 10i"},{regex:"M2101K9AG(?:[);/ ]|$)",model:"MI 11 Lite"},{regex:"MI[ _]8[ _]Lite(?:[);/ ]|$)",model:"MI 8 Lite"},{regex:"Mi 9T Pro(?:[);/ ]|$)",model:"MI 9T Pro"},{regex:"Mi9 Pro 5G(?:[);/ ]|$)",model:"MI 9 Pro 5G"},{regex:"MI ([89]) Lite(?:[);/ ]|$)",model:"MI $1 Lite"},{regex:"MI 5s Plus(?:[);/ ]|$)",model:"MI 5s Plus"},{regex:"Xiaomi_2013061|2013061 Build",model:"MI 3"},{regex:"Mi-4c(?:[);/ ]|$)",model:"MI 4C"},{regex:"MI 4W(?:[);/ ]|$)",model:"MI 4W"},{regex:"Mi_4i(?:[);/ ]|$)",model:"MI 4i"},{regex:"MI MAX 3(?:[);/ ]|$)",model:"MI MAX 3"},{regex:"MI MAX 2(?:[);/ ]|$)",model:"MI MAX 2"},{regex:"Mi[ _]A2[ _]Lite(?:[);/ ]|$)",model:"MI A2 Lite"},{regex:"MIX 3(?:[);/ ]|$)",model:"MI MIX 3"},{regex:"MIX 2S(?:[);/ ]|$)",model:"MI MIX 2S"},{regex:"MIX 2(?:[);/ ]|$)",model:"MI MIX 2"},{regex:"MIX(?:[);/ ]|$)",model:"MI MIX"},{regex:"POCOPHONE[ _]F1|POCO F1",model:"Pocophone F1"},{regex:"Redmi 5 Plus",model:"Redmi 5 Plus"},{regex:"WT88047(?:[);/ ]|$)",model:"Redmi 2"},{regex:"HM2014819(?:[);/ ]|$)",model:"Redmi 2 Pro"},{regex:"HM 2A(?:[);/ ]|$)",model:"Redmi 2A"},{regex:"HM 1S[CW]?(?:[);/ ]|$)",model:"Redmi 1S"},{regex:"HM 1(?:[);/ ]|$)",model:"Redmi 1"},{regex:"M2004J7AC(?:[);/ ]|$)",model:"Redmi 10X"},{regex:"(?:M2004J19C|M2006C3MII)(?:[);/ ]|$)",model:"Redmi 9"},{regex:"M2010J19SI(?:[);/ ]|$)",model:"Redmi 9 Power"},{regex:"M2006C3L[GCI](?:[);/ ]|$)",model:"Redmi 9A"},{regex:"M2006C3LII(?:[);/ ]|$)",model:"Redmi 9i"},{regex:"M2006C3MG(?:[);/ ]|$)",model:"Redmi 9C"},{regex:"M2006C3LVG(?:[);/ ]|$)",model:"Redmi 9AT"},{regex:"M2010J19S[GY](?:[);/ ]|$)",model:"Redmi 9T"},{regex:"M2006C3MNG(?:[);/ ]|$)",model:"Redmi 9C NFC"},{regex:"M2004J7BC(?:[);/ ]|$)",model:"Redmi 10X Pro"},{regex:"Redmi K20 Pro(?:[);/ ]|$)",model:"Redmi K20 Pro"},{regex:"Redmi K30 5G(?:[);/ ]|$)",model:"Redmi K30 5G"},{regex:"M2012K11C(?:[);/ ]|$)",model:"Redmi K40 Pro"},{regex:"M2006J10C(?:[);/ ]|$)",model:"Redmi K30 Ultra"},{regex:"Redmi Y1 Lite(?:[);/ ]|$)",model:"Redmi Y1 Lite"},{regex:"MI PAD 4 PLUS(?:[);/ ]|$)",model:"Mi Pad 4 Plus",device:"tablet"},{regex:"MI PAD 4(?:[);/ ]|$)",model:"Mi Pad 4",device:"tablet"},{regex:"MI PAD 3(?:[);/ ]|$)",model:"Mi Pad 3",device:"tablet"},{regex:"MI PAD 2(?:[);/ ]|$)",model:"Mi Pad 2",device:"tablet"},{regex:"MI PAD(?:[);/ ]|$)",model:"Mi Pad",device:"tablet"},{regex:"MIBOX3[ _]Pro(?:[);/ ]|$)",model:"Mi Box 3 Pro",device:"tv"},{regex:"MIBOX([234])(?:[);/ ]|$)",model:"Mi Box $1",device:"tv"},{regex:"MiBOX1S(?:[);/ ]|$)",model:"Mi Box 1S",device:"tv"},{regex:"MiTV-MSSP1(?:[);/ ]|$)",model:"MiTV 4S",device:"tv"},{regex:"(?:MiTV-AXSO0|MiTV4(?:A|-ANSM0)|MiTV-MSSP0)(?:[);/ ]|$)",model:"MiTV 4A",device:"tv"},{regex:"(MiTV)(4[CSX]|4)(?:[);/ ]|$)",model:"$1 $2",device:"tv"},{regex:"HM NOTE 1W(?:[);/ ]|$)",device:"phablet",model:"Redmi Note"},{regex:"HM NOTE 1TD (?:Build|MIUI)",device:"phablet",model:"Hongmi Note 1TD"},{regex:"HM NOTE 1(?:LTE|S)(?:W|GLOBAL|TD)? (?:Build|MIUI)|HM NOTE 1LTE",device:"phablet",model:"Redmi Note 4G"},{regex:"Redmi Note 5A Prime",model:"Redmi Note 5A Prime",device:"phablet"},{regex:"M2010J19SC(?:[);/ ]|$)",model:"Redmi Note 9",device:"phablet"},{regex:"M2003J15SC(?:[);/ ]|$)",model:"Redmi Note 10X",device:"phablet"},{regex:"M2007J22G(?:[);/ ]|$)",model:"Redmi Note 9T 5G",device:"phablet"},{regex:"M2007J22C(?:[);/ ]|$)",model:"Redmi Note 9 5G",device:"phablet"},{regex:"M2007J17C(?:[);/ ]|$)",model:"Redmi Note 9 Pro 5G",device:"phablet"},{regex:"M2101K7A[GI]",model:"Redmi Note 10",device:"phablet"},{regex:"M2101K6[GI]",model:"Redmi Note 10 Pro",device:"phablet"},{regex:"Redmi Note ([5-9]) Pro(?:[);/ ]|$)",model:"Redmi Note $1 Pro",device:"phablet"},{regex:"Redmi[ _]Note[ _]([^;/) ]+)?",model:"Redmi Note $1",device:"phablet"},{regex:"Redmi[ _]([^;/) ]+)?",model:"Redmi $1"},{regex:"MI_NOTE_Pro",model:"MI Note Pro",device:"phablet"},{regex:"Mi Note 10 Pro",model:"Mi Note 10 Pro",device:"phablet"},{regex:"MI[ _]Note[ _]([^;/) ]+)?",model:"MI Note $1",device:"phablet"},{regex:"(MI(?:-One)?[ _](?:[^;/]*))Build",model:"$1"},{regex:"(MI[ _][a-z0-9]+|MI-One[ _]?[a-z0-9]+)(?:[);/ ]|$)",model:"$1"},{regex:"HM Note ([^/;]+) (?:Build|MIUI)",device:"phablet",model:"Note"},{regex:"HM ([^/;]+) (?:Build|MIUI)",model:"HM $1"},{regex:"Xiaomi[ _-]([^/;]+)(?: Build|$)",model:"$1"}]},Xion={regex:"XI-CE(?:655|U[48])",device:"smartphone",models:[{regex:"XI-CE(655|U[48])",model:"CE$1"}]},Xolo={regex:"Xolo|(?:Q600|Q700s?|Q800|Q1000s|Q1000[ _]Opus|Q1010i|Q2000|Omega[ _]5.[05]|Era5X|Era[ _]2V|Era_4X(?:_2GB)?)(?:[);/ ]|$)|BLACK-1XM",device:"smartphone",models:[{regex:"BLACK-1XM",model:"Black 1X"},{regex:"Era_?([45])X(?:[);/ ]|$)",model:"Era $1X"},{regex:"Era_4X_2GB(?:[);/ ]|$)",model:"Era 4X 2GB"},{regex:"Era[ _]2V(?:[);/ ]|$)",model:"Era 2V"},{regex:"(Q600 Club|Q600|Q700s?|Q800|Q1000s Plus|Q1000s|Q1000[ _]Opus|Q1010i|Q2000|Omega[ _]5.[05])(?:[);/ ]|$)",model:"$1"},{regex:"Xolo[ _]?([^;/]+) Build",model:"$1"},{regex:"Xolo[ _]?([a-z0-9_-]+)",model:"$1"}]},Yarvik={regex:"Xenta[ \\-]Tab|Luna TAB|TAB09-410|TAB10-410|TAB07-485|TAB0[78]-200|TAB08-201-3G|TAB9-200|TAB09-211|TAB10-2[01]1|TAB13-201",device:"tablet",models:[{regex:"Luna TAB07-920N",model:"Luna 7"},{regex:"Luna TAB07-10[01]",model:"Luna 7c"},{regex:"Luna TAB274",model:"Luna 7c"},{regex:"Luna TAB474",model:"Luna 10"},{regex:"Luna TAB10-150",model:"Luna 10c"},{regex:"TAB09-410",model:"Noble 9.7"},{regex:"TAB10-410",model:"Noble 10.1"},{regex:"TAB07-485",model:"Noble Mini"},{regex:"Xenta-TAB07-21[01]",model:"Xenta 7c"},{regex:"TAB07-200",model:"Xenta 7ic"},{regex:"TAB08-200",model:"Xenta 8ic"},{regex:"TAB08-201-3G",model:"Xenta 8c"},{regex:"TAB9-200",model:"Xenta 9.7ic"},{regex:"TAB09-211",model:"Xenta 9.7ic+"},{regex:"TAB10-2[01]1",model:"Xenta 10ic"},{regex:"TAB13-201",model:"Xenta 13c"}]},Yes={regex:"M631Y|M685Y4|M651G_MY|YES (MPY(?:48|54))",device:"smartphone",models:[{regex:"M631Y",model:"Altitude"},{regex:"M651G_MY",model:"Altitude 2"},{regex:"M685Y4",model:"Altitude 3"},{regex:"YES (MPY(?:48|54))",model:"$1"}]},Yezz={regex:"Yezz|ANDY[ _]|(?:4E4|A5EI|LIV1)(?:[);/ ]|$)",device:"smartphone",models:[{regex:"4E4",model:"Andy 4E4"},{regex:"Yezz-AC4EI",model:"Andy 4EI"},{regex:"YEZZ-A4M",model:"Andy A4M"},{regex:"A5EI",model:"Andy A5EI"},{regex:"LIV1",model:"LIV1"},{regex:"Andy[ _]([A-Z]*[0-9]\\.[0-9][A-Z0-9]*)(?:[ _](LTE))?",model:"Andy $1 $2"},{regex:"Andy[ _]([A-Z]*[0-9])([0-9][A-Z0-9]*)(?:[ _](LTE))?",model:"Andy $1.$2 $3"},{regex:"Andy[ _]([A-Z]*[0-9][A-Z0-9]+)(?:[ _](LTE))?",model:"Andy $1 $2"}]},Yu={regex:"(?:YU5[05]10[A]?|YU4711|AO5510|YU5050|YU501[14]|YU5551)(?:[);/ ]|$)",device:"smartphone",models:[{regex:"YU5010[A]?(?:[);/ ]|$)",model:"Yuphoria"},{regex:"YU5011(?:[);/ ]|$)",model:"Yunique 2"},{regex:"YU5050(?:[);/ ]|$)",model:"Yutopia"},{regex:"AO5510(?:[);/ ]|$)",model:"Yureka"},{regex:"YU5551(?:[);/ ]|$)",model:"Yureka 2"},{regex:"YU5510[A]?(?:[);/ ]|$)",model:"Yureka Plus"},{regex:"YU4711(?:[);/ ]|$)",model:"Yunique"},{regex:"YU5014(?:[);/ ]|$)",model:"Ace"}]},Yuandao={regex:"N101[ _]DUAL(?:[ _]CORE)?(?:[ _]?2|\\|\\|)?(?:[ _]V11)?(?:[);/ ]|$)",device:"tablet",model:"N101"},Yusun={regex:"Yusun|LA2-T",device:"smartphone",models:[{regex:"LA2-T",model:"LA2-T"},{regex:"Yusun ([^;/]+) Build",model:"$1"},{regex:"Yusun ([a-z0-9_\\-\\+]+)",model:"$1"}]},Ytone={regex:"YTONE[ _\\-]",device:"smartphone",models:[{regex:"YTONE[ _\\-]?([^/;]+) Build",model:"$1"},{regex:"YTONE[ _\\-]?([^);/ ]+)",model:"$1"}]},Zonda={regex:"(ZM(?:CK|EM|TFTV|TN)[a-z0-9]+)|ZA409",device:"feature phone",models:[{regex:"ZA409",device:"smartphone",model:"Muzic"},{regex:"(ZM(?:CK|EM|TFTV|TN)[a-z0-9]+)",model:"$1"}]},ZYQ={regex:"ZYQ-Q88|(Q(?:2602|262[436]|638|2688|272[89]|3022|3623|TAB Tab4|328 m9|328|668)|J77|Q[._](?:Up|Boss P99|Dee R09|Good M9|Hi|Hot|Me|Mate R99|Next|TOP-X8|You))(?:[);/ ]|$)",device:"smartphone",models:[{regex:"Q638",model:"I7"},{regex:"Q2624",model:"Cheer 3G"},{regex:"Q2602",model:"TV Next"},{regex:"Q2728",model:"Zone 3G"},{regex:"Q2729",model:"Q2729"},{regex:"Q2688",model:"Q2688"},{regex:"Q2623",model:"Win 3G"},{regex:"Q2626",model:"Care 3G"},{regex:"Q3623",model:"Braw 3G"},{regex:"Q3022",model:"Q3022"},{regex:"Q328 m9",model:"Q328 M9"},{regex:"Q328",model:"Speed 3G"},{regex:"Q668",model:"TV I4"},{regex:"J77",model:"Q.Dee"},{regex:"Q\\.Up C5",model:"Q.Up C5"},{regex:"Q\\.Up",model:"Q.Up"},{regex:"Q\\.Boss P99",model:"Q.Boss P99"},{regex:"Q[._]Dee R09",model:"Q.Dee R09"},{regex:"Q\\.Good M9",model:"Q.Good M9"},{regex:"Q[._]Hi S1",model:"Q.Hi S1"},{regex:"Q[._]Hi",model:"Q.Hi"},{regex:"Q[._]Hot P7 3G",model:"Q.Hot P7 3G"},{regex:"Q[._]Hot",model:"Q.Hot"},{regex:"Q[._]Me Phone7 3G",model:"Q.Me Phone 7 3G"},{regex:"Q[._]Me Plus7",model:"Q.Me Plus 7"},{regex:"Q[._]Me",model:"Q.Me"},{regex:"Q[._]Mate R99",model:"Q.Mate R99"},{regex:"Q[._]Next B7",model:"Q.Next B7"},{regex:"Q[._]Next J2",model:"Q.Next J2"},{regex:"Q[._]TOP-X8",model:"Q.Top X8"},{regex:"Q[._]You",model:"Q.You"},{regex:"QTAB Tab4",model:"QTab Tab4",device:"tablet"},{regex:"ZYQ-Q88",model:"Q88",device:"tablet"}]},Toshiba$3={regex:"Toshiba|TSBNetTV/|portalmmm/[12].0 TS|T-01C|T-0[12]D|IS04|IS11T|AT1S0|AT300SE|AT(7-C|10-A|10[PL]E-A|100|200|270|300|330|374|400|470|500|503|570|703|830)",device:"smartphone",models:[{regex:"T-01C",model:"Regza T-01C"},{regex:"T-01D",model:"Regza T-01D"},{regex:"T-02D",model:"Regza T-02D"},{regex:"IS04",model:"Regza IS04"},{regex:"IS11T",model:"Regza IS11T"},{regex:"AT7-C",model:"Excite",device:"tablet"},{regex:"AT1S0",model:"Regza AT1S0",device:"tablet"},{regex:"AT300SE",model:"Regza AT300SE",device:"tablet"},{regex:"AT500a",model:"Regza AT500a",device:"tablet"},{regex:"AT(100|200|270|300|330|374|400|470|500|503|570|703|830)",model:"Regza AT$1",device:"tablet"},{regex:"AT10([PL])E-A",model:"Excite AT10$1-A",device:"tablet"},{regex:"AT10-A",model:"Excite AT10-A",device:"tablet"},{regex:"TSBNetTV/",device:"tv",model:""},{regex:"Toshiba[ /_\\-]?([a-z0-9_ \\-]+) Build",model:"$1"},{regex:"Toshiba[ /_\\-]?([a-z0-9_\\-]+)",model:"$1"},{regex:"portalmmm/[12].0 (TS[a-z0-9 ]+)",model:"$1"}]},Vivax={regex:"VIVAX|(?:Fly5[_ ]Lite|Fun[_ ]S500|Point_(?:X[12]|X501)|PRO3|32LE77SM|40LE77SM|FUN S1|FUN_S20)(?:[);/ ]|$)",device:"smartphone",models:[{regex:"Fly5[_ ]Lite(?:[);/ ]|$)",model:"Fly 5 Lite"},{regex:"Point_X([12])(?:[);/ ]|$)",model:"Point X$1"},{regex:"Fun[_ ]S500(?:[);/ ]|$)",model:"Fun S500"},{regex:"FUN[ _]S(1|20)(?:[);/ ]|$)",model:"Fun S$1"},{regex:"VIVAX[ _]Fly3(?:[);/ ]|$)",model:"Fly 3"},{regex:"VIVAX[ _]Fly[ _]V1(?:[);/ ]|$)",model:"Fly V1"},{regex:"(?:VIVAX )?(Point[ _](?:X551|X501))(?:[);/ ]|$)",model:"$1"},{regex:"SMART Point X5010(?:[);/ ]|$)",model:"Smart Point X5010"},{regex:"VIVAX[_ ]PRO3",model:"Pro 3"},{regex:"VIVAX TABLET TPC 802 3G(?:[);/ ]|$)",model:"TPC-802 3G"},{regex:"(32LE77SM|40LE77SM)",device:"tv",model:"$1"}]},MLS={regex:"IQ(?:0705|L550|1010w?|1012N?|1019N|1025|1380|1401|1436|1452a|1453|1470|1502a|1511|1552|1553|1568|1570|1805N|1806|1808|1810B_M|1832|1850|1890|5017|9610|181011N|E[12]00|EL41|G550|GW516|L30|L5[01]|M801|M1001|N700|P50|R300|S300|S1001|W503|W511T|W553N?|W60[38]|W626|M960|D700|9013_4N)(?:[);/ ]|$)",device:"smartphone",models:[{regex:"IQ0705(?:[);/ ]|$)",model:"iQTalk Twist"},{regex:"IQL550(?:[);/ ]|$)",model:"Notch Lite"},{regex:"IQ1010W?(?:[);/ ]|$)",model:"iQTab 10",device:"tablet"},{regex:"IQ1012N?(?:[);/ ]|$)",model:"iQTab Brave 3G",device:"tablet"},{regex:"IQ1025(?:[);/ ]|$)",model:"iQTab Action 4G",device:"tablet"},{regex:"iQ9013_4N(?:[);/ ]|$)",model:'Life 10.1"',device:"tablet"},{regex:"IQ1019N(?:[);/ ]|$)",model:'Alu Plus 4G 10.1"',device:"tablet"},{regex:"iQ1805N(?:[);/ ]|$)",model:'iQTab Ideal 8.0"',device:"tablet"},{regex:"iQ181011N(?:[);/ ]|$)",model:'iQTab Care 8.0"',device:"tablet"},{regex:"IQ1380(?:[);/ ]|$)",model:"Brain 3G"},{regex:"IQ1401(?:[);/ ]|$)",model:"iQTalk Verse 4G"},{regex:"IQ1436(?:[);/ ]|$)",model:"Color mini 4G"},{regex:"IQ1452a(?:[);/ ]|$)",model:"TOP-S 4G"},{regex:"IQ1453(?:[);/ ]|$)",model:"Trend 4G"},{regex:"IQ1470(?:[);/ ]|$)",model:"iQTalk Onyx"},{regex:"IQ1502a(?:[);/ ]|$)",model:"iQTalk Flame"},{regex:"IQ1511(?:[);/ ]|$)",model:"iQTalk Spicy"},{regex:"IQ1552(?:[);/ ]|$)",model:"iQTalk Titan 4G"},{regex:"IQ1553(?:[);/ ]|$)",model:"Color 3 4G"},{regex:"IQ1568(?:[);/ ]|$)",model:"Range 4G"},{regex:"IQ1570(?:[);/ ]|$)",model:"iQTalk Color 5.5 4G"},{regex:"IQ1806(?:[);/ ]|$)",model:"iQTab Rose",device:"tablet"},{regex:"IQ1808(?:[);/ ]|$)",model:"iQTab Master",device:"tablet"},{regex:"IQ1810B_M(?:[);/ ]|$)",model:"iQTab Novel 3G",device:"tablet"},{regex:"IQ1832(?:[);/ ]|$)",model:"Jet 3G",device:"tablet"},{regex:"IQ1850(?:[);/ ]|$)",model:"Diamond 5.2 4G"},{regex:"IQ1890(?:[);/ ]|$)",model:"iQTalk Aura"},{regex:"IQ5017(?:[);/ ]|$)",model:"Slice 4G"},{regex:"IQ9610(?:[);/ ]|$)",model:"Angel 3G",device:"tablet"},{regex:"iQM960(?:[);/ ]|$)",model:"Angel 3G (2018)",device:"tablet"},{regex:"IQG550(?:[);/ ]|$)",model:"Style 4G"},{regex:"IQGW516(?:[);/ ]|$)",model:"F5"},{regex:"IQE100(?:[);/ ]|$)",model:"Energy 4G"},{regex:"iQE200(?:[);/ ]|$)",model:"MX 4G"},{regex:"IQEL41(?:[);/ ]|$)",model:"Fab 4G"},{regex:"IQL30(?:[);/ ]|$)",model:"Status 4G"},{regex:"IQL50(?:[);/ ]|$)",model:"More 4G"},{regex:"IQL51(?:[);/ ]|$)",model:"Wave 4G"},{regex:"IQM801(?:[);/ ]|$)",model:"Brace 2018 4G",device:"tablet"},{regex:"IQM1001(?:[);/ ]|$)",model:"Level 4G",device:"tablet"},{regex:"IQN700(?:[);/ ]|$)",model:"Inspire 4G"},{regex:"IQP50(?:[);/ ]|$)",model:"Ruby 4G"},{regex:"IQS300(?:[);/ ]|$)",model:"DX 4G"},{regex:"IQS1001(?:[);/ ]|$)",model:"Vista 4G",device:"tablet"},{regex:"IQR300(?:[);/ ]|$)",model:"R3 4G"},{regex:"IQW608(?:[);/ ]|$)",model:"Regal"},{regex:"iQW603(?:[);/ ]|$)",model:'Phab 6.0"',device:"phablet"},{regex:"IQW626(?:[);/ ]|$)",model:"D6 4G"},{regex:"IQW511T(?:[);/ ]|$)",model:"Liberal"},{regex:"IQW553N?(?:[);/ ]|$)",model:'Alu 5.5"'},{regex:"IQW503(?:[);/ ]|$)",model:"Flame 4G (2018)"},{regex:"iQD700(?:[);/ ]|$)",model:"Color Fingerprint 4G"}]},Fly={regex:"Fly(?!Flow|touch)|Power Plus 5000|Photo Pro|Slimline|Life (?:Ace|Jet|Sky|Compact 4G|Geo)|FS50[1-9]|FS51[0-8]|FS52[0-9]|FS530|FS55[134]|FS40[1-9]|FS45[1-9]|4FS06|MERIDIAN-|(?:IQ(?!10[134]0)[0-9]{3,}[i]?)[ _]?(?:Quad|Firebird|Quattro|Turbo|Magic)?(?:[);/ ]|$)",device:"smartphone",models:[{regex:"(?:Fly_)?IQ310(?:[);/ ]|$)",model:"Panorama",device:"tablet"},{regex:"(?:Fly_)?IQ236(?:[);/ ]|$)",model:"Victory"},{regex:"Slimline(?:[);/ ]|$)",model:"Slimline"},{regex:"Power Plus 5000(?:[);/ ]|$)",model:"Power Plus 5000"},{regex:"Photo Pro(?:[);/ ]|$)",model:"Photo Pro"},{regex:"Life Ace(?:[);/ ]|$)",model:"Life Ace"},{regex:"Life Jet(?:[);/ ]|$)",model:"Life Jet"},{regex:"Life Sky(?:[);/ ]|$)",model:"Life Sky"},{regex:"Life Geo(?:[);/ ]|$)",model:"Life Geo"},{regex:"Life Compact 4G(?:[);/ ]|$)",model:"Life Compact 4G"},{regex:"FS506",model:"Cirrus 3"},{regex:"FS403",model:"Cumulus 1"},{regex:"FS508",model:"Cirrus 6"},{regex:"FS511",model:"Cirrus 7"},{regex:"FS509",model:"Nimbus 9"},{regex:"FS406",model:"Stratus 5"},{regex:"FS404",model:"Stratus 3"},{regex:"FS504",model:"Cirrus 2"},{regex:"FS407",model:"Stratus 6"},{regex:"FS401",model:"Stratus 1"},{regex:"FS402",model:"Stratus 2"},{regex:"FS501",model:"Nimbus 3"},{regex:"FS502",model:"Cirrus 1"},{regex:"FS507",model:"Cirrus 4"},{regex:"FS505",model:"Nimbus 7"},{regex:"FS551",model:"Nimbus 4"},{regex:"FS514",model:"Cirrus 8"},{regex:"FS553",model:"Cirrus 9"},{regex:"FS554",model:"Power Plus FHD"},{regex:"FS517",model:"Cirrus 11"},{regex:"FS516",model:"Cirrus 12"},{regex:"FS518",model:"Cirrus 13"},{regex:"FS520",model:"Selfie 1"},{regex:"FS521",model:"Power Plus 1"},{regex:"FS522",model:"Cirrus 14"},{regex:"FS523",model:"Cirrus 16"},{regex:"FS524",model:"Knockout"},{regex:"FS526",model:"Power Plus 2"},{regex:"FS527",model:"Nimbus 17"},{regex:"FS528",model:"Memory Plus"},{regex:"FS529",model:"Сhamp"},{regex:"FS530",model:"Power Plus XXL"},{regex:"FS454",model:"Nimbus 8"},{regex:"FS452",model:"Nimbus 2"},{regex:"FS512",model:"Nimbus 10"},{regex:"FS510",model:"Nimbus 12"},{regex:"FS451",model:"Nimbus 1"},{regex:"FS405",model:"Stratus 4"},{regex:"FS408",model:"Stratus 8"},{regex:"FS409",model:"Stratus 9"},{regex:"FS455",model:"Nimbus 11"},{regex:"FS456",model:"Nimbus 14"},{regex:"FS457",model:"Nimbus 15"},{regex:"FS459",model:"Nimbus 16"},{regex:"FS458",model:"Stratus 7"},{regex:"(?:Fly_)?IQ237(?:[);/ ]|$)",model:"Dynamic"},{regex:"(?:Fly_)?IQ238(?:[);/ ]|$)",model:"Jazz"},{regex:"(?:Fly_)?IQ240(?:[);/ ]|$)",model:"Whizz"},{regex:"(?:Fly_)?IQ255(?:[);/ ]|$)",model:"Pride"},{regex:"(?:Fly_)?IQ270(?: Firebird)?(?:[);/ ]|$)",model:"Firebird"},{regex:"(?:Fly_)?IQ275(?:[);/ ]|$)",model:"Marathon"},{regex:"(?:Fly_)?IQ285(?: Turbo)?(?:[);/ ]|$)",model:"Turbo"},{regex:"(?:Fly_)?IQ430(?:[);/ ]|$)",model:"Evoke"},{regex:"(?:Fly_)?IQ431(?:[);/ ]|$)",model:"Glory"},{regex:"(?:Fly_)?IQ432(?:[);/ ]|$)",model:"Era Nano 1"},{regex:"(?:Fly_)?IQ436(?:[);/ ]|$)",model:"Era Nano 3"},{regex:"(?:Fly_)?IQ4490(?:[);/ ]|$)",model:"Era Nano 4"},{regex:"(?:Fly_)?IQ434(?:[);/ ]|$)",model:"Era Nano 5"},{regex:"(?:Fly_)?IQ4406(?:[);/ ]|$)",model:"Era Nano 6"},{regex:"(?:Fly_)?IQ436i(?:[);/ ]|$)",model:"Era Nano 9"},{regex:"(?:Fly_)?IQ440(?:[);/ ]|$)",model:"Energy"},{regex:"(?:Fly_)?IQ4401(?:[);/ ]|$)",model:"Era Energy 2"},{regex:"(?:Fly_)?IQ441(?:[);/ ]|$)",model:"Radiance"},{regex:"(?:Fly_)?IQ442 Quad(?:[);/ ]|$)",model:"Miracle 2"},{regex:"(?:Fly_)?IQ442(?:[);/ ]|$)",model:"Miracle"},{regex:"(?:Fly_)?IQ443(?:[);/ ]|$)",model:"Trend"},{regex:"(?:Fly_)?IQ444(?: Quattro)?(?:[);/ ]|$)",model:"Diamond 2"},{regex:"(?:Fly_)?IQ445(?:[);/ ]|$)",model:"Genius"},{regex:"(?:Fly_)?IQ446(?: Magic)?(?:[);/ ]|$)",model:"Magic"},{regex:"(?:Fly_)?IQ447(?:[);/ ]|$)",model:"Era Life 1"},{regex:"(?:Fly_)?IQ456(?:[);/ ]|$)",model:"Era Life 2"},{regex:"(?:Fly_)?IQ4409 Quad(?:[);/ ]|$)",model:"Era Life 4"},{regex:"(?:Fly_)?IQ448(?:[);/ ]|$)",model:"Chic"},{regex:"(?:Fly_)?IQ449(?:[);/ ]|$)",model:"Pronto"},{regex:"(?:Fly_)?IQ450(?:[);/ ]|$)",model:"Horizon"},{regex:"(?:Fly_)?IQ450[ _]Quattro(?:[);/ ]|$)",model:"Horizon 2"},{regex:"(?:Fly_)?IQ451(?:[);/ ]|$)",model:"Vista"},{regex:"(?:Fly_)?IQ452 Quad(?:[);/ ]|$)",model:"Ego Vision 1"},{regex:"(?:Fly_)?IQ454(?:[);/ ]|$)",model:"Evo Tech 1"},{regex:"(?:Fly_)?IQ4403(?:[);/ ]|$)",model:"Energy 3"},{regex:"(?:Fly_)?IQ4404(?:[);/ ]|$)",model:"Spark"},{regex:"(?:Fly_)?IQ4410 Quad(?:[);/ ]|$)",model:"Phoenix"},{regex:"(?:Fly_)?IQ4411(?:[);/ ]|$)",model:"Energy 2"},{regex:"(?:Fly_)?IQ4412 Quad(?:[);/ ]|$)",model:"Coral"},{regex:"(?:Fly_)?IQ4413[ _]Quad(?:[);/ ]|$)",model:"Evo Chic 3"},{regex:"(?:Fly_)?IQ4414 Quad(?:[);/ ]|$)",model:"Evo Tech 3"},{regex:"(?:Fly_)?IQ4415 Quad(?:[);/ ]|$)",model:"Era Style 3"},{regex:"(?:Fly_)?IQ4504 Quad(?:[);/ ]|$)",model:"Evo Energy 5"},{regex:"(?:Fly_)?IQ([0-9]+[i]? ?(?:Quad|Firebird|Quattro)?)(?:[);/ ]|$)",model:"IQ$1"},{regex:"Fly[ _\\-]?([a-z0-9_]+)/",model:"$1",device:"feature phone"},{regex:"Flylife[ _\\-]?([^/;]+) Build",model:"Flylife $1",device:"tablet"},{regex:"Fly[ _\\-]?([a-z0-9]+)",model:"$1"},{regex:"MERIDIAN-([a-z0-9]+)",model:"$1"}]},FinePower={regex:"FinePower[_ ]?([AB][1-9]|[CD][1-9])(?:[);/ ]|$)",device:"smartphone",models:[{regex:"FinePower[_ ]?([AB][1-9])(?:[);/ ]|$)",model:"$1",device:"tablet"},{regex:"FinePower[_ ]?([CD][1-9])(?:[);/ ]|$)",model:"$1"}]},Freetel={regex:"(?:FTJ17[AC]00|FTJ152[ABCD]|FTU18A00|FT141B|FT142D(?:_LTEXM)?|FT142A?|FTJ161[AB]|FTJ1[56]2E|FTJ162[BD]|FTE161[GE])(?:[);/ ]|$)",device:"smartphone",models:[{regex:"FTJ152C",model:"Samurai Miyabi"},{regex:"FTJ17A00(?:[);/ ]|$)",model:"Rei 2 Dual"},{regex:"FTJ17C00(?:[);/ ]|$)",model:"Priori 5"},{regex:"FTU18A00(?:[);/ ]|$)",model:"Cricket Wave"},{regex:"FTJ161A",model:"Musashi"},{regex:"FTE161E",model:"Ice 2"},{regex:"FTE161G",model:"Ice 2 Plus"},{regex:"FTJ162E",model:"Raijin"},{regex:"FT141B",model:"Nico"},{regex:"FT142D(?:_LTEXM)?(?:[);/ ]|$)",model:"XM"},{regex:"FT142A?",model:"Priori 2"},{regex:"FTJ152A",model:"Priori 3"},{regex:"FTJ162D",model:"Priori 4"},{regex:"FTJ152B",model:"Priori 3S LTE"},{regex:"FTJ152D",model:"Samurai Kiwami"},{regex:"FTJ162B",model:"Samurai Kiwami 2"},{regex:"FTJ161B",model:"Samurai Rei"},{regex:"FTJ152E",model:"Katana 1"}]},Zeemi={regex:"ZEEMI[ _-]",device:"smartphone",models:[{regex:"ZEEMI[ _-]([^/;]+) Build",model:"$1"},{regex:"ZEEMI[ _-]([^/;)]+)(?:[);/]|$)",model:"$1"}]},Zenek={regex:"Z5007|Z551[679]|Z6001",device:"smartphone",models:[{regex:"Z5517",model:"Leopardo"},{regex:"Z6001",model:"Libelula"},{regex:"Z5007",model:"Oso"},{regex:"Z5519",model:"Pingûino"},{regex:"Z5516",model:"Zebra"}]},Zopo={regex:"ZOPO|(?:ZOPO[_ ])?(Flash X3|ZP[0-9]{2,}[^/;]+)(?:\\)| Build)",device:"smartphone",models:[{regex:"(?:ZOPO_C2_MOD|ZP998)(?:[);/ ]|$)",model:"C2 II"},{regex:"ZOPO 9xxQuad(?:[);/ ]|$)",model:"9XX Quad"},{regex:"(?:ZOPO_)?ZP980[+](?:[);/ ]|$)",model:"ZP980+"},{regex:"(?:ZOPO_)?ZP980(?:[);/ ]|$)",model:"Scorpio"},{regex:"ZP952(?:[);/ ]|$)",model:"Speed 7 Plus"},{regex:"ZP951(?:[);/ ]|$)",model:"Speed 7"},{regex:"ZP955(?:[);/ ]|$)",model:"Speed 8"},{regex:"ZP950[+h]?(?:[);/ ]|$)",model:"Leader Max"},{regex:"ZP(?:900H?|910)(?:[);/ ]|$)",model:"Leader"},{regex:"ZP(?:800H|810)(?:[);/ ]|$)",model:"Libero HD"},{regex:"ZP500[+]?(?:[);/ ]|$)",model:"Libero"},{regex:"ZP330(?:[);/ ]|$)",model:"Color C"},{regex:"ZP370(?:[);/ ]|$)",model:"Color S"},{regex:"ZP5(63|86)(?:[);/ ]|$)",model:"Color X"},{regex:"ZP567(?:[);/ ]|$)",model:"Color C5i"},{regex:"ZP300[S+]?(?:[);/ ]|$)",model:"Field"},{regex:"ZP200[+]?(?:[);/ ]|$)",model:"Shining"},{regex:"ZP100(?:[);/ ]|$)",model:"Pilot"},{regex:"ZP1790(?:[);/ ]|$)",model:"Flash X2"},{regex:"ZP781(?:[);/ ]|$)",model:"Flash G5 Plus"},{regex:"(?:ZOPO_)?(Flash X3|X1i|ZP[0-9]{2,}[^/;)]+)(?: Build|\\))",model:"$1"}]},ZTE={regex:"ZTE|AxonPhone|([a-z0-9]+)_USA_Cricket|(?:Blade (?:V0820|L110|L[2357]|L7A|S6|V[6789]|V8Q|V8 SE|V9 VITA|X7|A(310|460|465|475|520|530|602)|V580|V Ultra|Q Lux)|N9[15]8St|NX(?:403A|404H|406E|40[X2]|507J|503A|505J|506J|508J|510J|512J|511J|513J|521J|523J_V1|529J|531J|541J|5[48]9J|551J|563J|569[HJ]|573J|575J|59[157]J|60[1689]J|61[12679]J|62[79]J|65[19]J|907J)|N818S|N951[0579]|N91[38]0|N9101|N913[267]|N952[01]|N9560|N9810|N799D|[UV]9180|[UV]9815|Z(?:233V|331|5031O|559DL|6621O|667T|768G|792|81[25]|818L|82[08]|83[12359]|85[125]|851M|992|(557|71[67]|798|836|861|916)BL|986DL|(232|718|828)TL|(?:233|353|558|717|799|837|862|899|917|963)VL|955A|95[678]|965|97[018]|98[1237]|986U|999|936L)|V769M|Apex2|G (LTE|Lux)|Vec|Z959|V865M|Z3001S|902ZT|KIS II Max|Kis 3|K3DX-V5G|Z930L|Optus X|Blade[ _](A510|A[357] 2019-T|A6 MAX|A0622|X9)|Z3153V|Z836F|Nubia Z(?:9|11)|Ctyon-A9|602ZT|MO-01[JK]|Z963U|402ZT|P545|P609|dandelion|901ZT|A001ZT|Z-01K|UZTE V808|ZR01|ZTG01|K8[37]CA)(?:[);/ ]|$)",device:"smartphone",models:[{regex:"602ZT(?:[);/ ]|$)",model:"Libero 2"},{regex:"A001ZT(?:[);/ ]|$)",model:"Libero 3"},{regex:"901ZT(?:[);/ ]|$)",model:"Libero S10"},{regex:"ZR01(?:[);/ ]|$)",model:"Rakuten Big"},{regex:"ZTG01(?:[);/ ]|$)",model:"A1"},{regex:"A7020(?:[);/ ]|$)",model:"Blade A7s (2020)"},{regex:"ZTE 2050(?:RU)?",model:"Blade 20 Smart"},{regex:"902ZT(?:[);/ ]|$)",model:"Axon 10 Pro 5G"},{regex:"N799D(?:[);/ ]|$)",model:"Blade Eg"},{regex:"Z818L(?:[);/ ]|$)",model:"Allstar"},{regex:"Z3001S(?:[);/ ]|$)",model:"Quest Plus"},{regex:"Ctyon-A9(?:[);/ ]|$)",model:"Ctyon A9"},{regex:"K3DX-V5G(?:[);/ ]|$)",model:"V5G"},{regex:"N918St(?:[);/ ]|$)",model:"V5S"},{regex:"N958St(?:[);/ ]|$)",model:"V5 Max"},{regex:"N9101(?:[);/ ]|$)",model:"Imperial"},{regex:"Z963U(?:[);/ ]|$)",model:"Imperial Max"},{regex:"N9120(?:[);/ ]|$)",model:"Avid"},{regex:"N9130(?:[);/ ]|$)",model:"Speed"},{regex:"N9132(?:[);/ ]|$)",model:"Prestige"},{regex:"N9136(?:[);/ ]|$)",model:"Prestige 2"},{regex:"N9137(?:[);/ ]|$)",model:"Tempo X"},{regex:"N9180(?:[);/ ]|$)",model:"V5"},{regex:"N9510(?:[);/ ]|$)",model:"Warp 4G"},{regex:"N9517(?:[);/ ]|$)",model:"Blade Force"},{regex:"Z559DL(?:[);/ ]|$)",model:"Blade T2"},{regex:"402ZT(?:[);/ ]|$)",model:"Blade Q+"},{regex:"Blade Q Lux(?:[);/ ]|$)",model:"Blade Q Lux"},{regex:"N9515(?:[);/ ]|$)",model:"Warp Sync"},{regex:"N9519(?:[);/ ]|$)",model:"Warp 7"},{regex:"N9520(?:[);/ ]|$)",model:"Boost Max"},{regex:"N9521(?:[);/ ]|$)",model:"Boost Max+"},{regex:"N9560(?:[);/ ]|$)",model:"Max XL"},{regex:"N9810(?:[);/ ]|$)",model:"Vital"},{regex:"NX40[X2](?:[);/ ]|$)",model:"Nubia Z5 Mini"},{regex:"NX(403[AE]|406E|404H)(?:[);/ ]|$)",model:"Nubia Z5S Mini"},{regex:"NX503A(?:[);/ ]|$)",model:"Nubia Z5S"},{regex:"NX506J(?:[);/ ]|$)",model:"Nubia Z7"},{regex:"NX507J(?:[);/ ]|$)",model:"Nubia Z7 Mini"},{regex:"NX505J(?:[);/ ]|$)",model:"Nubia Z7 Max"},{regex:"NX508J(?:[);/ ]|$)",model:"Nubia Z9"},{regex:"(NX5[12]1J|Nubia Z9 mini)(?:[);/ ]|$)",model:"Nubia Z9 Mini"},{regex:"(NX510J|Nubia Z9 Max)(?:[);/ ]|$)",model:"Nubia Z9 Max"},{regex:"NX512J(?:[);/ ]|$)",model:"Nubia Z9 Max Dual"},{regex:"NX531J(?:[);/ ]|$)",model:"Nubia Z11"},{regex:"NX523J_V1",model:"Nubia Z11 Max"},{regex:"(?:NX549J|Nubia Z11 mini S)(?:[);/ ]|$)",model:"Nubia Z11 Mini S"},{regex:"(?:NX529J|Nubia Z11 mini)(?:[);/ ]|$)",model:"Nubia Z11 Mini"},{regex:"NX606J(?:[);/ ]|$)",model:"Nubia Z18"},{regex:"NX616J(?:[);/ ]|$)",model:"Nubia Z18S"},{regex:"NX611J(?:[);/ ]|$)",model:"Nubia Z18 Mini"},{regex:"NX551J(?:[);/ ]|$)",model:"Nubia M2"},{regex:"NX563J(?:[);/ ]|$)",model:"Nubia Z17"},{regex:"NX569[HJ](?:[);/ ]|$)",model:"Nubia Z17 Mini"},{regex:"NX589J(?:[);/ ]|$)",model:"Nubia Z17 Mini S"},{regex:"NX591J(?:[);/ ]|$)",model:"Nubia Z17 Lite"},{regex:"NX595J(?:[);/ ]|$)",model:"Nubia Z17S"},{regex:"NX612J(?:[);/ ]|$)",model:"Nubia V18"},{regex:"NX627J",model:"Nubia Z20"},{regex:"NX513J(?:[);/ ]|$)",model:"Nubia My Prague"},{regex:"NX601J(?:[);/ ]|$)",model:"Nubia X6"},{regex:"NX609J(?:[);/ ]|$)",model:"Nubia Red Magic"},{regex:"NX659J(?:[);/ ]|$)",model:"Nubia Red Magic 5G"},{regex:"NX651J(?:[);/ ]|$)",model:"Nubia Play"},{regex:"NX619J(?:[);/ ]|$)",model:"Nubia Red Magic Mars"},{regex:"NX629J(?:[);/ ]|$)",model:"Nubia Red Magic 3"},{regex:"NX573J",model:"Nubia M2 Lite"},{regex:"NX907J(?:[);/ ]|$)",model:"Nubia M2 Play"},{regex:"NX541J",model:"Nubia N1"},{regex:"NX597J",model:"Nubia N1 Lite"},{regex:"NX575J",model:"Nubia N2"},{regex:"NX6(08|17)J(?:[);/ ]|$)",model:"Nubia N3"},{regex:"[UV]9180(?:[);/ ]|$)",model:"V5 Red Bull"},{regex:"[UV]9815(?:[);/ ]|$)",model:"Grand Memo LTE"},{regex:"V779M",model:"Joey Jump 2"},{regex:"V807",model:"Blade C"},{regex:"V809",model:"Blade C2"},{regex:"ZTE_Blade_C2_Plus",model:"Blade C2 Plus"},{regex:"Blade G Plus",model:"Blade G Plus"},{regex:"ZTE_Blade_III",model:"Blade III"},{regex:"(?:ZTE_)?V829",model:"Blade G Pro"},{regex:"V882",model:"Lord"},{regex:"V967S",model:"Grand X2"},{regex:"V970M?|V987",model:"Grand X"},{regex:"Z959(?:[);/ ]|$)",model:"Grand X3"},{regex:"V8000",model:"Nova 4"},{regex:"Z95[67]",model:"Grand X4"},{regex:"Z987",model:"Grand X Max+"},{regex:"(?:ZTE_)?Grand[ _]Era",model:"Grand Era"},{regex:"V788D",model:"Kis Plus"},{regex:"Z331(?:[);/ ]|$)",model:"Z331"},{regex:"N818S(?:[);/ ]|$)",model:"N818S"},{regex:"Z5031O(?:[);/ ]|$)",model:"Optus X Spirit 2"},{regex:"P545(?:[);/ ]|$)",model:"Optus X Power 2"},{regex:"P609(?:[);/ ]|$)",model:"Optus X Wave"},{regex:"Optus X Start(?:[);/ ]|$)",model:"Optus X Start"},{regex:"BA520(?:[);/ ]|$)",model:"Blade A520"},{regex:"Blade (A(0620|310|321|452|460|462|465|475|510|512|52[012]|530|531|602|612|910)|L[12]10|L130|V0730|V0800|V580|V1000)(?:[);/ ]|$)",model:"Blade $1"},{regex:"Blade L2 Plus(?:[);/ ]|$)",model:"Blade L2 Plus"},{regex:"(?:ZTE_)?Blade[ _]L2(?:[);/ ]|$)",model:"Blade L2"},{regex:"Blade L3 Plus(?:[);/ ]|$)",model:"Blade L3 Plus"},{regex:"Blade L3 Apex(?:[);/ ]|$)",model:"Blade L3 Apex"},{regex:"Blade L3(?:[);/ ]|$)",model:"Blade L3"},{regex:"Blade L5 Plus(?:[);/ ]|$)",model:"Blade L5 Plus"},{regex:"Blade L5(?:[);/ ]|$)",model:"Blade L5"},{regex:"Blade L6(?:[);/ ]|$)",model:"Blade L6"},{regex:"Blade L7A(?:[);/ ]|$)",model:"Blade L7A"},{regex:"Blade L7(?:[);/ ]|$)",model:"Blade L7"},{regex:"Blade L8(?:RU)?(?:[);/ ]|$)",model:"Blade L8"},{regex:"Blade A([357]) (20(?:19|20))",model:"Blade A$1 ($2)"},{regex:"Blade A3 Lite(?:[);/ ]|$)",model:"Blade A3 Lite"},{regex:"BLADE A0622(?:[);/ ]|$)",model:"Blade A6"},{regex:"BLADE A6 MAX(?:[);/ ]|$)",model:"Blade A6 Max"},{regex:"Blade S6 Plus(?:[);/ ]|$)",model:"Blade S6 Plus"},{regex:"Blade S6(?:[);/ ]|$)",model:"Blade S6"},{regex:"T920(?:[);/ ]|$)",model:"Blade S7"},{regex:"BLADE V Ultra(?:[);/ ]|$)",model:"Blade V Ultra"},{regex:"Blade V6 MAX(?:[);/ ]|$)",model:"Blade V6 Max"},{regex:"Blade V6 Plus(?:[);/ ]|$)",model:"Blade V6 Plus"},{regex:"Blade (?:V7 Lite|V0720)(?:[);/ ]|$)",model:"Blade V7 Lite"},{regex:"Blade V([67])(?:[);/ ]|$)",model:"Blade V$1"},{regex:"Blade X([79])(?:[);/ ]|$)",model:"Blade X$1"},{regex:"Blade V8Q(?:[);/ ]|$)",model:"Blade V8Q"},{regex:"Blade V8 SE(?:[);/ ]|$)",model:"Blade V8 SE"},{regex:"Blade V(9|10) Vita(?:[);/ ]|$)",model:"Blade V$1 Vita"},{regex:"Blade V([89]|10)(?:[);/ ]|$)",model:"Blade V$1"},{regex:"BLADE V0820(?:[);/ ]|$)",model:"Blade V8 Lite"},{regex:"BLADE V0850(?:[);/ ]|$)",model:"Blade V8 Mini"},{regex:"(?:Blade[ _])?(Apex2|G (LTE|Lux)|Vec|A510)",model:"Blade $1"},{regex:"Z768G(?:[);/ ]|$)",model:"Midnight"},{regex:"Z820",model:"Obsidian"},{regex:"Z986U",model:"Blade Max 3"},{regex:"Z971",model:"Blade Spark"},{regex:"Z978",model:"Blade V8 Pro"},{regex:"Z839",model:"Blade Vantage"},{regex:"Z3153V",model:"Blade Vantage 2"},{regex:"Z930L",model:"Unico LTE"},{regex:"Z965",model:"Blade X"},{regex:"Z981",model:"Blade Z Max Pro"},{regex:"Z982",model:"Blade Z Max"},{regex:"Z983",model:"Blade X Max"},{regex:"Z717[BV]L(?:[);/ ]|$)",model:"Citrine LTE"},{regex:"Z233VL(?:[);/ ]|$)",model:"Cymbal-C LTE"},{regex:"Z233V",model:"Cymbal LTE"},{regex:"Z232TL",model:"Cymbal-G LTE"},{regex:"Z353VL",model:"Cymbal-T LTE"},{regex:"Z718TL",model:"Jasper LTE"},{regex:"KIS II Max",model:"Kis II Max"},{regex:"Kis 3",model:"Kis 3"},{regex:"(?:Z798BL|Z799VL)(?:[);/ ]|$)",model:"Majesty Pro LTE"},{regex:"Z899VL",model:"Majesty Pro Plus LTE"},{regex:"Z828TL",model:"Midnight Pro LTE"},{regex:"(?:ZTE-)?Z792",model:"Fanfare"},{regex:"(?:ZTE-)?Z812",model:"Maven"},{regex:"Z815",model:"Fanfare 2"},{regex:"Z831",model:"Maven 2"},{regex:"Z832",model:"Sonata 3"},{regex:"Z835",model:"Maven 3"},{regex:"Z851(?:[);/ ]|$)",model:"Prelude Plus"},{regex:"Z851M",model:"Overture 3"},{regex:"Z852",model:"Fanfare 3"},{regex:"Z828",model:"Avid Plus"},{regex:"Z855",model:"Avid 4"},{regex:"Z833",model:"Avid TRIO"},{regex:"(?:Z836BL|Z837VL|Z836F)(?:[);/ ]|$)",model:"ZFive 2 LTE"},{regex:"Z558VL",model:"ZFive C LTE"},{regex:"Z557BL",model:"ZFive G LTE"},{regex:"(?:Z861BL|Z862VL)(?:[);/ ]|$)",model:"ZFive L LTE"},{regex:"Z916BL",model:"ZMax Grand LTE"},{regex:"Z917VL",model:"ZMax Champ LTE"},{regex:"(?:Z958|Z955A)(?:[);/ ]|$)",model:"ZMax 2"},{regex:"dandelion(?:[);/ ]|$)",model:"ZMax 3"},{regex:"Z963VL",model:"Max Duo LTE"},{regex:"Z970",model:"ZMax Z970"},{regex:"Z986DL",model:"MAX Blue LTE"},{regex:"(?:ZTE[-_])?Z992",model:"Avail 2"},{regex:"(?:Z999|Z-01K)(?:[);/ ]|$)",model:"Axon M"},{regex:"B2016",model:"Axon Mini"},{regex:"A2015",model:"Axon Tianji"},{regex:"A2017[GU]?",model:"Axon 7"},{regex:"A2018",model:"Axon 7s"},{regex:"A2019G Pro",model:"Axon Pro"},{regex:"B2017G",model:"Axon 7 Mini"},{regex:"A2020G? Pro(?:[);/ ]|$)",model:"Axon 10 Pro"},{regex:"Z667T",model:"Zinger"},{regex:"V?975|geek",model:"Geek"},{regex:"Z716BL",model:"Citrine LTE"},{regex:"X500",model:"Score"},{regex:"X501",model:"Groove"},{regex:"(?:ZTE-)?G-X991",model:"Rio"},{regex:"F-450",model:"Adamant"},{regex:"Z936L(?:[);/ ]|$)",model:"Lever"},{regex:"MO-01[JK](?:[);/ ]|$)",model:"Mono"},{regex:"V865M(?:[);/ ]|$)",model:"V865M"},{regex:"Z6621O(?:[);/ ]|$)",model:"Optus X Vista"},{regex:"V769M(?:[);/ ]|$)",model:"Leo Q2"},{regex:"K83CA(?:[);/ ]|$)",device:"tablet",model:"Grand X View 3"},{regex:"K87CA(?:[);/ ]|$)",device:"tablet",model:"Grand X View 4"},{regex:"AxonPhone ([^;/]+) Build",model:"AxonPhone $1"},{regex:"([a-z0-9]+)_USA_Cricket",model:"$1"},{regex:"ZTE[- ](V98|V96A|V81|V70)(?:[);/ ]|$)",model:"$1",device:"tablet"},{regex:"ZTE[- ]([a-z0-9\\-_ ]+) Build",model:"$1"},{regex:"ZTE-(?:G |G-)?([a-z0-9 _]+)",model:"$1"},{regex:"U?ZTE[ _]([a-z0-9]+)",model:"$1"}]},Zuum={regex:"Zuum[ _-]|(?:Akus Z|COVET|MAGNO|ONIX S|STEDI|STELLAR(?:[ _](?:Z|PRO|[MP]1))?|GRAVITY Z|AURA X|COVET_PRO_LITE|RONI)(?:[);/ ]|$)",device:"smartphone",models:[{regex:"Akus Z",model:"Akus Z"},{regex:"COVET_PRO_LITE",model:"Covet Pro Lite"},{regex:"COVET PRO",model:"Covet Pro"},{regex:"COVET( Z)?",model:"Covet$1"},{regex:"MAGNO PLUS",model:"Magno Plus"},{regex:"MAGNO( C)?",model:"Magno$1"},{regex:"ONIX S",model:"Onix S"},{regex:"STEDI",model:"Stedi"},{regex:"STELLAR PRO",model:"Stellar Pro"},{regex:"STELLAR PLUS",model:"Stellar Plus"},{regex:"STELLAR ([MP]1|Z)",model:"Stellar $1"},{regex:"STELLAR MINI",model:"Stellar Mini"},{regex:"STELLAR MINI",model:"Stellar Mini"},{regex:"STELLAR",model:"Stellar"},{regex:"GRAVITY Z",model:"Gravity Z"},{regex:"AURA X",model:"Aura X"},{regex:"RONI",model:"Roni"},{regex:"Zuum[ _-]([^;/]+) Build",model:"$1"},{regex:"Zuum[ _-]?([^;/)]+)(?:[);/ ]|$)",model:"$1"}]},Zen={regex:"(Admire[_ ][^/;]+|Cinemax[^/;)]+)(?:Build|\\))|AdmireGlam",device:"smartphone",models:[{regex:"AdmireGlam(?:[);/ ]|$)",model:"Admire Glam"},{regex:"(Admire[_ ][^/;]+|Cinemax[^/;)]+)(?:Build|\\))",model:"$1"}]},Zync={regex:"ZYNC|(Cloud Z5|Z1000|Z18|Z99|Z99[_ ][23]G|Z99|Z900[_ ]Plus|Z909|Z930[+]|Z930)(?:[);/ ]|$)",device:"tablet",models:[{regex:"(Z18| DuZ99al Core|Z99[_ ][23]G|Z99 Dual Core|Z99|Z900[_ ]Plus|Z909|Z930[+]|Z930)",model:"$1"},{regex:"(Z1000[^/;]+)Build",model:"$1"},{regex:"Cloud (Z5)",model:"Cloud $1"},{regex:"ZYNC Cloud[ _]([^;]+)Build",model:"Cloud $1"},{regex:"ZYNC[ _]([^;]+)Build",model:"$1"}]},Lemhoov={regex:"Lemhoov",device:"smartphone",models:[{regex:"Lemhoov[ _-]([^/;]+) Build",model:"$1"}]},MTC$1={regex:"MTC[ _](968|97[82]|970|982[OT]?|1078)|(?:MTC[_ ])?SMART[ _]?(?:Race[2]?|Sprint|Run|Surf[2]?)[ _]4G|MTC975|Smart_(?:LINE|Light)|MTC[ _]SMART[ _](?:Run|Start_2)|Redbox Mini 5\\(MTS\\)",device:"smartphone",models:[{regex:"MTC[ _]?(97[258]|970[H]?|982[OT]?|968)",model:"$1"},{regex:"MTC[ _](1078)",model:"$1",device:"tablet"},{regex:"SMART[ _]Race[ _]4G",model:"Smart Race 4G"},{regex:"SMART[ _]Race2[ _]4G",model:"Smart Race 2 4G"},{regex:"(?:MTC_)?SMART[ _]Sprint[ _]4G",model:"Smart Sprint 4G"},{regex:"(?:MTC_)?SMART[ _]Start_2",model:"Smart Start 2"},{regex:"Smart_LINE",model:"Smart Line"},{regex:"Smart_Light",model:"Smart Light"},{regex:"SMART[ _]?Run(?:[ _]4G)?",model:"Smart Run 4G"},{regex:"SMART[ _]Surf2[ _]4G",model:"Smart Surf 2 4G"},{regex:"SMART[ _]Surf[ _]4G",model:"Smart Surf 4G"},{regex:"Redbox Mini 5\\(MTS\\)",device:"tv",model:"Redbox Mini 5"}]},MegaFon={regex:"MegaFon|MFLoginPh|MegLogPh|(MFLogin[34]T?|MS3B|SP-A5|SP-A20i)(?:[);/ ]|$)",device:"smartphone",models:[{regex:"MFLoginPh|MegLogPh",model:"Login+"},{regex:"MFLogin4",model:"Login 4 LTE"},{regex:"MFLogin3T|MegaFon Login 3",model:"Login 3",device:"tablet"},{regex:"MS3B|Megafon Optima",model:"Optima"},{regex:"SP-A20i",model:"Mint"},{regex:"(SP-A5)",model:"$1"}]},Inoi={regex:"INOI",device:"smartphone",models:[{regex:"INOI 2 Lite 2019",model:"2 Lite (2019)"},{regex:"INOI ([257]) (2019|202[01])(?:[);/ ]|$)",model:"$1 ($2)"},{regex:"INOI[_ ]([^);/]+)(?: Build|[;)])",model:"$1"}]},Vertex={regex:"(?:Luck|Lion_Dual|V709X|Tab [43]G (?:7-2|8-1|10-1)|Pro_P3[01]0_4G|Lion_DC|Baccara|Eagle[ _]4G|ImpressMAX)(?:[);/ ]|$)|Impress[ _]([^;/]+)(?:Build|\\))",device:"smartphone",models:[{regex:"(Lion_Dual|Lion_DC|Baccara|Eagle[ _]4G|Luck)(?:[);/ ]|$)",model:"$1"},{regex:"ImpressMAX(?:[);/ ]|$)",model:"Impress Max"},{regex:"Pro_P(3[01]0)_4G(?:[);/ ]|$)",model:"Pro P$1 4G"},{regex:"(Impress[ _]([^;/]+))(?:Build|\\))",model:"$1"},{regex:"(V709X)",device:"tablet",model:"$1"},{regex:"Tab ([43])G ([78]|10)-([21])",device:"tablet",model:'Tab $1G $2.$3"'}]},Unknown={regex:"WebTV/(\\d+\\.\\d+)",device:"tv",model:"Web TV"},Starway={regex:"Andromeda[ _]S(707|84[05]|850|8)(?:[);/ ]|$)",device:"tablet",model:"Andromeda S$1"},Savio={regex:" (TB-PO1|TB-B01|TB-G01)(?:[);/ ]|$)",device:"tv",model:"$1"},Simbans={regex:"TangoTab|Presto[ )]|Ultimax|Valumax|S72-B|SX2W",device:"tablet",models:[{regex:"TangoTab",model:"TangoTab"},{regex:"Ultimax",model:"Ultimax"},{regex:"Valumax",model:"Valumax"},{regex:"Presto",model:"Presto"},{regex:"S72-B",model:"S72-B"},{regex:"SX2W",model:"SX2W"}]},MYFON={regex:"MYPAD7s",device:"tablet",model:"My Pad 7s"},Xiaolajiao={regex:"(LA2-(?:L|S[N]?)|HLA Note3|20190416Q|20170608S|20180322D)(?:[);/ ]|$)",device:"smartphone",models:[{regex:"HLA Note3(?:[);/ ]|$)",model:"Red Pepper Note 3"},{regex:"(LA2-(?:L|S[N]?))(?:[);/ ]|$)",model:"$1"},{regex:"(20190416Q)(?:[);/ ]|$)",model:"$1"},{regex:"20170608S(?:[);/ ]|$)",model:"Red Pepper Plus"},{regex:"20180322D(?:[);/ ]|$)",model:"E Sports"}]},Ritmix={regex:"(RMD[-_](?:10(?:2[689]|30|5[089])|1121|75[017]|726|85[57]|870)|RMP-(?:450|50[56]|530|600))(?:[);/ ]|$)",device:"tablet",models:[{regex:"RMD[-_](10(?:2[689]|30|5[089])|1121|75[017]|726|85[57]|870)(?:[);/ ]|$)",model:"RMD-$1"},{regex:"RMP[-_](450|50[56]|530|600)(?:[);/ ]|$)",model:"RMP-$1",device:"smartphone"}]},NEXBOX={regex:"(MXQ|MXQ-Pro)-NEXBOX|NEXBOX-([^) ]+)",device:"tv",models:[{regex:"MXQ-Pro-NEXBOX",model:"MXQ Pro"},{regex:"MXQ-NEXBOX",model:"MXQ"},{regex:"NEXBOX-([^) ]+)",model:"$1"}]},True={regex:" TRUE BEYOND TAB 3G|SMART[ _](MAX 4.0 PLUS|4G[ _](?:GEN C [45].[05]|Champion|Speedy 5.0 Plus|Speedy[_ ]5inch|P1))",device:"smartphone",models:[{regex:"SMART MAX 4.0 PLUS",model:"Smart Max 4.0 Plus"},{regex:"SMART 4G Gen C ([45].[05])",model:'Smart 4G Gen C $1"'},{regex:"SMART 4G Speedy 5.0 Plus",model:"Smart 4G Speedy 5.0 Plus"},{regex:"SMART[ _]4G[_ ]Speedy[_ ]5inch",model:"Smart 4G Speedy 5"},{regex:"SMART[ _]4G[_ ]Champion",model:"Smart 4G Champion"},{regex:"SMART[ _]4G[_ ]P1 Prime",model:"Smart 4G P1 Prime"},{regex:"SMART[ _]4G[_ ]P1",model:"Smart 4G P1"},{regex:"TRUE BEYOND TAB 3G",model:"Beyond Tab 3G"}]},Yandex={regex:"(YNDX-?000SB)(?:[);/ ]|$)",device:"smartphone",model:"YNDX-000SB"},FORME={regex:"FORME[ _-]",device:"smartphone",models:[{regex:"FORME[ _-]F520(?:[);/ ]|$)",model:"Forever"},{regex:"FORME[ _-](A[35]7|R7S?|P6)(?:[);/ ]|$)",model:"$1"}]},Shuttle={regex:"(PNT-704[025])(?:[);/ ]|$)",device:"tablet",model:"$1"},BDF={regex:"(BDF[- ](?:819|P10|K107H|KT107|MT6753|X20)|K960N_MT(?:6580|6753)(?:_32_N)?)(?:[);/ ]|$)",device:"tablet",models:[{regex:"BDF[- ](819|P10|K107H|KT107|MT6753|X20)(?:[);/ ]|$)",model:"$1"},{regex:"K960N_MT(6580|6753)(_32_N)?(?:[);/ ]|$)",model:"BK960N MT$1"}]},Highscreen={regex:"HIGHSCREEN|(Easy[- ]Power(?:[- ]Pro)?|Pure[_ ](?:Power|F)|Power Ice(?: Max)?|Easy[_ ]([SFL]|XL)(?:_Pro)?|Razar_Pro|Power Rage(?: Evo)?|Zera-S-Power|Zera[ _][UFS]|Power[ _]?Five[ matrixstyle _]?(?:Pro|Evo|Max|Max(?:Lite|2))|PowerFour|BOOST II(?:se)?|Fest(?:XL)?(?:-Pro)?|Tasty|Boost3|Boost 3(?: Pro)? SE|Expanse|Hercules|Alpha Rage|VergeM)(?:[);/ ]|$)",device:"smartphone",models:[{regex:"(Power Ice(?:[ ](?:Max|Evo))?|Power Rage(?: Evo)?|Zera[ _][UFS])(?:[);/ ]|$)",model:"$1"},{regex:"PowerFivePro(?:[);/ ]|$)",model:"Power Five Pro"},{regex:"PowerFiveMaxLite(?:[);/ ]|$)",model:"Power Five Max Lite"},{regex:"PowerFiveMax2(?:[);/ ]|$)",model:"Power Five Max 2"},{regex:"Power Five Evo(?:[);/ ]|$)",model:"Power Five Evo"},{regex:"Power Five Max(?:[);/ ]|$)",model:"Power Five Max"},{regex:"FestXL-Pro(?:[);/ ]|$)",model:"Fest XL Pro"},{regex:"FestXL(?:[);/ ]|$)",model:"Fest XL"},{regex:"Fest-Pro(?:[);/ ]|$)",model:"Fest Pro"},{regex:"Fest(?:[);/ ]|$)",model:"Fest"},{regex:"PowerFour(?:[);/ ]|$)",model:"Power Four"},{regex:"Pure[_ ]Power(?:[);/ ]|$)",model:"Pure Power"},{regex:"Pure[ _]F(?:[);/ ]|$)",model:"Pure F"},{regex:"Razar_Pro(?:[);/ ]|$)",model:"Razar Pro"},{regex:"Easy[_ ]([SLF]|XL)[_ ]Pro(?:[);/ ]|$)",model:"Easy $1 Pro"},{regex:"Easy[_ ]([SFL]|XL)(?:[);/ ]|$)",model:"Easy $1"},{regex:"(?:HIGHSCREEN )?Easy[- ]Power[- ]Pro(?:[);/ ]|$)",model:"Easy Power Pro"},{regex:"(?:HIGHSCREEN )?Easy-Power(?:[);/ ]|$)",model:"Easy Power"},{regex:"BOOST II(?:[);/ ]|$)",model:"Boost 2"},{regex:"BOOST IIse(?:[);/ ]|$)",model:"Boost 2 SE"},{regex:"Boost 3 SE(?:[);/ ]|$)",model:"Boost 3 SE"},{regex:"Boost 3 Pro SE(?:[);/ ]|$)",model:"Boost 3 Pro SE"},{regex:"BOOST3(?:[);/ ]|$)",model:"Boost 3"},{regex:"Zera-S-Power(?:[);/ ]|$)",model:"Zera S Power"},{regex:"Tasty(?:[);/ ]|$)",model:"Tasty"},{regex:"VergeM(?:[);/ ]|$)",model:"Verge M"},{regex:"WinWin(?:[);/ ]|$)",model:"WinWin"},{regex:"Expanse(?:[);/ ]|$)",model:"Expanse"},{regex:"Hercules(?:[);/ ]|$)",model:"Hercules"},{regex:"Alpha Rage(?:[);/ ]|$)",model:"Alpha Rage"}]},CVTE={regex:"CVTE[_ ](MSD338_(:?1G|512M))(?:[);/ ]|$)",device:"tv",model:"$1"},Globex={regex:"(GU1011C|GU8012C|GU7013C|GU730C|GU-6012B)(?:[);/ ]|$)",device:"tablet",models:[{regex:"GU8012C(?:[);/ ]|$)",model:"X8"},{regex:"GU-6012B(?:[);/ ]|$)",model:"GU6012B"},{regex:"(GU1011C|GU7013C|GU730C)(?:[);/ ]|$)",model:"$1"}]},Atom={regex:"ATOM-(108AM|216RK|216AM)(?:[);/ ]|$)",device:"tv",model:"$1"},Qumo={regex:"QUMO[ _]?|(?:Quest[ _]?(?:408|410|45[56]|50[679])|Vega[ _]?78[23]|Sirius[ _]?(?:1001|890))(?:[);/ ]|$)",device:"tablet",models:[{regex:"(?:QUMO[ _]?)?Vega[ _]?(78[23]|8002)(?:[);/ ]|$)",model:"Vega $1"},{regex:"Yooda(?:[);/ ]|$)",model:"Yooda"},{regex:"Sirius[ _]?(1001|890)(?:[);/ ]|$)",model:"Sirius $1"},{regex:"(?:QUMO)?(Sirius 101-4G 8GB Black|Altair 701 8GB Black|Altair 71 4GB Black|Altair 700[24]|Altair 706)(?:[);/ ]|$)",model:"$1"},{regex:"(?:QUMO[ _])?Quest[ _]?(35[34]|40[268]|410|45[2568]|47[46]|50[679]|5[17]0|600)(?:[);/ ]|$)",device:"smartphone",model:"Quest $1"}]},Umax={regex:"VisionBook[ _]|[78]Qa_3G(?:[);/ ]|$)",device:"tablet",models:[{regex:"(VisionBook[ _](?:10Qi|7Q[i]?|8Q[ei]?|P70|8Qi_3G)(?:[ _](?:[34]G|Plus|LTE))?)(?:[);/ ]|$)",model:"$1"},{regex:"([78])Qa_3G(?:[);/ ]|$)",model:"VisionBook $1Qa 3G"},{regex:"VisionBook_10Q_LTE(?:[);/ ]|$)",model:"VisionBook 10Q LTE"},{regex:"VisionBook_P50Plus_LTE(?:[);/ ]|$)",device:"smartphone",model:"VisionBook P50 Plus LTE"},{regex:"(VisionBook[ _](?:P50 LTE|P55 X2 LTE|P55 LTE(?: Pro)?))(?:[);/ ]|$)",device:"smartphone",model:"$1"}]},Mann={regex:"(ZUG 3|ZUG 5S(?: Q)?)(?:[);/ ]|$)",device:"smartphone",model:"$1"},Unihertz={regex:"(Titan|Jelly-Pro|Atom_X?L)(?:[);/ ]|$)",device:"smartphone",models:[{regex:"(Jelly)-(Pro)(?:[);/ ]|$)",model:"$1 $2"},{regex:"(Titan|Atom_X?L)(?:[);/ ]|$)",model:"$1"}]},Chuwi={regex:"(?:CW-(Hi8-super|Hi12|V99i?|V17HD3G|VX8-3G|V88-QUAD|V9-DUAL|V88S|Vi[78]|[HV]i10 (?:pro|plus))|Hi10 (?:Pro|plus)|HiPad X|HiBox-hero|HiBook(?: pro)?|Hi[89] ?(?:Air|Pro)|Hi8SE|Vi10(?: ?Pro)?)(?:[);/ ]|$)",device:"tablet",models:[{regex:"(CW-Hi8-super)(?:[);/ ]|$)",model:"Hi8"},{regex:"(?:CW-)?(Vi10|Hi10) plus(?:[);/ ]|$)",model:"$1 Plus"},{regex:"CW-(V88)-QUAD(?:[);/ ]|$)",model:"$1 Quad"},{regex:"CW-(V9)-DUAL(?:[);/ ]|$)",model:"$1 Dual"},{regex:"CW-(V17HD|VX8)-?(3G)(?:[);/ ]|$)",model:"$1 $2"},{regex:"(?:CW-)?(Hi10) pro(?:[);/ ]|$)",model:"$1 Pro"},{regex:"HiBook pro(?:[);/ ]|$)",model:"HiBook Pro"},{regex:"HiBook(?:[);/ ]|$)",model:"HiBook"},{regex:"HiPad X(?:[);/ ]|$)",model:"HiPad X"},{regex:"Hi([89]) ?Air(?:[);/ ]|$)",model:"Hi$1 Air"},{regex:"Hi8SE(?:[);/ ]|$)",model:"Hi8 SE"},{regex:"Hi([89]) ?pro(?:[);/ ]|$)",model:"Hi$1 Pro"},{regex:"Vi10 Plus(?:[);/ ]|$)",model:"Vi10 Plus"},{regex:"Vi10 ?Pro(?:[);/ ]|$)",model:"Vi10 Pro"},{regex:"Vi10(?:[);/ ]|$)",model:"Vi10"},{regex:"HiBox-hero(?:[);/ ]|$)",model:"HiBox Hero",device:"desktop"},{regex:"CW-(Vi[78]|Hi12|V99i?|V88S)(?:[);/ ]|$)",model:"$1"}]},Bezkam={regex:"BEZKAM (BK-RAM2)(?:[);/ ]|$)",device:"smartphone",model:"$1"},KATV1={regex:"(KATV-01) PRO(?:[);/ ]|$)",device:"tv",model:"$1 Pro"},Ghong={regex:"GHONG(V10)(?:[);/ ]|$)",device:"smartphone",model:"$1"},Xoro={regex:"(?:TelePAD(?:795|731|1032|10A3|7A3)|Era 2X|HMT(?:390Q?|400)|HST 260)(?:[);/ ]|$)",device:"tablet",models:[{regex:"TelePAD(7|10)A3 4G(?:[);/ ]|$)",model:"TelePad $1 A3 4G"},{regex:"TelePAD(795|731|1032)(?:[);/ ]|$)",model:"TelePad $1"},{regex:"HMT(390Q?|400)(?:[);/ ]|$)",model:"HMT $1",device:"portable media player"},{regex:"HST 260(?:[);/ ]|$)",model:"HST 260",device:"tv"},{regex:"(Era 2X)(?:[);/ ]|$)",model:"$1",device:"smartphone"}]},Vinga={regex:"VMP-(015-162|021-82|041-162|011-81|025-324|045-664)(?:[);/ ]|$)",device:"tv",models:[{regex:"VMP-021-82",model:"021"},{regex:"VMP-025-324",model:"025"},{regex:"VMP-015-162",model:"015"},{regex:"VMP-041-162",model:"041"},{regex:"VMP-045-664",model:"045"},{regex:"VMP-011-81",model:"011"}]},Viumee={regex:"SMART[_ ](EV[56])(?:[);/ ]|$)",device:"smartphone",model:"Smart $1"},Nuvo={regex:"Nuvo[_ ](NS35|Blue ND40|Green[_ ]ND[_ ]45)(?:[);/ ]|$)",device:"smartphone",models:[{regex:"Nuvo[_ ](NS35)(?:[);/ ]|$)",model:"$1"},{regex:"Blue (ND40)(?:[);/ ]|$)",model:"$1"},{regex:"Green[_ ]ND[_ ]45(?:[);/ ]|$)",model:"ND45"}]},Sunvell={regex:"(?:T95ZPLUS|T95[KU]PRO)(?:[);/ ]|$)",device:"tv",models:[{regex:"T95ZPLUS",model:"T95Z Plus"},{regex:"(T95[KU])PRO",model:"$1 Pro"}]},Ugoos={regex:"UGOOS-AM6(?:[);/ ]|$)",device:"tv",model:"AM6"},Yxtel={regex:"YXTEL_([HU]1|U3)(?:[);/ ]|$)",device:"smartphone",model:"$1"},Proline={regex:"(H10882M-TN)(?:[);/ ]|$)",device:"tablet",model:"$1"},Yota={regex:"(YD20[16]|YOTA 3[+])(?:[);/ ]|$)",device:"smartphone",models:[{regex:"YD20[16](?:[);/ ]|$)",model:"Phone 2"},{regex:"YOTA 3[+](?:[);/ ]|$)",model:"Phone 3 Plus"}]},Mystery={regex:"MYSTERY|(MID-(?:123G|72[12]|7[01348]3G|753G|8[23]3G))(?:[);/ ]|$)",device:"tablet",models:[{regex:"MID-(123G|72[12]|7[01348]3G|753G|8[23]3G)(?:[);/ ]|$)",model:"MID-$1"},{regex:"MYSTERY_TV_(D3155CH31)",device:"tv",model:"$1"}]},Ritzviva={regex:"(RITZVIVA[_ ]S500C)(?:[);/ ]|$)",device:"smartphone",model:"S500C"},DeWalt={regex:"DeWalt (MD501)(?:[);/ ]|$)",device:"smartphone",model:"$1"},Runbo={regex:"Runbo|F1-TT(?:[);/ ]|$)",device:"smartphone",models:[{regex:"Runbo[ _-]?(X5-W|F1 Plus|F1-TT|F1-EN|F1|TT|Q5-S|X5-King|X6|Q5)(?:[);/ ]|$)",model:"$1"},{regex:"F1-TT",model:"F1-TT"}]},NewsMy={regex:"(CarPad-(?:II|III)-P)(?:[);/ ]|$)",device:"car browser",model:"$1"},Newsday={regex:"Newsday[_ ](E1|A[12])(?:[);/ ]|$)",device:"smartphone",model:"$1"},Daewoo={regex:"Daewoo|(DTA-07IDRF)(?:[);/ ]|$)",device:"tablet",models:[{regex:"(DTA-07IDRF)(?:[);/ ]|$)",model:"Archive 7P"},{regex:"Daewoo (Android TV 638)(?:[);/ ]|$)",model:"$1",device:"tv"}]},Vesta={regex:"VESTA32LD86(?:[);/ ]|$)",device:"tv",model:"SmartT V2.0 32LD86S"},Spectrum={regex:"(CARBONO_5|CUARZO_6|DIAMANTE_5|VULCANO_55)(?:[);/ ]|$)",device:"smartphone",models:[{regex:"VULCANO_55(?:[);/ ]|$)",model:'Vulcano 5.5"'},{regex:"CARBONO_5(?:[);/ ]|$)",model:'Carbono 5.0"'},{regex:"CUARZO_6(?:[);/ ]|$)",model:'Cuarzo 6.0"'},{regex:"DIAMANTE_5(?:[);/ ]|$)",model:'Diamante 5.0"'}]},Kivi={regex:"(?:24H600G[RU]|24FR50WU|24HK30B|32HR55GU|4[39]UP50GU|40UR50G[RU]|40U600G[RU]|55U600G[RU]|65UP50GU|55U[PC]50G[RU]|50U600G[RU]|50UX10S|55UR50G[RU]|40FK30G|40FR50BR|43UK35G|50FK30G|50UK35G|32HR50GR|55UC30G|32HK30G|40FK30G|32HR50GU|43UK30G|32FR50(?:WR|BU)|32FK3[02]G)(?:_-Ver0[0-9])?(?:[);/ ]|$)",device:"tv",models:[{regex:"(24H600G[RU]|24FR50WU|24HK30B|32HR55GU|4[39]UP50GU|40UR50G[RU]|40U600G[RU]|55U600G[RU]|65UP50GU|55U[PC]50G[RU]|50UX10S|50U600G[RU]|55UR50G[RU]|40FK30G|40FR50BR|43UK35G|50FK30G|50UK35G|32HR50GR|32FR50(?:WR|BU)|32FK3[02]G)(?:[);/ ]|$)",model:"$1"},{regex:"(55UC30G|40FK30G|43UK30G|32HR50G[RU]|32HK30G|32FK32G)_-Ver0([0-9])(?:[);/ ]|$)",model:"$1 v$2"}]},Divisat={regex:"(Divisat)(?:[);/ ]|$)",device:"tv",models:[{regex:"(J-Link)(?:[);/ ]|$)",model:"$1"}]},Kanji={regex:"KJ-(OB03|YUBI)(?:[);/ ]|$)",device:"tablet",models:[{regex:"KJ-OB03(?:[);/ ]|$)",model:"Cata 7"},{regex:"KJ-YUBI(?:[);/ ]|$)",model:"Yubi 3G"}]},Kaiomy={regex:"KaiCloud[ ]?(7[48]4|942)(?:[);/ ]|$)",device:"tablet",model:"KaiCloud $1"},National={regex:"(NX-32THS100)(?:[);/ ]|$)",device:"tv",model:"$1"},Vsun={regex:"(?:VSUN (?:ILLUSION|RACE|V9)|MARS TOUCH|MARS NOTE|MARS NOCAM|SATURN SELFIE)(?:[);/ ]|$)",device:"smartphone",models:[{regex:"ILLUSION(?:[);/ ]|$)",model:"Illusion"},{regex:"MARS TOUCH(?:[);/ ]|$)",model:"Mars Touch"},{regex:"MARS NOTE(?:[);/ ]|$)",model:"Mars Note"},{regex:"MARS NOCAM(?:[);/ ]|$)",model:"Mars Nocam"},{regex:"SATURN SELFIE(?:[);/ ]|$)",model:"Saturn Selfie"},{regex:"RACE(?:[);/ ]|$)",model:"Race"},{regex:"(V9)(?:[);/ ]|$)",model:"$1"}]},RugGear={regex:"(RugGear|RG(?:310|500|65[05]|702|7[13]0|850))(?:[);/ ]|$)",device:"smartphone",models:[{regex:"(RG[0-9]+)(?:[);/ ]|$)",model:"$1"}]},Aligator={regex:"ALIGATOR[_ ]",device:"smartphone",models:[{regex:"ALIGATOR[ _](S4080|S50(?:6[56]|[678]0)|S5540|RX510|S6500|RX710|RX800|S5520)(?:[);/ ]|$)",model:"$1"}]},Maxcom={regex:"(MS(?:45[036]|505|514)|MS457(?:PLUS)?)(?:[);/ ]|$)",device:"smartphone",models:[{regex:"(MS457)PLUS(?:[);/ ]|$)",model:"$1 Plus"},{regex:"MS(45[0367]|505|514)(?:[);/ ]|$)",model:"MS$1"}]},Luna={regex:"(?:LUNA[ _](?:V55|G[56]0)|TG-L800S)(?:[);/ ]|$)",device:"smartphone",models:[{regex:"LUNA[ _](V55|G[56]0)(?:[);/ ]|$)",model:"$1"},{regex:"(TG-L800S)(?:[);/ ]|$)",model:"$1"}]},Protruly={regex:"PROTRULY[ _](D[78]|V10S)(?:[);/ ]|$)",device:"smartphone",model:"$1"},JFone={regex:"JFone[ _](JS501)(?:[);/ ]|$)",device:"smartphone",model:"$1"},Uhans={regex:"(A101S)(?:[);/ ]|$)",device:"smartphone",model:"$1"},Soyes={regex:"SOYES[ _]([67]S|XS)(?:[);/ ]|$)",device:"smartphone",model:"$1"},Zidoo={regex:"ZIDOO[ _](H6 Pro|X6 Pro|X9S|Z10|X[158]|X20 Pro|Z9S)(?:[);/ ]|$)",device:"tv",model:"$1"},Zfiner={regex:"ZFINERY900(?:[);/ ]|$)",device:"tablet",model:"Y900"},iGet={regex:"SMART[_ ](G10[12]|S7[02]|G71|G81[H]?)(?:[);/ ]|$)",device:"tablet",model:"Smart $1"},iVA={regex:"(LAMCY (?:L3[05]0|C100|L400)|IVA S6)(?:[);/ ]|$)",device:"smartphone",models:[{regex:"LAMCY (L3[05]0|C100|L400)(?:[);/ ]|$)",model:"Lamcy $1"},{regex:"IVA S6(?:[);/ ]|$)",model:"S6"}]},Phicomm={regex:"(PHICOMM)(?:[);/ ]|$)",device:"smartphone",models:[{regex:"C630 \\(CLUE L\\)(?:[);/ ]|$)",model:"Clue L"},{regex:"E653\\(ENERGY L\\)(?:[);/ ]|$)",model:"Energy L"},{regex:"PHICOMM ENERGY 3\\+(?:[);/ ]|$)",model:"Energy 3+"},{regex:"CLUE (2S|M)(?:[);/ ]|$)",model:"Clue $1"}]},Huadoo={regex:"Huadoo[ _](HG0[46]|HG11|V[34])(?:[);/ ]|$)",device:"smartphone",model:"$1"},Gome={regex:"(?:GOME[_ ](?:201[678].+|C7_Note(?:_Plus)?|U9|S[17])|Fenmmy_Note)(?:[);/ ]|$)",device:"smartphone",models:[{regex:"GOME[_ ](?:2018X38A)(?:[);/ ]|$)",model:"C72"},{regex:"GOME[_ ](?:2018X07A)(?:[);/ ]|$)",model:"C7"},{regex:"GOME[_ ](?:2017X05A)(?:[);/ ]|$)",model:"C71"},{regex:"GOME[_ ](?:2016G68A)(?:[);/ ]|$)",model:"K1"},{regex:"GOME[_ ](?:2016M25A)(?:[);/ ]|$)",model:"U1"},{regex:"GOME[_ ](?:2017M27A)(?:[);/ ]|$)",model:"U7"},{regex:"GOME[_ ](C7_Note(?:_Plus)?|U9|S[17])(?:[);/ ]|$)",model:"$1"},{regex:"(?:GOME[_ ])?(Fenmmy_Note)(?:[);/ ]|$)",device:"phablet",model:"$1"}]},Voyo={regex:"(?:VOYO[_ ](?:A15)|i8-Max|Q101-4G)(?:[);/ ]|$)",device:"tablet",models:[{regex:"i8-Max(?:[);/ ]|$)",model:"i8 Max"},{regex:"(Q101)-4G(?:[);/ ]|$)",model:"$1 4G"},{regex:"VOYO[_ ](A15)(?:[);/ ]|$)",model:"$1"}]},Ryte={regex:"RYTE (U55 LTE)(?:[);/ ]|$)",device:"smartphone",model:"$1"},Vontar={regex:"(HK1 (?:Max|MINI|PLUS|PRO)|VONTAR[ -](?:Z[58]|V1|KIII|MX-4K|X3))(?:[);/ ]|$)",device:"tv",models:[{regex:"VONTAR[ -](Z[58]|V1|KIII|MX-4K|X3)(?:[);/ ]|$)",model:"$1"},{regex:"HK1 Max(?:[);/ ]|$)",model:"HK1 Max"},{regex:"HK1 MINI(?:[);/ ]|$)",model:"HK1 Mini"},{regex:"HK1 PLUS(?:[);/ ]|$)",model:"HK1 Plus"},{regex:"HK1 PRO(?:[);/ ]|$)",model:"HK1 Pro"}]},Vorke={regex:"VORKE (Z[157]|Z6(?: Plus)?)(?:[);/ ]|$)",device:"tv",model:"$1"},Wigor={regex:"Wigor (V4)(?:[);/ ]|$)",device:"smartphone",model:"$1"},NEXON={regex:"NEXON (X[1589])(?:[);/ ]|$)",device:"tv",model:"$1"},ONN={regex:"(ONA19TB00[327]|10000520[6-9]|O8HD)(?:[);/ ]|$)",device:"tablet",model:"$1"},EXO={regex:"(Wave_i101G|Wave i101[Hb])(?:[);/ ]|$)",device:"tablet",model:"$1"},Datawind={regex:"DW-[A-Z0-9]{5}(?:[);/ ]|$)",device:"smartphone",models:[{regex:"(DW-PS3G5)(?:[);/ ]|$)",model:"Pocket Surfer 3G5"},{regex:"DW-UBT7W",device:"tablet",model:"Ubislate 7W"}]},Droxio={regex:"DROXIO (C40|B45)(?:[);/ ]|$)",device:"smartphone",model:"$1"},Goophone={regex:"Goophone[ _]|(?:M(G492|L7[JK]2)CH|MN(4A2|8J2)ZP|MGA92ZP|MKU82ZP|MNGW2CH|MNH02CH|MNRM2CH)[/]A(?:[);/ ]|$)",device:"smartphone",models:[{regex:"(?:MG492CH|MGA92ZP)[/]A(?:[);/ ]|$)",model:"I6 Plus"},{regex:"ML7[JK]2CH[/]A(?:[);/ ]|$)",model:"I6"},{regex:"MKU82ZP[/]A(?:[);/ ]|$)",model:"I6S"},{regex:"MNGW2CH[/]A(?:[);/ ]|$)",model:"I6S Plus"},{regex:"(?:MN4A2ZP|MNH02CH)[/]A(?:[);/ ]|$)",model:"I7"},{regex:"(?:MN8J2ZP|MNRM2CH)[/]A(?:[);/ ]|$)",model:"I7 Plus"},{regex:"S4 MEGA(?:[);/ ]|$)",model:"S4 Mega"},{regex:"Goophone i([69])(?:[);/ ]|$)",model:"I$1"}]},PocketBook={regex:"PocketBook[ _/]",device:"tablet",models:[{regex:'PocketBook SURFpad 3 \\(([\\d]+).([\\d]+)["]?\\)(?:[);/ ]|$)',model:'Surfpad 3 $1.$2"'},{regex:"PocketBook/(62[67]|63[12]|740|840)(?:[);/ ]|$)",model:"$1"}]},Bitmore={regex:"(?:Mobitab10c-3G|Tab1011Q_II)(?:[);/ ]|$)",device:"tablet",models:[{regex:"(Mobitab)(10)c-3G(?:[);/ ]|$)",model:"$1 $2C 3G"},{regex:"Tab1011Q_II(?:[);/ ]|$)",model:"Tab1011Q II"}]},Kuliao={regex:"KULIAO (K10)(?:[);/ ]|$)",device:"smartphone",model:"$1"},Sugar={regex:"SUGAR[ _]",device:"smartphone",models:[{regex:"SUGAR Y([78]) MAX(?:[);/ ]|$)",model:"Y$1 Max"},{regex:"SUGAR F7 Mini(?:[);/ ]|$)",model:"F7 Mini"},{regex:"SUGAR (C[12]1|C1[23]|S11|C11s|[SF]20s?|[YF]11|[YFS]9|C[679]|[FY]7|Y12s|Y1[256]|P1)(?:[);/ ]|$)",model:"$1"}]},Subor={regex:"SUBOR[ _]",device:"smartphone",models:[{regex:"SUBOR[ _](S5|2019)(?:[);/ ]|$)",model:"$1"},{regex:"SUBOR[_ ]K10PLUS(?:[);/ ]|$)",model:"K10 Plus"}]},Xshitou={regex:"Xshitou[_ ](P7)(?:[);/ ]|$)",device:"smartphone",model:"$1"},JKL={regex:"JKL[_ ](A28)(?:[);/ ]|$)",device:"smartphone",model:"$1"},Gree={regex:"(G0215D|G0245D|G0335D)(?:[);/ ]|$)",device:"smartphone",model:"$1"},Vodacom={regex:"(?:Vodacom)[ _](Power Tab 10)(?:[);/ ]|$)",device:"tablet",model:"$1"},VKworld={regex:"(?:(?:VK700)-MAX|VK700 Pro|T5SE|VK700X|vk6050|vk6735|vk700)(?:[);/ ]|$)",device:"smartphone",models:[{regex:"(VK700)-MAX(?:[);/ ]|$)",model:"$1 Max"},{regex:"(VK700) Pro(?:[);/ ]|$)",model:"$1 Pro"},{regex:"T5SE(?:[);/ ]|$)",model:"T5 SE"},{regex:"VK(700X|6050|6735|700)(?:[);/ ]|$)",model:"VK$1"}]},Mito={regex:"MITO[- _](A(?:1[0678]|19_[12]GB|21|3[59]|55|180|2[36]0|313|322|33|3[136]0|[35]50|6[89]|7[235]|82|[356]0|810|950)|T(?:8|10|35|3[03]0|510|888)|311)(?:[);/ ]|$)",device:"smartphone",models:[{regex:"MITO[- _](A(?:1[0678]|19_[12]GB|21|3[59]|55|180|2[36]0|33|322|313|3[136]0|[35]50|6[89]|7[235]|82|[356]0|810|950)|311)(?:[);/ ]|$)",model:"$1"},{regex:"MITO[ _](T(?:8|10|35|3[03]0|510|888))(?:[);/ ]|$)",device:"tablet",model:"$1"}]},TWM={regex:"Amazing[ _](X[35]s|X[123567]|A5S|A3[025]|A[468]|A4S|A5[057]|P6)(?:[);/ ]|$)",device:"smartphone",models:[{regex:"Amazing[ _](X[35])s(?:[);/ ]|$)",model:"Amazing $1S"},{regex:"Amazing[ _](A5S|X[123567]|A[468]|A4S|A5[057]|A3[025])(?:[);/ ]|$)",model:"Amazing $1"},{regex:"Amazing[ _](P6)(?:[);/ ]|$)",device:"tablet",model:"Amazing $1"}]},TWZ={regex:"TWZ[-_ ](?:TabPlay|Y6[08]|Y52|A49|A[59]5|A567|AA8|QQ[12])|TWZQQ1",device:"smartphone",models:[{regex:"TWZ[_ ]TabPlay[_ ](12[56])",device:"tablet",model:"TabPlay $1"},{regex:"TWZ[-_ ]?(Y6[08]|Y52|A49|A[59]5|A567|AA8|QQ[12])",model:"$1"}]},Onix={regex:"(?:ONIX S405|AT101-1116)(?:[);/ ]|$)",device:"tablet",models:[{regex:"(AT101-1116)(?:[);/ ]|$)",model:"$1"},{regex:"(S405)(?:[);/ ]|$)",device:"smartphone",model:"$1"}]},Oale={regex:"Apex([13])(?:[);/ ]|$)",device:"smartphone",model:"Apex $1"},Mobo={regex:"(?:(?:MOBO[_ ]MB7005|MT7-421HD)|(?:MT7-442D|MT7-411D))(?:[);/ ]|$)",device:"tablet",models:[{regex:"(?:MOBO[_ ])?(MB7005|MT7-421HD|MT7-442D|MT7-411D)(?:[);/ ]|$)",model:"$1"}]},Macoox={regex:"(MC-X7MINI)(?:[);/ ]|$)",device:"smartphone",model:"MC-X7 Mini"},Prixton={regex:"PRIXTON |(T7012Q)(?:[);/ ]|$)",device:"tablet",models:[{regex:"PRIXTON (C18)",device:"smartphone",model:"$1"},{regex:"(T7012Q)(?:[);/ ]|$)",model:"$1"}]},Magnus={regex:"Magnus[ _](?:bravoZ[23]0|Infinity_?(?:G8|G11))(?:[);/ ]|$)",device:"smartphone",models:[{regex:"bravo(Z[23]0)",model:"Bravo $1"},{regex:"(?:Magnus[ _])?Infinity_?(G8|G11)",model:"Infinity $1"}]},Newland={regex:"(?:NLS-MT90)(?:[);/ ]|$)",device:"smartphone",model:"MT90 Orca"},Orbic={regex:"(?:RC555L|RC501L)(?:[);/ ]|$)",device:"smartphone",models:[{regex:"RC555L(?:[);/ ]|$)",model:"Wonder"},{regex:"RC501L(?:[);/ ]|$)",model:"Slim"}]},RED={regex:"(?:H1A1000)(?:[);/ ]|$)",device:"smartphone",model:"Hydrogen One"},Contixo={regex:"Contixo|(?:CX-1045 3G|KT995 3G|CX1045)(?:[);/ ]|$)",device:"tablet",models:[{regex:"CX-?1045(?: 3G)?(?:[);/ ]|$)",model:"CX-1045 3G"},{regex:"CONTIXO GX 1035(?:[);/ ]|$)",model:'GX-1035 4G 10.1"'},{regex:"Contixo GT1160 4G(?:[);/ ]|$)",model:'GT1160 4G 10.1"'},{regex:"B105(?:[);/ ]|$)",model:'B105 3G 10.1"'},{regex:"B108(?:[);/ ]|$)",model:'B108 4G 10.1"'},{regex:"KT107(?: 3G)?(?:[);/ ]|$)",model:'KT107 3G 10.1"'},{regex:"K109(?:[);/ ]|$)",model:'KT109 4G 10.1"'},{regex:"KT715 3G(?:[);/ ]|$)",model:'KT715 3G 7.0"'},{regex:"KT995(?:[);/ ]|$)",model:'KT995 3G 10.1"'},{regex:"KT1100GT(?:[);/ ]|$)",model:"KT1100GT"}]},How={regex:"(?:HT-705XS|705-G Go|1001-G Go)(?:[);/ ]|$)",device:"tablet",models:[{regex:"(HT-705XS)(?:[);/ ]|$)",model:"$1"},{regex:"(1001-G Go)(?:[);/ ]|$)",model:"HT-1001G Go Kids"},{regex:"(705-G Go)(?:[);/ ]|$)",model:"HT-$1"}]},Multilaser={regex:"(?:Multilaser[ _](?:[FEGH])(?:[_ ](?:Pro|Max|Lite))?|MS50[LGX]|M7[_-]3G[_-]PLUS|MS5\\.V2|MS45S_A6|ML([02]1|12)-M7s[- ]?Quad-?Core| ML01-M7-SD|MS45S|MS50S|MS60[XZ]|M7SQC_Plus|MS80X|MS40[GS]|MS55M|MS70|M7-3G QUAD CORE|M7sLite|MS50L_4G|MS60F(?:_PLUS)?)(?:[);/ ]|$)",device:"smartphone",models:[{regex:"Multilaser[ _]G[_ ]Pro(?:[);/ ]|$)",model:"G Pro"},{regex:"Multilaser[ _]F[_ ]Pro(?:[);/ ]|$)",model:"F Pro"},{regex:"Multilaser[ _]G[_ ]Max(?:[);/ ]|$)",model:"G Max"},{regex:"Multilaser[ _]G(?:[);/ ]|$)",model:"G"},{regex:"Multilaser[ _]E[_ ]Lite(?:[);/ ]|$)",model:"E Lite"},{regex:"Multilaser[ _]([FEH])(?:[);/ ]|$)",model:"$1"},{regex:"MS60F_PLUS(?:[);/ ]|$)",model:"MS60F Plus"},{regex:"(MS50[LGX]|MS45S_A6|MS40[GS]|MS55M|MS60F|MS70|MS60[XZ]|MS45S|MS80X|MS50L_4G|MS50S|MS5\\.V2)(?:[);/ ]|$)",model:"$1"},{regex:"M7[_-]3G[_-]PLUS(?:[);/ ]|$)",device:"tablet",model:"M7 3G Plus"},{regex:"M7SQC_PLUS(?:[);/ ]|$)",device:"tablet",model:"M7SQC Plus"},{regex:"M7-3G QUAD CORE(?:[);/ ]|$)",device:"tablet",model:"M7 3G Quad Core"},{regex:"ML([02]1|12)-M7s[- ]?Quad-?Core(?:[);/ ]|$)",device:"tablet",model:"ML$1-M7s Quad Core"},{regex:"M7sLite(?:[);/ ]|$)",device:"tablet",model:"M7s Lite"},{regex:"ML01-M7-SD(?:[);/ ]|$)",device:"tablet",model:"ML01-M7 SD"}]},Maxtron={regex:"Maxtron[ _-](V[327]|S[89]|T1)(?:[);/ ]|$)",device:"smartphone",models:[{regex:"Maxtron[ _-](V[327]|S[89])(?:[);/ ]|$)",model:"$1"},{regex:"Maxtron[ _-](T1)(?:[);/ ]|$)",device:"tablet",model:"$1"}]},Philco={regex:"PHILCO |(PCS01|PH350B|PTB7R|PTB7PAP_PTB7PAB_PTB7PAR)(?:[);/ ]|$)",device:"smartphone",models:[{regex:"(PCS01|PH350B)(?:[);/ ]|$)",model:"$1"},{regex:"(PTB7R)(?:[);/ ]|$)",device:"tablet",model:"$1"},{regex:"PHILCO Android TV(?:[);/ ]|$)",device:"tv",model:""},{regex:"PTB7PAP_PTB7PAB_PTB7PAR(?:[);/ ]|$)",device:"tablet",model:"PTB7PA"}]},Newman={regex:"Newman[ _](P308|K1)(?:[);/ ]|$)",device:"smartphone",model:"$1"},Swipe={regex:"(Elite Sense|Elite_VR)(?:[);/ ]|$)",device:"smartphone",model:"$1"},Owwo={regex:"(?:OWWO[ _]?(?:[1457]S|Q[78])|CARNIVAL B5)(?:[);/ ]|$)",device:"smartphone",models:[{regex:"OWWO[ _]?([1457]S|Q[78])(?:[);/ ]|$)",model:"$1"},{regex:"CARNIVAL B5(?:[);/ ]|$)",model:"Carnival B5"}]},Ravoz={regex:"RAVOZ[ _](Z5 (?:Lite|Pro)|Z[3-7]|R[478])(?:[);/ ]|$)",device:"smartphone",model:"$1"},Tone={regex:"TONE (e19|m15|e20)(?:[);/ ]|$)",device:"smartphone",model:"$1"},BIHEE={regex:"(ZBH-)?BIHEE",device:"smartphone",models:[{regex:"(A1[12]|A[78]\\+|A[56])(?:[);/ ]|$)",model:"$1"}]},Enot={regex:"Enot[ _-](E102|J101)(?:[);/ ]|$)",device:"tablet",model:"$1"},Kooper={regex:"Kooper-mobile-W502(?:[);/ ]|$)",device:"smartphone",model:"Mobile W502"},Lesia={regex:"ANOVA A5(?:[);/ ]|$)",device:"smartphone",model:"Anova A5"},Anry={regex:"ANRY-(RS10|[SX]20)(?:[);/ ]|$)",device:"tablet",model:"$1"},Tinai={regex:"Tinai (K[12])(?:[);/ ]|$)",device:"smartphone",model:"$1"},Winds={regex:"NOTE GRACE V(?:[);/ ]|$)",device:"smartphone",model:"Note Grace V"},Asano={regex:"32LF7130S(?:[);/ ]|$)",device:"tv",model:'32LF7130S 32.0"'},Phonemax={regex:"PHONEMAX[_ ](Saturn(?:[_ ]X)?|Mars|Venus X)(?:[);/ ]|$)",device:"smartphone",models:[{regex:"PHONEMAX[_ ]Saturn[_ ]X(?:[);/ ]|$)",model:"Saturn X"},{regex:"PHONEMAX[_ ]Saturn(?:[);/ ]|$)",model:"Saturn"},{regex:"PHONEMAX[_ ]Mars(?:[);/ ]|$)",model:"Mars"},{regex:"PHONEMAX[_ ]Venus X(?:[);/ ]|$)",model:"Venus X"}]},Vipro={regex:"VIPRO(?:[);/ ]|$)",device:"smartphone",models:[{regex:"VIPRO PRO2X(?:[);/ ]|$)",model:"Pro 2X"},{regex:"VIPRO PRO[ _-]?([0-9])(?:[);/ ]|$)",model:"Pro $1"}]},OzoneHD={regex:"Ozone HD|OzoneHD[ _](T2 WiFi|4K(?: TV)?|Fun)(?:[);/ ]|$)",device:"tv",model:"$1"},Kzen={regex:"(?:Ureki_U1|Victor V1|DART KZ07)(?:[);/ ]|$)",device:"smartphone",models:[{regex:"Ureki_U1",model:"Ureki U1"},{regex:"Victor V1",model:"Victor V1"},{regex:"DART KZ07",device:"tablet",model:"Dart KZ07"}]},Melrose={regex:"MELROSE_(?:S9|2019)(?:[);/ ]|$)",device:"smartphone",models:[{regex:"MELROSE_S9(?:[);/ ]|$)",model:"S9"},{regex:"MELROSE_2019(?:[);/ ]|$)",model:'2019 Ultra Slim 3.4"'}]},Crony={regex:"CRONY-7021(?:[);/ ]|$)",device:"tablet",model:"7021"},Takara={regex:"(MID211H)(?:[);/ ]|$)",device:"tablet",model:"$1"},Tronsmart={regex:"(Orion R68G|Draco AW80|Draco H3|Vega S95_(?:Meta|Pro|Telos))(?:[);/ ]|$)",device:"tv",model:"$1"},Amigoo={regex:"AMIGOO (R300|R9 Max|M1 Max|X15)(?:[);/ ]|$)",device:"smartphone",model:"$1"},Lumigon={regex:"Lumigon[ _](T3)(?:[);/ ]|$)",device:"smartphone",model:"$1"},Neomi={regex:"NEO[ ]?(90[689])(?:[);/ ]|$)",device:"smartphone",model:"Neo $1"},Eltex={regex:"(?:NV5(?:01|10)WAC|NV501|NV510WB)(?:[);/ ]|$)",device:"tv",models:[{regex:"NV5(01|10)WAC(?:[);/ ]|$)",model:"NV-5$1-Wac"},{regex:"NV501(?:[);/ ]|$)",model:"NV-501"},{regex:"NV510WB(?:[);/ ]|$)",model:"NV-510-WB"}]},Senkatel={regex:"Senkatel[ _](T1009|T8002|T701[12]|T9702)(?:[);/ ]|$)",device:"tablet",model:"$1"},Bobarry={regex:"(?:K10[ ]?SE)(?:[);/ ]|$)",device:"tablet",model:"K10 SE"},Wortmann={regex:"TERRA[ _]PAD[ _](100[45])(?:[);/ ]|$)",device:"tablet",model:"Terra Pad $1"},Billion={regex:"Capture\\+(?:[);/ ]|$)",device:"smartphone",model:"Capture Plus"},Tele2={regex:"Tele2[ _]",device:"smartphone",models:[{regex:"Tele2[ _](Mi[dn]i)[ _]1.1(?:[);/ ]|$)",model:"$1 1.1"},{regex:"Tele2[ _]Midi[ _]2.0(?:[);/ ]|$)",model:"Midi 2.0"},{regex:"Tele2[ _]((?:Maxi|Midi)(?:[_ ](?:Plus|LTE))?)(?:[);/ ]|$)",model:"$1"},{regex:"Tele2[ _](Mi[dn]i)(?:[);/ ]|$)",model:"$1"}]},Alfawise={regex:"(?:Alfawise (?:A9)|(?:A95X_R1))(?:[);/ ]|$)",device:"tv",models:[{regex:"(A95X_R1)(?:[);/ ]|$)",model:"$1"},{regex:"Alfawise (A9)",model:"$1"}]},Klipad={regex:"KLIPAD_|(?:KL-V905|KL4889|KL9878|7589AN)(?:[);/ ]|$)",device:"smartphone",models:[{regex:"(?:KLIPAD_)?(V355B?|KL600|KL-V905)(?:[);/ ]|$)",model:"$1"},{regex:"(KL4889|7589AN|KL9878)(?:[);/ ]|$)",device:"tablet",model:"$1"}]},SQOOL={regex:"SQOOL-V(41?)(?:[);/ ]|$)",device:"tablet",model:"V$1"},TurboKids={regex:"Turbokids[-_ ]?(TMNT|3G|S4)(?:[);/ ]|$)",device:"tablet",model:"$1"},Jinga={regex:"Jinga[-_ ]|(?:(?:Fresh|Optim)4G|Pass(?:Plus|3G)|PicassoNote|Hotz[_ ]M1|WinPRO|Touch4G|Start3G|IGO[ _]L[41]|Basco (?:L3|L[45]00|XS1|S2))(?:[);/ ]|$)",device:"smartphone",models:[{regex:"Optim4G(?:[);/ ]|$)",model:"Optim 4G"},{regex:"Fresh4G(?:[);/ ]|$)",model:"Fresh 4G"},{regex:"Hotz[_ ]M1(?:[);/ ]|$)",model:"Hotz M1"},{regex:"PassPlus(?:[);/ ]|$)",model:"Pass Plus"},{regex:"Pass3G(?:[);/ ]|$)",model:"Pass 3G"},{regex:"WinPRO(?:[);/ ]|$)",model:"Win Pro"},{regex:"Touch4G(?:[);/ ]|$)",model:"Touch 4G"},{regex:"Start3G(?:[);/ ]|$)",model:"Start 4G"},{regex:"PicassoNote(?:[);/ ]|$)",model:"Picasso Note"},{regex:"Jinga Iron(?:[);/ ]|$)",model:"Iron"},{regex:"Jinga Basco neo(?:[);/ ]|$)",model:"Basco Neo"},{regex:"(?:Jinga )?Basco (L3|L[45]00|XS1|S2)(?:[);/ ]|$)",model:"Basco $1"},{regex:"Jinga Trezor S1 Plus(?:[);/ ]|$)",model:"Trezor S1 Plus"},{regex:"JINGA_IGO_L2(?:[);/ ]|$)",model:"IGO L2"},{regex:"(?:JINGA[_ ])?IGO[_ ]([ML]1|L4)(?:[);/ ]|$)",model:"IGO $1"},{regex:"Jinga Trezor S1 Plus(?:[);/ ]|$)",model:"Trezor S1 Plus"}]},Twoe={regex:"(?:TWOE[-_ ]E450R|F534L|F572L|E500A)(?:[);/ ]|$)",device:"smartphone",models:[{regex:"TWOE[-_ ](E450R)(?:[);/ ]|$)",model:"$1"},{regex:"(F534L|F572L|E500A)(?:[);/ ]|$)",model:"$1"}]},iTruck={regex:"iTRUCK 7 3G(?:[);/ ]|$)",device:"smartphone",model:'7.0" 3G'},Torex={regex:"TOREX[- ](?:PS12|S18|S27)(?:[);/ ]|$)",device:"tablet",models:[{regex:"TOREX-(PS12)",model:"$1"},{regex:"TOREX[- ](S18|S27)",device:"smartphone",model:"$1"}]},Doffler={regex:"(24DHS54)(?:[);/ ]|$)",device:"tv",model:"$1"},Oyyu={regex:"OYYUT11(?:[);/ ]|$)",device:"tablet",model:"T11 3G"},Primux={regex:"Primux",device:"smartphone",models:[{regex:"Primux_ioxphone(?:[);/ ]|$)",model:"IOX Phone"},{regex:"PrimuxDelta6(?:[);/ ]|$)",model:"Delta 6"},{regex:"PrimuxKappa(P50[01])(?:[);/ ]|$)",model:"Kappa $1"},{regex:"PrimuxKappa(?:[);/ ]|$)",model:"Kappa"},{regex:"Primux_Beta2(?:[);/ ]|$)",model:"Beta 2"},{regex:"Primux_?Omega([57])(?:[);/ ]|$)",model:"Omega $1"},{regex:"PrimuxUP(?:[);/ ]|$)",device:"tablet",model:"UP"},{regex:" PrimuxZonda4(?:[);/ ]|$)",device:"tablet",model:"Zonda 4"},{regex:"Primux_Siroco6(?:[);/ ]|$)",device:"tablet",model:"Siroco 6"}]},iMars={regex:"(?:IMARS VEGA X7|VIVI_8)(?:[);/ ]|$)",device:"smartphone",models:[{regex:"IMARS VEGA X7",model:"Vega X7"},{regex:"VIVI_8",model:"VIVI 8"}]},Logic={regex:"LOGIC[_ ](X[135]|X4M|L5D|X5[AFT]|X60G|L61|X60_PLUS)(:?[_ ]LITE2?)?(?:[);/ ]|$)",device:"smartphone",models:[{regex:"LOGIC[_ ]X60_PLUS(?:[);/ ]|$)",model:"X60 Plus"},{regex:"LOGIC[_ ](X5|X4M)[_ ]LITE(?:[);/ ]|$)",model:"$1 Lite"},{regex:"LOGIC[_ ](X5)[_ ]LITE2(?:[);/ ]|$)",model:"$1 Lite 2"},{regex:"LOGIC[_ ](X[13]|X4M|L5D|X5[AFT]|X60G|L61)(?:[);/ ]|$)",model:"$1"}]},Cloudpad={regex:"\\+VT(?:107C|Q007C)(?:[);/ ]|$)",device:"tablet",models:[{regex:"\\+VT(107C)",model:"+VT$1"},{regex:"\\+VTQ(007C)",model:"+VTQ$1"}]},Cloudfone={regex:"(?:Thrill (?:Boost[ ]?(2|3)?|Snap|Access)|Excite Prime 2 Pro|NBA Edition)(?:[);/ ]|$)",device:"smartphone",models:[{regex:"Thrill Boost (2|3)(?:[);/ ]|$)",model:"Thrill Boost $1"},{regex:"Thrill Boost(?:[);/ ]|$)",model:"Thrill Boost"},{regex:"Thrill Snap(?:[);/ ]|$)",model:"Thrill Snap"},{regex:"Thrill Access(?:[);/ ]|$)",model:"Thrill Access"},{regex:"Excite Prime 2 Pro(?:[);/ ]|$)",model:"Excite Prime 2 Pro"},{regex:"NBA Edition(?:[);/ ]|$)",model:"NBA Edition"}]},Vsmart={regex:"(?:Joy 1\\+|Active 1\\+|Bee 3|Active 3)(?:[);/ ]|$)",device:"smartphone",models:[{regex:"Joy 1\\+(?:[);/ ]|$)",model:"Joy 1 Plus"},{regex:"Active 1\\+(?:[);/ ]|$)",model:"Active 1 Plus"},{regex:"Bee 3(?:[);/ ]|$)",model:"Bee 3"},{regex:"Active 3(?:[);/ ]|$)",model:"Active 3"}]},MiXzo={regex:"(?:MiXzo[ _])?(?:ME1023|ME1030|MX1037|MX1024|MX10[24]1|MX1397)([ _][34]G)?(?:[);/ ]|$)",device:"tablet",models:[{regex:"MiXzo[_ ]ME(1023|1030)(?:[_ ]3G)(?:[);/ ]|$)",model:"ME$1 3G"},{regex:"MiXzo[_ ]MX1021(?:[_ ]3G)?(?:[);/ ]|$)",model:"MX1021 3G"},{regex:"(?:MiXzo[ _])?MX(1037|1041|1024|1397)[ _]4G(?:[);/ ]|$)",model:"MX$1 4G"}]},Openbox={regex:"Openbox (A[34](?: (?:Pro|Lite))?)(?:[);/ ]|$)",device:"tv",model:"$1"},Ziox={regex:"ZIOX[_ ]|(?:Astra Viva 4G|Astra NXT Pro|Duopix F9)(?:[);/ ]|$)",device:"smartphone",models:[{regex:"ZIOX[_ ]F9[_ ]PRO(?:[);/ ]|$)",model:"F9 Pro"},{regex:"Astra Viva 4G(?:[);/ ]|$)",model:"Astra Viva 4G"},{regex:"Astra NXT Pro(?:[);/ ]|$)",model:"Astra NXT Pro"},{regex:"Duopix F9(?:[);/ ]|$)",model:"Duopix F9"}]},iDroid={regex:"APACHE G6(?:[);/ ]|$)",device:"smartphone",model:"Apache G6"},Aoson={regex:"aoson(?:R10[1-3]|S[78]|M707TG)(?:[_ ]?Pro)?(?:[);/ ]|$)",device:"tablet",models:[{regex:"aosonR10([1-3])(?:[);/ ]|$)",model:'R10$1 10.1"'},{regex:"aosonS7_Pro(?:[);/ ]|$)",model:'S7 Pro 7.0"'},{regex:"aosonS7(?:[);/ ]|$)",model:'S7 7.0"'},{regex:"aosonS8Pro(?:[);/ ]|$)",model:'S8 Pro 8.0"'},{regex:"aoson(M707TG)(?:[);/ ]|$)",model:"$1"}]},NextTab={regex:"TAB (A40[13]0)(?:[);/ ]|$)",device:"tablet",model:"$1"},Time2={regex:"(TC1050G)(?:[);/ ]|$)",device:"tablet",model:'$1 10.1"'},Sunstech={regex:"(TAB2323GMQC)(?:[);/ ]|$)",device:"tablet",model:"$1"},Hotwav={regex:"(?:Venus[_ ]X1[024569]|Cosmos[ _](?:V8_lite|V19_Plus|V2[0-3]|U2|V19|V[569])|Pearl K2|Magic Q8|Magic 5 Plus|Magic (?:[89]|1[13])|Hot[_ ]6)(?:[);/ ]|$)",device:"smartphone",models:[{regex:"Cosmos[ _]V8_lite(?:[);/ ]|$)",model:"Cosmos V8 Lite"},{regex:"Hot[_ ]6?(?:[);/ ]|$)",model:"Hot 6"},{regex:"(Venus[_ ]X1[024569]|Cosmos[ _](?:V19_Plus|V2[0-3]|U2|V19|V[569])|Pearl K2|Magic Q8|Magic 5 Plus|Magic (?:[89]|1[13]))(?:[);/ ]|$)",model:"$1"}]},Tetratab={regex:"CASEBOOK_3(?:[);/ ]|$)",device:"tablet",model:"Casebook 3"},Dolamee={regex:"Dolamee[_ -](D[56])(?:[);/ ]|$)",device:"tv",model:"$1"},Invin={regex:"INVIN[ _-]|KM5PRO(?:[);/ ]|$)",device:"tv",models:[{regex:"INVIN[ _-](X[24]|KM[678])",model:"$1"},{regex:"KM5PRO",model:"KM5 Pro"}]},Doopro={regex:"Doopro P3(?:[);/ ]|$)",device:"smartphone",model:"P3"},IQM={regex:"IQM (?:picasso|vivaldi|newton)(?:[);/ ]|$)",device:"smartphone",models:[{regex:"IQM picasso(?:[);/ ]|$)",model:"Picasso"},{regex:"IQM vivaldi(?:[);/ ]|$)",model:"Vivaldi"},{regex:"IQM newton(?:[);/ ]|$)",model:"Newton"}]},Nos={regex:"Nos (?:FIVE|NOVU|NEVA|Roya)(?:[);/ ]|$)",device:"smartphone",models:[{regex:"NOS FIVE(?:[);/ ]|$)",model:"Five"},{regex:"NOS NOVU III(?:[);/ ]|$)",model:"Novu III"},{regex:"NOS NOVU II(?:[);/ ]|$)",model:"Novu II"},{regex:"NOS NOVU(?:[);/ ]|$)",model:"Novu"},{regex:"NOS NEVA 80(?:[);/ ]|$)",model:"Neva 80"},{regex:"NOS Roya(?:[);/ ]|$)",model:"Roya"}]},Accent={regex:"(?:ACCENT[_ ]NEON|FAST73G|PEARL[_ ]A[24567]|TANK_P55|CAMELEON[_ ](?:C[456]|A1)(?:[_ ]PLUS)?|Speed[- ](?:[AXYM]2|X2\\+))(?:[);/ ]|$)",device:"smartphone",models:[{regex:"ACCENT[_ ]NEON(?:[);/ ]|$)",model:"Neon"},{regex:"CAMELEON[_ ]C6[_ ]PLUS(?:[);/ ]|$)",model:"Cameleon C6 Plus"},{regex:"Speed[- ]([AXYM]2)(?:[);/ ]|$)",model:"Speed $1"},{regex:"Speed-X2\\+(?:[);/ ]|$)",model:"Speed X2 Plus"},{regex:"CAMELEON[_ ](C[456]|A1)(?:[);/ ]|$)",model:"Cameleon $1"},{regex:"PEARL A4 Lite(?:[);/ ]|$)",model:"Pearl A4 Lite"},{regex:"PEARL[_ ]A([2567])(?:[);/ ]|$)",model:"Pearl A$1"},{regex:"TANK_P55(?:[);/ ]|$)",model:"Tank P55"},{regex:"FAST73G(?:[);/ ]|$)",device:"phablet",model:"FAST7 3G"}]},Avenzo={regex:"Avenzo(?:[);/ ]|$)",device:"smartphone",models:[{regex:"MOB4 4G(?:[);/ ]|$)",model:"Mob 4 4G"},{regex:"MOB4PRO 4G(?:[);/ ]|$)",model:"Mob 4 Pro 4G"}]},Beelink={regex:"(?:Beelink (?:G[ST]1|LAKE I|SEA I|A1)|GTKing|GT1mini-2|GT1-mini(?:-AT)?)(?:[);/ ]|$)",device:"tv",models:[{regex:"Beelink (G[ST]1|LAKE I|SEA I|A1)(?:[);/ ]|$)",model:"$1"},{regex:"GT1-mini(?:-AT)?(?:[);/ ]|$)",model:"GT1 Mini"},{regex:"GT1mini-2(?:[);/ ]|$)",model:"GT1 Mini 2"},{regex:"GTKing(?:[);/ ]|$)",model:"GT King"}]},MAXVI={regex:"MAXVI[ _](?:MS401)(?:[);/ ]|$)|(?:\\w+)?_MAXVI_\\w+|MS502[_ ]Orion|MS531",device:"smartphone",models:[{regex:"MAXVI[ _](MS401)",model:"$1"},{regex:"MS531",model:"MS531 Vega"},{regex:"MS502[_ ]Orion",model:"MS502 Orion"},{regex:"(?:\\w+)?MAXVI_(P11|K10|X[358]00)_\\w+",device:"feature phone",model:"$1"}]},meanIT={regex:"meanIT[ _](?:C[12]|X10|X[126]|MG430|Q[145])(?:[);/ ]|$)",device:"smartphone",models:[{regex:"meanIT[ _]Q1 plus(?:[);/ ]|$)",model:"Q1 Plus"},{regex:"meanIT[ _](C[12]|X[126]|MG430|Q[145])(?:[);/ ]|$)",model:"$1"},{regex:"meanIT[ _]X10(?:[);/ ]|$)",device:"tablet",model:"X10"}]},Kenxinda={regex:"Three[_ ]Proofings[_ ]W([5-9])(?:[);/ ]|$)",device:"smartphone",model:"Three Proofings W$1"},Xgody={regex:"XGODY",device:"smartphone",models:[{regex:"XGODY Y17(?:[);/ ]|$)",model:"Y17"},{regex:"XGODY_X96(?:[);/ ]|$)",model:"X96",device:"tv"}]},Alcor={regex:"(Access_Q784C)(?:[);/ ]|$)",device:"tablet",model:"$1"},iBrit={regex:"IBRIT_|(?:SI5[12])(?:[);/ ]|$)",device:"smartphone",models:[{regex:"IBRIT_I([57])(?:[);/ ]|$)",model:"I$1"},{regex:"iBRIT_POWER6(?:[);/ ]|$)",model:"Power 6"},{regex:"iBRIT_Speed Pro(?:[);/ ]|$)",model:"Speed Pro"},{regex:"SI51(?:[);/ ]|$)",model:"Speed"},{regex:"SI52(?:[);/ ]|$)",model:"Speed Plus"}]},Ovvi={regex:"Jumbo X1",device:"smartphone",model:"Jumbo X1"},Fero={regex:"Fero[_ ]|Royale[_ ](?:[YX]2|A1)",device:"smartphone",models:[{regex:"Fero_Y1",model:"Y1"},{regex:"Royale Y2 Lite",model:"Royale Y2 Lite"},{regex:"Royale[_ ]([YX]2|A1)",model:"Royale $1"},{regex:"FERO PACE",model:"Pace"},{regex:"Fero[ _](A4001|A450[23]|A5001|L100|Iris|Power|Mega LTE|Vibe)",model:"$1"}]},Ruio={regex:"Ruio[ _]",device:"smartphone",models:[{regex:"Ruio[ _](S4)(?:[);/ ]|$)",model:"$1"},{regex:"Ruio[ _](S5)Plus(?:[);/ ]|$)",model:"$1 Plus"}]},Transpeed={regex:"Transpeed_|(?:TR99 MINI\\+|TR99)(?:[);/ ]|$)",device:"tv",models:[{regex:"TR99 MINI\\+",model:"TR99 Mini Plus"},{regex:"(?:Transpeed_)?(TR99|H616|6K)(?:[);/ ]|$)",model:"$1"}]},VVETIME={regex:"ZYVV1(?:[);/ ]|$)",device:"smartphone",model:"V1"},A1={regex:"A1 (?:Alpha|Alpha 20\\+)(?:[);/ ]|$)",device:"smartphone",models:[{regex:"A1 Alpha 20\\+",model:"Alpha 20 Plus"},{regex:"A1 Alpha",model:"Alpha"}]},Swisstone={regex:"swisstone (SD 5[13]0)(?:[);/ ]|$)",device:"smartphone",model:"$1"},iVooMi={regex:"(?:Innelo_1|iV 505)(?:[);/ ]|$)",device:"smartphone",models:[{regex:"Innelo_1",model:"Innelo 1"},{regex:"iV 505",model:"Me 1"}]},Pixelphone={regex:"Pixelphone S1(?:[);/ ]|$)",device:"smartphone",model:"S1"},Pixela={regex:"Infineum[_ ](Z4?5)(?:[);/ ]|$)",device:"smartphone",model:"Infineum $1"},Iris={regex:"(?:Vox[_ ](?:[45]S|Alpha|POP|STEEL Plus|Energy)|IS2_?Plus|IS2S|Next_P_PRO|IRS002-16)(?:[);/ ]|$)",device:"smartphone",models:[{regex:"Vox[_ ]([45])S",model:"Vox $1S"},{regex:"VOX Alpha Plus",model:"Vox Alpha Plus"},{regex:"VOX STEEL Plus",model:"Vox Steel Plus"},{regex:"VOX Alpha",model:"Vox Alpha"},{regex:"VOX Energy",model:"Vox Energy"},{regex:"VOX POP plus",model:"Vox Pop Plus"},{regex:"VOX POP Pro",model:"Vox Pop Pro"},{regex:"Next_P_PRO",model:"Next P Pro"},{regex:"IS2_?Plus",model:"IS2 Plus"},{regex:"IRS002-16",model:"I-S6"},{regex:"IS2S",model:"IS2S"}]},Fonos={regex:"Fonos-(O1)(?:[);/ ]|$)",device:"smartphone",model:"$1"},Xtouch={regex:"Xtouch[ _](X10|A5)(?:[);/ ]|$)",device:"smartphone",model:"$1"},Conquest={regex:"Conquest[-_](?:S(?:[68]|1[0126])|F2)(?:[);/ ]|$)",device:"smartphone",models:[{regex:"Conquest[-_]S([68]|1[0126])",model:"S$1"},{regex:"Conquest-F2",model:"F2"}]},Zatec={regex:"ZATEC[_ ]|(?:[ ]WIND|ZPLAY1_2018|Zpower_(?:Plus|2018))(?:[);/ ]|$)",device:"smartphone",models:[{regex:"ZATEC[_ ]GRAVITY(?:[);/ ]|$)",model:"Gravity"},{regex:"[ ]WIND(?:[);/ ]|$)",model:"Wind"},{regex:"ZPLAY1_2018",model:"Zplay (2018)"},{regex:"Zpower_2018",model:"Zpower (2018)"},{regex:"Zpower_Plus",model:"Zpower Plus"}]},Selenga={regex:"Selenga[ _](A[134])(?:[);/ ]|$)",device:"tv",model:"$1"},Starlight={regex:"Starlight|(?:My_Star_X|RIO STAR|C_Note_Pro|Star_Mix_2)(?:[);/ ]|$)",device:"smartphone",models:[{regex:"My_Star_X",model:"My Star X"},{regex:"RIO STAR",model:"Rio Star"},{regex:"C_Note_Pro",model:"C Note Pro"},{regex:"Star_Mix_2",model:"Star Mix 2"},{regex:"Starlight_ROME_X",model:"Rome X"}]},GEOFOX={regex:"GEOFOX[_](MID743)(?:[);/ ]|$)",device:"tablet",model:"$1"},Tinmo={regex:"TiNMO[- _](A11|K3)(?:[);/ ]|$)",device:"smartphone",model:"$1"},Matrix={regex:"(7116-A5)(?:[);/ ]|$)",device:"tablet",model:"$1"},Verico={regex:"(RP-UDM0[12]A|RP-UDP05A)(?:[);/ ]|$)",device:"tablet",model:"Uni Pad $1"},TTEC={regex:"(Magictab (?:9GX|7GE|718))(?:[);/ ]|$)",device:"tablet",model:"$1"},eSTAR={regex:"eSTAR[_ ](?:Grand|GO\\!?|Zoom Quad|Gemini|MINI[_ ]3G|BEAUTY|MOON)",device:"tablet",models:[{regex:"eSTAR (Grand|GO\\!?) (HD Intel|IPS Intel|IPS|HD|Intel) Quad Core 3G",model:"$1 $2 Quad Core 3G"},{regex:"eSTAR (Zoom Quad|Gemini|GO)",model:"$1"},{regex:"eSTAR GRAND HD quad core( [34]G)?",model:"Grand HD Quad Core$1"},{regex:"eSTAR GRAND",model:"Grand"},{regex:"eSTAR BEAUTY HD Quad core",model:"Beauty HD Quad Core"},{regex:"eSTAR MOON HD Quad core",model:"Moon HD Quad Core 3G"},{regex:"eSTAR BEAUTY 2 HD Quad core",model:"Beauty 2 HD Quad Core"},{regex:"eSTAR[_ ]MINI[_ ]3G",model:"Mini 3G"}]},Hometech={regex:"(?:Ideal (?:10S|Tab [79])|ALFA10TB|ALFA[_ ](?:10RC|10TM?|7RS|[78]RC|7M)|HT[ _](?:7RT|8MZ))(?:[);/ ]|$)",device:"tablet",models:[{regex:"(Ideal (?:10S|Tab 9))(?:[);/ ]|$)",model:"$1"},{regex:"ALFA[_ ]?(10RC|10T[BM]?|7RS|[78]RC|7M)(?:[);/ ]|$)",model:"ALFA $1"},{regex:"Ideal Tab 7 Ips( 3G)?",model:"Ideal Tab 7 IPS$1"},{regex:"HT[ _](7RT|8MZ)(?:[);/ ]|$)",model:"HT $1"}]},ExMobile={regex:"EX(29|45)i(?:[);/ ]|$)",device:"smartphone",model:"EX $1i"},Hipstreet={regex:"10DTB12(?:[);/ ]|$)",device:"tablet",model:"Phoenix"},Navitech={regex:"(NeoTab)[ _-]((?:S1[23]0|S125|H85|H11[05]|KID741|S9700))(?:[);/ ]|$)",device:"tablet",model:"$1 $2"},NorthTech={regex:"(NT-TP10)(?:[);/ ]|$)",device:"tablet",model:'TouchPad 10.0"'},UNIWA={regex:"UNIWA[ _](X5)(?:[);/ ]|$)",device:"smartphone",model:"$1"},Andowl={regex:"ANDOWL-(Q[45])(?:[);/ ]|$)",device:"tv",model:"$1"},Silelis={regex:"Silelis[ _](T-1)(?:[);/ ]|$)",device:"tv",model:"$1"},Bluedot={regex:"BLUEDOT[_ ]|(?:BNT-71)(?:[);/ ]|$)",device:"tablet",models:[{regex:"(?:BLUEDOT[_ ])?(BNP-500)(?:[);/ ]|$)",device:"smartphone",model:"$1"},{regex:"(BNT-71)(?:[);/ ]|$)",model:"$1"}]},Reach={regex:"(Allure[_ ](?:Ultra(?:[_]Curve)?|Secure|Admire|Rise))(?:[);/ ]|$)",device:"smartphone",model:"$1"},MobiWire={regex:"(?:Kiona|KANUNA|Halona|Kicka[_ ][45][ _]Plus|Kohana|Kosumi|KWANITA|Lonan|Hotah|Kicka 5|Kiona)(?:[);/ ]|$)",device:"smartphone",models:[{regex:"KANUNA",model:"Kanuna"},{regex:"KWANITA",model:"Kwanita"},{regex:"(Kiona|Kicka[_ ][45][ _]Plus|Kohana|Kosumi|Lonan|Halona|Hotah|Kicka 5|Kiona)(?:[);/ ]|$)",model:"$1"}]},Hezire={regex:"(HTB801)(?:[);/ ]|$)",device:"tablet",model:"$1"},Hurricane={regex:"Hurricane[ _]|(?:Flame_Plus)(?:[);/ ]|$)",device:"smartphone",models:[{regex:"Hurricane[ _]IGNITE",model:"Ignite"},{regex:"Hurricane[ _]Bolt",model:"Bolt"},{regex:"Hurricane[ _]VORTEX",model:"Vortex"},{regex:"Hurricane[ _]GIGA",model:"Giga"},{regex:"Flame_Plus",model:"Flame Plus"}]},iSWAG={regex:"ISWAG[ _]",device:"smartphone",models:[{regex:"ISWAG[_ ]VIPER",model:"Viper"},{regex:"iSWAG[_ ]Lynx",model:"Lynx"},{regex:"iSWAG[_ ]MANTRA",model:"Mantra"},{regex:"iSWAG[_ ]MEGA",model:"Mega"},{regex:"iSWAG[_ ]NEMESIS",model:"Nemesis"}]},Reeder={regex:"(?:reeder[_ ](?:3G_Tablet|A7iC|A[78]i[_ ]Quad|A8i Q2|M8 Plus|[TM]8|M10 Plus|P11SE)|P12Curve)(?:[);/ ]|$)",device:"tablet",models:[{regex:"reeder[_ ](3G_Tablet|A7iC|A[78]i[_ ]Quad|A8i Q2|M8 Plus|[TM]8|M10 Plus|P11SE)(?:[);/ ]|$)",model:"$1"},{regex:"P12Curve",device:"smartphone",model:"P12 Curve"}]},ELARI={regex:"KidPhone4G(?:[);/ ]|$)",device:"wearable",model:"KidPhone 4G"},Altice={regex:"Altice[ _](S62|S31|S43)(?:[);/ ]|$)",device:"smartphone",model:"$1"},Kult={regex:"(Ambition|Beyond)(?:[);/ ]|$)",device:"smartphone",model:"$1"},Beyond={regex:"SURVE(10|[26-8]|[12] PRO)(?:[);/ ]|$)",device:"smartphone",models:[{regex:"SURVE([12]) PRO",model:"Surve $1 Pro"},{regex:"SURVE(10|[26-8])",model:"Surve $1"}]},BioRugged={regex:"(?:BioWolf 8-F30|BIOWOLF8F30|Ruggbo 20 Lite)(?:[);/ ]|$)",device:"tablet",models:[{regex:"BioWolf 8-F30|BIOWOLF8F30",model:"BioWolf 8-F30"},{regex:"Ruggbo 20 Lite",model:"Ruggbo 20 Lite"}]},VAIO={regex:"(?:VPA051|VA-10J)(?:[);/ ]|$)",device:"smartphone",models:[{regex:"VPA051",model:"Phone A"},{regex:"(VA-10J)",model:"$1"}]},Spark={regex:"Spark Plus 3(?:[);/ ]|$)",device:"smartphone",models:[{regex:"Plus 3",model:"Plus 3"}]},SPC={regex:"(?:Gravity Max|GRAVITY_OCTACORE|SPC SMART LITE|SPC_ALIEN(?:_STICK)?|SPC Glow9.7)(?:[);/ ]|$)",device:"tablet",models:[{regex:"GRAVITY_OCTACORE",model:"Gravity OctaCore"},{regex:"Gravity Max",model:"Gravity Max"},{regex:"SPC Glow9.7",model:'Glow 9.7"'},{regex:"SPC SMART LITE",device:"smartphone",model:"Smart Lite"},{regex:"SPC_ALIEN_STICK",device:"tv",model:"Alien Stick"},{regex:"SPC_ALIEN",device:"tv",model:"Alien"}]},Winmax={regex:"Winmax[ _](?:XC14|XC[46]|TX30)(?:[);/ ]|$)|MAUI.+Winmax_BD45",device:"smartphone",models:[{regex:"Winmax[ _](XC14|XC[46])(?:[);/ ]|$)",model:"$1"},{regex:"Winmax[ _](TX30)(?:[);/ ]|$)",device:"tablet",model:"$1"},{regex:"MAUI.+Winmax_(BD45)",device:"feature phone",model:"$1"}]},Zebra={regex:" (TC5[16]|TC2[05]|TC75|TC7[05]x|TC700H)(?:[);/ ]|$)",device:"smartphone",model:"$1"},Thuraya={regex:"Thuraya[ _](X5-Touch)(?:[);/ ]|$)",device:"smartphone",model:"$1"},Bkav={regex:"Bphone[ _](B111[45]|B2017)(?:[);/ ]|$)",device:"smartphone",model:"Bphone $1"},Brandt={regex:"(BPRIME|BSTAR\\+?|BPRIMES|B-ONE)(?:[);/ ]|$)",device:"smartphone",model:"$1"},Bigben={regex:"GAMETAB-ONE(?:[);/ ]|$)",device:"tablet",model:"GameTab-One"},SMARTEC={regex:"(Atractivo)(?:[);/ ]|$)",device:"smartphone",model:"$1"},Asanzo={regex:"ASANZO[ _](?:A2|S[23]|[SZ]5|S3_PLUS)(?:[);/ ]|$)",device:"smartphone",models:[{regex:"ASANZO[ _]S3[ _]PLUS",model:"S3 Plus"},{regex:"ASANZO[ _](A2|S[23]|[SZ]5)(?:[);/ ]|$)",model:"$1"}]},Artizlee={regex:"Artizlee[ _]S9|ATL-(?:16|21(?:PLUS|[XT])?|31|26)(?:[);/ ]|$)",device:"tablet",models:[{regex:"ATL-21PLUS(?:[);/ ]|$)",model:"ATL-21 Plus"},{regex:"(ATL-(?:16|21[XT]?|31|26))(?:[);/ ]|$)",model:"$1"},{regex:"Artizlee[ _]S9",device:"smartphone",model:"S9"}]},Mintt={regex:"(?:Coolmintt(?:A3|M2)?|Ultramintt(?:S2)?|FRESHMINTT(?:A7|A10)?)(?:[);/ ]|$)",device:"smartphone",models:[{regex:"Coolmintt ?([PM]1|P3|A3|M2)(?:[);/ ]|$)",model:"CoolMintt $1"},{regex:"Ultramintt ?([SR]1|S2)(?:[);/ ]|$)",model:"UltraMintt $1"},{regex:"FRESHMINTT ?(A7|A10)(?:[);/ ]|$)",device:"tablet",model:"FreshMintt $1"}]},Premio={regex:"(?:186HS2080531|186HS1050531|186HS1050232|186FT1080231|185FT5050231|PREMIO[ _](?:S50|P420|P451))(?:[);/ ]|$)",device:"smartphone",models:[{regex:"186HS2080531",model:"X1"},{regex:"186HS1050531",model:"P541"},{regex:"185FT5050231",model:"P511"},{regex:"186FT1080231",model:"P571"},{regex:"186HS1050232",model:"P630"},{regex:"PREMIO[ _](S50|P420|P451)(?:[);/ ]|$)",model:"$1"}]},Trifone={regex:"Passion[-_](?:1S|PRO|PLUS)(?:[);/ ]|$)",device:"smartphone",models:[{regex:"Passion-1S",model:"Passion 1S"},{regex:"Passion-Plus",model:"Passion Plus"},{regex:"Passion_Pro",model:"Passion Pro"}]},Bluewave={regex:"(?:33GT HD|WV8R-M|WV8R[_-]N)(?:[);/ ]|$)",device:"tablet",models:[{regex:"33GT HD",model:"Wave 8 HD+"},{regex:"WV8R-M",model:"Wave 8 Red Marshmallow"},{regex:"WV8R[_-]N",model:"Wave 8 Red Nougat"}]},Siragon={regex:"Siragon|(?:SP-(?:5250|5400|5050))(?:[);/ ]|$)",device:"smartphone",models:[{regex:"(?:Siragon[_ ])?(SP-(?:5[12]50|5400|5050))",model:"$1"}]},Poppox={regex:"Poppox P3",device:"smartphone",model:"P3"},Zentality={regex:"C-723ULTRA(?:[);/ ]|$)",device:"tablet",model:"C-723 Ultra"},Fortis={regex:"(Apollo 5 Neo)(?:[);/ ]|$)",device:"smartphone",model:"$1"},OpelMobile={regex:" OpelMobile_(SmartJX)(?:[);/ ]|$)",device:"smartphone",model:"$1"},NuAns={regex:"NEO \\[Reloaded\\](?:[);/ ]|$)",device:"smartphone",model:"NEO Reloaded"},Koolnee={regex:"(K1 Trio)(?:[);/ ]|$)",device:"smartphone",model:"$1"},Sansui={regex:"Sansui[_ ]",device:"smartphone",models:[{regex:"Sansui[_ ](Switch|Play|Fun|SA4[01]|U4[56]|U3[02]|Nova)(?:[);/ ]|$)",model:"$1"}]},Sico={regex:"SICO[_ ](?:PLUS|e1002)|Express3-Max|SSR3-1-51-5M|SSD-1-53-13M",device:"smartphone",models:[{regex:"SICO[_ ]PLUS2",model:"Plus 2"},{regex:"SICO[_ ]PLUS",model:"Plus"},{regex:"SSR3-1-51-5M",model:"Pro 3"},{regex:"SSD-1-53-13M",model:"Diamond"},{regex:"SICO[_ ]e1002",device:"tablet",model:"E1002"},{regex:"Express3-Max",device:"tablet",model:"Express 3 Max"}]},Smadl={regex:"Android.+(?:Safari)(?!/[\\d.]+)(?: Build|\\) AppleWebKit)|SMADL[ _]",device:"smartphone",models:[{regex:"Android.+(?:Safari)(?!/[\\d.]+)(?: Build|\\) AppleWebKit)",model:"Safari"},{regex:"SMADL[ _]Matri([2X])",model:"Matri $1"}]},EXCEED={regex:"(EX7SL?4|EX10S4)(?:[);/ ]|$)",device:"tablet",model:"$1"},Tymes={regex:"Tymes[ _](V5)(?:[);/ ]|$)",device:"smartphone",model:"$1"},Solone={regex:"SOLONE|(?:E1457|W145[02])(?:[);/ ]|$)",device:"smartphone",models:[{regex:"E1457",model:"Earth Iron E1457"},{regex:"W1450",model:"Wind Breeze W1450"},{regex:"W1452",model:"Wind Air W1452"},{regex:"SOLONE A47",model:"SL-A47"},{regex:"SOLONE[ _]Elite[ _]L5501",model:"Elite L5501"},{regex:"SOLONE[ _]SUMO[_ ]S5001",model:"Sumo S5001"},{regex:"SOLONE[ _](SL-K40|S5002)(?:[);/ ]|$)",model:"$1"}]},FarEasTone={regex:"Smart ?(601|550|50[59])(?:[);/ ]|$)",device:"smartphone",model:"Smart $1"},Smailo={regex:"Smailo_(2GO)(?:[);/ ]|$)",device:"tablet",model:"$1"},Colors={regex:"(?:Colors[ _](S(?:[19]|11)|P70|P[456]5|P32|E15|P50 Plus)|Pride_1A|P52_Pride5C|P90_Pride5X)(?:[);/ ]|$)",device:"smartphone",models:[{regex:"Pride_1A(?:[);/ ]|$)",model:"Pride 1A"},{regex:"P52_Pride5C(?:[);/ ]|$)",model:"Pride 5C"},{regex:"P90_Pride5X(?:[);/ ]|$)",model:"Pride 5X"},{regex:"Colors[ _](S(?:[19]|11)|P70|E15|P[456]5|P32|P50 Plus)(?:[);/ ]|$)",model:"$1"}]},Honeywell={regex:"(EDA50K?|EDA70|EDA51)(?:[);/ ]|$)",device:"smartphone",model:"ScanPal $1"},Electroneum={regex:"electroneum(M1)(?:[);/ ]|$)",device:"smartphone",model:"$1"},Pluzz={regex:"Pluzz[_-](Z552|PL5[05]10|PL4010|PL501[46]|Elite_Dual)(?:[);/ ]|$)",device:"smartphone",model:"$1"},IUNI={regex:"IUNI[ _]",device:"smartphone",models:[{regex:"IUNI[ _](U3|i1|N1)",model:"$1"}]},Ordissimo$1={regex:"(LeNumero1)(?:[);/ ]|$)",device:"smartphone",model:"$1"},Necnot={regex:"(M002[DGQK]-2|M002N|M002N-3T|M002W-2T|6M-3T)(?:[);/ ]|$)",device:"tablet",model:"$1"},Einstein={regex:"Einstein(T3)(?:[);/ ]|$)",device:"tablet",model:"$1"},AfriOne={regex:"(CYGNUSX?|Gravity Z2|ChampionPro)(?:[);/ ]|$)",device:"phablet",models:[{regex:"CYGNUSX(?:[);/ ]|$)",model:"Cygnus X"},{regex:"CYGNUS(?:[);/ ]|$)",model:"Cygnus"},{regex:"Gravity Z2(?:[);/ ]|$)",device:"smartphone",model:"Gravity Z2"},{regex:"ChampionPro(?:[);/ ]|$)",device:"smartphone",model:"Champion Pro"}]},Connex={regex:"(CTAB1044hn|CTAB-1044)(?:[);/ ]|$)",device:"tablet",model:"$1"},Connectce={regex:"(?:CP6001A)(?:[);/ ]|$)",device:"smartphone",model:"Connect Core 6"},Clementoni={regex:"(?:CLEMPAD[_ ](?:6_XL|HR_Plus|HR|[68]|7_S|201[89])|ClemPhone_7|MFC_(?:2018|8))(?:[);/ ]|$)",device:"tablet",models:[{regex:"CLEMPAD_(201[89])",model:"Clempad ($1)"},{regex:"MFC_2018",model:"Clempad (2018)"},{regex:"MFC_8",model:"Clempad 8"},{regex:"CLEMPAD_7_S",model:"Clempad 7S"},{regex:"Clempad[_ ](6_XL|HR_Plus|HR|[68])",model:"Clempad $1"},{regex:"ClemPhone[ _](7)",device:"smartphone",model:"Clemphone $1"}]},VC={regex:"(?:Camellia_II|Cactus II|Maple III|Maple-II|Cactus-Pro|LavenderII|Jasmine-II)(?:[);/ ]|$)",device:"smartphone",models:[{regex:"(Camellia_II|Cactus II|Maple III)(?:[);/ ]|$)",model:"$1"},{regex:"Cactus-Pro",model:"Cactus Pro"},{regex:"(Maple|Jasmine|Lavender)-?II(?:[);/ ]|$)",model:"$1 II"}]},CellAllure={regex:"(?:Cool_Extreme_2|Earn|Fashion2Plus|Fashion[ _]C|Cool Duo|CHIC_X1)(?:[);/ ]|$)",device:"smartphone",models:[{regex:"(Cool_Extreme_2|Earn|Fashion[ _]C|Cool Duo)(?:[);/ ]|$)",model:"$1"},{regex:"Fashion2Plus",model:"Fashion 2 Plus"},{regex:"CHIC_X1",model:"Chic X1"}]},Eagle={regex:"Eagle[ _](Classic Pro|Elite|Gold)(?:[);/ ]|$)",device:"tv",model:"$1"},Invens={regex:"(Fighter|Eager)(?: Build|[;)])",device:"smartphone",model:"$1"},Claresta={regex:"Claresta[ _]|(?:AirPhoneS[56]|AirPhone K6)(?:[);/ ]|$)",device:"smartphone",models:[{regex:"AirPhone ?(S[56]|K6)",model:"AirPhone $1"},{regex:"Claresta (F3) PRO",model:"$1 Pro"},{regex:"Claresta[ _](F4)",model:"$1"}]},Camfone={regex:"(?:Camfone (?:SE)|Hero[_ ](?:H5\\+|SE2|H9|(?:H7|XR)_Plus|SX|1[123]|SE3[ _]Max)|Honey (?:Y1|Y2s))(?:[);/ ]|$)",device:"smartphone",models:[{regex:"(Hero[_ ](?:H5\\+|SE2|H9|(?:H7|XR)_Plus|SX|1[123]|SE3[ _]Max)|Honey (?:Y1|Y2s))(?:[);/ ]|$)",model:"$1"},{regex:"Camfone (SE)(?:[);/ ]|$)",model:"$1"}]},Bellphone={regex:"Bp100 X-Plus(?:[);/ ]|$)",device:"smartphone",model:"BP 100 X-Plus"},Gini={regex:"Gini[ _]",device:"smartphone",models:[{regex:"Gini[ _]W(7)",model:"W$1"},{regex:"Gini[ _]n(8)",model:"N$1"},{regex:"Gini[ _]s5Pro",model:"S5 Pro"},{regex:"Gini[ _]Tab[ _](V[78])",device:"tablet",model:"Tab $1"}]},MIVO={regex:"(Caryota [1245789]|Jazz J[13] 2018)(?:[);/ ]|$)",device:"smartphone",models:[{regex:"(Caryota [1245789])(?:[);/ ]|$)",model:"$1"},{regex:"Jazz (J[13]) 2018",model:"Jazz $1 (2018)"}]},Jesy={regex:"Jesy_(J7)",device:"smartphone",model:"$1"},Teknosa={regex:"Preo[ _]",device:"smartphone",models:[{regex:"Preo Teknosa P1",model:"Preo P1"},{regex:"Preo[ _]P([23])",model:"Preo P$1"}]},Hyve={regex:"(?:Pryme 01|ST01)(?:[);/ ]|$)",device:"smartphone",models:[{regex:"Pryme 01",model:"Pryme 01"},{regex:"ST01",model:"Storm ST01"}]},EWIS={regex:"OCTA T720Q(?:[);/ ]|$)",device:"tablet",model:"Octa T720Q"},Cavion={regex:"(?:Cavion[_ ](?:Solid[_ ]4[\\._]5|Base[ _](?:7|7_3G_Silver|5\\.0|10|7.2 Quad)|10_3GRQ)|Cavion7.1quad)(?:[);/ ]|$)",device:"smartphone",models:[{regex:"Cavion[_ ]Solid[_ ]4[\\._]5",model:'Solid 4.5"'},{regex:"Cavion BASE 5.0",model:'Base 5.0"'},{regex:"CAVION_10_3GRQ",device:"tablet",model:"Base 10 3GR Quad"},{regex:"Cavion(?:7.1quad)",device:"tablet",model:'Base 7.1" Quad'},{regex:"Cavion Base 7.2 Quad",device:"tablet",model:'Base 7.2" Quad'},{regex:"Cavion Base 10",device:"tablet",model:"Base 10"},{regex:"Cavion Base 7 Dual",device:"tablet",model:'Base 7.0" Dual'},{regex:"Cavion Base 7 Quad",device:"tablet",model:'Base 7.0" Quad'},{regex:"Cavion_Base_7_3G_Silver",device:"tablet",model:'Base 7.0" 3G Silver'}]},GLX={regex:"GLX (?:Aria|Dorna|Taban|Shine|Spark|ASA)(?:[);/ ]|$)",device:"smartphone",models:[{regex:"GLX ASA",model:"Asa"},{regex:"GLX (Aria|Taban|Shine|Spark)(?:[);/ ]|$)",model:"$1"},{regex:"GLX (Dorna)(?:[);/ ]|$)",device:"tablet",model:"$1"}]},Seeken={regex:"Seeken[ _-]",device:"smartphone",models:[{regex:"Seeken[_ -](SG1|SJ1)",model:"$1"},{regex:"Seeken[_ -](ST-101)",device:"tablet",model:"$1"}]},Jivi={regex:"(?:Revolution TnT3|Xtreme_(?:[37]|3x)|Xtreme (?:XT84|XT309 Plus|1))(?:[);/ ]|$)",device:"smartphone",models:[{regex:"Revolution (TnT3)",model:"Revolution $1"},{regex:"Xtreme (XT84)",model:"Xtreme Klick $1"},{regex:"Xtreme (XT309) Plus",model:"Xtreme View Pro $1Plus"},{regex:"Xtreme[ _]([137]|3x)(?:[);/ ]|$)",model:"Xtreme $1"}]},Winnovo={regex:"Winnovo[ _]",device:"tablet",models:[{regex:"Winnovo[ _](M866|M798|VTab|750[PK])(?:[);/ ]|$)",model:"$1"},{regex:"Winnovo[ _](K5[46]|K43)[a-z]{2}",device:"smartphone",model:"$1"}]},WE={regex:"WE (A[15]0|B3|F[12]0|E[12]|L[3469]|R[34]|V[34]|S1|X[13]|T1)(?:[);/ ]|$)",device:"smartphone",model:"$1"},Trio={regex:"Trio V51 DT(?:[);/ ]|$)",device:"smartphone",model:"V51DT"},Seuic={regex:"(AUTOID9N)(?:[);/ ]|$)",device:"smartphone",model:"$1"},Centric={regex:"(?:Centric[- ]CM(?:5001|33[23]1|3321Plus)|CM4331)(?:[);/ ]|$)",device:"smartphone",models:[{regex:"(?:Centric[- ])?CM5001",model:"A1"},{regex:"(?:Centric[- ])?CM3321Plus",model:"P1 Plus"},{regex:"(?:Centric[- ])?CM3321",model:"P1"},{regex:"(?:Centric[- ])?CM3331",model:"L3"},{regex:"(?:Centric[- ])?CM4331",model:"G1"}]},Kata={regex:"Kata[ _-]",device:"smartphone",models:[{regex:"Kata[ _-](C3|L1|M3s|M4|V[56])(?:[);/ ]|$)",model:"$1"},{regex:"Kata[ _-]i5-\\w",model:"I5"},{regex:"Kata-(T5)(?:[);/ ]|$)",device:"tablet",model:"$1"},{regex:"Kata-Tmini4(?:[);/ ]|$)",device:"tablet",model:"T Mini 4"},{regex:"Kata Box 2(?:[);/ ]|$)",device:"tv",model:"Box 2"}]},Leff={regex:"Leff Shell (?:HV320WHB-N55|LC390TA2A)(?:[);/ ]|$)",device:"tv",model:""},Hardkernel={regex:"ODROID[-]?(C2|U2|XU[34])(?:[);/ ]|$)",device:"peripheral",model:"ODROID $1"},Wiseasy={regex:"WISENET5(?:[);/ ]|$)",device:"peripheral",model:"WISENET5"},BBK={regex:"([65]5|4[03]|3[29]|28)LEX[-_](81(?:27|39|45|58|61)|71(?:[23]7|4[345]|5[45]|6[368]|[57]8))[_/]([FU]?TS2C)(?:[);/ ]|$)",device:"tv",model:"$1LEX-$2/$3"},Westpoint={regex:"WESTPOINT[;,]",device:"tv",models:[{regex:"(TETS-4919SM)",model:"$1"}]},Wintouch={regex:"Q93S",device:"tablet",model:"Q93S"},Aiuto={regex:"(AT702)(?:[);/ ]|$)",device:"tablet",model:"$1"},Seatel={regex:"Seatel",device:"smartphone",models:[{regex:"Seatel[ _](L2|V8[AE]|T[5-8]|R6|V[89])(?:[);/ ]|$)",model:"$1"}]},Ditecma={regex:"(M1092R(?:-[12]|V[45])?)(?:[);/ ]|$)",device:"tablet",model:"$1"},Datamini={regex:"(K908H4G)(?:[);/ ]|$)",device:"tablet",model:"$1"},Formuler={regex:"Formuler[ _]",device:"tv",models:[{regex:"Formuler[ _](Z8(?: Pro)?)(?:[);/ ]|$)",model:"$1"}]},Malata={regex:"(?:Build/)?Malata[ _]?([a-z0-9]+)(?:[);/ ]|$)",device:"smartphone",model:"$1"},IT={regex:"IT-(?:1101S?|1101-QUAD)(?:[);/ ]|$)",device:"tablet",models:[{regex:"IT-1101-QUAD",model:"1101 Quad"},{regex:"IT-(1101S?)",model:"$1"}]},Navcity={regex:"NP-752Go(?:[);/ ]|$)",device:"smartphone",models:[{regex:"NP-752Go",model:"NP-752 Go"}]},Jiake={regex:"(?:JK(?:960|103) 3G|JK-?760)(?:[);/ ]|$)",device:"smartphone",models:[{regex:"JK-?(760)(?:[);/ ]|$)",model:"JK-$1"},{regex:"JK(960|103) 3G(?:[);/ ]|$)",device:"tablet",model:"JK-$1 3G"}]},Mantra={regex:"(MFSTAB(?:_74G)?)(?:[);/ ]|$)",device:"peripheral",model:"$1"},Datalogic={regex:"(?:MEMOR 10)(?:[);/ ]|$)",device:"smartphone",model:"Memor 10"},Navitel={regex:"NAVITEL[ _]",device:"tablet",models:[{regex:"NAVITEL[ _](T70[07]) 3G(?:[);/ ]|$)",model:"$1 3G"},{regex:"NAVITEL[ _](T757)LTE(?:[);/ ]|$)",model:"$1 LTE"},{regex:"NAVITEL[ _](A73[0157]|A650)(?:[);/ ]|$)",model:"$1"},{regex:"RE900 Full HD(?:[);/ ]|$)",model:"RE900 Full HD"}]},Linnex={regex:"LI(22)(?:[);/ ]|$)",device:"smartphone",model:"Li $1"},Smartab={regex:"(ST1009)(?:[);/ ]|$)",device:"tablet",model:"$1"},SuperTab={regex:"SuperTab(A10|K7|S7G)(?:[);/ ]|$)",device:"tablet",model:"$1"},Suzuki={regex:"SUZUKI[ _]|(?:ECOPAD7|SUMOPad10)(?:[);/ ]|$)",device:"tablet",models:[{regex:"SUMOPAD(8100|10)(?:[);/ ]|$)",model:"SumoPad $1"},{regex:"ECOPAD7",model:"ECOPad 7"}]},Philips$1={regex:"Philips|AND1E(?:[);/ ]|$)|NETTV/|PI3210G|TLE(821L|722G)|TPM1[79]1E|70PUH6774_96|QM16[134]E|Xenium S[25]66|S397|W5510",device:"smartphone",models:[{regex:"(?:Philips[_ ])?Xenium[ _](S[25]66|V787)(?:[);/ ]|$)",model:"Xenium $1"},{regex:"(?:Philips[_ ])?(S397|W5510)(?:[);/ ]|$)",model:"$1"},{regex:"AND1E(?: TV)?(?:[);/ ]|$)",model:"Android TV",device:"tv"},{regex:"(PI3210G)",model:"$1",device:"tablet"},{regex:"(TPM1[79]1E)",model:"$1",device:"tv"},{regex:"(QM16[134]E)",model:"$1",device:"tv"},{regex:"(70PUH6774)_96",model:"$1/96 4K UHD",device:"tv"},{regex:"(TLE821L)(?:[);/ ]|$)",model:"$1 4G LTE",device:"tablet"},{regex:"(TLE722G)(?:[);/ ]|$)",model:"$1",device:"tablet"},{regex:"Philips, BDP([0-9]{4})",model:"Blu-ray Player (BDP$1)",device:"tv"},{regex:"Philips, ([a-z0-9-]+)",model:"$1",device:"tv"},{regex:"(NETTV/[0-9\\.]{5})",model:"NetTV Series",device:"tv"},{regex:"Philips-FISIO ([a-z0-9]+)",model:"Fisio $1"},{regex:"Philips[ _-]?([a-z0-9\\-@]+)",model:"$1"}]},INCAR={regex:"(KZCAR)(?:[);/ ]|$)",device:"car browser",model:"$1"},Nabi={regex:"(?:DMTAB-(?:IN08A|NV08B|NV2[04]A)|NBTY07SMKG|NBFP07PMKG|SNB02-NV7A|NABI2-NV7A)(?:[);/ ]|$)",device:"tablet",models:[{regex:"DMTAB-(?:IN08A|NV08B)",model:'Dream Tab HD 8.0"'},{regex:"DMTAB-NV(2[04])A",model:'Big Tab HD $1.0"'},{regex:"NBTY07SMKG",model:'Barbie Tab 7.0"'},{regex:"NBFP07PMKG",model:'Fisher Price Learning Tab 7.0"'},{regex:"SNB02-NV7A",model:"2S Tab"},{regex:"NABI2-NV7A",model:"2 Tab"}]},StrawBerry={regex:"StrawBerry[ _]",device:"smartphone",models:[{regex:"StrawBerry[ _](SX|QX15)(?:[);/ ]|$)",model:"$1"}]},Gresso={regex:"Gresso[ _]",device:"smartphone",models:[{regex:"Gresso[ _]Regal(?:[);/ ]|$)",model:"Regal"}]},Pendoo={regex:"Pendoo|A5X MAX(?:[\\.-]\\w+)?\\.01\\.d4",device:"tv",models:[{regex:"Pendoo ?(T95Z|X10) PLUS",model:"$1 Plus"},{regex:"Pendoo ?X8PRO+",model:"X8 Pro+"},{regex:"Pendoo[ \\.]?(X9[29])",model:"$1"},{regex:"pendoo mini",model:"Mini"},{regex:"A5X MAX(?:[\\.-]\\w+)?\\.01\\.d4",model:"A5X Max"}]},PiPO={regex:"Pipo[_ ]|PipoM9Pro",device:"tablet",models:[{regex:"Pipo[_ ]([TP]9)",model:"$1"},{regex:"PipoM9Pro",model:"M9 Pro"},{regex:"PIPO[_ ](X10|X9S)",device:"tv",model:"$1"}]},Engel={regex:"(EN1007Q)plus(?:[);/ ]|$)",device:"tv",model:"$1 Plus"},Genesis={regex:"(SK-Mtek GT730[15])(?:[);/ ]|$)",device:"tablet",model:"$1"},InfoKit={regex:"(TVB-906X)(?:[);/ ]|$)",device:"tv",model:"$1"},Blloc={regex:"(Zero18)(?:[);/ ]|$)",device:"smartphone",model:"$1"},Huskee={regex:"VULKANO(?:[);/ ]|$)",device:"smartphone",model:"Vulkano"},SOLE={regex:"SOLE[_ ]POP[_ ]S([45]0)(?:[);/ ]|$)",device:"smartphone",model:"Pop S$1"},SOLO={regex:"SOLO[_ ](Aspire(?: M)?)(?:[);/ ]|$)",device:"smartphone",model:"$1"},OINOM={regex:"OINOM[_ ](V9D|V7H|V[679])(?:[);/ ]|$)",device:"smartphone",model:"$1"},Singtech={regex:"Singtech|(?:Sapphire[_ ](?:H50S|H7S?|H90))(?:[);/ ]|$)",device:"smartphone",models:[{regex:"Sapphire[_ ](H50S|H7S?|H90)(?:[);/ ]|$)",model:"Sapphire $1"},{regex:"Singtech[ _](Q2|S1)(?:[);/ ]|$)",model:"$1"}]},Sunny={regex:"(SS4G9 Mira|SS4G7 Sole|SS4G1 Luna|SS4G8 Nora|SS4G6 Lola)(?:[);/ ]|$)",device:"smartphone",model:"$1"},TEENO={regex:"TEENO",device:"smartphone",models:[{regex:"TEENO[_ ](S9|A1|S11)(?:[);/ ]|$)",model:"$1"}]},OASYS={regex:"(TEG9300)(?:[);/ ]|$)",device:"peripheral",model:"$1"},Aspera={regex:"ASPERA|(?:Wren)(?:[);/ ]|$)",device:"smartphone",models:[{regex:"ASPERA[ _](R5h|RT3|A4[02]|A50)(?:[);/ ]|$)",model:"$1"},{regex:"Wren(?:[);/ ]|$)",model:"Wren"}]},NOBUX={regex:"SMART_VOLT_NX5(?:[);/ ]|$)",device:"smartphone",model:"Smart Volt NX5"},Hitech={regex:"(Amaze[ _](?:S2_4G|S[56] 4G|S1|S[56](?: Plus)?))(?:[);/ ]|$)",device:"smartphone",model:"$1"},F150={regex:"Bison2021(?:[);/ ]|$)",device:"smartphone",model:"B2021"},BilimLand={regex:"BilimBook mini(?:[);/ ]|$)",device:"desktop",model:"BilimBook Mini"},Greentel={regex:"X1_Light_Lte(?:[);/ ]|$)",device:"smartphone",models:[{regex:"X1_Light_Lte",model:"X1 Light LTE"}]},Kyowon={regex:"(KA-E410W)(?:[);/ ]|$)",device:"tablet",model:"$1"},GFive={regex:"(?:PRESIDENT_GOLD_(9|10))(?:[);/ ]|$)",device:"smartphone",models:[{regex:"PRESIDENT_GOLD_(9|10)",model:"President Gold $1"}]},KINGZONE={regex:"KINGZONE_",device:"smartphone",models:[{regex:"KINGZONE_(N5)(?:[);/ ]|$)",model:"$1"}]},Fantec={regex:"FAN-M300H(?:[);/ ]|$)",device:"smartphone",model:"M300H"},AURIS={regex:"(TB-703G)(?:[);/ ]|$)",device:"tablet",model:"$1"},YUHO={regex:"YUHO_",device:"smartphone",models:[{regex:"YUHO_(O2|H2|Y[123])_PRO",model:"$1 Pro"},{regex:"YUHO_Vast_Plus",model:"Vast Plus"},{regex:"YUHO_Y1_ACE",model:"Y1 Ace"},{regex:"YUHO_Y1_STAR",model:"Y1 Star"},{regex:"YUHO_O1_LITE",model:"O1 Lite"},{regex:"YUHO_(Vast2?|O[12]|Y2)(?:[);/ ]|$)",model:"$1"}]},require$$0$8={360:{regex:"(?:180[1379]-A01|1713-A01|1707-A01|1509-A00|1603-A03|1607-A01|1503-A01)(?:[);/ ]|$)",device:"smartphone",models:[{regex:"1807-A01(?:[);/ ]|$)",model:"N7"},{regex:"1803-A01(?:[);/ ]|$)",model:"N7 Lite"},{regex:"1809-A01(?:[);/ ]|$)",model:"N7 Pro"},{regex:"1713-A01(?:[);/ ]|$)",model:"N6 Lite"},{regex:"1707-A01(?:[);/ ]|$)",model:"N6"},{regex:"1801-A01(?:[);/ ]|$)",model:"N6 Pro"},{regex:"1509-A00(?:[);/ ]|$)",model:"Q5 Plus"},{regex:"1503-A01(?:[);/ ]|$)",model:"N4"},{regex:"1603-A03(?:[);/ ]|$)",model:"N4A"},{regex:"1607-A01(?:[);/ ]|$)",model:"N5S"}]},8848:{regex:"8848 (M[3-6])(?:[);/ ]|$)",device:"smartphone",model:"$1"},Ace:Ace,"Tunisie Telecom":{regex:"StarTrail TT(?:[);/ ]|$)",device:"smartphone",model:"StarTrail by TT"},SFR:SFR,HTC:HTC,Microsoft:Microsoft$2,Nokia:Nokia,CnM:CnM,RIM:RIM,CHIA:CHIA,Palm:Palm,HP:HP$2,TiPhone:TiPhone,Apple:Apple$1,MicroMax:MicroMax,"3Q":{regex:"AC0731B|AC1024C|AC7803C|BC9710AM|EL72B|LC0720C|LC0723B|LC0725B|LC0804B|LC0808B|LC0809B|LC0810C|LC0816C|LC0901D|LC1016C|MT0724B|MT0729[BD]|MT0811B|OC1020A|RC0709B|RC0710B|RC0718C|RC0719H|RC0721B|RC0722C|RC0726B|RC0734H|RC0743H|RC0817C|RC1018C|RC1019G|RC1025F|RC1301C|RC780[24]F|RC9711B|RC9712C|RC9716B|RC9717B|RC9724C|RC9726C|RC9727F|RC9730C|RC9731C|TS0807B|TS1013B|VM0711A|VM1017A|RC0813C|QS9719D|QS9718C|QS9715F|QS1023H|QS0815C|QS0730C|QS0728C|QS0717D|QS0716D|QS0715C|MT7801C|TS9708B|AC0732C|MT0739D|MT0812E|(?:3Q_)?ER71B",device:"tablet",models:[{regex:"MT0724B|LC0901D|LC0816C|LC0810C|LC0809B|LC0808B|LC0804B|LC0725B|LC0723B",model:"Qoo! P-Pad"},{regex:"VM1017A|TS1013B|TS0807B|RC9731C|RC9730C|RC9727F|RC9726C|RC9724C|RC9717B|RC9716B|RC9712C|RC9711B|RC1301C|RC1025F|RC1019G|RC1018C|RC0817C|RC0813C|RC0743H|RC0734H|RC0726B|RC0722C|RC0721B|RC0719H|RC0718C|RC0710B|RC0709B|QS9715F|QS1023H|QS0815C|QS0730C|QS0728C|QS0717D|QS0716D|QS0715C|MT0811B|MT0739D|MT0729[BD]|LC1016C|LC0720C|BC9710AM|AC1024C|AC0731B",model:"Qoo! Q-Pad"},{regex:"MT7801C|QS9718C|QS9719D|VM0711A|OC1020A",model:"Qoo! Surf"},{regex:"TS9708B",model:"Surf TS1009B"},{regex:"AC7803C|AC0732C",model:"Qoo! Lite"},{regex:"MT0812E|RC7802F",model:"Qoo! Meta"},{regex:"EL72B|(?:3Q_)?ER71B",model:"Qoo! Q-Book"},{regex:"(RC7804F)",model:"Qoo! Glaze"}]},"4Good":{regex:"4Good[ _]|S450m [43]G|S555m 4G|S501m 3G|T700i_3G|People (?:G503|G410|GT300)|Light (?:A103|B100)",device:"smartphone",models:[{regex:"T700i_3G",model:"T700i 3G",device:"tablet"},{regex:"People GT300",model:"People GT300",device:"tablet"},{regex:"S555m[_ ]4G",model:"People"},{regex:"(S(?:450m|501m)[_ ][43]G|Light (?:A103|B100)|People (?:G503|G410))",model:"$1"},{regex:"4Good[ _]([^;/]+) Build",model:"$1"},{regex:"4Good[ _]([^);/ ]+)",model:"$1"}]},Acteck:Acteck,Alba:Alba,AllCall:AllCall,Bravis:Bravis,Acer:Acer$2,Advan:Advan,Advance:Advance,AGM:AGM,Airness:Airness,Aiwa:Aiwa,Akai:Akai,"Arian Space":{regex:"Arian Space",device:"tablet",models:[{regex:"100 ST1004PG",model:"100"},{regex:"80 SS8003PG",model:"80"},{regex:"71 ST7002PG",model:"71"},{regex:"70 ST7001RW",model:"70"}]},Alcatel:Alcatel,Allview:Allview,Allwinner:Allwinner,altron:altron,AMGOO:AMGOO,Amoi:Amoi,Ainol:Ainol,Archos:Archos$1,Axxion:Axxion,MEU:MEU,Arnova:Arnova,ARRIS:ARRIS$1,Ask:Ask,ANS:ANS,AOC:AOC$1,Assistant:Assistant,Ark:Ark,"Garmin-Asus":{regex:"Garmin-Asus|Garminfone",device:"smartphone",models:[{regex:"Garminfone[ \\-_]([^;/]*)Build",model:"Garminfone $1"},{regex:"Garmin-Asus[ \\-_]([^;/]+)Build",model:"$1"},{regex:"Garmin-Asus[ \\-_]([^;/]+)[\\)/]",model:"$1"}]},Asus:Asus$2,Audiovox:Audiovox,AVH:AVH,Avvio:Avvio,"Azumi Mobile":{regex:"Azumi[_ -]|(?:SPEED55|A50_Style_Plus)(?:[);/ ]|$)",device:"smartphone",models:[{regex:"Azumi[_ -]([^/;]+) Build",model:"$1"},{regex:"Azumi[_ -]([a-z0-9_]+)",model:"$1"},{regex:"SPEED55",model:'Speed 5.5"'},{regex:"A50_Style_Plus",model:"A50 Style Plus"}]},"Barnes & Noble":{regex:"Nook|BN[TR]V[0-9]+",device:"tablet",models:[{regex:"Nook([a-z0-9]+)",model:"Nook $1"},{regex:"Nook[ _]([^/;]+)[ _]Build",model:"Nook $1"},{regex:"(BN[TR]V[0-9]+)",model:"Nook $1"}]},BGH:BGH,Bitel:Bitel,Blu:Blu,Bluegood:Bluegood,Blackview:Blackview,Bluboo:Bluboo,"Black Fox":{regex:"BMM[ _-]?(?:44[123]D|441[WB]|44[12]S|431D|533D|54[12]S|541[ABW]|54[123]D|543S|531[ABD]|532 S)(?:[);/ ]|$)",device:"smartphone",models:[{regex:"BMM443D",model:"B7 Fox+"},{regex:"BMM441S",model:"B8 Fox"},{regex:"BMM442S|BMM441B",model:"B8 Fox+"},{regex:"BMM441W",model:"B8M"},{regex:"BMM442D",model:"B7"},{regex:"BMM531D",model:"B6"},{regex:"BMM531A",model:"B5"},{regex:"BMM541A",model:"B5+"},{regex:"BMM543[DS]",model:"B4"},{regex:"BMM441D",model:"B4 Mini"},{regex:"BMM541B",model:"B4 Mini NFC"},{regex:"BMM531B",model:"B4 Mini (2019)"},{regex:"BMM542D",model:"B3+"},{regex:"BMM541D",model:"B3"},{regex:"BMM541W",model:"B7R Fox"},{regex:"BMM 532 S",model:"BMM 532S"},{regex:"BMM[ _-]?(533D|431D|54[12]S)(?:[);/ ]|$)",model:"BMM $1"}]},bogo:bogo,Boway:Boway,Brondi:Brondi,"VGO TEL":{regex:"(?:Venture V(?:[278]|12)|Ocean[_ ][689]|Ocean9L)(?:[);/ ]|$)",device:"smartphone",models:[{regex:"Venture V([278]|12)(?:[);/ ]|$)",model:"Venture V$1"},{regex:"Ocean[_ ]?([689]|9L)(?:[);/ ]|$)",model:"Ocean $1"}]},Vivo:Vivo,Vinsoc:Vinsoc,Bird:Bird,Becker:Becker,Beeline:Beeline,Beetel:Beetel,"BenQ-Siemens":{regex:"BENQ-SIEMENS - ([a-z0-9]+)",device:"feature phone",model:"$1"},BenQ:BenQ,Blaupunkt:Blaupunkt$1,Bmobile:Bmobile,bq:bq,Bush:Bush$1,CAGI:CAGI,Capitel:Capitel,Captiva:Captiva,Casio:Casio,Casper:Casper,Cat:Cat,Carrefour:Carrefour,Celkon:Celkon,Changhong:Changhong$1,"Cherry Mobile":{regex:"Cherry|Superion S1 DTV|Flare([ _])?(2X|4|A[123]|J[123568]|P[13]|S[4-8]|X2|Y[367]|S Play|HD|LITE|XL|X_V2|Y3s|Tab)(?:[ _](?:Pro|Plus|Max|LTE))?|Fusion Bolt|Omega[_ ](?:Icon 2|Icon Lite 2|lite[_ ][43][Cs]?|HD [45]|HD_Duo)|Spin Max 2|Selfie_Two",device:"smartphone",models:[{regex:"(Flare2X)",model:"$1"},{regex:"Flare[_ ]HD[_ ]([345])",model:"Flare HD $1"},{regex:"Flare_HD_MAX",model:"Flare HD Max"},{regex:"FLARE LITE",model:"Flare Lite"},{regex:"Flare S Play",model:"Flare S Play"},{regex:"Flare[_ ]J([26])S",model:"Flare J$1s"},{regex:"Flare_(J2|S7)_Prime",model:"Flare $1 Prime"},{regex:"Flare_S7_Deluxe",model:"Flare S7 Deluxe"},{regex:"Flare_S7_Power",model:"Flare S7 Power"},{regex:"Flare[_ ]Y([367])[_ ]Pro",model:"Flare Y$1 Pro"},{regex:"Flare XL Plus",model:"Flare XL Plus"},{regex:"Flare[ _]X[_ ]V2",model:"Flare X V2"},{regex:"Flare[ _](A2|J3|P1|S[467])[ _]Lite",model:"Flare $1 Lite"},{regex:"Flare[ _](J[12]|S[57]|Y3|J6)[ _]mini",model:"Flare $1 Mini"},{regex:"Flare_J2_2018",model:"Flare J2 (2018)"},{regex:"Flare S4 Max LTE",model:"Flare S4 Max LTE"},{regex:"Flare[_ ](S[47]|J2)[_ ]Max",model:"Flare $1 Max"},{regex:"FlareS5LiteDTV",model:"Flare S5 Lite DTV"},{regex:"Flare[_ ](S[567]|J6)[_ ]Plus",model:"Flare $1 Plus"},{regex:"FLARE S6 POWER",model:"Flare S6 Power"},{regex:"Flare(?:[ _])?(4|A[123]|J8 LTE|J[13568]|P[13]|S[4-8]|X2|Y3s|Y7_LTE|Y[673])",model:"Flare $1"},{regex:"OMEGA HD ([45])",model:"Omega HD $1"},{regex:"Omega_HD_Duo",model:"Omega HD Duo"},{regex:"Omega Icon Lite 2",model:"Omega Icon Lite 2"},{regex:"Omega Icon 2",model:"Omega Icon 2"},{regex:"Omega[_ ]Lite[_ ](3[Cs]|4)",model:"Omega Lite $1"},{regex:"Spin Max 2",model:"Spin Max 2"},{regex:"Selfie_Two",model:"Selfie Two"},{regex:"(Fusion Bolt|Flare Tab Pro|Flare Tab|Superion S1 DTV)",model:"$1",device:"tablet"},{regex:"Cherry(?:[ _]?Mobile)?[ _]?([^/;]+)(?: Build|[);])",model:"$1"}]},"China Mobile":{regex:"(M812C|1501_M02|9930i|A1303|A309W|M651CY) Build",device:"smartphone",models:[{regex:"M651CY",model:"A3"},{regex:"(M812C|1501_M02|9930i|A1303|A309W)",model:"$1"}]},Comio:Comio,Compal:Compal,Artel:Artel,"ComTrade Tesla":{regex:"Tesla|Impulse 7.85 3G|Impulse 10.1 OCTA|Smartphone_6.1|SP(?:6.2|6.2_Lite)|TTL(?:713G|8)",device:"smartphone",models:[{regex:"TeslaEvo5.0",model:"Evo 5.0"},{regex:"(Gravity 9.7 SHD)",model:"$1",device:"tablet"},{regex:"(Impulse 7.85 3G)",model:"$1",device:"tablet"},{regex:"Impulse 10.1 OCTA",model:'Impulse 10.1" OCTA',device:"tablet"},{regex:"Tesla_SP([^/;]+)L Build",model:"Smartphone $1 Lite"},{regex:"Smartphone_6.1",model:"Smartphone 6.1"},{regex:"SP6.2_Lite",model:"Smartphone 6.2 Lite"},{regex:"Tesla_SP([^/;]+) Build",model:"Smartphone $1"},{regex:"SP([^/;]+) Build",model:"Smartphone $1"},{regex:"Smartphone ([36])",model:"Smartphone $1"},{regex:"Tesla_Tablet_785",model:'7.85"',device:"tablet"},{regex:"TTH7",model:"H7",device:"tablet"},{regex:"TTL7 Build",model:"L7",device:"tablet"},{regex:"Tesla_Tablet_L7_3G",model:"L7 3G",device:"tablet"},{regex:"(L7.1)",model:"$1",device:"tablet"},{regex:"TTL713G",model:"L7.1 3G",device:"tablet"},{regex:"(L7 Quad) Build",model:"$1",device:"tablet"},{regex:"(L7 Quad Lite)",model:"$1",device:"tablet"},{regex:"TTL8 Build",model:"L8",device:"tablet"},{regex:"(L8.1)",model:"$1",device:"tablet"},{regex:"TESLA_TABLET_M7",model:"M7",device:"tablet"},{regex:"Tesla_Tablet_M8",model:"M8",device:"tablet"}]},ConCorde:ConCorde,Condor:Condor,Coolpad:Coolpad,Clarmin:Clarmin,CORN:CORN,Cosmote:Cosmote,Cricket:Cricket,"Crius Mea":{regex:"(Q7A\\+?)(?:[);/ ]|$)",device:"tablet",model:"$1"},Crosscall:Crosscall,AllDocube:AllDocube,Cube:Cube,CUBOT:CUBOT,Clout:Clout,Concord:Concord,Crescent:Crescent,Cyrus:Cyrus,Datang:Datang,Datsun:Datsun,Danew:Danew,Denver:Denver,Dell:Dell$2,Desay:Desay,DEXP:DEXP,Dbtel:Dbtel,Dialog:Dialog,Dicam:Dicam,Digi:Digi,Digicel:Digicel,Digiland:Digiland,Digma:Digma,DoCoMo:DoCoMo,Doogee:Doogee,Doov:Doov,Dopod:Dopod,Doro:Doro,"Dune HD":{regex:"DuneHD|SOLO 4K(?:[);/ ]|$)",device:"tv",models:[{regex:"SOLO 4K(?:[);/ ]|$)",model:"Solo 4k"},{regex:"DuneHD/\\d.\\d \\([a-z]+__([a-z0-9_-]+);",model:"$1"},{regex:"DuneHD/\\d.\\d \\(([a-z0-9_-]+);",model:"$1"}]},DNS:DNS,"E-Boda":{regex:"E-Boda|Eclipse_(?:G400M|G500)",device:"smartphone",models:[{regex:"E-Boda ((?:Revo|Izzycomm|Essential|Intelligence|Supreme)[^/;]+) Build",device:"tablet",model:"$1"},{regex:"Eclipse_(G400M|G500)",model:"Eclipse $1"},{regex:"E-Boda ([^/;]+) Build",model:"$1"}]},Easypix:Easypix,EBEST:EBEST,"Echo Mobiles":{regex:"ECHO[ _](HOLI|HORIZON|MAX|MOSS|NOTE|POWER|SMART|DUNE|JAVA|FUSION)|HORIZON_M|Stellar 3G|FEELING",device:"smartphone",models:[{regex:"ECHO_HORIZON_LITE",model:"HORIZON Lite"},{regex:"(HORIZON_M|FEELING)(?:[);/ ]|$)",model:"$1"},{regex:"STELLAR 3G",model:"STELLAR 3G"},{regex:"ECHO_SMART_4G",model:"SMART 4G"},{regex:"ECHO[ _](HOLI|MAX|MOSS|NOTE|POWER|SMART|DUNE|JAVA|FUSION)",model:"$1"}]},ECS:ECS,EE:EE,EKT:EKT,"Eks Mobility":{regex:"S5LS|X4UPlus",device:"smartphone",models:[{regex:"S5LS",model:"S5LS"},{regex:"X4UPlus",model:"X4U Plus"}]},Elephone:Elephone,Element:Element,Elenberg:Elenberg,Ericy:Ericy,Essential:Essential,"E-tel":{regex:"E-tel_i250",device:"smartphone",models:[{regex:"E-tel[_ ]i250",model:"i250"}]},Evercoss:Evercoss,Eurostar:Eurostar,Eton:Eton,Essentielb:Essentielb$1,Facebook:Facebook,Rikomagic:Rikomagic,Rinno:Rinno,Riviera:Riviera,Senseit:Senseit,Sony:Sony$3,Ergo:Ergo,Ericsson:Ericsson,Energizer:Energizer,"Energy Sistem":{regex:"ENERGY[ _-]?([^;/]+) Build|Energy Phone Pro 3",device:"smartphone",models:[{regex:"Energy Phone Pro 3",model:"Energy Phone Pro 3"},{regex:"ENERGY[ _-]?([^;/]+) Build",device:"tablet",model:"$1"}]},eTouch:eTouch,Etuline:Etuline,Storex:Storex,Evertek:Evertek,Evolio:Evolio,Evolveo:Evolveo,Explay:Explay,EvroMedia:EvroMedia,EKO:EKO,Extrem:Extrem,Ezze:Ezze,Ezio:Ezio,Forstar:Forstar,Foxconn:Foxconn,Fondi:Fondi,Fairphone:Fairphone,Famoco:Famoco,FiGO:FiGO,FNB:FNB,Fujitsu:Fujitsu$1,"G-TiDE":{regex:"G-TiDE",device:"smartphone",models:[{regex:"Shining7",model:"Shining 7"},{regex:"G-TiDE_(A1|S[34])",model:"$1"},{regex:"G-TiDE V6",model:"V6"},{regex:"E(57|60|66|72|77)",model:"$1"}]},Gemini:Gemini,"General Mobile":{regex:"GM 5 Plus|GM8 go|GM [68] d|GM 8|General Mobile 4G|GM 9 (?:Pro|Plus)|e-tab 20(?:[);/ ]|$)",device:"smartphone",models:[{regex:"GM 5 Plus",model:"GM 5 Plus"},{regex:"GM ([68]) d",model:"GM $1D"},{regex:"GM 8",model:"GM 8"},{regex:"GM8 go",model:"GM 8 Go"},{regex:"GM 9 Pro",model:"GM 9 Pro"},{regex:"GM 9 Plus",model:"GM 9 Plus"},{regex:"General Mobile 4G Dual",model:"4G Dual"},{regex:"General Mobile 4G",model:"4G"},{regex:"e-tab 20(?:[);/ ]|$)",device:"tablet",model:"E-Tab 20"}]},Geotel:Geotel,Ghia:Ghia,Gigabyte:Gigabyte,Gigaset:Gigaset,Ginzzu:Ginzzu,Gionee:Gionee,Grape:Grape,Vizio:Vizio,GOCLEVER:GOCLEVER,GoMobile:GoMobile,"Gol Mobile":{regex:"F10_PRIME",device:"smartphone",models:[{regex:"F10_PRIME",model:"F10 Prime"}]},Goly:Goly,Google:Google,Gradiente:Gradiente,Grundig:Grundig$1,Hafury:Hafury,Haier:Haier$1,HannSpree:HannSpree,Hasee:Hasee,Hisense:Hisense$1,"Hi-Level":{regex:"HLV-T([a-z0-9]+)",device:"tablet",model:"HLV-T$1"},Hoffmann:Hoffmann,Homtom:Homtom,Hosin:Hosin,Hoozo:Hoozo,Minix:Minix,Huawei:Huawei,Hyundai:Hyundai$1,"i-Joy":{regex:"i-Joy|i-Call|(?:Neon[79]|Sygnus|Deox|Elektra (?:M|L|XL|XXL))(?:[);/ ]|$)",device:"smartphone",models:[{regex:"Elektra M(?:[);/ ]|$)",model:"Elektra M"},{regex:"Elektra L(?:[);/ ]|$)",model:"Elektra L"},{regex:"Elektra XL(?:[);/ ]|$)",model:"Elektra XL"},{regex:"Elektra XXL(?:[);/ ]|$)",model:"Elektra XXL",device:"phablet"},{regex:"Neon([79])(?:[);/ ]|$)",model:"Neon $1",device:"tablet"},{regex:"Sygnus(?:[);/ ]|$)",model:"Sygnus",device:"tablet"},{regex:"Deox(?:[);/ ]|$)",model:"Deox",device:"tablet"},{regex:"i-Call ([^;/]+) Build",model:"i-Call $1"},{regex:"i-Joy ([^;/]+) Build",model:"$1"}]},iBall:iBall,iRola:iRola,iRulu:iRulu,Irbis:Irbis,iBerry:iBerry,iHunt:iHunt,IconBIT:IconBIT,LYF:LYF,Lumus:Lumus,M4tel:M4tel,"IMO Mobile":{regex:"IMO[ _]\\w",device:"smartphone",models:[{regex:"IMO[ _]Q([23]) Plus(?:[);/ ]|$)",model:"Q$1 Plus"},{regex:"IMO[ _]Q2(?:[);/ ]|$)",model:"Q2"},{regex:"IMO[ _]S2(?:[);/ ]|$)",model:"S2"},{regex:"IMO[ _]FEEL A2(?:[);/ ]|$)",model:"Feel A2"},{regex:"IMO[ _]S50(?:[);/ ]|$)",model:"S50 Light"},{regex:"IMO[ _]S80(?:[);/ ]|$)",model:"S80 Hero"},{regex:"IMO[ _]S89(?:[);/ ]|$)",model:"S89 Miracle"},{regex:"IMO[ _]S88(?:[);/ ]|$)",model:"S88 Discovery"},{regex:"IMO[ _]S99(?:[);/ ]|$)",model:"S99 Ocean"},{regex:"IMO[ _]S98(?:[);/ ]|$)",model:"S98 Champion"},{regex:"IMO[ _]S87(?:[);/ ]|$)",model:"S87 Raptor"},{regex:"IMO[ _]S67(?:[);/ ]|$)",model:"S67 Blast"},{regex:"IMO[ _]S78(?:[);/ ]|$)",model:"S78 Glory"},{regex:"IMO[ _]Q8(?:[);/ ]|$)",model:"Q8 Clarity"},{regex:"IMO[ _]Discovery II(?:[);/ ]|$)",model:"Discovery II"},{regex:"IMO[ _]Q(?:[);/ ]|$)",model:"Q"},{regex:"IMO[ _](Y5|Z[67])(?:[);/ ]|$)",model:"Tab $1",device:"tablet"},{regex:"IMO TAB X9(?:[);/ ]|$)",model:"Tab X9",device:"tablet"}]},iLA:iLA,iNew:iNew,iPro:iPro,Infinix:Infinix,InFocus:InFocus,InnJoo:InnJoo,Inkti:Inkti,Innos:Innos,Innostream:Innostream,Insignia:Insignia,INQ:INQ,Intex:Intex,"i-mate":{regex:"i-mate ([a-z0-9]+)",device:"feature phone",model:"$1"},"i-mobile":{regex:"i-mobile ?[a-z0-9]+|i-Style|IQ ?(9\\.1|5\\.5|5\\.6A?)",device:"feature phone",models:[{regex:"i-mobile (i-note[^/;]*) Build",model:"$1",device:"tablet"},{regex:"i-Style ?([^;/]+) Build",model:"i-Style $1",device:"smartphone"},{regex:"IQ ?(9\\.1|5\\.5|5\\.6A?)",model:"IQ $1",device:"smartphone"},{regex:"i-mobile (IQ[^/;]*) Build",model:"$1",device:"smartphone"},{regex:"i-mobile(?: )?([a-z0-9\\- ]+) Build",model:"$1"},{regex:"i-mobile(?: )?([a-z0-9]+)",model:"$1"}]},iKoMo:iKoMo,iOcean:iOcean,iView:iView,Impression:Impression,iLife:iLife,iTel:iTel,iZotron:iZotron,"JAY-Tech":{regex:"TPC-[A-Z0-9]+|TPCY-TX[TE][^);/ ]+",device:"tablet",models:[{regex:"TPC-([A-Z0-9]+)",model:"Tablet PC $1"},{regex:"(TPCY-TX[TE][^);/ ]+)",model:"$1"}]},Jiayu:Jiayu,Jolla:Jolla,Just5:Just5,Kalley:Kalley$1,Kaan:Kaan,Kazam:Kazam,Keneksi:Keneksi,"Kempler & Strauss":{regex:"Alumini_?3_?Plus|Alumini ?[23]|KEMPLER_(?:P1|TV|X|8_PLUS)",device:"smartphone",models:[{regex:"Alumini ?2",model:"Alumini 2"},{regex:"Alumini_?3_?Plus",model:"Alumini 3 Plus"},{regex:"Alumini3",model:"Alumini 3"},{regex:"KEMPLER_P1",model:"P1"},{regex:"KEMPLER_TV",model:"TV"},{regex:"KEMPLER_X",model:"X"},{regex:"KEMPLER_8_PLUS",model:"8 Plus"}]},Kiano:Kiano,Kingsun:Kingsun,Kocaso:Kocaso,Kogan:Kogan,Komu:Komu,Koobee:Koobee,Kumai:Kumai,"KT-Tech":{regex:"(KM-[a-z0-9]+|EV-[a-z0-9]+)(?:[);/ ]|$)",device:"smartphone",model:"$1"},KDDI:KDDI,Kodak:Kodak,KOPO:KOPO,Koridy:Koridy,KRONO:KRONO,"K-Touch":{regex:"K-?Touch[ _][a-z0-9]+",device:"smartphone",models:[{regex:"K-?Touch[ _]([^/;]*)[ _]Build",model:"$1"},{regex:"K-?Touch[ _]([a-z0-9]+)",model:"$1"}]},Diva:Diva,Kyocera:Kyocera,"Krüger&Matz":{regex:"Kruger[ _&]Matz|KrugerMatz[ _]|FLOW ?5PLUS|FLOW_5|FLOW7|FLOW6(?:S|Lite)|DRIVE[_ ]6S?|MOVE8mini|MOVE_|LIVE_6plus|LIVE 5 PLUS|LIVE4_KM043[89]|LIVE 7S|KM(?:106[67]|1065G|0701_1|0702|0805_1)",device:"smartphone",models:[{regex:"MOVE8mini",model:"MOVE 8 Mini"},{regex:"MOVE_6_mini",model:"MOVE 6 Mini"},{regex:"MOVE[_ ]([78]|6S)",model:"MOVE $1"},{regex:"DRIVE 4 mini LTE",model:"DRIVE 4 mini LTE"},{regex:"DRIVE[ _]([456][S]?)(?:[);/ ]|$)",model:"DRIVE $1"},{regex:"FLOW ?5PLUS(?:[);/ ]|$)",model:"FLOW 5 Plus"},{regex:"FLOW6Lite(?:[);/ ]|$)",model:"FLOW 6 Lite"},{regex:"FLOW[ _]?([4-7][S]?)(?:[);/ ]|$)",model:"FLOW $1"},{regex:"LIVE4_(KM043[89])(?:[);/ ]|$)",model:"LIVE 4 $1"},{regex:"KrugerMatz_LIVE4(?:[);/ ]|$)",model:"LIVE 4"},{regex:"_LIVE5_(KM0450)(?:[);/ ]|$)",model:"LIVE 5 $1"},{regex:"LIVE 5 PLUS(?:[);/ ]|$)",model:"LIVE 5 Plus"},{regex:"LIVE_6plus(?:[);/ ]|$)",model:"LIVE 6 Plus"},{regex:"LIVE 7S(?:[);/ ]|$)",model:"LIVE 7S"},{regex:"KM(106[67])(?:[);/ ]|$)",device:"tablet",model:'EAGLE $1 10.1"'},{regex:"KM(1065G)(?:[);/ ]|$)",device:"tablet",model:'EAGLE $1 10.1"'},{regex:"KM0(701)_1(?:[);/ ]|$)",device:"tablet",model:'EAGLE $1 7.1"'},{regex:"KM0(805)_1(?:[);/ ]|$)",device:"tablet",model:'EAGLE $1 8.0"'},{regex:"KM0(702)(?:[);/ ]|$)",device:"tablet",model:'EAGLE $1 7.0"'}]},LAIQ:LAIQ,AIS:AIS,Lava:Lava,SKG:SKG,Landvo:Landvo,"Land Rover":{regex:"Land[ ]?Rover[d]?[ _-](?:X1[0-9]|Explore|T878|L15\\+|V18|V[168]|X)(?:[);/ ]|$)|Polar3",device:"smartphone",models:[{regex:"Land[ ]?Rover[d]?[ _-](X1[0-9]|Explore|T878|L15\\+|V18|V[168]|X)(?:[);/ ]|$)",model:"$1"},{regex:"Polar3",model:"Ioutdoor Polar 3"}]},Lanix:Lanix,Lark:Lark,LCT:LCT,"Le Pan":{regex:"Le ?Pan|TC970 ([^;/]+)Build",device:"tablet",models:[{regex:"TC802A",model:"Le Pan Mini"},{regex:"TC970 ([^;/]+)Build",model:"TC970 $1"},{regex:"Le ?Pan ?(II|S)(?:[);/ ]|$)",model:"Le Pan $1"},{regex:"Le ?Pan ?([^;/]+) Build",model:"$1"}]},Leagoo:Leagoo,Ledstar:Ledstar,LeEco:LeEco,Leotec:Leotec,Lephone:Lephone,Lenco:Lenco,Lenovo:Lenovo$2,Lexand:Lexand,Lexibook:Lexibook,LG:LG$1,Lingwin:Lingwin,Logicom:Logicom,Konka:Konka,Konrow:Konrow,Karbonn:Karbonn,Sagem:Sagem,"Coby Kyros":{regex:"(MID(?:1024|1125|1126|1045|1048|1060|1065|4331|7012|7015A?|7016|7022|7032|7035|7036|7042|7047|7048|7052|7065|7120|8024|8042|8048|8065|8125|8127|8128|9724|9740|9742))(?:[);/ ]|$)",device:"tablet",model:"$1"},Mpman:Mpman,Majestic:Majestic,"Manta Multimedia":{regex:"MSP950(1[245]|2[01])|MSP96017|((?<!/)MID713|MID(?:06[SN]|08[S]?|12|13|14|15|701|702|703|704|705(?:DC)?|706[AS]?|707|708|709|711|712|714|717|781|801|802|901|1001|1002|1003|1004(?: 3G)?|1005|1009|1010|7802|9701|9702))(?:[);/ ]|$)",device:"smartphone",models:[{regex:"((?<!/)MID713|MID(?:06[SN]|08[S]?|12|13|14|15|701|702|703|704|705(?:DC)?|706[AS]?|707|708|709|711|712|714|717|781|801|802|901|1001|1002|1003|1004(?: 3G)?|1005|1009|1010|7802|9701|9702))(?:[);/ ]|$)",device:"tablet",model:"$1"},{regex:"MSP95012",model:"Titano 1"},{regex:"MSP95014",model:"Titano 3"},{regex:"MSP95015",model:"Mezo 2"},{regex:"MSP95020",model:"Rocky 2"},{regex:"MSP95021",model:"Rocky 3 Pro"},{regex:"MSP96017",model:"Forto 2"}]},Masstel:Masstel,Maxwest:Maxwest,"True Slim":{regex:"(SSB-508[ED])(?:[);/ ]|$)",device:"smartphone",model:"$1"},"Maze Speed":{regex:"(SSB-(?:500|508)|SSB408D|SSB504R)(?:[);/ ]|$)",device:"smartphone",models:[{regex:"SSB-?(500|508|408D|504R)(?:[);/ ]|$)",model:"SSB-$1"}]},Maze:Maze,Mediacom:Mediacom,Medion:Medion$2,MEEG:MEEG,Fourel:Fourel,Meizu:Meizu,Meitu:Meitu,Memup:Memup,Mecer:Mecer,Mio:Mio,Miray:Miray$1,Mitsubishi:Mitsubishi,MIXC:MIXC,Mobiola:Mobiola,Mobicel:Mobicel,Mobiistar:Mobiistar,MSI:MSI$1,MLLED:MLLED,Mobistel:Mobistel,Mecool:Mecool,Modecom:Modecom,Mofut:Mofut,BrightSign:BrightSign,Motorola:Motorola,Movic:Movic,MTN:MTN,MyTab:MyTab,MyPhone:MyPhone,MyWigo:MyWigo,Myros:Myros,Myria:Myria,"M.T.T.":{regex:"M.T.T.",device:"smartphone",models:[{regex:"M.T.T. ?Tablet([^;/]+)? Build",device:"tablet",model:"Tablet$1"},{regex:"M.T.T. ?([^;/]+) Build",model:"$1"}]},Navon:Navon,NOA:NOA,Nobby:Nobby,NEC:NEC,Neffos:Neffos,Nextbit:Nextbit,Newgen:Newgen,Netgear:Netgear,NeuImage:NeuImage,NextBook:NextBook,NGM:NGM,Nexian:Nexian,Noain:Noain,Noblex:Noblex,Nomu:Nomu,Nomi:Nomi,"NUU Mobile":{regex:"NUU_|(?:(?:N(5702|5001)L|S6001L)|A6L-[CG])(?:[);/ ]|$)",device:"smartphone",models:[{regex:"NUU_A([13])",model:"A$1"},{regex:"NUU_M([32])(?:[);/ ]|$)",model:"M$1"},{regex:"NUU_X5(?:[);/ ]|$)",model:"X5"},{regex:"S6001L",model:"G2"},{regex:"N5702L",model:"G3"},{regex:"(N5001L|A6L-[CG])(?:[);/ ]|$)",model:"$1"}]},"NYX Mobile":{regex:"NYX[ _]",device:"smartphone",models:[{regex:"NYX_A1",model:"A1"},{regex:"NYX_Blink",model:"Blink"},{regex:"NYX_EGO",model:"Ego"},{regex:"NYX_FENIX",model:"Fenix"},{regex:"NYX_FLY_II",model:"Fly II"},{regex:"NYX_FLY_MINI",model:"Fly Mini"},{regex:"NYX_FLY",model:"Fly"},{regex:"NYX_HIT",model:"Hit"},{regex:"NYX_JAK",model:"Jak"},{regex:"NYX_JOIN",model:"Join"},{regex:"NYX_NOBA_II",model:"Noba II"},{regex:"NYX_NOBA",model:"Noba"},{regex:"NYX_ORBIS",model:"Orbis"},{regex:"NYX[ _]REX",model:"Rex"},{regex:"NYX_SHADE",model:"Shade"},{regex:"NYX_SKY",model:"Sky"},{regex:"NYX_SPARK",model:"Spark"},{regex:"NYX_VOX",model:"Vox"},{regex:"NYX_ZEUZ_HD",model:"Zeus HD"}]},Nous:Nous,Nvidia:Nvidia,"O+":{regex:"O\\+[ _](Air|Crunch|Ultra|Upsized|Venti|360 ALPHA PLUS 2.0)",device:"smartphone",models:[{regex:"O\\+[ _](Crunch|Ultra 2.0|Ultra|Upsized|Venti 4G)",model:"$1"},{regex:"O\\+_AIR",model:"Air"},{regex:"O\\+ 360 ALPHA PLUS 2.0",model:"360 Alpha Plus 2.0"}]},O2:O2,Odys:Odys,Obi:Obi,Okapia:Okapia,Onda:Onda,OnePlus:OnePlus,Realme:Realme,OPPO:OPPO,Opsson:Opsson,Orange:Orange,Oukitel:Oukitel,OKWU:OKWU,Ouki:Ouki,Overmax:Overmax,Oysters:Oysters,"öwn":{regex:"OWN[ _]|(?:S4035[ _][34]G|Smart8|SMART PLUS LTE)(?:[);/ ]|$)",device:"smartphone",models:[{regex:"FUN ([67])",model:"Fun $1"},{regex:"FUN 5\\(4G\\)",model:"Fun 5 4G"},{regex:"(?:OWN[ _])?(S3000D|S3010|S3020D|S4010|S4025|S4035[ _][34]G)",model:"$1"},{regex:"One Plus",model:"One Plus"},{regex:"One",model:"One"},{regex:"SMART 9",model:"Smart 9"},{regex:"Smart8(?:[);/ ]|$)",model:"Smart 8"},{regex:"SMART PLUS LTE(?:[);/ ]|$)",model:"Smart Plus LTE"}]},Panacom:Panacom,Panasonic:Panasonic$2,PCBOX:PCBOX,PCD:PCD,"PCD Argentina":{regex:"PCD[ ]?50[689]",device:"smartphone",models:[{regex:"PCD[ ]?(50[689])",model:"$1"}]},ArmPhone:ArmPhone,Pentagram:Pentagram,TCL:TCL$1,JVC:JVC$1,phoneOne:phoneOne,Primepad:Primepad,Pioneer:Pioneer,Pixus:Pixus,PULID:PULID,"Point of View":{regex:"POV_TV|POV_TAB|MOB-5045",device:"tablet",models:[{regex:"POV_TV-HDMI-KB-01",model:"HDMI Smart TV Dongle",device:"tv"},{regex:"POV_TV-HDMI-200BT",model:"Mini PC HDMI Dongle",device:"tv"},{regex:"MOB-5045",model:"Mobii Phone 5045",device:"smartphone"},{regex:"POV_TAB-P506",model:"ONYX 506 Navi"},{regex:"POV_TAB[_-]NAVI7[_-]3G[_-]M",model:"ONYX 507 Navi"},{regex:"POV_TAB-P527S",model:"ONYX 527S"},{regex:"POV_TAB-P547",model:"ONYX 547 Navi"},{regex:"POV_TAB-PROTAB26",model:"ProTab 26 XXL IPS"},{regex:"POV_TAB-PROTAB25XXL8?",model:"ProTab 25XXL"},{regex:"POV_TAB-PL1015",model:"Mobii 1015"},{regex:"POV_TAB-PROTAB([a-z0-9]+)",model:"ProTab $1"},{regex:"POV_TAB-P?([a-z0-9]+)",model:"Mobii $1"}]},Pomp:Pomp,PPTV:PPTV,ProScan:ProScan,"RCA Tablets":{regex:"RCT([^;/]+) Build|RCA RLTP4028|RCT6513W87|RCT6973W43(?:MD)?|RCT6703W12|RCT(?:6A06P22|6603W47M7|6303W87(?:DK|M)|6773W22B|6203W46L|6873W42M|6K03W13)",device:"smartphone",models:[{regex:"RCA RLTP4028",model:"RLTP4028"},{regex:"RCT6513W87",device:"tablet",model:'Galileo Pro 11.5"'},{regex:"RCT6873W42M",device:"tablet",model:'Voyager 7.0"'},{regex:"RCT6973W43(?:MD)?",device:"tablet",model:'Voyager III 7.0"'},{regex:"RCT6773W22B",device:"tablet",model:'Voyager II 7.0"'},{regex:"RCT6703W12",device:"tablet",model:'Atlas 10.0"'},{regex:"RCT6203W46L",device:"tablet",model:"Pro 10 Edition II"},{regex:"RCT6A06P22",device:"tablet",model:'Endeavor 10.0" HD'},{regex:"RCT(?:6303W87(?:DK|M)|6K03W13)",device:"tablet",model:'Viking Pro 10.0"'},{regex:"RCT6603W47M7",device:"tablet",model:'Viking II 10.0"'},{regex:"RCT([^;/)]+)(?: Build|[;)])",device:"tablet",model:"RCT$1"}]},Readboy:Readboy,Roku:Roku,Rokit:Rokit,Rombica:Rombica,Rover:Rover,RoverPad:RoverPad,Roadrover:Roadrover,"RT Project":{regex:"Shock 5",device:"smartphone",models:[{regex:"Shock 5",model:"Shock 5"}]},"S-TELL":{regex:"S-TELL",device:"smartphone",models:[{regex:"(?:S-TELL[ _])?M4(61|77|80)",model:"M4$1"}]},Safaricom:Safaricom,Santin:Santin,Siemens:Siemens,Soundmax:Soundmax,Samsung:Samsung$3,Sanei:Sanei,Selfix:Selfix,Sencor:Sencor,Senwa:Senwa,Sky:Sky,Skyworth:Skyworth$1,Smartfren:Smartfren,Smartisan:Smartisan,"STF Mobile":{regex:"(?:Fractal|AERIAL PLUS|Origins Pro|BLOCK_MINI|BLOCK GO|BLOCK 3|SLAY II)(?:[);/ ]|$)",device:"smartphone",models:[{regex:"Fractal",model:"Fractal"},{regex:"Origins Pro",model:"Origins Pro"},{regex:"AERIAL PLUS",model:"Aerial Plus"},{regex:"BLOCK_MINI",model:"Block Mini"},{regex:"BLOCK 3 mini",model:"Block 3 Mini"},{regex:"BLOCK 3",model:"Block 3"},{regex:"BLOCK GO",model:"Block Go"},{regex:"SLAY II",model:"Slay II"}]},STK:STK,Stonex:Stonex,SuperSonic:SuperSonic,Supra:Supra,Sumvision:Sumvision,SunVan:SunVan,SWISSMOBILITY:SWISSMOBILITY,Thomson:Thomson$2,Tanix:Tanix,Pantech:Pantech,Ployer:Ployer,Plum:Plum,Polaroid:Polaroid$1,PolyPad:PolyPad,Polytron:Polytron,Positivo:Positivo,Prestigio:Prestigio,Sanyo:Sanyo,Qilive:Qilive$1,QMobile:QMobile,Maximus:Maximus,Quantum:Quantum,Quechua:Quechua,Ramos:Ramos,Razer:Razer,Sendo:Sendo,"Turbo-X":{regex:"Turbo-X|Hive V 3G|Turbox_S3",device:"smartphone",models:[{regex:"Turbox_S3",model:"S3"},{regex:"Turbo-X_A2(?:[);/ ]|$)",model:"A2"},{regex:"Turbo-X_e3(?:[);/ ]|$)",model:"E3"},{regex:"Turbo-X Ice(?:[);/ ]|$)",device:"tablet",model:"Ice"},{regex:"Hive V 3G(?:[);/ ]|$)",device:"tablet",model:"Hive V 3G"},{regex:"Turbo-X Tablet([^;/]+) Build",device:"tablet",model:"Tablet$1"},{regex:"Turbo-X ([^;/]+) Build",model:"$1"}]},Turbo:Turbo,"Silent Circle":{regex:"Blackphone 2",device:"smartphone",model:"Blackphone 2"},Sigma:Sigma,Spice:Spice,Sharp:Sharp$1,Simply:Simply,Softbank:Softbank,Sonim:Sonim,Star:Star,Starmobile:Starmobile,Amazon:Amazon,Symphony:Symphony,Helio:Helio,Syrox:Syrox,Qtek:Qtek,"Q-Touch":{regex:"( Q09|QS701|Q05A)(?:[);/ ]|$)",device:"smartphone",model:"$1"},"G-Touch":{regex:"GTouch[_ ]|(?:Stella (?:XS?|Omega))(?:[);/ ]|$)",device:"smartphone",models:[{regex:"Stella (XS?|Omega)",model:"Stella $1"},{regex:"GTouch[_ ]STELLA",model:"Stella"}]},"T-Mobile":{regex:"T-Mobile[ _][a-z0-9 ]+|(?:REVVLRY|REVVL 2(?: PLUS)?|5062[ZW]|5007[ZW])(?:[);/ ]|$)",device:"smartphone",models:[{regex:"5062[ZW]",model:"REVVL 4 Plus"},{regex:"5007[ZW]",model:"REVVL 4"},{regex:"REVVL 2 PLUS",model:"REVVL 2 Plus"},{regex:"REVVLRY",model:"REVVL Plus"},{regex:"REVVL 2(?:[);/ ]|$)",model:"REVVL 2"},{regex:"T-Mobile[ _]([a-z0-9_ ]+) Build",model:"$1"},{regex:"T-Mobile[ _]([a-z0-9_ ]+)",model:"$1"}]},"TB Touch":{regex:"Ignis [89]",device:"tablet",models:[{regex:"Ignis ([89])",model:"Ignis $1"}]},Teclast:Teclast,"Tecno Mobile":{regex:"Tecno|Phantom6|Phantom6-Plus|DP7C Pro-SGA1",device:"smartphone",models:[{regex:"Phantom6-Plus",model:"Phantom 6 Plus"},{regex:"Phantom6",model:"Phantom 6"},{regex:"TECNO-W3",model:"W3"},{regex:"TECNO[ _]F4 Pro(?:[);/ ]|$)",model:"F4 Pro"},{regex:"TECNO[ _]KE5j(?:[);/ ]|$)",model:"Spark 6 Go"},{regex:"TECNO[ _]ID6(?:[);/ ]|$)",model:"Camon iClick 2"},{regex:"Tecno[ _]7C(?:[);/ ]|$)",model:"DroidPad 7C",device:"tablet"},{regex:"DP7C Pro-SGA1(?:[);/ ]|$)",model:"DroidPad 7C Pro",device:"tablet"},{regex:"TECNO[ _]DP10A Pro(?:[);/ ]|$)",model:"DroidPad 10A Pro",device:"tablet"},{regex:"TECNO[ _]P904(?:[);/ ]|$)",model:"DroidPad 10D 4G",device:"tablet"},{regex:"Tecno[ _]CB7[j]?",model:"Camon i4"},{regex:"Tecno[ _]CF7(?:[);/ ]|$)",model:"Camon 11"},{regex:"Tecno[ _]CC6(?:[);/ ]|$)",model:"Camon 12 Air"},{regex:"Tecno[ _]CC7(?:[);/ ]|$)",model:"Camon 12"},{regex:"Tecno[ _]KC8(?:[);/ ]|$)",model:"Spark 4"},{regex:"Tecno[ _]BB4k(?:[);/ ]|$)",model:"Spark 4 Lite"},{regex:"Tecno[ _]KD7(?:[);/ ]|$)",model:"Spark 5 Pro"},{regex:"Tecno[ _]DP8D(?:[);/ ]|$)",model:"DroidPad 8D",device:"tablet"},{regex:"Tecno[ _]LB8",model:"Pouvoir 3 Plus"},{regex:"TECNO S9",device:"phablet",model:"S9"},{regex:"Tecno ([^;/]+) Build",model:"$1"},{regex:"Tecno[ _]?([a-z0-9_\\-]+)",model:"$1"}]},TechPad:TechPad,Tesco:Tesco,teXet:teXet,Telefunken:Telefunken$1,Telego:Telego,Telenor:Telenor,Telit:Telit,ThL:ThL,TIANYU:TIANYU,Timovi:Timovi,Tooky:Tooky,Tolino:Tolino,"Top House":{regex:"Coto[_ ]|X1013",device:"smartphone",models:[{regex:"Coto W418",model:"Coto W418"},{regex:"COTO_T117",model:"Coto T117",device:"tablet"},{regex:"X1013",model:"X1013",device:"tablet"},{regex:"COTO_T40017",model:"T40017"}]},Toplux:Toplux,Touchmate:Touchmate,TrekStor:TrekStor,Trevi:Trevi,TVC:TVC,"U.S. Cellular":{regex:"USCC-",device:"smartphone",models:[{regex:"USCC-E6762",model:"Kyocera DuraForce"},{regex:"(USCC-[a-z0-9_\\-]+)",model:"$1"}]},Uhappy:Uhappy,Unimax:Unimax,Unowhy:Unowhy,UTStarcom:UTStarcom,Ulefone:Ulefone,UMIDIGI:UMIDIGI,Uniscope:Uniscope,Unnecto:Unnecto,Unonu:Unonu,UTOK:UTOK,Vastking:Vastking,ViewSonic:ViewSonic,Vitelcom:Vitelcom,Fengxiang:Fengxiang,"VK Mobile":{regex:"VK-VK([79]00)(?:[);/ ]|$)",device:"feature phone",model:"VK$1"},Vernee:Vernee,Vertu:Vertu,Venso:Venso,Verizon:Verizon,Verykool:Verykool,Vestel:Vestel$1,Videocon:Videocon,Vodafone:Vodafone,Vonino:Vonino,Vorago:Vorago,Voto:Voto,Voxtel:Voxtel,Vulcan:Vulcan,Walton:Walton,WellcoM:WellcoM,Wexler:Wexler,Inco:Inco,Wink:Wink,Wiko:Wiko,Wieppo:Wieppo,Weimei:Weimei,Wileyfox:Wileyfox,Wolder:Wolder,Wolfgang:Wolfgang,Wonu:Wonu,Woo:Woo,Woxter:Woxter,"X-View":{regex:"ZEN_U5\\+|AMBER_KIDS|Proton_Amber_HD|PROTON_JADE_2_PRO",device:"smartphone",models:[{regex:"ZEN_U5\\+",model:"ZEN U5+"},{regex:"AMBER_KIDS",device:"tablet",model:"Amber Kids"},{regex:"Proton_Amber_HD",device:"tablet",model:"Proton Amber HD"},{regex:"PROTON_JADE_2_PRO",device:"tablet",model:"Proton Jade 2 Pro"}]},POCO:POCO,Xiaomi:Xiaomi,Xion:Xion,Xolo:Xolo,Yarvik:Yarvik,Yes:Yes,Yezz:Yezz,Yu:Yu,Yuandao:Yuandao,Yusun:Yusun,Ytone:Ytone,Zonda:Zonda,ZYQ:ZYQ,Toshiba:Toshiba$3,Vivax:Vivax,MLS:MLS,Fly:Fly,FinePower:FinePower,Freetel:Freetel,"Western Digital":{regex:"Westerndigital|WDSimpleBrowser",device:"tv",models:[{regex:"Streamer2010",model:"Streamer (2010)"}]},Zeemi:Zeemi,Zenek:Zenek,Zopo:Zopo,ZTE:ZTE,Zuum:Zuum,Zen:Zen,Zync:Zync,Lemhoov:Lemhoov,MTC:MTC$1,MegaFon:MegaFon,Inoi:Inoi,Vertex:Vertex,Unknown:Unknown,Starway:Starway,Savio:Savio,Simbans:Simbans,MYFON:MYFON,"X-TIGI":{regex:"X[-_]TIGI|Hope7[_ ]Mate|Photo_P15_Lite",device:"smartphone",models:[{regex:"X-TIGI_JOY10_PRO",model:"Joy 10 Pro",device:"tablet"},{regex:"Hope7[_ ]Mate",model:"Hope 7 Mate",device:"tablet"},{regex:"X-TIGI_JOY7_MAX",model:"Joy 7 Max",device:"tablet"},{regex:"X-TIGI[_ ]V28[_ ]LTE",model:"V28 LTE"},{regex:"X[-_]TIGI[_ ]V19",model:"V19"},{regex:"X-TIGI[_ ]Photo[_ ]P11",model:"Photo P11"},{regex:"Photo_P15_Lite",model:"Photo P15 Lite"},{regex:"X[-_]TIGI[ _-]([^/;)]+) Build",model:"$1"}]},Xiaolajiao:Xiaolajiao,Ritmix:Ritmix,"Ross&Moor":{regex:"RMD[-_](974R|600)(?:[);/ ]|$)",device:"tablet",model:"RMD-$1"},"R-TV":{regex:"R-TV BOX[ _]?(MINI\\+|X99|X10 PRO|[RXS]10)",device:"tv",model:"Box $1"},NEXBOX:NEXBOX,True:True,Yandex:Yandex,FORME:FORME,Shuttle:Shuttle,BDF:BDF,Highscreen:Highscreen,CVTE:CVTE,Globex:Globex,Atom:Atom,Qumo:Qumo,Umax:Umax,Mann:Mann,Unihertz:Unihertz,Chuwi:Chuwi,Bezkam:Bezkam,"NG Optics":{regex:"(NG3128HD)(?:[);/ ]|$)",device:"tv",model:"$1"},KATV1:KATV1,Ghong:Ghong,Xoro:Xoro,Vinga:Vinga,Viumee:Viumee,Nuvo:Nuvo,Sunvell:Sunvell,Ugoos:Ugoos,Yxtel:Yxtel,Proline:Proline,Yota:Yota,Mystery:Mystery,Ritzviva:Ritzviva,DeWalt:DeWalt,Runbo:Runbo,NewsMy:NewsMy,Newsday:Newsday,Daewoo:Daewoo,Vesta:Vesta,Spectrum:Spectrum,Kivi:Kivi,Divisat:Divisat,Kanji:Kanji,Kaiomy:Kaiomy,National:National,Vsun:Vsun,"Shift Phones":{regex:"(SHIFT6m)(?:[);/ ]|$)",device:"smartphone",model:"$1"},RugGear:RugGear,Aligator:Aligator,Maxcom:Maxcom,Luna:Luna,Protruly:Protruly,JFone:JFone,Uhans:Uhans,Soyes:Soyes,Zidoo:Zidoo,Zfiner:Zfiner,iGet:iGet,iVA:iVA,Phicomm:Phicomm,Huadoo:Huadoo,Gome:Gome,Voyo:Voyo,Ryte:Ryte,Vontar:Vontar,Vorke:Vorke,Wigor:Wigor,NEXON:NEXON,ONN:ONN,EXO:EXO,"Q.Bell":{regex:"(QPHONE[_ ](?:10.1|9.[12]|7.1|5.[46])|QTAB10EW)(?:[);/ ]|$)",device:"smartphone",models:[{regex:"(QPHONE[_ ](?:10.1|9.[12]|7.1|5.[46]))(?:[);/ ]|$)",model:"$1"},{regex:"QTAB10EW",device:"tablet",model:"QTAB10EW"}]},Datawind:Datawind,Droxio:Droxio,Goophone:Goophone,PocketBook:PocketBook,Bitmore:Bitmore,Kuliao:Kuliao,Sugar:Sugar,Subor:Subor,Xshitou:Xshitou,JKL:JKL,Gree:Gree,Vodacom:Vodacom,VKworld:VKworld,Mito:Mito,TWM:TWM,TWZ:TWZ,Onix:Onix,Oale:Oale,Mobo:Mobo,Macoox:Macoox,Prixton:Prixton,Magnus:Magnus,Newland:Newland,Orbic:Orbic,RED:RED,Contixo:Contixo,"E-Ceros":{regex:"(?:CT9716(?:-B)?)(?:[);/ ]|$)",device:"tablet",models:[{regex:"CT9716(?:[);/ ]|$)",model:"Revolution"},{regex:"CT9716-B(?:[);/ ]|$)",model:"Revolution HD"}]},How:How,Multilaser:Multilaser,"Positivo BGH":{regex:"(?:T1060B|S455|Positivo (?:Twist|Ypy|Mini I)|Twist[ _](?:\\(2018\\)|2 (?:Fit|Pro)|Mini|Tab|Metal(?: 32GB)?|Max|XL|SE|[23SM]))(?:[);/ ]|$)",device:"smartphone",models:[{regex:"S455(?:[);/ ]|$)",model:"Selfie"},{regex:"Twist \\(2018\\)(?:[);/ ]|$)",model:"Twist (2018)"},{regex:"Twist Metal 32GB(?:[);/ ]|$)",model:"Twist Metal 32GB"},{regex:"Twist Metal(?:[);/ ]|$)",model:"Twist Metal"},{regex:"Twist Max(?:[);/ ]|$)",model:"Twist Max"},{regex:"Twist[ _]Mini(?:[);/ ]|$)",model:"Twist Mini"},{regex:"Twist 2 Fit(?:[);/ ]|$)",model:"Twist 2 Fit"},{regex:"Twist 2 Pro(?:[);/ ]|$)",model:"Twist 2 Pro"},{regex:"Twist XL(?:[);/ ]|$)",model:"Twist XL"},{regex:"Twist SE(?:[);/ ]|$)",model:"Twist SE"},{regex:"(?:Positivo )?Twist ([23SM])(?:[);/ ]|$)",model:"Twist $1"},{regex:"(?:Positivo )Mini I(?:[);/ ]|$)",model:"Mini I"},{regex:"T1060B(?:[);/ ]|$)",device:"tablet",model:"T1060B"},{regex:"Positivo Ypy (AB7F|AB10H|L1050E)(?:[);/ ]|$)",device:"tablet",model:"Ypy $1"},{regex:"Twist Tab(?:[);/ ]|$)",device:"tablet",model:"Twist Tab"}]},Maxtron:Maxtron,Philco:Philco,"SEMP TCL":{regex:"(?:GO[35]E|5101J|GO3C(?: Plus)?)(?:[);/ ]|$)",device:"smartphone",models:[{regex:"5101J(?:[);/ ]|$)",model:"L9 Plus"},{regex:"GO3C Plus(?:[);/ ]|$)",model:"GO! 3C Plus"},{regex:"GO3C(?:[);/ ]|$)",model:"GO! 3C"},{regex:"(GO[35]E)(?:[);/ ]|$)",model:"$1"}]},Newman:Newman,Swipe:Swipe,Owwo:Owwo,"TD Systems":{regex:"(K32DLX9HS|K40DLM8FS|K40DLX9FS)(?:[);/ ]|$)",device:"tv",model:"$1"},Ravoz:Ravoz,Tone:Tone,"AT&T":{regex:"(?:U304AA|QS5509A|U705AA)(?:[);/ ]|$)",device:"smartphone",models:[{regex:"U304AA(?:[);/ ]|$)",model:"Radiant Core"},{regex:"U705AA(?:[);/ ]|$)",model:"Radiant Max"},{regex:"QS5509A(?:[);/ ]|$)",model:"Axia"}]},BIHEE:BIHEE,Enot:Enot,Kooper:Kooper,Lesia:Lesia,Anry:Anry,Tinai:Tinai,Winds:Winds,Asano:Asano,Phonemax:Phonemax,Vipro:Vipro,OzoneHD:OzoneHD,Kzen:Kzen,Melrose:Melrose,Crony:Crony,Takara:Takara,Tronsmart:Tronsmart,Amigoo:Amigoo,Lumigon:Lumigon,Neomi:Neomi,Eltex:Eltex,Senkatel:Senkatel,Bobarry:Bobarry,Wortmann:Wortmann,"BB Mobile":{regex:"Techno[-_ ](8\\.0|9\\.7|TQ863Q|X595BT|S700BF|I700AJ|10.1 LTE TQ060X|7.0 LTE TQ763I|I785AP|I101BI)(?:[);/ ]|$)",device:"tablet",models:[{regex:"Techno[_ ]S700BF(?:[);/ ]|$)",model:'Techno 7.0" Pioneer LTE S700BF'},{regex:"Techno[_ ]10.1 LTE TQ060X(?:[);/ ]|$)",model:'Techno 10.0" LTE TQ060X'},{regex:"Techno[_ ]TQ863Q(?:[);/ ]|$)",model:'Techno 8.0" Poplar LTE TQ863Q'},{regex:"Techno[_ ]I700AJ(?:[);/ ]|$)",model:'Techno 7.0" Mozg LTE I700AJ'},{regex:"Techno[-_ ]I785AP(?:[);/ ]|$)",model:'Techno 7.85" Mozg I785AP'},{regex:"Techno[-_ ]I101BI(?:[);/ ]|$)",model:'Techno 10.1" Mozg I101BI'},{regex:"Techno[_ ]7.0 LTE TQ763I(?:[);/ ]|$)",model:'Techno 7.0" Kalash LTE TQ763I'},{regex:"Techno[_ ](9\\.7|8\\.0) 3G(?:[);/ ]|$)",model:'Techno $1" 3G'},{regex:"Techno[_ ](?:X595BT)(?:[);/ ]|$)",device:"smartphone",model:"Techno Spark 3G X595BT"}]},"2E":{regex:"(?:E500A_2019|2E E450 2018)(?:[);/ ]|$)",device:"smartphone",models:[{regex:"E500A_2019(?:[);/ ]|$)",model:"E500A (2019)"},{regex:"2E E450 2018(?:[);/ ]|$)",model:"E450 (2018)"}]},Billion:Billion,Tele2:Tele2,Alfawise:Alfawise,Klipad:Klipad,SQOOL:SQOOL,TurboKids:TurboKids,Jinga:Jinga,Twoe:Twoe,iTruck:iTruck,Torex:Torex,Doffler:Doffler,Oyyu:Oyyu,Primux:Primux,iMars:iMars,Logic:Logic,Cloudpad:Cloudpad,Cloudfone:Cloudfone,Vsmart:Vsmart,MiXzo:MiXzo,Openbox:Openbox,Ziox:Ziox,iDroid:iDroid,Aoson:Aoson,"FireFly Mobile":{regex:"(?:AURII[ _](?:Passion|Virtuoso|ULTRA|Secret Lite|AMUSE[_ ]3G|FORCE|FUSION|F8[_ ]Premium|XCITE|DELIGHT|DREAM[_ ](?:MINI|One))|SECRET_XR|INTENSE[ _](?:POWER|METAL_2|XT)|SUPER SWEET|SWEET MINI)(?:[);/ ]|$)",device:"smartphone",models:[{regex:"AURII[ _]FORCE(?:[);/ ]|$)",model:"Aurii Force"},{regex:"AURII[ _]DELIGHT(?:[);/ ]|$)",model:"Aurii Delight"},{regex:"AURII[ _]DREAM[_ ]MINI(?:[);/ ]|$)",model:"Aurii Dream Mini"},{regex:"AURII[ _]DREAM[_ ]One(?:[);/ ]|$)",model:"Aurii Dream One"},{regex:"AURII[ _]ULTRA(?:[);/ ]|$)",model:"Aurii Ultra"},{regex:"AURII[ _]AMUSE[_ ]3G(?:[);/ ]|$)",model:"Aurii Amuse 3G"},{regex:"AURII[ _]FUSION(?:[);/ ]|$)",model:"Aurii Fusion"},{regex:"AURII[ _]XCITE(?:[);/ ]|$)",model:"Aurii xCite"},{regex:"SECRET_XR(?:[);/ ]|$)",model:"Aurii Secret XR"},{regex:"AURII[ _]((?:Passion|Virtuoso|Secret Lite|F8[_ ]Premium))(?:[);/ ]|$)",model:"Aurii $1"},{regex:"INTENSE POWER(?:[);/ ]|$)",model:"Intense Power"},{regex:"INTENSE_XT(?:[);/ ]|$)",model:"Intense XT"},{regex:"INTENSE_METAL_2(?:[);/ ]|$)",model:"Intense Metal 2"},{regex:"SUPER SWEET(?:[);/ ]|$)",model:"Super Sweet"},{regex:"SWEET MINI(?:[);/ ]|$)",model:"Sweet Mini"}]},"i-Cherry":{regex:"iCherry_?",device:"smartphone",models:[{regex:"iCherry[ _](C(?:25[1258]|21[16]|110|121|22[0379]|23[03])|X1)(?:[);/ ]|$)",model:"$1"},{regex:"iCherry-C256",device:"tablet",model:"C256 Nano 3G"}]},NextTab:NextTab,Time2:Time2,Sunstech:Sunstech,Hotwav:Hotwav,Tetratab:Tetratab,Dolamee:Dolamee,Invin:Invin,Doopro:Doopro,IQM:IQM,Nos:Nos,Accent:Accent,Avenzo:Avenzo,Beelink:Beelink,MAXVI:MAXVI,"MDC Store":{regex:"Prime_S(?:[);/ ]|$)",device:"smartphone",models:[{regex:"Prime_S(?:[);/ ]|$)",model:"Prime S"}]},meanIT:meanIT,Kenxinda:Kenxinda,"X-BO":{regex:"X[-]?BO (V[78]|V1[01]|V[89]\\+)(?:[);/ ]|$)",device:"smartphone",model:"$1"},Xgody:Xgody,Alcor:Alcor,iBrit:iBrit,Ovvi:Ovvi,Fero:Fero,Ruio:Ruio,Transpeed:Transpeed,VVETIME:VVETIME,A1:A1,Swisstone:Swisstone,"P-UP":{regex:"MD-04P(?:[);/ ]|$)",device:"phablet",model:"Mode 1 RR"},iVooMi:iVooMi,Pixelphone:Pixelphone,Pixela:Pixela,Iris:Iris,Fonos:Fonos,Xtouch:Xtouch,Conquest:Conquest,Zatec:Zatec,Selenga:Selenga,Starlight:Starlight,GEOFOX:GEOFOX,Tinmo:Tinmo,Matrix:Matrix,Verico:Verico,TTEC:TTEC,eSTAR:eSTAR,Hometech:Hometech,ExMobile:ExMobile,Hipstreet:Hipstreet,Navitech:Navitech,NorthTech:NorthTech,UNIWA:UNIWA,Andowl:Andowl,Silelis:Silelis,Bluedot:Bluedot,"Planet Computers":{regex:"(Cosmo_Communicator)(?:[);/ ]|$)",device:"tablet",model:"$1"},Reach:Reach,MobiWire:MobiWire,Hezire:Hezire,Hurricane:Hurricane,iSWAG:iSWAG,Reeder:Reeder,ELARI:ELARI,"Epik One":{regex:"(K501 Plus|[ ]K5(?:0[0-4]|1[01]|03T|3[456]|4[05]|73)|[ ]K60[01]|[ ]X507T|[ ]K40[56]|[ ]T700)(?:[);/ ]|$)",device:"smartphone",models:[{regex:"K501 Plus",model:"Leo Plus"},{regex:"K501",model:"Leo"},{regex:"K500",model:"Omega Lite"},{regex:"K502",model:"Omega"},{regex:"K503T",model:"Leo Turbo"},{regex:"K503",model:"Leo Max"},{regex:"K504",model:"Titan 3G"},{regex:"X507T",model:"Titan II"},{regex:"K510",model:"Bolt"},{regex:"K511",model:"Bolt Pro"},{regex:"K534",model:"Hada"},{regex:"K535",model:"Hada Turbo"},{regex:"K545",model:"Rocket"},{regex:"K536",model:"Royal"},{regex:"K540",model:"Excalibur"},{regex:"K573",model:"Panther"},{regex:"K600",model:"Jupiter"},{regex:"K601",model:"Jupiter One"},{regex:"K406",model:"Pebble Plus"},{regex:"K405",model:"Pebble II"},{regex:"T700",model:"Palette",device:"tablet"}]},Altice:Altice,Kult:Kult,Beyond:Beyond,BioRugged:BioRugged,VAIO:VAIO,Spark:Spark,SPC:SPC,Winmax:Winmax,Zebra:Zebra,Thuraya:Thuraya,Bkav:Bkav,Brandt:Brandt,Bigben:Bigben,SMARTEC:SMARTEC,Asanzo:Asanzo,Artizlee:Artizlee,Mintt:Mintt,Premio:Premio,Trifone:Trifone,Bluewave:Bluewave,Siragon:Siragon,Poppox:Poppox,Zentality:Zentality,"Black Bear":{regex:"(B6 Master|B6 Note X)(?:[);/ ]|$)",device:"smartphone",model:"$1"},Fortis:Fortis,OpelMobile:OpelMobile,NuAns:NuAns,Koolnee:Koolnee,Sansui:Sansui,Sico:Sico,Smadl:Smadl,EXCEED:EXCEED,Tymes:Tymes,Solone:Solone,FarEasTone:FarEasTone,Smailo:Smailo,Colors:Colors,Honeywell:Honeywell,Electroneum:Electroneum,"High Q":{regex:"(ELT070[46]H|ELT0802H)(?:[);/ ]|$)",device:"tablet",model:"$1"},Pluzz:Pluzz,"IKU Mobile":{regex:"(Powerful_K55i|Curvy C50L)(?:[);/ ]|$)",device:"smartphone",model:"$1"},"IKI Mobile":{regex:"(?:GO5_55|BLESS_GO55|BLESSPLUS|KF4Go|KF5bless)(?:[);/ ]|$)",device:"smartphone",models:[{regex:"GO5_55",model:'Go 5.5"'},{regex:"BLESS_GO55",model:'Bless Go 5.5"'},{regex:"BLESSPLUS",model:"Bless Plus"},{regex:"(KF4Go|KF5bless)",model:"$1"}]},"CG Mobile":{regex:"(?:CG_OMEGA6|Omega (?:[38])|CG_EON_Blaze_Pro|CG\\|EON Blaze GOLD)(?:[);/ ]|$)",device:"smartphone",models:[{regex:"Omega ([38])(?:[);/ ]|$)",model:"Omega $1"},{regex:"CG_OMEGA6(?:[);/ ]|$)",model:"Omega 6"},{regex:"CG_EON_Blaze_Pro(?:[);/ ]|$)",model:"EON Blaze Pro"},{regex:"CG\\|EON Blaze GOLD(?:[);/ ]|$)",model:"EON Blaze Gold"}]},IUNI:IUNI,"ZH&K":{regex:"(?:ODYSSEY O2|ODYSSEY RANGE)(?:[);/ ]|$)",device:"smartphone",models:[{regex:"ODYSSEY O2",model:"Odyssey O2"},{regex:"ODYSSEY RANGE",model:"Odyssey Range"}]},Ordissimo:Ordissimo$1,Necnot:Necnot,Einstein:Einstein,AfriOne:AfriOne,Connex:Connex,Connectce:Connectce,Clementoni:Clementoni,"Cell-C":{regex:"Cell_?C_",device:"smartphone",models:[{regex:"Cell_C_(Summit_Plus|Fame|Evolve)(?:[);/ ]|$)",model:"$1"},{regex:"CELLC_Evolve",device:"tablet",model:"Evolve"}]},VC:VC,CellAllure:CellAllure,Eagle:Eagle,Invens:Invens,"Chico Mobile":{regex:"(?:ALTO (?:Bombo|classic|Estrella|JUEGO|SUBIR|[235])|FUEGO MAX|OJOS[ _](?:CAMBIO|NUBE|[68i]|ORO))(?:[);/ ]|$)",device:"smartphone",models:[{regex:"ALTO Bombo",model:"Alto Bombo"},{regex:"ALTO classic",model:"Alto Classic"},{regex:"ALTO Estrella",model:"Alto Estrella"},{regex:"ALTO JUEGO",model:"Alto Juego"},{regex:"ALTO SUBIR",model:"Alto Subir"},{regex:"ALTO ([235])",model:"Alto $1"},{regex:"OJOS[ _]([68i])",model:"Ojos $1"},{regex:"OJOS NUBE",model:"Ojos Nube"},{regex:"OJOS CAMBIO",model:"Ojos Cambio"},{regex:"OJOS ORO",model:"Ojos Oro"},{regex:"FUEGO MAX",device:"tablet",model:"Fuego Max"}]},Claresta:Claresta,Camfone:Camfone,Bellphone:Bellphone,Gini:Gini,MIVO:MIVO,Jesy:Jesy,Teknosa:Teknosa,Hyve:Hyve,EWIS:EWIS,"Leader Phone":{regex:"(Vyper|N-5[07]|N-45)(?:[);/ ]|$)",device:"smartphone",models:[{regex:"N-45 light",model:"N-45 Light"},{regex:"(Vyper|N-5[07]|N-45)(?:[);/ ]|$)",model:"$1"}]},Cavion:Cavion,GLX:GLX,Seeken:Seeken,Jivi:Jivi,Winnovo:Winnovo,WE:WE,Trio:Trio,Seuic:Seuic,Centric:Centric,Kata:Kata,Leff:Leff,Hardkernel:Hardkernel,Wiseasy:Wiseasy,"Shtrikh-M":{regex:"SHTRIH-SMARTPOS-F2(?:[);/ ]|$)",device:"peripheral",model:"Smartpos F2"},BBK:BBK,"4ife":{regex:"4ife (4K Smart TV Box)(?:[);/ ]|$)",device:"tv",model:"$1"},Westpoint:Westpoint,Wintouch:Wintouch,Aiuto:Aiuto,Seatel:Seatel,Ditecma:Ditecma,Datamini:Datamini,"3GNET":{regex:"(?<!NetType/)3GNET[ _]",device:"smartphone",models:[{regex:"3GNET[ _](U8|T800|U6s)(?:[);/ ]|$)",model:"$1"},{regex:"3GNET[ _]T ?900",model:"T900"}]},"Yoka TV":{regex:"KB2 PRO(?:[);/ ]|$)",device:"tv",model:"KB2 Pro"},Formuler:Formuler,Malata:Malata,IT:IT,Navcity:Navcity,Jiake:Jiake,"iQ&T":{regex:"(IFoo (?:U200|H55))(?:[);/ ]|$)",device:"smartphone",model:"$1"},Mantra:Mantra,Datalogic:Datalogic,"Naomi Phone":{regex:"NAOMIPHONE Ambar(?:[);/ ]|$)",device:"smartphone",model:"Ambar"},Navitel:Navitel,Linnex:Linnex,Smartab:Smartab,SuperTab:SuperTab,Suzuki:Suzuki,Philips:Philips$1,INCAR:INCAR,"FaRao Pro":{regex:"(FTRW100)(?:[);/ ]|$)",device:"tablet",model:"$1"},Nabi:Nabi,StrawBerry:StrawBerry,Gresso:Gresso,Pendoo:Pendoo,PiPO:PiPO,Engel:Engel,Genesis:Genesis,InfoKit:InfoKit,Blloc:Blloc,Huskee:Huskee,SOLE:SOLE,SOLO:SOLO,OINOM:OINOM,Singtech:Singtech,Sunny:Sunny,TEENO:TEENO,"v-mobile":{regex:"Vmobile[ _]",device:"smartphone",models:[{regex:"Vmobile[ _](J7)(?:[);/ ]|$)",model:"$1"},{regex:"Vmobile XS Pro(?:[);/ ]|$)",model:"XS Pro"}]},OASYS:OASYS,Aspera:Aspera,"Vision Touch":{regex:"Vision ?Touch",device:"smartphone",models:[{regex:"VisionTouchLife",model:"Life"},{regex:"Inspire",model:"Inspire"}]},NOBUX:NOBUX,Hitech:Hitech,F150:F150,BilimLand:BilimLand,Greentel:Greentel,Kyowon:Kyowon,"LT Mobile":{regex:"(?:LT-NOTE 10S)",device:"smartphone",models:[{regex:"LT-NOTE 10S",model:"Note 10S"}]},"ONYX BOOX":{regex:"KON_TIKI(?:[);/ ]|$)",device:"tablet",model:"Kon Tiki"},GFive:GFive,KINGZONE:KINGZONE,"M-Tech":{regex:"EROS 4G(?:[);/ ]|$)",device:"smartphone",model:"Eros 4G"},Fantec:Fantec,AURIS:AURIS,YUHO:YUHO,"2F Mobile":{regex:"(Z8PLUS|Z8POCKET)(?:[);/ ]|$)",device:"smartphone",models:[{regex:"Z8PLUS",model:"Z8 Plus"},{regex:"Z8POCKET",model:"Z8 Pocket"}]}},model={},__importDefault$a=(Object.defineProperty(model,"__esModule",{value:!0}),model.buildModel=e=>"Build"===(e=(e=e.replace(/_/g," ")).replace(RegExp(" TD$","i"),""))?"":e,commonjsGlobal&&commonjsGlobal.__importDefault||function(e){return e&&e.__esModule?e:{default:e}});Object.defineProperty(mobiles,"__esModule",{value:!0});const mobiles_json_1=__importDefault$a(require$$0$8),variable_replacement_1$6=variableReplacement,user_agent_1$9=userAgent,model_1$2=model;class MobileParser{constructor(){this.parse=e=>{var t,r,o={type:"",brand:"",model:""};let a="";for([t,r]of Object.entries(mobiles_json_1.default)){var i=user_agent_1$9.userAgentParser(r.regex,e);if(i){if(a="device"in r&&r.device||"",o.brand=t,"model"in r&&r.model)o.model=model_1$2.buildModel(variable_replacement_1$6.variableReplacement(r.model,i)).trim();else if("models"in r&&r.models)for(const t of r.models){var n=user_agent_1$9.userAgentParser(t.regex,e);if(n){o.model=model_1$2.buildModel(variable_replacement_1$6.variableReplacement(t.model,n)).trim(),"device"in t&&t.device&&(a=t.device),"brand"in t&&(o.brand=t.brand||"");break}}break}}return o.type="tv"===a?"television":"car browser"===a?"car":a,"Unknown"===o.brand&&(o.brand=""),o}}}mobiles.default=MobileParser;var televisions={},Airties={regex:"Airties",device:"tv",models:[{regex:"Airties; ?([^);/]+)",model:"$1"}]},AOC={regex:"AOC",device:"tv",models:[{regex:"(LE43S5970-20|S50856)",model:"$1"}]},ARRIS={regex:"ARRIS[;,]",device:"tv",models:[{regex:"FS-ARS-01B",model:"FS-ARS-01B"}]},Atvio={regex:"ATVIO",device:"tv",models:[{regex:"55D1620",model:"55D1620"}]},BangOlufsen={regex:"Bangolufsen",device:"tv",model:"BeoVision"},Blaupunkt={regex:"Blaupunkt_UMC[;,]",device:"tv",models:[{regex:"LC-65CUG8052E",model:"LC-65CUG8052E"}]},Bush={regex:"BUSH[;,]",device:"tv",model:""},Celcus={regex:"CELCUS[;,]",device:"tv",model:""},Changhong={regex:"Changhong",device:"tv",models:[{regex:"Changhong; ?([^);/]+)",model:"$1"}]},CreNova={regex:"CreNova",device:"tv",model:"CNV001"},Digihome={regex:"DIGIHOME[;,]",device:"tv",model:""},DMM={regex:"DMM",device:"tv",model:"Dreambox"},ELECTRONIA={regex:"ELECTRONIA[;,]",device:"tv",model:""},Essentielb={regex:"ESSENTIELB[;,]",device:"tv",model:""},Finlux={regex:"FINLUX[;,]",device:"tv",model:""},Fuego={regex:"FUEGO[;,]",device:"tv",model:""},GoGEN={regex:"GOGEN[;,]",device:"tv",model:""},Grundig={regex:"(OWB|Grundig|Arcelik)",device:"tv",model:""},Haier={regex:"(?:HHW_)?HAIER",device:"tv",models:[{regex:"LE55X7000U",model:"LE55X7000U"}]},Hisense={regex:"Hisense|Eurofins_Digital_Testing",device:"tv",models:[{regex:"50ADEVTOOL",model:"50ADEVTOOL"},{regex:"50A683FEVS",model:"50A683FEVS"},{regex:"55A6100EE",model:"55A6100EE"},{regex:"55U62QGAVT",model:"55U62QGAVT"},{regex:"50A6502EA",model:"50A6502EA"},{regex:"MICALIDVB6886",model:"MICALIDVB6886"},{regex:"(L[A-Z]{2,3}[0-9]{2}[A-Z][0-9]{3,4}[A-Z]{0,6}[0-9]?[A-Z]?)",model:"$1"},{regex:"(H[A-Z]?[0-9]{2}[A-Z][0-9]{3,4}[A-Z]{0,4})",model:"$1"}]},Hitachi={regex:"Hitachi[;,]",device:"tv",models:[{regex:"49D2900",model:"49D2900"}]},Horizon={regex:"HORIZON[;,]",device:"tv",model:""},Hotel={regex:"HOTEL[;,]",device:"tv",model:""},Humax={regex:"Humax",device:"tv",models:[{regex:"(HD-FOX C|HD (FOX\\+|NANO)|iCord (HD\\+|MINI|Cable)|(CX|IR)HD-5100(C|S)|HM9503HD)",model:"$1"},{regex:"HMS1000S",model:"HMS-1000S"},{regex:"Humax; ([^);/]+)",model:"$1"}]},Hyundai={regex:"HYUNDAI[;,]",device:"tv",model:""},Ikea={regex:"Ikea",device:"tv",model:""},Intek={regex:"Intek",device:"tv",models:[{regex:"(Vantage|VT-100|VT-1)",model:"$1"}]},Inverto={regex:"Inverto",device:"tv",models:[{regex:"inverto; ([^);/]+)",model:"$1"},{regex:"(Volksbox Web Edition|Volksbox Essential|Volksbox II|Volksbox)",model:"$1"}]},JVC={regex:"AFTSO001|JVC[;,]",device:"tv",models:[{regex:"AFTSO001",model:"4K (2019)"}]},Kalley={regex:"KALLEY[;,]",device:"tv",models:[{regex:"32D1620",model:"32D1620"}]},KUBO={regex:"KUBO[;,]",device:"tv",model:""},Laurus={regex:"LAURUS[;,]",device:"tv",model:""},LG={regex:"LGE",device:"tv",models:[{regex:"XU43WT180N",model:"XU43WT180N"},{regex:"43LJ614V-ZA",model:"43LJ614V-ZA"},{regex:"55SK850V-ZA",model:"55SK850V-ZA"},{regex:"KEY0000213F1z",model:"KEY0000213F1z"},{regex:"KEY0000213F",model:"KEY0000213F"},{regex:"KEY000000(2E|2F|3B|3F)",model:"KEY000000$1"},{regex:"(NetCast [0-9]{1}.[0-9]{1}|GLOBAL_PLAT3)",model:"$1"},{regex:"(OLED[0-9]{2}[A-Z0-9]{3}[A-Z]{2})",model:"$1"},{regex:"(OLED[0-9]{2}[A-Z][0-9][A-Z])",model:"$1"},{regex:"(OLED[0-9]{2}[A-Z0-9]{2})",model:"$1"},{regex:"([0-9]{2}[A-Z]{2}[0-9]{4}[A-Z0-9]{1}[A-Z]{2})",model:"$1"},{regex:"([0-9]{2}NANO[0-9]{3}[A-Z]{2})",model:"$1"},{regex:"([0-9]{2}NANO[0-9]{2})",model:"$1"},{regex:"LGE;? ?([0-9]{2}[A-Z]{2}[0-9]{2,4}[A-Z]?)",model:"$1"},{regex:"LM21U",model:"LM21U"},{regex:"32LM",model:"32LM"}]},Lifemaxx={regex:"Lifemaxx[;,]",device:"tv",model:""},Linsar={regex:"LINSAR[;,]",device:"tv",model:""},Loewe={regex:"Loewe",device:"tv",models:[{regex:"([A-Z]{2}[0-9]{3})",model:"$1"}]},Luxor={regex:"LUXOR[;,]",device:"tv",model:""},Manhattan={regex:"Manhattan",device:"tv",models:[{regex:"T3",model:"T3"}]},MediaTek={regex:"MTK|MediaTek;",device:"tv",models:[{regex:"(MT[0-9]{4})",model:"$1"}]},Medion$1={regex:"Medion",device:"tv",model:""},Miray={regex:"MIRAY",device:"tv",models:[{regex:"LEDM-322NIP",model:"LEDM-322NIP"}]},MStar={regex:"MStar[;,]",device:"tv",models:[{regex:"([24])KTV18",model:"$1KTV18"}]},MTC={regex:"MTC[;,]",device:"tv",models:[{regex:"([24])K_Android_TV_V01",model:"$1K Android TV"}]},Nordmende={regex:"NORDMENDE[;,]",device:"tv",model:""},Metz={regex:"Metz",device:"tv",model:""},Ok={regex:"OK[;,]",device:"tv",model:""},Panasonic$1={regex:"Panasonic",device:"tv",models:[{regex:"VIERA (201[1-9])",model:"VIERA ($1)"},{regex:"(DIGA [A-Z]{1}[0-9]{4})",model:"$1"},{regex:"DIGA Webkit ([A-Z]{1}[0-9]{4})",model:"DIGA $1"},{regex:"SmartTV(201[89]|202[0-1])",model:"Smart TV ($1)"}]},PEAQ={regex:"PEAQ",device:"tv",model:""},Philips={regex:"Philips|NETTV/",device:"tv",models:[{regex:"Philips[,;] ?((?! )[^),;/]+)",model:"$1"},{regex:"NETTV/[0-9\\.]{5}",model:"NetTV Series"}]},Polaroid={regex:"POLAROID[;,]",device:"tv",model:""},PROFiLO={regex:"PROFILO[;,]",device:"tv",model:""},Qilive={regex:"QILIVE[;,]",device:"tv",model:""},REGAL={regex:"REGAL[;,]",device:"tv",model:""},Saba={regex:"Saba[;,]",device:"tv",model:""},Salora={regex:"Salora[;,]",device:"tv",model:""},Samsung$2={regex:"Samsung|Maple_2011",device:"tv",models:[{regex:"SmartTV(201[2-9]|202[0-1]):([^);/]+)",model:"$2"},{regex:"SmartTV(201[2-9]|202[0-1])",model:"Smart TV ($1)"},{regex:"Maple_2011",model:"Smart TV (2011)"}]},SCBC={regex:"SCBC[;,]",device:"tv",models:[{regex:"SCBC586",model:"SCBC586"},{regex:"43D1850",model:"43D1850"}]},SEG={regex:"SEG[;,]",device:"tv",model:""},Selevision={regex:"Selevision",device:"tv",models:[{regex:"Selevision; (?:Selevision )?([^);/]+)",model:"$1"},{regex:"(EMC1000i)",model:"$1"}]},Sharp={regex:"(?:UMC-)?Sharp",device:"tv",models:[{regex:"Sharp[,;] ?((?! |HbbTV)[^),;/]+)",model:"$1"},{regex:"(LE[0-9]{3}[A-Z]{0,3})",model:"$1"},{regex:"LC-([^);/]+)",model:"LC-$1"},{regex:"BLA-43",model:"BLA-43"}]},Skyworth={regex:"Sky_worth",device:"tv",models:[{regex:"Sky_worth;([^);/]+)",model:"$1"}]},Smart={regex:"Smart[;,]",device:"tv",models:[{regex:"Smart; ([^);/]+)",model:"$1"},{regex:"([A-Z]{2}[0-9]{2}|ZAPPIX)",model:"$1"}]},Sony$2={regex:"Sony",device:"tv",models:[{regex:"KDL-GR1",model:"KDL-GR1"},{regex:"KDL-GN([56])",model:"KDL-GN$1"},{regex:"BRAVIA (VH1|4K VH2)",model:"BRAVIA $1"},{regex:"(KDL?-?[0-9]{2}[A-Z]{1}[0-9]{4}[A-Z]{1})",model:"$1"},{regex:"(KDL?-?[0-9]{2}[A-Z]{1}[0-9]{3}[A-Z]{1})",model:"$1"},{regex:"(KDL?-?[0-9]{2}[A-Z]{1,2}[0-9]{1,5})",model:"$1"}]},SWTV={regex:"SWTV[;,]",device:"tv",models:[{regex:"SKWE20E21",model:"SKWE20E21"}]},Technicolor={regex:"Technicolor",device:"tv",models:[{regex:"uzw4054ttg",model:"UZW4054TTG"}]},Technika={regex:"TECHNIKA[;,]",device:"tv",model:""},TechniSat={regex:"TechniSat",device:"tv",models:[{regex:"((DigiCorder|MultyVision|Digit) (ISIO S|ISIO C|ISIO))",model:"$1"}]},TechnoTrend={regex:"TechnoTrend",device:"tv",models:[{regex:"([A-Z]{1}-[0-9]{3})",model:"$1"}]},Techwood={regex:"Techwood[;,]",device:"tv",model:""},Telefunken={regex:"Telefunken",device:"tv",model:""},TCL={regex:"TCL",device:"tv",models:[{regex:"(32D1820|(?:39|55)D2900|32D2930|(?:32|43)S4900)",model:"$1"}]},Thomson$1={regex:"THOMSON[,]?|THOM",device:"tv",models:[{regex:"(TB28D19DHS-01|T28D18SFS-01B)",model:'$1 28.0"'},{regex:"(T32RTM5040|T32D18SFS-01B)",model:'$1 32.0"'},{regex:"(T43FSL5031|T43D18SFS-01B)",model:'$1 43.0"'},{regex:"(T40D18SFS-01B)",model:'$1 40.0"'},{regex:"(T49D18SFS-01B)",model:'$1 49.0"'},{regex:"(T55D18[SD]FS-01B)",model:'$1 55.0"'},{regex:"40FB5426",model:"40FB5426"}]},TOKYO={regex:"TOKYO[;,]",device:"tv",models:[{regex:"TOKTCLED32S",model:"TOKTCLED32S"}]},Toshiba$2={regex:"Toshiba",device:"tv",models:[{regex:"40L2600",model:"40L2600"},{regex:"(([0-9]{2}|DTV_)[A-Z]{2}[0-9]{1,3})",model:"$1"}]},Videoweb={regex:"videoweb|tv2n",device:"tv",models:[{regex:"(tv2n)",model:"$1"},{regex:"(videowebtv)",model:"VideoWeb TV"}]},VOX={regex:"VOX[;,]",device:"tv",model:""},WELLINGTON={regex:"WELLINGTON[;,]",device:"tv",model:""},Vestel={regex:"(?:Vestel.+VESTEL|VESTEL;)",device:"tv",model:""},require$$0$7={Airties:Airties,"ALDI NORD":{regex:"ALDINORD[;,]",device:"tv",model:""},"ALDI SÜD":{regex:"ALDISUED[;,]",device:"tv",model:""},"Altech UEC":{regex:"Altech UEC",device:"tv",models:[{regex:"Altech UEC; ?([^);/]+)",model:"$1"}]},AOC:AOC,ARRIS:ARRIS,Atvio:Atvio,BangOlufsen:BangOlufsen,Blaupunkt:Blaupunkt,Bush:Bush,Celcus:Celcus,Changhong:Changhong,CreNova:CreNova,Digihome:Digihome,DMM:DMM,ELECTRONIA:ELECTRONIA,Essentielb:Essentielb,Finlux:Finlux,"F&U":{regex:"FU[;,]",device:"tv",model:""},Fuego:Fuego,GoGEN:GoGEN,Grundig:Grundig,Haier:Haier,"Hi-Level":{regex:"HI-LEVEL[;,]",device:"tv",model:""},Hisense:Hisense,Hitachi:Hitachi,Horizon:Horizon,Hotel:Hotel,Humax:Humax,Hyundai:Hyundai,Ikea:Ikea,Intek:Intek,Inverto:Inverto,JVC:JVC,Kalley:Kalley,KUBO:KUBO,Laurus:Laurus,LG:LG,Lifemaxx:Lifemaxx,Linsar:Linsar,Loewe:Loewe,Luxor:Luxor,Manhattan:Manhattan,MediaTek:MediaTek,Medion:Medion$1,Miray:Miray,MStar:MStar,MTC:MTC,Nordmende:Nordmende,Metz:Metz,Ok:Ok,Panasonic:Panasonic$1,PEAQ:PEAQ,Philips:Philips,Polaroid:Polaroid,PROFiLO:PROFiLO,Qilive:Qilive,REGAL:REGAL,Saba:Saba,Salora:Salora,Samsung:Samsung$2,SCBC:SCBC,SEG:SEG,Selevision:Selevision,Sharp:Sharp,Skyworth:Skyworth,Smart:Smart,Sony:Sony$2,SWTV:SWTV,"TD Systems":{regex:"TDSystems[;,]",device:"tv",models:[{regex:"SmartTV(2019|2020)",model:"Smart TV ($1)"}]},Technicolor:Technicolor,Technika:Technika,TechniSat:TechniSat,TechnoTrend:TechnoTrend,Techwood:Techwood,Telefunken:Telefunken,TCL:TCL,Thomson:Thomson$1,TOKYO:TOKYO,Toshiba:Toshiba$2,Videoweb:Videoweb,VOX:VOX,WELLINGTON:WELLINGTON,"X.Vision":{regex:"X-VISION[;,]",device:"tv",model:""},Vestel:Vestel},__importDefault$9=commonjsGlobal&&commonjsGlobal.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(televisions,"__esModule",{value:!0});const televisions_json_1=__importDefault$9(require$$0$7),variable_replacement_1$5=variableReplacement,user_agent_1$8=userAgent,model_1$1=model;class TelevisionParser{constructor(){this.parse=e=>{var t={type:"",brand:"",model:""};if(this.isHbbTv(e))for(var[r,o]of(t.type="television",Object.entries(televisions_json_1.default))){var a=user_agent_1$8.userAgentParser(o.regex,e);if(a){if(t.brand=r,"model"in o&&o.model)t.model=model_1$1.buildModel(variable_replacement_1$5.variableReplacement(o.model,a)).trim();else if("models"in o&&o.models)for(const r of o.models){var i=user_agent_1$8.userAgentParser(r.regex,e);if(i){t.model=model_1$1.buildModel(variable_replacement_1$5.variableReplacement(r.model,i)).trim();break}}break}}return t},this.isHbbTv=e=>user_agent_1$8.userAgentParser("HbbTV/([1-9]{1}(?:.[0-9]{1}){1,2})",e)}}televisions.default=TelevisionParser;var cars={},Tesla={regex:"(?:Tesla/[0-9.]+|QtCarBrowser)",device:"car browser",models:[{regex:"QtCarBrowser",model:"Model S"},{regex:"Tesla/[0-9.]+",model:""}]},Topway={regex:"sp9853i_1h10_vmm",device:"car browser",models:[{regex:"sp9853i_1h10_vmm",model:"TS9"}]},require$$0$6={Tesla:Tesla,"MAC AUDIO":{regex:"Mac Audio Spro",device:"car browser",models:[{regex:"Spro",model:"S Pro"}]},Topway:Topway},__importDefault$8=commonjsGlobal&&commonjsGlobal.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(cars,"__esModule",{value:!0});const car_browsers_json_1=__importDefault$8(require$$0$6),variable_replacement_1$4=variableReplacement,user_agent_1$7=userAgent;class CarParser{constructor(){this.parse=e=>{var t,r,o={type:"",brand:"",model:""};for([t,r]of Object.entries(car_browsers_json_1.default))if(user_agent_1$7.userAgentParser(r.regex,e)){o.type="car",o.brand=t;for(const t of r.models){var a=user_agent_1$7.userAgentParser(t.regex,e);a&&(o.model=variable_replacement_1$4.variableReplacement(t.model,a).trim())}break}return o}}}cars.default=CarParser;var consoles={},Archos={regex:"Archos.*GAMEPAD([2]?)",device:"console",model:"Gamepad $1"},Microsoft$1={regex:"Xbox",device:"console",models:[{regex:"Xbox Series X",model:"Xbox Series X"},{regex:"Xbox One X",model:"Xbox One X"},{regex:"Xbox One",model:"Xbox One"},{regex:"XBOX_ONE_ED",model:"Xbox One S"},{regex:"Xbox",model:"Xbox 360"}]},Nintendo={regex:"Nintendo (([3]?DS[i]?)|Wii[U]?|Switch)",device:"console",model:"$1"},OUYA={regex:"OUYA",device:"console",model:"OUYA"},Sega={regex:"Dreamcast",device:"console",model:"Dreamcast"},Sony$1={regex:"PlayStation (3|4 Pro|4|Portable|Vita)",device:"console",model:"PlayStation $1"},require$$0$5={Archos:Archos,Microsoft:Microsoft$1,Nintendo:Nintendo,OUYA:OUYA,Sega:Sega,Sony:Sony$1},__importDefault$7=commonjsGlobal&&commonjsGlobal.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(consoles,"__esModule",{value:!0});const consoles_json_1=__importDefault$7(require$$0$5),variable_replacement_1$3=variableReplacement,user_agent_1$6=userAgent;class ConsoleParser{constructor(){this.parse=e=>{var t,r,o={type:"",brand:"",model:""};for([t,r]of Object.entries(consoles_json_1.default)){var a=user_agent_1$6.userAgentParser(r.regex,e);if(a){if(o.type=r.device,o.brand=t,"model"in r&&r.model)o.model=variable_replacement_1$3.variableReplacement(r.model,a).trim();else if("models"in r&&r.models)for(const t of r.models){var i=user_agent_1$6.userAgentParser(t.regex,e);if(i){o.model=variable_replacement_1$3.variableReplacement(t.model,i).trim();break}}break}}return o}}}consoles.default=ConsoleParser;var notebooks={},Acer$1={regex:"FBMD/(?:Aspire E5-421G|Z5WAL|One S1003);",device:"desktop",models:[{regex:"FBMD/Aspire E5-421G;",model:"Aspire E5-421G"},{regex:"FBMD/Z5WAL;",model:"Aspire E5-511"},{regex:"FBMD/One S1003;",model:"One 10"}]},Asus$1={regex:"FBMD/(?:K50IN|K54L|T100HAN|T103HAF|UX360CAK|X550LB|X553MA|X555LN|X556UQK);",device:"desktop",models:[{regex:"FBMD/K50IN;",model:"K50IN"},{regex:"FBMD/K54L;",model:"K54L"},{regex:"FBMD/T100HAN;",model:"Transformer Book"},{regex:"FBMD/T103HAF;",model:"Transformer Mini"},{regex:"FBMD/UX360CAK;",model:"ZenBook Flip"},{regex:"FBMD/X550LB;",model:"X550LB"},{regex:"FBMD/X553MA;",model:"X553MA"},{regex:"FBMD/X555LN;",model:"X555LN"},{regex:"FBMD/X556UQK;",model:"X556UQK"}]},Dell$1={regex:"FBMD/(?:Latitude E4300|Inspiron 3541|XPS 15 95[35]0);",device:"desktop",models:[{regex:"Latitude E4300",model:"Latitude E4300"},{regex:"Inspiron 3541",model:"Inspiron 3541"},{regex:"XPS 15 9530",model:"XPS 15 9530"},{regex:"XPS 15 9550",model:"XPS 15 9550"}]},HP$1={regex:"FBMD/((?:Compaq|HP) |23-f364)",device:"desktop",models:[{regex:"Compaq Presario CQ61 Notebook PC",model:"Compaq Presario CQ61"},{regex:"HP Pavilion x2 Detachable",model:"Pavilion x2"},{regex:"HP Laptop 15-bs0xx",model:"15 Laptop PC"},{regex:"HP ENVY x360 Convertible 15-bp0xx",model:"ENVY x360 Convertible PC"},{regex:"HP EliteBook (25[67]0p)",model:"EliteBook $1"},{regex:"HP ProBook (440 G5|6[35]60b)",model:"ProBook $1"},{regex:"HP Pavilion dv6 Notebook PC",model:"Pavilion dv6"},{regex:"HP Pavilion Notebook",model:"Pavilion"},{regex:"HP Spectre x360 Convertible",model:"Spectre x360"},{regex:"HP Pavilion All-in-One 24-r0xx",model:"Pavilion 24-r0xx All-in-One Desktop PC",device:"desktop"},{regex:"23-f364",model:"Pavilion TouchSmart 23-f364 All-in-One Desktop PC",device:"desktop"}]},Lenovo$1={regex:"FBMD/(?:37021C5|80E5|80SM|80VR);",device:"desktop",models:[{regex:"FBMD/37021C5;",model:"ThinkPad Helix 3702"},{regex:"FBMD/80E5;",model:"G50-80"},{regex:"FBMD/80SM;",model:"Ideapad 310-15ISK"},{regex:"FBMD/80VR;",model:"Legion Y720"}]},Schneider={regex:"FBMD/SCL141CTP;",device:"desktop",model:'Notebook 14" Cherry Trail'},Thomson={regex:"FBMD/TH360R12.32CTW;",device:"desktop",model:"Prestige TH-360R12.32CTW"},Toshiba$1={regex:"FBMD/Satellite ",device:"desktop",models:[{regex:"Satellite (A[25]00|C650|C855|L650|S855)",model:"Satellite $1"},{regex:"Satellite ([^;\\)]+);",model:"Satellite $1"}]},require$$0$4={Acer:Acer$1,Asus:Asus$1,Dell:Dell$1,HP:HP$1,Lenovo:Lenovo$1,Schneider:Schneider,Thomson:Thomson,Toshiba:Toshiba$1},__importDefault$6=commonjsGlobal&&commonjsGlobal.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(notebooks,"__esModule",{value:!0});const notebooks_json_1=__importDefault$6(require$$0$4),variable_replacement_1$2=variableReplacement,user_agent_1$5=userAgent,model_1=model;class NotebooksParser{constructor(){this.parse=e=>{var t={type:"",brand:"",model:""};if(user_agent_1$5.userAgentParser("FBMD/",e))for(var[r,o]of Object.entries(notebooks_json_1.default)){var a=user_agent_1$5.userAgentParser(o.regex,e);if(a){if(t.type="desktop",t.brand=r,"model"in o&&o.model)t.model=model_1.buildModel(variable_replacement_1$2.variableReplacement(o.model,a)).trim();else if("models"in o&&o.models)for(const r of o.models){var i=user_agent_1$5.userAgentParser(r.regex,e);i&&(t.model=variable_replacement_1$2.variableReplacement(r.model,i).trim())}break}}return t}}}notebooks.default=NotebooksParser;var portableMediaPlayers={},Apple={regex:"(?:Apple-)?iPod",device:"portable media player",models:[{regex:"(?:Apple-)?iPod1[C,]1",model:"iPod Touch 1G"},{regex:"(?:Apple-)?iPod2[C,]1",model:"iPod Touch 2G"},{regex:"(?:Apple-)?iPod3[C,]1",model:"iPod Touch 3"},{regex:"(?:Apple-)?iPod4[C,]1",model:"iPod Touch 4"},{regex:"(?:Apple-)?iPod5[C,]1",model:"iPod Touch 5"},{regex:"(?:Apple-)?iPod7[C,]1",model:"iPod Touch 6"},{regex:"(?:Apple-)?iPod",model:"iPod Touch"}]},Cowon={regex:"COWON ([^;/]+) Build",device:"portable media player",model:"$1"},Microsoft={regex:"Microsoft ZuneHD",device:"portable media player",model:"Zune HD"},Panasonic={regex:"(SV-MV100)",device:"portable media player",model:"$1"},Samsung$1={regex:"YP-(G[SIPB]?1|G[57]0|GB70D)",device:"portable media player",models:[{regex:"YP-G[B]?1",model:"Galaxy Player 4.0"},{regex:"YP-G70",model:"Galaxy Player 5.0"},{regex:"YP-GS1",model:"Galaxy Player 3.6"},{regex:"YP-GI1",model:"Galaxy Player 4.2"},{regex:"YP-GP1",model:"Galaxy Player 5.8"},{regex:"YP-G50",model:"Galaxy Player 50"},{regex:"YP-GB70D",model:"Galaxy Player 70 Plus"}]},Wizz={regex:"(DV-PTB1080)(?:[);/ ]|$)",device:"portable media player",model:"$1"},SONOS={regex:"Sonos/.+\\((?:ZP.+)\\)|Sonos;",device:"portable media player",models:[{regex:"\\((ZPS(?:[13569]|1[1-578]|2[03])|ZP90)\\)",model:"$1"},{regex:"Sonos;Play5;",model:"Play:5"},{regex:"Sonos;One;",model:"One"}]},require$$0$3={Apple:Apple,Cowon:Cowon,Microsoft:Microsoft,Panasonic:Panasonic,Samsung:Samsung$1,Wizz:Wizz,SONOS:SONOS},__importDefault$5=commonjsGlobal&&commonjsGlobal.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(portableMediaPlayers,"__esModule",{value:!0});const portable_media_player_json_1=__importDefault$5(require$$0$3),variable_replacement_1$1=variableReplacement,user_agent_1$4=userAgent;class PortableMediaPlayersParser{constructor(){this.parse=e=>{var t,r,o={type:"",brand:"",model:""};for([t,r]of Object.entries(portable_media_player_json_1.default)){var a=user_agent_1$4.userAgentParser(r.regex,e);if(a){if(o.type=r.device,o.brand=t,"model"in r&&r.model)o.model=variable_replacement_1$1.variableReplacement(r.model,a).trim();else if("models"in r&&r.models)for(const t of r.models){var i=user_agent_1$4.userAgentParser(t.regex,e);if(i){o.model=variable_replacement_1$1.variableReplacement(t.model,i).trim();break}}break}}return o}}}portableMediaPlayers.default=PortableMediaPlayersParser;var __importDefault$4=commonjsGlobal&&commonjsGlobal.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(device,"__esModule",{value:!0});const cameras_1=__importDefault$4(cameras),mobiles_1=__importDefault$4(mobiles),televisions_1=__importDefault$4(televisions),cars_1=__importDefault$4(cars),consoles_1=__importDefault$4(consoles),notebooks_1=__importDefault$4(notebooks),portable_media_players_1=__importDefault$4(portableMediaPlayers),deviceParsers=[consoles_1.default,cars_1.default,cameras_1.default,televisions_1.default,portable_media_players_1.default,mobiles_1.default,notebooks_1.default];class ClientParser{constructor(){this.parse=e=>{for(const r of deviceParsers){var t=(new r).parse(e);if(""!==t.type)return t}return null}}}device.default=ClientParser;var operatingSystem$1={},require$$0$2=[{regex:"Grid OS (\\d+[\\.\\d]+)",name:"GridOS",version:"$1"},{regex:"CaixaMagica",name:"Caixa Mágica",version:""},{regex:"Mageia; Linux",name:"Mageia",version:""},{regex:"(?:WH|WhaleTV/)(\\d+[\\.\\d]+)",name:"Whale OS",version:"$1"},{regex:"Tizen[ /]?(\\d+[\\.\\d]+)?",name:"Tizen",version:"$1"},{regex:"Sailfish|Jolla",name:"Sailfish OS",version:""},{regex:"(?:Ali)?YunOS[ /]?(\\d+[\\.\\d]+)?",name:"YunOS",version:"$1"},{regex:"Windows Phone;FBSV/(\\d+[\\.\\d]+)",name:"Windows Phone",version:"$1"},{regex:"(?:Windows Phone (?:OS)?|wds)[ /]?(\\d+[\\.\\d]+)",name:"Windows Phone",version:"$1"},{regex:"XBLWP7|Windows Phone",name:"Windows Phone",version:""},{regex:"Windows CE(?: (\\d+[\\.\\d]+))?",name:"Windows CE",version:"$1"},{regex:"(?:IEMobile|Windows ?Mobile)(?: (\\d+[\\.\\d]+))?",name:"Windows Mobile",version:"$1"},{regex:"Windows NT 6.2; ARM;",name:"Windows RT",version:""},{regex:"Windows NT 6.3; ARM;",name:"Windows RT",version:"8.1"},{regex:"Windows IoT 10.0",name:"Windows IoT",version:"10"},{regex:"KAIOS(?:/(\\d+[\\.\\d]+))?",name:"KaiOS",version:"$1"},{regex:"RazoDroiD(?: v(\\d+[\\.\\d]*))?",name:"RazoDroiD",version:"$1"},{regex:"MildWild(?: CM-(\\d+[\\.\\d]*))?",name:"MildWild",version:"$1"},{regex:"CyanogenMod(?:[\\-/](?:CM)?(\\d+[\\.\\d]*))?",name:"CyanogenMod",version:"$1"},{regex:"(?:.*_)?MocorDroid(?:(\\d+[\\.\\d]*))?",name:"MocorDroid",version:"$1"},{regex:"Fire OS(?:/(\\d+[\\.\\d]*))?",name:"Fire OS",version:"$1"},{regex:"AFTSO001",name:"Fire OS",version:"7"},{regex:"FydeOS",name:"FydeOS",version:""},{regex:"(?:Podbean|Podimo)(?:.+)?/Android",name:"Android",version:""},{regex:"Pinterest for Android/.+; (\\d(?:[\\d\\.]+)?)\\)$",name:"Android",version:"$1"},{regex:"Android; (\\d+[\\.\\d]*); Mobile;",name:"Android",version:"$1"},{regex:"[ ]([\\d\\.]+)\\) AppleWebKit.*ROBLOX Android App",name:"Android",version:"$1"},{regex:"(?:(?:Orca-)?Android|Adr)[ /]?(?:[a-z]+ )?(\\d+[\\.\\d]*)",name:"Android",version:"$1"},{regex:"(?:Allview_TX1_Quasar|Cosmote_My_mini_Tab) (\\d+[\\.\\d]*)",name:"Android",version:"$1"},{regex:"Android ?(?:jelly bean|Kit Kat|S.O. Ginger Bread|The FireCyano|:) (\\d+[\\.\\d]*)",name:"Android",version:"$1"},{regex:"(?:Orca-Android|FB4A).*FBSV/(\\d+[\\.\\d]*);",name:"Android",version:"$1"},{regex:" Adr |Android|Silk-Accelerated=[a-z]{4,5}",name:"Android",version:""},{regex:"(?:TwitterAndroid).*[ /](?:[a-z]+ )?(\\d+[\\.\\d]*)",name:"Android",version:"$1"},{regex:"BeyondPod|AntennaPod|Podkicker|DoggCatcher|Player FM|okhttp|Podcatcher Deluxe|.+K_?Android_?TV_|Sonos/.+\\(ACR_",name:"Android",version:""},{regex:"Linux; Andr0id[; ](\\d+[\\.\\d]*)",name:"Android",version:"$1"},{regex:"Linux; diordnA[; ](\\d+[\\.\\d]*)",name:"Android",version:"$1"},{regex:"AmigaOS[ ]?(\\d+[\\.\\d]+)",name:"AmigaOS",version:"$1"},{regex:"AmigaOS|AmigaVoyager|Amiga-AWeb",name:"AmigaOS",version:""},{regex:"ThreadX(?:/(\\d+[\\.\\d]*))?",name:"ThreadX",version:"$1"},{regex:"Nucleus(?:(?: |/v?)(\\d+[\\.\\d]*))?",name:"MTK / Nucleus",version:"$1"},{regex:"MTK(?:(?: |/v?)(\\d+[\\.\\d]*))?",name:"MTK / Nucleus",version:"$1"},{regex:"MRE/(\\d+)\\.(\\d+).*;MAUI",name:"MRE",version:"$1.$2"},{regex:"dvkbuntu",name:"DVKBuntu",version:""},{regex:"Helio/(\\d+[\\.\\d]+)",name:"Lumin OS",version:"$1"},{regex:"HasCodingOs (\\d+[\\.\\d]+)",name:"HasCodingOS",version:"$1"},{regex:"PCLinuxOS/(\\d+[\\.\\d]+)",name:"PCLinuxOS",version:"$1"},{regex:"(Ordissimo|webissimo3)",name:"Ordissimo",version:""},{regex:"(?:Win|Sistema )Fenix",name:"Fenix",version:""},{regex:"TOS; Linux",name:"TmaxOS",version:""},{regex:"Maemo",name:"Maemo",version:""},{regex:"Arch ?Linux(?:[ /\\-](\\d+[\\.\\d]+))?",name:"Arch Linux",version:"$1"},{regex:"VectorLinux(?: package)?(?:[ /\\-](\\d+[\\.\\d]+))?",name:"VectorLinux",version:"$1"},{regex:"Linux; .*((?:Debian|Knoppix|Mint|Ubuntu|Kubuntu|Xubuntu|Lubuntu|Fedora|Red Hat|Mandriva|Gentoo|Sabayon|Slackware|SUSE|CentOS|BackTrack))[ /](\\d+[\\.\\d]+)",name:"$1",version:"$2"},{regex:"Deepin[ /](\\d+[\\.\\d]+)",name:"Deepin",version:"$1"},{regex:"(Debian|Knoppix|Mint(?! Browser)|Ubuntu|Kubuntu|Xubuntu|Lubuntu|Fedora|Red Hat|Mandriva|Gentoo|Sabayon|Slackware|SUSE|CentOS|BackTrack|Freebox)(?:(?: Enterprise)? Linux)?(?:[ /\\-](\\d+[\\.\\d]+))?",name:"$1",version:"$2"},{regex:"OS ROSA; Linux",name:"Rosa",version:""},{regex:"WEBOS(\\d+[\\.\\d]+)",name:"webOS",version:"$1"},{regex:"Web0S; Linux/SmartTV.+Chrome/68",name:"webOS",version:"5"},{regex:"Web0S; Linux/SmartTV.+Chrome/53",name:"webOS",version:"4"},{regex:"Web0S; Linux/SmartTV.+Chrome/38",name:"webOS",version:"3"},{regex:"Web0S; Linux/SmartTV.+Safari/538",name:"webOS",version:"2"},{regex:"Web0S; Linux/SmartTV.+Safari/537",name:"webOS",version:"1"},{regex:"(?:Web0S; .*WEBOS|webOS|web0S|Palm webOS|hpwOS)(?:[/]?(\\d+[\\.\\d]+))?",name:"webOS",version:"$1"},{regex:"(?:PalmOS|Palm OS)(?:[/ ](\\d+[\\.\\d]+))?|Palm",name:"palmOS",version:"$1"},{regex:"Xiino(?:.*v\\. (\\d+[\\.\\d]+))?",name:"palmOS",version:"$1"},{regex:"MorphOS(?:[ /](\\d+[\\.\\d]+))?",name:"MorphOS",version:"$1"},{regex:"FBW.+FBSV/(\\d+[\\.\\d]*);",name:"Windows",version:"$1"},{regex:"mingw32",name:"Windows",version:""},{regex:"Windows/(\\d+\\.\\d+)",name:"Windows",version:"$1"},{regex:"CYGWIN_NT-10.0|Windows NT 10.0|Windows 10",name:"Windows",version:"10"},{regex:"CYGWIN_NT-6.4|Windows NT 6.4|Windows 10|win10",name:"Windows",version:"10"},{regex:"CYGWIN_NT-6.3|Windows NT 6.3|Windows 8.1",name:"Windows",version:"8.1"},{regex:"CYGWIN_NT-6.2|Windows NT 6.2|Windows 8",name:"Windows",version:"8"},{regex:"CYGWIN_NT-6.1|Windows NT 6.1|Windows 7|win7",name:"Windows",version:"7"},{regex:"CYGWIN_NT-6.0|Windows NT 6.0|Windows Vista",name:"Windows",version:"Vista"},{regex:"CYGWIN_NT-5.2|Windows NT 5.2|Windows Server 2003 / XP x64",name:"Windows",version:"Server 2003"},{regex:"CYGWIN_NT-5.1|Windows NT 5.1|Windows XP",name:"Windows",version:"XP"},{regex:"CYGWIN_NT-5.0|Windows NT 5.0|Windows 2000",name:"Windows",version:"2000"},{regex:"CYGWIN_NT-4.0|Windows NT 4.0|WinNT|Windows NT",name:"Windows",version:"NT"},{regex:"CYGWIN_ME-4.90|Win 9x 4.90|Windows ME",name:"Windows",version:"ME"},{regex:"CYGWIN_98-4.10|Win98|Windows 98",name:"Windows",version:"98"},{regex:"CYGWIN_95-4.0|Win32|Win95|Windows 95|Windows_95",name:"Windows",version:"95"},{regex:"Windows 3.1",name:"Windows",version:"3.1"},{regex:"Windows",name:"Windows",version:""},{regex:"Haiku",name:"Haiku OS",version:""},{regex:"(?:Watch1,[12]/|Watch OS,|watchOS[ /])(\\d+[\\.\\d]*)",name:"watchOS",version:"$1"},{regex:"iPad/([89]|1[012]).(\\d+[\\.\\d]*)",name:"iOS",version:"$1.$2"},{regex:"Pinterest for iOS/.+; (\\d(?:[\\d\\.]+)?)\\)$",name:"iOS",version:"$1"},{regex:"CFNetwork/.+ Darwin/20.4.0(?!.*x86_64)",name:"iOS",version:"14.5"},{regex:"CFNetwork/.+ Darwin/20.3.0(?!.*x86_64)",name:"iOS",version:"14.4"},{regex:"CFNetwork/.+ Darwin/20.2.0(?!.*x86_64)",name:"iOS",version:"14.3"},{regex:"CFNetwork/.+ Darwin/20.1.0(?!.*x86_64)",name:"iOS",version:"14.2"},{regex:"CFNetwork/.+ Darwin/20.0.0(?!.*x86_64)",name:"iOS",version:"14.0"},{regex:"CFNetwork/.+ Darwin/19.6.0(?!.*x86_64)",name:"iOS",version:"13.6"},{regex:"CFNetwork/.+ Darwin/19.5.0(?!.*x86_64)",name:"iOS",version:"13.5"},{regex:"CFNetwork/.+ Darwin/19.4.0(?!.*x86_64)",name:"iOS",version:"13.4"},{regex:"CFNetwork/.+ Darwin/19.3.0(?!.*x86_64)",name:"iOS",version:"13.3.1"},{regex:"CFNetwork/.+ Darwin/19.2.0(?!.*x86_64)",name:"iOS",version:"13.3"},{regex:"CFNetwork/.+ Darwin/19.0.0(?!.*x86_64)",name:"iOS",version:"13.0"},{regex:"CFNetwork/.+ Darwin/18.7.0(?!.*x86_64)",name:"iOS",version:"12.4"},{regex:"CFNetwork/.+ Darwin/18.6.0(?!.*x86_64)",name:"iOS",version:"12.3"},{regex:"CFNetwork/.+ Darwin/18.5.0(?!.*x86_64)",name:"iOS",version:"12.2"},{regex:"CFNetwork/.+ Darwin/18.2.0(?!.*x86_64)",name:"iOS",version:"12.1"},{regex:"CFNetwork/.+ Darwin/18.0.0(?!.*x86_64)",name:"iOS",version:"12.0"},{regex:"CFNetwork/.+ Darwin/17.7.0(?!.*x86_64)",name:"iOS",version:"11.4.1"},{regex:"CFNetwork/.+ Darwin/17.6.0(?!.*x86_64)",name:"iOS",version:"11.4"},{regex:"CFNetwork/889(?!.*x86_64)",name:"iOS",version:"11.1"},{regex:"CFNetwork/887(?!.*x86_64)",name:"iOS",version:"11.0"},{regex:"CFNetwork/811(?!.*x86_64)",name:"iOS",version:"10.3"},{regex:"CFNetwork/808\\.3",name:"iOS",version:"10.3"},{regex:"CFNetwork/808\\.2",name:"iOS",version:"10.2"},{regex:"CFNetwork/808\\.1",name:"iOS",version:"10.1"},{regex:"CFNetwork/808\\.0",name:"iOS",version:"10.0"},{regex:"CFNetwork/808",name:"iOS",version:"10"},{regex:"CFNetwork/758\\.4\\.3",name:"iOS",version:"9.3.2"},{regex:"CFNetwork/758\\.3\\.15",name:"iOS",version:"9.3"},{regex:"CFNetwork/758\\.2\\.[78]",name:"iOS",version:"9.2"},{regex:"CFNetwork/758\\.1\\.6",name:"iOS",version:"9.1"},{regex:"CFNetwork/758\\.0\\.2",name:"iOS",version:"9.0"},{regex:"CFNetwork/711\\.5\\.6",name:"iOS",version:"8.4.1"},{regex:"CFNetwork/711\\.4\\.6",name:"iOS",version:"8.4"},{regex:"CFNetwork/711\\.3\\.18",name:"iOS",version:"8.3"},{regex:"CFNetwork/711\\.2\\.23",name:"iOS",version:"8.2"},{regex:"CFNetwork/711\\.1\\.1[26]",name:"iOS",version:"8.1"},{regex:"CFNetwork/711\\.0\\.6",name:"iOS",version:"8.0"},{regex:"CFNetwork/672\\.1",name:"iOS",version:"7.1"},{regex:"CFNetwork/672\\.0",name:"iOS",version:"7.0"},{regex:"CFNetwork/609\\.1",name:"iOS",version:"6.1"},{regex:"CFNetwork/60[29]",name:"iOS",version:"6.0"},{regex:"CFNetwork/548\\.1",name:"iOS",version:"5.1"},{regex:"CFNetwork/548\\.0",name:"iOS",version:"5.0"},{regex:"CFNetwork/485\\.13",name:"iOS",version:"4.3"},{regex:"CFNetwork/485\\.12",name:"iOS",version:"4.2"},{regex:"CFNetwork/485\\.10",name:"iOS",version:"4.1"},{regex:"CFNetwork/485\\.2",name:"iOS",version:"4.0"},{regex:"CFNetwork/467\\.12",name:"iOS",version:"3.2"},{regex:"CFNetwork/459",name:"iOS",version:"3.1"},{regex:"iPhone/(\\d+[\\.\\d]*) hw/",name:"iOS",version:"$1"},{regex:"iOS(\\d+\\.\\d+\\.\\d+)",name:"iOS",version:"$1"},{regex:"iOS(\\d+)\\.(\\d+)0",name:"iOS",version:"$1.$2"},{regex:"iPhone OS ([0-9]{1})([0-9]{1})([0-9]{1})",name:"iOS",version:"$1.$2.$3"},{regex:"(?:CPU OS|iPh(?:one)?[ _]OS|iOS)[ _/](\\d+(?:[_\\.]\\d+)*)",name:"iOS",version:"$1"},{regex:"(?:FBIOS|Messenger(?:Lite)?ForiOS).*FBSV/ ?(\\d+[\\.\\d]*);",name:"iOS",version:"$1"},{regex:"(?:Apple-)?(?:iPhone|iPad|iPod)(?:.*Mac OS X.*Version/(\\d+\\.\\d+)|; Opera)?",name:"iOS",version:"$1"},{regex:"(?:Podcasts/(?:[\\d\\.]+)|Instacast(?:HD)?/(?:\\d\\.[\\d\\.abc]+)|Pocket Casts, iOS|\\(iOS\\)|iOS; Opera|Overcast|Castro|Podcat|iCatcher|RSSRadio/|MobileSafari/)(?!.*x86_64)",name:"iOS",version:""},{regex:"iTunes-(iPod|iPad|iPhone)/(?:[\\d\\.]+)",name:"iOS",version:""},{regex:"iOS/Version ([\\d\\.]+)",name:"iOS",version:"$1"},{regex:"Sonos/.+\\(ICRU_",name:"iOS",version:""},{regex:"CFNetwork/.+ Darwin/20.2.0.*(x86_64)|(x86_64-apple-)?darwin20.2.0",name:"Mac",version:"11.1"},{regex:"CFNetwork/.+ Darwin/20.[01].0.*(x86_64)|(x86_64-apple-)?darwin20.[01].0",name:"Mac",version:"11.0"},{regex:"CFNetwork/.+ Darwin/19.6.0.*(x86_64)|(x86_64-apple-)?darwin19.6.0",name:"Mac",version:"10.15.6"},{regex:"CFNetwork/.+ Darwin/19.5.0.*(x86_64)|(x86_64-apple-)?darwin19.5.0",name:"Mac",version:"10.15.5"},{regex:"CFNetwork/.+ Darwin/19.4.0.*(x86_64)|(x86_64-apple-)?darwin19.4.0",name:"Mac",version:"10.15.4"},{regex:"CFNetwork/.+ Darwin/19.3.0.*(x86_64)|(x86_64-apple-)?darwin19.3.0",name:"Mac",version:"10.15.3"},{regex:"CFNetwork/.+ Darwin/19.2.0.*(x86_64)|(x86_64-apple-)?darwin19.2.0",name:"Mac",version:"10.15.2"},{regex:"CFNetwork/(?:108[258]|109[18]|1103).*(x86_64)",name:"Mac",version:"10.15"},{regex:"CFNetwork/.+ Darwin/18.2.0.*(x86_64)|(x86_64-apple-)?darwin18.2.0",name:"Mac",version:"10.14.1"},{regex:"CFNetwork/(?:96[29]|97[14568]).*(x86_64)",name:"Mac",version:"10.14"},{regex:"CFNetwork/.+ Darwin/17.7.0.*(x86_64)|(x86_64-apple-)?darwin17.7.0",name:"Mac",version:"10.13.6"},{regex:"CFNetwork/.+ Darwin/17.6.0.*(x86_64)|(x86_64-apple-)?darwin17.6.0",name:"Mac",version:"10.13.5"},{regex:"CFNetwork/.+ Darwin/17.5.0.*(x86_64)|(x86_64-apple-)?darwin17.5.0",name:"Mac",version:"10.13.4"},{regex:"CFNetwork/.+ Darwin/17.4.0.*(x86_64)|(x86_64-apple-)?darwin17.4.0",name:"Mac",version:"10.13.3"},{regex:"CFNetwork/.+ Darwin/17.3.0.*(x86_64)|(x86_64-apple-)?darwin17.3.0",name:"Mac",version:"10.13.2"},{regex:"CFNetwork/.+ Darwin/17.2.0.*(x86_64)|(x86_64-apple-)?darwin17.2.0",name:"Mac",version:"10.13.1"},{regex:"CFNetwork/(?:887|889|893|897|901|902).*(x86_64)",name:"Mac",version:"10.13"},{regex:"CFNetwork/.+ Darwin/16.7.0.*(x86_64)|(x86_64-apple-)?darwin16.7.0",name:"Mac",version:"10.12.6"},{regex:"CFNetwork/.+ Darwin/16.6.0.*(x86_64)|(x86_64-apple-)?darwin16.6.0",name:"Mac",version:"10.12.5"},{regex:"CFNetwork/.+ Darwin/16.5.0.*(x86_64)|(x86_64-apple-)?darwin16.5.0",name:"Mac",version:"10.12.4"},{regex:"CFNetwork/.+ Darwin/16.3.0.*(x86_64)|(x86_64-apple-)?darwin16.3.0",name:"Mac",version:"10.12.3"},{regex:"CFNetwork/.+ Darwin/16.2.0.*(x86_64)|(x86_64-apple-)?darwin16.2.0",name:"Mac",version:"10.12.2"},{regex:"CFNetwork/.+ Darwin/16.1.0.*(x86_64)|(x86_64-apple-)?darwin16.1.0",name:"Mac",version:"10.12.1"},{regex:"CFNetwork/811.*(x86_64)",name:"Mac",version:"10.12"},{regex:"CFNetwork/807",name:"Mac",version:"10.12"},{regex:"CFNetwork/.+ Darwin/15.6.0.*(x86_64)|(x86_64-apple-)?darwin15.6.0",name:"Mac",version:"10.11.6"},{regex:"CFNetwork/.+ Darwin/15.5.0.*(x86_64)|(x86_64-apple-)?darwin15.5.0",name:"Mac",version:"10.11.5"},{regex:"CFNetwork/.+ Darwin/15.4.0.*(x86_64)|(x86_64-apple-)?darwin15.4.0",name:"Mac",version:"10.11.4"},{regex:"CFNetwork/.+ Darwin/15.3.0.*(x86_64)|(x86_64-apple-)?darwin15.3.0",name:"Mac",version:"10.11.3"},{regex:"CFNetwork/.+ Darwin/15.2.0.*(x86_64)|(x86_64-apple-)?darwin15.2.0",name:"Mac",version:"10.11.2"},{regex:"CFNetwork/760",name:"Mac",version:"10.11"},{regex:"CFNetwork/.+ Darwin/14.5.0.*(x86_64)|(x86_64-apple-)?darwin14.5.0",name:"Mac",version:"10.10.5"},{regex:"CFNetwork/.+ Darwin/14.4.0.*(x86_64)|(x86_64-apple-)?darwin14.4.0",name:"Mac",version:"10.10.4"},{regex:"CFNetwork/.+ Darwin/14.3.0.*(x86_64)|(x86_64-apple-)?darwin14.3.0",name:"Mac",version:"10.10.3"},{regex:"CFNetwork/.+ Darwin/14.1.0.*(x86_64)|(x86_64-apple-)?darwin14.1.0",name:"Mac",version:"10.10.2"},{regex:"CFNetwork/720",name:"Mac",version:"10.10"},{regex:"CFNetwork/.+ Darwin/13.4.0.*(x86_64)|(x86_64-apple-)?darwin13.4.0",name:"Mac",version:"10.9.5"},{regex:"CFNetwork/.+ Darwin/13.3.0.*(x86_64)|(x86_64-apple-)?darwin13.3.0",name:"Mac",version:"10.9.4"},{regex:"CFNetwork/.+ Darwin/13.2.0.*(x86_64)|(x86_64-apple-)?darwin13.2.0",name:"Mac",version:"10.9.3"},{regex:"CFNetwork/.+ Darwin/13.1.0.*(x86_64)|(x86_64-apple-)?darwin13.1.0",name:"Mac",version:"10.9.2"},{regex:"CFNetwork/673",name:"Mac",version:"10.9"},{regex:"CFNetwork/.+ Darwin/12.5.0.*(x86_64)|(x86_64-apple-)?darwin12.5.0",name:"Mac",version:"10.8.5"},{regex:"CFNetwork/.+ Darwin/12.4.0.*(x86_64)|(x86_64-apple-)?darwin12.4.0",name:"Mac",version:"10.8.4"},{regex:"CFNetwork/.+ Darwin/12.3.0.*(x86_64)|(x86_64-apple-)?darwin12.3.0",name:"Mac",version:"10.8.3"},{regex:"CFNetwork/.+ Darwin/12.2.0.*(x86_64)|(x86_64-apple-)?darwin12.2.0",name:"Mac",version:"10.8.2"},{regex:"CFNetwork/.+ Darwin/12.1.0.*(x86_64)|(x86_64-apple-)?darwin12.1.0",name:"Mac",version:"10.8.1"},{regex:"CFNetwork/596",name:"Mac",version:"10.8"},{regex:"CFNetwork/.+ Darwin/11.5.0.*(x86_64)|(x86_64-apple-)?darwin11.5.0",name:"Mac",version:"10.7.5"},{regex:"CFNetwork/.+ Darwin/11.4.0.*(x86_64)|(x86_64-apple-)?darwin11.4.0",name:"Mac",version:"10.7.4"},{regex:"CFNetwork/.+ Darwin/11.3.0.*(x86_64)|(x86_64-apple-)?darwin11.3.0",name:"Mac",version:"10.7.3"},{regex:"CFNetwork/.+ Darwin/11.2.0.*(x86_64)|(x86_64-apple-)?darwin11.2.0",name:"Mac",version:"10.7.2"},{regex:"CFNetwork/.+ Darwin/11.1.0.*(x86_64)|(x86_64-apple-)?darwin11.1.0",name:"Mac",version:"10.7.1"},{regex:"CFNetwork/520",name:"Mac",version:"10.7"},{regex:"CFNetwork/454",name:"Mac",version:"10.6"},{regex:"CFNetwork/(?:438|422|339|330|221|220|217)",name:"Mac",version:"10.5"},{regex:"CFNetwork/12[89]",name:"Mac",version:"10.4"},{regex:"CFNetwork/1\\.2",name:"Mac",version:"10.3"},{regex:"CFNetwork/1\\.1",name:"Mac",version:"10.2"},{regex:"Mac[ +]OS[ +]?X(?:[ /](?:Version )?(\\d+(?:[_\\.]\\d+)+))?",name:"Mac",version:"$1"},{regex:"Mac (?:OS/)?(\\d+(?:[_\\.]\\d+)+)",name:"Mac",version:"$1"},{regex:"macOS/(\\d+[\\.\\d]+)",name:"Mac",version:"$1"},{regex:"Darwin|Macintosh|Mac_PowerPC|PPC|Mac PowerPC|iMac|MacBook|macOS|Sonos/.+\\(MDCR_",name:"Mac",version:""},{regex:"SeewoOS x86_64 (\\d+[\\.\\d]+)",name:"SeewoOS",version:"$1"},{regex:"CrOS [a-z0-9_]+ .* Chrome/(\\d+[\\.\\d]+)",name:"Chrome OS",version:"$1"},{regex:"(?:BB10;.+Version|Black[Bb]erry[0-9a-z]+|Black[Bb]erry.+Version)/(\\d+[\\.\\d]+)",name:"BlackBerry OS",version:"$1"},{regex:"RIM Tablet OS (\\d+[\\.\\d]+)",name:"BlackBerry Tablet OS",version:"$1"},{regex:"RIM Tablet OS|QNX|Play[Bb]ook",name:"BlackBerry Tablet OS",version:""},{regex:"BlackBerry",name:"BlackBerry OS",version:""},{regex:"bPod",name:"BlackBerry OS",version:""},{regex:"BeOS",name:"BeOS",version:""},{regex:"Symbian/3.+NokiaBrowser/7\\.3",name:"Symbian^3",version:"Anna"},{regex:"Symbian/3.+NokiaBrowser/7\\.4",name:"Symbian^3",version:"Belle"},{regex:"Symbian/3",name:"Symbian^3",version:""},{regex:"(?:Series ?60|SymbOS|S60)(?:[ /]?(\\d+[\\.\\d]+|V\\d+))?",name:"Symbian OS Series 60",version:"$1"},{regex:"Series40",name:"Symbian OS Series 40",version:""},{regex:"SymbianOS/(\\d+[\\.\\d]+)",name:"Symbian OS",version:"$1"},{regex:"MeeGo|WeTab",name:"MeeGo",version:""},{regex:"Symbian(?: OS)?|SymbOS",name:"Symbian OS",version:""},{regex:"Nokia",name:"Symbian",version:""},{regex:"(?:Mobile|Tablet);.+Firefox/\\d+\\.\\d+",name:"Firefox OS",version:""},{regex:"RISC OS(?:-NC)?(?:[ /](\\d+[\\.\\d]+))?",name:"RISC OS",version:"$1"},{regex:"Inferno(?:[ /](\\d+[\\.\\d]+))?",name:"Inferno",version:"$1"},{regex:"bada(?:[ /](\\d+[\\.\\d]+))?",name:"Bada",version:"$1"},{regex:"(?:Brew(?!-Applet)(?: MP)?|BMP)(?:[ /](\\d+[\\.\\d]+))?",name:"Brew",version:"$1"},{regex:"GoogleTV(?:[ /](\\d+[\\.\\d]+))?",name:"Google TV",version:"$1"},{regex:"AppleTV(?:/?(\\d+[\\.\\d]+))?",name:"Apple TV",version:"$1"},{regex:"WebTV/(\\d+[\\.\\d]+)",name:"WebTV",version:"$1"},{regex:"RemixOS 5.1.1",name:"Remix OS",version:"1"},{regex:"RemixOS 6.0",name:"Remix OS",version:"2"},{regex:"RemixOS",name:"Remix OS",version:""},{regex:"(?:SunOS|Solaris)(?:[/ ](\\d+[\\.\\d]+))?",name:"Solaris",version:"$1"},{regex:"AIX(?:[/ ]?(\\d+[\\.\\d]+))?",name:"AIX",version:"$1"},{regex:"HP-UX(?:[/ ]?(\\d+[\\.\\d]+))?",name:"HP-UX",version:"$1"},{regex:"FreeBSD(?:[/ ]?(\\d+[\\.\\d]+))?",name:"FreeBSD",version:"$1"},{regex:"NetBSD(?:[/ ]?(\\d+[\\.\\d]+))?",name:"NetBSD",version:"$1"},{regex:"OpenBSD(?:[/ ]?(\\d+[\\.\\d]+))?",name:"OpenBSD",version:"$1"},{regex:"DragonFly(?:[/ ]?(\\d+[\\.\\d]+))?",name:"DragonFly",version:"$1"},{regex:"Syllable(?:[/ ]?(\\d+[\\.\\d]+))?",name:"Syllable",version:"$1"},{regex:"IRIX(?:;64)?(?:[/ ]?(\\d+[\\.\\d]+))",name:"IRIX",version:"$1"},{regex:"OSF1(?:[/ ]?v?(\\d+[\\.\\d]+))?",name:"OSF1",version:"$1"},{regex:"Nintendo (Wii|Switch)",name:"Nintendo",version:"$1"},{regex:"PlayStation ?([34])",name:"PlayStation",version:"$1"},{regex:"Xbox|KIN\\.(?:One|Two)",name:"Xbox",version:"360"},{regex:"Nitro|Nintendo ([3]?DS[i]?)",name:"Nintendo Mobile",version:"$1"},{regex:"PlayStation ((?:Portable|Vita))",name:"PlayStation Portable",version:"$1"},{regex:"OS/2",name:"OS/2",version:""},{regex:"Linux(?:OS)?[^a-z]",name:"GNU/Linux",version:""}],operatingSystem={AIX:"AIX",AND:"Android",AMG:"AmigaOS",ATV:"Apple TV",ARL:"Arch Linux",BTR:"BackTrack",SBA:"Bada",BEO:"BeOS",BLB:"BlackBerry OS",QNX:"BlackBerry Tablet OS",BMP:"Brew",CES:"CentOS",COS:"Chrome OS",CYN:"CyanogenMod",DEB:"Debian",DEE:"Deepin",DFB:"DragonFly",FED:"Fedora",FOS:"Firefox OS",FIR:"Fire OS",FRE:"Freebox",BSD:"FreeBSD",FYD:"FydeOS",GNT:"Gentoo",GTV:"Google TV",HPX:"HP-UX",HAI:"Haiku OS",IRI:"IRIX",INF:"Inferno",KOS:"KaiOS",KNO:"Knoppix",KBT:"Kubuntu",LIN:"GNU/Linux",LBT:"Lubuntu",VLN:"VectorLinux",MAC:"Mac",MAE:"Maemo",MDR:"Mandriva",SMG:"MeeGo",MCD:"MocorDroid",MIN:"Mint",MLD:"MildWild",MOR:"MorphOS",NBS:"NetBSD",MTK:"MTK / Nucleus",MRE:"MRE",WII:"Nintendo",NDS:"Nintendo Mobile",OS2:"OS/2",T64:"OSF1",OBS:"OpenBSD",ORD:"Ordissimo",PSP:"PlayStation Portable",PS3:"PlayStation",RHT:"Red Hat",ROS:"RISC OS",RSO:"Rosa",REM:"Remix OS",RZD:"RazoDroiD",SAB:"Sabayon",SSE:"SUSE",SAF:"Sailfish OS",SEE:"SeewoOS",SLW:"Slackware",SOS:"Solaris",SYL:"Syllable",SYM:"Symbian",SYS:"Symbian OS",S40:"Symbian OS Series 40",S60:"Symbian OS Series 60",SY3:"Symbian^3",TDX:"ThreadX",TIZ:"Tizen",TOS:"TmaxOS",UBT:"Ubuntu",WAS:"watchOS",WTV:"WebTV",WHS:"Whale OS",WIN:"Windows",WCE:"Windows CE",WIO:"Windows IoT",WMO:"Windows Mobile",WPH:"Windows Phone",WRT:"Windows RT",XBX:"Xbox",XBT:"Xubuntu",YNS:"YunOs",IOS:"iOS",POS:"palmOS",WOS:"webOS"},osFamilies$1={Android:["AND","CYN","FIR","REM","RZD","MLD","MCD","YNS"],AmigaOS:["AMG","MOR"],"Apple TV":["ATV"],BlackBerry:["BLB","QNX"],Brew:["BMP"],BeOS:["BEO","HAI"],"Chrome OS":["COS","FYD","SEE"],"Firefox OS":["FOS","KOS"],"Gaming Console":["WII","PS3"],"Google TV":["GTV"],IBM:["OS2"],iOS:["IOS","WAS"],"RISC OS":["ROS"],"GNU/Linux":["LIN","ARL","DEB","KNO","MIN","UBT","KBT","XBT","LBT","FED","RHT","VLN","MDR","GNT","SAB","SLW","SSE","CES","BTR","SAF","ORD","TOS","RSO","DEE","FRE"],Mac:["MAC"],"Mobile Gaming Console":["PSP","NDS","XBX"],"Real-time OS":["MTK","TDX","MRE"],"Other Mobile":["WOS","POS","SBA","TIZ","SMG","MAE"],Symbian:["SYM","SYS","SY3","S60","S40"],Unix:["SOS","AIX","HPX","BSD","NBS","OBS","DFB","SYL","IRI","T64","INF"],WebTV:["WTV"],Windows:["WIN"],"Windows Mobile":["WPH","WMO","WCE","WRT","WIO"],"Other Smart TV":["WHS"]},require$$4={operatingSystem:operatingSystem,osFamilies:osFamilies$1},__importDefault$3=commonjsGlobal&&commonjsGlobal.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(operatingSystem$1,"__esModule",{value:!0});const oss_json_1=__importDefault$3(require$$0$2),version_1=version,variable_replacement_1=variableReplacement,user_agent_1$3=userAgent,operating_system_json_1=__importDefault$3(require$$4),desktopOsArray=["AmigaOS","IBM","GNU/Linux","Mac","Unix","Windows","BeOS","Chrome OS"],shortOsNames=operating_system_json_1.default.operatingSystem,osFamilies=operating_system_json_1.default.osFamilies;class OperatingSystemParser{constructor(e){this.options={versionTruncation:1},this.parse=e=>{var t={name:"",version:"",platform:this.parsePlatform(e)};for(const o of oss_json_1.default){var r=user_agent_1$3.userAgentParser(o.regex,e);if(r)return t.name=variable_replacement_1.variableReplacement(o.name,r),t.version=version_1.formatVersion(variable_replacement_1.variableReplacement(o.version,r),this.options.versionTruncation),"lubuntu"===t.name&&(t.name="Lubuntu"),"debian"===t.name&&(t.name="Debian"),"YunOS"===t.name&&(t.name="YunOs"),t}return null},this.parsePlatform=e=>user_agent_1$3.userAgentParser("arm|aarch64|Watch ?OS|Watch1,[12]",e)?"ARM":user_agent_1$3.userAgentParser("mips",e)?"MIPS":user_agent_1$3.userAgentParser("sh4",e)?"SuperH":user_agent_1$3.userAgentParser("WOW64|x64|win64|amd64|x86_?64",e)?"x64":user_agent_1$3.userAgentParser("(?:i[0-9]|x)86|i86pc",e)?"x86":"",this.options=Object.assign(Object.assign({},this.options),e)}}operatingSystem$1.default=OperatingSystemParser,OperatingSystemParser.getDesktopOsArray=()=>desktopOsArray,OperatingSystemParser.getOsFamily=e=>{var t,r,o=OperatingSystemParser.getOsShortName(e);for([t,r]of Object.entries(osFamilies))if(r.includes(o))return t;return""},OperatingSystemParser.getOsShortName=e=>{for(var[t,r]of Object.entries(shortOsNames))if(r===e)return t;return""};var vendorFragment={},Dell=["MDDR(JS)?","MDDC(JS)?","MDDS(JS)?"],Acer=["MAAR(JS)?"],Sony=["MASE(JS)?","MASP(JS)?","MASA(JS)?"],Asus=["MAAU","NP0[26789]","ASJB","ASU2(JS)?"],Samsung=["MASM(JS)?","SMJB"],Lenovo=["MALC(JS)?","MALE(JS)?","MALN(JS)?","LCJB","LEN2"],Toshiba=["MATM(JS)?","MATB(JS)?","MATP(JS)?","TNJB","TAJB"],Medion=["MAMD"],MSI=["MAMI(JS)?","MAM3"],Gateway=["MAGW(JS)?"],Fujitsu=["MAFS(JS)?","FSJB"],Compaq=["CPDTDF","CPNTDF(JS?)","CMNTDF(JS)?","CMDTDF(JS)?"],HP=["HPCMHP","HPNTDF(JS)?","HPDTDF(JS)?"],Hyrican=["MANM(JS)?"],Ordissimo=["Ordissimo","webissimo3"],require$$0$1={Dell:Dell,Acer:Acer,Sony:Sony,Asus:Asus,Samsung:Samsung,Lenovo:Lenovo,Toshiba:Toshiba,Medion:Medion,MSI:MSI,Gateway:Gateway,Fujitsu:Fujitsu,Compaq:Compaq,HP:HP,Hyrican:Hyrican,Ordissimo:Ordissimo},__importDefault$2=commonjsGlobal&&commonjsGlobal.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(vendorFragment,"__esModule",{value:!0});const vendorfragments_json_1=__importDefault$2(require$$0$1),user_agent_1$2=userAgent;class VendorFragmentParser{constructor(){this.parse=e=>{for(var[t,r]of Object.entries(vendorfragments_json_1.default))for(const o of r)if(user_agent_1$2.userAgentParser(o,e))return t;return""}}}vendorFragment.default=VendorFragmentParser;var require$$0=[{regex:"360Spider(-Image|-Video)?",name:"360Spider",category:"Search bot",url:"https://www.so.com/help/help_3_2.html",producer:{name:"Online Media Group, Inc.",url:""}},{regex:"Aboundex",name:"Aboundexbot",category:"Search bot",url:"http://www.aboundex.com/crawler/",producer:{name:"Aboundex.com",url:"http://www.aboundex.com"}},{regex:"AcoonBot",name:"Acoon",category:"Search bot",url:"http://www.acoon.de/robot.asp",producer:{name:"Acoon GmbH",url:"http://www.acoon.de"}},{regex:"AddThis\\.com",name:"AddThis.com",category:"Social Media Agent",url:"",producer:{name:"Clearspring Technologies, Inc.",url:"http://www.clearspring.com"}},{regex:"AhrefsBot",name:"aHrefs Bot",category:"Crawler",url:"https://ahrefs.com/robot",producer:{name:"Ahrefs Pte Ltd",url:"https://ahrefs.com/robot"}},{regex:"ia_archiver|alexabot|verifybot",name:"Alexa Crawler",category:"Search bot",url:"https://support.alexa.com/hc/en-us/sections/200100794-Crawlers",producer:{name:"Alexa Internet",url:"https://www.alexa.com"}},{regex:"alexa site audit",name:"Alexa Site Audit",category:"Site Monitor",url:"https://support.alexa.com/hc/en-us/articles/200450194",producer:{name:"Alexa Internet",url:"https://www.alexa.com"}},{regex:"Amazon[ -]Route ?53[ -]Health[ -]Check[ -]Service",name:"Amazon Route53 Health Check",category:"Service Agent",producer:{name:"Amazon Web Services",url:"https://aws.amazon.com/"}},{regex:"AmorankSpider",name:"Amorank Spider",category:"Crawler",url:"http://amorank.com/webcrawler.html",producer:{name:"Amorank",url:"http://www.amorank.com"}},{regex:"ApacheBench",name:"ApacheBench",category:"Benchmark",url:"https://httpd.apache.org/docs/2.4/programs/ab.html",producer:{name:"The Apache Software Foundation",url:"https://www.apache.org/foundation/"}},{regex:"Applebot",name:"Applebot",category:"Crawler",url:"https://support.apple.com/en-us/HT204683",producer:{name:"Apple Inc",url:"https://www.apple.com"}},{regex:"AppSignalBot",name:"AppSignalBot",category:"Site Monitor",url:"https://docs.appsignal.com/uptime-monitoring/",producer:{name:"AppSignal",url:"https://appsignal.com/"}},{regex:"Arachni",name:"Arachni",category:"Security Checker",url:"https://www.arachni-scanner.com/",producer:{name:"Sarosys LLC",url:"https://www.sarosys.com/"}},{regex:"AspiegelBot",name:"AspiegelBot",category:"Crawler",url:"https://aspiegel.com/",producer:{name:"Huawei",url:"https://www.huawei.com/"}},{regex:"Castro 2, Episode Duration Lookup",name:"Castro 2",category:"Service Agent",url:"http://supertop.co/castro/",producer:{name:"Supertop",url:"http://supertop.co"}},{regex:"Curious George",name:"Analytics SEO Crawler",category:"Crawler",url:"http://www.analyticsseo.com/crawler",producer:{name:"Analytics SEO",url:"http://www.analyticsseo.com"}},{regex:"archive\\.org_bot|special_archiver",name:"archive.org bot",category:"Crawler",url:"https://archive.org/details/archive.org_bot",producer:{name:"The Internet Archive",url:"https://archive.org"}},{regex:"Ask Jeeves/Teoma",name:"Ask Jeeves",category:"Search bot",url:"",producer:{name:"Ask Jeeves Inc.",url:"http://www.ask.com"}},{regex:"Backlink-Check\\.de",name:"Backlink-Check.de",category:"Crawler",url:"http://www.backlink-check.de/bot.html",producer:{name:"Mediagreen Medienservice",url:"http://www.backlink-check.de"}},{regex:"BacklinkCrawler",name:"BacklinkCrawler",category:"Crawler",url:"http://www.backlinktest.com/crawler.html",producer:{name:"2.0Promotion GbR",url:"http://www.backlinktest.com"}},{regex:"baiduspider(-image)?|baidu Transcoder|baidu.*spider",name:"Baidu Spider",category:"Search bot",url:"http://www.baidu.com/search/spider.htm",producer:{name:"Baidu",url:"http://www.baidu.com"}},{regex:"BazQux",name:"BazQux Reader",url:"https://bazqux.com/fetcher",category:"Feed Fetcher",producer:{name:"",url:""}},{regex:"MSNBot|msrbot|bingbot|BingPreview|msnbot-(UDiscovery|NewsBlogs)|adidxbot",name:"BingBot",category:"Search bot",url:"http://search.msn.com/msnbot.htmn",producer:{name:"Microsoft Corporation",url:"http://www.microsoft.com"}},{regex:"Blekkobot",name:"Blekkobot",category:"Search bot",url:"http://blekko.com/about/blekkobot",producer:{name:"Blekko",url:"http://blekko.com"}},{regex:"BLEXBot(Test)?",name:"BLEXBot Crawler",category:"Crawler",url:"http://webmeup-crawler.com",producer:{name:"WebMeUp",url:"http://webmeup.com"}},{regex:"Bloglovin",name:"Bloglovin",url:"http://www.bloglovin.com",category:"Feed Fetcher",producer:{name:"",url:""}},{regex:"Blogtrottr",name:"Blogtrottr",url:"",category:"Feed Fetcher",producer:{name:"Blogtrottr Ltd",url:"https://blogtrottr.com/"}},{regex:"BoardReader Blog Indexer",name:"BoardReader Blog Indexer",category:"Crawler",producer:{name:"BoardReader",url:"https://boardreader.com/"}},{regex:"BountiiBot",name:"Bountii Bot",category:"Search bot",url:"http://bountii.com/contact.php",producer:{name:"Bountii Inc.",url:"http://bountii.com"}},{regex:"Browsershots",name:"Browsershots",category:"Service Agent",url:"http://browsershots.org/faq",producer:{name:"Browsershots.org",url:"http://browsershots.org"}},{regex:"BUbiNG",name:"BUbiNG",category:"Crawler",url:"http://law.di.unimi.it/BUbiNG.html",producer:{name:"The Laboratory for Web Algorithmics (LAW)",url:"http://law.di.unimi.it/software.php#buging"}},{regex:"(?<!HTC)[ _]Butterfly/",name:"Butterfly Robot",category:"Search bot",url:"http://labs.topsy.com/butterfly",producer:{name:"Topsy Labs",url:"http://labs.topsy.com"}},{regex:"CareerBot",name:"CareerBot",category:"Crawler",url:"http://www.career-x.de/bot.html",producer:{name:"career-x GmbH",url:"http://www.career-x.de"}},{regex:"CCBot",name:"ccBot crawler",category:"Crawler",url:"http://commoncrawl.org/faq/",producer:{name:"reddit inc.",url:"http://www.reddit.com"}},{regex:"Cliqzbot",name:"Cliqzbot",category:"Crawler",url:"http://cliqz.com/company/cliqzbot",producer:{name:"10betterpages GmbH",url:"http://cliqz.com"}},{regex:"Cloudflare-AMP",name:"CloudFlare AMP Fetcher",category:"Crawler",url:"https://amp.cloudflare.com/doc/fetcher.html",producer:{name:"CloudFlare",url:"http://www.cloudflare.com"}},{regex:"CloudflareDiagnostics",name:"Cloudflare Diagnostics",category:"Site Monitor",url:"https://www.cloudflare.com/",producer:{name:"Cloudflare",url:"https://www.cloudflare.com"}},{regex:"CloudFlare-AlwaysOnline",name:"CloudFlare Always Online",category:"Site Monitor",url:"http://www.cloudflare.com/always-online",producer:{name:"CloudFlare",url:"http://www.cloudflare.com"}},{regex:"coccoc.com",name:"Cốc Cốc Bot",url:"https://help.coccoc.com/en/search-engine/coccoc-robots",category:"Search bot",producer:{name:"Cốc Cốc",url:"https://coccoc.com/"}},{regex:"collectd",name:"Collectd",url:"https://collectd.org/",category:"Site Monitor",producer:{name:"Collectd",url:"https://collectd.org/"}},{regex:"CommaFeed",name:"CommaFeed",url:"http://www.commafeed.com",category:"Feed Fetcher",producer:{name:"",url:""}},{regex:"CSS Certificate Spider",name:"CSS Certificate Spider",category:"Crawler",url:"http://www.css-security.com/certificatespider/",producer:{name:"Certified Security Solutions",url:"https://www.css-security.com/company/about-us/"}},{regex:"Datadog Agent",name:"Datadog Agent",url:"https://github.com/DataDog/dd-agent",category:"Site Monitor",producer:{name:"Datadog",url:"https://www.datadoghq.com/"}},{regex:"Datanyze",name:"Datanyze",url:"",category:"Crawler",producer:{name:"Datanyze",url:"https://www.datanyze.com"}},{regex:"Dataprovider",name:"Dataprovider",category:"Crawler",url:"",producer:{name:"Dataprovider B.V.",url:"https://www.dataprovider.com/"}},{regex:"Daum(oa)?[ /][0-9]",name:"Daum",category:"Search bot",url:"http://tab.search.daum.net/aboutWebSearch_en.html",producer:{name:"Daum Communications Corp.",url:"http://www.kakaocorp.com/main"}},{regex:"Dazoobot",name:"Dazoobot",category:"Search bot",url:"",producer:{name:"DAZOO.FR",url:"http://dazoo.fr"}},{regex:"discobot(-news)?",name:"Discobot",category:"Search bot",url:"http://discoveryengine.com/discobot.html",producer:{name:"Discovery Engine",url:"http://discoveryengine.com"}},{regex:"Domain Re-Animator Bot|support@domainreanimator.com",name:"Domain Re-Animator Bot",category:"Crawler",url:"",producer:{name:"Domain Re-Animator, LLC",url:"http://domainreanimator.com"}},{regex:"DotBot",name:"DotBot",category:"Crawler",url:"http://www.opensiteexplorer.org/dotbot",producer:{name:"SEOmoz, Inc.",url:"http://moz.com/"}},{regex:"DuckDuck(?:Go-Favicons-)?Bot",name:"DuckDuckGo Bot",category:"Search bot",url:"https://duckduckgo.com/duckduckbot",producer:{name:"DuckDuckGo",url:"https://duckduckgo.com/"}},{regex:"EasouSpider",name:"Easou Spider",category:"Search bot",url:"http://www.easou.com/search/spider.html",producer:{name:"easou ICP",url:"http://www.easou.com"}},{regex:"eCairn-Grabber",name:"eCairn-Grabber",category:"Crawler",producer:{name:"eCairn",url:"https://ecairn.com"}},{regex:"EMail Exractor",name:"EMail Exractor",category:"Crawler",url:"",producer:{name:"",url:""}},{regex:"evc-batch",name:"evc-batch",category:"Crawler",url:"",producer:{name:"eVenture Capital Partners II, LLC",url:"http://www.eventures.vc/"}},{regex:"Exabot(-Thumbnails|-Images)?|ExaleadCloudview",name:"ExaBot",category:"Crawler",url:"http://www.exabot.com/go/robot",producer:{name:"Dassault Systèmes",url:"http://www.3ds.com"}},{regex:"ExactSeek Crawler",name:"ExactSeek Crawler",category:"Search bot",url:"http://www.exactseek.com",producer:{name:"Jayde Online, Inc.",url:"http://www.jaydeonlineinc.com"}},{regex:"Ezooms",name:"Ezooms",category:"Crawler",url:"",producer:{name:"SEOmoz, Inc.",url:"http://moz.com/"}},{regex:"facebookexternalhit|facebookplatform|facebookexternalua",name:"Facebook External Hit",category:"Social Media Agent",url:"https://www.facebook.com/externalhit_uatext.php",producer:{name:"Facebook",url:"http://www.facebook.com"}},{regex:"Feedbin",name:"Feedbin",url:"http://feedbin.com/",category:"Feed Fetcher",producer:{name:"",url:""}},{regex:"FeedBurner",name:"FeedBurner",url:"http://www.feedburner.com",category:"Feed Fetcher",producer:{name:"",url:""}},{regex:"Feed Wrangler",name:"Feed Wrangler",url:"https://feedwrangler.net/",category:"Feed Fetcher",producer:{name:"David Smith & Developing Perspective, LLC",url:"https://david-smith.org"}},{regex:"(Meta)?Feedly(Bot|App)?",name:"Feedly",url:"http://www.feedly.com",category:"Feed Fetcher",producer:{name:"",url:""}},{regex:"Feedspot",name:"Feedspot",url:"http://www.feedspot.com",category:"Feed Fetcher",producer:{name:"",url:""}},{regex:"Fever/[0-9]",name:"Fever",url:"http://feedafever.com/",category:"Feed Fetcher",producer:{name:"",url:""}},{regex:"FlipboardProxy|FlipboardRSS",name:"Flipboard",url:"http://flipboard.com/browserproxy",category:"Feed Fetcher",producer:{name:"Flipboard",url:"http://flipboard.com/"}},{regex:"Findxbot",name:"Findxbot",category:"Crawler",url:"http://www.findxbot.com"},{regex:"FreshRSS",name:"FreshRSS",category:"Feed Fetcher",url:"https://freshrss.org/"},{regex:"Genieo",name:"Genieo Web filter",category:"",url:"http://www.genieo.com/webfilter.html",producer:{name:"Genieo",url:"http://www.genieo.com"}},{regex:"GigablastOpenSource",name:"Gigablast",category:"Search bot",url:"https://github.com/gigablast/open-source-search-engine",producer:{name:"Matt Wells",url:"http://www.gigablast.com/faq.html"}},{regex:"Gluten Free Crawler",name:"Gluten Free Crawler",category:"Crawler",url:"http://glutenfreepleasure.com/",producer:{name:"",url:""}},{regex:"ichiro/mobile goo",name:"Goo",category:"Search bot",url:"http://search.goo.ne.jp/option/use/sub4/sub4-1",producer:{name:"NTT Resonant",url:"http://goo.ne.jp"}},{regex:"Google Favicon",name:"Google Favicon",category:"Crawler"},{regex:"Google Search Console",name:"Google Search Console",category:"Crawler",url:"https://search.google.com/search-console/about",producer:{name:"Google Inc.",url:"http://www.google.com"}},{regex:"Google Page Speed Insights",name:"Google PageSpeed Insights",category:"Site Monitor",url:"http://developers.google.com/speed/pagespeed/insights/",producer:{name:"Google Inc.",url:"http://www.google.com"}},{regex:"google_partner_monitoring",name:"Google Partner Monitoring",category:"Site Monitor",url:"",producer:{name:"Google Inc.",url:"http://www.google.com"}},{regex:"Google-Cloud-Scheduler",name:"Google Cloud Scheduler",category:"Crawler",url:"https://cloud.google.com/scheduler",producer:{name:"Google Inc.",url:"https://www.google.com"}},{regex:"Google-Structured-Data-Testing-Tool",name:"Google Structured Data Testing Tool",category:"Validator",url:"https://search.google.com/structured-data/testing-tool",producer:{name:"Google Inc.",url:"http://www.google.com"}},{regex:"GoogleStackdriverMonitoring",name:"Google Stackdriver Monitoring",category:"Site Monitor",url:"https://cloud.google.com/monitoring",producer:{name:"Google Inc.",url:"https://www.google.com"}},{regex:"via ggpht\\.com GoogleImageProxy",name:"Gmail Image Proxy",category:"Crawler",url:"",producer:{name:"Google Inc.",url:"http://www.google.com"}},{regex:"SeznamEmailProxy",name:"Seznam Email Proxy",category:"Crawler",url:"",producer:{name:"Seznam.cz, a.s.",url:"http://www.seznam.cz/"}},{regex:"Seznam-Zbozi-robot",name:"Seznam Zbozi.cz",category:"Crawler",url:"",producer:{name:"Seznam.cz, a.s.",url:"https://www.zbozi.cz/"}},{regex:"Heurekabot-Feed",name:"Heureka Feed",category:"Crawler",url:"https://sluzby.heureka.cz/napoveda/heurekabot/",producer:{name:"Heureka.cz, a.s.",url:"https://www.heureka.cz/"}},{regex:"ShopAlike",name:"ShopAlike",category:"Crawler",url:"",producer:{name:"Visual Meta",url:"https://www.shopalike.cz/"}},{regex:"AdsBot-Google(-Mobile)?|Adwords-(DisplayAds|Express|Instant)|Google Web Preview|Google[ -]Publisher[ -]Plugin|Google-(Ads-Qualify|Adwords|AMPHTML|Assess|HotelAdsVerifier|Read-Aloud|Shopping-Quality|Site-Verification|speakr|Test|Youtube-Links)|(APIs|DuplexWeb|Feedfetcher|Mediapartners)-Google|Googlebot(-Mobile|-Image|-Video|-News)?|GoogleProducer|Google.*/\\+/web/snippet",name:"Googlebot",category:"Search bot",url:"http://www.google.com/bot.html",producer:{name:"Google Inc.",url:"http://www.google.com"}},{regex:"heritrix",name:"Heritrix",category:"Crawler",url:"https://webarchive.jira.com/wiki/display/Heritrix/Heritrix",producer:{name:"The Internet Archive",url:"https://archive.org"}},{regex:"HubSpot ",name:"HubSpot",category:"Crawler",producer:{name:"HubSpot Inc.",url:"https://www.hubspot.com"}},{regex:"HTTPMon",name:"HTTPMon",category:"Site Monitor",url:"http://www.httpmon.com",producer:{name:"towards GmbH",url:"http://www.towards.ch/"}},{regex:"ICC-Crawler",name:"ICC-Crawler",category:"Crawler",url:"http://www.nict.go.jp/en/univ-com/plan/crawl.html",producer:{name:"",url:""}},{regex:"inoreader.com",name:"inoreader",category:"Feed Reader",url:"https://www.inoreader.com"},{regex:"iisbot",name:"IIS Site Analysis",category:"Crawler",url:"http://www.iis.net/iisbot.html",producer:{name:"Microsoft Corporation",url:"http://www.microsoft.com"}},{regex:"ips-agent",name:"IPS Agent",category:"Crawler",producer:{name:"VeriSign, Inc",url:"http://www.verisign.com/"}},{regex:"IP-Guide\\.com",name:"IP-Guide Crawler",category:"Crawler",url:"",producer:{name:"",url:"https://ip-guide.com"}},{regex:"kouio",name:"Kouio",url:"http://kouio.com/",category:"Feed Fetcher",producer:{name:"",url:""}},{regex:"larbin",name:"Larbin web crawler",category:"Crawler",url:"http://larbin.sourceforge.net",producer:{name:"",url:""}},{regex:"([A-z0-9]*)-Lighthouse",name:"Lighthouse",category:"Site Monitor",url:"https://developers.google.com/web/tools/lighthouse",producer:{name:"Lighthouse",url:"https://developers.google.com/web/tools/lighthouse"}},{regex:"linkdexbot(-mobile)?|linkdex\\.com",name:"Linkdex Bot",category:"Search bot",url:"http://www.linkdex.com/bots",producer:{name:"Mojeek Ltd.",url:"http://www.mojeek.com"}},{regex:"LinkedInBot",name:"LinkedIn Bot",category:"Social Media Agent",url:"http://www.linkedin.com",producer:{name:"LinkedIn",url:"http://www.linkedin.com"}},{regex:"ltx71",name:"LTX71",url:"http://ltx71.com/",producer:{name:"",url:""}},{regex:"Mail\\.RU(_Bot)?",name:"Mail.Ru Bot",category:"Search bot",url:"http://help.mail.ru/webmaster/indexing/robots/types_robots",producer:{name:"Mail.Ru Group",url:"http://corp.mail.ru"}},{regex:"magpie-crawler",name:"Magpie-Crawler",category:"Social Media Agent",url:"http://www.brandwatch.com/magpie-crawler/",producer:{name:"Brandwatch",url:"http://www.brandwatch.com"}},{regex:"MagpieRSS",name:"MagpieRSS",url:"http://magpierss.sourceforge.net/",category:"Feed Parser",producer:{name:"",url:""}},{regex:"masscan",name:"masscan",url:"https://github.com/robertdavidgraham/masscan",category:"Crawler",producer:{name:"Robert Graham",url:"https://github.com/robertdavidgraham"}},{regex:"Mastodon/",name:"Mastodon Bot",category:"Social Media Agent"},{regex:"meanpathbot",name:"Meanpath Bot",category:"Search bot",url:"http://www.meanpath.com/meanpathbot.html",producer:{name:"Meanpath",url:"http://www.meanpath.com"}},{regex:"MetaJobBot",name:"MetaJobBot",category:"Crawler",url:"http://www.metajob.at/the/crawler",producer:{name:"MetaJob",url:"http://www.metajob.at"}},{regex:"MetaInspector",name:"MetaInspector",category:"Crawler",url:"https://github.com/jaimeiniesta/metainspector"},{regex:"MixrankBot",name:"Mixrank Bot",category:"Crawler",url:"http://mixrank.com",producer:{name:"Online Media Group, Inc.",url:""}},{regex:"MJ12bot",name:"MJ12 Bot",category:"Search bot",url:"http://majestic12.co.uk/bot.php",producer:{name:"Majestic-12",url:"http://majestic12.co.uk"}},{regex:"Mnogosearch",name:"Mnogosearch",category:"Search bot",url:"http://www.mnogosearch.org/",producer:{name:"Lavtech.Com Corp.",url:""}},{regex:"MojeekBot",name:"MojeekBot",category:"Search bot",url:"http://www.mojeek.com/bot.html",producer:{name:"Mojeek Ltd.",url:"http://www.mojeek.com"}},{regex:"munin",name:"Munin",category:"Site Monitor",url:"http://munin-monitoring.org/",producer:{name:"Munin",url:"http://munin-monitoring.org/"}},{regex:"NalezenCzBot",name:"NalezenCzBot",category:"Crawler",url:"http://www.nalezen.cz/about-crawler",producer:{name:"Jaroslav Kuboš",url:""}},{regex:"check_http/v",name:"Nagios check_http",category:"Site Monitor",url:"https://nagios.org",producer:{name:"Nagios Plugins Development Team",url:"https://nagios.org"}},{regex:"nbertaupete95\\(at\\)gmail.com",name:"nbertaupete95",category:"Crawler"},{regex:"Netcraft( Web Server Survey| SSL Server Survey|SurveyAgent)",name:"Netcraft Survey Bot",category:"Search bot",url:"",producer:{name:"Netcraft",url:"http://www.netcraft.com"}},{regex:"netEstate NE Crawler",name:"netEstate",category:"Crawler",url:"http://www.website-datenbank.de/Impressum",producer:{name:"netEstate GmbH",url:"https://www.netestate.de/en/"}},{regex:"Netvibes",name:"Netvibes",url:"http://www.netvibes.com/",category:"Feed Fetcher",producer:{name:"",url:""}},{regex:"NewsBlur .*(Fetcher|Finder)",name:"NewsBlur",url:"http://www.newsblur.com",category:"Feed Fetcher",producer:{name:"",url:""}},{regex:"NewsGatorOnline",name:"NewsGator",url:"http://www.newsgator.com",category:"Feed Fetcher",producer:{name:"",url:""}},{regex:"nlcrawler",name:"NLCrawler",category:"Crawler",url:"",producer:{name:"Northern Light",url:"http://northernlight.com"}},{regex:"Nmap Scripting Engine",name:"Nmap",category:"Security Checker",url:"https://nmap.org/book/nse.html",producer:{name:"Nmap",url:"https://nmap.org/"}},{regex:"Nuzzel",name:"Nuzzel",category:"Crawler",producer:{name:"Nuzzel",url:"https://www.nuzzel.com/"}},{regex:"Octopus [0-9]",name:"Octopus"},{regex:"omgili(?:bot)?",name:"Omgili bot",category:"Search bot",url:"http://www.omgili.com/Crawler.html",producer:{name:"Omgili",url:"http://www.omgili.com"}},{regex:"OpenindexSpider",name:"Openindex Spider",category:"Search bot",url:"http://www.openindex.io/en/webmasters/spider.html",producer:{name:"Openindex B.V.",url:"http://www.openindex.io"}},{regex:"spbot",name:"OpenLinkProfiler",category:"Crawler",url:"http://openlinkprofiler.org/bot",producer:{name:"Axandra GmbH",url:"http://www.axandra.com"}},{regex:"OpenWebSpider",name:"OpenWebSpider",category:"Crawler",url:"http://www.openwebspider.org",producer:{name:"OpenWebSpider Lab",url:"http://lab.openwebspider.org"}},{regex:"OrangeBot|VoilaBot",name:"Orange Bot",category:"Search bot",url:"http://lemoteur.orange.fr",producer:{name:"Orange",url:"http://www.orange.fr"}},{regex:"PaperLiBot",name:"PaperLiBot",category:"Search bot",url:"http://support.paper.li/entries/20023257-what-is-paper-li",producer:{name:"Smallrivers SA",url:"http://www.paper.li"}},{regex:"phantomas/",name:"Phantomas",category:"Site Monitor",url:"https://github.com/macbre/phantomas"},{regex:"phpservermon",name:"PHP Server Monitor",category:"Site Monitor",url:"https://github.com/phpservermon/phpservermon",producer:{name:"PHP Server Monitor",url:"http://www.phpservermonitor.org/"}},{regex:"PocketParser",name:"PocketParser",category:"Read-it-later Service",url:"https://getpocket.com/pocketparser_ua",producer:{name:"Pocket",url:"https://getpocket.com/"}},{regex:"PritTorrent",name:"PritTorrent",category:"Crawler",url:"https://github.com/astro/prittorrent",producer:{name:"Bitlove",url:"http://bitlove.org/"}},{regex:"PRTG Network Monitor",name:"PRTG Network Monitor",category:"Network Monitor",url:"https://www.paessler.com/prtg",producer:{name:"Paessler AG",url:"https://www.paessler.com"}},{regex:"psbot(-page)?",name:"Picsearch bot",category:"Search bot",url:"http://www.picsearch.com/bot.html",producer:{name:"Picsearch",url:"http://www.picsearch.com"}},{regex:"Pingdom(?:\\.com|TMS)",name:"Pingdom Bot",category:"Site Monitor",url:"",producer:{name:"Pingdom AB",url:"https://www.pingdom.com"}},{regex:"Quora Link Preview",name:"Quora Link Preview",category:"Crawler",url:"",producer:{name:"Quora",url:"http://www.quora.com"}},{regex:"Quora-Bot",name:"Quora Bot",category:"Crawler",url:"",producer:{name:"Quora",url:"https://www.quora.com/"}},{regex:"RamblerMail",name:"RamblerMail Image Proxy",category:"Crawler",url:"",producer:{name:"Rambler&Co",url:"https://rambler-co.ru/"}},{regex:"QuerySeekerSpider",name:"QuerySeekerSpider",category:"Crawler",url:"http://queryseeker.com/bot.html",producer:{name:"QueryEye Inc.",url:"http://queryeye.com"}},{regex:"Qwantify",name:"Qwantify",category:"Crawler",url:"https://www.qwant.com/",producer:{name:"Qwant Corporation",url:"https://www.qwant.com/"}},{regex:"Rainmeter",name:"Rainmeter",category:"Crawler",url:"https://www.rainmeter.net"},{regex:"redditbot",name:"Reddit Bot",category:"Social Media Agent",url:"http://www.reddit.com/feedback",producer:{name:"reddit inc.",url:"http://www.reddit.com"}},{regex:"Riddler",name:"Riddler",category:"Security search bot",url:"https://riddler.io/about",producer:{name:"F-Secure",url:"https://www.f-secure.com"}},{regex:"rogerbot",name:"Rogerbot",category:"Crawler",url:"http://moz.com/help/pro/what-is-rogerbot-",producer:{name:"SEOmoz, Inc.",url:"http://moz.com/"}},{regex:"ROI Hunter",name:"ROI Hunter",category:"Crawler",url:"",producer:{name:"Roihunter a.s.",url:"http://roihunter.com/"}},{regex:"SafeDNSBot",name:"SafeDNSBot",category:"Crawler",url:"https://www.safedns.com/searchbot",producer:{name:"SafeDNS, Inc.",url:"https://www.safedns.com/"}},{regex:"Scrapy",name:"Scrapy",category:"Crawler",url:"http://scrapy.org"},{regex:"Screaming Frog SEO Spider",name:"Screaming Frog SEO Spider",category:"Crawler",url:"http://www.screamingfrog.co.uk/seo-spider",producer:{name:"Screaming Frog Ltd",url:"http://www.screamingfrog.co.uk"}},{regex:"ScreenerBot",name:"ScreenerBot",category:"Crawler",url:"http://www.screenerbot.com",producer:{name:"",url:""}},{regex:"SemrushBot",name:"Semrush Bot",category:"Crawler",url:"http://www.semrush.com/bot.html",producer:{name:"SEMrush",url:"http://www.semrush.com"}},{regex:"SensikaBot",name:"Sensika Bot",category:"",url:"",producer:{name:"Sensika",url:"http://sensika.com"}},{regex:"SEOENG(World)?Bot",name:"SEOENGBot",category:"Crawler",url:"http://www.seoengine.com/seoengbot.htm",producer:{name:"SEO Engine",url:"http://www.seoengine.com"}},{regex:"SEOkicks-Robot",name:"SEOkicks-Robot",category:"Crawler",url:"http://www.seokicks.de/robot.html",producer:{name:"SEOkicks",url:"https://www.seokicks.de/"}},{regex:"seoscanners\\.net",name:"Seoscanners.net",category:"Crawler",url:""},{regex:"SkypeUriPreview",name:"Skype URI Preview",category:"Service Agent",url:"",producer:{name:"Skype Communications S.à.r.l.",url:"https://www.skype.com"}},{regex:"SeznamBot|SklikBot|Seznam screenshot-generator",name:"Seznam Bot",category:"Search bot",url:"http://www.mapy.cz/cz/seznambot.html",producer:{name:"Seznam.cz, a.s.",url:"http://www.seznam.cz/"}},{regex:"shopify-partner-homepage-scraper",name:"Shopify Partner",category:"Crawler",url:"https://www.shopify.com/partners",producer:{name:"Shopify",url:"https://www.shopify.com/"}},{regex:"ShopWiki",name:"ShopWiki",category:"Search tools",url:"http://www.shopwiki.com/wiki/Help:Bot",producer:{name:"ShopWiki Corp.",url:"http://www.shopwiki.com"}},{regex:"SilverReader",name:"SilverReader",url:"http://silverreader.com",category:"Feed Fetcher",producer:{name:"",url:""}},{regex:"SimplePie",name:"SimplePie",url:"http://www.simplepie.org",category:"Feed Parser",producer:{name:"",url:""}},{regex:"SISTRIX Crawler",name:"SISTRIX Crawler",category:"Crawler",url:"http://crawler.sistrix.net",producer:{name:"SISTRIX GmbH",url:"http://www.sistrix.de"}},{regex:"compatible; (?:SISTRIX )?Optimizer",name:"SISTRIX Optimizer",category:"Crawler",url:"https://optimizer.sistrix.com",producer:{name:"SISTRIX GmbH",url:"http://www.sistrix.de"}},{regex:"SiteSucker",name:"SiteSucker",category:"Crawler",url:"http://ricks-apps.com/osx/sitesucker/"},{regex:"sixy.ch",name:"Sixy.ch",category:"Site Monitor",url:"http://sixy.ch",producer:{name:"Manuel Kasper",url:"https://neon1.net/"}},{regex:"Slackbot|Slack-ImgProxy",name:"Slackbot",category:"Crawler",url:"https://api.slack.com/robots",producer:{name:"Slack Technologies",url:"http://slack.com"}},{regex:"(Sogou (web|inst|Pic) spider)|New-Sogou-Spider",name:"Sogou Spider",category:"Search bot",url:"http://www.sogou.com/docs/help/webmasters.htm",producer:{name:"Sohu, Inc.",url:"http://www.sogou.com"}},{regex:"Sosospider|Sosoimagespider",name:"Soso Spider",category:"Search bot",url:"http://help.soso.com/webspider.htm",producer:{name:"Tencent Holdings",url:"http://www.soso.com"}},{regex:"Sprinklr",name:"Sprinklr",category:"Crawler",url:"",producer:{name:"Sprinklr, Inc.",url:"https://www.sprinklr.com/"}},{regex:"sqlmap/",name:"sqlmap",category:"Security Checker",url:"http://sqlmap.org/",producer:{name:"sqlmap",url:"http://sqlmap.org/"}},{regex:"SSL Labs",name:"SSL Labs",category:"Validator",url:"https://www.ssllabs.com/about/assessment.html",producer:{name:"SSL Labs",url:"https://www.ssllabs.com/about/assessment.html"}},{regex:"StatusCake",name:"StatusCake",category:"Site Monitor",url:"https://www.statuscake.com",producer:{name:"StatusCake",url:"https://www.statuscake.com"}},{regex:"Superfeedr bot",name:"Superfeedr Bot",category:"Feed Fetcher",url:"",producer:{name:"Superfeedr",url:"https://superfeedr.com/"}},{regex:"Sparkler/[0-9]",name:"Sparkler",category:"Crawler",url:"https://github.com/USCDataScience/sparkler"},{regex:"Spinn3r",name:"Spinn3r",category:"Crawler",url:"http://spinn3r.com/robot",producer:{name:"Tailrank Inc",url:"http://spinn3r.com"}},{regex:"SputnikBot",name:"Sputnik Bot",category:"Crawler",url:""},{regex:"SputnikFaviconBot",name:"Sputnik Favicon Bot",category:"Crawler",url:""},{regex:"SputnikImageBot",name:"Sputnik Image Bot",category:"Crawler",url:""},{regex:"SurveyBot",name:"Survey Bot",category:"Search bot",url:"http://www.domaintools.com/webmasters/surveybot.php",producer:{name:"Domain Tools",url:"http://www.domaintools.com"}},{regex:"TarmotGezgin",name:"Tarmot Gezgin",url:"http://www.tarmot.com/gezgin/",category:"Search bot"},{regex:"TelegramBot",name:"TelegramBot",url:"https://telegram.org/blog/bot-revolution"},{regex:"TLSProbe",name:"TLSProbe",url:"https://scan.trustnet.venafi.com/",category:"Security search bot",producer:{name:"Venafi TrustNet",url:"https://www.venafi.com"}},{regex:"TinEye-bot",name:"TinEye Crawler",category:"Search bot",url:"http://www.tineye.com/crawler.html",producer:{name:"Idée Inc.",url:"http://ideeinc.com"}},{regex:"Tiny Tiny RSS",name:"Tiny Tiny RSS",url:"http://tt-rss.org",category:"Feed Fetcher",producer:{name:"",url:""}},{regex:"theoldreader.com",name:"theoldreader",category:"Feed Reader",url:"https://theoldreader.com"},{regex:"trendictionbot",name:"Trendiction Bot",category:"Crawler",url:"http://www.trendiction.de/bot",producer:{name:"Talkwalker Inc.",url:"http://www.talkwalker.com"}},{regex:"TurnitinBot",name:"TurnitinBot",category:"Crawler",url:"http://www.turnitin.com/robot/crawlerinfo.html",producer:{name:"iParadigms, LLC.",url:"http://www.turnitin.com"}},{regex:"TweetedTimes Bot",name:"TweetedTimes Bot",category:"Crawler",url:"http://tweetedtimes.com",producer:{name:"TweetedTimes",url:"http://tweetedtimes.com/"}},{regex:"TweetmemeBot",name:"Tweetmeme Bot",category:"Crawler",url:"http://tweetmeme.com/",producer:{name:"Mediasift",url:""}},{regex:"Twingly Recon",name:"Twingly Recon",category:"Crawler",producer:{name:"Twingly",url:"https://www.twingly.com"}},{regex:"Twitterbot",name:"Twitterbot",category:"Social Media Agent",url:"https://dev.twitter.com/docs/cards/getting-started",producer:{name:"Twitter",url:"http://www.twitter.com"}},{regex:"UniversalFeedParser",name:"UniversalFeedParser",category:"Feed Fetcher",url:"https://github.com/kurtmckee/feedparser",producer:{name:"Kurt McKee",url:"https://github.com/kurtmckee"}},{regex:"via secureurl\\.fwdcdn\\.com",name:"UkrNet Mail Proxy",category:"Crawler",url:"",producer:{name:"UkrNet Ltd",url:"https://www.ukr.net/"}},{regex:"Uptimebot",name:"Uptimebot",category:"Site Monitor",url:"https://uptime.com/uptimebot",producer:{name:"Uptime",url:"https://uptime.com"}},{regex:"UptimeRobot",name:"Uptime Robot",category:"Site Monitor",url:"",producer:{name:"Uptime Robot",url:"http://uptimerobot.com"}},{regex:"URLAppendBot",name:"URLAppendBot",category:"Crawler",url:"http://www.profound.net/urlappendbot.html",producer:{name:"Profound Networks",url:"http://www.profound.net"}},{regex:"Vagabondo",name:"Vagabondo",category:"Crawler",url:"",producer:{name:"WiseGuys",url:"http://www.wise-guys.nl/"}},{regex:"vkShare; ",name:"VK Share Button",category:"Crawler",url:"http://vk.com/dev/Share",producer:{name:"VK",url:"http://vk.com/"}},{regex:"VSMCrawler",name:"Visual Site Mapper Crawler",category:"Crawler",url:"http://www.visualsitemapper.com/crawler",producer:{name:"Alentum Software Ltd.",url:"http://www.alentum.com"}},{regex:"Jigsaw",name:"W3C CSS Validator",category:"Validator",url:"http://jigsaw.w3.org/css-validator",producer:{name:"W3C",url:"http://www.w3.org"}},{regex:"W3C_I18n-Checker",name:"W3C I18N Checker",category:"Validator",url:"http://validator.w3.org/i18n-checker",producer:{name:"W3C",url:"http://www.w3.org"}},{regex:"W3C-checklink",name:"W3C Link Checker",category:"Validator",url:"http://validator.w3.org/checklink",producer:{name:"W3C",url:"http://www.w3.org"}},{regex:"W3C_Validator|Validator.nu",name:"W3C Markup Validation Service",category:"Validator",url:"http://validator.w3.org/services",producer:{name:"W3C",url:"http://www.w3.org"}},{regex:"W3C-mobileOK",name:"W3C MobileOK Checker",category:"Validator",url:"http://validator.w3.org/mobile",producer:{name:"W3C",url:"http://www.w3.org"}},{regex:"W3C_Unicorn",name:"W3C Unified Validator",category:"Validator",url:"http://validator.w3.org/unicorn",producer:{name:"W3C",url:"http://www.w3.org"}},{regex:"Wappalyzer",name:"Wappalyzer",url:"https://github.com/AliasIO/Wappalyzer",producer:{name:"AliasIO",url:"https://github.com/AliasIO"}},{regex:"PTST/",name:"WebPageTest",category:"Site Monitor",url:"https://www.webpagetest.org"},{regex:"WeSEE(:Search)?",name:"WeSEE:Search",category:"Search bot",url:"http://www.wesee.com/bot",producer:{name:"WeSEE Ltd",url:"http://www.wesee.com"}},{regex:"WebbCrawler",name:"WebbCrawler",category:"Crawler",url:"http://badcheese.com/crawler.html",producer:{name:"Steve Webb",url:"http://badcheese.com"}},{regex:"websitepulse[+ ]checker",name:"WebSitePulse",category:"Site Monitor",url:"http://badcheese.com/crawler.html",producer:{name:"WebSitePulse",url:"http://www.websitepulse.com/"}},{regex:"WordPress",name:"WordPress",category:"Service Agent",url:"https://wordpress.org/",producer:{name:"Wordpress.org",url:"https://wordpress.org/"}},{regex:"Wotbox",name:"Wotbox",category:"Search bot",url:"http://www.wotbox.com/bot/",producer:{name:"Wotbox",url:"http://www.wotbox.com"}},{regex:"XenForo",name:"XenForo",category:"Service Agent",url:"https://xenforo.com/",producer:{name:"XenForo Ltd.",url:"https://xenforo.com/"}},{regex:"yacybot",name:"YaCy",category:"Search bot",url:"http://yacy.net/bot.html",producer:{name:"YaCy",url:"http://yacy.net"}},{regex:"Yahoo! Slurp|Yahoo!-AdCrawler",name:"Yahoo! Slurp",category:"Search bot",url:"http://help.yahoo.com/ysearch/slurp",producer:{name:"Yahoo! Inc.",url:"http://www.yahoo.com"}},{regex:"Yahoo Link Preview|Yahoo:LinkExpander:Slingstone",name:"Yahoo! Link Preview",category:"Crawler",url:"https://help.yahoo.com/kb/mail/yahoo-link-preview-SLN23615.html",producer:{name:"Yahoo! Inc.",url:"http://www.yahoo.com"}},{regex:"YahooMailProxy",name:"Yahoo! Mail Proxy",category:"Service Agent",url:"https://help.yahoo.com/kb/yahoo-mail-proxy-SLN28749.html",producer:{name:"Yahoo! Inc.",url:"http://www.yahoo.com"}},{regex:"YahooCacheSystem",name:"Yahoo! Cache System",category:"Crawler",url:"",producer:{name:"Yahoo! Inc.",url:"http://www.yahoo.com"}},{regex:"Y!J-BRW",name:"Yahoo! Japan BRW",category:"Crawler",url:"https://www.yahoo-help.jp/app/answers/detail/p/595/a_id/42716/~/ウェブページにアクセスするシステムのユーザーエージェントについて",producer:{name:"Yahoo! Japan Corp.",url:"https://www.yahoo.co.jp/"}},{regex:"Yandex(SpravBot|ScreenshotBot|MobileBot|AccessibilityBot|ForDomain|Vertis|Market|Catalog|Calendar|Sitelinks|AdNet|Pagechecker|Webmaster|Media|Video|Bot|Images|Antivirus|Direct|Blogs|Favicons|ImageResizer|Verticals|News(links)?|Metrika|\\.Gazeta Bot)|YaDirectFetcher|YandexTurbo|YandexTracker|YandexSearchShop|YandexRCA|YandexPartner|YandexOntoDBAPI|YandexOntoDB|YandexMobileScreenShotBot",name:"Yandex Bot",category:"Search bot",url:"http://www.yandex.com/bots",producer:{name:"Yandex LLC",url:"http://company.yandex.com"}},{regex:"Yeti|NaverJapan",name:"Yeti/Naverbot",category:"Search bot",url:"http://help.naver.com/robots/",producer:{name:"Naver",url:"http://www.naver.com"}},{regex:"YoudaoBot",name:"Youdao Bot",category:"Search bot",url:"http://www.youdao.com/help/webmaster/spider",producer:{name:"NetEase, Inc.",url:"http://corp.163.com"}},{regex:"YOURLS v[0-9]",name:"Yourls",category:"Crawler",url:"http://yourls.org"},{regex:"YRSpider|YYSpider",name:"Yunyun Bot",category:"Search bot",url:"http://www.yunyun.com/SiteInfo.php?r=about",producer:{name:"YunYun",url:"http://www.yunyun.com"}},{regex:"zgrab",name:"zgrab",category:"Security Checker",url:"https://github.com/zmap/zgrab"},{regex:"Zookabot",name:"Zookabot",category:"Crawler",url:"http://zookabot.com",producer:{name:"Hwacha ApS",url:"http://hwacha.dk"}},{regex:"ZumBot",name:"ZumBot",category:"Search bot",url:"http://help.zum.com/inquiry",producer:{name:"ZUM internet",url:"http://www.zuminternet.com/"}},{regex:"YottaaMonitor",name:"Yottaa Site Monitor",category:"Site Monitor",url:"http://www.yottaa.com/products/site-monitor",producer:{name:"Yottaa",url:"http://www.yottaa.com/"}},{regex:"Yahoo Ad monitoring.*yahoo-ad-monitoring-SLN24857.*",name:"Yahoo Gemini",category:"Crawler",url:"https://help.yahoo.com/kb/yahoo-ad-monitoring-SLN24857.html",producer:{name:"Yahoo! Inc.",url:"http://www.yahoo.com"}},{regex:".*Java.*outbrain",name:"Outbrain",category:"Crawler",url:"",producer:{name:"Outbrain",url:"http://www.outbrain.com/"}},{regex:"HubPages.*crawlingpolicy",name:"HubPages",category:"Crawler",url:"http://hubpages.com/help/crawlingpolicy",producer:{name:"HubPages",url:"http://hubpages.com/"}},{regex:"Pinterest(bot)?/\\d\\.\\d.*www\\.pinterest\\.com.*",name:"Pinterest",url:"http://www.pinterest.com/bot.html",category:"Crawler",producer:{name:"Pinterest",url:"http://www.pinterest.com/"}},{regex:"Site24x7",name:"Site24x7 Website Monitoring",category:"Site Monitor",url:"https://www.site24x7.com/site24x7-faq.html",producer:{name:"Site24x7",url:"https://www.site24x7.com"}},{regex:"s~snapchat-proxy",name:"Snapchat Proxy",category:"Crawler",url:"https://www.snapchat.com",producer:{name:"Snapchat Inc.",url:"https://www.snapchat.com"}},{regex:"Let's Encrypt validation server",name:"Let's Encrypt Validation",category:"Service Agent",url:"https://letsencrypt.org/how-it-works/",producer:{name:"Let's Encrypt",url:"https://letsencrypt.org"}},{regex:"GrapeshotCrawler",name:"Grapeshot",category:"Crawler",url:"https://www.grapeshot.com/crawler",producer:{name:"Grapeshot",url:"https://www.grapeshot.com"}},{regex:"www\\.monitor\\.us",name:"Monitor.Us",category:"Site Monitor",url:"http://www.monitor.us",producer:{name:"Monitor.Us",url:"http://www.monitor.us"}},{regex:"Catchpoint( bot)?",name:"Catchpoint",category:"Site Monitor",url:"",producer:{name:"Catchpoint Systems",url:"http://www.catchpoint.com/"}},{regex:"bitlybot",name:"BitlyBot",category:"Crawler",url:"https://bitly.com",producer:{name:"Bitly, Inc.",url:"https://bitly.com"}},{regex:"Zao/",name:"Zao",category:"Crawler"},{regex:"lycos",name:"Lycos"},{regex:"Slurp",name:"Inktomi Slurp"},{regex:"Speedy Spider",name:"Speedy"},{regex:"ScoutJet",name:"ScoutJet"},{regex:"nrsbot|netresearch",name:"NetResearchServer"},{regex:"scooter",name:"Scooter"},{regex:"gigabot",name:"Gigabot"},{regex:"charlotte",name:"Charlotte"},{regex:"Pompos",name:"Pompos"},{regex:"ichiro",name:"ichiro"},{regex:"PagePeeker",name:"PagePeeker"},{regex:"WebThumbnail",name:"WebThumbnail"},{regex:"Willow Internet Crawler",name:"Willow Internet Crawler"},{regex:"EmailWolf",name:"EmailWolf"},{regex:"NetLyzer FastProbe",name:"NetLyzer FastProbe"},{regex:"AdMantX.*admantx\\.com",name:"ADMantX"},{regex:"Server Density Service Monitoring.*",name:"Server Density"},{regex:"RSSRadio \\(Push Notification Scanner;support@dorada\\.co\\.uk\\)",name:"RSSRadio Bot"},{regex:"(A6-Indexer|nuhk|TsolCrawler|Yammybot|Openbot|Gulper Web Bot|grub-client|Download Demon|SearchExpress|Microsoft URL Control|borg|altavista|dataminr.com|tweetedtimes.com|TrendsmapResolver|teoma|blitzbot|oegp|furlbot|http%20client|polybot|htdig|mogimogi|larbin|scrubby|searchsight|seekbot|semanticdiscovery|snappy|vortex(?! Build)|zeal|fast-webcrawler|converacrawler|dataparksearch|findlinks|BrowserMob|HttpMonitor|ThumbShotsBot|URL2PNG|ZooShot|GomezA|Google SketchUp|Read%20Later|RackspaceBot|robots|SeopultContentAnalyzer|7Siters|centuryb.o.t9|InterNaetBoten|EasyBib AutoCite|Bidtellect|tomnomnom/meg)",name:"Generic Bot"},{regex:"^sentry",name:"Sentry Bot",producer:{name:"Sentry",url:"https://sentry.io"}},{regex:"^Spotify",name:"Spotify",producer:{name:"Spotify",url:"https://www.spotify.com"}},{regex:"The Knowledge AI",name:"The Knowledge AI",category:"Crawler"},{regex:"Embedly",name:"Embedly",category:"Crawler",url:"https://support.embed.ly/hc/en-us",producer:{name:"A Medium, Corp.",url:"https://medium.com/"}},{regex:"BrandVerity",name:"BrandVerity",category:"Crawler",url:"https://www.brandverity.com/why-is-brandverity-visiting-me",producer:{name:"BrandVerity, Inc.",url:"https://www.brandverity.com/"}},{regex:"Kaspersky Lab CFR link resolver",name:"Kaspersky",category:"Security Checker",url:"https://www.kaspersky.com/",producer:{name:"AO Kaspersky Lab",url:"https://www.kaspersky.com/"}},{regex:"eZ Publish Link Validator",name:"eZ Publish Link Validator",category:"Crawler",url:"https://ez.no/",producer:{name:"eZ Systems AS",url:"https://ez.no/"}},{regex:"woorankreview",name:"WooRank",category:"Search bot",url:"https://www.woorank.com/",producer:{name:"WooRank sprl",url:"https://www.woorank.com/"}},{regex:"(Match|LinkCheck) by Siteimprove.com",name:"Siteimprove",category:"Search bot",url:"https://siteimprove.com/",producer:{name:"Siteimprove GmbH",url:"https://siteimprove.com/"}},{regex:"CATExplorador",name:"CATExplorador",category:"Search bot",url:"https://fundacio.cat/ca/domini/",producer:{name:"Fundació puntCAT",url:"https://fundacio.cat/ca/domini/"}},{regex:"Buck",name:"Buck",category:"Search bot",url:"https://hypefactors.com/",producer:{name:"Hypefactors A/S",url:"https://hypefactors.com/"}},{regex:"tracemyfile",name:"TraceMyFile",category:"Search bot",url:"https://www.tracemyfile.com/",producer:{name:"Idee Inc.",url:"http://ideeinc.com/"}},{regex:"zelist.ro feed parser",name:"Ze List",url:"https://www.zelist.ro/",category:"Feed Fetcher",producer:{name:"Treeworks SRL",url:"https://www.tree.ro/"}},{regex:"weborama-fetcher",name:"Weborama",category:"Search bot",url:"https://weborama.com/",producer:{name:"Weborama SA",url:"https://weborama.com/"}},{regex:"BoardReader Favicon Fetcher",name:"BoardReader",category:"Search bot",url:"https://boardreader.com/",producer:{name:"Effyis Inc",url:"https://boardreader.com/"}},{regex:"IDG/IT",name:"IDG/IT",category:"Search bot",url:"https://spaziodati.eu/",producer:{name:"SpazioDati S.r.l.",url:"https://spaziodati.eu/"}},{regex:"Bytespider",name:"Bytespider",category:"Search bot",url:"https://bytedance.com/",producer:{name:"ByteDance Ltd.",url:"https://bytedance.com/"}},{regex:"WikiDo",name:"WikiDo",category:"Search bot",url:"https://www.wikido.com/",producer:{name:"Fotolitografie Fiorentine di Becchi Antonio s.n.c.",url:"https://www.wikido.com/"}},{regex:"AwarioSmartBot",name:"Awario",category:"Search bot",url:"https://awario.com/bots.html",producer:{name:"Awario",url:"https://awario.com/"}},{regex:"AwarioRssBot",name:"Awario",category:"Feed Fetcher",url:"https://awario.com/bots.html",producer:{name:"Awario",url:"https://awario.com/"}},{regex:"oBot",name:"oBot",category:"Search bot",url:"https://www.xforce-security.com/crawler/",producer:{name:"IBM Germany Research & Development GmbH",url:"https://exchange.xforce.ibmcloud.com/"}},{regex:"SMTBot",name:"SMTBot",category:"Search bot",url:"https://www.similartech.com/smtbot",producer:{name:"SimilarTech Ltd.",url:"https://www.similartech.com/"}},{regex:"LCC",name:"LCC",category:"Search bot",url:"https://corpora.uni-leipzig.de/crawler_faq.html",producer:{name:"Universität Leipzig",url:"https://www.uni-leipzig.de/"}},{regex:"Startpagina-Linkchecker",name:"Startpagina Linkchecker",category:"Search bot",url:"https://www.startpagina.nl/linkchecker",producer:{name:"Startpagina B.V.",url:"https://www.startpagina.nl/"}},{regex:"GTmetrix",name:"GTmetrix",category:"Crawler",url:"https://gtmetrix.com/",producer:{name:"Carbon60 Operating Co. Ltd.",url:"https://www.carbon60.com/"}},{regex:"Nutch",name:"Nutch-based Bot",category:"Crawler",url:"https://nutch.apache.org",producer:{name:"The Apache Software Foundation",url:"https://www.apache.org/foundation/"}},{regex:"Seobility",name:"Seobility",category:"Crawler",url:"https://www.seobility.net/en/faq/?category=crawling#!aboutourbot"},{regex:"Vercelbot",name:"Vercel Bot",category:"Service bot",url:"https://vercel.com"},{regex:"Grammarly",name:"Grammarly",category:"Service bot",url:"https://www.grammarly.com"},{regex:"Robozilla",name:"Robozilla",category:"Crawler"},{regex:"Domains Project",name:"Domains Project",category:"Crawler",url:"https://domainsproject.org"},{regex:"PetalBot",name:"Petal Bot",category:"Crawler",url:"https://aspiegel.com/petalbot"},{regex:"SerendeputyBot",name:"Serendeputy Bot",category:"Crawler",url:"https://serendeputy.com/about/serendeputy-bot"},{regex:"ias-va.*admantx.*service-fetcher",name:"ADmantX Service Fetcher",category:"Service bot",url:"https://www.admantx.com/service-fetcher.html"},{regex:"SemanticScholarBot",name:"Semantic Scholar Bot",category:"Crawler",url:"https://www.semanticscholar.org/crawler"},{regex:"VelenPublicWebCrawler",name:"Velen Public Web Crawler",category:"Crawler",url:"https://hunter.io/robot"},{regex:"Barkrowler",name:"Barkrowler",category:"Crawler",url:"http://www.exensa.com/crawl"},{regex:"BDCbot",name:"BDCbot",category:"Crawler",url:"https://bigweb.bigdatacorp.com.br/pages/faq.aspx",producer:{name:"BIG Data Solucoes Em Tecnologia de Informatica LTDA",url:"https://bigdatacorp.com.br/"}},{regex:"adbeat",name:"Adbeat",category:"Crawler",url:"https://www.adbeat.com/operation_policy",producer:{name:"PPC Labs LLC",url:"https://www.adbeat.com/"}},{regex:"BW/(?:(\\d+[\\.\\d]+))",name:"BuiltWith",category:"Crawler",url:"https://builtwith.com/biup",producer:{name:"BuiltWith Pty Ltd",url:"https://builtwith.com/"}},{regex:"https://whatis.contentkingapp.com",name:"ContentKing",category:"Site Monitor",url:"https://whatis.contentkingapp.com/",producer:{name:"ContentKing BV",url:"https://www.contentkingapp.com/"}},{regex:"MicroAdBot",name:"MicroAdBot",category:"Crawler",url:"https://www.microad.co.jp/",producer:{name:"MicroAd, Inc.",url:"https://www.microad.co.jp/"}},{regex:"PingAdmin.Ru",name:"PingAdmin.Ru",category:"Site Monitor",url:"https://ping-admin.ru/"},{regex:"notifyninja.+monitoring",name:"Notify Ninja",category:"Site Monitor",url:"http://notifyninja.com"},{regex:"WebDataStats",name:"WebDataStats",category:"Crawler",url:"https://webdatastats.com/policy.html",producer:{name:"WebTehRazrabotka LLC",url:"https://webdatastats.com/"}},{regex:"parse.ly scraper",name:"parse.ly",category:"Crawler",url:"https://www.parse.ly/help/integration/crawler",producer:{name:"Parsely, Inc.",url:"https://www.parse.ly/"}},{regex:"Nimbostratus-Bot",name:"Nimbostratus Bot",category:"Site Monitor",url:"http://cloudsystemnetworks.com"},{regex:"HeartRails_Capture/\\d",name:"Heart Rails Capture",category:"Service Agent",url:"http://capture.heartrails.com"},{regex:"Project-Resonance",name:"Project Resonance",category:"Crawler",url:"http://project-resonance.com"},{regex:"DataXu/\\d",name:"DataXu",category:"Service Agent",url:"https://advertising.roku.com/dataxu",producer:{name:"Roku, Inc.",url:"https://roku.com"}},{regex:"Cocolyzebot",name:"Cocolyzebot",category:"Crawler",url:"https://cocolyze.com/en/cocolyzebot",producer:{name:"VSI INNOVATION SAS",url:"https://vsi-innovation.com/"}},{regex:"veryhip",name:"VeryHip",category:"Crawler",url:"https://veryhip.com/",producer:{name:"VeryHip",url:"https://veryhip.com/"}},{regex:"LinkpadBot",name:"LinkpadBot",category:"Crawler",url:"https://www.linkpad.org/",producer:{name:"Solomono LLC",url:"https://www.linkpad.org/"}},{regex:"MuscatFerret",name:"MuscatFerret",category:"Crawler",url:"http://www.webtop.com/"},{regex:"PageThing.com",name:"PageThing",category:"Crawler",url:"https://www.pagething.com/",producer:{name:"SPECIALNOISE LTD",url:"https://www.specialnoise.com/"}},{regex:"ArchiveBox",name:"ArchiveBox",url:"https://archivebox.io/",category:"Crawler",producer:{name:"",url:""}},{regex:"Choosito",name:"Choosito",url:"https://www.choosito.com/",category:"Crawler",producer:{name:"Choosito! Inc.",url:"https://www.choosito.com/"}},{regex:"datagnionbot",name:"datagnionbot",url:"https://www.datagnion.com/bot.html",category:"Crawler",producer:{name:"DATAGNION GMBH",url:"https://www.datagnion.com/"}},{regex:"WhatCMS",name:"WhatCMS",url:"https://whatcms.org/",category:"Crawler",producer:{name:"",url:""}},{regex:"httpx",name:"httpx",url:"https://github.com/projectdiscovery/httpx",category:"Crawler",producer:{name:"",url:""}},{regex:"scaninfo@expanseinc.com",name:"Expanse",category:"Security Checker",url:"https://expanse.co/",producer:{name:"Expanse Inc.",url:"https://expanse.co/"}},{regex:"HuaweiWebCatBot",name:"HuaweiWebCatBot",category:"Crawler",url:"https://isecurity.huawei.com",producer:{name:"Huawei Technologies Co., Ltd.",url:"https://huawei.com"}},{regex:"Hatena-Favicon",name:"Hatena Favicon",category:"Crawler",url:"https://www.hatena.ne.jp/faq/",producer:{name:"Hatena Co., Ltd.",url:"https://www.hatena.ne.jp"}},{regex:"RyowlEngine/(\\d+)",name:"Ryowl",category:"Crawler",url:"https://ryowl.org"},{regex:"OdklBot/(\\d+)",name:"Odnoklassniki Bot",category:"Crawler",url:"https://odnoklassniki.ru"},{regex:"Mediatoolkitbot",name:"Mediatoolkit Bot",category:"Crawler",url:"https://mediatoolkit.com"},{regex:"ZoominfoBot",name:"ZoominfoBot",category:"Crawler",url:"https://www.zoominfo.com"},{regex:"WeViKaBot/([\\d+\\.])",name:"WeViKaBot",category:"Crawler",url:"http://www.wevika.de"},{regex:"SEOkicks",name:"SEOkicks",category:"Crawler",url:"https://www.seokicks.de/robot.html"},{regex:"Plukkie/([\\d+\\.])",name:"Plukkie",category:"Crawler",url:"http://www.botje.com/plukkie.htm"},{regex:"proximic;",name:"Comscore",category:"Crawler",url:"https://www.comscore.com/Web-Crawler"},{regex:"SurdotlyBot/([\\d+\\.])",name:"SurdotlyBot",category:"Crawler",url:"http://sur.ly/bot.html"},{regex:"Gowikibot/([\\d+\\.])",name:"Gowikibot",category:"Crawler",url:"http:/www.gowikibot.com"},{regex:"SabsimBot/([\\d+\\.])",name:"SabsimBot",category:"Crawler",url:"https://sabsim.com"},{regex:"LumtelBot/([\\d+\\.])",name:"LumtelBot",category:"Crawler",url:"https://umtel.com"},{regex:"PiplBot",name:"PiplBot",category:"Crawler",url:"http://www.pipl.com/bot"},{regex:"woobot/([\\d+\\.])",name:"WooRank",category:"Crawler",url:"https://www.woorank.com/bot"},{regex:"[a-z0-9\\-_]*((?<!cu|power[ _]|m[ _])bot(?![ _]TAB|[ _]?5[0-9])|crawler|crawl|checker|archiver|transcoder|spider)([^a-z]|$)",name:"Generic Bot"}],__importDefault$1=commonjsGlobal&&commonjsGlobal.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};const bots_json_1=__importDefault$1(require$$0),user_agent_1$1=userAgent;let BotParser$1=class{constructor(){this.parse=e=>{var t;for(const r of bots_json_1.default)if(user_agent_1$1.userAgentParser(r.regex,e))return{name:r.name,category:r.category||"",url:r.url||"",producer:{name:(null==(t=null==(t=r)?void 0:t.producer)?void 0:t.name)||"",url:(null==(t=null==(t=r)?void 0:t.producer)?void 0:t.url)||""}};return null}}};var bot=BotParser$1,versionCompare={},__importDefault=(Object.defineProperty(versionCompare,"__esModule",{value:!0}),versionCompare.versionCompare=(e,t,r)=>{let o;var a;let i=0;const n={dev:-6,alpha:-5,a:-5,beta:-4,b:-4,RC:-3,rc:-3,"#":-2,p:1,pl:1};var s=e=>(e=(e=(""+e).replace(/[_\-+]/g,".")).replace(/([^.\d]+)/g,".$1.").replace(/\.{2,}/g,".")).length?e.split("."):[-8],l=e=>e?isNaN(e)?n[e]||-7:parseInt(e,10):0;for(e=s(e),t=s(t),a=Math.max(e.length,t.length),o=0;o<a;o++)if(e[o]!==t[o]){if(e[o]=l(e[o]),t[o]=l(t[o]),e[o]<t[o]){i=-1;break}if(e[o]>t[o]){i=1;break}}if(!r)return i;switch(r){case">":case"gt":return 0<i;case">=":case"ge":return 0<=i;case"<=":case"le":return i<=0;case"===":case"=":case"eq":return 0===i;case"<>":case"!==":case"ne":return 0!==i;case"":case"<":case"lt":return i<0;default:return null}},commonjsGlobal&&commonjsGlobal.__importDefault||function(e){return e&&e.__esModule?e:{default:e}});const client_1=__importDefault(client),device_1=__importDefault(device),operating_system_1=__importDefault(operatingSystem$1),vendor_fragment_1=__importDefault(vendorFragment),browser_1=__importDefault(browser),BotParser=bot,user_agent_1=userAgent,version_compare_1=versionCompare;class DeviceDetector{constructor(e){this.options={skipBotDetection:!1,versionTruncation:1},this.parse=e=>{var t={client:this.clientParser.parse(e),os:this.operatingSystemParser.parse(e),device:this.deviceParser.parse(e),bot:this.options.skipBotDetection?null:this.botParser.parse(e)},r=null==(r=t.os)?void 0:r.name,o=null==(o=t.os)?void 0:o.version,a=operating_system_1.default.getOsFamily(r||""),i=(null!=(i=t.device)&&i.brand||(i=this.vendorFragmentParser.parse(e))&&(t.device||(t.device=this.createDeviceObject()),t.device.brand=i),null!=(i=t.device)&&i.brand||!["Apple TV","watchOS","iOS","Mac"].includes(r||"")||(t.device||(t.device=this.createDeviceObject()),t.device.brand="Apple"),null!=(i=t.device)&&i.type||"Android"!==a||!user_agent_1.userAgentParser("Chrome/[\\.0-9]*",e)||(user_agent_1.userAgentParser("Chrome/[.0-9]* (?:Mobile|eliboM)",e)?(t.device||(t.device=this.createDeviceObject()),t.device.type="smartphone"):user_agent_1.userAgentParser("Chrome/[.0-9]* (?!Mobile)",e)&&(t.device||(t.device=this.createDeviceObject()),t.device.type="tablet")),(null!=(i=t.device)&&i.type||!this.hasAndroidTabletFragment(e))&&!user_agent_1.userAgentParser("Opera Tablet",e)||(t.device||(t.device=this.createDeviceObject()),t.device.type="tablet"),null!=(i=t.device)&&i.type||!this.hasAndroidMobileFragment(e)||(t.device||(t.device=this.createDeviceObject()),t.device.type="smartphone"),null!=(i=t.device)&&i.type||"Android"!==r||""===o||(-1===version_compare_1.versionCompare(o,"2.0")?(t.device||(t.device=this.createDeviceObject()),t.device.type="smartphone"):0<=version_compare_1.versionCompare(o,"3.0")&&-1===version_compare_1.versionCompare(o,"4.0")&&(t.device||(t.device=this.createDeviceObject()),t.device.type="tablet")),"feature phone"===(null==(i=t.device)?void 0:i.type)&&"Android"===a&&(t.device.type="smartphone"),null!=(i=t.device)&&i.type||!this.isToucheEnabled(e)||!("Windows RT"===r||"Windows"===r&&0<=version_compare_1.versionCompare(o,"8.0"))||(t.device||(t.device=this.createDeviceObject()),t.device.type="tablet"),user_agent_1.userAgentParser("Opera TV Store",e)&&(t.device||(t.device=this.createDeviceObject()),t.device.type="television"),user_agent_1.userAgentParser("SmartTV|Tizen.+ TV .+$",e)&&(t.device||(t.device=this.createDeviceObject()),t.device.type="television"),null!=(i=t.device)&&i.type||!["Kylo","Espial TV Browser"].includes((null==(r=t.client)?void 0:r.name)||"")||(t.device||(t.device=this.createDeviceObject()),t.device.type="television"),"desktop"!==(null==(o=t.device)?void 0:o.type)&&null!==user_agent_1.userAgentParser("Desktop",e)&&this.hasDesktopFragment(e));return i&&(t.device||(t.device=this.createDeviceObject()),t.device.type="desktop"),null!=(r=t.device)&&r.type||!this.isDesktop(t,a)||(t.device||(t.device=this.createDeviceObject()),t.device.type="desktop"),t},this.hasAndroidMobileFragment=e=>user_agent_1.userAgentParser("Android( [.0-9]+)?; Mobile;",e),this.hasAndroidTabletFragment=e=>user_agent_1.userAgentParser("Android( [.0-9]+)?; Tablet;",e),this.hasDesktopFragment=e=>user_agent_1.userAgentParser("Desktop (x(?:32|64)|WOW64);",e),this.isDesktop=(e,t)=>!!e.os&&!this.usesMobileBrowser(e.client)&&operating_system_1.default.getDesktopOsArray().includes(t),this.usesMobileBrowser=e=>{var t;return!!e&&"browser"===(null==(t=e)?void 0:t.type)&&browser_1.default.isMobileOnlyBrowser(null==(t=e)?void 0:t.name)},this.isToucheEnabled=e=>user_agent_1.userAgentParser("Touch",e),this.createDeviceObject=()=>({type:"",brand:"",model:""}),this.options=Object.assign(Object.assign({},this.options),e),this.clientParser=new client_1.default(this.options),this.deviceParser=new device_1.default,this.operatingSystemParser=new operating_system_1.default(this.options),this.vendorFragmentParser=new vendor_fragment_1.default,this.botParser=new BotParser}}var dist=DeviceDetector,DeviceDetector$1=getDefaultExportFromCjs(dist);let elapsedTime="00:00",audioRecordStartTime;const maximumRecordingTimeInHours=1;let elapsedTimeTimer;function startAudioRecording(e,t,r){audioRecorder.start().then((()=>{e&&e(!0),audioRecordStartTime=new Date,handleElapsedRecordingTime(r)})).catch((e=>{switch(e.message.includes("mediaDevices API or getUserMedia method is not supported in this browser.")&&t&&t(!0),console.log(e),e.name){case"AbortError":console.log("An AbortError has occurred.");break;case"NotAllowedError":console.log("A NotAllowedError has occurred. User might have denied permission.");break;case"NotFoundError":console.log("A NotFoundError has occurred.");break;case"NotReadableError":console.log("A NotReadableError has occurred.");break;case"SecurityError":console.log("A SecurityError has occurred.");break;case"TypeError":console.log("A TypeError has occurred.");break;case"InvalidStateError":console.log("An InvalidStateError has occurred.");break;case"UnknownError":console.log("An UnknownError has occurred.");break;default:console.log("An error occurred with the error name "+e.name)}}))}function stopAudioRecording(e){audioRecorder.stop().then((t=>{clearInterval(elapsedTimeTimer),e&&e(t)})).catch((e=>{"InvalidStateError"===e.name?console.log("An InvalidStateError has occurred."):console.log("An error occurred with the error name "+e.name)}))}function cancelAudioRecording(){audioRecorder.cancel(),clearInterval(elapsedTimeTimer)}function handleElapsedRecordingTime(e){elapsedTime="00:00",e(elapsedTime),elapsedTimeTimer=setInterval((()=>{elapsedTime=computeElapsedTime(audioRecordStartTime),e(elapsedTime),displayElapsedTimeDuringAudioRecording()}),1e3)}function displayElapsedTimeDuringAudioRecording(){elapsedTimeReachedMaximumNumberOfHours()&&stopAudioRecording(null)}function elapsedTimeReachedMaximumNumberOfHours(){var e=elapsedTime.split(":"),t="0"+maximumRecordingTimeInHours;return 3===e.length&&e[0]===t}function padLeft(e,t){return(""+e).padStart(t,"0")}function computeElapsedTime(e){e=(new Date).getTime()-e.getTime();var t,r=(e/=1e3,Math.floor(e%60)),o=(e=Math.floor(e/60))%60;return 0==(t=(t=(e=Math.floor(e/60))%24)+24*(e=e=Math.floor(e/24)))?padLeft(o,2)+":"+padLeft(r,2):padLeft(t,2)+":"+padLeft(o,2)+":"+padLeft(r,2)}const audioRecorder={audioBlobs:[],mediaRecorder:null,streamBeingCaptured:null,start:function(){if(navigator.mediaDevices&&navigator.mediaDevices.getUserMedia){var e=new DeviceDetector$1,t=navigator.userAgent;const r="Mobile Safari"===e.parse(t).client?.name;return navigator.mediaDevices.getUserMedia({audio:!0}).then((e=>{audioRecorder.streamBeingCaptured=e,audioRecorder.mediaRecorder=new MediaRecorder(e),audioRecorder.audioBlobs=[],audioRecorder.mediaRecorder.addEventListener("dataavailable",(e=>{audioRecorder.audioBlobs.push(e.data)})),r?audioRecorder.mediaRecorder.start(1e3):audioRecorder.mediaRecorder.start()}))}return Promise.reject(new Error("mediaDevices API or getUserMedia method is not supported in this browser."))},stop:function(){return new Promise((e=>{const t=audioRecorder.mediaRecorder?.mimeType;audioRecorder.mediaRecorder?.addEventListener("stop",(()=>{var r=new Blob(audioRecorder.audioBlobs,{type:t});e(r)})),audioRecorder.cancel()}))},cancel:function(){audioRecorder.mediaRecorder?.stop(),audioRecorder.stopStream(),audioRecorder.resetRecordingProperties()},stopStream:function(){audioRecorder.streamBeingCaptured?.getTracks().forEach((e=>e.stop()))},resetRecordingProperties:function(){audioRecorder.mediaRecorder=null,audioRecorder.streamBeingCaptured=null}};async function getBytes(e,t){for(var r,o=e.getReader();!(r=await o.read()).done;)t(r.value)}function getLines(e){let t,r,o,a=!1;return function(i){void 0===t?(t=i,r=0,o=-1):t=concat(t,i);var n=t.length;let s=0;for(;r<n;){a&&(10===t[r]&&(s=++r),a=!1);let i=-1;for(;r<n&&-1===i;++r)switch(t[r]){case 58:-1===o&&(o=r-s);break;case 13:a=!0;case 10:i=r}if(-1===i)break;e(t.subarray(s,i),o),s=r,o=-1}s===n?t=void 0:0!==s&&(t=t.subarray(s),r-=s)}}function getMessages(e,t,r){let o=newMessage();const a=new TextDecoder;return function(i,n){if(0===i.length)null!=r&&r(o),o=newMessage();else if(0<n){var s=a.decode(i.subarray(0,n)),l=(n=n+(32===i[n+1]?2:1),a.decode(i.subarray(n)));switch(s){case"data":o.data=o.data?o.data+"\n"+l:l;break;case"event":o.event=l;break;case"id":e(o.id=l);break;case"retry":var d=parseInt(l,10);isNaN(d)||t(o.retry=d)}}}}function concat(e,t){var r=new Uint8Array(e.length+t.length);return r.set(e),r.set(t,e.length),r}function newMessage(){return{data:"",event:"",id:"",retry:void 0}}var __rest=this&&this.__rest||function(e,t){var r={};for(a in e)Object.prototype.hasOwnProperty.call(e,a)&&t.indexOf(a)<0&&(r[a]=e[a]);if(null!=e&&"function"==typeof Object.getOwnPropertySymbols)for(var o=0,a=Object.getOwnPropertySymbols(e);o<a.length;o++)t.indexOf(a[o])<0&&Object.prototype.propertyIsEnumerable.call(e,a[o])&&(r[a[o]]=e[a[o]]);return r};const EventStreamContentType="text/event-stream",DefaultRetryInterval=1e3,LastEventId="last-event-id";function fetchEventSource(e,t){var{signal:r,headers:o,onopen:a,onmessage:i,onclose:n,onerror:s,openWhenHidden:l,fetch:d}=t,m=__rest(t,["signal","headers","onopen","onmessage","onclose","onerror","openWhenHidden","fetch"]);return new Promise(((t,c)=>{const g=Object.assign({},o);let u;function h(){u.abort(),document.hidden||b()}g.accept||(g.accept=EventStreamContentType),l||document.addEventListener("visibilitychange",h);let p=DefaultRetryInterval,x=0;function v(){document.removeEventListener("visibilitychange",h),window.clearTimeout(x),u.abort()}null!=r&&r.addEventListener("abort",(()=>{v(),t()}));const S=null!=d?d:window.fetch,f=null!=a?a:defaultOnOpen;async function b(){var r;u=new AbortController;try{var o=await S(e,Object.assign(Object.assign({},m),{headers:g,signal:u.signal}));await f(o),await getBytes(o.body,getLines(getMessages((e=>{e?g[LastEventId]=e:delete g[LastEventId]}),(e=>{p=e}),i))),null!=n&&n(),v(),t()}catch(o){if(!u.signal.aborted)try{var a=null!=(r=null==s?void 0:s(o))?r:p;window.clearTimeout(x),x=window.setTimeout(b,a)}catch(o){v(),c(o)}}}b()}))}function defaultOnOpen(e){if(null==(e=e.headers.get("content-type"))||!e.startsWith(EventStreamContentType))throw new Error(`Expected content-type to be ${EventStreamContentType}, Actual: `+e)}var lodash={exports:{}},lodashExports=(lodash.exports,M=lodash,w=lodash.exports,function(){var e,t,r,o,a="Expected a function",i="__lodash_hash_undefined__",n="__lodash_placeholder__",s=9007199254740991,l=NaN,d=4294967295,m=[["ary",128],["bind",1],["bindKey",2],["curry",8],["curryRight",16],["flip",512],["partial",32],["partialRight",64],["rearg",256]],c="[object Arguments]",g="[object Array]",u="[object Boolean]",h="[object Date]",p="[object Error]",x="[object Function]",v="[object GeneratorFunction]",S="[object Map]",f="[object Number]",b="[object Object]",A="[object Promise]",_="[object RegExp]",y="[object Set]",T="[object String]",P="[object Symbol]",$="[object WeakMap]",C="[object ArrayBuffer]",E="[object DataView]",L="[object Float32Array]",O="[object Float64Array]",I="[object Int8Array]",G="[object Int16Array]",N="[object Int32Array]",B="[object Uint8Array]",k="[object Uint8ClampedArray]",R="[object Uint16Array]",F="[object Uint32Array]",D=/\b__p \+= '';/g,U=/\b(__p \+=) '' \+/g,X=/(__e\(.*?\)|\b__t\)) \+\n'';/g,V=/&(?:amp|lt|gt|quot|#39);/g,H=/[&<>"']/g,W=RegExp(V.source),K=RegExp(H.source),Z=/<%-([\s\S]+?)%>/g,z=/<%([\s\S]+?)%>/g,Q=/<%=([\s\S]+?)%>/g,j=/\.|\[(?:[^[\]]*|(["'])(?:(?!\1)[^\\]|\\.)*?\1)\]/,Y=/^\w*$/,J=/[^.[\]]+|\[(?:(-?\d+(?:\.\d+)?)|(["'])((?:(?!\2)[^\\]|\\.)*?)\2)\]|(?=(?:\.|\[\])(?:\.|\[\]|$))/g,q=/[\\^$.*+?()[\]{}|]/g,ee=RegExp(q.source),te=/^\s+/,re=/\s/,oe=/\{(?:\n\/\* \[wrapped with .+\] \*\/)?\n?/,ae=/\{\n\/\* \[wrapped with (.+)\] \*/,ie=/,? & /,ne=/[^\x00-\x2f\x3a-\x40\x5b-\x60\x7b-\x7f]+/g,se=/[()=,{}\[\]\/\s]/,le=/\\(\\)?/g,de=/\$\{([^\\}]*(?:\\.[^\\}]*)*)\}/g,me=/\w*$/,ce=/^[-+]0x[0-9a-f]+$/i,ge=/^0b[01]+$/i,ue=/^\[object .+?Constructor\]$/,he=/^0o[0-7]+$/i,pe=/^(?:0|[1-9]\d*)$/,xe=/[\xc0-\xd6\xd8-\xf6\xf8-\xff\u0100-\u017f]/g,ve=/($^)/,Se=/['\n\r\u2028\u2029\\]/g,fe="\\ud800-\\udfff",be="\\u0300-\\u036f\\ufe20-\\ufe2f\\u20d0-\\u20ff",Ae="\\ufe0e\\ufe0f",_e="["+fe+"]",ye="["+(we="\\xac\\xb1\\xd7\\xf7\\x00-\\x2f\\x3a-\\x40\\x5b-\\x60\\x7b-\\xbf\\u2000-\\u206f \\t\\x0b\\f\\xa0\\ufeff\\n\\r\\u2028\\u2029\\u1680\\u180e\\u2000\\u2001\\u2002\\u2003\\u2004\\u2005\\u2006\\u2007\\u2008\\u2009\\u200a\\u202f\\u205f\\u3000")+"]",Te="["+be+"]",Pe="["+(t="\\u2700-\\u27bf")+"]",$e="["+(Ke="a-z\\xdf-\\xf6\\xf8-\\xff")+"]",Me="(?:"+$e+"|"+(we="[^"+fe+we+"\\d+"+t+Ke+(r="A-Z\\xc0-\\xd6\\xd8-\\xde")+"]")+")",we="(?:"+(r="["+r+"]")+"|"+we+")",Ce="(?:['’](?:d|ll|m|re|s|t|ve))?",Ee="(?:['’](?:D|LL|M|RE|S|T|VE))?",Le=(Le="["+Ae+"]?")+(Oe="(?:"+Te+"|"+(t="\\ud83c[\\udffb-\\udfff]")+")?")+"(?:\\u200d(?:"+[Ke="[^"+fe+"]",Ze="(?:\\ud83c[\\udde6-\\uddff]){2}",o="[\\ud800-\\udbff][\\udc00-\\udfff]"].join("|")+")"+Le+Oe+")*",Oe="(?:"+[Pe,Ze,o].join("|")+")"+Le,Ie=(Pe="(?:"+[Ke+Te+"?",Te,Ze,o,_e].join("|")+")",RegExp("['’]","g")),Ge=RegExp(Te,"g"),Ne=RegExp(t+"(?="+t+")|"+Pe+Le,"g"),Be=RegExp([r+"?"+$e+"+"+Ce+"(?="+[ye,r,"$"].join("|")+")",we+"+"+Ee+"(?="+[ye,r+Me,"$"].join("|")+")",r+"?"+Me+"+"+Ce,r+"+"+Ee,"\\d*(?:1ST|2ND|3RD|(?![123])\\dTH)(?=\\b|[a-z_])","\\d*(?:1st|2nd|3rd|(?![123])\\dth)(?=\\b|[A-Z_])","\\d+",Oe].join("|"),"g"),ke=RegExp("[\\u200d"+fe+be+Ae+"]"),Re=/[a-z][A-Z]|[A-Z]{2}[a-z]|[0-9][a-zA-Z]|[a-zA-Z][0-9]|[^a-zA-Z0-9 ]/,Fe=["Array","Buffer","DataView","Date","Error","Float32Array","Float64Array","Function","Int8Array","Int16Array","Int32Array","Map","Math","Object","Promise","RegExp","Set","String","Symbol","TypeError","Uint8Array","Uint8ClampedArray","Uint16Array","Uint32Array","WeakMap","_","clearTimeout","isFinite","parseInt","setTimeout"],De=-1,Ue={},Xe=(Ue[L]=Ue[O]=Ue[I]=Ue[G]=Ue[N]=Ue[B]=Ue[k]=Ue[R]=Ue[F]=!0,Ue[c]=Ue[g]=Ue[C]=Ue[u]=Ue[E]=Ue[h]=Ue[p]=Ue[x]=Ue[S]=Ue[f]=Ue[b]=Ue[_]=Ue[y]=Ue[T]=Ue[$]=!1,{}),Ve=(Xe[c]=Xe[g]=Xe[C]=Xe[E]=Xe[u]=Xe[h]=Xe[L]=Xe[O]=Xe[I]=Xe[G]=Xe[N]=Xe[S]=Xe[f]=Xe[b]=Xe[_]=Xe[y]=Xe[T]=Xe[P]=Xe[B]=Xe[k]=Xe[R]=Xe[F]=!0,Xe[p]=Xe[x]=Xe[$]=!1,{"\\":"\\","'":"'","\n":"n","\r":"r","\u2028":"u2028","\u2029":"u2029"}),He=parseFloat,We=parseInt,Ke="object"==typeof commonjsGlobal&&commonjsGlobal&&commonjsGlobal.Object===Object&&commonjsGlobal,Ze="object"==typeof self&&self&&self.Object===Object&&self,ze=Ke||Ze||Function("return this")(),Qe=(o=w&&!w.nodeType&&w)&&M&&!M.nodeType&&M,je=Qe&&Qe.exports===o,Ye=je&&Ke.process,Je=(_e=function(){try{var e=Qe&&Qe.require&&Qe.require("util").types;return e||Ye&&Ye.binding&&Ye.binding("util")}catch(e){}}(),_e&&_e.isArrayBuffer),qe=_e&&_e.isDate,et=_e&&_e.isMap,tt=_e&&_e.isRegExp,rt=_e&&_e.isSet,ot=_e&&_e.isTypedArray;function at(e,t,r){switch(r.length){case 0:return e.call(t);case 1:return e.call(t,r[0]);case 2:return e.call(t,r[0],r[1]);case 3:return e.call(t,r[0],r[1],r[2])}return e.apply(t,r)}function it(e,t,r,o){for(var a=-1,i=null==e?0:e.length;++a<i;){var n=e[a];t(o,n,r(n),e)}return o}function nt(e,t){for(var r=-1,o=null==e?0:e.length;++r<o&&!1!==t(e[r],r,e););return e}function st(e,t){for(var r=null==e?0:e.length;r--&&!1!==t(e[r],r,e););return e}function lt(e,t){for(var r=-1,o=null==e?0:e.length;++r<o;)if(!t(e[r],r,e))return!1;return!0}function dt(e,t){for(var r=-1,o=null==e?0:e.length,a=0,i=[];++r<o;){var n=e[r];t(n,r,e)&&(i[a++]=n)}return i}function mt(e,t){return!(null==e||!e.length)&&-1<bt(e,t,0)}function ct(e,t,r){for(var o=-1,a=null==e?0:e.length;++o<a;)if(r(t,e[o]))return!0;return!1}function gt(e,t){for(var r=-1,o=null==e?0:e.length,a=Array(o);++r<o;)a[r]=t(e[r],r,e);return a}function ut(e,t){for(var r=-1,o=t.length,a=e.length;++r<o;)e[a+r]=t[r];return e}function ht(e,t,r,o){var a=-1,i=null==e?0:e.length;for(o&&i&&(r=e[++a]);++a<i;)r=t(r,e[a],a,e);return r}function pt(e,t,r,o){var a=null==e?0:e.length;for(o&&a&&(r=e[--a]);a--;)r=t(r,e[a],a,e);return r}function xt(e,t){for(var r=-1,o=null==e?0:e.length;++r<o;)if(t(e[r],r,e))return!0;return!1}var vt=Tt("length");function St(e,t,r){var o;return r(e,(function(e,r,a){if(t(e,r,a))return o=r,!1})),o}function ft(e,t,r,o){for(var a=e.length,i=r+(o?1:-1);o?i--:++i<a;)if(t(e[i],i,e))return i;return-1}function bt(e,t,r){if(t!=t)return ft(e,_t,r);for(var o=e,a=t,i=r-1,n=o.length;++i<n;)if(o[i]===a)return i;return-1}function At(e,t,r,o){for(var a=r-1,i=e.length;++a<i;)if(o(e[a],t))return a;return-1}function _t(e){return e!=e}function yt(e,t){var r=null==e?0:e.length;return r?Mt(e,t)/r:l}function Tt(t){return function(r){return null==r?e:r[t]}}function Pt(t){return function(r){return null==t?e:t[r]}}function $t(e,t,r,o,a){return a(e,(function(e,a,i){r=o?(o=!1,e):t(r,e,a,i)})),r}function Mt(t,r){for(var o,a=-1,i=t.length;++a<i;){var n=r(t[a]);n!==e&&(o=o===e?n:o+n)}return o}function wt(e,t){for(var r=-1,o=Array(e);++r<e;)o[r]=t(r);return o}function Ct(e){return e&&e.slice(0,Wt(e)+1).replace(te,"")}function Et(e){return function(t){return e(t)}}function Lt(e,t){return gt(t,(function(t){return e[t]}))}function Ot(e,t){return e.has(t)}function It(e,t){for(var r=-1,o=e.length;++r<o&&-1<bt(t,e[r],0););return r}function Gt(e,t){for(var r=e.length;r--&&-1<bt(t,e[r],0););return r}var Nt=Pt({"À":"A","Á":"A","Â":"A","Ã":"A","Ä":"A","Å":"A","à":"a","á":"a","â":"a","ã":"a","ä":"a","å":"a","Ç":"C","ç":"c","Ð":"D","ð":"d","È":"E","É":"E","Ê":"E","Ë":"E","è":"e","é":"e","ê":"e","ë":"e","Ì":"I","Í":"I","Î":"I","Ï":"I","ì":"i","í":"i","î":"i","ï":"i","Ñ":"N","ñ":"n","Ò":"O","Ó":"O","Ô":"O","Õ":"O","Ö":"O","Ø":"O","ò":"o","ó":"o","ô":"o","õ":"o","ö":"o","ø":"o","Ù":"U","Ú":"U","Û":"U","Ü":"U","ù":"u","ú":"u","û":"u","ü":"u","Ý":"Y","ý":"y","ÿ":"y","Æ":"Ae","æ":"ae","Þ":"Th","þ":"th","ß":"ss","Ā":"A","Ă":"A","Ą":"A","ā":"a","ă":"a","ą":"a","Ć":"C","Ĉ":"C","Ċ":"C","Č":"C","ć":"c","ĉ":"c","ċ":"c","č":"c","Ď":"D","Đ":"D","ď":"d","đ":"d","Ē":"E","Ĕ":"E","Ė":"E","Ę":"E","Ě":"E","ē":"e","ĕ":"e","ė":"e","ę":"e","ě":"e","Ĝ":"G","Ğ":"G","Ġ":"G","Ģ":"G","ĝ":"g","ğ":"g","ġ":"g","ģ":"g","Ĥ":"H","Ħ":"H","ĥ":"h","ħ":"h","Ĩ":"I","Ī":"I","Ĭ":"I","Į":"I","İ":"I","ĩ":"i","ī":"i","ĭ":"i","į":"i","ı":"i","Ĵ":"J","ĵ":"j","Ķ":"K","ķ":"k","ĸ":"k","Ĺ":"L","Ļ":"L","Ľ":"L","Ŀ":"L","Ł":"L","ĺ":"l","ļ":"l","ľ":"l","ŀ":"l","ł":"l","Ń":"N","Ņ":"N","Ň":"N","Ŋ":"N","ń":"n","ņ":"n","ň":"n","ŋ":"n","Ō":"O","Ŏ":"O","Ő":"O","ō":"o","ŏ":"o","ő":"o","Ŕ":"R","Ŗ":"R","Ř":"R","ŕ":"r","ŗ":"r","ř":"r","Ś":"S","Ŝ":"S","Ş":"S","Š":"S","ś":"s","ŝ":"s","ş":"s","š":"s","Ţ":"T","Ť":"T","Ŧ":"T","ţ":"t","ť":"t","ŧ":"t","Ũ":"U","Ū":"U","Ŭ":"U","Ů":"U","Ű":"U","Ų":"U","ũ":"u","ū":"u","ŭ":"u","ů":"u","ű":"u","ų":"u","Ŵ":"W","ŵ":"w","Ŷ":"Y","ŷ":"y","Ÿ":"Y","Ź":"Z","Ż":"Z","Ž":"Z","ź":"z","ż":"z","ž":"z","IJ":"IJ","ij":"ij","Œ":"Oe","œ":"oe","ʼn":"'n","ſ":"s"}),Bt=Pt({"&":"&","<":"<",">":">",'"':""","'":"'"});function kt(e){return"\\"+Ve[e]}function Rt(e){return ke.test(e)}function Ft(e){var t=-1,r=Array(e.size);return e.forEach((function(e,o){r[++t]=[o,e]})),r}function Dt(e,t){return function(r){return e(t(r))}}function Ut(e,t){for(var r=-1,o=e.length,a=0,i=[];++r<o;){var s=e[r];s!==t&&s!==n||(e[r]=n,i[a++]=r)}return i}function Xt(e){var t=-1,r=Array(e.size);return e.forEach((function(e){r[++t]=e})),r}function Vt(e){return(Rt(e)?function(e){for(var t=Ne.lastIndex=0;Ne.test(e);)++t;return t}:vt)(e)}function Ht(e){return Rt(e)?e.match(Ne)||[]:e.split("")}function Wt(e){for(var t=e.length;t--&&re.test(e.charAt(t)););return t}var Kt=Pt({"&":"&","<":"<",">":">",""":'"',"'":"'"}),Zt=function t(r){var o=(r=null==r?ze:Zt.defaults(ze.Object(),r,Zt.pick(ze,Fe))).Array,M=r.Date,w=r.Error,re=r.Function,fe=r.Math,be=r.Object,Ae=r.RegExp,_e=r.String,ye=r.TypeError,Te=o.prototype,Pe=re.prototype,$e=be.prototype,Me=r["__core-js_shared__"],we=Pe.toString,Ce=$e.hasOwnProperty,Ee=0,Le=(Pe=/[^.]+$/.exec(Me&&Me.keys&&Me.keys.IE_PROTO||""))?"Symbol(src)_1."+Pe:"",Oe=$e.toString,Ne=we.call(be),ke=ze._,Ve=Ae("^"+we.call(Ce).replace(q,"\\$&").replace(/hasOwnProperty|(function).*?(?=\\\()| for .+?(?=\\\])/g,"$1.*?")+"$"),Ke=(Pe=je?r.Buffer:e,r.Symbol),Ze=r.Uint8Array,Qe=Pe?Pe.allocUnsafe:e,Ye=Dt(be.getPrototypeOf,be),vt=be.create,Pt=$e.propertyIsEnumerable,zt=Te.splice,Qt=Ke?Ke.isConcatSpreadable:e,jt=Ke?Ke.iterator:e,Yt=Ke?Ke.toStringTag:e,Jt=function(){try{var e=Ja(be,"defineProperty");return e({},"",{}),e}catch(e){}}(),qt=r.clearTimeout!==ze.clearTimeout&&r.clearTimeout,er=M&&M.now!==ze.Date.now&&M.now,tr=r.setTimeout!==ze.setTimeout&&r.setTimeout,rr=fe.ceil,or=fe.floor,ar=be.getOwnPropertySymbols,ir=(Pe=Pe?Pe.isBuffer:e,r.isFinite),nr=Te.join,sr=Dt(be.keys,be),lr=fe.max,dr=fe.min,mr=M.now,cr=r.parseInt,gr=fe.random,ur=Te.reverse,hr=(M=Ja(r,"DataView"),Ja(r,"Map")),pr=Ja(r,"Promise"),xr=Ja(r,"Set"),vr=(r=Ja(r,"WeakMap"),Ja(be,"create")),Sr=r&&new r,fr={},br=Pi(M),Ar=Pi(hr),_r=Pi(pr),yr=Pi(xr),Tr=Pi(r),Pr=(Ke=Ke?Ke.prototype:e)?Ke.valueOf:e,$r=Ke?Ke.toString:e;function Mr(e){if(In(e)&&!yn(e)&&!(e instanceof Or)){if(e instanceof Lr)return e;if(Ce.call(e,"__wrapped__"))return $i(e)}return new Lr(e)}var wr=function(t){return On(t)?vt?vt(t):(Cr.prototype=t,t=new Cr,Cr.prototype=e,t):{}};function Cr(){}function Er(){}function Lr(t,r){this.__wrapped__=t,this.__actions__=[],this.__chain__=!!r,this.__index__=0,this.__values__=e}function Or(e){this.__wrapped__=e,this.__actions__=[],this.__dir__=1,this.__filtered__=!1,this.__iteratees__=[],this.__takeCount__=d,this.__views__=[]}function Ir(e){var t=-1,r=null==e?0:e.length;for(this.clear();++t<r;){var o=e[t];this.set(o[0],o[1])}}function Gr(e){var t=-1,r=null==e?0:e.length;for(this.clear();++t<r;){var o=e[t];this.set(o[0],o[1])}}function Nr(e){var t=-1,r=null==e?0:e.length;for(this.clear();++t<r;){var o=e[t];this.set(o[0],o[1])}}function Br(e){var t=-1,r=null==e?0:e.length;for(this.__data__=new Nr;++t<r;)this.add(e[t])}function kr(e){e=this.__data__=new Gr(e),this.size=e.size}function Rr(e,t){var r,o=yn(e),a=!o&&_n(e),i=!o&&!a&&Mn(e),n=!o&&!a&&!i&&Un(e),s=o||a||i||n,l=s?wt(e.length,_e):[],d=l.length;for(r in e)!t&&!Ce.call(e,r)||s&&("length"==r||i&&("offset"==r||"parent"==r)||n&&("buffer"==r||"byteLength"==r||"byteOffset"==r)||ii(r,d))||l.push(r);return l}function Fr(t){var r=t.length;return r?t[Bo(0,r-1)]:e}function Dr(e,t){return Ai(xa(e),Qr(t,0,e.length))}function Ur(e){return Ai(xa(e))}function Xr(t,r,o){(o===e||fn(t[r],o))&&(o!==e||r in t)||Zr(t,r,o)}function Vr(t,r,o){var a=t[r];Ce.call(t,r)&&fn(a,o)&&(o!==e||r in t)||Zr(t,r,o)}function Hr(e,t){for(var r=e.length;r--;)if(fn(e[r][0],t))return r;return-1}function Wr(e,t,r,o){return eo(e,(function(e,a,i){t(o,e,r(e),i)})),o}function Kr(e,t){return e&&va(t,ds(t),e)}function Zr(e,t,r){"__proto__"==t&&Jt?Jt(e,t,{configurable:!0,enumerable:!0,value:r,writable:!0}):e[t]=r}function zr(t,r){for(var a=-1,i=r.length,n=o(i),s=null==t;++a<i;)n[a]=s?e:as(t,r[a]);return n}function Qr(t,r,o){return t==t&&(o!==e&&(t=t<=o?t:o),r!==e)?r<=t?t:r:t}function jr(t,r,o,a,i,n){var s,l=1&r,d=2&r,m=4&r;if((s=o?i?o(t,a,i,n):o(t):s)===e){if(!On(t))return t;var g;if(a=yn(t)){if(s=function(e){var t=e.length,r=new e.constructor(t);return t&&"string"==typeof e[0]&&Ce.call(e,"index")&&(r.index=e.index,r.input=e.input),r}(t),!l)return xa(t,s)}else{var p=ti(t),A=p==x||p==v;if(Mn(t))return ma(t,l);if(p==b||p==c||A&&!i){if(s=d||A?{}:oi(t),!l)return d?($=A=t,$=(g=s)&&va($,ms($),g),va(A,ei(A),$)):(A=Kr(s,g=t),va(g,qa(g),A))}else{if(!Xe[p])return i?t:{};s=function(e,t,r){var o=e.constructor;switch(t){case C:return ca(e);case u:case h:return new o(+e);case E:return function(e,t){return t=t?ca(e.buffer):e.buffer,new e.constructor(t,e.byteOffset,e.byteLength)}(e,r);case L:case O:case I:case G:case N:case B:case k:case R:case F:return ga(e,r);case S:return new o;case f:case T:return new o(e);case _:return function(e){var t=new e.constructor(e.source,me.exec(e));return t.lastIndex=e.lastIndex,t}(e);case y:return new o;case P:return function(e){return Pr?be(Pr.call(e)):{}}(e)}}(t,p,l)}}var $=(n=n||new kr).get(t);if($)return $;n.set(t,s),Rn(t)?t.forEach((function(e){s.add(jr(e,r,o,e,t,n))})):Gn(t)&&t.forEach((function(e,a){s.set(a,jr(e,r,o,a,t,n))}));var M=a?e:(m?d?Wa:Ha:d?ms:ds)(t);nt(M||t,(function(e,a){M&&(e=t[a=e]),Vr(s,a,jr(e,r,o,a,t,n))}))}return s}function Yr(t,r,o){var a=o.length;if(null==t)return!a;for(t=be(t);a--;){var i=o[a],n=r[i],s=t[i];if(s===e&&!(i in t)||!n(s))return!1}return!0}function Jr(t,r,o){if("function"!=typeof t)throw new ye(a);return vi((function(){t.apply(e,o)}),r)}function qr(e,t,r,o){var a=-1,i=mt,n=!0,s=e.length,l=[],d=t.length;if(s){r&&(t=gt(t,Et(r))),o?(i=ct,n=!1):200<=t.length&&(i=Ot,n=!1,t=new Br(t));e:for(;++a<s;){var m=e[a],c=null==r?m:r(m);if(m=o||0!==m?m:0,n&&c==c){for(var g=d;g--;)if(t[g]===c)continue e;l.push(m)}else i(t,c,o)||l.push(m)}}return l}Mr.templateSettings={escape:Z,evaluate:z,interpolate:Q,variable:"",imports:{_:Mr}},(Mr.prototype=Er.prototype).constructor=Mr,(Lr.prototype=wr(Er.prototype)).constructor=Lr,(Or.prototype=wr(Er.prototype)).constructor=Or,Ir.prototype.clear=function(){this.__data__=vr?vr(null):{},this.size=0},Ir.prototype.delete=function(e){return e=this.has(e)&&delete this.__data__[e],this.size-=e?1:0,e},Ir.prototype.get=function(t){var r,o=this.__data__;return vr?(r=o[t])===i?e:r:Ce.call(o,t)?o[t]:e},Ir.prototype.has=function(t){var r=this.__data__;return vr?r[t]!==e:Ce.call(r,t)},Ir.prototype.set=function(t,r){var o=this.__data__;return this.size+=this.has(t)?0:1,o[t]=vr&&r===e?i:r,this},Gr.prototype.clear=function(){this.__data__=[],this.size=0},Gr.prototype.delete=function(e){var t=this.__data__;return!((e=Hr(t,e))<0||(e==t.length-1?t.pop():zt.call(t,e,1),--this.size,0))},Gr.prototype.get=function(t){var r=this.__data__;return(t=Hr(r,t))<0?e:r[t][1]},Gr.prototype.has=function(e){return-1<Hr(this.__data__,e)},Gr.prototype.set=function(e,t){var r=this.__data__,o=Hr(r,e);return o<0?(++this.size,r.push([e,t])):r[o][1]=t,this},Nr.prototype.clear=function(){this.size=0,this.__data__={hash:new Ir,map:new(hr||Gr),string:new Ir}},Nr.prototype.delete=function(e){return e=ja(this,e).delete(e),this.size-=e?1:0,e},Nr.prototype.get=function(e){return ja(this,e).get(e)},Nr.prototype.has=function(e){return ja(this,e).has(e)},Nr.prototype.set=function(e,t){var r=ja(this,e),o=r.size;return r.set(e,t),this.size+=r.size==o?0:1,this},Br.prototype.add=Br.prototype.push=function(e){return this.__data__.set(e,i),this},Br.prototype.has=function(e){return this.__data__.has(e)},kr.prototype.clear=function(){this.__data__=new Gr,this.size=0},kr.prototype.delete=function(e){var t=this.__data__;return e=t.delete(e),this.size=t.size,e},kr.prototype.get=function(e){return this.__data__.get(e)},kr.prototype.has=function(e){return this.__data__.has(e)},kr.prototype.set=function(e,t){var r=this.__data__;if(r instanceof Gr){var o=r.__data__;if(!hr||o.length<199)return o.push([e,t]),this.size=++r.size,this;r=this.__data__=new Nr(o)}return r.set(e,t),this.size=r.size,this};var eo=ba(lo),to=ba(mo,!0);function ro(e,t){var r=!0;return eo(e,(function(e,o,a){return r=!!t(e,o,a)})),r}function oo(t,r,o){for(var a=-1,i=t.length;++a<i;){var n,s,l=t[a],d=r(l);null!=d&&(n===e?d==d&&!Dn(d):o(d,n))&&(n=d,s=l)}return s}function ao(e,t){var r=[];return eo(e,(function(e,o,a){t(e,o,a)&&r.push(e)})),r}function io(e,t,r,o,a){var i=-1,n=e.length;for(r=r||ai,a=a||[];++i<n;){var s=e[i];0<t&&r(s)?1<t?io(s,t-1,r,o,a):ut(a,s):o||(a[a.length]=s)}return a}var no=Aa(),so=Aa(!0);function lo(e,t){return e&&no(e,t,ds)}function mo(e,t){return e&&so(e,t,ds)}function co(e,t){return dt(t,(function(t){return Cn(e[t])}))}function go(t,r){for(var o=0,a=(r=na(r,t)).length;null!=t&&o<a;)t=t[Ti(r[o++])];return o&&o==a?t:e}function uo(e,t,r){return t=t(e),yn(e)?t:ut(t,r(e))}function ho(t){if(null==t)return t===e?"[object Undefined]":"[object Null]";if(Yt&&Yt in be(t)){var r=t,o=Ce.call(r,Yt),a=r[Yt];try{r[Yt]=e;var i=!0}catch(t){}var n=Oe.call(r);return i&&(o?r[Yt]=a:delete r[Yt]),n}return Oe.call(t)}function po(e,t){return t<e}function xo(e,t){return null!=e&&Ce.call(e,t)}function vo(e,t){return null!=e&&t in be(e)}function So(t,r,a){for(var i=a?ct:mt,n=t[0].length,s=t.length,l=s,d=o(s),m=1/0,c=[];l--;){var g=t[l];l&&r&&(g=gt(g,Et(r))),m=dr(g.length,m),d[l]=!a&&(r||120<=n&&120<=g.length)?new Br(l&&g):e}g=t[0];var u=-1,h=d[0];e:for(;++u<n&&c.length<m;){var p=g[u],x=r?r(p):p;if(p=a||0!==p?p:0,!(h?Ot(h,x):i(c,x,a))){for(l=s;--l;){var v=d[l];if(!(v?Ot(v,x):i(t[l],x,a)))continue e}h&&h.push(x),c.push(p)}}return c}function fo(t,r,o){return null==(r=null==(t=hi(t,r=na(r,t)))?t:t[Ti(Li(r))])?e:at(r,t,o)}function bo(e){return In(e)&&ho(e)==c}function Ao(t,r,o,a,i){if(t===r)return!0;if(null==t||null==r||!In(t)&&!In(r))return t!=t&&r!=r;var n=Ao,s=yn(t),l=yn(r),d=s?g:ti(t),m=(l=l?g:ti(r),(d=d==c?b:d)==b),x=(l=l==c?b:l)==b;if((l=d==l)&&Mn(t)){if(!Mn(r))return!1;m=!(s=!0)}if(l&&!m){if(i=i||new kr,s||Un(t))return Xa(t,r,o,a,n,i);var v=t,A=r,$=o,M=a,w=n,L=i;switch(d){case E:if(v.byteLength!=A.byteLength||v.byteOffset!=A.byteOffset)return!1;v=v.buffer,A=A.buffer;case C:return!(v.byteLength!=A.byteLength||!w(new Ze(v),new Ze(A)));case u:case h:case f:return fn(+v,+A);case p:return v.name==A.name&&v.message==A.message;case _:case T:return v==A+"";case S:var O=Ft;case y:var I=1&$;return O=O||Xt,!(v.size!=A.size&&!I)&&((I=L.get(v))?I==A:($|=2,L.set(v,A),I=Xa(O(v),O(A),$,M,w,L),L.delete(v),I));case P:if(Pr)return Pr.call(v)==Pr.call(A)}return!1}if(!(1&o)&&(s=m&&Ce.call(t,"__wrapped__"),d=x&&Ce.call(r,"__wrapped__"),s||d))return n(m=s?t.value():t,x=d?r.value():r,o,a,i=i||new kr);if(l){var G=t,N=r,B=o,k=a,R=n,F=i=i||new kr,D=1&B,U=Ha(G),X=U.length;if(X!=(s=Ha(N).length)&&!D)return!1;for(var V=X;V--;){var H=U[V];if(!(D?H in N:Ce.call(N,H)))return!1}if(s=F.get(G),d=F.get(N),s&&d)return s==N&&d==G;for(var W=!0,K=(F.set(G,N),F.set(N,G),D);++V<X;){var Z,z=G[H=U[V]],Q=N[H];if(!((Z=k?D?k(Q,z,H,N,G,F):k(z,Q,H,G,N,F):Z)===e?z===Q||R(z,Q,B,k,F):Z)){W=!1;break}K=K||"constructor"==H}return W&&!K&&(s=G.constructor)!=(d=N.constructor)&&"constructor"in G&&"constructor"in N&&!("function"==typeof s&&s instanceof s&&"function"==typeof d&&d instanceof d)&&(W=!1),F.delete(G),F.delete(N),W}return!1}function _o(t,r,o,a){var i=o.length,n=i,s=!a;if(null==t)return!n;for(t=be(t);i--;){var l=o[i];if(s&&l[2]?l[1]!==t[l[0]]:!(l[0]in t))return!1}for(;++i<n;){var d=(l=o[i])[0],m=t[d],c=l[1];if(s&&l[2]){if(m===e&&!(d in t))return!1}else{var g,u=new kr;if(!((g=a?a(m,c,d,t,r,u):g)===e?Ao(c,m,3,a,u):g))return!1}}return!0}function yo(e){var t;return!(!On(e)||(t=e,Le&&Le in t))&&(Cn(e)?Ve:ue).test(Pi(e))}function To(e){return"function"==typeof e?e:null==e?Ns:"object"==typeof e?yn(e)?Co(e[0],e[1]):wo(e):Hs(e)}function Po(e){if(!mi(e))return sr(e);var t,r=[];for(t in be(e))Ce.call(e,t)&&"constructor"!=t&&r.push(t);return r}function $o(e,t){return e<t}function Mo(e,t){var r=-1,a=Pn(e)?o(e.length):[];return eo(e,(function(e,o,i){a[++r]=t(e,o,i)})),a}function wo(e){var t=Ya(e);return 1==t.length&&t[0][2]?gi(t[0][0],t[0][1]):function(r){return r===e||_o(r,e,t)}}function Co(t,r){return si(t)&&ci(r)?gi(Ti(t),r):function(o){var a=as(o,t);return a===e&&a===r?is(o,t):Ao(r,a,3)}}function Eo(t,r,o,a,i){t!==r&&no(r,(function(n,s){var l,d,m,c,g,u,h,p,x,v,S,f,b;i=i||new kr,On(n)?(d=r,c=o,g=Eo,u=a,h=i,S=pi(l=t,m=s),f=pi(d,m),(b=h.get(f))||((d=(b=u?u(S,f,m+"",l,d,h):e)===e)&&(x=!(p=yn(f))&&Mn(f),v=!p&&!x&&Un(f),b=f,p||x||v?b=yn(S)?S:$n(S)?xa(S):x?ma(f,!(d=!1)):v?ga(f,!(d=!1)):[]:Bn(f)||_n(f)?_n(b=S)?b=Qn(S):On(S)&&!Cn(S)||(b=oi(f)):d=!1),d&&(h.set(f,b),g(b,f,c,u,h),h.delete(f))),Xr(l,m,b)):(p=a?a(pi(t,s),n,s+"",t,r,i):e,Xr(t,s,p=p===e?n:p))}),ms)}function Lo(t,r){var o=t.length;if(o)return ii(r+=r<0?o:0,o)?t[r]:e}function Oo(e,t,r){t=t.length?gt(t,(function(e){return yn(e)?function(t){return go(t,1===e.length?e[0]:e)}:e})):[Ns];var o=-1;t=gt(t,Et(Qa()));var a=Mo(e,(function(e,r,a){return{criteria:gt(t,(function(t){return t(e)})),index:++o,value:e}})),i=(e=function(e,t){for(var o=r,a=-1,i=e.criteria,n=t.criteria,s=i.length,l=o.length;++a<s;){var d=ua(i[a],n[a]);if(d)return l<=a?d:d*("desc"==o[a]?-1:1)}return e.index-t.index},a.length);for(a.sort(e);i--;)a[i]=a[i].value;return a}function Io(e,t,r){for(var o=-1,a=t.length,i={};++o<a;){var n=t[o],s=go(e,n);r(s,n)&&Uo(i,na(n,e),s)}return i}function Go(e,t,r,o){var a=o?At:bt,i=-1,n=t.length,s=e;for(e===t&&(t=xa(t)),r&&(s=gt(e,Et(r)));++i<n;)for(var l=0,d=t[i],m=r?r(d):d;-1<(l=a(s,m,l,o));)s!==e&&zt.call(s,l,1),zt.call(e,l,1);return e}function No(e,t){for(var r=e?t.length:0,o=r-1;r--;){var a,i=t[r];r!=o&&i===a||(ii(a=i)?zt.call(e,i,1):Jo(e,i))}}function Bo(e,t){return e+or(gr()*(t-e+1))}function ko(e,t){var r="";if(!(!e||t<1||s<t))for(;t%2&&(r+=e),(t=or(t/2))&&(e+=e),t;);return r}function Ro(e,t){return Si(ui(e,t,Ns),e+"")}function Fo(e){return Fr(Ss(e))}function Do(e,t){return Ai(e=Ss(e),Qr(t,0,e.length))}function Uo(t,r,o,a){if(On(t))for(var i=-1,n=(r=na(r,t)).length,s=n-1,l=t;null!=l&&++i<n;){var d,m=Ti(r[i]),c=o;if("__proto__"===m||"constructor"===m||"prototype"===m)return t;Vr(l,m,c=i!=s&&(d=l[m],(c=a?a(d,m,l):e)===e)?On(d)?d:ii(r[i+1])?[]:{}:c),l=l[m]}return t}var Xo=Sr?function(e,t){return Sr.set(e,t),e}:Ns;function Vo(e){return Ai(Ss(e))}function Ho(e,t,r){for(var a=-1,i=e.length,n=((r=i<r?i:r)<0&&(r+=i),i=r<(t=t<0?i<-t?0:i+t:t)?0:r-t>>>0,t>>>=0,o(i));++a<i;)n[a]=e[a+t];return n}function Wo(e,t){var r;return eo(e,(function(e,o,a){return!(r=t(e,o,a))})),!!r}function Ko(e,t,r){var o=0,a=null==e?o:e.length;if("number"==typeof t&&t==t&&a<=2147483647){for(;o<a;){var i=o+a>>>1,n=e[i];null!==n&&!Dn(n)&&(r?n<=t:n<t)?o=1+i:a=i}return a}return Zo(e,t,Ns,r)}function Zo(t,r,o,a){var i=0,n=null==t?0:t.length;if(0===n)return 0;for(var s=(r=o(r))!=r,l=null===r,d=Dn(r),m=r===e;i<n;){var c=or((i+n)/2),g=o(t[c]),u=g!==e,h=null===g,p=g==g,x=Dn(g);(p=s?a||p:m?p&&(a||u):l?p&&u&&(a||!h):d?p&&u&&!h&&(a||!x):!h&&!x&&(a?g<=r:g<r))?i=c+1:n=c}return dr(n,4294967294)}function zo(e,t){for(var r=-1,o=e.length,a=0,i=[];++r<o;){var n,s=e[r],l=t?t(s):s;r&&fn(l,n)||(n=l,i[a++]=0===s?0:s)}return i}function Qo(e){return"number"==typeof e?e:Dn(e)?l:+e}function jo(e){var t;return"string"==typeof e?e:yn(e)?gt(e,jo)+"":Dn(e)?$r?$r.call(e):"":"0"==(t=e+"")&&1/e==-1/0?"-0":t}function Yo(e,t,r){var o=-1,a=mt,i=e.length,n=!0,s=[],l=s;if(r)n=!1,a=ct;else if(200<=i){var d=t?null:Ba(e);if(d)return Xt(d);n=!1,a=Ot,l=new Br}else l=t?[]:s;e:for(;++o<i;){var m=e[o],c=t?t(m):m;if(m=r||0!==m?m:0,n&&c==c){for(var g=l.length;g--;)if(l[g]===c)continue e;t&&l.push(c),s.push(m)}else a(l,c,r)||(l!==s&&l.push(c),s.push(m))}return s}function Jo(e,t){return null==(e=hi(e,t=na(t,e)))||delete e[Ti(Li(t))]}function qo(e,t,r,o){return Uo(e,t,r(go(e,t)),o)}function ea(e,t,r,o){for(var a=e.length,i=o?a:-1;(o?i--:++i<a)&&t(e[i],i,e););return r?Ho(e,o?0:i,o?i+1:a):Ho(e,o?i+1:0,o?a:i)}function ta(e,t){var r=e;return ht(t,(function(e,t){return t.func.apply(t.thisArg,ut([e],t.args))}),r=e instanceof Or?e.value():r)}function ra(e,t,r){var a=e.length;if(a<2)return a?Yo(e[0]):[];for(var i=-1,n=o(a);++i<a;)for(var s=e[i],l=-1;++l<a;)l!=i&&(n[i]=qr(n[i]||s,e[l],t,r));return Yo(io(n,1),t,r)}function oa(t,r,o){for(var a=-1,i=t.length,n=r.length,s={};++a<i;){var l=a<n?r[a]:e;o(s,t[a],l)}return s}function aa(e){return $n(e)?e:[]}function ia(e){return"function"==typeof e?e:Ns}function na(e,t){return yn(e)?e:si(e,t)?[e]:yi(jn(e))}Ke=Jt?function(e,t){return Jt(e,"toString",{configurable:!0,enumerable:!1,value:Os(t),writable:!0})}:Ns;var sa=Ro;function la(t,r,o){var a=t.length;return o=o===e?a:o,!r&&a<=o?t:Ho(t,r,o)}var da=qt||function(e){return ze.clearTimeout(e)};function ma(e,t){return t?e.slice():(t=e.length,t=Qe?Qe(t):new e.constructor(t),e.copy(t),t)}function ca(e){var t=new e.constructor(e.byteLength);return new Ze(t).set(new Ze(e)),t}function ga(e,t){return t=t?ca(e.buffer):e.buffer,new e.constructor(t,e.byteOffset,e.length)}function ua(t,r){if(t!==r){var o=t!==e,a=null===t,i=t==t,n=Dn(t),s=r!==e,l=null===r,d=r==r,m=Dn(r);if(!l&&!m&&!n&&r<t||n&&s&&d&&!l&&!m||a&&s&&d||!o&&d||!i)return 1;if(!a&&!n&&!m&&t<r||m&&o&&i&&!a&&!n||l&&o&&i||!s&&i||!d)return-1}return 0}function ha(e,t,r,a){for(var i=-1,n=e.length,s=r.length,l=-1,d=t.length,m=lr(n-s,0),c=o(d+m),g=!a;++l<d;)c[l]=t[l];for(;++i<s;)(g||i<n)&&(c[r[i]]=e[i]);for(;m--;)c[l++]=e[i++];return c}function pa(e,t,r,a){for(var i=-1,n=e.length,s=-1,l=r.length,d=-1,m=t.length,c=lr(n-l,0),g=o(c+m),u=!a;++i<c;)g[i]=e[i];for(var h=i;++d<m;)g[h+d]=t[d];for(;++s<l;)(u||i<n)&&(g[h+r[s]]=e[i++]);return g}function xa(e,t){var r=-1,a=e.length;for(t=t||o(a);++r<a;)t[r]=e[r];return t}function va(t,r,o,a){for(var i=!o,n=(o=o||{},-1),s=r.length;++n<s;){var l=r[n],d=a?a(o[l],t[l],l,o,t):e;(i?Zr:Vr)(o,l,d=d===e?t[l]:d)}return o}function Sa(e,t){return function(r,o){var a=yn(r)?it:Wr,i=t?t():{};return a(r,e,Qa(o,2),i)}}function fa(t){return Ro((function(r,o){var a=-1,i=o.length,n=1<i?o[i-1]:e,s=2<i?o[2]:e;for(n=3<t.length&&"function"==typeof n?(i--,n):e,s&&ni(o[0],o[1],s)&&(n=i<3?e:n,i=1),r=be(r);++a<i;){var l=o[a];l&&t(r,l,a,n)}return r}))}function ba(e,t){return function(r,o){if(null!=r){if(!Pn(r))return e(r,o);for(var a=r.length,i=t?a:-1,n=be(r);(t?i--:++i<a)&&!1!==o(n[i],i,n););}return r}}function Aa(e){return function(t,r,o){for(var a=-1,i=be(t),n=o(t),s=n.length;s--;){var l=n[e?s:++a];if(!1===r(i[l],l,i))break}return t}}function _a(t){return function(r){var o=(a=Rt(r=jn(r))?Ht(r):e)?a[0]:r.charAt(0),a=a?la(a,1).join(""):r.slice(1);return o[t]()+a}}function ya(e){return function(t){return ht(Cs(As(t).replace(Ie,"")),e,"")}}function Ta(e){return function(){var t=arguments;switch(t.length){case 0:return new e;case 1:return new e(t[0]);case 2:return new e(t[0],t[1]);case 3:return new e(t[0],t[1],t[2]);case 4:return new e(t[0],t[1],t[2],t[3]);case 5:return new e(t[0],t[1],t[2],t[3],t[4]);case 6:return new e(t[0],t[1],t[2],t[3],t[4],t[5]);case 7:return new e(t[0],t[1],t[2],t[3],t[4],t[5],t[6])}var r=wr(e.prototype),o=e.apply(r,t);return On(o)?o:r}}function Pa(t){return function(r,o,a){var i,n=be(r);return-1<(Pn(r)||(i=Qa(o,3),r=ds(r),o=function(e){return i(n[e],e,n)}),o=t(r,o,a))?n[i?r[o]:o]:e}}function $a(t){return Va((function(r){var o=r.length,i=o,n=Lr.prototype.thru;for(t&&r.reverse();i--;){var s=r[i];if("function"!=typeof s)throw new ye(a);n&&!m&&"wrapper"==Za(s)&&(m=new Lr([],!0))}for(i=m?i:o;++i<o;)var l=Za(s=r[i]),d="wrapper"==l?Ka(s):e,m=d&&li(d[0])&&424==d[1]&&!d[4].length&&1==d[9]?m[Za(d[0])].apply(m,d[3]):1==s.length&&li(s)?m[l]():m.thru(s);return function(){var e=arguments,t=e[0];if(m&&1==e.length&&yn(t))return m.plant(t).value();for(var a=0,i=o?r[a].apply(this,e):t;++a<o;)i=r[a].call(this,i);return i}}))}function Ma(t,r,a,i,n,s,l,d,m,c){var g=128&r,u=1&r,h=2&r,p=24&r,x=512&r,v=h?e:Ta(t);return function S(){for(var f,b,A,_=o(A=arguments.length),y=A;y--;)_[y]=arguments[y];return p&&(b=function(e,t){for(var r=e.length,o=0;r--;)e[r]===t&&++o;return o}(_,f=za(S))),i&&(_=ha(_,i,n,p)),s&&(_=pa(_,s,l,p)),A-=b,p&&A<c?(b=Ut(_,f),Ga(t,r,Ma,S.placeholder,a,_,b,d,m,c-A)):(f=u?a:this,b=h?f[t]:t,A=_.length,d?_=function(t,r){for(var o=t.length,a=dr(r.length,o),i=xa(t);a--;){var n=r[a];t[a]=ii(n,o)?i[n]:e}return t}(_,d):x&&1<A&&_.reverse(),g&&m<A&&(_.length=m),(b=this&&this!==ze&&this instanceof S?v||Ta(b):b).apply(f,_))}}function wa(e,t){return function(r,o){return a=e,i=t(o),n={},lo(r,(function(e,t,r){a(n,i(e),t,r)})),n;var a,i,n}}function Ca(t,r){return function(o,a){var i;if(o===e&&a===e)return r;if(o!==e&&(i=o),a!==e){if(i===e)return a;a=("string"==typeof o||"string"==typeof a?(o=jo(o),jo):(o=Qo(o),Qo))(a),i=t(o,a)}return i}}function Ea(e){return Va((function(t){return t=gt(t,Et(Qa())),Ro((function(r){var o=this;return e(t,(function(e){return at(e,o,r)}))}))}))}function La(t,r){var o=(r=r===e?" ":jo(r)).length;return o<2?o?ko(r,t):r:(o=ko(r,rr(t/Vt(r))),Rt(r)?la(Ht(o),0,t).join(""):o.slice(0,t))}function Oa(t){return function(r,a,i){i&&"number"!=typeof i&&ni(r,a,i)&&(a=i=e),r=Wn(r),a===e?(a=r,r=0):a=Wn(a);for(var n=r,s=i=i===e?r<a?1:-1:Wn(i),l=t,d=-1,m=lr(rr((a-n)/(s||1)),0),c=o(m);m--;)c[l?m:++d]=n,n+=s;return c}}function Ia(e){return function(t,r){return"string"==typeof t&&"string"==typeof r||(t=zn(t),r=zn(r)),e(t,r)}}function Ga(t,r,o,a,i,n,s,l,d,m){var c=8&r;return 4&(r=(r|(c?32:64))&~(c?64:32))||(r&=-4),i=[t,r,i,c?n:e,c?s:e,c?e:n,c?e:s,l,d,m],n=o.apply(e,i),li(t)&&xi(n,i),n.placeholder=a,fi(n,t,r)}function Na(e){var t=fe[e];return function(e,r){var o;return e=zn(e),(r=null==r?0:dr(Kn(r),292))&&ir(e)?(o=(jn(e)+"e").split("e"),+((o=(jn(t(o[0]+"e"+(+o[1]+r)))+"e").split("e"))[0]+"e"+(+o[1]-r))):t(e)}}var Ba=xr&&1/Xt(new xr([,-0]))[1]==1/0?function(e){return new xr(e)}:Ds;function ka(e){return function(t){var r,o,a,i=ti(t);return i==S?Ft(t):i==y?(i=t,r=-1,o=Array(i.size),i.forEach((function(e){o[++r]=[e,e]})),o):gt(e(a=t),(function(e){return[e,a[e]]}))}}function Ra(t,r,i,s,l,d,m,c){var g,u,h,p,x,v,S,f,b,A,_,y,T,P=2&r;if(P||"function"==typeof t)return(g=s?s.length:0)||(r&=-97,s=l=e),m=m===e?m:lr(Kn(m),0),c=c===e?c:Kn(c),g-=l?l.length:0,64&r&&(h=s,p=l,s=l=e),h=[t,r,i,s,l,h,p,d,m,c],(u=P?e:Ka(t))&&(p=u,f=(S=(m=(d=h)[1])|(v=p[1]))<131,b=128==v&&8==m||128==v&&256==m&&d[7].length<=p[8]||384==v&&p[7].length<=p[8]&&8==m,f||b)&&(1&v&&(d[2]=p[2],S|=1&m?0:4),(f=p[3])&&(x=d[3],d[3]=x?ha(x,f,p[4]):f,d[4]=x?Ut(d[3],n):p[4]),(f=p[5])&&(x=d[5],d[5]=x?pa(x,f,p[6]):f,d[6]=x?Ut(d[5],n):p[6]),(f=p[7])&&(d[7]=f),128&v&&(d[8]=null==d[8]?p[8]:dr(d[8],p[8])),null==d[9]&&(d[9]=p[9]),d[0]=p[0],d[1]=S),t=h[0],r=h[1],i=h[2],s=h[3],l=h[4],!(c=h[9]=h[9]===e?P?0:t.length:lr(h[9]-g,0))&&24&r&&(r&=-25),b=r&&1!=r?8==r||16==r?function(t,r,a){var i=Ta(t);return function n(){for(var s=arguments.length,l=o(s),d=s,m=za(n);d--;)l[d]=arguments[d];return(s-=(m=s<3&&l[0]!==m&&l[s-1]!==m?[]:Ut(l,m)).length)<a?Ga(t,r,Ma,n.placeholder,e,l,m,e,e,a-s):at(this&&this!==ze&&this instanceof n?i:t,this,l)}}(t,r,c):32!=r&&33!=r||l.length?Ma.apply(e,h):function(e,t,r,a){var i=1&t,n=Ta(e);return function t(){for(var s=-1,l=arguments.length,d=-1,m=a.length,c=o(m+l),g=this&&this!==ze&&this instanceof t?n:e;++d<m;)c[d]=a[d];for(;l--;)c[d++]=arguments[++s];return at(g,i?r:this,c)}}(t,r,i,s):(_=i,y=1&r,T=Ta(A=t),function e(){return(this&&this!==ze&&this instanceof e?T:A).apply(y?_:this,arguments)}),fi((u?Xo:xi)(b,h),t,r);throw new ye(a)}function Fa(t,r,o,a){return t===e||fn(t,$e[o])&&!Ce.call(a,o)?r:t}function Da(t,r,o,a,i,n){return On(t)&&On(r)&&(n.set(r,t),Eo(t,r,e,Da,n),n.delete(r)),t}function Ua(t){return Bn(t)?e:t}function Xa(t,r,o,a,i,n){var s=1&o,l=t.length;if(l!=(d=r.length)&&!(s&&l<d))return!1;var d=n.get(t),m=n.get(r);if(d&&m)return d==r&&m==t;var c=-1,g=!0,u=2&o?new Br:e;for(n.set(t,r),n.set(r,t);++c<l;){var h,p=t[c],x=r[c];if((h=a?s?a(x,p,c,r,t,n):a(p,x,c,t,r,n):h)!==e){if(h)continue;g=!1;break}if(u){if(!xt(r,(function(e,t){return!Ot(u,t)&&(p===e||i(p,e,o,a,n))&&u.push(t)}))){g=!1;break}}else if(p!==x&&!i(p,x,o,a,n)){g=!1;break}}return n.delete(t),n.delete(r),g}function Va(t){return Si(ui(t,e,Ci),t+"")}function Ha(e){return uo(e,ds,qa)}function Wa(e){return uo(e,ms,ei)}var Ka=Sr?function(e){return Sr.get(e)}:Ds;function Za(e){for(var t=e.name+"",r=fr[t],o=Ce.call(fr,t)?r.length:0;o--;){var a=r[o],i=a.func;if(null==i||i==e)return a.name}return t}function za(e){return(Ce.call(Mr,"placeholder")?Mr:e).placeholder}function Qa(){var e=(e=Mr.iteratee||Bs)===Bs?To:e;return arguments.length?e(arguments[0],arguments[1]):e}function ja(e,t){var r,o;return e=e.__data__,("string"==(o=typeof(r=t))||"number"==o||"symbol"==o||"boolean"==o?"__proto__"!==r:null===r)?e["string"==typeof t?"string":"hash"]:e.map}function Ya(e){for(var t=ds(e),r=t.length;r--;){var o=t[r],a=e[o];t[r]=[o,a,ci(a)]}return t}function Ja(t,r){return yo(t=null==t?e:t[r])?t:e}var qa=ar?function(e){return null==e?[]:(e=be(e),dt(ar(e),(function(t){return Pt.call(e,t)})))}:Zs,ei=ar?function(e){for(var t=[];e;)ut(t,qa(e)),e=Ye(e);return t}:Zs,ti=ho;function ri(e,t,r){for(var o=-1,a=(t=na(t,e)).length,i=!1;++o<a;){var n=Ti(t[o]);if(!(i=null!=e&&r(e,n)))break;e=e[n]}return i||++o!=a?i:!!(a=null==e?0:e.length)&&Ln(a)&&ii(n,a)&&(yn(e)||_n(e))}function oi(e){return"function"!=typeof e.constructor||mi(e)?{}:wr(Ye(e))}function ai(e){return yn(e)||_n(e)||!!(Qt&&e&&e[Qt])}function ii(e,t){var r=typeof e;return!!(t=null==t?s:t)&&("number"==r||"symbol"!=r&&pe.test(e))&&-1<e&&e%1==0&&e<t}function ni(e,t,r){var o;if(On(r))return("number"==(o=typeof t)?Pn(r)&&ii(t,r.length):"string"==o&&t in r)&&fn(r[t],e)}function si(e,t){var r;if(!yn(e))return"number"==(r=typeof e)||"symbol"==r||"boolean"==r||null==e||Dn(e)||Y.test(e)||!j.test(e)||null!=t&&e in be(t)}function li(e){var t=Za(e),r=Mr[t];return"function"==typeof r&&t in Or.prototype&&(e===r||(t=Ka(r))&&e===t[0])}(M&&ti(new M(new ArrayBuffer(1)))!=E||hr&&ti(new hr)!=S||pr&&ti(pr.resolve())!=A||xr&&ti(new xr)!=y||r&&ti(new r)!=$)&&(ti=function(t){var r=ho(t);if(t=(t=r==b?t.constructor:e)?Pi(t):"")switch(t){case br:return E;case Ar:return S;case _r:return A;case yr:return y;case Tr:return $}return r});var di=Me?Cn:zs;function mi(e){var t=e&&e.constructor;return e===("function"==typeof t&&t.prototype||$e)}function ci(e){return e==e&&!On(e)}function gi(t,r){return function(o){return null!=o&&o[t]===r&&(r!==e||t in be(o))}}function ui(t,r,a){return r=lr(r===e?t.length-1:r,0),function(){for(var e=arguments,i=-1,n=lr(e.length-r,0),s=o(n);++i<n;)s[i]=e[r+i];i=-1;for(var l=o(r+1);++i<r;)l[i]=e[i];return l[r]=a(s),at(t,this,l)}}function hi(e,t){return t.length<2?e:go(e,Ho(t,0,-1))}function pi(e,t){if(("constructor"!==t||"function"!=typeof e[t])&&"__proto__"!=t)return e[t]}var xi=bi(Xo),vi=tr||function(e,t){return ze.setTimeout(e,t)},Si=bi(Ke);function fi(e,t,r){var o,a,i;return Si(e,(a=(t=(t=e=t+="").match(ae))?t[1].split(ie):[],i=r,nt(m,(function(e){var t="_."+e[0];i&e[1]&&!mt(a,t)&&a.push(t)})),(r=(t=a.sort()).length)?(t[o=r-1]=(1<r?"& ":"")+t[o],t=t.join(2<r?", ":" "),e.replace(oe,"{\n/* [wrapped with "+t+"] */\n")):e))}function bi(t){var r=0,o=0;return function(){var a=mr(),i=16-(a-o);if(o=a,0<i){if(800<=++r)return arguments[0]}else r=0;return t.apply(e,arguments)}}function Ai(t,r){var o=-1,a=t.length,i=a-1;for(r=r===e?a:r;++o<r;){var n=Bo(o,i),s=t[n];t[n]=t[o],t[o]=s}return t.length=r,t}_i=(qt=hn(qt=function(e){var t=[];return 46===e.charCodeAt(0)&&t.push(""),e.replace(J,(function(e,r,o,a){t.push(o?a.replace(le,"$1"):r||e)})),t},(function(e){return 500===_i.size&&_i.clear(),e}))).cache;var _i,yi=qt;function Ti(e){var t;return"string"==typeof e||Dn(e)?e:"0"==(t=e+"")&&1/e==-1/0?"-0":t}function Pi(e){if(null!=e){try{return we.call(e)}catch(e){}try{return e+""}catch(e){}}return""}function $i(e){var t;return e instanceof Or?e.clone():((t=new Lr(e.__wrapped__,e.__chain__)).__actions__=xa(e.__actions__),t.__index__=e.__index__,t.__values__=e.__values__,t)}function Mi(e,t,r){var o=null==e?0:e.length;return o?((r=null==r?0:Kn(r))<0&&(r=lr(o+r,0)),ft(e,Qa(t,3),r)):-1}function wi(t,r,o){var a,i=null==t?0:t.length;return i?(a=i-1,o!==e&&(a=Kn(o),a=o<0?lr(i+a,0):dr(a,i-1)),ft(t,Qa(r,3),a,!0)):-1}function Ci(e){return null!=e&&e.length?io(e,1):[]}function Ei(t){return t&&t.length?t[0]:e}function Li(t){var r=null==t?0:t.length;return r?t[r-1]:e}function Oi(e,t){return e&&e.length&&t&&t.length?Go(e,t):e}M=Ro((function(e,t){return $n(e)?qr(e,io(t,1,$n,!0)):[]})),pr=Ro((function(t,r){var o=Li(r);return $n(o)&&(o=e),$n(t)?qr(t,io(r,1,$n,!0),Qa(o,2)):[]})),r=Ro((function(t,r){var o=Li(r);return $n(o)&&(o=e),$n(t)?qr(t,io(r,1,$n,!0),e,o):[]})),Me=Ro((function(e){var t=gt(e,aa);return t.length&&t[0]===e[0]?So(t):[]})),tr=Ro((function(t){var r=Li(t),o=gt(t,aa);return r===Li(o)?r=e:o.pop(),o.length&&o[0]===t[0]?So(o,Qa(r,2)):[]})),Ke=Ro((function(t){var r=Li(t),o=gt(t,aa);return(r="function"==typeof r?r:e)&&o.pop(),o.length&&o[0]===t[0]?So(o,e,r):[]})),qt=Ro(Oi);var Ii=Va((function(e,t){var r=null==e?0:e.length,o=zr(e,t);return No(e,gt(t,(function(e){return ii(e,r)?+e:e})).sort(ua)),o}));function Gi(e){return null==e?e:ur.call(e)}var Ni=Ro((function(e){return Yo(io(e,1,$n,!0))})),Bi=Ro((function(t){var r=Li(t);return $n(r)&&(r=e),Yo(io(t,1,$n,!0),Qa(r,2))})),ki=Ro((function(t){var r="function"==typeof(r=Li(t))?r:e;return Yo(io(t,1,$n,!0),e,r)}));function Ri(e){var t;return e&&e.length?(t=0,e=dt(e,(function(e){return $n(e)&&(t=lr(e.length,t),1)})),wt(t,(function(t){return gt(e,Tt(t))}))):[]}function Fi(t,r){return t&&t.length?(t=Ri(t),null==r?t:gt(t,(function(t){return at(r,e,t)}))):[]}var Di=Ro((function(e,t){return $n(e)?qr(e,t):[]})),Ui=Ro((function(e){return ra(dt(e,$n))})),Xi=Ro((function(t){var r=Li(t);return $n(r)&&(r=e),ra(dt(t,$n),Qa(r,2))})),Vi=Ro((function(t){var r="function"==typeof(r=Li(t))?r:e;return ra(dt(t,$n),e,r)})),Hi=Ro(Ri),Wi=Ro((function(t){var r="function"==typeof(r=1<(r=t.length)?t[r-1]:e)?(t.pop(),r):e;return Fi(t,r)}));function Ki(e){return(e=Mr(e)).__chain__=!0,e}function Zi(e,t){return t(e)}var zi=Va((function(t){function r(e){return zr(e,t)}var o=t.length,a=o?t[0]:0,i=this.__wrapped__;return!(1<o||this.__actions__.length)&&i instanceof Or&&ii(a)?((i=i.slice(a,+a+(o?1:0))).__actions__.push({func:Zi,args:[r],thisArg:e}),new Lr(i,this.__chain__).thru((function(t){return o&&!t.length&&t.push(e),t}))):this.thru(r)})),Qi=Sa((function(e,t,r){Ce.call(e,r)?++e[r]:Zr(e,r,1)})),ji=Pa(Mi),Yi=Pa(wi);function Ji(e,t){return(yn(e)?nt:eo)(e,Qa(t,3))}function qi(e,t){return(yn(e)?st:to)(e,Qa(t,3))}var en=Sa((function(e,t,r){Ce.call(e,r)?e[r].push(t):Zr(e,r,[t])})),tn=Ro((function(e,t,r){var a=-1,i="function"==typeof t,n=Pn(e)?o(e.length):[];return eo(e,(function(e){n[++a]=i?at(t,e,r):fo(e,t,r)})),n})),rn=Sa((function(e,t,r){Zr(e,r,t)}));function on(e,t){return(yn(e)?gt:Mo)(e,Qa(t,3))}var an=Sa((function(e,t,r){e[r?0:1].push(t)}),(function(){return[[],[]]})),nn=Ro((function(e,t){var r;return null==e?[]:(1<(r=t.length)&&ni(e,t[0],t[1])?t=[]:2<r&&ni(t[0],t[1],t[2])&&(t=[t[0]]),Oo(e,io(t,1),[]))})),sn=er||function(){return ze.Date.now()};function ln(t,r,o){return r=o?e:r,r=t&&null==r?t.length:r,Ra(t,128,e,e,e,e,r)}function dn(t,r){var o;if("function"!=typeof r)throw new ye(a);return t=Kn(t),function(){return 0<--t&&(o=r.apply(this,arguments)),t<=1&&(r=e),o}}var mn=Ro((function(e,t,r){var o,a=1;return r.length&&(o=Ut(r,za(mn)),a|=32),Ra(e,a,t,r,o)})),cn=Ro((function(e,t,r){var o,a=3;return r.length&&(o=Ut(r,za(cn)),a|=32),Ra(t,a,e,r,o)}));function gn(t,r,o){var i,n,s,l,d,m,c=0,g=!1,u=!1,h=!0;if("function"!=typeof t)throw new ye(a);function p(r){var o=i,a=n;return i=n=e,c=r,l=t.apply(a,o)}function x(t){var o=t-m;return m===e||r<=o||o<0||u&&s<=t-c}function v(){var e,t=sn();if(x(t))return S(t);d=vi(v,(e=r-(t-m),u?dr(e,s-(t-c)):e))}function S(t){return d=e,h&&i?p(t):(i=n=e,l)}function f(){var t=sn(),o=x(t);if(i=arguments,n=this,m=t,o){if(d===e)return c=t=m,d=vi(v,r),g?p(t):l;if(u)return da(d),d=vi(v,r),p(m)}return d===e&&(d=vi(v,r)),l}return r=zn(r)||0,On(o)&&(g=!!o.leading,s=(u="maxWait"in o)?lr(zn(o.maxWait)||0,r):s,h="trailing"in o?!!o.trailing:h),f.cancel=function(){d!==e&&da(d),c=0,i=m=n=d=e},f.flush=function(){return d===e?l:S(sn())},f}er=Ro((function(e,t){return Jr(e,1,t)}));var un=Ro((function(e,t,r){return Jr(e,zn(t)||0,r)}));function hn(e,t){if("function"!=typeof e||null!=t&&"function"!=typeof t)throw new ye(a);function r(){var o=arguments,a=t?t.apply(this,o):o[0],i=r.cache;return i.has(a)?i.get(a):(o=e.apply(this,o),r.cache=i.set(a,o)||i,o)}return r.cache=new(hn.Cache||Nr),r}function pn(e){if("function"!=typeof e)throw new ye(a);return function(){var t=arguments;switch(t.length){case 0:return!e.call(this);case 1:return!e.call(this,t[0]);case 2:return!e.call(this,t[0],t[1]);case 3:return!e.call(this,t[0],t[1],t[2])}return!e.apply(this,t)}}hn.Cache=Nr,sa=sa((function(e,t){var r=(t=1==t.length&&yn(t[0])?gt(t[0],Et(Qa())):gt(io(t,1),Et(Qa()))).length;return Ro((function(o){for(var a=-1,i=dr(o.length,r);++a<i;)o[a]=t[a].call(this,o[a]);return at(e,this,o)}))}));var xn=Ro((function(t,r){var o=Ut(r,za(xn));return Ra(t,32,e,r,o)})),vn=Ro((function(t,r){var o=Ut(r,za(vn));return Ra(t,64,e,r,o)})),Sn=Va((function(t,r){return Ra(t,256,e,e,e,r)}));function fn(e,t){return e===t||e!=e&&t!=t}var bn=Ia(po),An=Ia((function(e,t){return t<=e})),_n=bo(function(){return arguments}())?bo:function(e){return In(e)&&Ce.call(e,"callee")&&!Pt.call(e,"callee")},yn=o.isArray,Tn=Je?Et(Je):function(e){return In(e)&&ho(e)==C};function Pn(e){return null!=e&&Ln(e.length)&&!Cn(e)}function $n(e){return In(e)&&Pn(e)}var Mn=Pe||zs;function wn(e){var t;return!!In(e)&&((t=ho(e))==p||"[object DOMException]"==t||"string"==typeof e.message&&"string"==typeof e.name&&!Bn(e))}function Cn(e){return!!On(e)&&((e=ho(e))==x||e==v||"[object AsyncFunction]"==e||"[object Proxy]"==e)}function En(e){return"number"==typeof e&&e==Kn(e)}function Ln(e){return"number"==typeof e&&-1<e&&e%1==0&&e<=s}function On(e){var t=typeof e;return null!=e&&("object"==t||"function"==t)}function In(e){return null!=e&&"object"==typeof e}Pe=qe?Et(qe):function(e){return In(e)&&ho(e)==h};var Gn=et?Et(et):function(e){return In(e)&&ti(e)==S};function Nn(e){return"number"==typeof e||In(e)&&ho(e)==f}function Bn(e){return!(!In(e)||ho(e)!=b)&&(null===(e=Ye(e))||"function"==typeof(e=Ce.call(e,"constructor")&&e.constructor)&&e instanceof e&&we.call(e)==Ne)}var kn=tt?Et(tt):function(e){return In(e)&&ho(e)==_},Rn=rt?Et(rt):function(e){return In(e)&&ti(e)==y};function Fn(e){return"string"==typeof e||!yn(e)&&In(e)&&ho(e)==T}function Dn(e){return"symbol"==typeof e||In(e)&&ho(e)==P}var Un=ot?Et(ot):function(e){return In(e)&&Ln(e.length)&&!!Ue[ho(e)]},Xn=Ia($o),Vn=Ia((function(e,t){return e<=t}));function Hn(e){if(!e)return[];if(Pn(e))return(Fn(e)?Ht:xa)(e);if(jt&&e[jt]){for(var t,r=e[jt](),o=[];!(t=r.next()).done;)o.push(t.value);return o}var a=ti(e);return(a==S?Ft:a==y?Xt:Ss)(e)}function Wn(e){return e?(e=zn(e))===1/0||e===-1/0?17976931348623157e292*(e<0?-1:1):e==e?e:0:0===e?e:0}function Kn(e){var t=(e=Wn(e))%1;return e==e?t?e-t:e:0}function Zn(e){return e?Qr(Kn(e),0,d):0}function zn(e){if("number"==typeof e)return e;if(Dn(e))return l;if("string"!=typeof(e=On(e)?On(t="function"==typeof e.valueOf?e.valueOf():e)?t+"":t:e))return 0===e?e:+e;e=Ct(e);var t=ge.test(e);return t||he.test(e)?We(e.slice(2),t?2:8):ce.test(e)?l:+e}function Qn(e){return va(e,ms(e))}function jn(e){return null==e?"":jo(e)}var Yn=fa((function(e,t){if(mi(t)||Pn(t))va(t,ds(t),e);else for(var r in t)Ce.call(t,r)&&Vr(e,r,t[r])})),Jn=fa((function(e,t){va(t,ms(t),e)})),qn=fa((function(e,t,r,o){va(t,ms(t),e,o)})),es=fa((function(e,t,r,o){va(t,ds(t),e,o)})),ts=Va(zr),rs=Ro((function(t,r){t=be(t);var o=-1,a=r.length,i=2<a?r[2]:e;for(i&&ni(r[0],r[1],i)&&(a=1);++o<a;)for(var n=r[o],s=ms(n),l=-1,d=s.length;++l<d;){var m=s[l],c=t[m];(c===e||fn(c,$e[m])&&!Ce.call(t,m))&&(t[m]=n[m])}return t})),os=Ro((function(t){return t.push(e,Da),at(gs,e,t)}));function as(t,r,o){return(t=null==t?e:go(t,r))===e?o:t}function is(e,t){return null!=e&&ri(e,t,vo)}var ns=wa((function(e,t,r){e[t=null!=t&&"function"!=typeof t.toString?Oe.call(t):t]=r}),Os(Ns)),ss=wa((function(e,t,r){null!=t&&"function"!=typeof t.toString&&(t=Oe.call(t)),Ce.call(e,t)?e[t].push(r):e[t]=[r]}),Qa),ls=Ro(fo);function ds(e){return(Pn(e)?Rr:Po)(e)}function ms(e){return Pn(e)?Rr(e,!0):function(e){if(!On(e)){var t=e,r=[];if(null!=t)for(var o in be(t))r.push(o);return r}var a,i=mi(e),n=[];for(a in e)("constructor"!=a||!i&&Ce.call(e,a))&&n.push(a);return n}(e)}var cs=fa((function(e,t,r){Eo(e,t,r)})),gs=fa((function(e,t,r,o){Eo(e,t,r,o)})),us=Va((function(e,t){var r={};if(null!=e)for(var o=!1,a=(t=gt(t,(function(t){return t=na(t,e),o=o||1<t.length,t})),va(e,Wa(e),r),o&&(r=jr(r,7,Ua)),t.length);a--;)Jo(r,t[a]);return r})),hs=Va((function(e,t){return null==e?{}:Io(r=e,t,(function(e,t){return is(r,t)}));var r}));function ps(e,t){var r;return null==e?{}:(r=gt(Wa(e),(function(e){return[e]})),t=Qa(t),Io(e,r,(function(e,r){return t(e,r[0])})))}var xs=ka(ds),vs=ka(ms);function Ss(e){return null==e?[]:Lt(e,ds(e))}var fs=ya((function(e,t,r){return t=t.toLowerCase(),e+(r?bs(t):t)}));function bs(e){return ws(jn(e).toLowerCase())}function As(e){return(e=jn(e))&&e.replace(xe,Nt).replace(Ge,"")}var _s=ya((function(e,t,r){return e+(r?"-":"")+t.toLowerCase()})),ys=ya((function(e,t,r){return e+(r?" ":"")+t.toLowerCase()})),Ts=_a("toLowerCase"),Ps=ya((function(e,t,r){return e+(r?"_":"")+t.toLowerCase()})),$s=ya((function(e,t,r){return e+(r?" ":"")+ws(t)})),Ms=ya((function(e,t,r){return e+(r?" ":"")+t.toUpperCase()})),ws=_a("toUpperCase");function Cs(t,r,o){return t=jn(t),(r=o?e:r)===e?(o=t,Re.test(o)?t.match(Be)||[]:t.match(ne)||[]):t.match(r)||[]}var Es=Ro((function(t,r){try{return at(t,e,r)}catch(t){return wn(t)?t:new w(t)}})),Ls=Va((function(e,t){return nt(t,(function(t){t=Ti(t),Zr(e,t,mn(e[t],e))})),e}));function Os(e){return function(){return e}}var Is=$a(),Gs=$a(!0);function Ns(e){return e}function Bs(e){return To("function"==typeof e?e:jr(e,1))}var ks=Ro((function(e,t){return function(r){return fo(r,e,t)}})),Rs=Ro((function(e,t){return function(r){return fo(e,r,t)}}));function Fs(e,t,r){var o=ds(t),a=co(t,o),i=(null!=r||On(t)&&(a.length||!o.length)||(r=t,t=e,e=this,a=co(t,ds(t))),!(On(r)&&"chain"in r&&!r.chain)),n=Cn(e);return nt(a,(function(r){var o=t[r];e[r]=o,n&&(e.prototype[r]=function(){var t,r=this.__chain__;return i||r?(((t=e(this.__wrapped__)).__actions__=xa(this.__actions__)).push({func:o,args:arguments,thisArg:e}),t.__chain__=r,t):o.apply(e,ut([this.value()],arguments))})})),e}function Ds(){}var Us=Ea(gt),Xs=Ea(lt),Vs=Ea(xt);function Hs(e){return si(e)?Tt(Ti(e)):(t=e,function(e){return go(e,t)});var t}var Ws=Oa(),Ks=Oa(!0);function Zs(){return[]}function zs(){return!1}var Qs,js=Ca((function(e,t){return e+t}),0),Ys=Na("ceil"),Js=Ca((function(e,t){return e/t}),1),qs=Na("floor"),el=Ca((function(e,t){return e*t}),1),tl=Na("round"),rl=Ca((function(e,t){return e-t}),0);return Mr.after=function(e,t){if("function"!=typeof t)throw new ye(a);return e=Kn(e),function(){if(--e<1)return t.apply(this,arguments)}},Mr.ary=ln,Mr.assign=Yn,Mr.assignIn=Jn,Mr.assignInWith=qn,Mr.assignWith=es,Mr.at=ts,Mr.before=dn,Mr.bind=mn,Mr.bindAll=Ls,Mr.bindKey=cn,Mr.castArray=function(){var e;return arguments.length?yn(e=arguments[0])?e:[e]:[]},Mr.chain=Ki,Mr.chunk=function(t,r,a){r=(a?ni(t,r,a):r===e)?1:lr(Kn(r),0);var i=null==t?0:t.length;if(!i||r<1)return[];for(var n=0,s=0,l=o(rr(i/r));n<i;)l[s++]=Ho(t,n,n+=r);return l},Mr.compact=function(e){for(var t=-1,r=null==e?0:e.length,o=0,a=[];++t<r;){var i=e[t];i&&(a[o++]=i)}return a},Mr.concat=function(){var e=arguments.length;if(!e)return[];for(var t=o(e-1),r=arguments[0],a=e;a--;)t[a-1]=arguments[a];return ut(yn(r)?xa(r):[r],io(t,1))},Mr.cond=function(e){var t=null==e?0:e.length,r=Qa();return e=t?gt(e,(function(e){if("function"!=typeof e[1])throw new ye(a);return[r(e[0]),e[1]]})):[],Ro((function(r){for(var o=-1;++o<t;){var a=e[o];if(at(a[0],this,r))return at(a[1],this,r)}}))},Mr.conforms=function(e){return t=jr(e,1),r=ds(t),function(e){return Yr(e,t,r)};var t,r},Mr.constant=Os,Mr.countBy=Qi,Mr.create=function(e,t){return e=wr(e),null==t?e:Kr(e,t)},Mr.curry=function t(r,o,a){return(r=Ra(r,8,e,e,e,e,e,o=a?e:o)).placeholder=t.placeholder,r},Mr.curryRight=function t(r,o,a){return(r=Ra(r,16,e,e,e,e,e,o=a?e:o)).placeholder=t.placeholder,r},Mr.debounce=gn,Mr.defaults=rs,Mr.defaultsDeep=os,Mr.defer=er,Mr.delay=un,Mr.difference=M,Mr.differenceBy=pr,Mr.differenceWith=r,Mr.drop=function(t,r,o){var a=null==t?0:t.length;return a?Ho(t,(r=o||r===e?1:Kn(r))<0?0:r,a):[]},Mr.dropRight=function(t,r,o){var a=null==t?0:t.length;return a?Ho(t,0,(r=a-(r=o||r===e?1:Kn(r)))<0?0:r):[]},Mr.dropRightWhile=function(e,t){return e&&e.length?ea(e,Qa(t,3),!0,!0):[]},Mr.dropWhile=function(e,t){return e&&e.length?ea(e,Qa(t,3),!0):[]},Mr.fill=function(t,r,o,a){if(!(d=null==t?0:t.length))return[];o&&"number"!=typeof o&&ni(t,r,o)&&(o=0,a=d);var i=t,n=r,s=o,l=a,d=i.length;for((s=Kn(s))<0&&(s=d<-s?0:d+s),(l=l===e||d<l?d:Kn(l))<0&&(l+=d),l=l<s?0:Zn(l);s<l;)i[s++]=n;return i},Mr.filter=function(e,t){return(yn(e)?dt:ao)(e,Qa(t,3))},Mr.flatMap=function(e,t){return io(on(e,t),1)},Mr.flatMapDeep=function(e,t){return io(on(e,t),1/0)},Mr.flatMapDepth=function(t,r,o){return o=o===e?1:Kn(o),io(on(t,r),o)},Mr.flatten=Ci,Mr.flattenDeep=function(e){return null!=e&&e.length?io(e,1/0):[]},Mr.flattenDepth=function(t,r){return null!=t&&t.length?io(t,r=r===e?1:Kn(r)):[]},Mr.flip=function(e){return Ra(e,512)},Mr.flow=Is,Mr.flowRight=Gs,Mr.fromPairs=function(e){for(var t=-1,r=null==e?0:e.length,o={};++t<r;){var a=e[t];o[a[0]]=a[1]}return o},Mr.functions=function(e){return null==e?[]:co(e,ds(e))},Mr.functionsIn=function(e){return null==e?[]:co(e,ms(e))},Mr.groupBy=en,Mr.initial=function(e){return null!=e&&e.length?Ho(e,0,-1):[]},Mr.intersection=Me,Mr.intersectionBy=tr,Mr.intersectionWith=Ke,Mr.invert=ns,Mr.invertBy=ss,Mr.invokeMap=tn,Mr.iteratee=Bs,Mr.keyBy=rn,Mr.keys=ds,Mr.keysIn=ms,Mr.map=on,Mr.mapKeys=function(e,t){var r={};return t=Qa(t,3),lo(e,(function(e,o,a){Zr(r,t(e,o,a),e)})),r},Mr.mapValues=function(e,t){var r={};return t=Qa(t,3),lo(e,(function(e,o,a){Zr(r,o,t(e,o,a))})),r},Mr.matches=function(e){return wo(jr(e,1))},Mr.matchesProperty=function(e,t){return Co(e,jr(t,1))},Mr.memoize=hn,Mr.merge=cs,Mr.mergeWith=gs,Mr.method=ks,Mr.methodOf=Rs,Mr.mixin=Fs,Mr.negate=pn,Mr.nthArg=function(e){return e=Kn(e),Ro((function(t){return Lo(t,e)}))},Mr.omit=us,Mr.omitBy=function(e,t){return ps(e,pn(Qa(t)))},Mr.once=function(e){return dn(2,e)},Mr.orderBy=function(t,r,o,a){return null==t?[]:Oo(t,r=yn(r)?r:null==r?[]:[r],o=yn(o=a?e:o)?o:null==o?[]:[o])},Mr.over=Us,Mr.overArgs=sa,Mr.overEvery=Xs,Mr.overSome=Vs,Mr.partial=xn,Mr.partialRight=vn,Mr.partition=an,Mr.pick=hs,Mr.pickBy=ps,Mr.property=Hs,Mr.propertyOf=function(t){return function(r){return null==t?e:go(t,r)}},Mr.pull=qt,Mr.pullAll=Oi,Mr.pullAllBy=function(e,t,r){return e&&e.length&&t&&t.length?Go(e,t,Qa(r,2)):e},Mr.pullAllWith=function(t,r,o){return t&&t.length&&r&&r.length?Go(t,r,e,o):t},Mr.pullAt=Ii,Mr.range=Ws,Mr.rangeRight=Ks,Mr.rearg=Sn,Mr.reject=function(e,t){return(yn(e)?dt:ao)(e,pn(Qa(t,3)))},Mr.remove=function(e,t){var r=[];if(e&&e.length){var o=-1,a=[],i=e.length;for(t=Qa(t,3);++o<i;){var n=e[o];t(n,o,e)&&(r.push(n),a.push(o))}No(e,a)}return r},Mr.rest=function(t,r){if("function"!=typeof t)throw new ye(a);return Ro(t,r=r===e?r:Kn(r))},Mr.reverse=Gi,Mr.sampleSize=function(t,r,o){return r=(o?ni(t,r,o):r===e)?1:Kn(r),(yn(t)?Dr:Do)(t,r)},Mr.set=function(e,t,r){return null==e?e:Uo(e,t,r)},Mr.setWith=function(t,r,o,a){return a="function"==typeof a?a:e,null==t?t:Uo(t,r,o,a)},Mr.shuffle=function(e){return(yn(e)?Ur:Vo)(e)},Mr.slice=function(t,r,o){var a=null==t?0:t.length;return a?(o=o&&"number"!=typeof o&&ni(t,r,o)?(r=0,a):(r=null==r?0:Kn(r),o===e?a:Kn(o)),Ho(t,r,o)):[]},Mr.sortBy=nn,Mr.sortedUniq=function(e){return e&&e.length?zo(e):[]},Mr.sortedUniqBy=function(e,t){return e&&e.length?zo(e,Qa(t,2)):[]},Mr.split=function(t,r,o){return o&&"number"!=typeof o&&ni(t,r,o)&&(r=o=e),(o=o===e?d:o>>>0)?(t=jn(t))&&("string"==typeof r||null!=r&&!kn(r))&&!(r=jo(r))&&Rt(t)?la(Ht(t),0,o):t.split(r,o):[]},Mr.spread=function(e,t){if("function"!=typeof e)throw new ye(a);return t=null==t?0:lr(Kn(t),0),Ro((function(r){var o=r[t];return r=la(r,0,t),o&&ut(r,o),at(e,this,r)}))},Mr.tail=function(e){var t=null==e?0:e.length;return t?Ho(e,1,t):[]},Mr.take=function(t,r,o){return t&&t.length?Ho(t,0,(r=o||r===e?1:Kn(r))<0?0:r):[]},Mr.takeRight=function(t,r,o){var a=null==t?0:t.length;return a?Ho(t,(r=a-(r=o||r===e?1:Kn(r)))<0?0:r,a):[]},Mr.takeRightWhile=function(e,t){return e&&e.length?ea(e,Qa(t,3),!1,!0):[]},Mr.takeWhile=function(e,t){return e&&e.length?ea(e,Qa(t,3)):[]},Mr.tap=function(e,t){return t(e),e},Mr.throttle=function(e,t,r){var o=!0,i=!0;if("function"!=typeof e)throw new ye(a);return On(r)&&(o="leading"in r?!!r.leading:o,i="trailing"in r?!!r.trailing:i),gn(e,t,{leading:o,maxWait:t,trailing:i})},Mr.thru=Zi,Mr.toArray=Hn,Mr.toPairs=xs,Mr.toPairsIn=vs,Mr.toPath=function(e){return yn(e)?gt(e,Ti):Dn(e)?[e]:xa(yi(jn(e)))},Mr.toPlainObject=Qn,Mr.transform=function(e,t,r){var o,a=yn(e),i=a||Mn(e)||Un(e);return t=Qa(t,4),null==r&&(o=e&&e.constructor,r=i?a?new o:[]:On(e)&&Cn(o)?wr(Ye(e)):{}),(i?nt:lo)(e,(function(e,o,a){return t(r,e,o,a)})),r},Mr.unary=function(e){return ln(e,1)},Mr.union=Ni,Mr.unionBy=Bi,Mr.unionWith=ki,Mr.uniq=function(e){return e&&e.length?Yo(e):[]},Mr.uniqBy=function(e,t){return e&&e.length?Yo(e,Qa(t,2)):[]},Mr.uniqWith=function(t,r){return r="function"==typeof r?r:e,t&&t.length?Yo(t,e,r):[]},Mr.unset=function(e,t){return null==e||Jo(e,t)},Mr.unzip=Ri,Mr.unzipWith=Fi,Mr.update=function(e,t,r){return null==e?e:qo(e,t,ia(r))},Mr.updateWith=function(t,r,o,a){return a="function"==typeof a?a:e,null==t?t:qo(t,r,ia(o),a)},Mr.values=Ss,Mr.valuesIn=function(e){return null==e?[]:Lt(e,ms(e))},Mr.without=Di,Mr.words=Cs,Mr.wrap=function(e,t){return xn(ia(t),e)},Mr.xor=Ui,Mr.xorBy=Xi,Mr.xorWith=Vi,Mr.zip=Hi,Mr.zipObject=function(e,t){return oa(e||[],t||[],Vr)},Mr.zipObjectDeep=function(e,t){return oa(e||[],t||[],Uo)},Mr.zipWith=Wi,Mr.entries=xs,Mr.entriesIn=vs,Mr.extend=Jn,Mr.extendWith=qn,Fs(Mr,Mr),Mr.add=js,Mr.attempt=Es,Mr.camelCase=fs,Mr.capitalize=bs,Mr.ceil=Ys,Mr.clamp=function(t,r,o){return o===e&&(o=r,r=e),o!==e&&(o=(o=zn(o))==o?o:0),r!==e&&(r=(r=zn(r))==r?r:0),Qr(zn(t),r,o)},Mr.clone=function(e){return jr(e,4)},Mr.cloneDeep=function(e){return jr(e,5)},Mr.cloneDeepWith=function(t,r){return jr(t,5,r="function"==typeof r?r:e)},Mr.cloneWith=function(t,r){return jr(t,4,r="function"==typeof r?r:e)},Mr.conformsTo=function(e,t){return null==t||Yr(e,t,ds(t))},Mr.deburr=As,Mr.defaultTo=function(e,t){return null==e||e!=e?t:e},Mr.divide=Js,Mr.endsWith=function(t,r,o){t=jn(t),r=jo(r);var a=t.length;return a=o=o===e?a:Qr(Kn(o),0,a),0<=(o-=r.length)&&t.slice(o,a)==r},Mr.eq=fn,Mr.escape=function(e){return(e=jn(e))&&K.test(e)?e.replace(H,Bt):e},Mr.escapeRegExp=function(e){return(e=jn(e))&&ee.test(e)?e.replace(q,"\\$&"):e},Mr.every=function(t,r,o){return(yn(t)?lt:ro)(t,Qa(r=o&&ni(t,r,o)?e:r,3))},Mr.find=ji,Mr.findIndex=Mi,Mr.findKey=function(e,t){return St(e,Qa(t,3),lo)},Mr.findLast=Yi,Mr.findLastIndex=wi,Mr.findLastKey=function(e,t){return St(e,Qa(t,3),mo)},Mr.floor=qs,Mr.forEach=Ji,Mr.forEachRight=qi,Mr.forIn=function(e,t){return null==e?e:no(e,Qa(t,3),ms)},Mr.forInRight=function(e,t){return null==e?e:so(e,Qa(t,3),ms)},Mr.forOwn=function(e,t){return e&&lo(e,Qa(t,3))},Mr.forOwnRight=function(e,t){return e&&mo(e,Qa(t,3))},Mr.get=as,Mr.gt=bn,Mr.gte=An,Mr.has=function(e,t){return null!=e&&ri(e,t,xo)},Mr.hasIn=is,Mr.head=Ei,Mr.identity=Ns,Mr.includes=function(e,t,r,o){return e=Pn(e)?e:Ss(e),r=r&&!o?Kn(r):0,o=e.length,r<0&&(r=lr(o+r,0)),Fn(e)?r<=o&&-1<e.indexOf(t,r):!!o&&-1<bt(e,t,r)},Mr.indexOf=function(e,t,r){var o=null==e?0:e.length;return o?bt(e,t,e=(e=null==r?0:Kn(r))<0?lr(o+e,0):e):-1},Mr.inRange=function(t,r,o){return r=Wn(r),o===e?(o=r,r=0):o=Wn(o),(t=t=zn(t))>=dr(r,o)&&t<lr(r,o)},Mr.invoke=ls,Mr.isArguments=_n,Mr.isArray=yn,Mr.isArrayBuffer=Tn,Mr.isArrayLike=Pn,Mr.isArrayLikeObject=$n,Mr.isBoolean=function(e){return!0===e||!1===e||In(e)&&ho(e)==u},Mr.isBuffer=Mn,Mr.isDate=Pe,Mr.isElement=function(e){return In(e)&&1===e.nodeType&&!Bn(e)},Mr.isEmpty=function(e){if(null!=e){if(Pn(e)&&(yn(e)||"string"==typeof e||"function"==typeof e.splice||Mn(e)||Un(e)||_n(e)))return!e.length;var t,r=ti(e);if(r==S||r==y)return!e.size;if(mi(e))return!Po(e).length;for(t in e)if(Ce.call(e,t))return!1}return!0},Mr.isEqual=function(e,t){return Ao(e,t)},Mr.isEqualWith=function(t,r,o){var a=(o="function"==typeof o?o:e)?o(t,r):e;return a===e?Ao(t,r,e,o):!!a},Mr.isError=wn,Mr.isFinite=function(e){return"number"==typeof e&&ir(e)},Mr.isFunction=Cn,Mr.isInteger=En,Mr.isLength=Ln,Mr.isMap=Gn,Mr.isMatch=function(e,t){return e===t||_o(e,t,Ya(t))},Mr.isMatchWith=function(t,r,o){return o="function"==typeof o?o:e,_o(t,r,Ya(r),o)},Mr.isNaN=function(e){return Nn(e)&&e!=+e},Mr.isNative=function(e){if(di(e))throw new w("Unsupported core-js use. Try https://npms.io/search?q=ponyfill.");return yo(e)},Mr.isNil=function(e){return null==e},Mr.isNull=function(e){return null===e},Mr.isNumber=Nn,Mr.isObject=On,Mr.isObjectLike=In,Mr.isPlainObject=Bn,Mr.isRegExp=kn,Mr.isSafeInteger=function(e){return En(e)&&-s<=e&&e<=s},Mr.isSet=Rn,Mr.isString=Fn,Mr.isSymbol=Dn,Mr.isTypedArray=Un,Mr.isUndefined=function(t){return t===e},Mr.isWeakMap=function(e){return In(e)&&ti(e)==$},Mr.isWeakSet=function(e){return In(e)&&"[object WeakSet]"==ho(e)},Mr.join=function(e,t){return null==e?"":nr.call(e,t)},Mr.kebabCase=_s,Mr.last=Li,Mr.lastIndexOf=function(t,r,o){var a=null==t?0:t.length;if(!a)return-1;var i=a;if(o!==e&&(i=(i=Kn(o))<0?lr(a+i,0):dr(i,a-1)),r!=r)return ft(t,_t,i,!0);for(var n=t,s=r,l=i+1;l--;)if(n[l]===s)return l;return l},Mr.lowerCase=ys,Mr.lowerFirst=Ts,Mr.lt=Xn,Mr.lte=Vn,Mr.max=function(t){return t&&t.length?oo(t,Ns,po):e},Mr.maxBy=function(t,r){return t&&t.length?oo(t,Qa(r,2),po):e},Mr.mean=function(e){return yt(e,Ns)},Mr.meanBy=function(e,t){return yt(e,Qa(t,2))},Mr.min=function(t){return t&&t.length?oo(t,Ns,$o):e},Mr.minBy=function(t,r){return t&&t.length?oo(t,Qa(r,2),$o):e},Mr.stubArray=Zs,Mr.stubFalse=zs,Mr.stubObject=function(){return{}},Mr.stubString=function(){return""},Mr.stubTrue=function(){return!0},Mr.multiply=el,Mr.nth=function(t,r){return t&&t.length?Lo(t,Kn(r)):e},Mr.noConflict=function(){return ze._===this&&(ze._=ke),this},Mr.noop=Ds,Mr.now=sn,Mr.pad=function(e,t,r){e=jn(e);var o=(t=Kn(t))?Vt(e):0;return!t||t<=o?e:La(or(t=(t-o)/2),r)+e+La(rr(t),r)},Mr.padEnd=function(e,t,r){e=jn(e);var o=(t=Kn(t))?Vt(e):0;return t&&o<t?e+La(t-o,r):e},Mr.padStart=function(e,t,r){e=jn(e);var o=(t=Kn(t))?Vt(e):0;return t&&o<t?La(t-o,r)+e:e},Mr.parseInt=function(e,t,r){return t=r||null==t?0:t&&+t,cr(jn(e).replace(te,""),t||0)},Mr.random=function(t,r,o){var a;return o&&"boolean"!=typeof o&&ni(t,r,o)&&(r=o=e),o===e&&("boolean"==typeof r?(o=r,r=e):"boolean"==typeof t&&(o=t,t=e)),t===e&&r===e?(t=0,r=1):(t=Wn(t),r===e?(r=t,t=0):r=Wn(r)),r<t&&(a=t,t=r,r=a),o||t%1||r%1?(a=gr(),dr(t+a*(r-t+He("1e-"+((a+"").length-1))),r)):Bo(t,r)},Mr.reduce=function(e,t,r){var o=yn(e)?ht:$t,a=arguments.length<3;return o(e,Qa(t,4),r,a,eo)},Mr.reduceRight=function(e,t,r){var o=yn(e)?pt:$t,a=arguments.length<3;return o(e,Qa(t,4),r,a,to)},Mr.repeat=function(t,r,o){return r=(o?ni(t,r,o):r===e)?1:Kn(r),ko(jn(t),r)},Mr.replace=function(){var e=arguments,t=jn(e[0]);return e.length<3?t:t.replace(e[1],e[2])},Mr.result=function(t,r,o){var a=-1,i=(r=na(r,t)).length;for(i||(i=1,t=e);++a<i;){var n=null==t?e:t[Ti(r[a])];n===e&&(a=i,n=o),t=Cn(n)?n.call(t):n}return t},Mr.round=tl,Mr.runInContext=t,Mr.sample=function(e){return(yn(e)?Fr:Fo)(e)},Mr.size=function(e){var t;return null==e?0:Pn(e)?Fn(e)?Vt(e):e.length:(t=ti(e))==S||t==y?e.size:Po(e).length},Mr.snakeCase=Ps,Mr.some=function(t,r,o){return(yn(t)?xt:Wo)(t,Qa(r=o&&ni(t,r,o)?e:r,3))},Mr.sortedIndex=function(e,t){return Ko(e,t)},Mr.sortedIndexBy=function(e,t,r){return Zo(e,t,Qa(r,2))},Mr.sortedIndexOf=function(e,t){var r=null==e?0:e.length;if(r){var o=Ko(e,t);if(o<r&&fn(e[o],t))return o}return-1},Mr.sortedLastIndex=function(e,t){return Ko(e,t,!0)},Mr.sortedLastIndexBy=function(e,t,r){return Zo(e,t,Qa(r,2),!0)},Mr.sortedLastIndexOf=function(e,t){if(null!=e&&e.length){var r=Ko(e,t,!0)-1;if(fn(e[r],t))return r}return-1},Mr.startCase=$s,Mr.startsWith=function(e,t,r){return e=jn(e),r=null==r?0:Qr(Kn(r),0,e.length),t=jo(t),e.slice(r,r+t.length)==t},Mr.subtract=rl,Mr.sum=function(e){return e&&e.length?Mt(e,Ns):0},Mr.sumBy=function(e,t){return e&&e.length?Mt(e,Qa(t,2)):0},Mr.template=function(t,r,o){var a,i,n=Mr.templateSettings;o&&ni(t,r,o)&&(r=e),t=jn(t),r=qn({},r,n,Fa);var s=ds(o=qn({},r.imports,n.imports,Fa)),l=Lt(o,s),d=0,m=(n=r.interpolate||ve,"__p += '"),c=(o=Ae((r.escape||ve).source+"|"+n.source+"|"+(n===Q?de:ve).source+"|"+(r.evaluate||ve).source+"|$","g"),"//# sourceURL="+(Ce.call(r,"sourceURL")?(r.sourceURL+"").replace(/\s/g," "):"lodash.templateSources["+ ++De+"]")+"\n");if(t.replace(o,(function(e,r,o,n,s,l){return o=o||n,m+=t.slice(d,l).replace(Se,kt),r&&(a=!0,m+="' +\n__e("+r+") +\n'"),s&&(i=!0,m+="';\n"+s+";\n__p += '"),o&&(m+="' +\n((__t = ("+o+")) == null ? '' : __t) +\n'"),d=l+e.length,e})),m+="';\n",n=Ce.call(r,"variable")&&r.variable){if(se.test(n))throw new w("Invalid `variable` option passed into `_.template`")}else m="with (obj) {\n"+m+"\n}\n";if(m=(i?m.replace(D,""):m).replace(U,"$1").replace(X,"$1;"),m="function("+(n||"obj")+") {\n"+(n?"":"obj || (obj = {});\n")+"var __t, __p = ''"+(a?", __e = _.escape":"")+(i?", __j = Array.prototype.join;\nfunction print() { __p += __j.call(arguments, '') }\n":";\n")+m+"return __p\n}",(o=Es((function(){return re(s,c+"return "+m).apply(e,l)}))).source=m,wn(o))throw o;return o},Mr.times=function(e,t){if((e=Kn(e))<1||s<e)return[];var r=d,o=dr(e,d);for(t=Qa(t),e-=d,o=wt(o,t);++r<e;)t(r);return o},Mr.toFinite=Wn,Mr.toInteger=Kn,Mr.toLength=Zn,Mr.toLower=function(e){return jn(e).toLowerCase()},Mr.toNumber=zn,Mr.toSafeInteger=function(e){return e?Qr(Kn(e),-s,s):0===e?e:0},Mr.toString=jn,Mr.toUpper=function(e){return jn(e).toUpperCase()},Mr.trim=function(t,r,o){return(t=jn(t))&&(o||r===e)?Ct(t):t&&(r=jo(r))?la(o=Ht(t),It(o,r=Ht(r)),Gt(o,r)+1).join(""):t},Mr.trimEnd=function(t,r,o){return(t=jn(t))&&(o||r===e)?t.slice(0,Wt(t)+1):t&&(r=jo(r))?la(o=Ht(t),0,Gt(o,Ht(r))+1).join(""):t},Mr.trimStart=function(t,r,o){return(t=jn(t))&&(o||r===e)?t.replace(te,""):t&&(r=jo(r))?la(o=Ht(t),It(o,Ht(r))).join(""):t},Mr.truncate=function(t,r){var o,a,i=30,n="...";if(On(r)&&(o="separator"in r?r.separator:o,i="length"in r?Kn(r.length):i,n="omission"in r?jo(r.omission):n),r=(t=jn(t)).length,(r=Rt(t)?(a=Ht(t)).length:r)<=i)return t;if((r=i-Vt(n))<1)return n;if(i=a?la(a,0,r).join(""):t.slice(0,r),o!==e)if(a&&(r+=i.length-r),kn(o)){if(t.slice(r).search(o)){var s,l=i;for((o=o.global?o:Ae(o.source,jn(me.exec(o))+"g")).lastIndex=0;s=o.exec(l);)var d=s.index;i=i.slice(0,d===e?r:d)}}else t.indexOf(jo(o),r)!=r&&-1<(a=i.lastIndexOf(o))&&(i=i.slice(0,a));return i+n},Mr.unescape=function(e){return(e=jn(e))&&W.test(e)?e.replace(V,Kt):e},Mr.uniqueId=function(e){var t=++Ee;return jn(e)+t},Mr.upperCase=Ms,Mr.upperFirst=ws,Mr.each=Ji,Mr.eachRight=qi,Mr.first=Ei,Fs(Mr,(Qs={},lo(Mr,(function(e,t){Ce.call(Mr.prototype,t)||(Qs[t]=e)})),Qs),{chain:!1}),Mr.VERSION="4.17.21",nt(["bind","bindKey","curry","curryRight","partial","partialRight"],(function(e){Mr[e].placeholder=Mr})),nt(["drop","take"],(function(t,r){Or.prototype[t]=function(o){o=o===e?1:lr(Kn(o),0);var a=this.__filtered__&&!r?new Or(this):this.clone();return a.__filtered__?a.__takeCount__=dr(o,a.__takeCount__):a.__views__.push({size:dr(o,d),type:t+(a.__dir__<0?"Right":"")}),a},Or.prototype[t+"Right"]=function(e){return this.reverse()[t](e).reverse()}})),nt(["filter","map","takeWhile"],(function(e,t){var r=t+1,o=1==r||3==r;Or.prototype[e]=function(e){var t=this.clone();return t.__iteratees__.push({iteratee:Qa(e,3),type:r}),t.__filtered__=t.__filtered__||o,t}})),nt(["head","last"],(function(e,t){var r="take"+(t?"Right":"");Or.prototype[e]=function(){return this[r](1).value()[0]}})),nt(["initial","tail"],(function(e,t){var r="drop"+(t?"":"Right");Or.prototype[e]=function(){return this.__filtered__?new Or(this):this[r](1)}})),Or.prototype.compact=function(){return this.filter(Ns)},Or.prototype.find=function(e){return this.filter(e).head()},Or.prototype.findLast=function(e){return this.reverse().find(e)},Or.prototype.invokeMap=Ro((function(e,t){return"function"==typeof e?new Or(this):this.map((function(r){return fo(r,e,t)}))})),Or.prototype.reject=function(e){return this.filter(pn(Qa(e)))},Or.prototype.slice=function(t,r){t=Kn(t);var o=this;return o.__filtered__&&(0<t||r<0)?new Or(o):(t<0?o=o.takeRight(-t):t&&(o=o.drop(t)),r!==e?(r=Kn(r))<0?o.dropRight(-r):o.take(r-t):o)},Or.prototype.takeRightWhile=function(e){return this.reverse().takeWhile(e).reverse()},Or.prototype.toArray=function(){return this.take(d)},lo(Or.prototype,(function(t,r){var o=/^(?:filter|find|map|reject)|While$/.test(r),a=/^(?:head|last)$/.test(r),i=Mr[a?"take"+("last"==r?"Right":""):r],n=a||/^find/.test(r);i&&(Mr.prototype[r]=function(){function r(e){return e=i.apply(Mr,ut([e],d)),a&&u?e[0]:e}var s,l=this.__wrapped__,d=a?[1]:arguments,m=l instanceof Or,c=d[0],g=m||yn(l),u=(g&&o&&"function"==typeof c&&1!=c.length&&(m=g=!1),this.__chain__),h=(c=!!this.__actions__.length,n&&!u);return m=m&&!c,!n&&g?(l=m?l:new Or(this),(s=t.apply(l,d)).__actions__.push({func:Zi,args:[r],thisArg:e}),new Lr(s,u)):h&&m?t.apply(this,d):(s=this.thru(r),h?a?s.value()[0]:s.value():s)})})),nt(["pop","push","shift","sort","splice","unshift"],(function(e){var t=Te[e],r=/^(?:push|sort|unshift)$/.test(e)?"tap":"thru",o=/^(?:pop|shift)$/.test(e);Mr.prototype[e]=function(){var e,a=arguments;return o&&!this.__chain__?(e=this.value(),t.apply(yn(e)?e:[],a)):this[r]((function(e){return t.apply(yn(e)?e:[],a)}))}})),lo(Or.prototype,(function(e,t){var r,o=Mr[t];o&&(r=o.name+"",Ce.call(fr,r)||(fr[r]=[]),fr[r].push({name:t,func:o}))})),fr[Ma(e,2).name]=[{name:"wrapper",func:e}],Or.prototype.clone=function(){var e=new Or(this.__wrapped__);return e.__actions__=xa(this.__actions__),e.__dir__=this.__dir__,e.__filtered__=this.__filtered__,e.__iteratees__=xa(this.__iteratees__),e.__takeCount__=this.__takeCount__,e.__views__=xa(this.__views__),e},Or.prototype.reverse=function(){var e;return this.__filtered__?((e=new Or(this)).__dir__=-1,e.__filtered__=!0):(e=this.clone()).__dir__*=-1,e},Or.prototype.value=function(){var e=this.__wrapped__.value(),t=this.__dir__,r=yn(e),o=t<0,a=r?e.length:0,i=function(e,t,r){for(var o=-1,a=r.length;++o<a;){var i=r[o],n=i.size;switch(i.type){case"drop":e+=n;break;case"dropRight":t-=n;break;case"take":t=dr(t,e+n);break;case"takeRight":e=lr(e,t-n)}}return{start:e,end:t}}(0,a,this.__views__),n=i.start,s=(i=i.end)-n,l=o?i:n-1,d=this.__iteratees__,m=d.length,c=0,g=dr(s,this.__takeCount__);if(!r||!o&&a==s&&g==s)return ta(e,this.__actions__);var u=[];e:for(;s--&&c<g;){for(var h=-1,p=e[l+=t];++h<m;){var x=(v=d[h]).iteratee,v=v.type;if(x=x(p),2==v)p=x;else if(!x){if(1==v)continue e;break e}}u[c++]=p}return u},Mr.prototype.at=zi,Mr.prototype.chain=function(){return Ki(this)},Mr.prototype.commit=function(){return new Lr(this.value(),this.__chain__)},Mr.prototype.next=function(){this.__values__===e&&(this.__values__=Hn(this.value()));var t=this.__index__>=this.__values__.length;return{done:t,value:t?e:this.__values__[this.__index__++]}},Mr.prototype.plant=function(t){for(var r,o=this;o instanceof Er;){var a=$i(o),i=(a.__index__=0,a.__values__=e,r?i.__wrapped__=a:r=a,a);o=o.__wrapped__}return i.__wrapped__=t,r},Mr.prototype.reverse=function(){var t=this.__wrapped__;return t instanceof Or?((t=(t=this.__actions__.length?new Or(this):t).reverse()).__actions__.push({func:Zi,args:[Gi],thisArg:e}),new Lr(t,this.__chain__)):this.thru(Gi)},Mr.prototype.toJSON=Mr.prototype.valueOf=Mr.prototype.value=function(){return ta(this.__wrapped__,this.__actions__)},Mr.prototype.first=Mr.prototype.head,jt&&(Mr.prototype[jt]=function(){return this}),Mr}();Qe?((Qe.exports=Zt)._=Zt,o._=Zt):ze._=Zt}.call(commonjsGlobal),lodash.exports),M,w;let getRandomValues;const rnds8=new Uint8Array(16);function rng(){if(getRandomValues=getRandomValues||"undefined"!=typeof crypto&&crypto.getRandomValues&&crypto.getRandomValues.bind(crypto))return getRandomValues(rnds8);throw new Error("crypto.getRandomValues() not supported. See https://github.com/uuidjs/uuid#getrandomvalues-not-supported")}const byteToHex=[];for(let e=0;e<256;++e)byteToHex.push((e+256).toString(16).slice(1));function unsafeStringify(e,t=0){return byteToHex[e[t+0]]+byteToHex[e[t+1]]+byteToHex[e[t+2]]+byteToHex[e[t+3]]+"-"+byteToHex[e[t+4]]+byteToHex[e[t+5]]+"-"+byteToHex[e[t+6]]+byteToHex[e[t+7]]+"-"+byteToHex[e[t+8]]+byteToHex[e[t+9]]+"-"+byteToHex[e[t+10]]+byteToHex[e[t+11]]+byteToHex[e[t+12]]+byteToHex[e[t+13]]+byteToHex[e[t+14]]+byteToHex[e[t+15]]}const randomUUID="undefined"!=typeof crypto&&crypto.randomUUID&&crypto.randomUUID.bind(crypto);var native={randomUUID:randomUUID};function v4(e,t,r){if(native.randomUUID&&!t&&!e)return native.randomUUID();var o=(e=e||{}).random||(e.rng||rng)();if(o[6]=15&o[6]|64,o[8]=63&o[8]|128,t){r=r||0;for(let e=0;e<16;++e)t[r+e]=o[e];return t}return unsafeStringify(o)}const _tmpl$$i=template('<span class="w-full text-center px-[10px] pt-[6px] pb-[10px] m-auto text-[13px]"><a target="_blank" rel="noopener noreferrer" class="lite-badge" id="lite-badge"><span> '),_tmpl$2$c=template('<span class="w-full text-center px-[10px] pt-[6px] pb-[10px] m-auto text-[13px]">'),defaultTextColor$6="#303235",Badge=e=>{let t,r;const o=r=>{r.forEach((r=>{r.removedNodes.forEach((r=>{"id"in r&&t&&"lite-badge"==r.id&&(console.log("Sorry, you can't remove the brand 😅"),e.botContainer?.append(t))}))}))};return onMount((()=>{document&&e.botContainer&&(r=new MutationObserver(o)).observe(e.botContainer,{subtree:!1,childList:!0})})),onCleanup((()=>{r&&r.disconnect()})),[createComponent(Show,{get when(){return void 0===e.footer?.showFooter||null===e.footer?.showFooter||!0===e.footer?.showFooter},get children(){const r=_tmpl$$i(),o=r.firstChild,a=o.firstChild;a.firstChild,insert(r,(()=>e.footer?.text??"Powered by"),o);return"function"==typeof t?use(t,o):t=o,o.style.setProperty("font-weight","bold"),insert(a,(()=>e.footer?.company??"C-agent"),null),createRenderEffect((t=>{var a=e.footer?.textColor??e.poweredByTextColor??defaultTextColor$6,i=e.badgeBackgroundColor??"#ffffff",n=e.footer?.companyLink??"https://cmcts.ai/",s=e.footer?.textColor??e.poweredByTextColor??defaultTextColor$6;return a!==t._v$&&(null!=(t._v$=a)?r.style.setProperty("color",a):r.style.removeProperty("color")),i!==t._v$2&&(null!=(t._v$2=i)?r.style.setProperty("background-color",i):r.style.removeProperty("background-color")),n!==t._v$3&&setAttribute(o,"href",t._v$3=n),s!==t._v$4&&(null!=(t._v$4=s)?o.style.setProperty("color",s):o.style.removeProperty("color")),t}),{_v$:void 0,_v$2:void 0,_v$3:void 0,_v$4:void 0}),r}}),createComponent(Show,{get when(){return!1===e.footer?.showFooter},get children(){const t=_tmpl$2$c();return createRenderEffect((r=>{var o=e.footer?.textColor??e.poweredByTextColor??defaultTextColor$6,a=e.badgeBackgroundColor??"#ffffff";return o!==r._v$5&&(null!=(r._v$5=o)?t.style.setProperty("color",o):t.style.removeProperty("color")),a!==r._v$6&&(null!=(r._v$6=a)?t.style.setProperty("background-color",a):t.style.removeProperty("background-color")),r}),{_v$5:void 0,_v$6:void 0}),t}})]},_tmpl$$h=template('<div class="fixed top-4 right-4 z-50 p-4 rounded-lg border shadow-lg max-w-sm"><div class="flex items-center justify-between"><span class="text-sm font-medium"></span><button class="ml-4 text-current opacity-70 hover:opacity-100">×'),Toast=e=>{const[t,r]=createSignal(!0);return onMount((()=>{var t=e.duration||5e3;setTimeout((()=>{r(!1),e.onClose?.()}),t)})),createComponent(Show,{get when(){return t()},get children(){const t=_tmpl$$h(),o=t.firstChild.firstChild,a=o.nextSibling;return insert(o,(()=>e.message)),a.$$click=()=>{r(!1),e.onClose?.()},createRenderEffect((r=>style(t,{...(()=>{switch(e.type){case"error":return{"background-color":"#fee2e2","border-color":"#fca5a5",color:"#dc2626"};case"success":return{"background-color":"#dcfce7","border-color":"#86efac",color:"#16a34a"};default:return{"background-color":"#dbeafe","border-color":"#93c5fd",color:"#2563eb"}}})(),...e.style},r))),t}})},_tmpl$2$b=(delegateEvents(["click"]),template('<button type="submit">')),defaultFeedbackColor$1="#3B81F6",ThumbsUpButton=e=>{const t=()=>"THUMBS_UP"===e.rating;return spread$1(r=_tmpl$2$b(),mergeProps({get disabled(){return e.isDisabled||e.isLoading}},e,{get class(){return"p-2 justify-center font-semibold focus:outline-none flex items-center disabled:opacity-50 disabled:cursor-not-allowed disabled:brightness-100 transition-all filter hover:brightness-90 active:brightness-75 rounded-full "+e.class},get style(){return{background:t()?e.activeBackgroundColor??"#00A5F020":"transparent",border:"none"}}}),!1,!0),insert(r,createComponent(Show,{get when(){return!e.isLoading},get fallback(){return createComponent(Spinner$2,{class:"text-white"})},get children(){return createComponent(ThumbsUpIcon,{get color(){return e.feedbackColor??defaultFeedbackColor$1},get class(){return"send-icon flex "+(e.disableIcon?"hidden":"")},get filled(){return t()}})}})),r;var r},ThumbsDownButton=e=>{const t=()=>"THUMBS_DOWN"===e.rating;return spread$1(r=_tmpl$2$b(),mergeProps({get disabled(){return e.isDisabled||e.isLoading}},e,{get class(){return"p-2 justify-center font-semibold focus:outline-none flex items-center disabled:opacity-50 disabled:cursor-not-allowed disabled:brightness-100 transition-all filter hover:brightness-90 active:brightness-75 rounded-full "+e.class},get style(){return{background:t()?e.activeBackgroundColor??"#EC808D20":"transparent",border:"none"}}}),!1,!0),insert(r,createComponent(Show,{get when(){return!e.isLoading},get fallback(){return createComponent(Spinner$2,{class:"text-white"})},get children(){return createComponent(ThumbsDownIcon,{get color(){return e.feedbackColor??defaultFeedbackColor$1},get class(){return"send-icon flex "+(e.disableIcon?"hidden":"")},get filled(){return t()}})}})),r;var r},_tmpl$$g=template('<div class="flex overflow-x-hidden overflow-y-auto fixed inset-0 z-[1002] outline-none focus:outline-none justify-center items-center"><div class="relative w-full my-6 max-w-3xl mx-4"><div class="border-0 rounded-lg shadow-lg relative flex flex-col w-full bg-white outline-none focus:outline-none"><div class="flex items-center justify-between p-5 border-b border-solid border-blueGray-200 rounded-t"><span class="whitespace-pre-wrap font-semibold max-w-full"></span><button class="p-1 ml-auto bg-transparent border-0 text-black float-right text-xl leading-none font-semibold outline-none focus:outline-none" type="button"><span class="bg-transparent block outline-none focus:outline-none"><svg xmlns="http://www.w3.org/2000/svg" class="text-black h-6 w-6" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><path d="M18 6 6 18"></path><path d="m6 6 12 12"></path></svg></span></button></div><div class="relative p-6 flex-auto"><textarea rows="4" class="block p-2.5 rounded-lg border focus:ring-blue-500 focus:border-blue-500 bg-transparent flex-1 w-full feedback-input disabled:opacity-50 disabled:cursor-not-allowed disabled:brightness-100 font-normal"></textarea></div><div class="flex items-center justify-end p-4 border-t border-solid border-blueGray-200 rounded-b"><button class="bg-emerald-500 text-white active:bg-emerald-600 font-bold text-sm px-4 py-2 rounded shadow hover:shadow-lg outline-none focus:outline-none mr-1 mb-1 ease-linear transition-all duration-150 disabled:opacity-50 disabled:cursor-not-allowed" type="button">'),_tmpl$2$a=template('<div class="flex opacity-25 fixed inset-0 z-[1001] bg-black">'),defaultBackgroundColor$4="#ffffff",defaultTextColor$5="#303235",FeedbackContentDialog=e=>{let t;const r=()=>{""!==e.inputValue().trim()&&t?.reportValidity()&&e.onSubmit(e.inputValue())},o=()=>{e.onClose()};return[(()=>{const a=_tmpl$$g(),i=a.firstChild.firstChild,n=i.firstChild,s=n.firstChild,l=s.nextSibling,d=n.nextSibling,m=d.firstChild,c=d.nextSibling.firstChild;n.style.setProperty("border","1px solid #eeeeee"),insert(s,(()=>e.titleFeedback||"Phản hồi về câu trả lời")),l.$$click=o;return"function"==typeof t?use(t,m):t=m,m.$$input=t=>(t=t.currentTarget.value,e.setInputValue(t)),m.style.setProperty("border","1px solid #eeeeee"),c.$$click=r,insert(c,(()=>e.buttonFeedback||"Gửi phản hồi")),createRenderEffect((t=>{var r=e.backgroundColor??defaultBackgroundColor$4,o=e.textColor??defaultTextColor$5,a=e.textColor??defaultTextColor$5,n=e.placeholderFeedback||"Bạn nghĩ gì về câu trả lời này?",s=!e.inputValue().trim();return r!==t._v$&&(null!=(t._v$=r)?i.style.setProperty("background-color",r):i.style.removeProperty("background-color")),o!==t._v$2&&(null!=(t._v$2=o)?i.style.setProperty("color",o):i.style.removeProperty("color")),a!==t._v$3&&(null!=(t._v$3=a)?m.style.setProperty("color",a):m.style.removeProperty("color")),n!==t._v$4&&setAttribute(m,"placeholder",t._v$4=n),s!==t._v$5&&(c.disabled=t._v$5=s),t}),{_v$:void 0,_v$2:void 0,_v$3:void 0,_v$4:void 0,_v$5:void 0}),createRenderEffect((()=>m.value=e.inputValue())),a})(),_tmpl$2$a()]},_tmpl$$f=(delegateEvents(["click","input"]),template('<div class="flex items-center justify-center max-w-[128px] mr-[10px] p-0 m-0"><img class="w-full h-full bg-cover">')),_tmpl$2$9=template('<div class="mt-2"><div>'),_tmpl$3$5=template('<span class="prose">'),_tmpl$4$5=template('<div class="mb-6">'),_tmpl$5$5=template('<div class="flex flex-row items-start flex-wrap w-full gap-2">'),defaultBackgroundColor$3="#f7f8ff",defaultTextColor$4="#303235",defaultFontSize$2=16,AgentReasoningBubble=e=>{let t;return Marked.setOptions({isNoP:!0,sanitize:void 0===e.renderHTML||!e.renderHTML}),onMount((()=>{t&&(t.innerHTML=Marked.parse(`**✅ ${e.agentName}** \n\n`+e.agentMessage),t.querySelectorAll("a").forEach((e=>{e.target="_blank"})))})),insert(r=_tmpl$4$5(),(()=>{const t=memo((()=>!!e.agentArtifacts));return()=>{return t()&&(insert(r=_tmpl$5$5(),createComponent(For,{get each(){var t=e.agentArtifacts,r=lodashExports.cloneDeep(t);for(let t=0;t<r.length;t++){var o=r[t];!o||"png"!==o.type&&"jpeg"!==o.type||(o=o.data,r[t].data=`${e.apiHost}/api/v1/get-upload-file?chatflowId=${e.chatflowid}&chatId=${e.chatId}&fileName=`+o.replace("FILE-STORAGE::",""))}return r},children:t=>null!==t?memo((()=>{var r,o=t;if("png"===o.type||"jpeg"===o.type){const e=o.data;return setAttribute((r=_tmpl$$f()).firstChild,"src",e),r}if("html"===o.type){const e=o.data;return(r=_tmpl$2$9()).firstChild.innerHTML=e,r}{const t=o.data;{const r=_tmpl$3$5();return r.style.setProperty("border-radius","6px"),createRenderEffect((o=>{var a=Marked.parse(t),i=e.backgroundColor??defaultBackgroundColor$3,n=e.textColor??defaultTextColor$4,s=e.fontSize?e.fontSize+"px":defaultFontSize$2+"px";return a!==o._v$&&(r.innerHTML=o._v$=a),i!==o._v$2&&(null!=(o._v$2=i)?r.style.setProperty("background-color",i):r.style.removeProperty("background-color")),n!==o._v$3&&(null!=(o._v$3=n)?r.style.setProperty("color",n):r.style.removeProperty("color")),s!==o._v$4&&(null!=(o._v$4=s)?r.style.setProperty("font-size",s):r.style.removeProperty("font-size")),o}),{_v$:void 0,_v$2:void 0,_v$3:void 0,_v$4:void 0}),r}}})):null})),r);var r}})(),null),insert(r,(()=>{const r=memo((()=>!!e.agentMessage));return()=>r()&&(()=>{const r=_tmpl$3$5();return"function"==typeof t?use(t,r):t=r,createRenderEffect((t=>{var o=e.backgroundColor??defaultBackgroundColor$3,a=e.textColor??defaultTextColor$4,i=e.fontSize?e.fontSize+"px":defaultFontSize$2+"px";return o!==t._v$5&&(null!=(t._v$5=o)?r.style.setProperty("background-color",o):r.style.removeProperty("background-color")),a!==t._v$6&&(null!=(t._v$6=a)?r.style.setProperty("color",a):r.style.removeProperty("color")),i!==t._v$7&&(null!=(t._v$7=i)?r.style.setProperty("font-size",i):r.style.removeProperty("font-size")),t}),{_v$5:void 0,_v$6:void 0,_v$7:void 0}),r})()})(),null),r;var r},_tmpl$$e=template('<div data-modal-target="defaultModal" data-modal-toggle="defaultModal" class="flex justify-start mb-2 items-start host-container hover:brightness-90 active:brightness-75"><span class="px-2 py-1 ml-1 whitespace-pre-wrap max-w-full chatbot-host-bubble" data-testid="host-bubble">'),SourceBubble=e=>{const t=e.src?.metadata?.source?.toLowerCase().endsWith(".pdf")||e.src?.metadata?.source?.toLowerCase().endsWith(".txt")||e.src?.metadata?.source?.toLowerCase().endsWith(".html")||e.src?.metadata?.source?.toLowerCase().endsWith(".xlsx")||e.src?.metadata?.source?.toLowerCase().endsWith(".docx")||e.src?.metadata?.source?.toLowerCase().endsWith(".doc")||e.src?.metadata?.source?.toLowerCase().endsWith(".md")?[(r=e.src.metadata.source.split(/[/\\]/)).pop(),r.pop()].reverse().filter(Boolean).join("/"):e.pageContent;var r,o;return o=(r=_tmpl$$e()).firstChild,r.$$click=()=>{e.onSourceClick?.()},o.style.setProperty("width","max-content"),o.style.setProperty("font-size","13px"),o.style.setProperty("border-radius","15px"),o.style.setProperty("cursor","pointer"),o.style.setProperty("text-overflow","ellipsis"),o.style.setProperty("overflow","hidden"),o.style.setProperty("white-space","nowrap"),insert(o,t),r};function sortJsonKeys(e){if(null===e||"object"!=typeof e)return e;if(Array.isArray(e))return e.map(sortJsonKeys);var t={};for(const r of Object.keys(e).sort())t[r]=sortJsonKeys(e[r]);return t}function parseJsonMarkdown(e){try{if(null==e)throw new Error("Input cannot be null or undefined");var t=e;const n=e.trim();if(""===n)throw new Error("Input cannot be empty");var r=[()=>extractFromMarkdownCodeBlocks(n),()=>extractPlainJson(n),()=>extractMultipleJsonObjects(n),()=>extractWithPriorityCheck(n)];let s=null;for(let t=0;t<r.length;t++){var o=r[t];try{var a=o();if(void 0!==a)return sortJsonKeys(a)}catch(e){s=e}}var i=["Could not find valid JSON in the input.",`Input length: ${t.length} characters`,"Trimmed input preview: "+n.substring(0,100)+(100<n.length?"...":"")];throw s&&i.push("Last parsing error: "+s.message),new Error(i.join(" "))}catch{}return{}}function extractFromMarkdownCodeBlocks(e){var t=[],r=new Set;for(const l of[/```(?:json|javascript|js|typescript|ts)?\s*\n?([\s\S]*?)```/gi,/``([^`]+)``/g,/`([^`]+)`/g])for(const d of Array.from(e.matchAll(l))){var o=d[1]?.trim();if(o&&(o=cleanJsonContent(o),!r.has(o)&&(r.add(o),isValidJsonStart(o))))try{var a=JSON.parse(o);t.push(a)}catch(e){if(o.trim().startsWith("[")){var i=tryFixMalformedArray(o);if(i)try{var n=JSON.parse(i);t.push(n)}catch(e){}}else if(o.trim().startsWith("{")&&(i=tryFixIncompleteObjectStandalone(o)))try{var s=JSON.parse(i);t.push(s)}catch(e){}}}return 1===t.length?t[0]:1<t.length?t:void 0}function extractFromBraces(e){return extractFromDelimiters(e,"{","}")}function extractFromBrackets(e){return extractFromDelimiters(e,"[","]")}function extractPlainJson(e){if(isValidJsonStart(e=cleanJsonContent(e)))try{return JSON.parse(e)}catch(r){if(e.trim().startsWith("{")){var t=fixUnquotedKeysAndValues(e);try{return JSON.parse(t)}catch(r){if(t=tryFixIncompleteObjectStandalone(e))try{return JSON.parse(t)}catch(e){return}}}else if(e.trim().startsWith("[")&&(t=tryFixMalformedArray(e)))try{return JSON.parse(t)}catch(e){return}return}}function extractMultipleJsonObjects(e){var t=e.trim();if(/^\s*\{[\s\S]*?}\s+\{[\s\S]*?}\s*$/.test(t)){var r=[];let n=0;for(;n<t.length;){for(;n<t.length&&/\s/.test(t[n]);)n++;if(n>=t.length)break;if("{"!==t[n])break;var o=n;let s=0,l=!1,d=!1;for(;n<t.length;){var a=t[n];if(d)d=!1;else if("\\"===a)d=!0;else if('"'!==a||d){if(!l)if("{"===a)s++;else if("}"===a&&0==--s){a=fixUnquotedKeysAndValues(t.slice(o,n+1));try{var i=JSON.parse(a);r.push(i),n++;break}catch(e){return}}}else l=!l;n++}if(0!==s)return}return 1<r.length?r:void 0}}function extractWithPriorityCheck(e){var t=(e=e.trim()).startsWith("`")?e.slice(1):e;return t.startsWith("[")?extractArrayWithFallback(e,t):t.startsWith("{")?extractFromBraces(e):void 0!==(t=extractPlainJson(e))?t:extractFromBrackets(e)||extractFromBraces(e)}function extractArrayWithFallback(e,t){var r=extractFromBrackets(e);if(void 0!==r)return r;if(e.startsWith("`")&&void 0!==(r=extractFromBrackets(t)))return r;if(r=tryFixMalformedArray(e.startsWith("`")?t:e))try{return JSON.parse(r)}catch(e){return}}function extractFromDelimiters(e,t,r){var o=e.indexOf(t);if(-1!==o){if(o=findMatchingDelimiter(e,o,t,r)){r=cleanJsonContent(o);try{return JSON.parse(r)}catch(e){return tryFixMalformedContent(r,t)}}return tryFixIncompleteStructure(e,t)}}function findMatchingDelimiter(e,t,r,o){let a=0,i=!1,n=!1;for(let l=t;l<e.length;l++){var s=e[l];if(n)n=!1;else if("\\"===s)n=!0;else if('"'!==s||n){if(!i)if(s===r)a++;else if(s===o&&0==--a)return e.slice(t,l+1)}else i=!i}return null}function tryFixMalformedContent(e,t){return"["===t&&e.startsWith("[")?tryParseJson(tryFixMalformedArray(e)):"{"===t&&e.startsWith("{")?void 0!==(t=tryParseJson(fixUnquotedKeysAndValues(e)))?t:tryParseJson(tryFixIncompleteObjectStandalone(e)):void 0}function tryFixIncompleteStructure(e,t){return"["===t?tryParseJson(tryFixMalformedArray(e)):"{"===t?tryParseJson(tryFixIncompleteObjectStandalone(e)):void 0}function tryParseJson(e){if(e)try{return JSON.parse(e)}catch(e){}}function cleanJsonContent(e){let t=e.trim().replace(/^\s*[\r\n]+/gm,"").replace(/[\r\n]+\s*$/gm,"").replace(/\r\n/g,"\n").trim();return(t=removeCommentsFromJson(t=t.replace(/^-\s*/,""))).trim()}function removeCommentsFromJson(e){let t="",r=!1,o="",a=!1,i=0;for(;i<e.length;){var n=e[i],s=e[i+1];if(a)t+=n,a=!1;else if("\\"===n&&r)t+=n,a=!0;else{if('"'!==n&&"'"!==n||a){if(!r){if("/"===n&&"*"===s){for(i+=2;i<e.length-1;){if("*"===e[i]&&"/"===e[i+1]){i+=2;break}i++}if(i>=e.length-1)break;continue}if("/"===n&&"/"===s||"#"===n){for(;i<e.length&&"\n"!==e[i]&&"\r"!==e[i]&&"}"!==e[i]&&"]"!==e[i]&&","!==e[i];)i++;continue}}}else r?n===o&&(r=!1,o=""):(r=!0,o=n);t+=n}i++}return t}function isValidJsonStart(e){return(e=e.trim()).startsWith("{")||e.startsWith("[")||e.startsWith('"')||"true"===e||"false"===e||"null"===e||/^-?(\d+(\.\d+)?|\.\d+)([eE][+-]?\d+)?$/.test(e)}function tryAdvancedArrayFix(e){if(!(e=e.trim()).startsWith("["))return null;var t=[];for(const o of splitArrayObjects((e.endsWith("]")?e.slice(1,-1):e.slice(1)).trim())){var r=tryFixSingleObject(o.trim());r&&t.push(r)}return 0<t.length&&tryParseJson(e="["+t.join(", ")+"]")?e:null}function splitArrayObjects(e){var t,r=[];let o=-1;for(let t=0;t<e.length;t++)if(","===e[t]){let r=e.slice(0,t);r.endsWith("}")||(r+="}");try{JSON.parse(r),o=t;break}catch(e){}}if(-1<o){let a=e.slice(0,o),i=e.slice(o+1).trim();a.endsWith("}")||(a+="}"),r.push(a),i&&((i=i.replace(/^["']*\s*/,"")).includes('"')&&i.includes(":")?(t=splitRemainingObjects(i),r.push(...t)):r.push(i))}else r.push(e.trim());return r}function splitRemainingObjects(e){var t,r,o,a=[],i=/"[^"]+"\s*:\s*\{[^{}]*(?:\{[^{}]*}[^{}]*)*}/g;let n=0;for(;null!==(t=i.exec(e));)t.index>n&&(r=e.slice(n,t.index).trim())&&r.includes(":")&&a.push(r),a.push(t[0]),n=t.index+t[0].length;return n<e.length&&(o=e.slice(n).trim())&&o.includes(":")&&a.push(o),0===a.length&&e.includes(":")&&e.includes('"')&&a.push(e),a}function tryFixSingleObject(e){if(!e)return null;let t=e.trim();if(!(t=t.startsWith(",")?t.slice(1).trim():t).startsWith("{")&&t.includes(":")&&t.includes("{")&&t.includes("}")){var r="{"+t+"}";if(tryParseJson(r))return r}return(t=t.startsWith("{")?t:"{"+t).endsWith("}")||(t+="}"),tryParseJson(t=fixUnquotedKeysAndValues(t))?t:tryAggressiveObjectFix(e.trim())}function tryAggressiveObjectFix(e){if(!e)return null;let t=e.trim();if(-1<(o=(t=(t=t.startsWith(",")?t.slice(1).trim():t).startsWith("{")?t:"{"+t).indexOf(":"))){var r=t.slice(0,o),o=t.slice(o+1);let e=r.slice(1).trim(),a=(e.startsWith('"')||(e='"'+e+'"'),o.trim());if(a='"'+(a=escapeJsonValue(a=a.endsWith("}")?a.slice(0,-1):a))+'"',tryParseJson(t="{"+e+":"+a+"}"))return t}return tryParseJson(t=fixUnquotedKeysAndValues(e.trim()))?t:null}function escapeJsonValue(e){return e.replace(/\\/g,"\\\\").replace(/"/g,'\\"').replace(/\n/g,"\\n").replace(/\r/g,"\\r").replace(/\t/g,"\\t")}function fixUnquotedKeysAndValues(e){let t=e;return(t=(t=(t=(t=(t=(t=(t=(t=(t=(t=(t=(t=(t=(t=(t=(t=(t=mergeStandaloneArrays(t)).replace(/(\[[\s\S]*?])/g,(e=>/"[^"]*"\s+"[^"]*"/.test(e)?e.replace(/"\s+"/g,'", "'):e))).replace(/:(\s*)"([^"]*)"([^"]+)"([^"]*)"(\s*[,}])/g,((e,t,r,o,a,i)=>o.includes(":")?e:":"+t+`"${r}\\"${o}\\"${a}"`+i))).replace(/,(\s*[}\]])/g,"$1")).replace(/("([^"]+)"),\s*([^:}]*?)(?=\s*}|$)/g,((e,t,r,o,a,i)=>{if(!o.includes(":")&&!o.includes("]")){var n=i.substring(0,a);let e=0,r=!1,l=!1;for(let t=0;t<n.length;t++){var s=n[t];l?l=!1:"\\"===s?l=!0:'"'!==s||l?r||("["===s?e++:"]"===s&&e--):r=!r}if(0===e)return t+': "'+o.trim().replace(/,$/,"")+'"'}return e}))).replace(/\{\s*"([^"]*):([^"]*)"([^"]*)"([^}]*)}/g,((e,t,r,o)=>`{"${t}": "${o}"}`))).replace(/\{\s*"([^"]*):([^"}]*)}/g,((e,t,r)=>`{"${t}": "${r}"}`))).replace(/([{,]\s*)([a-zA-Z_$][a-zA-Z0-9_$]*)\s*:\s*([^"{}[\],]*\{[^}]*}[^"{}[\],]*)(\s*)([,}])/g,((e,t,r,o,a,i)=>t+'"'+r+'": "'+o.trim()+'"'+a+i))).replace(/([{,]\s*)'([^']*)'(\s*):/g,'$1"$2"$3:')).replace(/([{,]\s*)(\d+)(\s*):/g,'$1"$2"$3:')).replace(/([{,]\s*)([a-zA-Z_$][a-zA-Z0-9_$]*)\s*:/g,'$1"$2":')).replace(/:(\s*)'([^']*)'(\s*[,}])/g,':"$2"$3')).replace(/:(\s*)([^"{}[\]]*?")\s*([,}])/g,((e,t,r,o)=>{var a;return(r=r.trim()).endsWith('"')&&!r.startsWith('"')?(a=(r=r.slice(0,-1)).toLowerCase(),/^-?(\d+(\.\d*)?|\.\d+)([eE][+-]?\d*)?$/.test(r)?":"+t+r+o:"true"===a||"false"===a||"null"===a?":"+t+a+o:":"+t+'"'+r+'"'+o):e}))).replace(/:(\s*)(true|false|null|TRUE|FALSE|NULL)\s*([,}])/g,((e,t,r,o)=>":"+t+r.toLowerCase()+o))).replace(/:(\s*)([a-zA-Z_$][a-zA-Z0-9_$]*)\s*([,}])/g,((e,t,r,o)=>{var a=r.toLowerCase();return"true"===a||"false"===a||"null"===a?":"+t+a+o:":"+t+'"'+r+'"'+o}))).replace(/"(\s*)"([^"]+)"(\s*):/g,'", "$2":')).replace(/:\s*([^"{}[\],]*?)\s+"([^"]*)"(\s*):/g,((e,t,r,o,a,i)=>{var n=(t=t.trim()).toLowerCase();if(/^-?(\d+(\.\d*)?|\.\d+)([eE][+-]?\d*)?$/.test(t)||"true"===n||"false"===n||"null"===n)return e;var s=i.substring(0,a);let l=0,d=!1;for(let e=0;e<s.length;e++){var m=s[e];d?d=!1:"\\"===m?d=!0:'"'===m&&l++}return l%2!=1&&/^[a-zA-Z_][a-zA-Z0-9_]*$/.test(r)?': "'+t+'", "'+r+'"'+o+":":e}))).match(/^\{\s*"[^"]*"\s*:\s*"[^"]*"\s*:\s*\{}\s*}\s*"\s*}$/)&&(e=t.match(/^\{\s*"([^"]*)"\s*:\s*"([^"]*)"/))&&(t=`{"${e[1]}": "${e=e[2]}"}`),(t=(t=(t=(t=t.replace(/^(\{\s*"[^"]*"\s*:\s*"[^"]*")\s+[^}]*}$/g,"$1}")).replace(/,\s*([^"{}[\],]+?)\s*"([^"]*)"(\s*):/g,', "$2"$3:')).replace(/:\s*"([^"]*)\s*}$/g,((e,t)=>': "'+t.trim()+'"}'))).replace(/:(\s*)([^"{}[\]]*?)(\s*)(?=\s*[,}]|$)/g,((e,t,r,o,a,i)=>{var n=(r=r.trim()).toLowerCase();if(!r)return e;var s=i.substring(0,a);let l=0,d=!1;for(let e=0;e<s.length;e++){var m=s[e];d?d=!1:"\\"===m?d=!0:'"'===m&&l++}if(l%2==1)return e;if(/^-?(\d+(\.\d*)?|\.\d+)([eE][+-]?\d*)?$/.test(r)){let e=r;return e.startsWith(".")?e="0"+e:e.startsWith("-.")&&(e="-0"+e.slice(1)),e.endsWith(".")&&(e=e.slice(0,-1)),":"+t+(e=/[eE][+-]?$/.test(e)?e.replace(/[eE][+-]?$/,""):e)+o}if(r.startsWith('"')||"true"===n||"false"===n||"null"===n)return e;let c=r;return i=c.match(/^(.*?)\s+"[^"]*"\s*:/),":"+t+'"'+(c=i?i[1].trim():c)+'"'+o}))).replace(/,(\s*[}\]])/g,"$1")}function mergeStandaloneArrays(e){for(var t,r=/,(\s*)\[([^\]]+)](\s*)(?=[,}])/g,o=[];null!==(t=r.exec(e));)o.push({match:t[0],content:t[2]});if(0===o.length)return e;var a=/"([^"]+)"\s*:\s*\[([^\]]*)]/,i=e.match(a);if(!i||1===o.length)return e.replace(/,(\s*)\[([^\]]+)](\s*)(?=[,}])/g,((e,t,r,o)=>(r=r.split(",").map((e=>e.trim().replace(/^["']|["']$/g,""))),0<r.length&&r[0]?","+t+'"'+r[0].replace(/[^a-zA-Z0-9_]/g,"")+'": ""'+o:"")));var n=i[2],s=[];n.trim()&&s.push(...n.split(",").map((e=>e.trim())));for(const e of o){var l=e.content.split(",").map((e=>e.trim()));s.push(...l)}n="["+s.join(", ")+"]";let d=e.replace(a,`"${i[1]}": `+n);return d.replace(/,(\s*)\[([^\]]+)](\s*)(?=[,}])/g,"")}function tryFixMalformedArray(e){var t,r;return(e=e.trim()).startsWith("[")?"["===e||"[-"===e||/^\[\s*-\s*$/.test(e)?"[]":tryParseJson(t=fixUnquotedArrayValues(e))?t:tryAdvancedArrayFix(e)||(0===(t=parseArrayStructure(e)).arrayDepth&&1===t.objectDepth?fixIncompleteObjectInArray(e):-1<t.lastValidObjectEnd&&1===t.arrayDepth?tryParseJson(r=e.slice(0,t.lastValidObjectEnd+1)+"]")?r:tryFixIncompleteObject(e):tryFixIncompleteObject(e)||(1===t.arrayDepth?tryCloseArray(e):null)):null}function parseArrayStructure(e){let t=0,r=0,o=!1,a=!1,i=-1;for(let s=0;s<e.length;s++){var n=e[s];if(a)a=!1;else if("\\"===n)a=!0;else if('"'!==n||a){if(!o)if("["===n)t++;else if("]"===n){if(0==--t&&0===r)return{arrayDepth:0,objectDepth:0,lastValidObjectEnd:s}}else"{"===n?r++:"}"===n&&0==--r&&1===t&&(i=s)}else o=!o}return{arrayDepth:t,objectDepth:r,lastValidObjectEnd:i}}function fixIncompleteObjectInArray(e){var t=e.lastIndexOf("]");return-1<t&&tryParseJson(e=e.slice(0,t)+"}"+e.slice(t))?e:null}function tryCloseArray(e){var t=tryFixMissingCommas(e)+"]";return tryParseJson(t)||tryParseJson(t=e+"]")?t:null}function tryFixMissingCommas(e){if(!(e=e.trim()).startsWith("["))return e;let t=e.slice(1);return"["+(t=(t=(t=t.replace(/"(\s+)"/g,'", "')).replace(/"(\s+)(\d)/g,'", $2')).replace(/(\d)(\s+)"/g,'$1, "')).replace(/(\d)(\s+)(\d)/g,"$1, $3")}function fixUnquotedArrayValues(e){if(!e.startsWith("["))return e;let t=e;return(t=t.replace(/,(\s*)([^",\[\]{}]+?)(\s*)([,\]])/g,((e,t,r,o,a)=>{var i=(r=r.trim()).toLowerCase();if(/^-?(\d+(\.\d*)?|\.\d+)([eE][+-]?\d*)?$/.test(r)){let e=r;return e.startsWith(".")?e="0"+e:e.startsWith("-.")&&(e="-0"+e.slice(1)),e.endsWith(".")&&(e=e.slice(0,-1)),","+t+(e=/[eE][+-]?$/.test(e)?e.replace(/[eE][+-]?$/,""):e)+o+a}return"true"===i||"false"===i||"null"===i?","+t+i+o+a:r.startsWith('"')?e:","+t+'"'+r+'"'+o+a}))).replace(/^\[(\s*)([^",\[\]{}]+?)(\s*)([,\]])/g,((e,t,r,o,a)=>{var i=(r=r.trim()).toLowerCase();if(/^-?(\d+(\.\d*)?|\.\d+)([eE][+-]?\d*)?$/.test(r)){let e=r;return e.startsWith(".")?e="0"+e:e.startsWith("-.")&&(e="-0"+e.slice(1)),e.endsWith(".")&&(e=e.slice(0,-1)),"["+t+(e=/[eE][+-]?$/.test(e)?e.replace(/[eE][+-]?$/,""):e)+o+a}return"true"===i||"false"===i||"null"===i?"["+t+i+o+a:r.startsWith('"')?e:"["+t+'"'+r+'"'+o+a}))}function tryFixIncompleteObjectStandalone(e){if(!(e=e.trim()).startsWith("{"))return null;if("{"===e)return"{}";var t=countUnclosedBraces(e);let r=e;for(let e=0;e<t;e++)r+="}";return tryParseJson(r=fixUnquotedKeysAndValues(r))?r:null}function countUnclosedBraces(e){let t=0,r=!1,o=!1;for(let i=0;i<e.length;i++){var a=e[i];o?o=!1:"\\"===a?o=!0:'"'!==a||o?r||("{"===a?t++:"}"===a&&t--):r=!r}return t}function tryFixIncompleteObject(e){var t,r;return(e=e.trim()).startsWith("[")?0===(t=parseIncompleteObjectStructure(e)).arrayDepth&&1===t.objectDepth?tryParseJson(r=e.slice(0,-1)+"}]")?r:null:1===t.arrayDepth&&1===t.objectDepth&&":"!==e[t.lastValidChar]&&tryParseJson(r=e+"}]")?r:null:null}function parseIncompleteObjectStructure(e){let t=0,r=0,o=!1,a=!1,i=-1;for(let s=0;s<e.length;s++){var n=e[s];a?a=!1:"\\"===n?a=!0:'"'!==n||a?o||("["===n?t++:"]"===n?t--:"{"===n?r++:"}"===n&&r--,""!==n.trim()&&(i=s)):o=!o}return{arrayDepth:t,objectDepth:r,lastValidChar:i}}delegateEvents(["click"]);const _tmpl$$d=template('<div class="flex items-center justify-center p-0 m-0"><img class="w-full h-full bg-cover">'),_tmpl$2$8=template('<div class="mt-2"><div>'),_tmpl$3$4=template('<span class="prose">'),_tmpl$4$4=template("<div>"),_tmpl$5$4=template('<div class="flex flex-row justify-start mb-2 items-start host-container"><div class="flex flex-col justify-start relative">'),_tmpl$6$4=template('<details class="mb-2 px-4 py-2 ml-2 chatbot-host-bubble rounded-[6px]"><summary class="cursor-pointer"><span class="italic">Agent Messages</span></summary><br>'),_tmpl$7$1=template('<div class="flex flex-row items-start flex-wrap w-full gap-2">'),_tmpl$8$1=template('<span class="px-4 py-2 ml-2 max-w-full chatbot-host-bubble prose" data-testid="host-bubble">'),_tmpl$9$1=template('<div class="cursor-pointer">'),_tmpl$10$1=template('<div class="px-4 py-2 flex flex-row justify-start space-x-2">'),_tmpl$11$1=template('<button type="button" class="px-4 py-2 font-medium text-green-600 border border-green-600 rounded-full hover:bg-green-600 hover:text-white transition-colors duration-300 flex items-center space-x-2"> '),_tmpl$12$1=template('<button type="button" class="px-4 py-2 font-medium text-red-600 border border-red-600 rounded-full hover:bg-red-600 hover:text-white transition-colors duration-300 flex items-center space-x-2"> '),_tmpl$13$1=template("<button>"),_tmpl$14$1=template('<span class="px-2 py-[10px] font-semibold">'),_tmpl$15$1=template('<div class="text-sm text-gray-500 ml-2">'),_tmpl$16$1=template('<div class="flex justify-center pb-5"><button class="px-4 h-[45px] py-2 border border-[#3B81F6] rounded text-[#3B81F6] hover:bg-[#3B81F6] hover:text-white transition-colors duration-300 disabled:opacity-50 disabled:cursor-not-allowed">'),_tmpl$17$1=template('<span class="inline-flex items-center"><svg class="animate-spin -ml-1 mr-2 h-4 w-4" xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24"><circle class="opacity-25" cx="12" cy="12" r="10" stroke="currentColor" stroke-width="4"></circle><path class="opacity-75" fill="currentColor" d="M4 12a8 8 0 018-8V0C5.373 0 0 5.373 0 12h4zm2 5.291A7.962 7.962 0 014 12H0c0 3.042 1.135 5.824 3 7.938l3-2.647z"></path></svg>Đang kết nối...'),defaultBackgroundColor$2="#f7f8ff",defaultTextColor$3="#303235",defaultFontSize$1=16,defaultFeedbackColor="#006400",BotBubble=e=>{let t,r;const[o,a]=createSignal(!1),[i,n]=createSignal(""),[s,l]=(Marked.setOptions({isNoP:!0,sanitize:void 0===e.renderHTML||!e.renderHTML,breaks:!0}),createSignal("")),[d,m]=createSignal(""),[c,g]=createSignal(!1),u=e=>{try{if(e.startsWith("http"))return new URL(e)}catch(e){}},h=async()=>{m("THUMBS_UP");var t=(await getFeedbackByMessageId({messageId:e.message?.messageId,apiHost:e.apiHost}))?.data;t&&n(t?.content),g(!0),s()},p=async()=>{m("THUMBS_DOWN");var t=(await getFeedbackByMessageId({messageId:e.message?.messageId,apiHost:e.apiHost}))?.data;t&&n(t?.content),g(!0),s()},x=async t=>{if((t=t.trim())&&(t={chatflowid:e.chatflowid,chatId:e.chatId,messageId:e.message?.messageId,rating:d(),content:t,question:e.question||"",answer:e.message.message||""},(await sendFeedbackQuery({chatflowid:e.chatflowid,apiHost:e.apiHost,body:t,onRequest:e.onRequest})).data)){l(d()),g(!1);t=d();var r=localStorage.getItem(e.chatflowid+"_EXTERNAL");if(r)try{var o=JSON.parse(r),a=o.chatHistory||[],i=a.find((t=>t.messageId===e.message.messageId));i&&(i.rating=t,localStorage.setItem(e.chatflowid+"_EXTERNAL",JSON.stringify({...o,chatHistory:a})))}catch(t){}n(""),"function"==typeof e.setMessages&&d()&&e.setMessages((t=>t.map((t=>t.messageId===e?.message?.messageId?{...t,rating:d()}:t))))}};onMount((()=>{if(t){var o=e.message.message.replace(/<([A-Za-z0-9._%+-]+@[A-Za-z0-9.-]+\.[A-Za-z]{2,})>/g,((e,t)=>`[${t}](mailto:${t})`));if(t.innerHTML=Marked.parse(o),t.querySelectorAll("a").forEach((e=>{e.target="_blank"})),e.message.rating&&l(e.message.rating),e.fileAnnotations&&e.fileAnnotations.length)for(const r of e.fileAnnotations){var a=document.createElement("button"),i=(a.textContent=r.fileName,a.className="py-2 px-4 mb-2 justify-center font-semibold text-white focus:outline-none flex items-center disabled:opacity-50 disabled:cursor-not-allowed disabled:brightness-100 transition-all filter hover:brightness-90 active:brightness-75 file-annotation-button",a.addEventListener("click",(function(){(async t=>{try{var r=await sendFileDownloadQuery({apiHost:e.apiHost,body:{fileName:t.fileName,chatflowId:e.chatflowid,chatId:e.chatId},onRequest:e.onRequest}),o=new Blob([r.data]),a=window.URL.createObjectURL(o),i=document.createElement("a");i.href=a,i.download=t.fileName,document.body.appendChild(i),i.click(),i.remove()}catch(t){console.error("Download failed:",t)}})(r)})),document.createElement("div"));i.className="ml-2",i.innerHTML='<svg xmlns="http://www.w3.org/2000/svg" class="icon icon-tabler icon-tabler-download" width="24" height="24" viewBox="0 0 24 24" stroke-width="2" stroke="#ffffff" fill="none" stroke-linecap="round" stroke-linejoin="round"><path stroke="none" d="M0 0h24v24H0z" fill="none"/><path d="M4 17v2a2 2 0 0 0 2 2h12a2 2 0 0 0 2 -2v-2" /><path d="M7 11l5 5l5 -5" /><path d="M12 4l0 12" /></svg>',a.appendChild(i),t.appendChild(a)}}r&&e.isLoading&&(r.open=!0)})),createEffect((()=>{r&&e.isLoading?r.open=!0:r&&!e.isLoading&&(r.open=!1)}));let v=null;var S;if(e.message.sourceDocuments&&0===e.message.sourceDocuments.length&&e.message.agentReasoning&&(S=e.message.agentReasoning.reduce(((e,t)=>(t.sourceDocuments&&0<t.sourceDocuments.length&&e.push(...t.sourceDocuments.filter((e=>null!==e))),e)),[]),e.message.sourceDocuments=S),e.message?.message?.includes("assistant_phone_number"))try{var{assistant_name:f,assistant_url:b,assistant_params:A,assistant_id:_}=parseJsonMarkdown(e.message.message),y=b||e.chatwootUrl+"/widget?website_token=Xa6HmhfbU5K73ZhHnspzKhqs"||"#",T=y.includes("?")?"&":"?",P=encodeURIComponent(JSON.stringify(A));v={label:f||"Admin",url:y+T+"params="+(P||"{}"),id:_||"Xa6HmhfbU5K73ZhHnspzKhqs"},console.log("baseUrl",y,v)}catch(S){console.warn(S)}return insert(S=_tmpl$4$4(),(()=>{const o=memo((()=>!v?.label));return()=>{return o()&&[(a=_tmpl$5$4(),l=a.firstChild,a.style.setProperty("margin-right","50px"),insert(a,createComponent(Show,{get when(){return e.showAvatar},get children(){return createComponent(Avatar,{get initialAvatarSrc(){return e.avatarSrc}})}}),l),insert(l,(()=>{const t=memo((()=>!(!e.showAgentMessages||!e.message.agentReasoning)));return()=>{return t()&&((o=_tmpl$6$4()).firstChild.nextSibling,"function"==typeof(a=r)?use(a,o):r=o,insert(o,createComponent(For,{get each(){return e.message.agentReasoning},children:t=>{var r=t.messages??[];let o=t.instructions||(1<r.length?r.join("\\n"):r[0]);return 0!==r.length||t.instructions||(o="<p>Finished</p>"),createComponent(AgentReasoningBubble,{get agentName(){return t.agentName??""},agentMessage:o,get agentArtifacts(){return t.artifacts},get backgroundColor(){return e.backgroundColor},get textColor(){return e.textColor},get fontSize(){return e.fontSize},get apiHost(){return e.apiHost},get chatflowid(){return e.chatflowid},get chatId(){return e.chatId},get renderHTML(){return e.renderHTML}})}}),null),o);var o,a}})(),null),insert(l,(()=>{const t=memo((()=>!!(e.message.artifacts&&0<e.message.artifacts.length)));return()=>{return t()&&(insert(r=_tmpl$7$1(),createComponent(For,{get each(){return e.message.artifacts},children:t=>null!==t?memo((()=>{return r=t,[createComponent(Show,{get when(){return"png"===r.type||"jpeg"===r.type},get children(){const t=_tmpl$$d(),o=t.firstChild;return createRenderEffect((()=>setAttribute(o,"src","string"==typeof r.data&&r.data.startsWith("FILE-STORAGE::")?`${e.apiHost}/api/v1/get-upload-file?chatflowId=${e.chatflowid}&chatId=${e.chatId}&fileName=`+r.data.replace("FILE-STORAGE::",""):r.data))),t}}),createComponent(Show,{get when(){return"html"===r.type},get children(){const e=_tmpl$2$8(),t=e.firstChild;return createRenderEffect((()=>t.innerHTML=r.data)),e}}),createComponent(Show,{get when(){return"png"!==r.type&&"jpeg"!==r.type&&"html"!==r.type},get children(){const t=_tmpl$3$4();return t.style.setProperty("border-radius","6px"),createRenderEffect((o=>{var a=Marked.parse(r.data),i=e.backgroundColor??defaultBackgroundColor$2,n=e.textColor??defaultTextColor$3,s=e.fontSize?e.fontSize+"px":defaultFontSize$1+"px";return a!==o._v$&&(t.innerHTML=o._v$=a),i!==o._v$2&&(null!=(o._v$2=i)?t.style.setProperty("background-color",i):t.style.removeProperty("background-color")),n!==o._v$3&&(null!=(o._v$3=n)?t.style.setProperty("color",n):t.style.removeProperty("color")),s!==o._v$4&&(null!=(o._v$4=s)?t.style.setProperty("font-size",s):t.style.removeProperty("font-size")),o}),{_v$:void 0,_v$2:void 0,_v$3:void 0,_v$4:void 0}),t}})];var r})):null})),r);var r}})(),null),insert(l,(()=>{const r=memo((()=>!!e.message.message));return()=>r()&&(()=>{const r=_tmpl$8$1();return"function"==typeof t?use(t,r):t=r,r.style.setProperty("border-radius","6px"),createRenderEffect((t=>{var o=e.backgroundColor??defaultBackgroundColor$2,a=e.textColor??defaultTextColor$3,i=e.fontSize?e.fontSize+"px":defaultFontSize$1+"px";return o!==t._v$5&&(null!=(t._v$5=o)?r.style.setProperty("background-color",o):r.style.removeProperty("background-color")),a!==t._v$6&&(null!=(t._v$6=a)?r.style.setProperty("color",a):r.style.removeProperty("color")),i!==t._v$7&&(null!=(t._v$7=i)?r.style.setProperty("font-size",i):r.style.removeProperty("font-size")),t}),{_v$5:void 0,_v$6:void 0,_v$7:void 0}),r})()})(),null),insert(l,(()=>{const t=memo((()=>!(!e.checkShowCallbackBtn||!e.callBackIcon)));return()=>t()&&(()=>{const t=_tmpl$9$1();return t.$$click=()=>{var t;t=e.message.message,e.callBackFunction?.(t)},createRenderEffect((()=>t.innerHTML=e.callBackIcon)),t})()})(),null),insert(l,(()=>{const t=memo((()=>!!e.message.action));return()=>{return t()&&(insert(r=_tmpl$10$1(),createComponent(For,{get each(){return e.message.action.elements||[]},children:t=>memo((()=>{const r=memo((()=>"approve-button"===t.type));return()=>{if(r())return a=(o=_tmpl$11$1()).firstChild,o.$$click=()=>e.handleActionClick(t.label,e.message.action),insert(o,createComponent(TickIcon,{}),a),insert(o,(()=>t.label),null),o;{const r=memo((()=>"reject-button"===t.type));return()=>{return r()?(a=(o=_tmpl$12$1()).firstChild,o.$$click=()=>e.handleActionClick(t.label,e.message.action),insert(o,createComponent(XIcon,{isCurrentColor:!0}),a),insert(o,(()=>t.label),null),o):(insert(a=_tmpl$13$1(),(()=>t.label)),a);var o,a}}var o,a}})())})),r);var r}})(),null),a),(insert(l=_tmpl$4$4(),(()=>{const t=memo((()=>!(!e.message.sourceDocuments||!e.message.sourceDocuments.length)));return()=>{return t()&&[createComponent(Show,{get when(){return e.sourceDocsTitle},get children(){var t=_tmpl$14$1();return insert(t,(()=>e.sourceDocsTitle)),t}}),((r=_tmpl$4$4()).style.setProperty("display","flex"),r.style.setProperty("flex-direction","row"),r.style.setProperty("width","100%"),r.style.setProperty("flex-wrap","wrap"),insert(r,createComponent(For,{get each(){return[...(e=>{const t=[],r=[];return e.sourceDocuments.forEach((e=>{u(e.metadata.source)&&!t.includes(e.metadata.source)?(t.push(e.metadata.source),r.push(e)):u(e.metadata.source)||r.push(e)})),r})(e.message)]},children:t=>{const r=u(t.metadata.source);return createComponent(SourceBubble,{src:t,get pageContent(){return r?r.pathname:t.pageContent},get metadata(){return t.metadata},onSourceClick:()=>{r?window.open(t.metadata.source,"_blank"):e.handleSourceDocumentsClick(t)}})}})),r)];var r}})()),l),(insert(a=_tmpl$4$4(),(()=>{const t=memo((()=>!(!e.chatFeedbackStatus||!e.message.messageId)));return()=>t()&&[(()=>{const t=_tmpl$4$4();return insert(t,createComponent(ThumbsUpButton,{get feedbackColor(){return"THUMBS_UP"===s()?"#00A5F0":e.feedbackColor??defaultFeedbackColor},get rating(){return s()},onClick:h}),null),insert(t,createComponent(ThumbsDownButton,{get feedbackColor(){return"THUMBS_DOWN"===s()?"#EC808D":e.feedbackColor??defaultFeedbackColor},get rating(){return s()},onClick:p}),null),insert(t,createComponent(Show,{get when(){return e.message.dateTime},get children(){var t=_tmpl$15$1();return insert(t,(()=>{var t=e.message.dateTime,r=e?.dateTimeToggle?.date,o=e?.dateTimeToggle?.time;if(!t)return"";try{var a,i,n,s,l=new Date(t);if(isNaN(l.getTime()))return console.error("Invalid ISO date string:",t),"";let e="";return r&&([{value:a},,{value:i},,{value:n}]=new Intl.DateTimeFormat("en-US",{year:"numeric",month:"short",day:"numeric",timeZone:Intl.DateTimeFormat().resolvedOptions().timeZone}).formatToParts(l),e=a.charAt(0).toUpperCase()+a.slice(1)+` ${i}, `+n),o&&(s=new Intl.DateTimeFormat("en-US",{hour:"numeric",minute:"2-digit",hour12:!0,timeZone:Intl.DateTimeFormat().resolvedOptions().timeZone}).format(l).toLowerCase(),e=e?e+", "+s:s),e}catch(e){return console.error("Error formatting date:",e),""}})),t}}),null),createRenderEffect((()=>className(t,"flex items-center px-2 pb-2 "+(e.showAvatar?"ml-10":"")))),t})(),createComponent(Show,{get when(){return c()},get children(){return createComponent(FeedbackContentDialog,{get isOpen(){return c()},onClose:()=>g(!1),onSubmit:x,get backgroundColor(){return e.backgroundColor},get textColor(){return e.textColor},inputValue:i,setInputValue:n,get buttonFeedback(){return e.buttonFeedback},get placeholderFeedback(){return e.placeholderFeedback},get titleFeedback(){return e.titleFeedback}})}})]})()),a)];var a,l}})(),null),insert(S,(()=>{const t=memo((()=>!!Boolean(v?.label)));return()=>t()&&(()=>{const t=_tmpl$16$1(),r=t.firstChild;return r.$$click=()=>{a(!0),e.onConnectToHumanAdvisor?.(v.id,v),setTimeout((()=>{a(!1)}),1500)},insert(r,(()=>{const e=memo((()=>!!o()));return()=>e()?_tmpl$17$1():"Nhấn vào đây để kết nối đến "+v.label})()),createRenderEffect((()=>r.disabled=o())),t})()})(),null),S},_tmpl$$c=(delegateEvents(["click"]),template('<div class="flex items-center justify-center max-w-[128px] mr-[10px] p-0 m-0"><img class="w-full h-full bg-cover">')),_tmpl$2$7=template('<audio class="w-[200px] h-10 block bg-cover bg-center rounded-none text-transparent" controls>Your browser does not support the <audio> tag.<source>'),_tmpl$3$3=template('<div class="inline-flex items-center h-12 max-w-max p-2 mr-1 flex-none bg-transparent border border-gray-300 rounded-md"><span class="ml-1.5 text-inherit">'),_tmpl$4$3=template('<div class="flex justify-end mb-2 items-end guest-container"><div class="max-w-full flex flex-col justify-center items-start chatbot-guest-bubble px-4 py-2 gap-2 mr-2" data-testid="guest-bubble">'),_tmpl$5$3=template('<div class="flex flex-col items-start flex-wrap w-full gap-2">'),_tmpl$6$3=template('<span class="mr-2 whitespace-pre-wrap">'),defaultBackgroundColor$1="#3B81F6",defaultTextColor$2="#ffffff",defaultFontSize=16,GuestBubble=e=>{let t;Marked.setOptions({isNoP:!0,sanitize:void 0===e.renderHTML||!e.renderHTML}),onMount((()=>{t&&(t.innerHTML=Marked.parse(e.message.message))}));{const r=_tmpl$4$3(),o=r.firstChild;return r.style.setProperty("margin-left","50px"),o.style.setProperty("border-radius","6px"),insert(o,(()=>{const t=memo((()=>!!(e.message.fileUploads&&0<e.message.fileUploads.length)));return()=>{return t()&&(insert(r=_tmpl$5$3(),createComponent(For,{get each(){return e.message.fileUploads},children:t=>{var r,o=t;if(console.log("🚀 ~ renderFileUploads ~ item:",o),o?.mime?.startsWith("image/")){var a=`${e.apiHost}/api/v1/get-upload-file?chatflowId=${e.chatflowid}&chatId=${e.chatId}&fileName=`+o.name;let t;return t=o?.file?.file?URL.createObjectURL(o?.file?.file):o.data??a,setAttribute((a=_tmpl$$c()).firstChild,"src",t),a}if(o?.mime?.startsWith("audio/")){a=`${e.apiHost}/api/v1/get-upload-file?chatflowId=${e.chatflowid}&chatId=${e.chatId}&fileName=`+o.name;const t=o.data??a;{const e=_tmpl$2$7(),r=e.firstChild.nextSibling;return setAttribute(r,"src",t),createRenderEffect((()=>setAttribute(r,"type",o.mime))),e}}return r=(t=_tmpl$3$3()).firstChild,insert(t,createComponent(AttachmentIcon,{get color(){return e.textColor??defaultTextColor$2}}),r),insert(r,(()=>o.name)),t}})),r);var r}})(),null),insert(o,(()=>{const r=memo((()=>!!e.message.message));return()=>r()&&(()=>{const r=_tmpl$6$3();return"function"==typeof t?use(t,r):t=r,createRenderEffect((()=>null!=(e.fontSize?e.fontSize+"px":defaultFontSize+"px")?r.style.setProperty("font-size",e.fontSize?e.fontSize+"px":defaultFontSize+"px"):r.style.removeProperty("font-size"))),r})()})(),null),insert(r,createComponent(Show,{get when(){return e.showAvatar},get children(){return createComponent(Avatar,{get initialAvatarSrc(){return e.avatarSrc}})}}),null),createRenderEffect((t=>{var r=e.backgroundColor??defaultBackgroundColor$1,a=e.textColor??defaultTextColor$2;return r!==t._v$&&(null!=(t._v$=r)?o.style.setProperty("background-color",r):o.style.removeProperty("background-color")),a!==t._v$2&&(null!=(t._v$2=a)?o.style.setProperty("color",a):o.style.removeProperty("color")),t}),{_v$:void 0,_v$2:void 0}),r}},_tmpl$$b=template('<div class="flex justify-start mb-2 items-start animate-fade-in host-container"><span class="px-4 py-4 ml-2 whitespace-pre-wrap max-w-full chatbot-host-bubble relative" data-testid="host-bubble">'),_tmpl$2$6=template('<span class="absolute -top-4 left-2 text-xs font-medium opacity-70 pointer-events-none">s'),LoadingBubble=e=>createComponent(Show,{get when(){return!e.hideTimer},get children(){var t=_tmpl$$b(),r=t.firstChild;return insert(r,(()=>{const t=memo((()=>!!(e.streamingStartTime&&e.elapsedStreamingTime&&0<e.elapsedStreamingTime)));return()=>{return t()&&(insert(r=_tmpl$2$6(),(()=>e.elapsedStreamingTime.toFixed(1)),r.firstChild),r);var r}})(),null),insert(r,createComponent(TypingBubble,{}),null),t}}),_tmpl$$a=template('<div data-modal-target="defaultModal" data-modal-toggle="defaultModal" class="flex justify-start items-start animate-fade-in host-container hover:brightness-90 active:brightness-75"><span class="px-2 py-1 ml-1 whitespace-pre-wrap max-w-full chatbot-host-bubble" data-testid="host-bubble">'),StarterPromptBubble=e=>{{const t=_tmpl$$a(),r=t.firstChild;return t.$$click=()=>e.onPromptClick?.(),r.style.setProperty("width","max-content"),r.style.setProperty("border-radius","15px"),r.style.setProperty("cursor","pointer"),insert(r,(()=>e.prompt)),createRenderEffect((()=>null!=(e.starterPromptFontSize?e.starterPromptFontSize+"px":"15px")?r.style.setProperty("font-size",e.starterPromptFontSize?e.starterPromptFontSize+"px":"15px"):r.style.removeProperty("font-size"))),t}},_tmpl$$9=(delegateEvents(["click"]),template('<button type="submit">')),CancelButton=e=>{return spread$1(t=_tmpl$$9(),mergeProps({get disabled(){return e.isDisabled||e.isLoading}},e,{get class(){return"py-2 px-4 justify-center font-semibold focus:outline-none flex items-center disabled:opacity-50 disabled:cursor-not-allowed disabled:brightness-100 transition-all filter hover:brightness-90 active:brightness-75 chatbot-button "+e.class},style:{background:"transparent",border:"none"}}),!1,!0),insert(t,createComponent(XIcon,{get color(){return e.buttonColor}})),t;var t},_tmpl$$8=template('<div id="preview-img-modal" style="position:fixed;top:0;left:0;width:100vw;height:100vh;background:rgba(0,0,0,0.8);display:flex;justify-content:center;align-items:center;z-index:9999999999999999999;">'),PreviewImage=e=>createComponent(Portal,{get children(){return createComponent(Show,{get when(){return e.previewImg()},children:t=>{return(r=_tmpl$$8()).$$click=()=>{e.setPreviewImg(null)},insert(r,t),r;var r}})}}),_tmpl$$7=(delegateEvents(["click"]),template('<textarea id="#short-text-input" class="flex-1 w-full outline-none border-none p-0 disabled:opacity-50 disabled:cursor-not-allowed disabled:brightness-100 focus:outline-none focus:ring-0 auto-expanding-textarea text-[16px] max-sm:text-[14px]">')),ShortTextInput=e=>{const[t,r]=splitProps(e,["ref","onInput","isWelcomeScreen","onFocus","onBlur"]),[o,a]=createSignal(0),[i,n]=createSignal(!1),s=()=>1.375*(e.fontSize||16),l=()=>(s(),22),d=()=>3*s(),m=e=>{if(e&&e.style){var t=e.style.minHeight,r=e.style.maxHeight,o=(e.style.height="auto",e.style.minHeight="auto",e.style.maxHeight="none",e.scrollHeight);t=(e.style.minHeight=t,e.style.maxHeight=r,d());let c,g=!1;r=!e.value||e.value.length<=0;var i=e.value.includes("\n"),l=s(),m=Math.ceil(o/l);r||!i&&m<=1?c=l:o<=t?c=o:(c=t,g=!0),a(c),n(g);try{e.style.height=c+"px",e.style.overflowY=g?"auto":"hidden"}catch(e){console.error("Error setting element style:",e)}}};return createEffect((()=>{if(e.ref){const t=e.ref;t&&t.style&&setTimeout((()=>{m(t)}),0)}})),createEffect((()=>{var t=e.ref,o=r.value;t&&void 0!==o&&(!o||"string"==typeof o&&o.length<=0)&&(a(22),n(!1))})),(c=_tmpl$$7()).addEventListener("blur",(()=>t.onBlur?.())),c.addEventListener("focus",(()=>t.onFocus?.())),c.$$keydown=e=>{var r=e.currentTarget;"Enter"===e.key&&e.shiftKey&&r&&r.style&&(e.preventDefault(),e.stopPropagation(),r.value+="\n",m(r),t.onInput(r.value))},c.$$input=r=>{r=r.currentTarget,e.ref&&r&&r.style&&(m(r),t.onInput(r.value))},"function"==typeof(g=e.ref)?use(g,c):e.ref=c,spread$1(c,mergeProps({get disabled(){return e.disabled},get style(){return{"font-family":"Nunito","line-height":s()+"px","min-height":l()+"px","max-height":d()+"px",height:0<o()?o()+"px":l()+"px",resize:"none","overflow-y":i()?"auto":"hidden",transition:"height 0.15s ease-out","scrollbar-width":"thin","scrollbar-color":"#d1d5db transparent"}}},r),!1,!1),c;var c,g},_tmpl$$6=(delegateEvents(["input","keydown"]),template('<button type="submit">')),_tmpl$2$5=template('<svg><circle class="opacity-25" cx="12" cy="12" r="10" stroke="currentColor" stroke-width="4"></circle><path class="opacity-75" fill="currentColor" d="M4 12a8 8 0 018-8V0C5.373 0 0 5.373 0 12h4zm2 5.291A7.962 7.962 0 014 12H0c0 3.042 1.135 5.824 3 7.938l3-2.647z">'),ImageUploadButton=e=>{return spread$1(t=_tmpl$$6(),mergeProps({get disabled(){return e.isDisabled||e.isLoading}},e,{get class(){return"justify-center font-semibold focus:outline-none flex items-center disabled:opacity-50 disabled:cursor-not-allowed disabled:brightness-100 transition-all filter hover:brightness-90 active:brightness-75 chatbot-button "+e.class},style:{background:"transparent",border:"none"}}),!1,!0),insert(t,createComponent(Show,{get when(){return!e.isLoading},get fallback(){return createComponent(Spinner$1,{class:"text-white"})},get children(){return createComponent(AddImageIcon,{get color(){return e.buttonColor},class:"w-[19px] h-[19px]"})}})),t;var t},Spinner$1=e=>{return spread$1(t=_tmpl$2$5(),mergeProps(e,{get class(){return"animate-spin -ml-1 mr-3 h-5 w-5 "+e.class},xmlns:"http://www.w3.org/2000/svg",fill:"none",viewBox:"0 0 24 24","data-testid":"loading-spinner"}),!0,!0),t;var t},_tmpl$$5=template('<button type="submit">'),_tmpl$2$4=template('<svg><circle class="opacity-25" cx="12" cy="12" r="10" stroke="currentColor" stroke-width="4"></circle><path class="opacity-75" fill="currentColor" d="M4 12a8 8 0 018-8V0C5.373 0 0 5.373 0 12h4zm2 5.291A7.962 7.962 0 014 12H0c0 3.042 1.135 5.824 3 7.938l3-2.647z">'),AttachmentUploadButton=e=>{return spread$1(t=_tmpl$$5(),mergeProps({get disabled(){return e.isDisabled||e.isLoading}},e,{get class(){return"justify-center font-semibold focus:outline-none flex items-center disabled:opacity-50 disabled:cursor-not-allowed disabled:brightness-100 transition-all filter hover:brightness-90 active:brightness-75 chatbot-button "+e.class},style:{background:"transparent",border:"none"}}),!1,!0),insert(t,createComponent(Show,{get when(){return!e.isLoading},get fallback(){return createComponent(Spinner,{class:"text-white"})},get children(){return createComponent(AttachmentIcon,{get color(){return e.buttonColor},class:"w-[19px] h-[19px]"})}})),t;var t},Spinner=e=>{return spread$1(t=_tmpl$2$4(),mergeProps(e,{get class(){return"animate-spin -ml-1 mr-3 h-5 w-5 "+e.class},xmlns:"http://www.w3.org/2000/svg",fill:"none",viewBox:"0 0 24 24","data-testid":"loading-spinner"}),!0,!0),t;var t};class ChatInputHistory{history=[];currentIndex=-1;tempInput="";constructor(e=(()=>10),t=localStorage){this.getMaxHistory=e,this.storage=t,this.maxHistory=this.getMaxHistory()??10,this.loadHistory()}getHistory(){return this.history}getCurrentIndex(){return this.currentIndex}addToHistory(e){e.trim()&&(this.history[0]!==e&&(this.history.unshift(e),this.history.length>this.maxHistory)&&this.history.pop(),this.currentIndex=-1,this.saveHistory())}getPreviousInput(e){return-1===this.currentIndex&&(this.tempInput=e),this.currentIndex<this.history.length-1?(this.currentIndex++,this.history[this.currentIndex]):this.history[this.currentIndex]||this.tempInput}getNextInput(){return-1<this.currentIndex&&(this.currentIndex--,-1!==this.currentIndex)?this.history[this.currentIndex]:this.tempInput}saveHistory(){try{this.storage.setItem("chatInputHistory",JSON.stringify(this.history))}catch(e){console.warn("Failed to save chat history to localStorage:",e instanceof Error?e.message:e)}}loadHistory(){try{var e,t=this.storage.getItem("chatInputHistory");t&&(e=JSON.parse(t),this.history=Array.isArray(e)?e:[])}catch(e){console.warn("Failed to load chat history from localStorage:",e instanceof Error?e.message:e)}}}const _tmpl$$4=template('<div class="w-full px-4 pt-4 pb-1 text-red-500 text-sm" data-testid="warning-message">'),_tmpl$2$3=template("<span>Send"),_tmpl$3$2=template('<div class="w-full h-auto flex flex-col items-end justify-between chatbot-input !rounded-[12px]" data-testid="input"><div class="w-full bg-[#F9F9F9] border border-[#E4E4E4] transition-all duration-150 ease-out rounded-[12px]"><div class="relative flex flex-col p-4 pb-[10px] rounded-[12px]"><div class="flex w-full flex-1}"></div><label for="#short-text-input" class="w-full flex justify-between items-center cursor-text"><div class="flex items-center gap-2">'),_tmpl$4$2=template("<span>Image Upload"),_tmpl$5$2=template('<div><input multiple type="file">'),_tmpl$6$2=template("<span>File Upload"),defaultTextColor$1="#303235",defaultSendSound="https://cdn.jsdelivr.net/gh/FlowiseAI/FlowiseChatEmbed@latest/src/assets/send_message.mp3",TextInput=e=>{const[t,r]=createSignal(""),[o]=createSignal(new ChatInputHistory((()=>e.maxHistorySize||10))),[,a]=createSignal(!1),[,i]=createSignal([]),[n,s]=createSignal(e.inputValue),[l,d]=createSignal(!1);let m,c,g,u;const h=lodashExports.debounce((async t=>{e.onInputChange(t)}),300),p=async t=>{s(t),t.length;var r=t.trim();e.isUseFAQ&&""===r&&(i([]),a(!1)),h(t)},x=(createEffect((()=>{if(e.isUseFAQ){const t=lodashExports.debounce((async t=>{if(l())d(!1);else if(""===t.trim())i([]),a(!1);else if(e?.chatflowid&&e?.apiHost)try{var r,o=await searchFaqsQuery({apiHost:e.apiHost,chatflowid:e.chatflowid,query:t});""===n().trim()?(i([]),a(!1)):(r=o.data.hits,i(r),a(0<r.length))}catch(t){console.error("FAQ search error:",t),i([]),a(!1)}}),300);return t(e.inputValue),()=>{t.cancel()}}})),()=>""===t()&&m?.reportValidity()),v=async(t=null)=>{var s,l;x()&&n().trim()&&(h.cancel(),s=n(),e.isUseFAQ&&!t&&(d(!0),a(!1),i([]),r(""),e.setDisableInput(!0),0<(l=await vectorSearchFaqsQuery({chatflowid:e.chatflowid,apiHost:e.apiHost,query:s}))?.data?.hits?.length)&&(t=l?.data?.hits[0].id),e.onInputChange(s),e.enableInputHistory&&o().addToHistory(s),e.onSubmit(s,void 0,t),e.sendMessageSound&&u&&u.play(),a(!1),i([]))},S=()=>{g&&g.click()},f=()=>{c&&c.click()},b=t=>{var r;"Enter"!==t.key||t.shiftKey?e.enableInputHistory&&("ArrowUp"===t.key?(t.preventDefault(),r=o().getPreviousInput(e.inputValue),e.onInputChange(r)):"ArrowDown"===t.key&&(t.preventDefault(),r=o().getNextInput(),e.onInputChange(r))):e.isLoading||t.isComposing||229===t.keyCode||(t.preventDefault(),v())},A=e=>{},_=(createEffect((()=>{s(e.inputValue);var t=e.inputValue.trim();e.isUseFAQ&&""===t&&(i([]),a(!1)),e.maxChars&&e.inputValue.length<=e.maxChars&&r("")})),onMount((()=>(e.sendMessageSound&&(u=e.sendSoundLocation?new Audio(e.sendSoundLocation):new Audio(defaultSendSound)),document.addEventListener("mousedown",A),()=>{h.cancel(),document.removeEventListener("mousedown",A)}))),t=>{var o=t.target?.files?.[0];if(o){if(!["text/csv","application/vnd.openxmlformats-officedocument.spreadsheetml.sheet","application/pdf","text/plain","image/jpeg","image/png","image/gif","application/vnd.openxmlformats-officedocument.wordprocessingml.document","application/vnd.ms-excel","image/webp"].includes(o.type))return void r("Loại tệp không được hỗ trợ. Vui lòng tải lên tệp CSV, XLSX, PDF, TXT, DOCX, XLS, hoặc hình ảnh (JPEG, PNG, GIF, WEBP).");if(10485760<o.size)return void r("Tệp quá lớn. Vui lòng tải lên tệp nhỏ hơn 10MB.");r(""),e.handleFileChange(t)}t.target&&(t.target.value="")});{const r=_tmpl$3$2(),o=r.firstChild,a=o.firstChild.firstChild,i=a.nextSibling,s=i.firstChild;return r.$$keydown=b,r.style.setProperty("margin","auto"),r.style.setProperty("position","relative"),insert(r,createComponent(Show,{get when(){return""!==t()},get children(){var e=_tmpl$$4();return insert(e,t),e}}),o),insert(a,createComponent(ShortTextInput,{ref(e){"function"==typeof m?m(e):m=e},onInput:p,get value(){return e.inputValue},get fontSize(){return e.fontSize},get disabled(){return e.disabled},get placeholder(){return e.placeholder??"Nhập nội dung cần giải đáp"},get isWelcomeScreen(){return e.isWelcomeScreen},get onFocus(){return e.onFocus},get onBlur(){return e.onBlur}})),insert(s,(()=>{const t=memo((()=>!!e.uploadsConfig?.isImageUploadAllowed));return()=>{if(t()){const t=_tmpl$5$2(),r=t.firstChild;insert(t,createComponent(ImageUploadButton,{get buttonColor(){return e.sendButtonColor},type:"button",class:"m-0 flex items-center justify-center",get isDisabled(){return e.disabled},"on:click":S,get children(){var e=_tmpl$4$2();return e.style.setProperty("font-family","Nunito, sans-serif"),e}}),r),r.addEventListener("change",_);return"function"==typeof g?use(g,r):g=r,r.style.setProperty("display","none"),createRenderEffect((()=>setAttribute(r,"accept",e.uploadsConfig?.imgUploadSizeAndTypes?.length?e.uploadsConfig?.imgUploadSizeAndTypes.map((e=>e.fileTypes)).join(","):"*"))),t}return null}})(),null),insert(s,(()=>{const t=memo((()=>!(!e.uploadsConfig?.isRAGFileUploadAllowed&&!e.isFullFileUpload)));return()=>{if(t()){const t=_tmpl$5$2(),r=t.firstChild;insert(t,createComponent(AttachmentUploadButton,{get buttonColor(){return e.sendButtonColor},type:"button",class:"flex items-center justify-center",get isDisabled(){return e.disabled},"on:click":f,get children(){var e=_tmpl$6$2();return e.style.setProperty("font-family","Nunito, sans-serif"),e}}),r),r.addEventListener("change",_);return"function"==typeof c?use(c,r):c=r,r.style.setProperty("display","none"),createRenderEffect((()=>{return setAttribute(r,"accept",e.isFullFileUpload||!e.uploadsConfig?.fileUploadSizeAndTypes?.length||(t=e.uploadsConfig?.fileUploadSizeAndTypes.map((e=>e.fileTypes)).join(",")).includes("*")?"*":t);var t})),t}return null}})(),null),insert(i,createComponent(SendButton,{get sendButtonColor(){return e.sendButtonColor},type:"button",get isDisabled(){return e.isLoading||!n().trim()},class:"flex items-center justify-center","on:click":e=>{e.preventDefault(),e.stopPropagation(),v()},get children(){var e=_tmpl$2$3();return e.style.setProperty("font-family","Nunito, sans-serif"),e}}),null),createRenderEffect((()=>null!=(e.textColor??defaultTextColor$1)?r.style.setProperty("color",e.textColor??defaultTextColor$1):r.style.removeProperty("color"))),r}},_tmpl$$3=(delegateEvents(["keydown"]),template('<button class="group w-12 h-12 flex items-center justify-center relative rounded-[10px] overflow-hidden transition-colors duration-200"><img class="w-full h-full bg-cover"><span class="absolute hidden group-hover:flex items-center justify-center z-10 w-full h-full top-0 left-0 bg-black/10 rounded-[10px] transition-colors duration-200">')),_tmpl$2$2=template('<div class="inline-flex basis-auto flex-grow-0 flex-shrink-0 justify-between items-center rounded-xl h-12 p-1 mr-1 bg-gray-500"><audio class="block bg-cover bg-center w-full h-full rounded-none text-transparent" controls></audio><button class="w-7 h-7 flex items-center justify-center bg-transparent p-1">'),_tmpl$3$1=template('<div class="w-full flex flex-row flex-wrap px-5 py-[10px] gap-2">'),_tmpl$4$1=template('<div class="flex items-center gap-1 px-5"><span class="text-sm text-gray-700">Try these prompts'),_tmpl$5$1=template('<div class="w-full flex items-center justify-start gap-2 px-5 pt-2 border-t border-[#eeeeee]">'),_tmpl$6$1=template('<button class="fixed bottom-28 left-1/2 transform -translate-x-1/2 bg-white border border-gray-300 shadow-lg p-2 rounded-full flex items-center justify-center transition-opacity duration-300 hover:bg-gray-200 scale-90" aria-label="Scroll to bottom"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="black" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><path d="M12 5v14M19 12l-7 7-7-7">'),_tmpl$7=template('<div><div class="flex flex-col w-full h-full justify-start z-0"><div class="overflow-y-auto flex flex-col flex-grow min-w-full w-full px-3 mt-[50px] pt-[30px] relative chatbot-chat-view scroll-smooth scrollbar-thin scrollbar-thumb-gray-500 scrollbar-track-gray-200"></div><div class="w-full px-5 pt-2 pb-1">'),_tmpl$8=template('<div class="absolute top-0 left-0 bottom-0 right-0 w-full h-full z-50">'),_tmpl$9=template('<div class="absolute top-0 left-0 bottom-0 right-0 flex flex-col items-center justify-center bg-black/60 backdrop-blur-sm text-white z-40 gap-2 border-2 border-dashed"><h2 class="text-xl font-semibold">Drop here to upload'),_tmpl$10=template("<span>"),_tmpl$11=template("<span>Max Allowed Size: <!> MB"),_tmpl$12=template("<div>"),_tmpl$13=template('<span class="px-3 whitespace-pre-wrap font-semibold max-w-full">'),_tmpl$14=template("<span>Full Screen"),_tmpl$15=template("<span>Clear"),_tmpl$16=template('<div class="flex flex-row items-center w-full h-[50px] absolute top-0 left-0 z-10"><div></div><div class="flex flex-row items-center">'),_tmpl$17=template('<div class="flex flex-wrap gap-2 mt-2 ml-[24px]">'),_tmpl$18=template('<button class="bg-gray-100 hover:bg-gray-200 text-sm text-gray-800 py-2 px-4 rounded-full transition-colors duration-200">'),_tmpl$19=template('<div class="w-full flex items-center justify-between p-4 border border-[#eeeeee]"><div class="w-full flex items-center justify-between gap-3"><span class="text-base">To record audio, use modern browsers like Chrome or Firefox that support audio recording.</span><button class="py-2 px-4 justify-center flex items-center bg-red-500 text-white rounded-md" type="button">Okay'),_tmpl$20=template("<span>Send"),_tmpl$21=template('<div class="h-[58px] flex items-center justify-between chatbot-input border border-[#eeeeee]" data-testid="input"><div class="flex items-center gap-3 px-4 py-2"><span></span><span></span></div><div class="flex items-center">'),_tmpl$22=template('<span class="ml-1.5">Sending...'),defaultWelcomeMessage="Xin chào, tôi là Trợ lý ảo của Kyocera Việt Nam. \n Tôi có thể giúp được gì cho bạn?",defaultBackgroundColor="#ffffff",defaultTextColor="#303235",getCachedChatbotConfig=e=>{try{var t=localStorage.getItem("chatbotConfig_"+e);return t?JSON.parse(t):null}catch(e){return console.warn("Failed to parse cached chatbot config:",e),null}},setCachedChatbotConfig=(e,t)=>{try{localStorage.setItem("chatbotConfig_"+e,JSON.stringify(t))}catch(e){console.warn("Failed to cache chatbot config:",e)}},getWelcomeMessage=e=>e.welcomeMessage||((e=getCachedChatbotConfig(e.chatflowid))?.welcomeMessage?e.welcomeMessage:""),Bot=e=>{const t=mergeProps({showTitle:!0},e);let r,o,a;const[i,n]=createSignal(!1),[s,l]=createSignal(""),[d,m]=createSignal(!1),[c,g]=createSignal(!1),[u,h]=createSignal({}),[p,x]=createSignal(""),[v,S]=createSignal(!1),[f,b]=createSignal(""),[A,_]=createSignal(!1),[y,T]=createSignal({id:"",username:"",email:""}),[P,$]=createSignal(null),[M,w]=createSignal(0);let C;const[E,L]=createSignal(!1),[O,I]=createSignal([{message:getWelcomeMessage(t),type:"apiMessage"},...t.secondMessage?[{message:t.secondMessage,type:"apiMessage"}]:[]],{equals:!1}),[G,N]=createSignal(!1),[B,k]=createSignal(""),[,R]=createSignal(!1),[F,D]=createSignal([],{equals:!1}),[U,X]=createSignal(!1),[V,H]=createSignal(!1),[W,K]=createSignal(),[Z,z]=createSignal(),[Q,j]=createSignal(!1),[Y,J]=createSignal(""),[q,ee]=createSignal(!1),[te,re]=createSignal(!1),[oe,ae]=createSignal(""),[ie,ne]=createSignal(""),[se,le]=createSignal([]),[de,me]=createSignal(null),[ce,ge]=createSignal([]),[ue,he]=createSignal("00:00"),[pe,xe]=createSignal(!1),[ve,Se]=createSignal(!1),[fe,be]=createSignal(!1),[Ae,_e]=createSignal(!1),[ye,Te]=createSignal([]),[Pe,$e]=createSignal(!1),[Me,we]=createSignal([]),Ce=(createMemo((()=>{var e=t.chatflowConfig?.vars?.customerId;k(e?e.toString()+"+"+v4():v4())})),onMount((()=>{if(e?.observersConfig){const{observeUserInput:t,observeLoading:r,observeMessages:o}=e.observersConfig;"function"==typeof t&&createMemo((()=>{t(s())})),"function"==typeof r&&createMemo((()=>{r(d())})),"function"==typeof o&&createMemo((()=>{o(O())}))}})),createEffect((()=>{O()?.forEach((e=>{e.agentReasoning?.forEach((e=>{var t,r,o,a;e?.state&&(({name:e,phone_number:t,email:r,id:o}=e.state),a={},e&&"None"!==e&&(a.name=e),t&&"None"!==t&&(a.phoneNumber=t),r&&"None"!==r&&(a.email=r),o&&"None"!==o&&(a.id=o),0<Object.keys(a).length)&&(localStorage.setItem("chatwoot:userInfo",JSON.stringify(a)),localStorage.setItem("cmcts:userInfo",JSON.stringify(a)))}))}))})),()=>{setTimeout((()=>{r?.scrollTo(0,r.scrollHeight)}),50)}),Ee=()=>{const e=Date.now();$(e),w(0),C=setInterval((()=>{var t=(Date.now()-e)/1e3;w(t)}),100)},Le=()=>{C&&(clearInterval(C),C=null),$(null),w(0)},Oe=e=>{"IMG"===e.target.tagName&&me(e.target.cloneNode(!0))},Ie=e=>{e=e.map((e=>{var t;return e.fileUploads?(t=e?.fileUploads.map((e=>({type:e.type,name:e.name,mime:e.mime}))),{...e,fileUploads:t}):e})),setLocalStorageChatflow(t.chatflowid,B(),{chatHistory:e})};let Ge;const Ne=()=>{if(t.textInput?.receiveMessageSound){let e="https://cdn.jsdelivr.net/gh/FlowiseAI/FlowiseChatEmbed@latest/src/assets/receive_message.mp3";t.textInput?.receiveSoundLocation&&(e=t.textInput?.receiveSoundLocation),(Ge=new Audio(e)).play()}};let Be=!1;const ke=(e="Oops! There seems to be an error. Please try again.")=>{I((r=>(r=[...r,{message:t.errorMessage||e,type:"apiMessage"}],Ie(r),r))),m(!1),re(!1),l(""),we([]),Ce()},Re=()=>{ee(!1),setCookie("chatbotDisclaimer","true",365)},Fe=e=>{Ke(e)},De=(e,t)=>{e.chatId&&k(e.chatId),e.chatMessageId&&I((t=>("apiMessage"===(t=[...lodashExports.cloneDeep(t)])[t.length-1].type&&(t[t.length-1].messageId=e.chatMessageId),Ie(t),t))),""===t&&e.question&&I((t=>("apiMessage"!==(t=[...lodashExports.cloneDeep(t)])[t.length-2].type&&(t[t.length-2].message=e.question,Ie(t)),t))),e.followUpPrompts&&(I((t=>("userMessage"!==(t=[...lodashExports.cloneDeep(t)])[t.length-1].type&&(t[t.length-1].followUpPrompts=e.followUpPrompts,Ie(t)),t))),Te(JSON.parse(e.followUpPrompts)))},Ue=async(e,o)=>{const i=o.chatId,n=o.question;o.streaming=!0;let s=0;fetchEventSource(t.apiHost+"/api/v1/prediction/"+e,{openWhenHidden:!0,method:"POST",body:JSON.stringify(o),headers:{"Content-Type":"application/json",Authorization:"Bearer "+getUserFromLocalStorage()},async onopen(e){var t;if(E()||x("Đang xử lý..."),!e.ok||!e.headers.get("content-type")?.startsWith(EventStreamContentType))throw 429===e.status?(t=await e.text()??"Too many requests. Please try again later.",ke(t),new Error(t)):403===e.status?(t=await e.text()??"Unauthorized",ke(t),new Error(t)):401===e.status?(t=await e.text()??"Unauthenticated",ke(t),new Error(t)):new Error},async onmessage(o){var s,d,m,c,g,u,h,p=JSON.parse(o.data);switch(te()&&"start"!==p.event&&(x(""),re(!1),l(""),we([])),p.event){case"start":I((e=>[...e,{message:"",type:"apiMessage"}])),Ce(),_(!1);break;case"recheck":x("Rechecking...");break;case"token":a=r?.scrollHeight||0,clearInterval(void 0),x(""),h=p.data,I((e=>("userMessage"!==(e=[...lodashExports.cloneDeep(e)])[e.length-1].type&&h&&(e[e.length-1].message+=h,e[e.length-1].rating=void 0,e[e.length-1].dateTime=(new Date).toISOString(),Be||(Ne(),Be=!0),Ie(e)),e))),A()||setTimeout((()=>{var e=r?.scrollHeight||0;e>a&&(e-=a,r?.scrollBy({top:e,behavior:"smooth"}))}));break;case"sourceDocuments":u=p.data,I((e=>{var t=e.map(((t,r)=>r===e.length-1?{...t,sourceDocuments:u}:t));return Ie(t),[...t]}));break;case"usedTools":g=p.data,I((e=>("userMessage"!==(e=[...lodashExports.cloneDeep(e)])[e.length-1].type&&(e[e.length-1].usedTools=g,Ie(e)),e)));break;case"fileAnnotations":c=p.data,I((e=>("userMessage"!==(e=[...lodashExports.cloneDeep(e)])[e.length-1].type&&(e[e.length-1].fileAnnotations=c,Ie(e)),e)));break;case"agentReasoning":m=p.data,I((e=>{var t=e.map(((t,r)=>r===e.length-1?{...t,agentReasoning:"string"==typeof m?JSON.parse(m):m}:t));return Ie(t),[...t]}));break;case"action":d=p.data,I((e=>{var t=e.map(((t,r)=>r===e.length-1?{...t,action:"string"==typeof d?JSON.parse(d):d}:t));return Ie(t),[...t]}));break;case"artifacts":s=p.data,I((e=>("userMessage"!==(e=[...lodashExports.cloneDeep(e)])[e.length-1].type&&(e[e.length-1].artifacts=s,Ie(e)),e)));break;case"metadata":De(p.data,n);break;case"error":p.data,I((e=>((e=[...lodashExports.cloneDeep(e)]).push({message:t.errorMessage||"Đã xảy ra lỗi, vui lòng thử lại sau.",type:"apiMessage"}),Ie(e),e)));break;case"abort":R(!1),I((e=>{var t;return"userMessage"!==(e=[...lodashExports.cloneDeep(e)])[e.length-1].type&&(t=e[e.length-1].agentReasoning)&&0<t.length&&(e[e.length-1].agentReasoning=t.filter((e=>!e.nextAgent))),e})),Xe();break;case"end":setLocalStorageChatflow(e,i),Xe()}},async onclose(){Xe(),x(""),Le()},onerror(e){if(console.error("EventSource Error: ",e),Xe(),3<=++s)throw e;return 1e3}})},Xe=()=>{m(!1),re(!1),we([]),Be=!1,Le()};(async()=>{try{if(await checkAndInitializeAuth(t.apiHost,t.onRequest,t.isFullPage)){var e=localStorage?.getItem("dataLogin");if(e)try{var r=JSON?.parse(e);T(r?.user),console.log("Authentication initialized successfully, user data loaded")}catch(e){console.error("Failed to parse dataLogin after successful authentication",e)}}else console.log("Authentication initialization failed or user not logged in")}catch(e){console.error("Error during authentication initialization",e)}})();const[Ve,He]=createSignal(!1),We=(createEffect((()=>{Ve()&&((async()=>{try{if(window.location.host.includes(".vib")&&!t.isFullPage)if(console.log("refreshAuthenticationForPopup: Refreshing user info for popup mode"),await reloadAndMapUserInfo(t.apiHost,t.onRequest,t.isFullPage)){var e=localStorage?.getItem("dataLogin");if(e)try{var r=JSON?.parse(e);T(r?.user),console.log("refreshAuthenticationForPopup: User data refreshed successfully")}catch(e){console.error("refreshAuthenticationForPopup: Failed to parse dataLogin after refresh",e)}}else console.log("refreshAuthenticationForPopup: Authentication refresh failed"),T({id:"",username:"",email:""})}catch(e){console.error("refreshAuthenticationForPopup: Error during authentication refresh",e)}})(),He(!1))})),"undefined"!=typeof window&&(window.refreshChatbotAuth=()=>{He(!0)}),async e=>{await Ke(e)}),Ke=async(e,r,o)=>{if(""===e.trim()){var a=0<ce().filter((e=>!e.mime.startsWith("image")&&"audio"!==e.type)).length;if(!ce().length||ce().length&&a)return}if((()=>{try{return!(window.location.href.includes("/login")||window.location.host.includes(".vib")&&!t.isFullPage&&!localStorage?.getItem("dataLogin")&&(console.warn("validateUserAuthentication: dataLogin not found in localStorage"),1))}catch(e){return console.error("validateUserAuthentication: Unexpected error during validation",e),!1}})()){m(!0),re(!0),Ce();let n=ce().map((e=>({data:e.data,type:e.type,name:e.name,mime:e.mime})));try{n=await(async e=>{if(Me().length){var r=Me().filter((e=>"file:full"===e.type));if(0<r.length){var o=new FormData;for(const e of r)o.append("files",e.file);if(o.append("chatId",B()),!(r=await createAttachmentWithFormData({chatflowid:t.chatflowid,apiHost:t.apiHost,formData:o})).data)throw new Error("Unable to upload documents");for(const t of r.data){var a=t.content;const r=t.name;var i=e.findIndex((e=>e.name===r));-1!==i&&(e[i]={...e[i],data:a,name:r,type:"file:full",file:Me()[i]})}}if(W()?.isRAGFileUploadAllowed&&(r=Me().filter((e=>"file:rag"===e.type)),0<r.length)){var n=new FormData;for(const e of r)n.append("files",e.file);if(n.append("chatId",B()),!(await upsertVectorStoreWithFormData({chatflowid:t.chatflowid,apiHost:t.apiHost,formData:n})).data)throw new Error("Unable to upload documents");await new Promise((e=>setTimeout(e,2500))),e=e.map((e=>({...e,type:"file:rag"})))}}return e})(n)}catch(e){return void ke("Unable to upload documents")}ce().forEach((e=>URL.revokeObjectURL(e.preview))),ge([]),I((t=>(t=[...t,{message:e,type:"userMessage",fileUploads:n}],Ie(t),t)));let s=localStorage.getItem("cmcts:deviceId");if(s||(s=v4(),localStorage.setItem("cmcts:deviceId",s)),a={question:e,faqId:o,chatId:B(),useId:y()?.id,stored:{deviceId:s,userInfo:(()=>{var e=localStorage.getItem("cmcts:userInfo");if(e)try{return JSON.parse(e)}catch(e){console.warn("Failed to parse userInfo from localStorage")}})(),chatwoot:{conversation_id:localStorage.getItem(`chatwoot:${t.chatflowid}:conversation_id`)}}},n&&0<n.length)a.uploads=n;else if(!n?.length&&ie()&&oe()){let e=t.filePath?.split("/").pop()||"";e&&!e.endsWith(".txt")&&(e+=".txt"),a.uploads=[{data:ie(),type:"file:full",name:e,mime:"text/plain"},{data:oe(),type:"file:full",name:e,mime:"text/plain"}]}if(t?.externalData&&(a.uploads=[{data:t?.externalData,type:"file:full",name:"external_data.txt",mime:"text/plain"}]),t.chatflowConfig&&(a.overrideConfig=t.chatflowConfig),Y()&&(a.leadEmail=Y()),r&&(a.action=r),navigator.onLine)if(!G()||o&&JSON.stringify(o)!==JSON.stringify({isTrusted:!0}))try{var i=await sendMessageQuery({chatflowid:t.chatflowid,apiHost:t.apiHost,body:a,onRequest:t.onRequest});if(i.data){const t=i.data;let r="";r=t.text||(t.json?JSON.stringify(t.json,null,2):JSON.stringify(t,null,2)),t?.chatId&&k(t.chatId),Ne(),I((e=>{e=[...lodashExports.cloneDeep(e)];var o={message:r,id:t?.chatMessageId,sourceDocuments:t?.sourceDocuments,usedTools:t?.usedTools,fileAnnotations:t?.fileAnnotations,agentReasoning:t?.agentReasoning,action:t?.action,artifacts:t?.artifacts,type:"apiMessage",feedback:null,dateTime:(new Date).toISOString()};return e.push(o),Ie(e),e})),De(t,e),m(!1),re(!1),l(""),we([]),Ce()}}catch(e){if(navigator.onLine){if(console.error(e),"object"==typeof e&&null!==e&&"message"in e)return void ke("Error: "+e.message.replaceAll("Error:"," "));if("string"==typeof e)return void ke(e);ke()}else S(!0),b("Mất kết nối mạng"),I((e=>((e=[...lodashExports.cloneDeep(e)]).push({message:"Xin lỗi, hiện tại không có kết nối mạng. Vui lòng kiểm tra lại kết nối và thử lại sau.",type:"apiMessage",dateTime:(new Date).toISOString()}),e))),m(!1),re(!1),l(""),we([]);m(!1),re(!1)}else Ee(),Ue(t.chatflowid,a);else S(!0),b("Mất kết nối mạng"),I((e=>((e=[...lodashExports.cloneDeep(e)]).push({message:"Xin lỗi, hiện tại không có kết nối mạng. Vui lòng kiểm tra lại kết nối và thử lại sau.",type:"apiMessage",dateTime:(new Date).toISOString()}),e))),m(!1),re(!1),l(""),we([])}else alert("Bạn cần đăng nhập để có thể gửi tin nhắn. Vui lòng đăng nhập và thử lại.")},Ze=()=>{try{removeLocalStorageChatHistory(t.chatflowid),k(t.chatflowConfig?.vars?.customerId?(t.chatflowConfig?.vars).customerId.toString()+"+"+v4():v4()),we([]),L(!1),localStorage.removeItem(t.chatflowid+"_HUMAN_ADVISOR_CONNECTED");var e=[{message:getWelcomeMessage(t),type:"apiMessage"},...t.secondMessage?[{message:t.secondMessage,type:"apiMessage"}]:[]];Z()?.status&&!getLocalStorageChatflow(t.chatflowid)?.lead&&e.push({message:"",type:"leadCaptureMessage"}),I(e)}catch(t){e=t.response.data||t.response.status+": "+t.response.statusText,console.error("error: "+e)}},ze=(window.clearChat=Ze,onMount((()=>{let e=!1;const r=setInterval((()=>{var r;e||document.hidden||(r=localStorage.getItem(`chatwoot:${t.chatflowid}:conversation_id`))&&(e=!0,sendMessageQuery({chatflowid:t.chatflowid,apiHost:t.apiHost,body:{question:"ping",fetch:!0,chatId:B(),stored:{chatwoot:{conversation_id:r},userInfo:(()=>{var e=localStorage.getItem("cmcts:userInfo");if(e)try{return JSON.parse(e)}catch(e){console.warn("Failed to parse userInfo from localStorage")}})()}},onRequest:t.onRequest}).then((e=>{if(localStorage.getItem(`chatwoot:${t.chatflowid}:conversation_id`)){const r=`chatwoot:${t.chatflowid}:conversation_id:latest_message_id`,o=localStorage.getItem(r),a=Boolean(o),i=e.data?.messages?.payload||[];e=i.findIndex((e=>e.id.toString()===o))+1;let n=[];for(let t=e;t<i.length;t++)1===i[t].message_type&&n.push({message:i[t].content,messageId:v4(),rating:void 0,sourceDocuments:[],type:"apiMessage"});n.length&&(a||(localStorage.setItem(r,i[i.length-1].id.toString()),n=[{message:"Chào bạn, tôi là IT Operator – rất hân hạnh được hỗ trợ bạn. Bạn cần tôi giúp gì hôm nay?",messageId:v4(),rating:void 0,sourceDocuments:[],type:"apiMessage"}]),I((e=>(localStorage.setItem(r,i[i.length-1].id.toString()),e.push(...n),Ie(e),[...e].filter((e=>!!a||!e.message?.includes("assistant_phone_number")))))))}})).finally((()=>{e=!1})))}),1e3);return()=>{clearInterval(r)}})),onMount((()=>{if(t.clearChatOnReload)return Ze(),window.addEventListener("beforeunload",Ze),()=>{window.removeEventListener("beforeunload",Ze)}})),onMount((()=>{const e=()=>{S(!1),b("")},t=()=>{S(!0),b("Mất kết nối mạng")};return window.addEventListener("online",e),window.addEventListener("offline",t),()=>{window.removeEventListener("online",e),window.removeEventListener("offline",t)}})),onMount((()=>{r&&r.addEventListener("scroll",(()=>{r&&(r.scrollTop<r.scrollHeight-r.clientHeight-50?n(!0):n(!1))}))})),createEffect((()=>{if(t.starterPrompts){let e;return e=Array.isArray(t.starterPrompts)?t.starterPrompts:Object.values(t.starterPrompts).map((e=>e.prompt)),D(e.filter((e=>""!==e)))}})),createEffect((()=>{t.fontSize&&o&&(o.style.fontSize=t.fontSize+"px")})),createEffect((()=>{r&&r.addEventListener("scroll",(()=>{250<r?.scrollHeight-r?.scrollTop-r?.clientHeight&&!1===A()&&_(!0),r?.scrollHeight-r?.scrollTop-r?.clientHeight<100&&_(!1)}))})),createEffect((()=>{r&&Ce()})),(e,t)=>{I((e=>{var r,o;return(e=[...lodashExports.cloneDeep(e)]).find((e=>e.message.includes(t)))||(r=e.findIndex((e=>"userMessage"===e.type)),o={message:t.trim()?t.trim():"Không tìm thấy nội dung tóm tắt của file",type:"apiMessage",dateTime:(new Date).toISOString()},-1!==r?e.splice(r,0,o):e.push(o),Ie(e)),e}))}),Qe=(createEffect((async()=>{if(t.filePath){let a=t.filePath;(a=a.startsWith("/")?a:"/"+a).endsWith(".txt")||(a+=".txt");var e="C_Office/summary"+a,r="C_Office/content"+a,o="C_Office/question"+a;if(1===O().length)try{await Promise.all([(async e=>{e&&!ie()&&(e=await getFileContent({path:e,onRequest:t.onRequest}))?.data?.content&&ne(e?.data?.content)})(r),(async e=>{e&&(oe()?ze(0,oe()):(e=await getFileContent({path:e,onRequest:t.onRequest}))?.data?.content&&(ae(e?.data?.content),ze(0,e?.data?.content)))})(e),(async e=>{if(e&&0===se().length&&(e=await getFileContent({path:e,onRequest:t.onRequest}),e?.data?.content)){let t=[];try{t=JSON.parse(e?.data?.content)}catch(e){console.log("🚀 ~ Bot.tsx:1266 ~ getQuestionFile ~ error:",e)}le(t)}})(o)])}catch(e){console.warn("Error when reading "+t.filePath)}}})),createEffect((async()=>{if(t?.chatflowid&&t?.apiHost){t.disclaimer&&"true"!=getCookie("chatbotDisclaimer")?ee(!0):ee(!1);var e,r=("true"===(e=((e=getLocalStorageChatflow(t.chatflowid))&&Object.keys(e).length?(e.chatId&&k(e.chatId),(r=e.lead)&&(j(!!r),J(r.email)),r=(0<e?.chatHistory?.length?e.chatHistory?.map((e=>{var t={messageId:e?.messageId,message:e.message,type:e.type,rating:e.rating,dateTime:e.dateTime};return e.sourceDocuments&&(t.sourceDocuments=e.sourceDocuments),e.fileAnnotations&&(t.fileAnnotations=e.fileAnnotations),e.fileUploads&&(t.fileUploads=e.fileUploads),e.agentReasoning&&(t.agentReasoning=e.agentReasoning),e.action&&(t.action=e.action),e.artifacts&&(t.artifacts=e.artifacts),e.followUpPrompts&&(t.followUpPrompts=e.followUpPrompts),t})):[{message:getWelcomeMessage(t),type:"apiMessage"},...t.secondMessage?[{message:t.secondMessage,type:"apiMessage"}]:[]]).filter((e=>"leadCaptureMessage"!==e.type)),I([...r])):I([{message:getWelcomeMessage(t),type:"apiMessage"},...t.secondMessage?[{message:t.secondMessage,type:"apiMessage"}]:[]]),localStorage.getItem(t.chatflowid+"_HUMAN_ADVISOR_CONNECTED")))&&L(!0),await isStreamAvailableQuery({chatflowid:t.chatflowid,apiHost:t.apiHost,onRequest:t.onRequest})).data;if((e=(r&&N(r?.isStreaming??!1),await getChatbotConfig({chatflowid:t.chatflowid,apiHost:t.apiHost,onRequest:t.onRequest}))).data){e.data?.welcomeMessage||(e.data.welcomeMessage=defaultWelcomeMessage),e.data.welcomeMessage&&(e.data.welcomeMessage=e.data.welcomeMessage.replace(/\\n/g,"\n"));const o=e.data;if(setCachedChatbotConfig(t.chatflowid,o),o.welcomeMessage&&!t.welcomeMessage&&O()[0]?.message!==o.welcomeMessage&&I((e=>(0<(e=[...e]).length&&"apiMessage"===e[0].type&&(e[0]={...e[0],message:o.welcomeMessage}),e))),(!t.starterPrompts||0===t.starterPrompts?.length)&&o.starterPrompts){const e=[];Object.getOwnPropertyNames(o.starterPrompts).forEach((t=>{e.push(o.starterPrompts[t].prompt)})),D(e.filter((e=>""!==e)))}o.chatFeedback&&(r=o.chatFeedback.status,X(r)),o.uploads&&K(o.uploads),o.leads&&(z(o.leads),o.leads?.status)&&!getLocalStorageChatflow(t.chatflowid)?.lead&&I((e=>[...e,{message:"",type:"leadCaptureMessage"}])),o.followUpPrompts&&_e(o.followUpPrompts.status),o.fullFileUpload&&H(o.fullFileUpload.status)}return()=>{l(""),we([]),m(!1),re(!1),I([{message:getWelcomeMessage(t),type:"apiMessage"},...t.secondMessage?[{message:t.secondMessage,type:"apiMessage"}]:[]])}}})),createEffect((()=>{var e;Ae()&&0<O().length&&("apiMessage"===(e=O()[O().length-1]).type&&e.followUpPrompts?Te(JSON.parse(e.followUpPrompts)):"userMessage"===e.type&&Te([]))})),e=>{let t="";var r=e.type.indexOf(";");t=-1===r?e.type:e.type.substring(0,r);const o=new FileReader;o.readAsDataURL(e),o.onloadend=()=>{const e={data:o.result,preview:"../assets/wave-sound.jpg",type:"audio",name:`audio_${Date.now()}.wav`,mime:t};ge((t=>[...t,e]))}}),je=e=>{let t=!0;if(W()&&W()?.isImageUploadAllowed&&W()?.imgUploadSizeAndTypes){const r=e.type,o=e.size/1024/1024;W()?.imgUploadSizeAndTypes.map((e=>{e.fileTypes.includes(r)&&o<=e.maxUploadSize&&(t=!0)}))}if(V())return!0;if(W()&&W()?.isRAGFileUploadAllowed&&W()?.fileUploadSizeAndTypes){const r=e.name.split(".").pop();r&&W()?.fileUploadSizeAndTypes.map((e=>{(1===e.fileTypes.length&&"*"===e.fileTypes[0]||e.fileTypes.includes("."+r))&&(t=!0)}))}return t||alert("Cannot upload file. Kindly check the allowed file types and maximum allowed size."),t},Ye=async e=>{if((e=e.target.files)&&0!==e.length){var t=[],r=[];for(const o of e){if(!1===je(o))return;W()?.imgUploadSizeAndTypes.map((e=>e.fileTypes)).join(",").includes(o.type)||r.push({file:o,type:V()?"file:full":"file:rag"});const e=new FileReader,a=o.name;t.push(new Promise((t=>{e.onload=e=>{e?.target?.result&&(e=e.target.result,t({data:e,preview:URL.createObjectURL(o),type:"file",name:a,mime:o.type}))},e.readAsDataURL(o)})))}const o=await Promise.all(t);we(r),ge((e=>[...e,...o]))}},Je=()=>!!V()||!!W()?.isRAGFileUploadAllowed,qe=e=>{(W()?.isImageUploadAllowed||Je())&&(e.preventDefault(),e.stopPropagation(),"dragenter"===e.type||"dragover"===e.type?$e(!0):"dragleave"===e.type&&$e(!1))},et=async e=>{W(),e.preventDefault(),$e(!1);var t=[],r=[];if(e.dataTransfer&&0<e.dataTransfer.files.length){for(const o of e.dataTransfer.files){if(10485760<o.size)return void alert("File size exceeds the maximum limit of 10MB. File name: "+o.name);if(!1===je(o))return;W()?.imgUploadSizeAndTypes.map((e=>e.fileTypes)).join(",").includes(o.type)||r.push({file:o,type:V()?"file:full":"file:rag"});const e=new FileReader,a=o.name;t.push(new Promise((t=>{e.onload=e=>{if(e?.target?.result){let r;e=e.target.result,o.type.startsWith("audio/")?r="../assets/wave-sound.jpg":o.type.startsWith("image/")&&(r=URL.createObjectURL(o)),t({data:e,preview:r,type:"file",name:a,mime:o.type})}},e.readAsDataURL(o)})))}const o=await Promise.all(t);we(r),ge((e=>[...e,...o]))}if(e.dataTransfer&&e.dataTransfer.items)for(const t of e.dataTransfer.items)"string"===t.kind&&t.type.match("^text/uri-list")?t.getAsString((e=>{const t={data:e,preview:e,type:"url",name:e.substring(e.lastIndexOf("/")+1),mime:""};ge((e=>[...e,t]))})):"string"===t.kind&&t.type.match("^text/html")&&t.getAsString((e=>{if(-1!==e.indexOf("href")){const t={data:e=(e=e.substring(e.indexOf("href")+6)).substring(0,e.indexOf('"')),preview:e,type:"url",name:e.substring(e.lastIndexOf("/")+1),mime:""};ge((e=>[...e,t]))}}))},tt=e=>{"file"===e.type&&URL.revokeObjectURL(e.preview),ge(ce().filter((t=>t!==e)))},rt=()=>{xe(!0),startAudioRecording(xe,Se,he)},ot=()=>{ve||cancelAudioRecording(),xe(!1),Se(!1)},at=async()=>{be(!0),stopAudioRecording(Qe)},it=()=>{var e=O();return!!(te()||!t.chatflowid||Z()?.status&&!Q()||e[e.length-1].action&&0<Object.keys(e[e.length-1].action).length)};createEffect(on(ce,(e=>{var t=0<e.filter((e=>"audio"===e.type)).length;return 1<=e.length&&t&&(xe(!1),Se(!1),Fe("")),()=>{ge([])}})));var nt=localStorage?.getItem("isUseFAQs");const st=!0===(nt?JSON.parse(nt||"{}"):{})[t?.chatflowid];return[(()=>{const a=_tmpl$7(),n=a.firstChild,m=n.firstChild,c=m.nextSibling;a.addEventListener("dragenter",qe);var u=("function"==typeof(u=o)?use(u,a):o=a,insert(a,(()=>{const e=memo((()=>!!Pe()));return()=>{return e()&&((t=_tmpl$8()).addEventListener("drop",et),t.addEventListener("dragover",qe),t.addEventListener("dragend",qe),t.addEventListener("dragleave",qe),t.addEventListener("dragenter",qe),t);var t}})(),n),insert(a,(()=>{const e=memo((()=>!(!Pe()||!W()?.isImageUploadAllowed&&!Je())));return()=>e()&&(()=>{const e=_tmpl$9();return e.firstChild,insert(e,createComponent(For,{get each(){return[...W()?.imgUploadSizeAndTypes||[],...W()?.fileUploadSizeAndTypes||[]]},children:e=>{return[(insert(t=_tmpl$10(),(()=>e.fileTypes?.join(", "))),t),memo((()=>{const t=memo((()=>!!e.maxUploadSize));return()=>{return t()&&((o=(r=_tmpl$11()).firstChild.nextSibling).nextSibling,insert(r,(()=>e.maxUploadSize),o),r);var r,o}})())];var t}}),null),createRenderEffect((()=>null!=t.bubbleBackgroundColor?e.style.setProperty("border-color",t.bubbleBackgroundColor):e.style.removeProperty("border-color"))),e})()})(),n),insert(a,(()=>{const e=memo((()=>!!t.showTitle));return()=>{if(e()){const e=_tmpl$16(),r=e.firstChild,o=r.nextSibling;return e.style.setProperty("background","#005FAB"),insert(e,createComponent(Show,{get when(){return t.titleAvatarSrc},get children(){return[((e=_tmpl$12()).style.setProperty("width","15px"),e),createComponent(Avatar,{get initialAvatarSrc(){return t.titleAvatarSrc}})];var e}}),r),insert(e,createComponent(Show,{get when(){return t.title},get children(){var e=_tmpl$13();return insert(e,(()=>t.title)),e}}),r),r.style.setProperty("flex","1"),insert(o,createComponent(Show,{get when(){return t.onToggleFullScreen&&!t.isFullPage},get children(){return createComponent(FullScreenButton,{get sendButtonColor(){return t.bubbleTextColor},type:"button",get isDisabled(){return d()},class:"my-2 ml-2",get"on:click"(){return t.onToggleFullScreen},get children(){var e=_tmpl$14();return e.style.setProperty("font-family","Poppins, sans-serif"),e}})}}),null),insert(o,createComponent(DeleteButton,{get sendButtonColor(){return t.bubbleTextColor},type:"button",get isDisabled(){return 1===O().length||d()},class:"my-2 ml-2","on:click":Ze,get children(){var e=_tmpl$15();return e.style.setProperty("font-family","Poppins, sans-serif"),e}}),null),createRenderEffect((r=>{var o=t.bubbleTextColor,a=t.isFullPage?"0px":"6px",i=t.isFullPage?"0px":"6px";return o!==r._v$3&&(null!=(r._v$3=o)?e.style.setProperty("color",o):e.style.removeProperty("color")),a!==r._v$4&&(null!=(r._v$4=a)?e.style.setProperty("border-top-left-radius",a):e.style.removeProperty("border-top-left-radius")),i!==r._v$5&&(null!=(r._v$5=i)?e.style.setProperty("border-top-right-radius",i):e.style.removeProperty("border-top-right-radius")),r}),{_v$3:void 0,_v$4:void 0,_v$5:void 0}),e}return null}})(),n),m.$$click=Oe,r);return"function"==typeof u?use(u,m):r=m,insert(m,createComponent(For,{get each(){return[...O()]},children:(e,r)=>[memo((()=>{const r=memo((()=>"userMessage"===e.type));return()=>r()&&createComponent(GuestBubble,{message:e,get apiHost(){return t.apiHost},get chatflowid(){return t.chatflowid},get chatId(){return B()},get backgroundColor(){return t.userMessage?.backgroundColor},get textColor(){return t.userMessage?.textColor},get showAvatar(){return t.userMessage?.showAvatar},get avatarSrc(){return t.userMessage?.avatarSrc},get fontSize(){return t.fontSize},get renderHTML(){return t.renderHTML}})})()),memo((()=>{const o=memo((()=>!("apiMessage"!==e.type||!Boolean(e.message))));return()=>o()&&createComponent(BotBubble,{get question(){return[...O()][r()-1]?.message},message:e,setMessages:I,get fileAnnotations(){return e.fileAnnotations},get chatflowid(){return t.chatflowid},get chatId(){return B()},get apiHost(){return t.apiHost},get backgroundColor(){return t.botMessage?.backgroundColor},get textColor(){return t.botMessage?.textColor},get feedbackColor(){return t.feedback?.color},get showAvatar(){return t.botMessage?.showAvatar},get avatarSrc(){return t.botMessage?.avatarSrc},get chatFeedbackStatus(){return U()},get fontSize(){return t.fontSize},get isLoading(){return memo((()=>!!d()))()&&r()===O().length-1},get showAgentMessages(){return t.showAgentMessages},handleActionClick:(e,t)=>(async(e,t)=>{l(e),I((e=>{var t=e.map(((t,r)=>r===e.length-1?{...t,action:null}:t));return Ie(t),[...t]})),Ke(e,t)})(e,t),get sourceDocsTitle(){return t.sourceDocsTitle},handleSourceDocumentsClick:e=>{h(e),g(!0)},get dateTimeToggle(){return t.dateTimeToggle},get renderHTML(){return t.renderHTML},get chatwootUrl(){return t.chatwootUrl},get roomIds(){return t.roomIds},onConnectToHumanAdvisor:(e,r)=>{L(!0),localStorage.setItem(t.chatflowid+"_HUMAN_ADVISOR_CONNECTED","true"),axios$1.post(t.apiHost+"/api/v1/chatwoot/connect",{id:e,chatId:t.chatflowid,userInfo:(()=>{var e=localStorage.getItem("cmcts:userInfo");if(e)try{return JSON.parse(e)}catch(e){console.warn("Failed to parse userInfo from localStorage")}})(),params:r,messages:localStorage.getItem(t.chatflowid+"_EXTERNAL")||'{"chatHistory":[]}'}).then((({data:e})=>{e?.conversation?.id&&localStorage.setItem(`chatwoot:${t.chatflowid}:conversation_id`,e.conversation.id.toString())}))},get callBackIcon(){return t.callBackIcon},get callBackFunction(){return t.callBackFunction},get checkShowCallbackBtn(){return Boolean(t.filePath&&1===r())},get buttonFeedback(){return t.buttonFeedback},get titleFeedback(){return t.titleFeedback},get placeholderFeedback(){return t.placeholderFeedback}})})()),memo((()=>{const r=memo((()=>!("leadCaptureMessage"!==e.type||!Z()?.status||getLocalStorageChatflow(t.chatflowid)?.lead)));return()=>r()&&createComponent(LeadCaptureBubble,{message:e,get chatflowid(){return t.chatflowid},get chatId(){return B()},get apiHost(){return t.apiHost},get backgroundColor(){return t.botMessage?.backgroundColor},get textColor(){return t.botMessage?.textColor},get fontSize(){return t.fontSize},get showAvatar(){return t.botMessage?.showAvatar},get avatarSrc(){return t.botMessage?.avatarSrc},get leadsConfig(){return Z()},get sendButtonColor(){return t.textInput?.sendButtonColor},get isLeadSaved(){return Q()},setIsLeadSaved:j,setLeadEmail:J})})()),memo((()=>{const t=memo((()=>!("userMessage"!==e.type||!d()||r()!==O().length-1)));return()=>t()&&createComponent(LoadingBubble,{get streamingStartTime(){return P()},get elapsedStreamingTime(){return M()},get hideTimer(){return E()}})})()),memo((()=>{const t=memo((()=>!("apiMessage"!==e.type||""!==e.message||!d()||r()!==O().length-1)));return()=>t()&&createComponent(LoadingBubble,{get streamingStartTime(){return P()},get elapsedStreamingTime(){return M()},get hideTimer(){return E()}})})())]})),insert(n,createComponent(Show,{get when(){return 1===O().length},get children(){return createComponent(Show,{get when(){return 0<F().length},get children(){var t=_tmpl$3$1();return insert(t,createComponent(For,{get each(){return[...F()]},children:t=>createComponent(StarterPromptBubble,{prompt:t,onPromptClick:()=>Fe(t),get starterPromptFontSize(){return e.starterPromptFontSize}})})),t}})}}),c),insert(n,createComponent(Show,{get when(){return memo((()=>2<O().length))()&&Ae()},get children(){return createComponent(Show,{get when(){return 0<ye().length},get children(){return[(t=_tmpl$4$1(),r=t.firstChild,insert(t,createComponent(SparklesIcon,{class:"w-4 h-4"}),r),t),(insert(r=_tmpl$3$1(),createComponent(For,{get each(){return[...ye()]},children:(t,r)=>createComponent(FollowUpPromptBubble,{prompt:t,onPromptClick:()=>{return e=t,Te([]),void Ke(e);var e},get starterPromptFontSize(){return e.starterPromptFontSize}})})),r)];var t,r}})}}),c),insert(n,createComponent(PreviewImage,{previewImg:de,setPreviewImg:me}),c),insert(n,createComponent(Show,{get when(){return 0<ce().length},get children(){var t=_tmpl$5$1();return insert(t,createComponent(For,{get each(){return[...ce()]},children:t=>memo((()=>{var o=t;if(o.mime.startsWith("image/")){const e=_tmpl$$3(),t=e.firstChild,r=t.nextSibling;return e.$$click=()=>tt(o),insert(r,createComponent(TrashIcon,{})),createRenderEffect((()=>setAttribute(t,"src",o.data))),e}if(o.mime.startsWith("audio/")){const t=_tmpl$2$2(),a=t.firstChild,i=a.nextSibling;return i.$$click=()=>tt(o),insert(i,createComponent(TrashIcon,{color:"white"})),createRenderEffect((i=>{var n=`${r?e.isFullPage?r?.offsetWidth/4:r?.offsetWidth/2:"200"}px`,s=o.data;return n!==i._v$&&(null!=(i._v$=n)?t.style.setProperty("width",n):t.style.removeProperty("width")),s!==i._v$2&&setAttribute(a,"src",i._v$2=s),i}),{_v$:void 0,_v$2:void 0}),t}return createComponent(FilePreview,{get disabled(){return it()},item:o,onDelete:()=>tt(o)})}))})),t}}),c),insert(n,(()=>{const e=memo((()=>!(!(t.filePath&&0<se().length&&2===O().length)||t.suggestQuestions)));return()=>{return e()&&(insert(t=_tmpl$17(),createComponent(For,{get each(){return se()},children:e=>{{const t=_tmpl$18();return t.$$click=()=>We(e),insert(t,e),createRenderEffect((()=>t.disabled=d())),t}}})),t);var t}})(),c),insert(n,(()=>{const e=memo((()=>!!t.suggestQuestions));return()=>{return e()&&(insert(r=_tmpl$17(),createComponent(For,{get each(){try{return"string"==typeof t.suggestQuestions?JSON.parse(t.suggestQuestions).filter((e=>!O().filter((e=>"userMessage"===e.type)).map((e=>e.message)).includes(e))):[]}catch(e){return console.error("Failed to parse suggestQuestions:",e),[]}},children:e=>{{const t=_tmpl$18();return t.$$click=()=>We(e),insert(t,e),createRenderEffect((()=>t.disabled=d())),t}}})),r);var r}})(),c),insert(c,(()=>{const e=memo((()=>!!pe()));return()=>e()?memo((()=>{const e=memo((()=>!!ve()));return()=>{if(e())return(r=_tmpl$19()).firstChild.firstChild.nextSibling.$$click=()=>ot(),r;{const e=_tmpl$21(),r=e.firstChild,o=r.firstChild,a=o.nextSibling,i=r.nextSibling;return e.style.setProperty("margin","auto"),insert(o,createComponent(CircleDotIcon,{color:"red"})),insert(a,(()=>ue()||"00:00")),insert(r,(()=>{const e=memo((()=>!!fe()));return()=>e()&&_tmpl$22()})(),null),insert(i,createComponent(CancelButton,{get buttonColor(){return t.textInput?.sendButtonColor},type:"button",class:"m-0","on:click":ot,get children(){var e=_tmpl$20();return e.style.setProperty("font-family","Poppins, sans-serif"),e}}),null),insert(i,createComponent(SendButton,{get sendButtonColor(){return t.textInput?.sendButtonColor},type:"button",get isDisabled(){return d()},class:"m-0","on:click":at,get children(){var e=_tmpl$20();return e.style.setProperty("font-family","Poppins, sans-serif"),e}}),null),createRenderEffect((r=>{var o=t.textInput?.backgroundColor??defaultBackgroundColor,a=t.textInput?.textColor??defaultTextColor;return o!==r._v$6&&(null!=(r._v$6=o)?e.style.setProperty("background-color",o):e.style.removeProperty("background-color")),a!==r._v$7&&(null!=(r._v$7=a)?e.style.setProperty("color",a):e.style.removeProperty("color")),r}),{_v$6:void 0,_v$7:void 0}),e}var r}})()):[memo((()=>{const e=memo((()=>!(!p()||!d()||E())));return()=>e()&&(()=>{const e=_tmpl$12();return e.style.setProperty("font-size","12px"),e.style.setProperty("opacity","0.7"),e.style.setProperty("font-style","italic"),e.style.setProperty("margin-bottom","4px"),insert(e,p),createRenderEffect((()=>null!=(t.textInput?.textColor??"#666666")?e.style.setProperty("color",t.textInput?.textColor??"#666666"):e.style.removeProperty("color"))),e})()})()),createComponent(TextInput,{get backgroundColor(){return t.textInput?.backgroundColor},get textColor(){return t.textInput?.textColor},get placeholder(){return t.textInput?.placeholder},get sendButtonColor(){return t.textInput?.sendButtonColor},get maxChars(){return t.textInput?.maxChars},get maxCharsWarningMessage(){return t.textInput?.maxCharsWarningMessage},get autoFocus(){return t.textInput?.autoFocus},get fontSize(){return t.fontSize},get disabled(){return it()},get inputValue(){return s()},onInputChange:e=>l(e),onSubmit:Ke,get uploadsConfig(){return W()},get isFullFileUpload(){return V()},setPreviews:ge,onMicrophoneClicked:rt,handleFileChange:Ye,get sendMessageSound(){return t.textInput?.sendMessageSound},get sendSoundLocation(){return t.textInput?.sendSoundLocation},enableInputHistory:!0,maxHistorySize:10,get isLoading(){return d()},get chatflowid(){return t.chatflowid},get apiHost(){return t.apiHost},get isUseFAQ(){return Boolean(t?.isUseFAQ)||st},setDisableInput:re})]})()),insert(n,createComponent(Badge,{get footer(){return t.footer},get badgeBackgroundColor(){return t.badgeBackgroundColor},get poweredByTextColor(){return t.poweredByTextColor},botContainer:o}),null),insert(a,createComponent(Show,{get when(){return i()},get children(){var e=_tmpl$6$1();return e.$$click=()=>r?.scrollTo({top:r.scrollHeight,behavior:"smooth"}),e}}),null),createRenderEffect((()=>className(a,"relative flex w-full h-full text-base overflow-hidden bg-cover bg-center flex-col items-center chatbot-container "+t.class))),a})(),memo((()=>{const e=memo((()=>!!c()));return()=>e()&&createComponent(Popup,{get isOpen(){return c()},get value(){return u()},onClose:()=>g(!1)})})()),memo((()=>{const e=memo((()=>!!q()));return()=>e()&&createComponent(DisclaimerPopup,{get isOpen(){return q()},onAccept:Re,get title(){return t.disclaimer?.title},get message(){return t.disclaimer?.message},get textColor(){return t.disclaimer?.textColor},get buttonColor(){return t.disclaimer?.buttonColor},get buttonText(){return t.disclaimer?.buttonText},get buttonTextColor(){return t.disclaimer?.buttonTextColor},get blurredBackgroundColor(){return t.disclaimer?.blurredBackgroundColor},get backgroundColor(){return t.disclaimer?.backgroundColor}})})()),createComponent(Show,{get when(){return v()},get children(){return createComponent(Toast,{get message(){return f()},type:"error",duration:5e3,onClose:()=>{S(!1),b("")}})}})]},_tmpl$$2=(delegateEvents(["click"]),template('<div class="tooltip">')),defaultTooltipMessage="Hi There 👋!",defaultTooltipBackgroundColor="black",defaultTooltipTextColor="white",defaultTooltipFontSize=16,Tooltip=e=>{var t=e.tooltipMessage??defaultTooltipMessage;const r=e.tooltipBackgroundColor??defaultTooltipBackgroundColor,o=e.tooltipTextColor??defaultTooltipTextColor,a=`${e.tooltipFontSize??defaultTooltipFontSize}px`,i=20<t.length?t.split(" ").reduce(((e,t)=>{var r=e[e.length-1];return r&&r.join(" ").length+t.length<=20?r.push(t):e.push([t]),e}),[[]]).map((e=>e.join(" "))).join("\n"):t;return createComponent(Show,{get when(){return e.showTooltip},get children(){const t=_tmpl$$2();return null!=r?t.style.setProperty("--tooltip-background-color",r):t.style.removeProperty("--tooltip-background-color"),null!=o?t.style.setProperty("--tooltip-text-color",o):t.style.removeProperty("--tooltip-text-color"),null!=a?t.style.setProperty("--tooltip-font-size",a):t.style.removeProperty("--tooltip-font-size"),insert(t,i),createRenderEffect((r=>{var o=`calc(${e.position.right}px + 20px)`,a=e.position.bottom+e.buttonSize+10+"px";return o!==r._v$&&(null!=(r._v$=o)?t.style.setProperty("right",o):t.style.removeProperty("right")),a!==r._v$2&&(null!=(r._v$2=a)?t.style.setProperty("bottom",a):t.style.removeProperty("bottom")),r}),{_v$:void 0,_v$2:void 0}),t}})},_tmpl$$1=template("<style>"),_tmpl$2$1=template('<div class="absolute left-0 top-0 w-1 h-full cursor-ew-resize z-50 hover:bg-blue-500 hover:bg-opacity-30 transition-colors duration-200" title="Drag to resize width">'),_tmpl$3=template('<div class="absolute top-1 left-2 flex items-center gap-1 m-[6px] z-50"><button class="w-8 h-8 disabled:opacity-50 disabled:cursor-not-allowed text-white rounded-full flex items-center justify-center transition-all duration-200 hover:opacity-80"><svg viewBox="0 0 24 24" width="20" height="20" fill="currentColor"><path d="M19 13H5v-2h14v2z"></path></svg></button><span class="text-white text-xs font-medium px-2 py-1">%</span><button class="w-8 h-8 disabled:opacity-50 disabled:cursor-not-allowed text-white rounded-full flex items-center justify-center transition-all duration-200 hover:opacity-80"><svg viewBox="0 0 24 24" width="20" height="20" fill="currentColor"><path d="M19 13h-6v6h-2v-6H5v-2h6V5h2v6h6v2z">'),_tmpl$4=template('<button class="py-2 pr-3 absolute top-0 right-[-8px] m-[6px] bg-transparent text-white rounded-full z-50 disabled:opacity-50 disabled:cursor-not-allowed disabled:brightness-100 transition-all filter hover:brightness-90 active:brightness-75" title="Close Chat"><svg viewBox="0 0 24 24" width="24" height="24"><path d="M19 6.41L17.59 5 12 10.59 6.41 5 5 6.41 10.59 12 5 17.59 6.41 19 12 13.41 17.59 19 19 17.59 13.41 12 19 6.41z">'),_tmpl$5=template('<div class="relative h-full"><div>'),_tmpl$6=template('<div part="bot">'),defaultButtonColor$1="#3B81F6",defaultIconColor$1="white",Bubble=e=>{const[t]=splitProps(e,["theme"]),[r,o]=createSignal(!1),[a,i]=createSignal(!1),[n,s]=createSignal(!1),[l,d]=createSignal({bottom:t.theme?.button?.bottom??20,right:t.theme?.button?.right??20}),[m,c]=createSignal((()=>{try{var e=localStorage.getItem("cmcts:chatWindowWidth");if(e){var r=parseInt(e,10);if(!isNaN(r)&&400<=r&&r<=800)return r}}catch(e){console.warn("Failed to read chat window width from localStorage:",e)}return t.theme?.chatWindow?.width??400})()),[g,u]=createSignal(!1);var h;const[p,x]=createSignal((()=>{try{var e=localStorage.getItem("cmcts:chatScale");if(e){var t=parseInt(e,10);if(!isNaN(t)&&50<=t&&t<=200)return t}}catch(e){console.warn("Failed to read chat scale from localStorage:",e)}return 100})()),v=e=>{try{localStorage.setItem("cmcts:chatScale",e.toString())}catch(e){console.warn("Failed to save chat scale to localStorage:",e)}},S=()=>{var e=Math.min(p()+5,120);x(e),v(e)},f=()=>{var e=Math.max(p()-5,80);x(e),v(e)},b=()=>{o(!1),s(!1),document.body.style.overflow="auto"},A=()=>{(r()?b:()=>{a()||i(!0),o(!0);try{"undefined"!=typeof window&&window.refreshChatbotAuth&&(console.log("openBot: Triggering authentication refresh for popup mode"),window.refreshChatbotAuth())}catch(e){console.error("openBot: Error triggering authentication refresh",e)}})()},_=()=>{var e=!n();s(e),document.body.style.overflow=e?"hidden":"auto"},y=e=>{"Escape"===e.key&&n()&&(s(!1),document.body.style.overflow="auto")};let T,P;onMount((()=>{document.addEventListener("keydown",y)})),onCleanup((()=>{document.removeEventListener("keydown",y)}));const $=e=>{e.preventDefault(),e.stopPropagation(),u(!0),T=e.clientX,P=m(),document.addEventListener("mousemove",M),document.addEventListener("mouseup",w),document.body.style.cursor="ew-resize",document.body.style.userSelect="none"},M=e=>{var t;g()&&(e=T-e.clientX,e=P+e,t=Math.min(800,window.innerWidth-100),e=Math.min(Math.max(e,400),t),c(e))},w=()=>{u(!1),document.removeEventListener("mousemove",M),document.removeEventListener("mouseup",w),document.body.style.cursor="",document.body.style.userSelect="";var e=m();try{localStorage.setItem("cmcts:chatWindowWidth",e.toString())}catch(e){console.warn("Failed to save chat window width to localStorage:",e)}},C=(onCleanup((()=>{i(!1),document.removeEventListener("mousemove",M),document.removeEventListener("mouseup",w),document.removeEventListener("keydown",y),document.body.style.cursor="",document.body.style.userSelect="",document.body.style.overflow="auto"})),getBubbleButtonSize(e.theme?.button?.size)),E=(e.theme?.button?.bottom??20)+C+10,L=(createEffect((()=>{const e=document.createElement("meta");return e.name="viewport",e.content="width=device-width, initial-scale=1.0, interactive-widget=resizes-content",document.head.appendChild(e),()=>{document.head.removeChild(e)}})),t.theme?.tooltip?.showTooltip??!1);return[createComponent(Show,{get when(){return e.theme?.customCSS},get children(){var t=_tmpl$$1();return insert(t,(()=>e.theme?.customCSS)),t}}),(insert(h=_tmpl$$1(),css_248z),h),createComponent(Tooltip,{get showTooltip(){return L&&!r()},get position(){return l()},buttonSize:C,get tooltipMessage(){return t.theme?.tooltip?.tooltipMessage},get tooltipBackgroundColor(){return t.theme?.tooltip?.tooltipBackgroundColor},get tooltipTextColor(){return t.theme?.tooltip?.tooltipTextColor},get tooltipFontSize(){return t.theme?.tooltip?.tooltipFontSize}}),createComponent(Show,{get when(){return!n()},get children(){return createComponent(BubbleButton,mergeProps((()=>t.theme?.button),{toggleBot:A,get isBotOpened(){return r()},setButtonPosition:d,get dragAndDrop(){return t.theme?.button?.dragAndDrop??!1},get autoOpen(){return t.theme?.button?.autoWindowOpen?.autoOpen??!1},get openDelay(){return t.theme?.button?.autoWindowOpen?.openDelay},get autoOpenOnMobile(){return t.theme?.button?.autoWindowOpen?.autoOpenOnMobile??!1}}))}}),(()=>{const o=_tmpl$6();return o.style.setProperty("background-size","cover"),o.style.setProperty("background-position","center"),o.style.setProperty("background-repeat","no-repeat"),o.style.setProperty("z-index","42424242"),insert(o,createComponent(Show,{get when(){return a()},get children(){const o=_tmpl$5(),a=o.firstChild;return insert(o,createComponent(Show,{get when(){return r()},get children(){const e=_tmpl$2$1();return e.$$mousedown=$,createRenderEffect((()=>null!=(g()?"rgba(59, 130, 246, 0.3)":"transparent")?e.style.setProperty("background-color",g()?"rgba(59, 130, 246, 0.3)":"transparent"):e.style.removeProperty("background-color"))),e}}),a),a.style.setProperty("transform-origin","top left"),a.style.setProperty("transition","transform 0.2s ease-out"),insert(a,createComponent(Show,{get when(){return r()},get children(){return[(()=>{const e=_tmpl$3(),t=e.firstChild,r=t.nextSibling,o=r.firstChild,a=r.nextSibling;return t.$$click=f,insert(r,p,o),a.$$click=S,createRenderEffect((e=>{var r=p()<=80,o=`Decrease scale (${p()}%)`,i=120<=p(),n=`Increase scale (${p()}%)`;return r!==e._v$&&(t.disabled=e._v$=r),o!==e._v$2&&setAttribute(t,"title",e._v$2=o),i!==e._v$3&&(a.disabled=e._v$3=i),n!==e._v$4&&setAttribute(a,"title",e._v$4=n),e}),{_v$:void 0,_v$2:void 0,_v$3:void 0,_v$4:void 0}),e})(),(()=>{const e=_tmpl$4(),r=e.firstChild.firstChild;return e.$$click=b,createRenderEffect((()=>setAttribute(r,"fill",t.theme?.button?.iconColor??defaultIconColor$1))),e})()]}}),null),insert(a,createComponent(Bot,{get badgeBackgroundColor(){return t.theme?.chatWindow?.backgroundColor},get bubbleBackgroundColor(){return t.theme?.button?.backgroundColor??defaultButtonColor$1},get bubbleTextColor(){return t.theme?.button?.iconColor??defaultIconColor$1},get showTitle(){return t.theme?.chatWindow?.showTitle},get showAgentMessages(){return t.theme?.chatWindow?.showAgentMessages},get title(){return t.theme?.chatWindow?.title},get titleAvatarSrc(){return t.theme?.chatWindow?.titleAvatarSrc},get welcomeMessage(){return t.theme?.chatWindow?.welcomeMessage},get secondMessage(){return t.theme?.chatWindow?.secondMessage},get errorMessage(){return t.theme?.chatWindow?.errorMessage},get poweredByTextColor(){return t.theme?.chatWindow?.poweredByTextColor},get textInput(){return t.theme?.chatWindow?.textInput},get botMessage(){return t.theme?.chatWindow?.botMessage},get userMessage(){return t.theme?.chatWindow?.userMessage},get feedback(){return t.theme?.chatWindow?.feedback},get fontSize(){return t.theme?.chatWindow?.fontSize},get footer(){return t.theme?.chatWindow?.footer},get sourceDocsTitle(){return t.theme?.chatWindow?.sourceDocsTitle},get starterPrompts(){return t.theme?.chatWindow?.starterPrompts},get starterPromptFontSize(){return t.theme?.chatWindow?.starterPromptFontSize},get chatflowid(){return e.chatflowid},get chatflowConfig(){return e.chatflowConfig},get apiHost(){return e.apiHost},get onRequest(){return e.onRequest},get observersConfig(){return e.observersConfig},get clearChatOnReload(){return t.theme?.chatWindow?.clearChatOnReload},get disclaimer(){return t.theme?.disclaimer},get dateTimeToggle(){return t.theme?.chatWindow?.dateTimeToggle},get renderHTML(){return e.theme?.chatWindow?.renderHTML},get chatwootUrl(){return e.chatwootUrl},get roomIds(){return e.roomIds},get isUseFAQ(){return e.isUseFAQ},get filePath(){return e.filePath},get suggestQuestions(){return e.suggestQuestions},get externalData(){return e.externalData},get callBackFunction(){return e.callBackFunction},get callBackIcon(){return e.callBackIcon},onToggleFullScreen:_,get isFullScreen(){return n()},get buttonFeedback(){return t.theme?.chatWindow?.buttonFeedback},get titleFeedback(){return t.theme?.chatWindow?.titleFeedback},get placeholderFeedback(){return t.theme?.chatWindow?.placeholderFeedback}}),null),createRenderEffect((e=>{var t=`scale(${p()/100})`,r=100/(p()/100)+"%",o=100/(p()/100)+"%";return t!==e._v$5&&(null!=(e._v$5=t)?a.style.setProperty("transform",t):a.style.removeProperty("transform")),r!==e._v$6&&(null!=(e._v$6=r)?a.style.setProperty("width",r):a.style.removeProperty("width")),o!==e._v$7&&(null!=(e._v$7=o)?a.style.setProperty("height",o):a.style.removeProperty("height")),e}),{_v$5:void 0,_v$6:void 0,_v$7:void 0}),o}})),createRenderEffect((e=>{var a=n()?"100vh":t.theme?.chatWindow?.height?t.theme?.chatWindow?.height.toString()+"px":"calc(100% - 150px)",i=n()?"100vw":m()+"px",s=g()?"none":"transform 200ms cubic-bezier(0, 1.2, 1, 1), opacity 150ms ease-out",d=n()?"center":"bottom right",c=r()?"scale3d(1, 1, 1)":"scale3d(0, 0, 1)",u=n()?"none":"rgb(0 0 0 / 16%) 0px 5px 40px",h=t.theme?.chatWindow?.backgroundColor||"#ffffff",p=t.theme?.chatWindow?.backgroundImage?`url(${t.theme?.chatWindow?.backgroundImage})`:"none",x=n()?"0":Math.min(l().bottom+C+10,window.innerHeight-E)+"px",v=n()?"0":Math.min(l().right,window.innerWidth-Math.max(m()+10,410))+"px",S=n()?"0":"auto",f=n()?"0":"auto",b=`fixed ${n()?"inset-0":"sm:right-5 rounded-lg"} w-full `+(n()?"max-h-none":"max-h-[704px]")+(r()?" opacity-1":" opacity-0 pointer-events-none")+(n()?"":` bottom-${E}px`);return a!==e._v$8&&(null!=(e._v$8=a)?o.style.setProperty("height",a):o.style.removeProperty("height")),i!==e._v$9&&(null!=(e._v$9=i)?o.style.setProperty("width",i):o.style.removeProperty("width")),s!==e._v$10&&(null!=(e._v$10=s)?o.style.setProperty("transition",s):o.style.removeProperty("transition")),d!==e._v$11&&(null!=(e._v$11=d)?o.style.setProperty("transform-origin",d):o.style.removeProperty("transform-origin")),c!==e._v$12&&(null!=(e._v$12=c)?o.style.setProperty("transform",c):o.style.removeProperty("transform")),u!==e._v$13&&(null!=(e._v$13=u)?o.style.setProperty("box-shadow",u):o.style.removeProperty("box-shadow")),h!==e._v$14&&(null!=(e._v$14=h)?o.style.setProperty("background-color",h):o.style.removeProperty("background-color")),p!==e._v$15&&(null!=(e._v$15=p)?o.style.setProperty("background-image",p):o.style.removeProperty("background-image")),x!==e._v$16&&(null!=(e._v$16=x)?o.style.setProperty("bottom",x):o.style.removeProperty("bottom")),v!==e._v$17&&(null!=(e._v$17=v)?o.style.setProperty("right",v):o.style.removeProperty("right")),S!==e._v$18&&(null!=(e._v$18=S)?o.style.setProperty("top",S):o.style.removeProperty("top")),f!==e._v$19&&(null!=(e._v$19=f)?o.style.setProperty("left",f):o.style.removeProperty("left")),b!==e._v$20&&className(o,e._v$20=b),e}),{_v$8:void 0,_v$9:void 0,_v$10:void 0,_v$11:void 0,_v$12:void 0,_v$13:void 0,_v$14:void 0,_v$15:void 0,_v$16:void 0,_v$17:void 0,_v$18:void 0,_v$19:void 0,_v$20:void 0}),o})()]},_tmpl$=(delegateEvents(["mousedown","click"]),template("<style>")),_tmpl$2=template("<div>"),defaultButtonColor="#3B81F6",defaultIconColor="white",Full=(e,{element:t})=>{const[r,o]=createSignal(!1),a=new IntersectionObserver((e=>{e.some((e=>e.isIntersecting))&&(o(!0),document.body.style.margin="0",document.documentElement.style.padding="0",e=document.querySelector('meta[name="viewport"]'))&&e.setAttribute("content","width=device-width, initial-scale=1.0, interactive-widget=resizes-content")}));return onMount((()=>{a.observe(t)})),onCleanup((()=>{a.disconnect(),document.body.style.margin="",document.documentElement.style.padding="";var e=document.querySelector('meta[name="viewport"]');e&&e.setAttribute("content","width=device-width, initial-scale=1.0")})),[createComponent(Show,{get when(){return e.theme?.customCSS},get children(){var t=_tmpl$();return insert(t,(()=>e.theme?.customCSS)),t}}),(insert(i=_tmpl$(),css_248z),i),createComponent(Show,{get when(){return r()},get children(){const t=_tmpl$2();return t.style.setProperty("margin","0px"),t.style.setProperty("overflow","hidden"),insert(t,createComponent(Bot,{get badgeBackgroundColor(){return e.theme?.chatWindow?.backgroundColor},get bubbleBackgroundColor(){return e.theme?.button?.backgroundColor??defaultButtonColor},get bubbleTextColor(){return e.theme?.button?.iconColor??defaultIconColor},get showTitle(){return e.theme?.chatWindow?.showTitle},get showAgentMessages(){return e.theme?.chatWindow?.showAgentMessages},get title(){return e.theme?.chatWindow?.title},get titleAvatarSrc(){return e.theme?.chatWindow?.titleAvatarSrc},get welcomeMessage(){return e.theme?.chatWindow?.welcomeMessage},get secondMessage(){return e.theme?.chatWindow?.secondMessage},get errorMessage(){return e.theme?.chatWindow?.errorMessage},get poweredByTextColor(){return e.theme?.chatWindow?.poweredByTextColor},get textInput(){return e.theme?.chatWindow?.textInput},get botMessage(){return e.theme?.chatWindow?.botMessage},get userMessage(){return e.theme?.chatWindow?.userMessage},get feedback(){return e.theme?.chatWindow?.feedback},get fontSize(){return e.theme?.chatWindow?.fontSize},get footer(){return e.theme?.chatWindow?.footer},get starterPrompts(){return e.theme?.chatWindow?.starterPrompts},get chatflowid(){return e.chatflowid},get chatflowConfig(){return e.chatflowConfig},get apiHost(){return e.apiHost},get onRequest(){return e.onRequest},isFullPage:!0,get observersConfig(){return e.observersConfig},get starterPromptFontSize(){return e.theme?.chatWindow?.starterPromptFontSize},get clearChatOnReload(){return e.theme?.chatWindow?.clearChatOnReload},get disclaimer(){return e.theme?.disclaimer},get dateTimeToggle(){return e.theme?.chatWindow?.dateTimeToggle},get renderHTML(){return e.theme?.chatWindow?.renderHTML},get chatwootUrl(){return e.chatwootUrl},get roomIds(){return e.roomIds},get isUseFAQ(){return e.isUseFAQ},get filePath(){return e.filePath},get suggestQuestions(){return e.suggestQuestions},get externalData(){return e.externalData},get callBackFunction(){return e.callBackFunction},get callBackIcon(){return e.callBackIcon},get buttonFeedback(){return e.theme?.chatWindow?.buttonFeedback},get titleFeedback(){return e.theme?.chatWindow?.titleFeedback},get placeholderFeedback(){return e.theme?.chatWindow?.placeholderFeedback}})),createRenderEffect((r=>{var o=e.theme?.chatWindow?.backgroundColor||"#ffffff",a=e.theme?.chatWindow?.height?e.theme?.chatWindow?.height.toString()+"px":"100dvh",i=e.theme?.chatWindow?.width?e.theme?.chatWindow?.width.toString()+"px":"100%";return o!==r._v$&&(null!=(r._v$=o)?t.style.setProperty("background-color",o):t.style.removeProperty("background-color")),a!==r._v$2&&(null!=(r._v$2=a)?t.style.setProperty("height",a):t.style.removeProperty("height")),i!==r._v$3&&(null!=(r._v$3=i)?t.style.setProperty("width",i):t.style.removeProperty("width")),r}),{_v$:void 0,_v$2:void 0,_v$3:void 0}),t}})];var i},registerWebComponents=()=>{"undefined"!=typeof window&&(customElement("flowise-fullchatbot",defaultBotProps,Full),customElement("flowise-chatbot",defaultBotProps,Bubble))};let elementUsed;const initFull=e=>{destroy();var t=e.id?document.getElementById(e.id):document.querySelector("flowise-fullchatbot");if(!t)throw new Error("<flowise-fullchatbot> element not found.");Object.assign(t,e),elementUsed=t},init=e=>{destroy();var t=document.createElement("flowise-chatbot");Object.assign(t,{...e,isUseFAQ:!0}),document.body.appendChild(t),elementUsed=t},destroy=()=>{elementUsed?.remove()},parseChatbot=()=>({initFull:initFull,init:init,destroy:destroy}),injectChatbotInWindow=e=>{"undefined"!=typeof window&&(window.Chatbot={...e})},chatbot=(registerWebComponents(),parseChatbot());injectChatbotInWindow(chatbot);export{chatbot as default};
|