{"version":3,"mappings":"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","names":["fn","semiver","a","b","bool","resolve_root","base_url","root_path","prioritize_base","determine_protocol","endpoint","protocol","host","RE_SPACE_NAME","RE_SPACE_DOMAIN","process_endpoint","app_reference","token","headers","_app_reference","res","_host","e","ws_protocol","http_protocol","map_names_to_ids","fns","apis","api_name","i","RE_DISABLED_DISCUSSION","discussions_enabled","space_id","error","normalise_file","file","server_url","proxy_url","normalized_file","x","FileData","get_fetchable_url_or_file","is_url","str","url","path","upload","file_data","root","upload_fn","upload_files","files","file_data2","response","f","prepare_files","is_stream","orig_name","size","blob","mime_type","alt_text","QUEUE_FULL_MSG","BROKEN_CONNECTION_MSG","NodeBlob","api_factory","fetch_implementation","WebSocket_factory","post_data2","upload_files2","client2","handle_blob2","body","chunkSize","uploadResponses","chunk","formData","output","options","status_callback","hf_token","normalise_files","return_obj","predict","submit","view_api","component_server","transform_files","ws","__vitePreload","session_hash","last_status","config","api_map","jwt","get_jwt","config_success","_config","api","handle_space_sucess","status","resolve_config","check_space_status","data","event_data","data_returned","status_complete","dependency","trimmed_endpoint","res2","rej","app","result","d","fn_index","api_info","websocket","eventSource","_endpoint","payload","event_id","complete","listener_map","url_params","_payload","skip_queue","fire_event","status_code","data2","transform_output","evt","event","_data","type","handle_message","params","_","status2","listeners","l","on","eventType","listener","narrowed_listener_map","off","cancel","destroy","_status","cancel_request","event_type","fn2","component_id","fn_name","_a","root_url","component","comp","config2","transform_api_info","blob_refs","walk_and_store_blobs","file_url","r","name","update_object","post_data","client","handle_blob","args","remote_url","_b","_c","_d","img","get_type","serializer","signature_type","get_description","new_data","key","cat","dep_index","info","label","space","object","newValue","stack","param","v","new_path","array_refs","id","stage","space_name","mount_css","target","link","ENTRY_CSS","FONTS","IndexComponent","create_custom_element","o","svelte","GradioApp","n","mutations","old_val","new_val"],"sources":["../../../../client/js/dist/index.js","../../../../js/app/src/css.ts","../../../../js/app/src/main.ts"],"sourcesContent":["var fn = new Intl.Collator(0, { numeric: 1 }).compare;\nfunction semiver(a, b, bool) {\n a = a.split(\".\");\n b = b.split(\".\");\n return fn(a[0], b[0]) || fn(a[1], b[1]) || (b[2] = b.slice(2).join(\".\"), bool = /[.-]/.test(a[2] = a.slice(2).join(\".\")), bool == /[.-]/.test(b[2]) ? fn(a[2], b[2]) : bool ? -1 : 1);\n}\nfunction resolve_root(base_url, root_path, prioritize_base) {\n if (root_path.startsWith(\"http://\") || root_path.startsWith(\"https://\")) {\n return prioritize_base ? base_url : root_path;\n }\n return base_url + root_path;\n}\nfunction determine_protocol(endpoint) {\n if (endpoint.startsWith(\"http\")) {\n const { protocol, host } = new URL(endpoint);\n if (host.endsWith(\"hf.space\")) {\n return {\n ws_protocol: \"wss\",\n host,\n http_protocol: protocol\n };\n }\n return {\n ws_protocol: protocol === \"https:\" ? \"wss\" : \"ws\",\n http_protocol: protocol,\n host\n };\n } else if (endpoint.startsWith(\"file:\")) {\n return {\n ws_protocol: \"ws\",\n http_protocol: \"http:\",\n host: \"lite.local\"\n // Special fake hostname only used for this case. This matches the hostname allowed in `is_self_host()` in `js/wasm/network/host.ts`.\n };\n }\n return {\n ws_protocol: \"wss\",\n http_protocol: \"https:\",\n host: endpoint\n };\n}\nconst RE_SPACE_NAME = /^[^\\/]*\\/[^\\/]*$/;\nconst RE_SPACE_DOMAIN = /.*hf\\.space\\/{0,1}$/;\nasync function process_endpoint(app_reference, token) {\n const headers = {};\n if (token) {\n headers.Authorization = `Bearer ${token}`;\n }\n const _app_reference = app_reference.trim();\n if (RE_SPACE_NAME.test(_app_reference)) {\n try {\n const res = await fetch(\n `https://huggingface.co/api/spaces/${_app_reference}/host`,\n { headers }\n );\n if (res.status !== 200)\n throw new Error(\"Space metadata could not be loaded.\");\n const _host = (await res.json()).host;\n return {\n space_id: app_reference,\n ...determine_protocol(_host)\n };\n } catch (e) {\n throw new Error(\"Space metadata could not be loaded.\" + e.message);\n }\n }\n if (RE_SPACE_DOMAIN.test(_app_reference)) {\n const { ws_protocol, http_protocol, host } = determine_protocol(_app_reference);\n return {\n space_id: host.replace(\".hf.space\", \"\"),\n ws_protocol,\n http_protocol,\n host\n };\n }\n return {\n space_id: false,\n ...determine_protocol(_app_reference)\n };\n}\nfunction map_names_to_ids(fns) {\n let apis = {};\n fns.forEach(({ api_name }, i) => {\n if (api_name)\n apis[api_name] = i;\n });\n return apis;\n}\nconst RE_DISABLED_DISCUSSION = /^(?=[^]*\\b[dD]iscussions{0,1}\\b)(?=[^]*\\b[dD]isabled\\b)[^]*$/;\nasync function discussions_enabled(space_id) {\n try {\n const r = await fetch(\n `https://huggingface.co/api/spaces/${space_id}/discussions`,\n {\n method: \"HEAD\"\n }\n );\n const error = r.headers.get(\"x-error-message\");\n if (error && RE_DISABLED_DISCUSSION.test(error))\n return false;\n return true;\n } catch (e) {\n return false;\n }\n}\nasync function get_space_hardware(space_id, token) {\n const headers = {};\n if (token) {\n headers.Authorization = `Bearer ${token}`;\n }\n try {\n const res = await fetch(\n `https://huggingface.co/api/spaces/${space_id}/runtime`,\n { headers }\n );\n if (res.status !== 200)\n throw new Error(\"Space hardware could not be obtained.\");\n const { hardware } = await res.json();\n return hardware;\n } catch (e) {\n throw new Error(e.message);\n }\n}\nasync function set_space_hardware(space_id, new_hardware, token) {\n const headers = {};\n if (token) {\n headers.Authorization = `Bearer ${token}`;\n }\n try {\n const res = await fetch(\n `https://huggingface.co/api/spaces/${space_id}/hardware`,\n { headers, body: JSON.stringify(new_hardware) }\n );\n if (res.status !== 200)\n throw new Error(\n \"Space hardware could not be set. Please ensure the space hardware provided is valid and that a Hugging Face token is passed in.\"\n );\n const { hardware } = await res.json();\n return hardware;\n } catch (e) {\n throw new Error(e.message);\n }\n}\nasync function set_space_timeout(space_id, timeout, token) {\n const headers = {};\n if (token) {\n headers.Authorization = `Bearer ${token}`;\n }\n try {\n const res = await fetch(\n `https://huggingface.co/api/spaces/${space_id}/hardware`,\n { headers, body: JSON.stringify({ seconds: timeout }) }\n );\n if (res.status !== 200)\n throw new Error(\n \"Space hardware could not be set. Please ensure the space hardware provided is valid and that a Hugging Face token is passed in.\"\n );\n const { hardware } = await res.json();\n return hardware;\n } catch (e) {\n throw new Error(e.message);\n }\n}\nconst hardware_types = [\n \"cpu-basic\",\n \"cpu-upgrade\",\n \"t4-small\",\n \"t4-medium\",\n \"a10g-small\",\n \"a10g-large\",\n \"a100-large\"\n];\nfunction normalise_file(file, server_url, proxy_url) {\n if (file == null) {\n return null;\n }\n if (Array.isArray(file)) {\n const normalized_file = [];\n for (const x of file) {\n if (x == null) {\n normalized_file.push(null);\n } else {\n normalized_file.push(normalise_file(x, server_url, proxy_url));\n }\n }\n return normalized_file;\n }\n if (file.is_stream) {\n if (proxy_url == null) {\n return new FileData({\n ...file,\n url: server_url + \"/stream/\" + file.path\n });\n }\n return new FileData({\n ...file,\n url: \"/proxy=\" + proxy_url + \"stream/\" + file.path\n });\n }\n return new FileData({\n ...file,\n url: get_fetchable_url_or_file(file.path, server_url, proxy_url)\n });\n}\nfunction is_url(str) {\n try {\n const url = new URL(str);\n return url.protocol === \"http:\" || url.protocol === \"https:\";\n } catch {\n return false;\n }\n}\nfunction get_fetchable_url_or_file(path, server_url, proxy_url) {\n if (path == null) {\n return proxy_url ? `/proxy=${proxy_url}file=` : `${server_url}/file=`;\n }\n if (is_url(path)) {\n return path;\n }\n return proxy_url ? `/proxy=${proxy_url}file=${path}` : `${server_url}/file=${path}`;\n}\nasync function upload(file_data, root, upload_fn = upload_files) {\n let files = (Array.isArray(file_data) ? file_data : [file_data]).map(\n (file_data2) => file_data2.blob\n );\n return await Promise.all(\n await upload_fn(root, files).then(\n async (response) => {\n if (response.error) {\n throw new Error(response.error);\n } else {\n if (response.files) {\n return response.files.map((f, i) => {\n const file = new FileData({ ...file_data[i], path: f });\n return normalise_file(file, root, null);\n });\n }\n return [];\n }\n }\n )\n );\n}\nasync function prepare_files(files, is_stream) {\n return files.map(\n (f, i) => new FileData({\n path: f.name,\n orig_name: f.name,\n blob: f,\n size: f.size,\n mime_type: f.type,\n is_stream\n })\n );\n}\nclass FileData {\n constructor({\n path,\n url,\n orig_name,\n size,\n blob,\n is_stream,\n mime_type,\n alt_text\n }) {\n this.path = path;\n this.url = url;\n this.orig_name = orig_name;\n this.size = size;\n this.blob = url ? void 0 : blob;\n this.is_stream = is_stream;\n this.mime_type = mime_type;\n this.alt_text = alt_text;\n }\n}\nconst QUEUE_FULL_MSG = \"This application is too busy. Keep trying!\";\nconst BROKEN_CONNECTION_MSG = \"Connection errored out.\";\nlet NodeBlob;\nasync function duplicate(app_reference, options) {\n const { hf_token, private: _private, hardware, timeout } = options;\n if (hardware && !hardware_types.includes(hardware)) {\n throw new Error(\n `Invalid hardware type provided. Valid types are: ${hardware_types.map((v) => `\"${v}\"`).join(\",\")}.`\n );\n }\n const headers = {\n Authorization: `Bearer ${hf_token}`\n };\n const user = (await (await fetch(`https://huggingface.co/api/whoami-v2`, {\n headers\n })).json()).name;\n const space_name = app_reference.split(\"/\")[1];\n const body = {\n repository: `${user}/${space_name}`\n };\n if (_private) {\n body.private = true;\n }\n try {\n const response = await fetch(\n `https://huggingface.co/api/spaces/${app_reference}/duplicate`,\n {\n method: \"POST\",\n headers: { \"Content-Type\": \"application/json\", ...headers },\n body: JSON.stringify(body)\n }\n );\n if (response.status === 409) {\n return client(`${user}/${space_name}`, options);\n }\n const duplicated_space = await response.json();\n let original_hardware;\n if (!hardware) {\n original_hardware = await get_space_hardware(app_reference, hf_token);\n }\n const requested_hardware = hardware || original_hardware || \"cpu-basic\";\n await set_space_hardware(\n `${user}/${space_name}`,\n requested_hardware,\n hf_token\n );\n await set_space_timeout(`${user}/${space_name}`, timeout || 300, hf_token);\n return client(duplicated_space.url, options);\n } catch (e) {\n throw new Error(e);\n }\n}\nfunction api_factory(fetch_implementation, WebSocket_factory) {\n return { post_data: post_data2, upload_files: upload_files2, client: client2, handle_blob: handle_blob2 };\n async function post_data2(url, body, token) {\n const headers = { \"Content-Type\": \"application/json\" };\n if (token) {\n headers.Authorization = `Bearer ${token}`;\n }\n try {\n var response = await fetch_implementation(url, {\n method: \"POST\",\n body: JSON.stringify(body),\n headers\n });\n } catch (e) {\n return [{ error: BROKEN_CONNECTION_MSG }, 500];\n }\n const output = await response.json();\n return [output, response.status];\n }\n async function upload_files2(root, files, token) {\n const headers = {};\n if (token) {\n headers.Authorization = `Bearer ${token}`;\n }\n const chunkSize = 1e3;\n const uploadResponses = [];\n for (let i = 0; i < files.length; i += chunkSize) {\n const chunk = files.slice(i, i + chunkSize);\n const formData = new FormData();\n chunk.forEach((file) => {\n formData.append(\"files\", file);\n });\n try {\n var response = await fetch_implementation(`${root}/upload`, {\n method: \"POST\",\n body: formData,\n headers\n });\n } catch (e) {\n return { error: BROKEN_CONNECTION_MSG };\n }\n const output = await response.json();\n uploadResponses.push(...output);\n }\n return { files: uploadResponses };\n }\n async function client2(app_reference, options = { normalise_files: true }) {\n return new Promise(async (res) => {\n const { status_callback, hf_token, normalise_files } = options;\n const return_obj = {\n predict,\n submit,\n view_api,\n component_server\n };\n const transform_files = normalise_files ?? true;\n if ((typeof window === \"undefined\" || !(\"WebSocket\" in window)) && !global.Websocket) {\n const ws = await import(\"./wrapper-98f94c21.js\");\n NodeBlob = (await import(\"node:buffer\")).Blob;\n global.WebSocket = ws.WebSocket;\n }\n const { ws_protocol, http_protocol, host, space_id } = await process_endpoint(app_reference, hf_token);\n const session_hash = Math.random().toString(36).substring(2);\n const last_status = {};\n let config;\n let api_map = {};\n let jwt = false;\n if (hf_token && space_id) {\n jwt = await get_jwt(space_id, hf_token);\n }\n async function config_success(_config) {\n config = _config;\n api_map = map_names_to_ids((_config == null ? void 0 : _config.dependencies) || []);\n if (config.auth_required) {\n return {\n config,\n ...return_obj\n };\n }\n try {\n api = await view_api(config);\n } catch (e) {\n console.error(`Could not get api details: ${e.message}`);\n }\n return {\n config,\n ...return_obj\n };\n }\n let api;\n async function handle_space_sucess(status) {\n if (status_callback)\n status_callback(status);\n if (status.status === \"running\")\n try {\n config = await resolve_config(\n fetch_implementation,\n `${http_protocol}//${host}`,\n hf_token\n );\n const _config = await config_success(config);\n res(_config);\n } catch (e) {\n console.error(e);\n if (status_callback) {\n status_callback({\n status: \"error\",\n message: \"Could not load this space.\",\n load_status: \"error\",\n detail: \"NOT_FOUND\"\n });\n }\n }\n }\n try {\n config = await resolve_config(\n fetch_implementation,\n `${http_protocol}//${host}`,\n hf_token\n );\n const _config = await config_success(config);\n res(_config);\n } catch (e) {\n console.error(e);\n if (space_id) {\n check_space_status(\n space_id,\n RE_SPACE_NAME.test(space_id) ? \"space_name\" : \"subdomain\",\n handle_space_sucess\n );\n } else {\n if (status_callback)\n status_callback({\n status: \"error\",\n message: \"Could not load this space.\",\n load_status: \"error\",\n detail: \"NOT_FOUND\"\n });\n }\n }\n function predict(endpoint, data, event_data) {\n let data_returned = false;\n let status_complete = false;\n let dependency;\n if (typeof endpoint === \"number\") {\n dependency = config.dependencies[endpoint];\n } else {\n const trimmed_endpoint = endpoint.replace(/^\\//, \"\");\n dependency = config.dependencies[api_map[trimmed_endpoint]];\n }\n if (dependency.types.continuous) {\n throw new Error(\n \"Cannot call predict on this function as it may run forever. Use submit instead\"\n );\n }\n return new Promise((res2, rej) => {\n const app = submit(endpoint, data, event_data);\n let result;\n app.on(\"data\", (d) => {\n if (status_complete) {\n app.destroy();\n res2(d);\n }\n data_returned = true;\n result = d;\n }).on(\"status\", (status) => {\n if (status.stage === \"error\")\n rej(status);\n if (status.stage === \"complete\") {\n status_complete = true;\n if (data_returned) {\n app.destroy();\n res2(result);\n }\n }\n });\n });\n }\n function submit(endpoint, data, event_data) {\n let fn_index;\n let api_info;\n if (typeof endpoint === \"number\") {\n fn_index = endpoint;\n api_info = api.unnamed_endpoints[fn_index];\n } else {\n const trimmed_endpoint = endpoint.replace(/^\\//, \"\");\n fn_index = api_map[trimmed_endpoint];\n api_info = api.named_endpoints[endpoint.trim()];\n }\n if (typeof fn_index !== \"number\") {\n throw new Error(\n \"There is no endpoint matching that name of fn_index matching that number.\"\n );\n }\n let websocket;\n let eventSource;\n let protocol = config.protocol ?? \"sse\";\n const _endpoint = typeof endpoint === \"number\" ? \"/predict\" : endpoint;\n let payload;\n let event_id = null;\n let complete = false;\n const listener_map = {};\n let url_params = \"\";\n if (typeof window !== \"undefined\") {\n url_params = new URLSearchParams(window.location.search).toString();\n }\n handle_blob2(\n `${http_protocol}//${resolve_root(host, config.path, true)}`,\n data,\n api_info,\n hf_token\n ).then((_payload) => {\n payload = { data: _payload || [], event_data, fn_index };\n if (skip_queue(fn_index, config)) {\n fire_event({\n type: \"status\",\n endpoint: _endpoint,\n stage: \"pending\",\n queue: false,\n fn_index,\n time: /* @__PURE__ */ new Date()\n });\n post_data2(\n `${http_protocol}//${resolve_root(host, config.path, true)}/run${_endpoint.startsWith(\"/\") ? _endpoint : `/${_endpoint}`}${url_params ? \"?\" + url_params : \"\"}`,\n {\n ...payload,\n session_hash\n },\n hf_token\n ).then(([output, status_code]) => {\n const data2 = transform_files ? transform_output(\n output.data,\n api_info,\n config.root,\n config.root_url\n ) : output.data;\n if (status_code == 200) {\n fire_event({\n type: \"data\",\n endpoint: _endpoint,\n fn_index,\n data: data2,\n time: /* @__PURE__ */ new Date()\n });\n fire_event({\n type: \"status\",\n endpoint: _endpoint,\n fn_index,\n stage: \"complete\",\n eta: output.average_duration,\n queue: false,\n time: /* @__PURE__ */ new Date()\n });\n } else {\n fire_event({\n type: \"status\",\n stage: \"error\",\n endpoint: _endpoint,\n fn_index,\n message: output.error,\n queue: false,\n time: /* @__PURE__ */ new Date()\n });\n }\n }).catch((e) => {\n fire_event({\n type: \"status\",\n stage: \"error\",\n message: e.message,\n endpoint: _endpoint,\n fn_index,\n queue: false,\n time: /* @__PURE__ */ new Date()\n });\n });\n } else if (protocol == \"ws\") {\n fire_event({\n type: \"status\",\n stage: \"pending\",\n queue: true,\n endpoint: _endpoint,\n fn_index,\n time: /* @__PURE__ */ new Date()\n });\n let url = new URL(`${ws_protocol}://${resolve_root(\n host,\n config.path,\n true\n )}\n\t\t\t\t\t\t\t/queue/join${url_params ? \"?\" + url_params : \"\"}`);\n if (jwt) {\n url.searchParams.set(\"__sign\", jwt);\n }\n websocket = WebSocket_factory(url);\n websocket.onclose = (evt) => {\n if (!evt.wasClean) {\n fire_event({\n type: \"status\",\n stage: \"error\",\n broken: true,\n message: BROKEN_CONNECTION_MSG,\n queue: true,\n endpoint: _endpoint,\n fn_index,\n time: /* @__PURE__ */ new Date()\n });\n }\n };\n websocket.onmessage = function(event) {\n const _data = JSON.parse(event.data);\n const { type, status, data: data2 } = handle_message(\n _data,\n last_status[fn_index]\n );\n if (type === \"update\" && status && !complete) {\n fire_event({\n type: \"status\",\n endpoint: _endpoint,\n fn_index,\n time: /* @__PURE__ */ new Date(),\n ...status\n });\n if (status.stage === \"error\") {\n websocket.close();\n }\n } else if (type === \"hash\") {\n websocket.send(JSON.stringify({ fn_index, session_hash }));\n return;\n } else if (type === \"data\") {\n websocket.send(JSON.stringify({ ...payload, session_hash }));\n } else if (type === \"complete\") {\n complete = status;\n } else if (type === \"log\") {\n fire_event({\n type: \"log\",\n log: data2.log,\n level: data2.level,\n endpoint: _endpoint,\n fn_index\n });\n } else if (type === \"generating\") {\n fire_event({\n type: \"status\",\n time: /* @__PURE__ */ new Date(),\n ...status,\n stage: status == null ? void 0 : status.stage,\n queue: true,\n endpoint: _endpoint,\n fn_index\n });\n }\n if (data2) {\n fire_event({\n type: \"data\",\n time: /* @__PURE__ */ new Date(),\n data: transform_files ? transform_output(\n data2.data,\n api_info,\n config.root,\n config.root_url\n ) : data2.data,\n endpoint: _endpoint,\n fn_index\n });\n if (complete) {\n fire_event({\n type: \"status\",\n time: /* @__PURE__ */ new Date(),\n ...complete,\n stage: status == null ? void 0 : status.stage,\n queue: true,\n endpoint: _endpoint,\n fn_index\n });\n websocket.close();\n }\n }\n };\n if (semiver(config.version || \"2.0.0\", \"3.6\") < 0) {\n addEventListener(\n \"open\",\n () => websocket.send(JSON.stringify({ hash: session_hash }))\n );\n }\n } else {\n fire_event({\n type: \"status\",\n stage: \"pending\",\n queue: true,\n endpoint: _endpoint,\n fn_index,\n time: /* @__PURE__ */ new Date()\n });\n var params = new URLSearchParams({\n fn_index: fn_index.toString(),\n session_hash\n }).toString();\n let url = new URL(\n `${http_protocol}//${resolve_root(\n host,\n config.path,\n true\n )}/queue/join?${params}`\n );\n eventSource = new EventSource(url);\n eventSource.onmessage = async function(event) {\n const _data = JSON.parse(event.data);\n const { type, status, data: data2 } = handle_message(\n _data,\n last_status[fn_index]\n );\n if (type === \"update\" && status && !complete) {\n fire_event({\n type: \"status\",\n endpoint: _endpoint,\n fn_index,\n time: /* @__PURE__ */ new Date(),\n ...status\n });\n if (status.stage === \"error\") {\n eventSource.close();\n }\n } else if (type === \"data\") {\n event_id = _data.event_id;\n let [_, status2] = await post_data2(\n `${http_protocol}//${resolve_root(\n host,\n config.path,\n true\n )}/queue/data`,\n {\n ...payload,\n session_hash,\n event_id\n },\n hf_token\n );\n if (status2 !== 200) {\n fire_event({\n type: \"status\",\n stage: \"error\",\n message: BROKEN_CONNECTION_MSG,\n queue: true,\n endpoint: _endpoint,\n fn_index,\n time: /* @__PURE__ */ new Date()\n });\n eventSource.close();\n }\n } else if (type === \"complete\") {\n complete = status;\n } else if (type === \"log\") {\n fire_event({\n type: \"log\",\n log: data2.log,\n level: data2.level,\n endpoint: _endpoint,\n fn_index\n });\n } else if (type === \"generating\") {\n fire_event({\n type: \"status\",\n time: /* @__PURE__ */ new Date(),\n ...status,\n stage: status == null ? void 0 : status.stage,\n queue: true,\n endpoint: _endpoint,\n fn_index\n });\n }\n if (data2) {\n fire_event({\n type: \"data\",\n time: /* @__PURE__ */ new Date(),\n data: transform_files ? transform_output(\n data2.data,\n api_info,\n config.root,\n config.root_url\n ) : data2.data,\n endpoint: _endpoint,\n fn_index\n });\n if (complete) {\n fire_event({\n type: \"status\",\n time: /* @__PURE__ */ new Date(),\n ...complete,\n stage: status == null ? void 0 : status.stage,\n queue: true,\n endpoint: _endpoint,\n fn_index\n });\n eventSource.close();\n }\n }\n };\n }\n });\n function fire_event(event) {\n const narrowed_listener_map = listener_map;\n const listeners = narrowed_listener_map[event.type] || [];\n listeners == null ? void 0 : listeners.forEach((l) => l(event));\n }\n function on(eventType, listener) {\n const narrowed_listener_map = listener_map;\n const listeners = narrowed_listener_map[eventType] || [];\n narrowed_listener_map[eventType] = listeners;\n listeners == null ? void 0 : listeners.push(listener);\n return { on, off, cancel, destroy };\n }\n function off(eventType, listener) {\n const narrowed_listener_map = listener_map;\n let listeners = narrowed_listener_map[eventType] || [];\n listeners = listeners == null ? void 0 : listeners.filter((l) => l !== listener);\n narrowed_listener_map[eventType] = listeners;\n return { on, off, cancel, destroy };\n }\n async function cancel() {\n const _status = {\n stage: \"complete\",\n queue: false,\n time: /* @__PURE__ */ new Date()\n };\n complete = _status;\n fire_event({\n ..._status,\n type: \"status\",\n endpoint: _endpoint,\n fn_index\n });\n let cancel_request = {};\n if (protocol === \"ws\") {\n if (websocket && websocket.readyState === 0) {\n websocket.addEventListener(\"open\", () => {\n websocket.close();\n });\n } else {\n websocket.close();\n }\n cancel_request = { fn_index, session_hash };\n } else {\n eventSource.close();\n cancel_request = { event_id };\n }\n try {\n await fetch_implementation(\n `${http_protocol}//${resolve_root(\n host,\n config.path,\n true\n )}/reset`,\n {\n headers: { \"Content-Type\": \"application/json\" },\n method: \"POST\",\n body: JSON.stringify(cancel_request)\n }\n );\n } catch (e) {\n console.warn(\n \"The `/reset` endpoint could not be called. Subsequent endpoint results may be unreliable.\"\n );\n }\n }\n function destroy() {\n for (const event_type in listener_map) {\n listener_map[event_type].forEach((fn2) => {\n off(event_type, fn2);\n });\n }\n }\n return {\n on,\n off,\n cancel,\n destroy\n };\n }\n async function component_server(component_id, fn_name, data) {\n var _a;\n const headers = { \"Content-Type\": \"application/json\" };\n if (hf_token) {\n headers.Authorization = `Bearer ${hf_token}`;\n }\n let root_url;\n let component = config.components.find(\n (comp) => comp.id === component_id\n );\n if ((_a = component == null ? void 0 : component.props) == null ? void 0 : _a.root_url) {\n root_url = component.props.root_url;\n } else {\n root_url = `${http_protocol}//${resolve_root(\n host,\n config.path,\n true\n )}/`;\n }\n const response = await fetch_implementation(\n `${root_url}component_server/`,\n {\n method: \"POST\",\n body: JSON.stringify({\n data,\n component_id,\n fn_name,\n session_hash\n }),\n headers\n }\n );\n if (!response.ok) {\n throw new Error(\n \"Could not connect to component server: \" + response.statusText\n );\n }\n const output = await response.json();\n return output;\n }\n async function view_api(config2) {\n if (api)\n return api;\n const headers = { \"Content-Type\": \"application/json\" };\n if (hf_token) {\n headers.Authorization = `Bearer ${hf_token}`;\n }\n let response;\n if (semiver(config2.version || \"2.0.0\", \"3.30\") < 0) {\n response = await fetch_implementation(\n \"https://gradio-space-api-fetcher-v2.hf.space/api\",\n {\n method: \"POST\",\n body: JSON.stringify({\n serialize: false,\n config: JSON.stringify(config2)\n }),\n headers\n }\n );\n } else {\n response = await fetch_implementation(`${config2.root}/info`, {\n headers\n });\n }\n if (!response.ok) {\n throw new Error(BROKEN_CONNECTION_MSG);\n }\n let api_info = await response.json();\n if (\"api\" in api_info) {\n api_info = api_info.api;\n }\n if (api_info.named_endpoints[\"/predict\"] && !api_info.unnamed_endpoints[\"0\"]) {\n api_info.unnamed_endpoints[0] = api_info.named_endpoints[\"/predict\"];\n }\n const x = transform_api_info(api_info, config2, api_map);\n return x;\n }\n });\n }\n async function handle_blob2(endpoint, data, api_info, token) {\n const blob_refs = await walk_and_store_blobs(\n data,\n void 0,\n [],\n true,\n api_info\n );\n return Promise.all(\n blob_refs.map(async ({ path, blob, type }) => {\n if (blob) {\n const file_url = (await upload_files2(endpoint, [blob], token)).files[0];\n return { path, file_url, type, name: blob == null ? void 0 : blob.name };\n }\n return { path, type };\n })\n ).then((r) => {\n r.forEach(({ path, file_url, type, name }) => {\n if (type === \"Gallery\") {\n update_object(data, file_url, path);\n } else if (file_url) {\n const file = new FileData({ path: file_url, orig_name: name });\n update_object(data, file, path);\n }\n });\n return data;\n });\n }\n}\nconst { post_data, upload_files, client, handle_blob } = api_factory(\n fetch,\n (...args) => new WebSocket(...args)\n);\nfunction transform_output(data, api_info, root_url, remote_url) {\n return data.map((d, i) => {\n var _a, _b, _c, _d;\n if (((_b = (_a = api_info == null ? void 0 : api_info.returns) == null ? void 0 : _a[i]) == null ? void 0 : _b.component) === \"File\") {\n return normalise_file(d, root_url, remote_url);\n } else if (((_d = (_c = api_info == null ? void 0 : api_info.returns) == null ? void 0 : _c[i]) == null ? void 0 : _d.component) === \"Gallery\") {\n return d.map((img) => {\n return Array.isArray(img) ? [normalise_file(img[0], root_url, remote_url), img[1]] : [normalise_file(img, root_url, remote_url), null];\n });\n } else if (typeof d === \"object\" && d.path) {\n return normalise_file(d, root_url, remote_url);\n }\n return d;\n });\n}\nfunction get_type(type, component, serializer, signature_type) {\n switch (type.type) {\n case \"string\":\n return \"string\";\n case \"boolean\":\n return \"boolean\";\n case \"number\":\n return \"number\";\n }\n if (serializer === \"JSONSerializable\" || serializer === \"StringSerializable\") {\n return \"any\";\n } else if (serializer === \"ListStringSerializable\") {\n return \"string[]\";\n } else if (component === \"Image\") {\n return signature_type === \"parameter\" ? \"Blob | File | Buffer\" : \"string\";\n } else if (serializer === \"FileSerializable\") {\n if ((type == null ? void 0 : type.type) === \"array\") {\n return signature_type === \"parameter\" ? \"(Blob | File | Buffer)[]\" : `{ name: string; data: string; size?: number; is_file?: boolean; orig_name?: string}[]`;\n }\n return signature_type === \"parameter\" ? \"Blob | File | Buffer\" : `{ name: string; data: string; size?: number; is_file?: boolean; orig_name?: string}`;\n } else if (serializer === \"GallerySerializable\") {\n return signature_type === \"parameter\" ? \"[(Blob | File | Buffer), (string | null)][]\" : `[{ name: string; data: string; size?: number; is_file?: boolean; orig_name?: string}, (string | null))][]`;\n }\n}\nfunction get_description(type, serializer) {\n if (serializer === \"GallerySerializable\") {\n return \"array of [file, label] tuples\";\n } else if (serializer === \"ListStringSerializable\") {\n return \"array of strings\";\n } else if (serializer === \"FileSerializable\") {\n return \"array of files or single file\";\n }\n return type.description;\n}\nfunction transform_api_info(api_info, config, api_map) {\n const new_data = {\n named_endpoints: {},\n unnamed_endpoints: {}\n };\n for (const key in api_info) {\n const cat = api_info[key];\n for (const endpoint in cat) {\n const dep_index = config.dependencies[endpoint] ? endpoint : api_map[endpoint.replace(\"/\", \"\")];\n const info = cat[endpoint];\n new_data[key][endpoint] = {};\n new_data[key][endpoint].parameters = {};\n new_data[key][endpoint].returns = {};\n new_data[key][endpoint].type = config.dependencies[dep_index].types;\n new_data[key][endpoint].parameters = info.parameters.map(\n ({ label, component, type, serializer }) => ({\n label,\n component,\n type: get_type(type, component, serializer, \"parameter\"),\n description: get_description(type, serializer)\n })\n );\n new_data[key][endpoint].returns = info.returns.map(\n ({ label, component, type, serializer }) => ({\n label,\n component,\n type: get_type(type, component, serializer, \"return\"),\n description: get_description(type, serializer)\n })\n );\n }\n }\n return new_data;\n}\nasync function get_jwt(space, token) {\n try {\n const r = await fetch(`https://huggingface.co/api/spaces/${space}/jwt`, {\n headers: {\n Authorization: `Bearer ${token}`\n }\n });\n const jwt = (await r.json()).token;\n return jwt || false;\n } catch (e) {\n console.error(e);\n return false;\n }\n}\nfunction update_object(object, newValue, stack) {\n while (stack.length > 1) {\n object = object[stack.shift()];\n }\n object[stack.shift()] = newValue;\n}\nasync function walk_and_store_blobs(param, type = void 0, path = [], root = false, api_info = void 0) {\n if (Array.isArray(param)) {\n let blob_refs = [];\n await Promise.all(\n param.map(async (v, i) => {\n var _a;\n let new_path = path.slice();\n new_path.push(i);\n const array_refs = await walk_and_store_blobs(\n param[i],\n root ? ((_a = api_info == null ? void 0 : api_info.parameters[i]) == null ? void 0 : _a.component) || void 0 : type,\n new_path,\n false,\n api_info\n );\n blob_refs = blob_refs.concat(array_refs);\n })\n );\n return blob_refs;\n } else if (globalThis.Buffer && param instanceof globalThis.Buffer) {\n const is_image = type === \"Image\";\n return [\n {\n path,\n blob: is_image ? false : new NodeBlob([param]),\n type\n }\n ];\n } else if (typeof param === \"object\") {\n let blob_refs = [];\n for (let key in param) {\n if (param.hasOwnProperty(key)) {\n let new_path = path.slice();\n new_path.push(key);\n blob_refs = blob_refs.concat(\n await walk_and_store_blobs(\n param[key],\n void 0,\n new_path,\n false,\n api_info\n )\n );\n }\n }\n return blob_refs;\n }\n return [];\n}\nfunction skip_queue(id, config) {\n var _a, _b, _c, _d;\n return !(((_b = (_a = config == null ? void 0 : config.dependencies) == null ? void 0 : _a[id]) == null ? void 0 : _b.queue) === null ? config.enable_queue : (_d = (_c = config == null ? void 0 : config.dependencies) == null ? void 0 : _c[id]) == null ? void 0 : _d.queue) || false;\n}\nasync function resolve_config(fetch_implementation, endpoint, token) {\n const headers = {};\n if (token) {\n headers.Authorization = `Bearer ${token}`;\n }\n if (typeof window !== \"undefined\" && window.gradio_config && location.origin !== \"http://localhost:9876\" && !window.gradio_config.dev_mode) {\n const path = window.gradio_config.root;\n const config = window.gradio_config;\n config.root = resolve_root(endpoint, config.root, false);\n return { ...config, path };\n } else if (endpoint) {\n let response = await fetch_implementation(`${endpoint}/config`, {\n headers\n });\n if (response.status === 200) {\n const config = await response.json();\n config.path = config.path ?? \"\";\n config.root = endpoint;\n return config;\n }\n throw new Error(\"Could not get config.\");\n }\n throw new Error(\"No config or app endpoint found\");\n}\nasync function check_space_status(id, type, status_callback) {\n let endpoint = type === \"subdomain\" ? `https://huggingface.co/api/spaces/by-subdomain/${id}` : `https://huggingface.co/api/spaces/${id}`;\n let response;\n let _status;\n try {\n response = await fetch(endpoint);\n _status = response.status;\n if (_status !== 200) {\n throw new Error();\n }\n response = await response.json();\n } catch (e) {\n status_callback({\n status: \"error\",\n load_status: \"error\",\n message: \"Could not get space status\",\n detail: \"NOT_FOUND\"\n });\n return;\n }\n if (!response || _status !== 200)\n return;\n const {\n runtime: { stage },\n id: space_name\n } = response;\n switch (stage) {\n case \"STOPPED\":\n case \"SLEEPING\":\n status_callback({\n status: \"sleeping\",\n load_status: \"pending\",\n message: \"Space is asleep. Waking it up...\",\n detail: stage\n });\n setTimeout(() => {\n check_space_status(id, type, status_callback);\n }, 1e3);\n break;\n case \"PAUSED\":\n status_callback({\n status: \"paused\",\n load_status: \"error\",\n message: \"This space has been paused by the author. If you would like to try this demo, consider duplicating the space.\",\n detail: stage,\n discussions_enabled: await discussions_enabled(space_name)\n });\n break;\n case \"RUNNING\":\n case \"RUNNING_BUILDING\":\n status_callback({\n status: \"running\",\n load_status: \"complete\",\n message: \"\",\n detail: stage\n });\n break;\n case \"BUILDING\":\n status_callback({\n status: \"building\",\n load_status: \"pending\",\n message: \"Space is building...\",\n detail: stage\n });\n setTimeout(() => {\n check_space_status(id, type, status_callback);\n }, 1e3);\n break;\n default:\n status_callback({\n status: \"space_error\",\n load_status: \"error\",\n message: \"This space is experiencing an issue.\",\n detail: stage,\n discussions_enabled: await discussions_enabled(space_name)\n });\n break;\n }\n}\nfunction handle_message(data, last_status) {\n const queue = true;\n switch (data.msg) {\n case \"send_data\":\n return { type: \"data\" };\n case \"send_hash\":\n return { type: \"hash\" };\n case \"queue_full\":\n return {\n type: \"update\",\n status: {\n queue,\n message: QUEUE_FULL_MSG,\n stage: \"error\",\n code: data.code,\n success: data.success\n }\n };\n case \"estimation\":\n return {\n type: \"update\",\n status: {\n queue,\n stage: last_status || \"pending\",\n code: data.code,\n size: data.queue_size,\n position: data.rank,\n eta: data.rank_eta,\n success: data.success\n }\n };\n case \"progress\":\n return {\n type: \"update\",\n status: {\n queue,\n stage: \"pending\",\n code: data.code,\n progress_data: data.progress_data,\n success: data.success\n }\n };\n case \"log\":\n return { type: \"log\", data };\n case \"process_generating\":\n return {\n type: \"generating\",\n status: {\n queue,\n message: !data.success ? data.output.error : null,\n stage: data.success ? \"generating\" : \"error\",\n code: data.code,\n progress_data: data.progress_data,\n eta: data.average_duration\n },\n data: data.success ? data.output : null\n };\n case \"process_completed\":\n if (\"error\" in data.output) {\n return {\n type: \"update\",\n status: {\n queue,\n message: data.output.error,\n stage: \"error\",\n code: data.code,\n success: data.success\n }\n };\n }\n return {\n type: \"complete\",\n status: {\n queue,\n message: !data.success ? data.output.error : void 0,\n stage: data.success ? \"complete\" : \"error\",\n code: data.code,\n progress_data: data.progress_data,\n eta: data.output.average_duration\n },\n data: data.success ? data.output : null\n };\n case \"process_starts\":\n return {\n type: \"update\",\n status: {\n queue,\n stage: \"pending\",\n code: data.code,\n size: data.rank,\n position: 0,\n success: data.success\n }\n };\n }\n return { type: \"none\", status: { stage: \"error\", queue } };\n}\nexport {\n FileData,\n api_factory,\n client,\n duplicate,\n get_fetchable_url_or_file,\n normalise_file,\n post_data,\n prepare_files,\n upload,\n upload_files\n};\n","export function mount_css(url: string, target: HTMLElement): Promise {\n\tconst existing_link = document.querySelector(`link[href='${url}']`);\n\n\tif (existing_link) return Promise.resolve();\n\n\tconst link = document.createElement(\"link\");\n\tlink.rel = \"stylesheet\";\n\tlink.href = url;\n\n\treturn new Promise((res, rej) => {\n\t\tlink.addEventListener(\"load\", () => res());\n\t\tlink.addEventListener(\"error\", () => {\n\t\t\tconsole.error(`Unable to preload CSS for ${url}`);\n\t\t\tres();\n\t\t});\n\t\ttarget.appendChild(link);\n\t});\n}\n","import \"@gradio/theme/src/reset.css\";\nimport \"@gradio/theme/src/global.css\";\nimport \"@gradio/theme/src/pollen.css\";\nimport \"@gradio/theme/src/typography.css\";\nimport { client, upload_files } from \"@gradio/client\";\nimport { mount_css } from \"./css\";\nimport type Index from \"./Index.svelte\";\n\nimport type { ThemeMode } from \"./types\";\n\n//@ts-ignore\nimport * as svelte from \"./svelte/svelte.js\";\n\ndeclare let BUILD_MODE: string;\ndeclare let GRADIO_VERSION: string;\n\nconst ENTRY_CSS = \"__ENTRY_CSS__\";\n\nlet FONTS: string | [];\n\nFONTS = \"__FONTS_CSS__\";\n\nlet IndexComponent: typeof Index;\nfunction create_custom_element(): void {\n\tconst o = {\n\t\tSvelteComponent: svelte.SvelteComponent\n\t};\n\tfor (const key in svelte) {\n\t\tif (key === \"SvelteComponent\") continue;\n\t\tif (key === \"SvelteComponentDev\") {\n\t\t\t//@ts-ignore\n\t\t\to[key] = o[\"SvelteComponent\"];\n\t\t} else {\n\t\t\t//@ts-ignore\n\t\t\to[key] = svelte[key];\n\t\t}\n\t}\n\t//@ts-ignore\n\twindow.__gradio__svelte__internal = o;\n\tclass GradioApp extends HTMLElement {\n\t\tcontrol_page_title: string | null;\n\t\tinitial_height: string;\n\t\tis_embed: string;\n\t\tcontainer: string;\n\t\tinfo: string | true;\n\t\tautoscroll: string | null;\n\t\teager: string | null;\n\t\ttheme_mode: ThemeMode | null;\n\t\thost: string | null;\n\t\tspace: string | null;\n\t\tsrc: string | null;\n\t\tapp?: Index;\n\t\tloading: boolean;\n\t\tupdating: { name: string; value: string } | false;\n\n\t\tconstructor() {\n\t\t\tsuper();\n\t\t\tthis.host = this.getAttribute(\"host\");\n\t\t\tthis.space = this.getAttribute(\"space\");\n\t\t\tthis.src = this.getAttribute(\"src\");\n\n\t\t\tthis.control_page_title = this.getAttribute(\"control_page_title\");\n\t\t\tthis.initial_height = this.getAttribute(\"initial_height\") ?? \"300px\"; // default: 300px\n\t\t\tthis.is_embed = this.getAttribute(\"embed\") ?? \"true\"; // default: true\n\t\t\tthis.container = this.getAttribute(\"container\") ?? \"true\"; // default: true\n\t\t\tthis.info = this.getAttribute(\"info\") ?? true; // default: true\n\t\t\tthis.autoscroll = this.getAttribute(\"autoscroll\");\n\t\t\tthis.eager = this.getAttribute(\"eager\");\n\t\t\tthis.theme_mode = this.getAttribute(\"theme_mode\") as ThemeMode | null;\n\t\t\tthis.updating = false;\n\t\t\tthis.loading = false;\n\t\t}\n\n\t\tasync connectedCallback(): Promise {\n\t\t\tIndexComponent = (await import(\"./Index.svelte\")).default;\n\t\t\tthis.loading = true;\n\n\t\t\tif (this.app) {\n\t\t\t\tthis.app.$destroy();\n\t\t\t}\n\n\t\t\tif (typeof FONTS !== \"string\") {\n\t\t\t\tFONTS.forEach((f) => mount_css(f, document.head));\n\t\t\t}\n\n\t\t\tawait mount_css(ENTRY_CSS, document.head);\n\n\t\t\tconst event = new CustomEvent(\"domchange\", {\n\t\t\t\tbubbles: true,\n\t\t\t\tcancelable: false,\n\t\t\t\tcomposed: true\n\t\t\t});\n\n\t\t\tconst observer = new MutationObserver((mutations) => {\n\t\t\t\tthis.dispatchEvent(event);\n\t\t\t});\n\n\t\t\tobserver.observe(this, { childList: true });\n\n\t\t\tthis.app = new IndexComponent({\n\t\t\t\ttarget: this,\n\t\t\t\tprops: {\n\t\t\t\t\t// embed source\n\t\t\t\t\tspace: this.space ? this.space.trim() : this.space,\n\t\t\t\t\tsrc: this.src ? this.src.trim() : this.src,\n\t\t\t\t\thost: this.host ? this.host.trim() : this.host,\n\t\t\t\t\t// embed info\n\t\t\t\t\tinfo: this.info === \"false\" ? false : true,\n\t\t\t\t\tcontainer: this.container === \"false\" ? false : true,\n\t\t\t\t\tis_embed: this.is_embed === \"false\" ? false : true,\n\t\t\t\t\tinitial_height: this.initial_height,\n\t\t\t\t\teager: this.eager === \"true\" ? true : false,\n\t\t\t\t\t// gradio meta info\n\t\t\t\t\tversion: GRADIO_VERSION,\n\t\t\t\t\ttheme_mode: this.theme_mode,\n\t\t\t\t\t// misc global behaviour\n\t\t\t\t\tautoscroll: this.autoscroll === \"true\" ? true : false,\n\t\t\t\t\tcontrol_page_title: this.control_page_title === \"true\" ? true : false,\n\t\t\t\t\t// injectables\n\t\t\t\t\tclient,\n\t\t\t\t\tupload_files,\n\t\t\t\t\t// for gradio docs\n\t\t\t\t\t// TODO: Remove -- i think this is just for autoscroll behavhiour, app vs embeds\n\t\t\t\t\tapp_mode: window.__gradio_mode__ === \"app\"\n\t\t\t\t}\n\t\t\t});\n\n\t\t\tif (this.updating) {\n\t\t\t\tthis.setAttribute(this.updating.name, this.updating.value);\n\t\t\t}\n\n\t\t\tthis.loading = false;\n\t\t}\n\n\t\tstatic get observedAttributes(): [\"src\", \"space\", \"host\"] {\n\t\t\treturn [\"src\", \"space\", \"host\"];\n\t\t}\n\n\t\tattributeChangedCallback(\n\t\t\tname: string,\n\t\t\told_val: string,\n\t\t\tnew_val: string\n\t\t): void {\n\t\t\tif (\n\t\t\t\t(name === \"host\" || name === \"space\" || name === \"src\") &&\n\t\t\t\tnew_val !== old_val\n\t\t\t) {\n\t\t\t\tthis.updating = { name, value: new_val };\n\t\t\t\tif (this.loading) return;\n\n\t\t\t\tif (this.app) {\n\t\t\t\t\tthis.app.$destroy();\n\t\t\t\t}\n\n\t\t\t\tthis.space = null;\n\t\t\t\tthis.host = null;\n\t\t\t\tthis.src = null;\n\n\t\t\t\tif (name === \"host\") {\n\t\t\t\t\tthis.host = new_val;\n\t\t\t\t} else if (name === \"space\") {\n\t\t\t\t\tthis.space = new_val;\n\t\t\t\t} else if (name === \"src\") {\n\t\t\t\t\tthis.src = new_val;\n\t\t\t\t}\n\n\t\t\t\tthis.app = new IndexComponent({\n\t\t\t\t\ttarget: this,\n\t\t\t\t\tprops: {\n\t\t\t\t\t\t// embed source\n\t\t\t\t\t\tspace: this.space ? this.space.trim() : this.space,\n\t\t\t\t\t\tsrc: this.src ? this.src.trim() : this.src,\n\t\t\t\t\t\thost: this.host ? this.host.trim() : this.host,\n\t\t\t\t\t\t// embed info\n\t\t\t\t\t\tinfo: this.info === \"false\" ? false : true,\n\t\t\t\t\t\tcontainer: this.container === \"false\" ? false : true,\n\t\t\t\t\t\tis_embed: this.is_embed === \"false\" ? false : true,\n\t\t\t\t\t\tinitial_height: this.initial_height,\n\t\t\t\t\t\teager: this.eager === \"true\" ? true : false,\n\t\t\t\t\t\t// gradio meta info\n\t\t\t\t\t\tversion: GRADIO_VERSION,\n\t\t\t\t\t\ttheme_mode: this.theme_mode,\n\t\t\t\t\t\t// misc global behaviour\n\t\t\t\t\t\tautoscroll: this.autoscroll === \"true\" ? true : false,\n\t\t\t\t\t\tcontrol_page_title:\n\t\t\t\t\t\t\tthis.control_page_title === \"true\" ? true : false,\n\t\t\t\t\t\t// injectables\n\t\t\t\t\t\tclient,\n\t\t\t\t\t\tupload_files,\n\t\t\t\t\t\t// for gradio docs\n\t\t\t\t\t\t// TODO: Remove -- i think this is just for autoscroll behavhiour, app vs embeds\n\t\t\t\t\t\tapp_mode: window.__gradio_mode__ === \"app\"\n\t\t\t\t\t}\n\t\t\t\t});\n\n\t\t\t\tthis.updating = false;\n\t\t\t}\n\t\t}\n\t}\n\tif (!customElements.get(\"gradio-app\"))\n\t\tcustomElements.define(\"gradio-app\", GradioApp);\n}\n\ncreate_custom_element();\n"],"file":"assets/index-50ad4c77.js"}