mirror of
https://github.com/csunny/DB-GPT.git
synced 2025-07-31 15:47:05 +00:00
feat(ChatData): ChatData Strean response
1.ChatData Stream response
This commit is contained in:
parent
afb5fd1445
commit
1c5ed2808b
@ -267,8 +267,12 @@ class ApiCall:
|
||||
all_context = self.__deal_error_md_tags(
|
||||
all_context, api_context
|
||||
)
|
||||
# all_context = all_context.replace(
|
||||
# api_context, api_status.api_result
|
||||
# )
|
||||
|
||||
all_context = all_context.replace(
|
||||
api_context, api_status.api_result
|
||||
api_context, self.to_view_antv_vis(api_status)
|
||||
)
|
||||
else:
|
||||
if api_status.status == Status.FAILED.value:
|
||||
@ -335,6 +339,7 @@ class ApiCall:
|
||||
else:
|
||||
api_status.location.append(api_index)
|
||||
|
||||
|
||||
def __to_view_param_str(self, api_status):
|
||||
param = {}
|
||||
if api_status.name:
|
||||
@ -356,6 +361,27 @@ class ApiCall:
|
||||
result = ET.tostring(api_call_element, encoding="utf-8")
|
||||
return result.decode("utf-8")
|
||||
|
||||
def to_view_antv_vis(self, api_status: PluginStatus):
|
||||
api_call_element = ET.Element("chart-view")
|
||||
api_call_element.text = self.__to_antv_vis_param(api_status)
|
||||
result = ET.tostring(api_call_element, encoding="utf-8")
|
||||
return result.decode("utf-8")
|
||||
|
||||
def __to_antv_vis_param(self, api_status: PluginStatus):
|
||||
param = {}
|
||||
if api_status.name:
|
||||
param["type"] = api_status.name
|
||||
if api_status.args:
|
||||
param["sql"] = api_status.args["sql"]
|
||||
|
||||
if api_status.err_msg:
|
||||
param["err_msg"] = api_status.err_msg
|
||||
|
||||
if api_status.api_result:
|
||||
param["data"] = api_status.api_result
|
||||
|
||||
return json.dumps(param)
|
||||
|
||||
def run(self, llm_text):
|
||||
if self.__is_need_wait_plugin_call(llm_text):
|
||||
# wait api call generate complete
|
||||
@ -406,3 +432,38 @@ class ApiCall:
|
||||
value.err_msg = str(e)
|
||||
value.end_time = datetime.now().timestamp() * 1000
|
||||
return self.api_view_context(llm_text, True)
|
||||
|
||||
|
||||
def display_sql_llmvis(self, llm_text, sql_run_func):
|
||||
"""
|
||||
Render charts using the Antv standard protocol
|
||||
Args:
|
||||
llm_text: LLM response text
|
||||
sql_run_func: sql run function
|
||||
|
||||
Returns:
|
||||
ChartView protocol text
|
||||
"""
|
||||
if self.__is_need_wait_plugin_call(llm_text):
|
||||
# wait api call generate complete
|
||||
if self.check_last_plugin_call_ready(llm_text):
|
||||
self.update_from_context(llm_text)
|
||||
for key, value in self.plugin_status_map.items():
|
||||
if value.status == Status.TODO.value:
|
||||
value.status = Status.RUNNING.value
|
||||
logging.info(f"sql展示执行:{value.name},{value.args}")
|
||||
try:
|
||||
sql = value.args["sql"]
|
||||
if sql is not None and len(sql) > 0:
|
||||
data_df = sql_run_func(sql)
|
||||
value.api_result = data_df.apply(lambda row: row.to_dict(), axis=1).to_list()
|
||||
value.status = Status.COMPLETED.value
|
||||
else:
|
||||
value.status = Status.FAILED.value
|
||||
value.err_msg = "No executable sql!"
|
||||
|
||||
except Exception as e:
|
||||
value.status = Status.FAILED.value
|
||||
value.err_msg = str(e)
|
||||
value.end_time = datetime.now().timestamp() * 1000
|
||||
return self.api_view_context(llm_text, True)
|
@ -22,7 +22,7 @@ class ChatExcel(BaseChat):
|
||||
"""a Excel analyzer to analyze Excel Data"""
|
||||
|
||||
chat_scene: str = ChatScene.ChatExcel.value()
|
||||
chat_retention_rounds = 1
|
||||
chat_retention_rounds = 2
|
||||
|
||||
def __init__(self, chat_param: Dict):
|
||||
"""Chat Excel Module Initialization
|
||||
@ -88,4 +88,4 @@ class ChatExcel(BaseChat):
|
||||
|
||||
def stream_plugin_call(self, text):
|
||||
text = text.replace("\n", " ")
|
||||
return self.api_call.run_display_sql(text, self.excel_reader.get_df_by_sql_ex)
|
||||
return self.api_call.display_sql_llmvis(text, self.excel_reader.get_df_by_sql_ex)
|
||||
|
@ -33,11 +33,18 @@ _DEFAULT_TEMPLATE_ZH = """
|
||||
{response}
|
||||
"""
|
||||
|
||||
RESPONSE_FORMAT_SIMPLE = {
|
||||
_RESPONSE_FORMAT_SIMPLE_ZH = {
|
||||
"DataAnalysis": "数据内容分析总结",
|
||||
"ColumnAnalysis": [{"column name1": "字段1介绍,专业术语解释(请尽量简单明了)"}],
|
||||
"AnalysisProgram": ["1.分析方案1,图表展示方式1", "2.分析方案2,图表展示方式2"],
|
||||
}
|
||||
_RESPONSE_FORMAT_SIMPLE_EN = {
|
||||
"DataAnalysis": "Data content analysis summary",
|
||||
"ColumnAnalysis": [{"column name1": "Introduction to Column 1 and explanation of professional terms (please try to be as simple and clear as possible)"}],
|
||||
"AnalysisProgram": ["1. Analysis plan 1, chart display type 1", "2. Analysis plan 2, chart display type 2"],
|
||||
}
|
||||
|
||||
RESPONSE_FORMAT_SIMPLE =(_RESPONSE_FORMAT_SIMPLE_EN if CFG.LANGUAGE == "en" else _RESPONSE_FORMAT_SIMPLE_ZH)
|
||||
|
||||
|
||||
_DEFAULT_TEMPLATE = (
|
||||
|
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
@ -1,4 +0,0 @@
|
||||
(self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[670],{80882:function(e,t,r){"use strict";r.d(t,{Z:function(){return i}});var n=r(87462),l=r(67294),o={icon:{tag:"svg",attrs:{viewBox:"64 64 896 896",focusable:"false"},children:[{tag:"path",attrs:{d:"M884 256h-75c-5.1 0-9.9 2.5-12.9 6.6L512 654.2 227.9 262.6c-3-4.1-7.8-6.6-12.9-6.6h-75c-6.5 0-10.3 7.4-6.5 12.7l352.6 486.1c12.8 17.6 39 17.6 51.7 0l352.6-486.1c3.9-5.3.1-12.7-6.4-12.7z"}}]},name:"down",theme:"outlined"},a=r(84089),i=l.forwardRef(function(e,t){return l.createElement(a.Z,(0,n.Z)({},e,{ref:t,icon:o}))})},54068:function(e,t,r){(window.__NEXT_P=window.__NEXT_P||[]).push(["/knowledge/[knowledgeName]/[id]",function(){return r(21543)}])},21543:function(e,t,r){"use strict";r.r(t),r.d(t,{default:function(){return X}});var n=r(85893),l=r(67294),o=r(11163),a=r(94184),i=r.n(a),s=r(50344),c=r(64217),u=r(96159),p=r(53124),m=r(80882),d=r(1142);let f=e=>{let{children:t}=e,{getPrefixCls:r}=l.useContext(p.E_),n=r("breadcrumb");return l.createElement("li",{className:`${n}-separator`,"aria-hidden":"true"},""===t?t:t||"/")};f.__ANT_BREADCRUMB_SEPARATOR=!0;var b=function(e,t){var r={};for(var n in e)Object.prototype.hasOwnProperty.call(e,n)&&0>t.indexOf(n)&&(r[n]=e[n]);if(null!=e&&"function"==typeof Object.getOwnPropertySymbols)for(var l=0,n=Object.getOwnPropertySymbols(e);l<n.length;l++)0>t.indexOf(n[l])&&Object.prototype.propertyIsEnumerable.call(e,n[l])&&(r[n[l]]=e[n[l]]);return r};function g(e,t,r,n){if(null==r)return null;let{className:o,onClick:a}=t,s=b(t,["className","onClick"]),u=Object.assign(Object.assign({},(0,c.Z)(s,{data:!0,aria:!0})),{onClick:a});return void 0!==n?l.createElement("a",Object.assign({},u,{className:i()(`${e}-link`,o),href:n}),r):l.createElement("span",Object.assign({},u,{className:i()(`${e}-link`,o)}),r)}var O=function(e,t){var r={};for(var n in e)Object.prototype.hasOwnProperty.call(e,n)&&0>t.indexOf(n)&&(r[n]=e[n]);if(null!=e&&"function"==typeof Object.getOwnPropertySymbols)for(var l=0,n=Object.getOwnPropertySymbols(e);l<n.length;l++)0>t.indexOf(n[l])&&Object.prototype.propertyIsEnumerable.call(e,n[l])&&(r[n[l]]=e[n[l]]);return r};let y=e=>{let{prefixCls:t,separator:r="/",children:n,menu:o,overlay:a,dropdownProps:i,href:s}=e,c=(e=>{if(o||a){let r=Object.assign({},i);if(o){let e=o||{},{items:t}=e,n=O(e,["items"]);r.menu=Object.assign(Object.assign({},n),{items:null==t?void 0:t.map((e,t)=>{var{key:r,title:n,label:o,path:a}=e,i=O(e,["key","title","label","path"]);let c=null!=o?o:n;return a&&(c=l.createElement("a",{href:`${s}${a}`},c)),Object.assign(Object.assign({},i),{key:null!=r?r:t,label:c})})})}else a&&(r.overlay=a);return l.createElement(d.Z,Object.assign({placement:"bottom"},r),l.createElement("span",{className:`${t}-overlay-link`},e,l.createElement(m.Z,null)))}return e})(n);return null!=c?l.createElement(l.Fragment,null,l.createElement("li",null,c),r&&l.createElement(f,null,r)):null},h=e=>{let{prefixCls:t,children:r,href:n}=e,o=O(e,["prefixCls","children","href"]),{getPrefixCls:a}=l.useContext(p.E_),i=a("breadcrumb",t);return l.createElement(y,Object.assign({},o,{prefixCls:i}),g(i,o,r,n))};h.__ANT_BREADCRUMB_ITEM=!0;var v=r(14747),j=r(67968),x=r(45503);let E=e=>{let{componentCls:t,iconCls:r}=e;return{[t]:Object.assign(Object.assign({},(0,v.Wf)(e)),{color:e.itemColor,fontSize:e.fontSize,[r]:{fontSize:e.iconFontSize},ol:{display:"flex",flexWrap:"wrap",margin:0,padding:0,listStyle:"none"},a:Object.assign({color:e.linkColor,transition:`color ${e.motionDurationMid}`,padding:`0 ${e.paddingXXS}px`,borderRadius:e.borderRadiusSM,height:e.lineHeight*e.fontSize,display:"inline-block",marginInline:-e.marginXXS,"&:hover":{color:e.linkHoverColor,backgroundColor:e.colorBgTextHover}},(0,v.Qy)(e)),"li:last-child":{color:e.lastItemColor},[`${t}-separator`]:{marginInline:e.separatorMargin,color:e.separatorColor},[`${t}-link`]:{[`
|
||||
> ${r} + span,
|
||||
> ${r} + a
|
||||
`]:{marginInlineStart:e.marginXXS}},[`${t}-overlay-link`]:{borderRadius:e.borderRadiusSM,height:e.lineHeight*e.fontSize,display:"inline-block",padding:`0 ${e.paddingXXS}px`,marginInline:-e.marginXXS,[`> ${r}`]:{marginInlineStart:e.marginXXS,fontSize:e.fontSizeIcon},"&:hover":{color:e.linkHoverColor,backgroundColor:e.colorBgTextHover,a:{color:e.linkHoverColor}},a:{"&:hover":{backgroundColor:"transparent"}}},[`&${e.componentCls}-rtl`]:{direction:"rtl"}})}};var S=(0,j.Z)("Breadcrumb",e=>{let t=(0,x.TS)(e,{});return[E(t)]},e=>({itemColor:e.colorTextDescription,lastItemColor:e.colorText,iconFontSize:e.fontSize,linkColor:e.colorTextDescription,linkHoverColor:e.colorText,separatorColor:e.colorTextDescription,separatorMargin:e.marginXS})),k=function(e,t){var r={};for(var n in e)Object.prototype.hasOwnProperty.call(e,n)&&0>t.indexOf(n)&&(r[n]=e[n]);if(null!=e&&"function"==typeof Object.getOwnPropertySymbols)for(var l=0,n=Object.getOwnPropertySymbols(e);l<n.length;l++)0>t.indexOf(n[l])&&Object.prototype.propertyIsEnumerable.call(e,n[l])&&(r[n[l]]=e[n[l]]);return r};function C(e){let{breadcrumbName:t,children:r}=e,n=k(e,["breadcrumbName","children"]),l=Object.assign({title:t},n);return r&&(l.menu={items:r.map(e=>{var{breadcrumbName:t}=e;return Object.assign(Object.assign({},k(e,["breadcrumbName"])),{title:t})})}),l}var _=function(e,t){var r={};for(var n in e)Object.prototype.hasOwnProperty.call(e,n)&&0>t.indexOf(n)&&(r[n]=e[n]);if(null!=e&&"function"==typeof Object.getOwnPropertySymbols)for(var l=0,n=Object.getOwnPropertySymbols(e);l<n.length;l++)0>t.indexOf(n[l])&&Object.prototype.propertyIsEnumerable.call(e,n[l])&&(r[n[l]]=e[n[l]]);return r};let w=(e,t)=>{if(void 0===t)return t;let r=(t||"").replace(/^\//,"");return Object.keys(e).forEach(t=>{r=r.replace(`:${t}`,e[t])}),r},N=e=>{let t;let{prefixCls:r,separator:n="/",style:o,className:a,rootClassName:m,routes:d,items:b,children:O,itemRender:h,params:v={}}=e,j=_(e,["prefixCls","separator","style","className","rootClassName","routes","items","children","itemRender","params"]),{getPrefixCls:x,direction:E,breadcrumb:k}=l.useContext(p.E_),N=x("breadcrumb",r),[$,P]=S(N),T=(0,l.useMemo)(()=>b||(d?d.map(C):null),[b,d]),R=(e,t,r,n,l)=>{if(h)return h(e,t,r,n);let o=function(e,t){if(void 0===e.title||null===e.title)return null;let r=Object.keys(t).join("|");return"object"==typeof e.title?e.title:String(e.title).replace(RegExp(`:(${r})`,"g"),(e,r)=>t[r]||e)}(e,t);return g(N,e,o,l)};if(T&&T.length>0){let e=[],r=b||d;t=T.map((t,o)=>{let{path:a,key:i,type:s,menu:u,overlay:p,onClick:m,className:d,separator:b,dropdownProps:g}=t,O=w(v,a);void 0!==O&&e.push(O);let h=null!=i?i:o;if("separator"===s)return l.createElement(f,{key:h},b);let j={},x=o===T.length-1;u?j.menu=u:p&&(j.overlay=p);let{href:E}=t;return e.length&&void 0!==O&&(E=`#/${e.join("/")}`),l.createElement(y,Object.assign({key:h},j,(0,c.Z)(t,{data:!0,aria:!0}),{className:d,dropdownProps:g,href:E,separator:x?"":n,onClick:m,prefixCls:N}),R(t,v,r,e,E))})}else if(O){let e=(0,s.Z)(O).length;t=(0,s.Z)(O).map((t,r)=>t?(0,u.Tm)(t,{separator:r===e-1?"":n,key:r}):t)}let I=i()(N,null==k?void 0:k.className,{[`${N}-rtl`]:"rtl"===E},a,m,P),X=Object.assign(Object.assign({},null==k?void 0:k.style),o);return $(l.createElement("nav",Object.assign({className:I,style:X},j),l.createElement("ol",null,t)))};N.Item=h,N.Separator=f;var $=r(85813),P=r(32983),T=r(67421),R=r(50489),I=r(92039),X=function(){let e=(0,o.useRouter)(),{t}=(0,T.$G)(),[r,a]=(0,l.useState)([]),{query:{id:i,knowledgeName:s}}=(0,o.useRouter)(),c=async()=>{let[e,t]=await (0,R.Vx)((0,R.gV)(s,{document_id:i,page:1,page_size:20}));a(null==t?void 0:t.data)};return(0,l.useEffect)(()=>{s&&i&&c()},[i,s]),(0,n.jsxs)("div",{className:"h-full overflow-y-scroll",children:[(0,n.jsx)(N,{className:"m-6",items:[{title:"Knowledge",onClick(){e.back()},path:"/knowledge"},{title:s}]}),(null==r?void 0:r.length)>0?null==r?void 0:r.map(e=>(0,n.jsxs)($.Z,{title:(0,n.jsxs)(n.Fragment,{children:[(0,I._)(e.doc_type),(0,n.jsx)("span",{children:e.doc_name})]}),children:[(0,n.jsxs)("p",{className:"font-semibold",children:[t("Content"),":"]}),(0,n.jsx)("p",{children:null==e?void 0:e.content}),(0,n.jsxs)("p",{className:"font-semibold",children:[t("Meta_Data"),": "]}),(0,n.jsx)("p",{children:null==e?void 0:e.meta_info})]},e.id)):(0,n.jsx)(P.Z,{image:P.Z.PRESENTED_IMAGE_DEFAULT})]})}}},function(e){e.O(0,[885,44,479,365,442,813,924,104,747,774,888,179],function(){return e(e.s=54068)}),_N_E=e.O()}]);
|
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
@ -1 +0,0 @@
|
||||
self.__BUILD_MANIFEST=function(s,c,a,e,t,d,n,b,i,k,f,h,u,j,g){return{__rewrites:{beforeFiles:[],afterFiles:[],fallback:[]},"/":[k,s,c,a,d,f,"static/chunks/539-dcd22f1f6b99ebee.js","static/chunks/pages/index-02331aee6ba6a7fc.js"],"/_error":["static/chunks/pages/_error-dee72aff9b2e2c12.js"],"/agent":[s,c,n,e,t,b,"static/chunks/pages/agent-dbb8ff019a2c71c2.js"],"/chat":["static/chunks/pages/chat-197b88d512cc5b14.js"],"/chat/[scene]/[id]":["static/chunks/pages/chat/[scene]/[id]-ac949685f9639f4f.js"],"/database":[s,c,a,e,t,d,h,"static/chunks/643-d2492f894de95084.js","static/chunks/pages/database-ee0ff45d60094b3c.js"],"/knowledge":[i,s,c,n,e,t,b,d,u,j,"static/chunks/pages/knowledge-fe88b529e40b0db6.js"],"/knowledge/[knowledgeName]/[id]":[i,s,c,n,e,t,b,u,j,"static/chunks/pages/knowledge/[knowledgeName]/[id]-288d3a43e60ca611.js"],"/models":[i,s,c,a,g,h,"static/chunks/pages/models-58b1d88132bdc672.js"],"/prompt":[k,s,c,a,g,f,"static/chunks/45-9ff739c09925ea35.js","static/chunks/61-d2f6cba798a49339.js","static/chunks/367-5b7ab3e8e2777607.js","static/chunks/pages/prompt-741cf72801523b25.js"],sortedPages:["/","/_app","/_error","/agent","/chat","/chat/[scene]/[id]","/database","/knowledge","/knowledge/[knowledgeName]/[id]","/models","/prompt"]}}("static/chunks/44-941ba89e47567ba3.js","static/chunks/479-68b22ee2b7a47fb3.js","static/chunks/9-bb2c54d5c06ba4bf.js","static/chunks/442-197e6cbc1e54109a.js","static/chunks/813-cce9482e33f2430c.js","static/chunks/411-d9eba2657c72f766.js","static/chunks/365-2cad3676ccbb1b1a.js","static/chunks/924-ba8e16df4d61ff5c.js","static/chunks/75fc9c18-36ac6f5a83376cd3.js","static/chunks/29107295-90b90cb30c825230.js","static/chunks/270-2f094a936d056513.js","static/chunks/928-74244889bd7f2699.js","static/chunks/104-953a3907bb8d7bfd.js","static/chunks/747-ec60adab93bb6758.js","static/chunks/815-fa0a8da2d0a72116.js"),self.__BUILD_MANIFEST_CB&&self.__BUILD_MANIFEST_CB();
|
@ -0,0 +1 @@
|
||||
self.__BUILD_MANIFEST=function(s,c,a,e,t,n,b,d,k,h,i,u){return{__rewrites:{beforeFiles:[],afterFiles:[],fallback:[]},"/":[b,s,c,a,n,d,"static/chunks/539-dcd22f1f6b99ebee.js","static/chunks/pages/index-195d2b50dab810dd.js"],"/_error":["static/chunks/pages/_error-dee72aff9b2e2c12.js"],"/agent":[s,c,e,k,t,"static/chunks/pages/agent-25358689f05784e9.js"],"/chat":["static/chunks/pages/chat-4b4742a8b97ead61.js"],"/chat/[scene]/[id]":["static/chunks/pages/chat/[scene]/[id]-c4ba90e8044f953b.js"],"/database":[s,c,a,e,t,n,h,"static/chunks/643-d8f53f40dd3c5b40.js","static/chunks/pages/database-ed7e37a49de751e1.js"],"/knowledge":[i,s,c,e,k,t,n,"static/chunks/63-d9f1013be8e4599a.js","static/chunks/pages/knowledge-c73b240310994685.js"],"/knowledge/chunk":[e,t,"static/chunks/pages/knowledge/chunk-e27c2e349b868b28.js"],"/models":[i,s,c,a,u,h,"static/chunks/pages/models-fab5e316babfc6de.js"],"/prompt":[b,s,c,a,u,d,"static/chunks/45-9ff739c09925ea35.js","static/chunks/61-d2f6cba798a49339.js","static/chunks/367-2a6e805cba0c79d3.js","static/chunks/pages/prompt-f7fa6931310ae8ba.js"],sortedPages:["/","/_app","/_error","/agent","/chat","/chat/[scene]/[id]","/database","/knowledge","/knowledge/chunk","/models","/prompt"]}}("static/chunks/44-941ba89e47567ba3.js","static/chunks/479-68b22ee2b7a47fb3.js","static/chunks/9-bb2c54d5c06ba4bf.js","static/chunks/442-197e6cbc1e54109a.js","static/chunks/813-cce9482e33f2430c.js","static/chunks/411-d9eba2657c72f766.js","static/chunks/29107295-90b90cb30c825230.js","static/chunks/719-5a18c3c696beda6f.js","static/chunks/365-2cad3676ccbb1b1a.js","static/chunks/928-74244889bd7f2699.js","static/chunks/75fc9c18-a784766a129ec5fb.js","static/chunks/815-fa0a8da2d0a72116.js"),self.__BUILD_MANIFEST_CB&&self.__BUILD_MANIFEST_CB();
|
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
1
pilot/server/static/knowledge/chunk/index.html
Normal file
1
pilot/server/static/knowledge/chunk/index.html
Normal file
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
Loading…
Reference in New Issue
Block a user