nsc-react-component 2.14.19 → 2.14.21

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.
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","names":["AppstoreOutlined","CheckOutlined","ColumnHeightOutlined","SearchOutlined","SortAscendingOutlined","SortDescendingOutlined","RedoOutlined","isEmptyObj","Store","PageStore","utils","React","DndProvider","BodyRow","DndContextType","IBodyRowProps","treeUtils","styles","BodyRowComponent","HTML5Backend","withZhLocale","Resizable","getLess","getNode","NoData","getStorage","config","ResizeableTitle","props","onResize","width","restProps","_objectWithoutProperties","_excluded","createElement","height","draggableOpts","enableUserSelectHack","NSCTable","Component","constructor","_autoType","_defineProperty","createRef","onBeforeLoad","load","header","cell","index","e","_ref","size","cols","state","nextColumns","_objectSpread","setState","ev","data","JSON","parse","_this","eventType","payload","tableSize","dragIndex","hoverIndex","drag","target","dragNode","record","targetNode","moveArray","ids","parentNode","getChildNodeIds","params","id","parentId","attribute","moveRow","store","reload","modal","type","storePrefix","autoType","content","dataSource","columns","loading","pagination","activeIndex","searchText","fieldOption","searchColor","sorts","filterParams","sortType","sorter","sortInfo","defaultSort","checkColumn","defaultCheck","selectedRowKeys","selectedRowDatas","_ref2","listeners","listenersProps","restStore","_excluded2","storeProps","model","component","options","callback","dataChanged","modelData","paging","getPagination","onErrorLoad","err","response","autoLoad","Object","assign","current","componentDidMount","resizeColumn","setData","window","addEventListener","listenMessage","componentWillUnmount","removeEventListener","componentDidUpdate","prevProps","preState","resetColumn","newCols","colss","map","col","temp","onHeaderCell","column","handleResize","push","clearSelectColor","getPaginationByStore","onChange","filters","extra","autoOnChange","autoSort","autoPagination","isMultiple","Array","isArray","handlePagination","p","currentKey","pageSizeKey","pageSize","ascParams","getSortParam","onChangeFn","getStore","getModel","handleSearch","val","filterColumn","checkedValue","length","_message","warning","filterColumns","newCol","includes","dataIndex","initShow","sortState","arguments","undefined","sortSearch","orderItems","field","asc","order","forEach","v","stringify","getColumns","sortFields","defaultShowCols","filter","ellipsis","render","showTitle","text","title","className","style","indexOf","sortOrder","multiple","item","filterProps","obj","searchKey","Div","placeholder","concat","ref","tableSearchRef","filterDropdown","_ref3","setSelectedKeys","selectedKeys","confirm","clearFilters","_Space","_Button","onClick","_this$tableSearchRef$","newFilterParams","key","getValue","sortParam","filterIcon","renderToolBar","colLists","toolbar","tableTool","storeRequestConfig","tools","toolsClick","onToolClick","sizeItem","sortItem","sortContent","Fragment","cursor","color","sizeContent","_Checkbox","Group","bind","label","value","disabled","fontSize","_Popover","placement","trigger","overlayStyle","minWidth","maxWidth","marginRight","onRefresh","getSelectedRowKeys","getSelectedRowDatas","resetSelectedRowKeys","setSelectedRowKeys","setSelectedRowDatas","rowSelectionOnSelect","selected","rowKey","newSelectedRowKeys","newSelectedRowDatas","splice","rowSelectionOnSelectAll","selectedRows","changeRows","newids","newdatas","changeIds","_this$props$toolbar","omit","clickChangeColor","position","showSizeChanger","showQuickJumper","showTotal","total","_ref4","from","to","onRowFn","onRow","custom","onClickFn","event","rowClassName","clickRowStyle","newDataSource","getSearchMenuDatas","treeDatas","expandedRowKeys","openKeys","dragable","dragableProps","components","resizeProps","toolFlag","toolprops","show","showRowSelection","rowSelection","onSelect","onSelectAll","columnWidth","DefaultTable","_Table","_extends","childrenColumnName","sheitem","locale","emptyText","scroll","x","backend","dragUrl"],"sources":["../../../src/components/base/table/index.tsx"],"sourcesContent":["/*\r\n * @Descripttion:\r\n * @version:\r\n * @Author: rxzhu\r\n * @Date: 2021-03-23 08:46:20\r\n * @LastEditors: rxzhu\r\n * @LastEditTime: 2021-03-23 10:30:42\r\n */\r\nimport {\r\n AppstoreOutlined,\r\n CheckOutlined,\r\n ColumnHeightOutlined,\r\n SearchOutlined,\r\n SortAscendingOutlined,\r\n SortDescendingOutlined,\r\n RedoOutlined,\r\n} from \"@ant-design/icons\";\r\nimport { isEmptyObj } from \"@bj-nsc/functions\";\r\nimport Store, { PageStore, StoreProps } from \"@bj-nsc/msn\";\r\nimport { utils } from \"@bj-nsc/msn/lib/utils\";\r\nimport {\r\n Button,\r\n Checkbox,\r\n CheckboxOptionType,\r\n Menu,\r\n message,\r\n Popover,\r\n Space,\r\n Table,\r\n TableProps,\r\n Tooltip,\r\n} from \"antd\";\r\nimport { ColumnType, TablePaginationConfig } from \"antd/lib/table\";\r\nimport * as React from \"react\";\r\nimport { DndProvider } from \"react-dnd\";\r\nimport BodyRow, { DndContextType, IBodyRowProps } from \"../common/BodyRow\";\r\nimport treeUtils from \"../../treeUtils\";\r\nimport styles from \"./index.module.less\";\r\nconst { BodyRowComponent, HTML5Backend } = BodyRow;\r\nimport withZhLocale from \"../common/withZhLocale\";\r\nimport { Resizable } from \"react-resizable\";\r\nimport \"./resize.module.less\";\r\nimport { getLess, getNode } from \"../../utils\";\r\nimport NoData from \"../../base/common/NoData\";\r\nimport { getStorage } from \"@bj-nsc/functions\";\r\nimport config from \"../../config\";\r\nimport EllipseCell from \"../common/EllipseCell\";\r\ninterface IDragParams {\r\n id: string | number;\r\n ids: Array<string | number>;\r\n parentId: string | number;\r\n}\r\n// interface StoreProps {}\r\n\r\nexport type StoreType = \"PageStore\" | \"TreeStore\" | \"BaseStore\";\r\n\r\ninterface NSCTablePagination extends TablePaginationConfig {\r\n totalKey?: string;\r\n pageSizeKey?: string;\r\n currentKey?: string;\r\n}\r\n\r\ninterface ToolBarProps {\r\n show: boolean;\r\n tools?: Array<string>;\r\n onToolClick?: { onRefresh?: any; onSort?: any };\r\n}\r\ninterface NSCTableProps extends TableProps<any> {\r\n store?: StoreProps;\r\n showTotal?: boolean; // 是否显示总条数信息,默认true\r\n dragable?: boolean; // 是否可拖动, 默认false\r\n filterColumn?: boolean; // 是否支持过滤显示表格列, 默认true\r\n moveRow?: (params: IDragParams) => void; // 拖拽完成后的回调\r\n dragUrl?: string; // 保存拖拽排序的接口\r\n pagination?: false | NSCTablePagination;\r\n autoPagination?: boolean; // 组件是否自动处理分页\r\n autoSort?: boolean; //组件是否自动处理排序\r\n autoOnChange?: boolean; // 组件是否自动onChange, false则不做任何处理全部交给调用方\r\n resizeColumn?: boolean;\r\n sortFields?: Array<string>; //需要排序的字段Index\r\n toolbar?: ToolBarProps | boolean;\r\n autoSize?: boolean;\r\n sortSearch?: boolean; //是否添加排序查询,默认true\r\n // tableSize?: \"small\" | \"middle\" | \"default\" | \"auto\";\r\n // size?: \"small\" | \"middle\" | \"default\" | \"auto\";\r\n showRowSelection?: boolean;\r\n rowKey?: string;\r\n}\r\n\r\nexport type INSCTableProps = typeof NSCTable.defaultProps & NSCTableProps;\r\nexport { DndContextType, IBodyRowProps };\r\n\r\nconst ResizeableTitle = (props: any) => {\r\n const { onResize, width, ...restProps } = props;\r\n return (\r\n <Resizable\r\n width={width || 150}\r\n height={0}\r\n onResize={onResize}\r\n draggableOpts={{ enableUserSelectHack: false }}\r\n >\r\n <th {...restProps} />\r\n </Resizable>\r\n );\r\n};\r\nclass NSCTable extends React.Component<INSCTableProps, any> {\r\n static defaultProps = {\r\n dragable: false,\r\n showTotal: true,\r\n filterColumn: true,\r\n dragUrl: \"\",\r\n autoPagination: true,\r\n autoSort: true,\r\n autoOnChange: true,\r\n resizeColumn: true,\r\n toolbar: {\r\n show: true,\r\n onToolClick: {} as any,\r\n } as any,\r\n };\r\n\r\n store = {} as StoreProps;\r\n thIconRef = React.createRef<HTMLDivElement>();\r\n tableSearchRef = React.createRef<any>();\r\n\r\n listeners = {\r\n onBeforeLoad: null,\r\n load: null,\r\n };\r\n\r\n components = {\r\n header: {\r\n cell: ResizeableTitle,\r\n },\r\n };\r\n\r\n constructor(props) {\r\n super(props);\r\n let modal = props.type || \"auto\";\r\n let storePrefix = getStorage(\"store-pre-key\");\r\n let autoType = getStorage(\r\n storePrefix ? storePrefix + \"tableSize\" : \"tableSize\"\r\n );\r\n autoType = autoType?.content;\r\n this.state = {\r\n dataSource: [],\r\n columns: [],\r\n loading: false,\r\n pagination: {},\r\n activeIndex: -1,\r\n //搜索文本\r\n searchText: null,\r\n fieldOption: null,\r\n searchColor: null,\r\n cols: [],\r\n sorts: [],\r\n filterParams: {},\r\n tableSize: this.props.size || autoType || \"default\",\r\n sortType: \"single\",\r\n sorter: [], //记录当前排序字段\r\n sortInfo: {},\r\n defaultSort: true,\r\n checkColumn: [],\r\n defaultCheck: true,\r\n selectedRowKeys: [],\r\n selectedRowDatas: [],\r\n };\r\n if (props.store instanceof Store) {\r\n this.store = props.store;\r\n } else {\r\n const { listeners: listenersProps = {}, ...restStore } =\r\n props.store || {};\r\n const storeProps = {\r\n model: \"model\",\r\n component: this,\r\n listeners: {\r\n onBeforeLoad: (store, options) => {\r\n this.setState({ loading: true });\r\n utils.callback(listenersProps.onBeforeLoad, this, [store, options]);\r\n },\r\n dataChanged: (data, modelData, store) => {\r\n let paging = !(this.props.pagination === false);\r\n if (paging && !this.props.dataSource) {\r\n this.setState({\r\n dataSource: modelData,\r\n pagination: store.getPagination(),\r\n loading: false,\r\n activeIndex: -1,\r\n });\r\n } else {\r\n this.setState({ dataSource: modelData, loading: false });\r\n }\r\n\r\n utils.callback(listenersProps.dataChanged, this, [\r\n data,\r\n modelData,\r\n store,\r\n paging,\r\n ]);\r\n },\r\n load: (data, modelData, store) => {\r\n utils.callback(listenersProps.load, this, [data, modelData, store]);\r\n },\r\n onErrorLoad: (err, response) => {\r\n this.setState({ loading: false });\r\n utils.callback(listenersProps.onErrorLoad, this, [err, response]);\r\n },\r\n },\r\n data: restStore.data\r\n ? restStore.data\r\n : props.dataSource\r\n ? props.dataSource\r\n : null,\r\n ...restStore,\r\n autoLoad: restStore.autoLoad === false ? false : true,\r\n };\r\n this.store = new PageStore(\r\n Object.assign({}, storeProps, {\r\n pagination: { current: 1, ...this.props.pagination },\r\n })\r\n );\r\n }\r\n }\r\n\r\n handleResize =\r\n (index: any) =>\r\n (e: any, { size }: any) => {\r\n const { cols } = this.state;\r\n const nextColumns = [...cols];\r\n nextColumns[index] = {\r\n ...nextColumns[index],\r\n width: size.width,\r\n };\r\n this.setState({\r\n cols: nextColumns,\r\n });\r\n };\r\n\r\n componentDidMount() {\r\n const { resizeColumn } = this.props;\r\n if (!resizeColumn) {\r\n this.setState({ columns: [...this.props.columns] });\r\n } else {\r\n this.setState({ cols: [...this.props.columns] });\r\n }\r\n const store = this.props.store;\r\n if (store && store.data) {\r\n this.store.setData(store.data);\r\n }\r\n window.addEventListener(\"message\", this.listenMessage);\r\n }\r\n componentWillUnmount() {\r\n window.removeEventListener(\"message\", this.listenMessage);\r\n }\r\n listenMessage = (ev) => {\r\n const data = typeof ev.data === \"string\" ? JSON.parse(ev.data) : ev.data;\r\n let _this = this;\r\n if (data.eventType == \"changeTableSize\") {\r\n const { payload } = data;\r\n if (\r\n payload.size == \"default\" ||\r\n payload.size == \"small\" ||\r\n payload.size == \"middle\"\r\n ) {\r\n _this.setState({ tableSize: payload.size });\r\n }\r\n }\r\n };\r\n componentDidUpdate(prevProps, preState) {\r\n const { resizeColumn } = this.props;\r\n if (!resizeColumn) {\r\n if (this.props.columns !== prevProps.columns) {\r\n this.setState({ columns: this.props.columns });\r\n }\r\n } else {\r\n if (preState.cols !== this.state.cols) {\r\n this.resetColumn();\r\n }\r\n if (this.props.columns !== prevProps.columns) {\r\n this.setState({ cols: this.props.columns });\r\n }\r\n if (prevProps.size !== this.props.size) {\r\n this.setState({ tableSize: this.props.size });\r\n }\r\n }\r\n }\r\n\r\n resetColumn() {\r\n const { cols } = this.state;\r\n const newCols: any = [];\r\n let colss = cols || [];\r\n colss.map((col: any, index: any) => {\r\n let temp = {\r\n ...col,\r\n onHeaderCell: (column: { width: any }) => ({\r\n width: column.width,\r\n onResize: this.handleResize(index),\r\n }),\r\n };\r\n newCols.push(temp);\r\n });\r\n this.setState({\r\n columns: newCols,\r\n });\r\n }\r\n\r\n /**\r\n * 清除选中颜色\r\n */\r\n clearSelectColor() {\r\n this.setState({ activeIndex: -1 });\r\n return this;\r\n }\r\n\r\n getPaginationByStore() {\r\n return this.store.getPagination();\r\n }\r\n\r\n onChange(pagination, filters, sorter, extra) {\r\n const {\r\n autoOnChange = true,\r\n autoSort,\r\n autoPagination,\r\n onChange,\r\n store,\r\n } = this.props;\r\n const { filterParams } = this.state;\r\n const isMultiple = Array.isArray(sorter);\r\n if (autoOnChange === false || !store) {\r\n onChange && onChange(pagination, filters, sorter, extra);\r\n return;\r\n }\r\n const handlePagination = () => {\r\n let params = {} as {\r\n size?: string;\r\n pageSize?: string;\r\n ascs?: string;\r\n descs?: string;\r\n [propName: string]: string;\r\n };\r\n const paging = this.getPaginationByStore() || {};\r\n if (!isEmptyObj(pagination)) {\r\n const p = {\r\n [paging.currentKey || \"current\"]: pagination.current,\r\n [paging.pageSizeKey || \"size\"]: pagination.pageSize,\r\n };\r\n Object.assign(params, p);\r\n }\r\n let ascParams = this.getSortParam(sorter, true);\r\n if (isMultiple) {\r\n this.setState({ sorter });\r\n } else if (!isMultiple && !isEmptyObj(sorter)) {\r\n sorter.column &&\r\n this.setState({ sorter: [sorter], defaultSort: false });\r\n } else {\r\n this.setState({ sorter: [] });\r\n }\r\n params = { ...filterParams, ...params, ...ascParams };\r\n autoSort && this.store.reload({ params });\r\n };\r\n\r\n const onChangeFn = this.props.onChange;\r\n\r\n autoPagination && handlePagination();\r\n // 用户传了onChange保留用户自主处理表格变化的权力\r\n if (onChangeFn) {\r\n utils.callback(onChangeFn, this, [pagination, filters, sorter, extra]);\r\n }\r\n }\r\n\r\n getStore() {\r\n return this.store;\r\n }\r\n\r\n /**\r\n * 获取数据模型对象\r\n */\r\n getModel() {\r\n return this.store.getModel();\r\n }\r\n\r\n /**\r\n * 菜单搜索过滤显示\r\n * @param {String} val\r\n */\r\n handleSearch(val, fieldOption, searchColor) {\r\n this.setState({\r\n searchText: val,\r\n fieldOption: fieldOption,\r\n searchColor: searchColor,\r\n });\r\n }\r\n\r\n /**\r\n * 模块列表移动排序\r\n */\r\n moveRow = (dragIndex, hoverIndex, drag, target) => {\r\n const _this = this;\r\n let dragNode = drag.record;\r\n let targetNode = target.record;\r\n dragNode.moveArray(dragNode, targetNode);\r\n let ids = dragNode.parentNode.getChildNodeIds();\r\n let params = {\r\n id: dragNode.id,\r\n parentId: dragNode.attribute.parentId,\r\n ids: ids,\r\n };\r\n\r\n if (this.props.moveRow) {\r\n this.props.moveRow(params);\r\n } else {\r\n this.store.reload();\r\n }\r\n };\r\n\r\n filterColumn(checkedValue) {\r\n if (checkedValue.length == 0) {\r\n message.warning(\"至少显示一列!\");\r\n return;\r\n }\r\n const filterColumns = this.props.columns.map((col: ColumnType<{}>) => {\r\n const newCol = { ...col } as ColumnType<{}> & { initShow: boolean };\r\n if (checkedValue.includes(col.dataIndex)) {\r\n newCol.initShow = true;\r\n } else {\r\n newCol.initShow = false;\r\n }\r\n return newCol;\r\n });\r\n const { resizeColumn } = this.props;\r\n if (!resizeColumn) {\r\n this.setState({\r\n columns: filterColumns,\r\n checkColumn: checkedValue,\r\n defaultCheck: false,\r\n });\r\n } else {\r\n this.setState({\r\n cols: filterColumns,\r\n checkColumn: checkedValue,\r\n defaultCheck: false,\r\n });\r\n }\r\n }\r\n getSortParam(sorter, sortState = false) {\r\n const isMultiple = Array.isArray(sorter);\r\n const { sortSearch = true } = this.props;\r\n if (!sortSearch) {\r\n return {};\r\n }\r\n let sortInfo = {};\r\n let orderItems = [];\r\n if (!isEmptyObj(sorter) && !isMultiple && sorter.column) {\r\n orderItems = [\r\n {\r\n column: sorter.column.field || sorter.column.dataIndex,\r\n asc: sorter.order == \"ascend\",\r\n },\r\n ];\r\n if (sorter.column) sortInfo[sorter.column.dataIndex] = sorter.order;\r\n } else if (isMultiple) {\r\n sorter.forEach((v) => {\r\n sortInfo[v.column.dataIndex] = v.order;\r\n let field = v.column.field || v.column.dataIndex;\r\n orderItems.push({\r\n column: field,\r\n asc: v.order == \"ascend\",\r\n });\r\n });\r\n }\r\n if (sortState) {\r\n this.setState({\r\n sortInfo: sortInfo,\r\n });\r\n }\r\n return { orderItems: JSON.stringify(orderItems) };\r\n }\r\n getColumns() {\r\n const { columns, sortType, sortInfo } = this.state;\r\n const { sortFields = [] } = this.props;\r\n const defaultShowCols = columns.filter((cols) => cols.initShow !== false);\r\n const cols = defaultShowCols.map((col, index) => {\r\n if (col.ellipsis && !col.render) {\r\n col.ellipsis = {\r\n showTitle: false,\r\n };\r\n col.render = (text) => {\r\n return (\r\n <div title={text} className={getLess(styles, \"text\")} style={{ width: col.width }}>\r\n {text}\r\n </div>\r\n \r\n );\r\n };\r\n }\r\n\r\n if (sortFields.indexOf(col.dataIndex) > -1) {\r\n if (sortType == \"single\") {\r\n col.sorter = true;\r\n col.sortOrder = sortInfo[col.dataIndex]\r\n ? sortInfo[col.dataIndex]\r\n : null;\r\n } else if (sortType == \"multiple\") {\r\n col.sorter = { multiple: index };\r\n col.sortOrder = sortInfo[col.dataIndex]\r\n ? sortInfo[col.dataIndex]\r\n : null;\r\n }\r\n }\r\n return col;\r\n });\r\n cols.map((item, index) => {\r\n if (!isEmptyObj(item.filterProps)) {\r\n let obj = { ...item };\r\n const { type, props, searchKey } = item.filterProps;\r\n let Div = null;\r\n let text = item.title;\r\n Div = getNode(type, {\r\n placeholder: `搜索${text}`,\r\n ...props,\r\n ref: this.tableSearchRef,\r\n });\r\n obj = {\r\n filterDropdown: ({\r\n setSelectedKeys,\r\n selectedKeys,\r\n confirm,\r\n clearFilters,\r\n }) => {\r\n return (\r\n <div className={getLess(styles, \"search\")}>\r\n <div className={getLess(styles, \"space\")}>{Div}</div>\r\n <Space>\r\n <Button\r\n type=\"primary\"\r\n onClick={() => {\r\n confirm();\r\n const { filterParams } = this.state;\r\n let newFilterParams = { ...filterParams };\r\n let key = item.field || item.dataIndex;\r\n newFilterParams[key] =\r\n this.tableSearchRef.current?.getValue();\r\n this.setState({\r\n filterParams: { ...newFilterParams },\r\n });\r\n const sortParam = this.getSortParam(this.state.sorter);\r\n this.store.load({\r\n params: { ...newFilterParams, ...sortParam },\r\n });\r\n }}\r\n size=\"small\"\r\n className={getLess(styles, \"button\")}\r\n >\r\n 查询\r\n </Button>\r\n </Space>\r\n </div>\r\n );\r\n },\r\n filterIcon: () => {\r\n return <SearchOutlined />;\r\n },\r\n ...obj,\r\n };\r\n cols[index] = obj;\r\n }\r\n });\r\n return cols;\r\n }\r\n renderToolBar() {\r\n let { tableSize, columns, sortType } = this.state;\r\n let { filterColumn, columns: colLists, toolbar } = this.props;\r\n const { tableTool, storeRequestConfig = {} } = config();\r\n let tools = [\"refresh\", \"size\", \"sort\", \"column\"];\r\n let toolsClick = {} as any;\r\n if (toolbar == true) {\r\n tools = toolbar.onToolClick\r\n ? toolbar.onToolClick\r\n : [\"refresh\", \"size\", \"sort\", \"column\"];\r\n } else {\r\n tools = toolbar.tools\r\n ? toolbar.tools\r\n : tableTool.tools\r\n ? tableTool.tools\r\n : tools;\r\n toolsClick = toolbar.onToolClick ? toolbar.onToolClick : {};\r\n }\r\n const sizeItem = [\r\n { title: \"宽松\", key: \"default\" },\r\n { title: \"中等\", key: \"middle\" },\r\n { title: \"紧凑\", key: \"small\" },\r\n ];\r\n const sortItem = [\r\n { title: \"单字段排序\", key: \"single\" },\r\n { title: \"多字段排序\", key: \"multiple\" },\r\n ];\r\n const sortContent = (\r\n <>\r\n <div\r\n className={getLess(styles, \"cotent-title\")}\r\n style={{\r\n cursor: this.state.defaultSort ? \"not-allowed\" : \"pointer\",\r\n color: this.state.defaultSort && \"rgba(0,0,0,.45)\",\r\n }}\r\n onClick={() => {\r\n if (this.state.defaultSort) {\r\n return;\r\n }\r\n this.setState({ sorter: [], sortInfo: {}, defaultSort: true });\r\n const params = { ...this.state.filterParams };\r\n this.store.reload({ params });\r\n }}\r\n >\r\n 恢复默认排序\r\n </div>\r\n {sortItem.map((item, index) => {\r\n return (\r\n <div\r\n key={item.key}\r\n onClick={() => {\r\n this.setState({\r\n sorter: [],\r\n sortInfo: {},\r\n sortType: item.key,\r\n defaultSort: false,\r\n });\r\n const params = { ...this.state.filterParams };\r\n this.store.reload({ params });\r\n }}\r\n >\r\n {sortType == item.key ? (\r\n <a>\r\n <div className={getLess(styles, \"content-tiem\")}>\r\n <div style={{ width: 20 }}>\r\n {sortType == item.key && <CheckOutlined />}\r\n </div>\r\n <div> {item.title}</div>\r\n </div>\r\n </a>\r\n ) : (\r\n <div className={getLess(styles, \"content-tiem\")}>\r\n <div style={{ width: 20 }}></div>\r\n <div> {item.title}</div>\r\n </div>\r\n )}\r\n </div>\r\n );\r\n })}\r\n {this.state.sorter.length > 0 && (\r\n <>\r\n <div\r\n className={getLess(styles, \"cotent-title\")}\r\n style={{ color: \"rgba(0,0,0,.45)\" }}\r\n >\r\n 当前排序\r\n </div>\r\n {this.state.sorter.map((item, index) => {\r\n return (\r\n <div className={getLess(styles, \"content-tiem\")} key={index}>\r\n <div style={{ width: 20 }}>\r\n {item.order == \"ascend\" ? (\r\n <SortAscendingOutlined />\r\n ) : (\r\n <SortDescendingOutlined />\r\n )}\r\n </div>\r\n <div> {item.column.title}</div>\r\n </div>\r\n );\r\n })}\r\n </>\r\n )}\r\n </>\r\n );\r\n const sizeContent = (\r\n <>\r\n <div className={getLess(styles, \"cotent-title\")}>表格密度</div>\r\n {sizeItem.map((item, index) => {\r\n return (\r\n <div\r\n key={item.key}\r\n onClick={() => {\r\n this.setState({\r\n tableSize: item.key,\r\n });\r\n }}\r\n >\r\n {tableSize == item.key ? (\r\n <a>\r\n <div className={getLess(styles, \"content-tiem\")}>\r\n <div style={{ width: 20 }}>\r\n {tableSize == item.key && <CheckOutlined />}\r\n </div>\r\n <div> {item.title}</div>\r\n </div>\r\n </a>\r\n ) : (\r\n <div className={getLess(styles, \"content-tiem\")}>\r\n <div style={{ width: 20 }}></div>\r\n <div> {item.title}</div>\r\n </div>\r\n )}\r\n </div>\r\n );\r\n })}\r\n </>\r\n );\r\n\r\n const defaultShowCols = columns.filter((cols) => cols.initShow !== false);\r\n\r\n const content = (\r\n <Checkbox.Group\r\n onChange={this.filterColumn.bind(this)}\r\n options={colLists.map(\r\n (col: ColumnType<{}> & { filterColumn: boolean; dataIndex: any }) => {\r\n if (!col.dataIndex) {\r\n col.dataIndex = col.title;\r\n }\r\n return {\r\n label: col.title,\r\n value: col.dataIndex,\r\n disabled: col.filterColumn === false,\r\n } as CheckboxOptionType;\r\n }\r\n )}\r\n // defaultValue={defaultShowCols.map((col) => col.dataIndex)}\r\n value={\r\n this.state.defaultCheck\r\n ? defaultShowCols.map((col) => col.dataIndex)\r\n : this.state.checkColumn\r\n }\r\n ></Checkbox.Group>\r\n );\r\n return (\r\n <div className={getLess(styles, \"table-tool-bar\")}>\r\n {tools.indexOf(\"column\") > -1 && (\r\n <div style={{ fontSize: 14 }}>\r\n <Popover\r\n title=\"选择显示的列\"\r\n content={content}\r\n placement=\"bottomRight\"\r\n trigger=\"click\"\r\n overlayStyle={{ minWidth: 410, maxWidth: 450 }}\r\n // getPopupContainer={() => this.thIconRef.current}\r\n >\r\n <AppstoreOutlined className={getLess(styles, \"app-store-icon\")} />\r\n </Popover>\r\n </div>\r\n )}\r\n {tools.indexOf(\"sort\") > -1 && (\r\n <div style={{ marginRight: 8, fontSize: 14 }}>\r\n <Popover placement=\"bottom\" content={sortContent} trigger=\"click\">\r\n <SortAscendingOutlined />\r\n </Popover>\r\n </div>\r\n )}\r\n {tools.indexOf(\"size\") > -1 && (\r\n <div style={{ marginRight: 8, fontSize: 14 }}>\r\n <Popover placement=\"bottom\" content={sizeContent} trigger=\"click\">\r\n <ColumnHeightOutlined />\r\n </Popover>\r\n </div>\r\n )}\r\n {tools.indexOf(\"refresh\") > -1 && (\r\n <div\r\n style={{ marginRight: 8, fontSize: 14, cursor: \"pointer\" }}\r\n onClick={() => {\r\n const params = { ...this.state.filterParams };\r\n if (toolsClick.onRefresh) {\r\n toolsClick.onRefresh();\r\n } else {\r\n this.store.load({ params });\r\n }\r\n }}\r\n >\r\n <RedoOutlined />\r\n </div>\r\n )}\r\n </div>\r\n );\r\n }\r\n getSelectedRowKeys() {\r\n return this.state.selectedRowKeys;\r\n }\r\n getSelectedRowDatas() {\r\n return this.state.selectedRowDatas;\r\n }\r\n resetSelectedRowKeys() {\r\n this.setState({\r\n selectedRowKeys: [],\r\n selectedRowDatas: [],\r\n });\r\n }\r\n setSelectedRowKeys(data: Array<String | Number>) {\r\n this.setState({\r\n selectedRowKeys: data,\r\n });\r\n }\r\n setSelectedRowDatas(data: Array<Object>) {\r\n this.setState({\r\n selectedRowDatas: data,\r\n });\r\n }\r\n rowSelectionOnSelect(record: any, selected: any) {\r\n const { selectedRowKeys, selectedRowDatas } = this.state;\r\n let { rowKey = \"id\" } = this.props;\r\n let newSelectedRowKeys = [...selectedRowKeys];\r\n let newSelectedRowDatas = [...selectedRowDatas];\r\n if (selected) {\r\n newSelectedRowKeys = [...newSelectedRowKeys, record[rowKey]];\r\n newSelectedRowDatas = [...newSelectedRowDatas, record];\r\n } else {\r\n selectedRowKeys.map((item: any, index: any) => {\r\n if (item === record[rowKey]) {\r\n newSelectedRowKeys.splice(index, 1);\r\n }\r\n });\r\n selectedRowDatas.map((item: any, index: any) => {\r\n if (item[rowKey] === record[rowKey]) {\r\n newSelectedRowDatas.splice(index, 1);\r\n }\r\n });\r\n }\r\n this.setState({\r\n selectedRowKeys: newSelectedRowKeys,\r\n selectedRowDatas: newSelectedRowDatas,\r\n });\r\n }\r\n rowSelectionOnSelectAll(selected: any, selectedRows: any, changeRows: any) {\r\n const { selectedRowKeys, selectedRowDatas } = this.state;\r\n const { rowKey = \"id\" } = this.props;\r\n let newids: any = [];\r\n let newdatas: any = [];\r\n if (changeRows.length > 0) {\r\n let changeIds = changeRows.map((item: any) => item[rowKey]);\r\n if (selected) {\r\n newids = [...selectedRowKeys, ...changeIds];\r\n newdatas = [...selectedRowDatas, ...changeRows];\r\n } else {\r\n selectedRowKeys.map((item: any, index: any) => {\r\n if (changeIds.indexOf(item) == -1) {\r\n newids.push(item);\r\n }\r\n });\r\n selectedRowDatas.map((item: any, index: any) => {\r\n if (changeIds.indexOf(item[rowKey]) == -1) {\r\n newdatas.push(item);\r\n }\r\n });\r\n }\r\n } else {\r\n newids = [...selectedRowKeys];\r\n newdatas = [...selectedRowDatas];\r\n }\r\n this.setState({\r\n selectedRowKeys: [...newids],\r\n selectedRowDatas: [...newdatas],\r\n });\r\n }\r\n render() {\r\n let _this = this,\r\n {\r\n loading,\r\n dataSource,\r\n pagination = {},\r\n searchText,\r\n fieldOption,\r\n searchColor,\r\n tableSize,\r\n } = this.state,\r\n props = utils.omit(\r\n this.props,\r\n [\r\n \"store\",\r\n \"onChange\",\r\n \"columns\",\r\n \"resetColumn\",\r\n \"toolbar\",\r\n \"sortFields\",\r\n \"filterColumn\",\r\n \"sortSearch\",\r\n \"showRowSelection\",\r\n ],\r\n {\r\n rowKey: \"id\",\r\n clickChangeColor: false,\r\n }\r\n );\r\n if (props.pagination !== false) {\r\n props.pagination = {\r\n position: [\"bottomRight\"],\r\n showSizeChanger: true,\r\n showQuickJumper: true,\r\n ...props.pagination,\r\n ...pagination,\r\n };\r\n if (props.showTotal == true) {\r\n props.pagination.showTotal = function (total, [from, to]) {\r\n // return \"显示 \" + from + \" - \" + to + \"条,共 \" + total + \" 条\";\r\n return \"共 \" + total + \" 条\";\r\n };\r\n }\r\n }\r\n props.onChange = function (pagination, filters, sorter, extra) {\r\n _this.onChange(pagination, filters, sorter, extra);\r\n };\r\n if (props.clickChangeColor) {\r\n const onRowFn = props.onRow;\r\n props.onRow = function (record, index) {\r\n var custom = onRowFn ? onRowFn(record, index) : {};\r\n const onClickFn = custom.onClick;\r\n custom.onClick = (event) => {\r\n _this.setState({\r\n activeIndex: index, //获取点击行的索引\r\n });\r\n utils.callback(onClickFn, _this, [event]);\r\n };\r\n return custom;\r\n };\r\n props.rowClassName = function (record, index) {\r\n return index === _this.state.activeIndex\r\n ? `${styles.clickRowStyle}`\r\n : \"\";\r\n };\r\n }\r\n let newDataSource = [];\r\n if (searchText) {\r\n const data = treeUtils.getSearchMenuDatas(\r\n this,\r\n searchText,\r\n fieldOption,\r\n searchColor\r\n );\r\n newDataSource = data.treeDatas;\r\n props.expandedRowKeys = data.openKeys;\r\n } else {\r\n newDataSource = dataSource;\r\n }\r\n props.store = props.store || {};\r\n props.store.autoLoad = props.store.autoLoad === false ? false : true;\r\n const { dragable } = _this.props;\r\n const dragableProps =\r\n dragable === true\r\n ? {\r\n components: BodyRowComponent,\r\n onRow: (record, index) => ({\r\n index,\r\n record,\r\n moveRow: this.moveRow,\r\n }),\r\n }\r\n : {};\r\n let { resizeColumn } = this.props;\r\n\r\n const resizeProps =\r\n resizeColumn === true ? { components: this.components } : null;\r\n const { tableTool } = config();\r\n let toolFlag = true;\r\n let toolprops =\r\n this.props.toolbar === false || this.props.toolbar?.show === false\r\n ? false\r\n : true;\r\n if (!toolprops) {\r\n toolFlag = toolprops;\r\n } else {\r\n toolFlag = tableTool.show === false ? false : true;\r\n }\r\n if (this.props.showRowSelection) {\r\n const { rowSelection = {} } = this.props;\r\n props = {\r\n ...props,\r\n rowSelection: {\r\n selectedRowKeys: this.state.selectedRowKeys,\r\n onSelect: this.rowSelectionOnSelect.bind(this),\r\n onSelectAll: this.rowSelectionOnSelectAll.bind(this),\r\n columnWidth: 40,\r\n ...rowSelection,\r\n },\r\n };\r\n }\r\n const DefaultTable = (\r\n <>\r\n {toolFlag && this.renderToolBar()}\r\n <Table\r\n childrenColumnName=\"childNodes\"\r\n sheitem\r\n dataSource={newDataSource}\r\n columns={this.getColumns()}\r\n loading={loading}\r\n className={styles[\"nsc-table\"]}\r\n locale={{\r\n emptyText: <NoData className={getLess(styles, \"table-nodata\")} />,\r\n }}\r\n scroll={{ x: \"max-content\" }}\r\n {...resizeProps}\r\n {...props}\r\n {...dragableProps}\r\n size={tableSize}\r\n />\r\n </>\r\n );\r\n\r\n return dragable === true ? (\r\n <DndProvider backend={HTML5Backend}>{DefaultTable}</DndProvider>\r\n ) : (\r\n DefaultTable\r\n );\r\n }\r\n}\r\n\r\nexport default withZhLocale(NSCTable);\r\n"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"file":"index.js","names":["AppstoreOutlined","CheckOutlined","ColumnHeightOutlined","SearchOutlined","SortAscendingOutlined","SortDescendingOutlined","RedoOutlined","isEmptyObj","Store","PageStore","utils","React","DndProvider","BodyRow","DndContextType","IBodyRowProps","treeUtils","styles","BodyRowComponent","HTML5Backend","withZhLocale","Resizable","getLess","getNode","NoData","getStorage","config","ResizeableTitle","props","onResize","width","restProps","_objectWithoutProperties","_excluded","createElement","height","draggableOpts","enableUserSelectHack","NSCTable","Component","constructor","_autoType","_defineProperty","createRef","onBeforeLoad","load","header","cell","index","e","_ref","size","cols","state","nextColumns","_objectSpread","setState","ev","data","JSON","parse","_this","eventType","payload","tableSize","dragIndex","hoverIndex","drag","target","dragNode","record","targetNode","moveArray","ids","parentNode","getChildNodeIds","params","id","parentId","attribute","moveRow","store","reload","modal","type","storePrefix","autoType","content","dataSource","columns","loading","pagination","activeIndex","searchText","fieldOption","searchColor","sorts","filterParams","sortType","sorter","sortInfo","defaultSort","checkColumn","defaultCheck","selectedRowKeys","selectedRowDatas","_ref2","listeners","listenersProps","restStore","_excluded2","storeProps","model","component","options","callback","dataChanged","modelData","paging","getPagination","onErrorLoad","err","response","autoLoad","Object","assign","current","componentDidMount","resizeColumn","setData","window","addEventListener","listenMessage","componentWillUnmount","removeEventListener","componentDidUpdate","prevProps","preState","resetColumn","newCols","colss","map","col","temp","onHeaderCell","column","handleResize","push","clearSelectColor","getPaginationByStore","onChange","filters","extra","autoOnChange","autoSort","autoPagination","isMultiple","Array","isArray","handlePagination","p","currentKey","pageSizeKey","pageSize","ascParams","getSortParam","onChangeFn","getStore","getModel","handleSearch","val","filterColumn","checkedValue","length","_message","warning","filterColumns","newCol","includes","dataIndex","initShow","sortState","arguments","undefined","sortSearch","orderItems","field","asc","order","forEach","v","stringify","getColumns","sortFields","defaultShowCols","filter","ellipsis","render","showTitle","text","title","className","style","indexOf","sortOrder","multiple","item","filterProps","obj","searchKey","Div","placeholder","concat","ref","tableSearchRef","filterDropdown","_ref3","setSelectedKeys","selectedKeys","confirm","clearFilters","_Space","_Button","onClick","_this$tableSearchRef$","newFilterParams","key","getValue","sortParam","filterIcon","renderToolBar","colLists","toolbar","tableTool","storeRequestConfig","tools","toolsClick","onToolClick","sizeItem","sortItem","sortContent","Fragment","cursor","color","sizeContent","_Checkbox","Group","bind","label","value","disabled","fontSize","_Popover","placement","trigger","overlayStyle","minWidth","maxWidth","marginRight","onRefresh","getSelectedRowKeys","getSelectedRowDatas","resetSelectedRowKeys","setSelectedRowKeys","setSelectedRowDatas","rowSelectionOnSelect","selected","rowKey","newSelectedRowKeys","newSelectedRowDatas","splice","rowSelectionOnSelectAll","selectedRows","changeRows","newids","newdatas","changeIds","_this$props$toolbar","omit","clickChangeColor","position","showSizeChanger","showQuickJumper","showTotal","total","_ref4","from","to","onRowFn","onRow","custom","onClickFn","event","rowClassName","clickRowStyle","newDataSource","getSearchMenuDatas","treeDatas","expandedRowKeys","openKeys","dragable","dragableProps","components","resizeProps","toolFlag","toolprops","show","showRowSelection","rowSelection","onSelect","onSelectAll","columnWidth","DefaultTable","_Table","_extends","childrenColumnName","sheitem","locale","emptyText","scroll","x","backend","dragUrl"],"sources":["../../../src/components/base/table/index.tsx"],"sourcesContent":["/*\r\n * @Descripttion:\r\n * @version:\r\n * @Author: rxzhu\r\n * @Date: 2021-03-23 08:46:20\r\n * @LastEditors: rxzhu\r\n * @LastEditTime: 2021-03-23 10:30:42\r\n */\r\nimport {\r\n AppstoreOutlined,\r\n CheckOutlined,\r\n ColumnHeightOutlined,\r\n SearchOutlined,\r\n SortAscendingOutlined,\r\n SortDescendingOutlined,\r\n RedoOutlined,\r\n} from \"@ant-design/icons\";\r\nimport { isEmptyObj } from \"@bj-nsc/functions\";\r\nimport Store, { PageStore, StoreProps } from \"@bj-nsc/msn\";\r\nimport { utils } from \"@bj-nsc/msn/lib/utils\";\r\nimport {\r\n Button,\r\n Checkbox,\r\n CheckboxOptionType,\r\n Menu,\r\n message,\r\n Popover,\r\n Space,\r\n Table,\r\n TableProps,\r\n Tooltip,\r\n} from \"antd\";\r\nimport { ColumnType, TablePaginationConfig } from \"antd/lib/table\";\r\nimport * as React from \"react\";\r\nimport { DndProvider } from \"react-dnd\";\r\nimport BodyRow, { DndContextType, IBodyRowProps } from \"../common/BodyRow\";\r\nimport treeUtils from \"../../treeUtils\";\r\nimport styles from \"./index.module.less\";\r\nconst { BodyRowComponent, HTML5Backend } = BodyRow;\r\nimport withZhLocale from \"../common/withZhLocale\";\r\nimport { Resizable } from \"react-resizable\";\r\nimport \"./resize.module.less\";\r\nimport { getLess, getNode } from \"../../utils\";\r\nimport NoData from \"../../base/common/NoData\";\r\nimport { getStorage } from \"@bj-nsc/functions\";\r\nimport config from \"../../config\";\r\nimport EllipseCell from \"../common/EllipseCell\";\r\ninterface IDragParams {\r\n id: string | number;\r\n ids: Array<string | number>;\r\n parentId: string | number;\r\n}\r\n// interface StoreProps {}\r\n\r\nexport type StoreType = \"PageStore\" | \"TreeStore\" | \"BaseStore\";\r\n\r\ninterface NSCTablePagination extends TablePaginationConfig {\r\n totalKey?: string;\r\n pageSizeKey?: string;\r\n currentKey?: string;\r\n}\r\n\r\ninterface ToolBarProps {\r\n show: boolean;\r\n tools?: Array<string>;\r\n onToolClick?: { onRefresh?: any; onSort?: any };\r\n}\r\ninterface NSCTableProps extends TableProps<any> {\r\n store?: StoreProps;\r\n showTotal?: boolean; // 是否显示总条数信息,默认true\r\n dragable?: boolean; // 是否可拖动, 默认false\r\n filterColumn?: boolean; // 是否支持过滤显示表格列, 默认true\r\n moveRow?: (params: IDragParams) => void; // 拖拽完成后的回调\r\n dragUrl?: string; // 保存拖拽排序的接口\r\n pagination?: false | NSCTablePagination;\r\n autoPagination?: boolean; // 组件是否自动处理分页\r\n autoSort?: boolean; //组件是否自动处理排序\r\n autoOnChange?: boolean; // 组件是否自动onChange, false则不做任何处理全部交给调用方\r\n resizeColumn?: boolean;\r\n sortFields?: Array<string>; //需要排序的字段Index\r\n toolbar?: ToolBarProps | boolean;\r\n autoSize?: boolean;\r\n sortSearch?: boolean; //是否添加排序查询,默认true\r\n // tableSize?: \"small\" | \"middle\" | \"default\" | \"auto\";\r\n // size?: \"small\" | \"middle\" | \"default\" | \"auto\";\r\n showRowSelection?: boolean;\r\n rowKey?: string;\r\n}\r\n\r\nexport type INSCTableProps = typeof NSCTable.defaultProps & NSCTableProps;\r\nexport { DndContextType, IBodyRowProps };\r\n\r\nconst ResizeableTitle = (props: any) => {\r\n const { onResize, width, ...restProps } = props;\r\n return (\r\n <Resizable\r\n width={width || 150}\r\n height={0}\r\n onResize={onResize}\r\n draggableOpts={{ enableUserSelectHack: false }}\r\n >\r\n <th {...restProps} />\r\n </Resizable>\r\n );\r\n};\r\nclass NSCTable extends React.Component<INSCTableProps, any> {\r\n static defaultProps = {\r\n dragable: false,\r\n showTotal: true,\r\n filterColumn: true,\r\n dragUrl: \"\",\r\n autoPagination: true,\r\n autoSort: true,\r\n autoOnChange: true,\r\n resizeColumn: true,\r\n toolbar: {\r\n show: true,\r\n onToolClick: {} as any,\r\n } as any,\r\n };\r\n\r\n store = {} as StoreProps;\r\n thIconRef = React.createRef<HTMLDivElement>();\r\n tableSearchRef = React.createRef<any>();\r\n\r\n listeners = {\r\n onBeforeLoad: null,\r\n load: null,\r\n };\r\n\r\n components = {\r\n header: {\r\n cell: ResizeableTitle,\r\n },\r\n };\r\n\r\n constructor(props) {\r\n super(props);\r\n let modal = props.type || \"auto\";\r\n let storePrefix = getStorage(\"store-pre-key\");\r\n let autoType = getStorage(\r\n storePrefix ? storePrefix + \"tableSize\" : \"tableSize\"\r\n );\r\n autoType = autoType?.content;\r\n this.state = {\r\n dataSource: [],\r\n columns: [],\r\n loading: false,\r\n pagination: {},\r\n activeIndex: -1,\r\n //搜索文本\r\n searchText: null,\r\n fieldOption: null,\r\n searchColor: null,\r\n cols: [],\r\n sorts: [],\r\n filterParams: {},\r\n tableSize: this.props.size || autoType || \"default\",\r\n sortType: \"single\",\r\n sorter: [], //记录当前排序字段\r\n sortInfo: {},\r\n defaultSort: true,\r\n checkColumn: [],\r\n defaultCheck: true,\r\n selectedRowKeys: [],\r\n selectedRowDatas: [],\r\n };\r\n if (props.store instanceof Store) {\r\n this.store = props.store;\r\n } else {\r\n const { listeners: listenersProps = {}, ...restStore } =\r\n props.store || {};\r\n const storeProps = {\r\n model: \"model\",\r\n component: this,\r\n listeners: {\r\n onBeforeLoad: (store, options) => {\r\n this.setState({ loading: true });\r\n utils.callback(listenersProps.onBeforeLoad, this, [store, options]);\r\n },\r\n dataChanged: (data, modelData, store) => {\r\n let paging = !(this.props.pagination === false);\r\n if (paging && !this.props.dataSource) {\r\n this.setState({\r\n dataSource: modelData,\r\n pagination: store.getPagination(),\r\n loading: false,\r\n activeIndex: -1,\r\n });\r\n } else {\r\n this.setState({ dataSource: modelData, loading: false });\r\n }\r\n\r\n utils.callback(listenersProps.dataChanged, this, [\r\n data,\r\n modelData,\r\n store,\r\n paging,\r\n ]);\r\n },\r\n load: (data, modelData, store) => {\r\n utils.callback(listenersProps.load, this, [data, modelData, store]);\r\n },\r\n onErrorLoad: (err, response) => {\r\n this.setState({ loading: false });\r\n utils.callback(listenersProps.onErrorLoad, this, [err, response]);\r\n },\r\n },\r\n data: restStore.data\r\n ? restStore.data\r\n : props.dataSource\r\n ? props.dataSource\r\n : null,\r\n ...restStore,\r\n autoLoad: restStore.autoLoad === false ? false : true,\r\n };\r\n this.store = new PageStore(\r\n Object.assign({}, storeProps, {\r\n pagination: { current: 1, ...this.props.pagination },\r\n })\r\n );\r\n }\r\n }\r\n\r\n handleResize =\r\n (index: any) =>\r\n (e: any, { size }: any) => {\r\n const { cols } = this.state;\r\n const nextColumns = [...cols];\r\n nextColumns[index] = {\r\n ...nextColumns[index],\r\n width: size.width,\r\n };\r\n this.setState({\r\n cols: nextColumns,\r\n });\r\n };\r\n\r\n componentDidMount() {\r\n const { resizeColumn } = this.props;\r\n if (!resizeColumn) {\r\n this.setState({ columns: [...this.props.columns] });\r\n } else {\r\n this.setState({ cols: [...this.props.columns] });\r\n }\r\n const store = this.props.store;\r\n if (store && store.data) {\r\n this.store.setData(store.data);\r\n }\r\n window.addEventListener(\"message\", this.listenMessage);\r\n }\r\n componentWillUnmount() {\r\n window.removeEventListener(\"message\", this.listenMessage);\r\n }\r\n listenMessage = (ev) => {\r\n const data = typeof ev.data === \"string\" ? JSON.parse(ev.data) : ev.data;\r\n let _this = this;\r\n if (data.eventType == \"changeTableSize\") {\r\n const { payload } = data;\r\n if (\r\n payload.size == \"default\" ||\r\n payload.size == \"small\" ||\r\n payload.size == \"middle\"\r\n ) {\r\n _this.setState({ tableSize: payload.size });\r\n }\r\n }\r\n };\r\n componentDidUpdate(prevProps, preState) {\r\n const { resizeColumn } = this.props;\r\n if (!resizeColumn) {\r\n if (this.props.columns !== prevProps.columns) {\r\n this.setState({ columns: this.props.columns });\r\n }\r\n } else {\r\n if (preState.cols !== this.state.cols) {\r\n this.resetColumn();\r\n }\r\n if (this.props.columns !== prevProps.columns) {\r\n this.setState({ cols: this.props.columns });\r\n }\r\n if (prevProps.size !== this.props.size) {\r\n this.setState({ tableSize: this.props.size });\r\n }\r\n }\r\n }\r\n\r\n resetColumn() {\r\n const { cols } = this.state;\r\n const newCols: any = [];\r\n let colss = cols || [];\r\n colss.map((col: any, index: any) => {\r\n let temp = {\r\n ...col,\r\n onHeaderCell: (column: { width: any }) => ({\r\n width: column.width,\r\n onResize: this.handleResize(index),\r\n }),\r\n };\r\n newCols.push(temp);\r\n });\r\n this.setState({\r\n columns: newCols,\r\n });\r\n }\r\n\r\n /**\r\n * 清除选中颜色\r\n */\r\n clearSelectColor() {\r\n this.setState({ activeIndex: -1 });\r\n return this;\r\n }\r\n\r\n getPaginationByStore() {\r\n return this.store.getPagination();\r\n }\r\n\r\n onChange(pagination, filters, sorter, extra) {\r\n const {\r\n autoOnChange = true,\r\n autoSort,\r\n autoPagination,\r\n onChange,\r\n store,\r\n } = this.props;\r\n const { filterParams } = this.state;\r\n const isMultiple = Array.isArray(sorter);\r\n if (autoOnChange === false || !store) {\r\n onChange && onChange(pagination, filters, sorter, extra);\r\n return;\r\n }\r\n const handlePagination = () => {\r\n let params = {} as {\r\n size?: string;\r\n pageSize?: string;\r\n ascs?: string;\r\n descs?: string;\r\n [propName: string]: string;\r\n };\r\n const paging = this.getPaginationByStore() || {};\r\n if (!isEmptyObj(pagination)) {\r\n const p = {\r\n [paging.currentKey || \"current\"]: pagination.current,\r\n [paging.pageSizeKey || \"size\"]: pagination.pageSize,\r\n };\r\n Object.assign(params, p);\r\n }\r\n let ascParams = this.getSortParam(sorter, true);\r\n if (isMultiple) {\r\n this.setState({ sorter });\r\n } else if (!isMultiple && !isEmptyObj(sorter)) {\r\n sorter.column &&\r\n this.setState({ sorter: [sorter], defaultSort: false });\r\n } else {\r\n this.setState({ sorter: [] });\r\n }\r\n params = { ...filterParams, ...params, ...ascParams };\r\n autoSort && this.store.reload({ params });\r\n };\r\n\r\n const onChangeFn = this.props.onChange;\r\n\r\n autoPagination && handlePagination();\r\n // 用户传了onChange保留用户自主处理表格变化的权力\r\n if (onChangeFn) {\r\n utils.callback(onChangeFn, this, [pagination, filters, sorter, extra]);\r\n }\r\n }\r\n\r\n getStore() {\r\n return this.store;\r\n }\r\n\r\n /**\r\n * 获取数据模型对象\r\n */\r\n getModel() {\r\n return this.store.getModel();\r\n }\r\n\r\n /**\r\n * 菜单搜索过滤显示\r\n * @param {String} val\r\n */\r\n handleSearch(val, fieldOption, searchColor) {\r\n this.setState({\r\n searchText: val,\r\n fieldOption: fieldOption,\r\n searchColor: searchColor,\r\n });\r\n }\r\n\r\n /**\r\n * 模块列表移动排序\r\n */\r\n moveRow = (dragIndex, hoverIndex, drag, target) => {\r\n const _this = this;\r\n let dragNode = drag.record;\r\n let targetNode = target.record;\r\n dragNode.moveArray(dragNode, targetNode);\r\n let ids = dragNode.parentNode.getChildNodeIds();\r\n let params = {\r\n id: dragNode.id,\r\n parentId: dragNode.attribute.parentId,\r\n ids: ids,\r\n };\r\n\r\n if (this.props.moveRow) {\r\n this.props.moveRow(params);\r\n } else {\r\n this.store.reload();\r\n }\r\n };\r\n\r\n filterColumn(checkedValue) {\r\n if (checkedValue.length == 0) {\r\n message.warning(\"至少显示一列!\");\r\n return;\r\n }\r\n const filterColumns = this.props.columns.map((col: ColumnType<{}>) => {\r\n const newCol = { ...col } as ColumnType<{}> & { initShow: boolean };\r\n if (checkedValue.includes(col.dataIndex)) {\r\n newCol.initShow = true;\r\n } else {\r\n newCol.initShow = false;\r\n }\r\n return newCol;\r\n });\r\n const { resizeColumn } = this.props;\r\n if (!resizeColumn) {\r\n this.setState({\r\n columns: filterColumns,\r\n checkColumn: checkedValue,\r\n defaultCheck: false,\r\n });\r\n } else {\r\n this.setState({\r\n cols: filterColumns,\r\n checkColumn: checkedValue,\r\n defaultCheck: false,\r\n });\r\n }\r\n }\r\n getSortParam(sorter, sortState = false) {\r\n const isMultiple = Array.isArray(sorter);\r\n const { sortSearch = true } = this.props;\r\n if (!sortSearch) {\r\n return {};\r\n }\r\n let sortInfo = {};\r\n let orderItems = [];\r\n if (!isEmptyObj(sorter) && !isMultiple && sorter.column) {\r\n orderItems = [\r\n {\r\n column: sorter.column.field || sorter.column.dataIndex,\r\n asc: sorter.order == \"ascend\",\r\n },\r\n ];\r\n if (sorter.column) sortInfo[sorter.column.dataIndex] = sorter.order;\r\n } else if (isMultiple) {\r\n sorter.forEach((v) => {\r\n sortInfo[v.column.dataIndex] = v.order;\r\n let field = v.column.field || v.column.dataIndex;\r\n orderItems.push({\r\n column: field,\r\n asc: v.order == \"ascend\",\r\n });\r\n });\r\n }\r\n if (sortState) {\r\n this.setState({\r\n sortInfo: sortInfo,\r\n });\r\n }\r\n return { orderItems: JSON.stringify(orderItems) };\r\n }\r\n getColumns() {\r\n const { columns, sortType, sortInfo } = this.state;\r\n const { sortFields = [] } = this.props;\r\n const defaultShowCols = columns.filter((cols) => cols.initShow !== false);\r\n const cols = defaultShowCols.map((col, index) => {\r\n if (col.ellipsis && !col.render) {\r\n col.ellipsis = {\r\n showTitle: false,\r\n };\r\n col.render = (text) => {\r\n return (\r\n <div title={text} className={getLess(styles, \"text\")} style={{ width: col.width }}>\r\n {text}\r\n </div>\r\n );\r\n };\r\n }\r\n\r\n if (sortFields.indexOf(col.dataIndex) > -1) {\r\n if (sortType == \"single\") {\r\n col.sorter = true;\r\n col.sortOrder = sortInfo[col.dataIndex]\r\n ? sortInfo[col.dataIndex]\r\n : null;\r\n } else if (sortType == \"multiple\") {\r\n col.sorter = { multiple: index };\r\n col.sortOrder = sortInfo[col.dataIndex]\r\n ? sortInfo[col.dataIndex]\r\n : null;\r\n }\r\n }\r\n return col;\r\n });\r\n cols.map((item, index) => {\r\n if (!isEmptyObj(item.filterProps)) {\r\n let obj = { ...item };\r\n const { type, props, searchKey } = item.filterProps;\r\n let Div = null;\r\n let text = item.title;\r\n Div = getNode(type, {\r\n placeholder: `搜索${text}`,\r\n ...props,\r\n ref: this.tableSearchRef,\r\n });\r\n obj = {\r\n filterDropdown: ({\r\n setSelectedKeys,\r\n selectedKeys,\r\n confirm,\r\n clearFilters,\r\n }) => {\r\n return (\r\n <div className={getLess(styles, \"search\")}>\r\n <div className={getLess(styles, \"space\")}>{Div}</div>\r\n <Space>\r\n <Button\r\n type=\"primary\"\r\n onClick={() => {\r\n confirm();\r\n const { filterParams } = this.state;\r\n let newFilterParams = { ...filterParams };\r\n let key = item.field || item.dataIndex;\r\n newFilterParams[key] =\r\n this.tableSearchRef.current?.getValue();\r\n this.setState({\r\n filterParams: { ...newFilterParams },\r\n });\r\n const sortParam = this.getSortParam(this.state.sorter);\r\n this.store.load({\r\n params: { ...newFilterParams, ...sortParam },\r\n });\r\n }}\r\n size=\"small\"\r\n className={getLess(styles, \"button\")}\r\n >\r\n 查询\r\n </Button>\r\n </Space>\r\n </div>\r\n );\r\n },\r\n filterIcon: () => {\r\n return <SearchOutlined />;\r\n },\r\n ...obj,\r\n };\r\n cols[index] = obj;\r\n }\r\n });\r\n return cols;\r\n }\r\n renderToolBar() {\r\n let { tableSize, columns, sortType } = this.state;\r\n let { filterColumn, columns: colLists, toolbar } = this.props;\r\n const { tableTool, storeRequestConfig = {} } = config();\r\n let tools = [\"refresh\", \"size\", \"sort\", \"column\"];\r\n let toolsClick = {} as any;\r\n if (toolbar == true) {\r\n tools = toolbar.onToolClick\r\n ? toolbar.onToolClick\r\n : [\"refresh\", \"size\", \"sort\", \"column\"];\r\n } else {\r\n tools = toolbar.tools\r\n ? toolbar.tools\r\n : tableTool.tools\r\n ? tableTool.tools\r\n : tools;\r\n toolsClick = toolbar.onToolClick ? toolbar.onToolClick : {};\r\n }\r\n const sizeItem = [\r\n { title: \"宽松\", key: \"default\" },\r\n { title: \"中等\", key: \"middle\" },\r\n { title: \"紧凑\", key: \"small\" },\r\n ];\r\n const sortItem = [\r\n { title: \"单字段排序\", key: \"single\" },\r\n { title: \"多字段排序\", key: \"multiple\" },\r\n ];\r\n const sortContent = (\r\n <>\r\n <div\r\n className={getLess(styles, \"cotent-title\")}\r\n style={{\r\n cursor: this.state.defaultSort ? \"not-allowed\" : \"pointer\",\r\n color: this.state.defaultSort && \"rgba(0,0,0,.45)\",\r\n }}\r\n onClick={() => {\r\n if (this.state.defaultSort) {\r\n return;\r\n }\r\n this.setState({ sorter: [], sortInfo: {}, defaultSort: true });\r\n const params = { ...this.state.filterParams };\r\n this.store.reload({ params });\r\n }}\r\n >\r\n 恢复默认排序\r\n </div>\r\n {sortItem.map((item, index) => {\r\n return (\r\n <div\r\n key={item.key}\r\n onClick={() => {\r\n this.setState({\r\n sorter: [],\r\n sortInfo: {},\r\n sortType: item.key,\r\n defaultSort: false,\r\n });\r\n const params = { ...this.state.filterParams };\r\n this.store.reload({ params });\r\n }}\r\n >\r\n {sortType == item.key ? (\r\n <a>\r\n <div className={getLess(styles, \"content-tiem\")}>\r\n <div style={{ width: 20 }}>\r\n {sortType == item.key && <CheckOutlined />}\r\n </div>\r\n <div> {item.title}</div>\r\n </div>\r\n </a>\r\n ) : (\r\n <div className={getLess(styles, \"content-tiem\")}>\r\n <div style={{ width: 20 }}></div>\r\n <div> {item.title}</div>\r\n </div>\r\n )}\r\n </div>\r\n );\r\n })}\r\n {this.state.sorter.length > 0 && (\r\n <>\r\n <div\r\n className={getLess(styles, \"cotent-title\")}\r\n style={{ color: \"rgba(0,0,0,.45)\" }}\r\n >\r\n 当前排序\r\n </div>\r\n {this.state.sorter.map((item, index) => {\r\n return (\r\n <div className={getLess(styles, \"content-tiem\")} key={index}>\r\n <div style={{ width: 20 }}>\r\n {item.order == \"ascend\" ? (\r\n <SortAscendingOutlined />\r\n ) : (\r\n <SortDescendingOutlined />\r\n )}\r\n </div>\r\n <div> {item.column.title}</div>\r\n </div>\r\n );\r\n })}\r\n </>\r\n )}\r\n </>\r\n );\r\n const sizeContent = (\r\n <>\r\n <div className={getLess(styles, \"cotent-title\")}>表格密度</div>\r\n {sizeItem.map((item, index) => {\r\n return (\r\n <div\r\n key={item.key}\r\n onClick={() => {\r\n this.setState({\r\n tableSize: item.key,\r\n });\r\n }}\r\n >\r\n {tableSize == item.key ? (\r\n <a>\r\n <div className={getLess(styles, \"content-tiem\")}>\r\n <div style={{ width: 20 }}>\r\n {tableSize == item.key && <CheckOutlined />}\r\n </div>\r\n <div> {item.title}</div>\r\n </div>\r\n </a>\r\n ) : (\r\n <div className={getLess(styles, \"content-tiem\")}>\r\n <div style={{ width: 20 }}></div>\r\n <div> {item.title}</div>\r\n </div>\r\n )}\r\n </div>\r\n );\r\n })}\r\n </>\r\n );\r\n\r\n const defaultShowCols = columns.filter((cols) => cols.initShow !== false);\r\n\r\n const content = (\r\n <Checkbox.Group\r\n onChange={this.filterColumn.bind(this)}\r\n options={colLists.map(\r\n (col: ColumnType<{}> & { filterColumn: boolean; dataIndex: any }) => {\r\n if (!col.dataIndex) {\r\n col.dataIndex = col.title;\r\n }\r\n return {\r\n label: col.title,\r\n value: col.dataIndex,\r\n disabled: col.filterColumn === false,\r\n } as CheckboxOptionType;\r\n }\r\n )}\r\n // defaultValue={defaultShowCols.map((col) => col.dataIndex)}\r\n value={\r\n this.state.defaultCheck\r\n ? defaultShowCols.map((col) => col.dataIndex)\r\n : this.state.checkColumn\r\n }\r\n ></Checkbox.Group>\r\n );\r\n return (\r\n <div className={getLess(styles, \"table-tool-bar\")}>\r\n {tools.indexOf(\"column\") > -1 && (\r\n <div style={{ fontSize: 14 }}>\r\n <Popover\r\n title=\"选择显示的列\"\r\n content={content}\r\n placement=\"bottomRight\"\r\n trigger=\"click\"\r\n overlayStyle={{ minWidth: 410, maxWidth: 450 }}\r\n // getPopupContainer={() => this.thIconRef.current}\r\n >\r\n <AppstoreOutlined className={getLess(styles, \"app-store-icon\")} />\r\n </Popover>\r\n </div>\r\n )}\r\n {tools.indexOf(\"sort\") > -1 && (\r\n <div style={{ marginRight: 8, fontSize: 14 }}>\r\n <Popover placement=\"bottom\" content={sortContent} trigger=\"click\">\r\n <SortAscendingOutlined />\r\n </Popover>\r\n </div>\r\n )}\r\n {tools.indexOf(\"size\") > -1 && (\r\n <div style={{ marginRight: 8, fontSize: 14 }}>\r\n <Popover placement=\"bottom\" content={sizeContent} trigger=\"click\">\r\n <ColumnHeightOutlined />\r\n </Popover>\r\n </div>\r\n )}\r\n {tools.indexOf(\"refresh\") > -1 && (\r\n <div\r\n style={{ marginRight: 8, fontSize: 14, cursor: \"pointer\" }}\r\n onClick={() => {\r\n const params = { ...this.state.filterParams };\r\n if (toolsClick.onRefresh) {\r\n toolsClick.onRefresh();\r\n } else {\r\n this.store.load({ params });\r\n }\r\n }}\r\n >\r\n <RedoOutlined />\r\n </div>\r\n )}\r\n </div>\r\n );\r\n }\r\n getSelectedRowKeys() {\r\n return this.state.selectedRowKeys;\r\n }\r\n getSelectedRowDatas() {\r\n return this.state.selectedRowDatas;\r\n }\r\n resetSelectedRowKeys() {\r\n this.setState({\r\n selectedRowKeys: [],\r\n selectedRowDatas: [],\r\n });\r\n }\r\n setSelectedRowKeys(data: Array<String | Number>) {\r\n this.setState({\r\n selectedRowKeys: data,\r\n });\r\n }\r\n setSelectedRowDatas(data: Array<Object>) {\r\n this.setState({\r\n selectedRowDatas: data,\r\n });\r\n }\r\n rowSelectionOnSelect(record: any, selected: any) {\r\n const { selectedRowKeys, selectedRowDatas } = this.state;\r\n let { rowKey = \"id\" } = this.props;\r\n let newSelectedRowKeys = [...selectedRowKeys];\r\n let newSelectedRowDatas = [...selectedRowDatas];\r\n if (selected) {\r\n newSelectedRowKeys = [...newSelectedRowKeys, record[rowKey]];\r\n newSelectedRowDatas = [...newSelectedRowDatas, record];\r\n } else {\r\n selectedRowKeys.map((item: any, index: any) => {\r\n if (item === record[rowKey]) {\r\n newSelectedRowKeys.splice(index, 1);\r\n }\r\n });\r\n selectedRowDatas.map((item: any, index: any) => {\r\n if (item[rowKey] === record[rowKey]) {\r\n newSelectedRowDatas.splice(index, 1);\r\n }\r\n });\r\n }\r\n this.setState({\r\n selectedRowKeys: newSelectedRowKeys,\r\n selectedRowDatas: newSelectedRowDatas,\r\n });\r\n }\r\n rowSelectionOnSelectAll(selected: any, selectedRows: any, changeRows: any) {\r\n const { selectedRowKeys, selectedRowDatas } = this.state;\r\n const { rowKey = \"id\" } = this.props;\r\n let newids: any = [];\r\n let newdatas: any = [];\r\n if (changeRows.length > 0) {\r\n let changeIds = changeRows.map((item: any) => item[rowKey]);\r\n if (selected) {\r\n newids = [...selectedRowKeys, ...changeIds];\r\n newdatas = [...selectedRowDatas, ...changeRows];\r\n } else {\r\n selectedRowKeys.map((item: any, index: any) => {\r\n if (changeIds.indexOf(item) == -1) {\r\n newids.push(item);\r\n }\r\n });\r\n selectedRowDatas.map((item: any, index: any) => {\r\n if (changeIds.indexOf(item[rowKey]) == -1) {\r\n newdatas.push(item);\r\n }\r\n });\r\n }\r\n } else {\r\n newids = [...selectedRowKeys];\r\n newdatas = [...selectedRowDatas];\r\n }\r\n this.setState({\r\n selectedRowKeys: [...newids],\r\n selectedRowDatas: [...newdatas],\r\n });\r\n }\r\n render() {\r\n let _this = this,\r\n {\r\n loading,\r\n dataSource,\r\n pagination = {},\r\n searchText,\r\n fieldOption,\r\n searchColor,\r\n tableSize,\r\n } = this.state,\r\n props = utils.omit(\r\n this.props,\r\n [\r\n \"store\",\r\n \"onChange\",\r\n \"columns\",\r\n \"resetColumn\",\r\n \"toolbar\",\r\n \"sortFields\",\r\n \"filterColumn\",\r\n \"sortSearch\",\r\n \"showRowSelection\",\r\n ],\r\n {\r\n rowKey: \"id\",\r\n clickChangeColor: false,\r\n }\r\n );\r\n if (props.pagination !== false) {\r\n props.pagination = {\r\n position: [\"bottomRight\"],\r\n showSizeChanger: true,\r\n showQuickJumper: true,\r\n ...props.pagination,\r\n ...pagination,\r\n };\r\n if (props.showTotal == true) {\r\n props.pagination.showTotal = function (total, [from, to]) {\r\n // return \"显示 \" + from + \" - \" + to + \"条,共 \" + total + \" 条\";\r\n return \"共 \" + total + \" 条\";\r\n };\r\n }\r\n }\r\n props.onChange = function (pagination, filters, sorter, extra) {\r\n _this.onChange(pagination, filters, sorter, extra);\r\n };\r\n if (props.clickChangeColor) {\r\n const onRowFn = props.onRow;\r\n props.onRow = function (record, index) {\r\n var custom = onRowFn ? onRowFn(record, index) : {};\r\n const onClickFn = custom.onClick;\r\n custom.onClick = (event) => {\r\n _this.setState({\r\n activeIndex: index, //获取点击行的索引\r\n });\r\n utils.callback(onClickFn, _this, [event]);\r\n };\r\n return custom;\r\n };\r\n props.rowClassName = function (record, index) {\r\n return index === _this.state.activeIndex\r\n ? `${styles.clickRowStyle}`\r\n : \"\";\r\n };\r\n }\r\n let newDataSource = [];\r\n if (searchText) {\r\n const data = treeUtils.getSearchMenuDatas(\r\n this,\r\n searchText,\r\n fieldOption,\r\n searchColor\r\n );\r\n newDataSource = data.treeDatas;\r\n props.expandedRowKeys = data.openKeys;\r\n } else {\r\n newDataSource = dataSource;\r\n }\r\n props.store = props.store || {};\r\n props.store.autoLoad = props.store.autoLoad === false ? false : true;\r\n const { dragable } = _this.props;\r\n const dragableProps =\r\n dragable === true\r\n ? {\r\n components: BodyRowComponent,\r\n onRow: (record, index) => ({\r\n index,\r\n record,\r\n moveRow: this.moveRow,\r\n }),\r\n }\r\n : {};\r\n let { resizeColumn } = this.props;\r\n\r\n const resizeProps =\r\n resizeColumn === true ? { components: this.components } : null;\r\n const { tableTool } = config();\r\n let toolFlag = true;\r\n let toolprops =\r\n this.props.toolbar === false || this.props.toolbar?.show === false\r\n ? false\r\n : true;\r\n if (!toolprops) {\r\n toolFlag = toolprops;\r\n } else {\r\n toolFlag = tableTool.show === false ? false : true;\r\n }\r\n if (this.props.showRowSelection) {\r\n const { rowSelection = {} } = this.props;\r\n props = {\r\n ...props,\r\n rowSelection: {\r\n selectedRowKeys: this.state.selectedRowKeys,\r\n onSelect: this.rowSelectionOnSelect.bind(this),\r\n onSelectAll: this.rowSelectionOnSelectAll.bind(this),\r\n columnWidth: 40,\r\n ...rowSelection,\r\n },\r\n };\r\n }\r\n const DefaultTable = (\r\n <>\r\n {toolFlag && this.renderToolBar()}\r\n <Table\r\n childrenColumnName=\"childNodes\"\r\n sheitem\r\n dataSource={newDataSource}\r\n columns={this.getColumns()}\r\n loading={loading}\r\n className={styles[\"nsc-table\"]}\r\n locale={{\r\n emptyText: <NoData className={getLess(styles, \"table-nodata\")} />,\r\n }}\r\n scroll={{ x: \"max-content\" }}\r\n {...resizeProps}\r\n {...props}\r\n {...dragableProps}\r\n size={tableSize}\r\n />\r\n </>\r\n );\r\n\r\n return dragable === true ? (\r\n <DndProvider backend={HTML5Backend}>{DefaultTable}</DndProvider>\r\n ) : (\r\n DefaultTable\r\n );\r\n }\r\n}\r\n\r\nexport default withZhLocale(NSCTable);\r\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SACEA,gBAAgB,EAChBC,aAAa,EACbC,oBAAoB,EACpBC,cAAc,EACdC,qBAAqB,EACrBC,sBAAsB,EACtBC,YAAY,QACP,mBAAmB;AAC1B,SAASC,UAAU,QAAQ,mBAAmB;AAC9C,OAAOC,KAAK,IAAIC,SAAS,QAAoB,aAAa;AAC1D,SAASC,KAAK,QAAQ,uBAAuB;AAc7C,OAAO,KAAKC,KAAK,MAAM,OAAO;AAC9B,SAASC,WAAW,QAAQ,WAAW;AACvC,OAAOC,OAAO,IAAIC,cAAc,EAAEC,aAAa,QAAQ,mBAAmB;AAC1E,OAAOC,SAAS,MAAM,iBAAiB;AACvC,OAAOC,MAAM,MAAM,qBAAqB;AACxC,MAAM;EAAEC,gBAAgB;EAAEC;AAAa,CAAC,GAAGN,OAAO;AAClD,OAAOO,YAAY,MAAM,wBAAwB;AACjD,SAASC,SAAS,QAAQ,iBAAiB;AAC3C,OAAO,sBAAsB;AAC7B,SAASC,OAAO,EAAEC,OAAO,QAAQ,aAAa;AAC9C,OAAOC,MAAM,MAAM,0BAA0B;AAC7C,SAASC,UAAU,QAAQ,mBAAmB;AAC9C,OAAOC,MAAM,MAAM,cAAc;;AAOjC;;AAsCA,SAASZ,cAAc,EAAEC,aAAa;AAEtC,MAAMY,eAAe,GAAIC,KAAU,IAAK;EACtC,MAAM;MAAEC,QAAQ;MAAEC;IAAoB,CAAC,GAAGF,KAAK;IAAnBG,SAAS,GAAAC,wBAAA,CAAKJ,KAAK,EAAAK,SAAA;EAC/C,oBACEtB,KAAA,CAAAuB,aAAA,CAACb,SAAS;IACRS,KAAK,EAAEA,KAAK,IAAI,GAAI;IACpBK,MAAM,EAAE,CAAE;IACVN,QAAQ,EAAEA,QAAS;IACnBO,aAAa,EAAE;MAAEC,oBAAoB,EAAE;IAAM;EAAE,gBAE/C1B,KAAA,CAAAuB,aAAA,OAAQH,SAAY,CACX,CAAC;AAEhB,CAAC;AACD,MAAMO,QAAQ,SAAS3B,KAAK,CAAC4B,SAAS,CAAsB;EA+B1DC,WAAWA,CAACZ,KAAK,EAAE;IAAA,IAAAa,SAAA;IACjB,KAAK,CAACb,KAAK,CAAC;IAACc,eAAA,gBAhBP,CAAC,CAAC;IAAAA,eAAA,iCACE/B,KAAK,CAACgC,SAAS,CAAiB,CAAC;IAAAD,eAAA,sCAC5B/B,KAAK,CAACgC,SAAS,CAAM,CAAC;IAAAD,eAAA,oBAE3B;MACVE,YAAY,EAAE,IAAI;MAClBC,IAAI,EAAE;IACR,CAAC;IAAAH,eAAA,qBAEY;MACXI,MAAM,EAAE;QACNC,IAAI,EAAEpB;MACR;IACF,CAAC;IAAAe,eAAA,uBA2FEM,KAAU,IACX,CAACC,CAAM,EAAAC,IAAA,KAAoB;MAAA,IAAlB;QAAEC;MAAU,CAAC,GAAAD,IAAA;MACpB,MAAM;QAAEE;MAAK,CAAC,GAAG,IAAI,CAACC,KAAK;MAC3B,MAAMC,WAAW,GAAG,CAAC,GAAGF,IAAI,CAAC;MAC7BE,WAAW,CAACN,KAAK,CAAC,GAAAO,aAAA,CAAAA,aAAA,KACbD,WAAW,CAACN,KAAK,CAAC;QACrBlB,KAAK,EAAEqB,IAAI,CAACrB;MAAK,EAClB;MACD,IAAI,CAAC0B,QAAQ,CAAC;QACZJ,IAAI,EAAEE;MACR,CAAC,CAAC;IACJ,CAAC;IAAAZ,eAAA,wBAkBce,EAAE,IAAK;MACtB,MAAMC,IAAI,GAAG,OAAOD,EAAE,CAACC,IAAI,KAAK,QAAQ,GAAGC,IAAI,CAACC,KAAK,CAACH,EAAE,CAACC,IAAI,CAAC,GAAGD,EAAE,CAACC,IAAI;MACxE,IAAIG,KAAK,GAAG,IAAI;MAChB,IAAIH,IAAI,CAACI,SAAS,IAAI,iBAAiB,EAAE;QACvC,MAAM;UAAEC;QAAQ,CAAC,GAAGL,IAAI;QACxB,IACEK,OAAO,CAACZ,IAAI,IAAI,SAAS,IACzBY,OAAO,CAACZ,IAAI,IAAI,OAAO,IACvBY,OAAO,CAACZ,IAAI,IAAI,QAAQ,EACxB;UACAU,KAAK,CAACL,QAAQ,CAAC;YAAEQ,SAAS,EAAED,OAAO,CAACZ;UAAK,CAAC,CAAC;QAC7C;MACF;IACF,CAAC;IA8HD;AACF;AACA;IAFET,eAAA,kBAGU,CAACuB,SAAS,EAAEC,UAAU,EAAEC,IAAI,EAAEC,MAAM,KAAK;MACjD,MAAMP,KAAK,GAAG,IAAI;MAClB,IAAIQ,QAAQ,GAAGF,IAAI,CAACG,MAAM;MAC1B,IAAIC,UAAU,GAAGH,MAAM,CAACE,MAAM;MAC9BD,QAAQ,CAACG,SAAS,CAACH,QAAQ,EAAEE,UAAU,CAAC;MACxC,IAAIE,GAAG,GAAGJ,QAAQ,CAACK,UAAU,CAACC,eAAe,CAAC,CAAC;MAC/C,IAAIC,MAAM,GAAG;QACXC,EAAE,EAAER,QAAQ,CAACQ,EAAE;QACfC,QAAQ,EAAET,QAAQ,CAACU,SAAS,CAACD,QAAQ;QACrCL,GAAG,EAAEA;MACP,CAAC;MAED,IAAI,IAAI,CAAC7C,KAAK,CAACoD,OAAO,EAAE;QACtB,IAAI,CAACpD,KAAK,CAACoD,OAAO,CAACJ,MAAM,CAAC;MAC5B,CAAC,MAAM;QACL,IAAI,CAACK,KAAK,CAACC,MAAM,CAAC,CAAC;MACrB;IACF,CAAC;IAnRC,IAAIC,KAAK,GAAGvD,KAAK,CAACwD,IAAI,IAAI,MAAM;IAChC,IAAIC,WAAW,GAAG5D,UAAU,CAAC,eAAe,CAAC;IAC7C,IAAI6D,QAAQ,GAAG7D,UAAU,CACvB4D,WAAW,GAAGA,WAAW,GAAG,WAAW,GAAG,WAC5C,CAAC;IACDC,QAAQ,IAAA7C,SAAA,GAAG6C,QAAQ,cAAA7C,SAAA,uBAARA,SAAA,CAAU8C,OAAO;IAC5B,IAAI,CAAClC,KAAK,GAAG;MACXmC,UAAU,EAAE,EAAE;MACdC,OAAO,EAAE,EAAE;MACXC,OAAO,EAAE,KAAK;MACdC,UAAU,EAAE,CAAC,CAAC;MACdC,WAAW,EAAE,CAAC,CAAC;MACf;MACAC,UAAU,EAAE,IAAI;MAChBC,WAAW,EAAE,IAAI;MACjBC,WAAW,EAAE,IAAI;MACjB3C,IAAI,EAAE,EAAE;MACR4C,KAAK,EAAE,EAAE;MACTC,YAAY,EAAE,CAAC,CAAC;MAChBjC,SAAS,EAAE,IAAI,CAACpC,KAAK,CAACuB,IAAI,IAAImC,QAAQ,IAAI,SAAS;MACnDY,QAAQ,EAAE,QAAQ;MAClBC,MAAM,EAAE,EAAE;MAAE;MACZC,QAAQ,EAAE,CAAC,CAAC;MACZC,WAAW,EAAE,IAAI;MACjBC,WAAW,EAAE,EAAE;MACfC,YAAY,EAAE,IAAI;MAClBC,eAAe,EAAE,EAAE;MACnBC,gBAAgB,EAAE;IACpB,CAAC;IACD,IAAI7E,KAAK,CAACqD,KAAK,YAAYzE,KAAK,EAAE;MAChC,IAAI,CAACyE,KAAK,GAAGrD,KAAK,CAACqD,KAAK;IAC1B,CAAC,MAAM;MACL,MAAAyB,KAAA,GACE9E,KAAK,CAACqD,KAAK,IAAI,CAAC,CAAC;QADb;UAAE0B,SAAS,EAAEC,cAAc,GAAG,CAAC;QAAgB,CAAC,GAAAF,KAAA;QAAXG,SAAS,GAAA7E,wBAAA,CAAA0E,KAAA,EAAAI,UAAA;MAEpD,MAAMC,UAAU,GAAAxD,aAAA,CAAAA,aAAA;QACdyD,KAAK,EAAE,OAAO;QACdC,SAAS,EAAE,IAAI;QACfN,SAAS,EAAE;UACT/D,YAAY,EAAEA,CAACqC,KAAK,EAAEiC,OAAO,KAAK;YAChC,IAAI,CAAC1D,QAAQ,CAAC;cAAEkC,OAAO,EAAE;YAAK,CAAC,CAAC;YAChChF,KAAK,CAACyG,QAAQ,CAACP,cAAc,CAAChE,YAAY,EAAE,IAAI,EAAE,CAACqC,KAAK,EAAEiC,OAAO,CAAC,CAAC;UACrE,CAAC;UACDE,WAAW,EAAEA,CAAC1D,IAAI,EAAE2D,SAAS,EAAEpC,KAAK,KAAK;YACvC,IAAIqC,MAAM,GAAG,EAAE,IAAI,CAAC1F,KAAK,CAAC+D,UAAU,KAAK,KAAK,CAAC;YAC/C,IAAI2B,MAAM,IAAI,CAAC,IAAI,CAAC1F,KAAK,CAAC4D,UAAU,EAAE;cACpC,IAAI,CAAChC,QAAQ,CAAC;gBACZgC,UAAU,EAAE6B,SAAS;gBACrB1B,UAAU,EAAEV,KAAK,CAACsC,aAAa,CAAC,CAAC;gBACjC7B,OAAO,EAAE,KAAK;gBACdE,WAAW,EAAE,CAAC;cAChB,CAAC,CAAC;YACJ,CAAC,MAAM;cACL,IAAI,CAACpC,QAAQ,CAAC;gBAAEgC,UAAU,EAAE6B,SAAS;gBAAE3B,OAAO,EAAE;cAAM,CAAC,CAAC;YAC1D;YAEAhF,KAAK,CAACyG,QAAQ,CAACP,cAAc,CAACQ,WAAW,EAAE,IAAI,EAAE,CAC/C1D,IAAI,EACJ2D,SAAS,EACTpC,KAAK,EACLqC,MAAM,CACP,CAAC;UACJ,CAAC;UACDzE,IAAI,EAAEA,CAACa,IAAI,EAAE2D,SAAS,EAAEpC,KAAK,KAAK;YAChCvE,KAAK,CAACyG,QAAQ,CAACP,cAAc,CAAC/D,IAAI,EAAE,IAAI,EAAE,CAACa,IAAI,EAAE2D,SAAS,EAAEpC,KAAK,CAAC,CAAC;UACrE,CAAC;UACDuC,WAAW,EAAEA,CAACC,GAAG,EAAEC,QAAQ,KAAK;YAC9B,IAAI,CAAClE,QAAQ,CAAC;cAAEkC,OAAO,EAAE;YAAM,CAAC,CAAC;YACjChF,KAAK,CAACyG,QAAQ,CAACP,cAAc,CAACY,WAAW,EAAE,IAAI,EAAE,CAACC,GAAG,EAAEC,QAAQ,CAAC,CAAC;UACnE;QACF,CAAC;QACDhE,IAAI,EAAEmD,SAAS,CAACnD,IAAI,GAChBmD,SAAS,CAACnD,IAAI,GACd9B,KAAK,CAAC4D,UAAU,GAChB5D,KAAK,CAAC4D,UAAU,GAChB;MAAI,GACLqB,SAAS;QACZc,QAAQ,EAAEd,SAAS,CAACc,QAAQ,KAAK,KAAK,GAAG,KAAK,GAAG;MAAI,EACtD;MACD,IAAI,CAAC1C,KAAK,GAAG,IAAIxE,SAAS,CACxBmH,MAAM,CAACC,MAAM,CAAC,CAAC,CAAC,EAAEd,UAAU,EAAE;QAC5BpB,UAAU,EAAApC,aAAA;UAAIuE,OAAO,EAAE;QAAC,GAAK,IAAI,CAAClG,KAAK,CAAC+D,UAAU;MACpD,CAAC,CACH,CAAC;IACH;EACF;EAgBAoC,iBAAiBA,CAAA,EAAG;IAClB,MAAM;MAAEC;IAAa,CAAC,GAAG,IAAI,CAACpG,KAAK;IACnC,IAAI,CAACoG,YAAY,EAAE;MACjB,IAAI,CAACxE,QAAQ,CAAC;QAAEiC,OAAO,EAAE,CAAC,GAAG,IAAI,CAAC7D,KAAK,CAAC6D,OAAO;MAAE,CAAC,CAAC;IACrD,CAAC,MAAM;MACL,IAAI,CAACjC,QAAQ,CAAC;QAAEJ,IAAI,EAAE,CAAC,GAAG,IAAI,CAACxB,KAAK,CAAC6D,OAAO;MAAE,CAAC,CAAC;IAClD;IACA,MAAMR,KAAK,GAAG,IAAI,CAACrD,KAAK,CAACqD,KAAK;IAC9B,IAAIA,KAAK,IAAIA,KAAK,CAACvB,IAAI,EAAE;MACvB,IAAI,CAACuB,KAAK,CAACgD,OAAO,CAAChD,KAAK,CAACvB,IAAI,CAAC;IAChC;IACAwE,MAAM,CAACC,gBAAgB,CAAC,SAAS,EAAE,IAAI,CAACC,aAAa,CAAC;EACxD;EACAC,oBAAoBA,CAAA,EAAG;IACrBH,MAAM,CAACI,mBAAmB,CAAC,SAAS,EAAE,IAAI,CAACF,aAAa,CAAC;EAC3D;EAeAG,kBAAkBA,CAACC,SAAS,EAAEC,QAAQ,EAAE;IACtC,MAAM;MAAET;IAAa,CAAC,GAAG,IAAI,CAACpG,KAAK;IACnC,IAAI,CAACoG,YAAY,EAAE;MACjB,IAAI,IAAI,CAACpG,KAAK,CAAC6D,OAAO,KAAK+C,SAAS,CAAC/C,OAAO,EAAE;QAC5C,IAAI,CAACjC,QAAQ,CAAC;UAAEiC,OAAO,EAAE,IAAI,CAAC7D,KAAK,CAAC6D;QAAQ,CAAC,CAAC;MAChD;IACF,CAAC,MAAM;MACL,IAAIgD,QAAQ,CAACrF,IAAI,KAAK,IAAI,CAACC,KAAK,CAACD,IAAI,EAAE;QACrC,IAAI,CAACsF,WAAW,CAAC,CAAC;MACpB;MACA,IAAI,IAAI,CAAC9G,KAAK,CAAC6D,OAAO,KAAK+C,SAAS,CAAC/C,OAAO,EAAE;QAC5C,IAAI,CAACjC,QAAQ,CAAC;UAAEJ,IAAI,EAAE,IAAI,CAACxB,KAAK,CAAC6D;QAAQ,CAAC,CAAC;MAC7C;MACA,IAAI+C,SAAS,CAACrF,IAAI,KAAK,IAAI,CAACvB,KAAK,CAACuB,IAAI,EAAE;QACtC,IAAI,CAACK,QAAQ,CAAC;UAAEQ,SAAS,EAAE,IAAI,CAACpC,KAAK,CAACuB;QAAK,CAAC,CAAC;MAC/C;IACF;EACF;EAEAuF,WAAWA,CAAA,EAAG;IACZ,MAAM;MAAEtF;IAAK,CAAC,GAAG,IAAI,CAACC,KAAK;IAC3B,MAAMsF,OAAY,GAAG,EAAE;IACvB,IAAIC,KAAK,GAAGxF,IAAI,IAAI,EAAE;IACtBwF,KAAK,CAACC,GAAG,CAAC,CAACC,GAAQ,EAAE9F,KAAU,KAAK;MAClC,IAAI+F,IAAI,GAAAxF,aAAA,CAAAA,aAAA,KACHuF,GAAG;QACNE,YAAY,EAAGC,MAAsB,KAAM;UACzCnH,KAAK,EAAEmH,MAAM,CAACnH,KAAK;UACnBD,QAAQ,EAAE,IAAI,CAACqH,YAAY,CAAClG,KAAK;QACnC,CAAC;MAAC,EACH;MACD2F,OAAO,CAACQ,IAAI,CAACJ,IAAI,CAAC;IACpB,CAAC,CAAC;IACF,IAAI,CAACvF,QAAQ,CAAC;MACZiC,OAAO,EAAEkD;IACX,CAAC,CAAC;EACJ;;EAEA;AACF;AACA;EACES,gBAAgBA,CAAA,EAAG;IACjB,IAAI,CAAC5F,QAAQ,CAAC;MAAEoC,WAAW,EAAE,CAAC;IAAE,CAAC,CAAC;IAClC,OAAO,IAAI;EACb;EAEAyD,oBAAoBA,CAAA,EAAG;IACrB,OAAO,IAAI,CAACpE,KAAK,CAACsC,aAAa,CAAC,CAAC;EACnC;EAEA+B,QAAQA,CAAC3D,UAAU,EAAE4D,OAAO,EAAEpD,MAAM,EAAEqD,KAAK,EAAE;IAC3C,MAAM;MACJC,YAAY,GAAG,IAAI;MACnBC,QAAQ;MACRC,cAAc;MACdL,QAAQ;MACRrE;IACF,CAAC,GAAG,IAAI,CAACrD,KAAK;IACd,MAAM;MAAEqE;IAAa,CAAC,GAAG,IAAI,CAAC5C,KAAK;IACnC,MAAMuG,UAAU,GAAGC,KAAK,CAACC,OAAO,CAAC3D,MAAM,CAAC;IACxC,IAAIsD,YAAY,KAAK,KAAK,IAAI,CAACxE,KAAK,EAAE;MACpCqE,QAAQ,IAAIA,QAAQ,CAAC3D,UAAU,EAAE4D,OAAO,EAAEpD,MAAM,EAAEqD,KAAK,CAAC;MACxD;IACF;IACA,MAAMO,gBAAgB,GAAGA,CAAA,KAAM;MAC7B,IAAInF,MAAM,GAAG,CAAC,CAMb;MACD,MAAM0C,MAAM,GAAG,IAAI,CAAC+B,oBAAoB,CAAC,CAAC,IAAI,CAAC,CAAC;MAChD,IAAI,CAAC9I,UAAU,CAACoF,UAAU,CAAC,EAAE;QAC3B,MAAMqE,CAAC,GAAG;UACR,CAAC1C,MAAM,CAAC2C,UAAU,IAAI,SAAS,GAAGtE,UAAU,CAACmC,OAAO;UACpD,CAACR,MAAM,CAAC4C,WAAW,IAAI,MAAM,GAAGvE,UAAU,CAACwE;QAC7C,CAAC;QACDvC,MAAM,CAACC,MAAM,CAACjD,MAAM,EAAEoF,CAAC,CAAC;MAC1B;MACA,IAAII,SAAS,GAAG,IAAI,CAACC,YAAY,CAAClE,MAAM,EAAE,IAAI,CAAC;MAC/C,IAAIyD,UAAU,EAAE;QACd,IAAI,CAACpG,QAAQ,CAAC;UAAE2C;QAAO,CAAC,CAAC;MAC3B,CAAC,MAAM,IAAI,CAACyD,UAAU,IAAI,CAACrJ,UAAU,CAAC4F,MAAM,CAAC,EAAE;QAC7CA,MAAM,CAAC8C,MAAM,IACX,IAAI,CAACzF,QAAQ,CAAC;UAAE2C,MAAM,EAAE,CAACA,MAAM,CAAC;UAAEE,WAAW,EAAE;QAAM,CAAC,CAAC;MAC3D,CAAC,MAAM;QACL,IAAI,CAAC7C,QAAQ,CAAC;UAAE2C,MAAM,EAAE;QAAG,CAAC,CAAC;MAC/B;MACAvB,MAAM,GAAArB,aAAA,CAAAA,aAAA,CAAAA,aAAA,KAAQ0C,YAAY,GAAKrB,MAAM,GAAKwF,SAAS,CAAE;MACrDV,QAAQ,IAAI,IAAI,CAACzE,KAAK,CAACC,MAAM,CAAC;QAAEN;MAAO,CAAC,CAAC;IAC3C,CAAC;IAED,MAAM0F,UAAU,GAAG,IAAI,CAAC1I,KAAK,CAAC0H,QAAQ;IAEtCK,cAAc,IAAII,gBAAgB,CAAC,CAAC;IACpC;IACA,IAAIO,UAAU,EAAE;MACd5J,KAAK,CAACyG,QAAQ,CAACmD,UAAU,EAAE,IAAI,EAAE,CAAC3E,UAAU,EAAE4D,OAAO,EAAEpD,MAAM,EAAEqD,KAAK,CAAC,CAAC;IACxE;EACF;EAEAe,QAAQA,CAAA,EAAG;IACT,OAAO,IAAI,CAACtF,KAAK;EACnB;;EAEA;AACF;AACA;EACEuF,QAAQA,CAAA,EAAG;IACT,OAAO,IAAI,CAACvF,KAAK,CAACuF,QAAQ,CAAC,CAAC;EAC9B;;EAEA;AACF;AACA;AACA;EACEC,YAAYA,CAACC,GAAG,EAAE5E,WAAW,EAAEC,WAAW,EAAE;IAC1C,IAAI,CAACvC,QAAQ,CAAC;MACZqC,UAAU,EAAE6E,GAAG;MACf5E,WAAW,EAAEA,WAAW;MACxBC,WAAW,EAAEA;IACf,CAAC,CAAC;EACJ;EAwBA4E,YAAYA,CAACC,YAAY,EAAE;IACzB,IAAIA,YAAY,CAACC,MAAM,IAAI,CAAC,EAAE;MAC5BC,QAAA,CAAQC,OAAO,CAAC,SAAS,CAAC;MAC1B;IACF;IACA,MAAMC,aAAa,GAAG,IAAI,CAACpJ,KAAK,CAAC6D,OAAO,CAACoD,GAAG,CAAEC,GAAmB,IAAK;MACpE,MAAMmC,MAAM,GAAA1H,aAAA,KAAQuF,GAAG,CAA4C;MACnE,IAAI8B,YAAY,CAACM,QAAQ,CAACpC,GAAG,CAACqC,SAAS,CAAC,EAAE;QACxCF,MAAM,CAACG,QAAQ,GAAG,IAAI;MACxB,CAAC,MAAM;QACLH,MAAM,CAACG,QAAQ,GAAG,KAAK;MACzB;MACA,OAAOH,MAAM;IACf,CAAC,CAAC;IACF,MAAM;MAAEjD;IAAa,CAAC,GAAG,IAAI,CAACpG,KAAK;IACnC,IAAI,CAACoG,YAAY,EAAE;MACjB,IAAI,CAACxE,QAAQ,CAAC;QACZiC,OAAO,EAAEuF,aAAa;QACtB1E,WAAW,EAAEsE,YAAY;QACzBrE,YAAY,EAAE;MAChB,CAAC,CAAC;IACJ,CAAC,MAAM;MACL,IAAI,CAAC/C,QAAQ,CAAC;QACZJ,IAAI,EAAE4H,aAAa;QACnB1E,WAAW,EAAEsE,YAAY;QACzBrE,YAAY,EAAE;MAChB,CAAC,CAAC;IACJ;EACF;EACA8D,YAAYA,CAAClE,MAAM,EAAqB;IAAA,IAAnBkF,SAAS,GAAAC,SAAA,CAAAT,MAAA,QAAAS,SAAA,QAAAC,SAAA,GAAAD,SAAA,MAAG,KAAK;IACpC,MAAM1B,UAAU,GAAGC,KAAK,CAACC,OAAO,CAAC3D,MAAM,CAAC;IACxC,MAAM;MAAEqF,UAAU,GAAG;IAAK,CAAC,GAAG,IAAI,CAAC5J,KAAK;IACxC,IAAI,CAAC4J,UAAU,EAAE;MACf,OAAO,CAAC,CAAC;IACX;IACA,IAAIpF,QAAQ,GAAG,CAAC,CAAC;IACjB,IAAIqF,UAAU,GAAG,EAAE;IACnB,IAAI,CAAClL,UAAU,CAAC4F,MAAM,CAAC,IAAI,CAACyD,UAAU,IAAIzD,MAAM,CAAC8C,MAAM,EAAE;MACvDwC,UAAU,GAAG,CACX;QACExC,MAAM,EAAE9C,MAAM,CAAC8C,MAAM,CAACyC,KAAK,IAAIvF,MAAM,CAAC8C,MAAM,CAACkC,SAAS;QACtDQ,GAAG,EAAExF,MAAM,CAACyF,KAAK,IAAI;MACvB,CAAC,CACF;MACD,IAAIzF,MAAM,CAAC8C,MAAM,EAAE7C,QAAQ,CAACD,MAAM,CAAC8C,MAAM,CAACkC,SAAS,CAAC,GAAGhF,MAAM,CAACyF,KAAK;IACrE,CAAC,MAAM,IAAIhC,UAAU,EAAE;MACrBzD,MAAM,CAAC0F,OAAO,CAAEC,CAAC,IAAK;QACpB1F,QAAQ,CAAC0F,CAAC,CAAC7C,MAAM,CAACkC,SAAS,CAAC,GAAGW,CAAC,CAACF,KAAK;QACtC,IAAIF,KAAK,GAAGI,CAAC,CAAC7C,MAAM,CAACyC,KAAK,IAAII,CAAC,CAAC7C,MAAM,CAACkC,SAAS;QAChDM,UAAU,CAACtC,IAAI,CAAC;UACdF,MAAM,EAAEyC,KAAK;UACbC,GAAG,EAAEG,CAAC,CAACF,KAAK,IAAI;QAClB,CAAC,CAAC;MACJ,CAAC,CAAC;IACJ;IACA,IAAIP,SAAS,EAAE;MACb,IAAI,CAAC7H,QAAQ,CAAC;QACZ4C,QAAQ,EAAEA;MACZ,CAAC,CAAC;IACJ;IACA,OAAO;MAAEqF,UAAU,EAAE9H,IAAI,CAACoI,SAAS,CAACN,UAAU;IAAE,CAAC;EACnD;EACAO,UAAUA,CAAA,EAAG;IACX,MAAM;MAAEvG,OAAO;MAAES,QAAQ;MAAEE;IAAS,CAAC,GAAG,IAAI,CAAC/C,KAAK;IAClD,MAAM;MAAE4I,UAAU,GAAG;IAAG,CAAC,GAAG,IAAI,CAACrK,KAAK;IACtC,MAAMsK,eAAe,GAAGzG,OAAO,CAAC0G,MAAM,CAAE/I,IAAI,IAAKA,IAAI,CAACgI,QAAQ,KAAK,KAAK,CAAC;IACzE,MAAMhI,IAAI,GAAG8I,eAAe,CAACrD,GAAG,CAAC,CAACC,GAAG,EAAE9F,KAAK,KAAK;MAC/C,IAAI8F,GAAG,CAACsD,QAAQ,IAAI,CAACtD,GAAG,CAACuD,MAAM,EAAE;QAC/BvD,GAAG,CAACsD,QAAQ,GAAG;UACbE,SAAS,EAAE;QACb,CAAC;QACDxD,GAAG,CAACuD,MAAM,GAAIE,IAAI,IAAK;UACrB,oBACE5L,KAAA,CAAAuB,aAAA;YAAKsK,KAAK,EAAED,IAAK;YAACE,SAAS,EAAEnL,OAAO,CAACL,MAAM,EAAE,MAAM,CAAE;YAACyL,KAAK,EAAE;cAAE5K,KAAK,EAAEgH,GAAG,CAAChH;YAAM;UAAE,GAC/EyK,IACE,CAAC;QAEV,CAAC;MACH;MAEA,IAAIN,UAAU,CAACU,OAAO,CAAC7D,GAAG,CAACqC,SAAS,CAAC,GAAG,CAAC,CAAC,EAAE;QAC1C,IAAIjF,QAAQ,IAAI,QAAQ,EAAE;UACxB4C,GAAG,CAAC3C,MAAM,GAAG,IAAI;UACjB2C,GAAG,CAAC8D,SAAS,GAAGxG,QAAQ,CAAC0C,GAAG,CAACqC,SAAS,CAAC,GACnC/E,QAAQ,CAAC0C,GAAG,CAACqC,SAAS,CAAC,GACvB,IAAI;QACV,CAAC,MAAM,IAAIjF,QAAQ,IAAI,UAAU,EAAE;UACjC4C,GAAG,CAAC3C,MAAM,GAAG;YAAE0G,QAAQ,EAAE7J;UAAM,CAAC;UAChC8F,GAAG,CAAC8D,SAAS,GAAGxG,QAAQ,CAAC0C,GAAG,CAACqC,SAAS,CAAC,GACnC/E,QAAQ,CAAC0C,GAAG,CAACqC,SAAS,CAAC,GACvB,IAAI;QACV;MACF;MACA,OAAOrC,GAAG;IACZ,CAAC,CAAC;IACF1F,IAAI,CAACyF,GAAG,CAAC,CAACiE,IAAI,EAAE9J,KAAK,KAAK;MACxB,IAAI,CAACzC,UAAU,CAACuM,IAAI,CAACC,WAAW,CAAC,EAAE;QACjC,IAAIC,GAAG,GAAAzJ,aAAA,KAAQuJ,IAAI,CAAE;QACrB,MAAM;UAAE1H,IAAI;UAAExD,KAAK;UAAEqL;QAAU,CAAC,GAAGH,IAAI,CAACC,WAAW;QACnD,IAAIG,GAAG,GAAG,IAAI;QACd,IAAIX,IAAI,GAAGO,IAAI,CAACN,KAAK;QACrBU,GAAG,GAAG3L,OAAO,CAAC6D,IAAI,EAAA7B,aAAA,CAAAA,aAAA;UAChB4J,WAAW,iBAAAC,MAAA,CAAOb,IAAI;QAAE,GACrB3K,KAAK;UACRyL,GAAG,EAAE,IAAI,CAACC;QAAc,EACzB,CAAC;QACFN,GAAG,GAAAzJ,aAAA;UACDgK,cAAc,EAAEC,KAAA,IAKV;YAAA,IALW;cACfC,eAAe;cACfC,YAAY;cACZC,OAAO;cACPC;YACF,CAAC,GAAAJ,KAAA;YACC,oBACE7M,KAAA,CAAAuB,aAAA;cAAKuK,SAAS,EAAEnL,OAAO,CAACL,MAAM,EAAE,QAAQ;YAAE,gBACxCN,KAAA,CAAAuB,aAAA;cAAKuK,SAAS,EAAEnL,OAAO,CAACL,MAAM,EAAE,OAAO;YAAE,GAAEiM,GAAS,CAAC,eACrDvM,KAAA,CAAAuB,aAAA,CAAA2L,MAAA,qBACElN,KAAA,CAAAuB,aAAA,CAAA4L,OAAA;cACE1I,IAAI,EAAC,SAAS;cACd2I,OAAO,EAAEA,CAAA,KAAM;gBAAA,IAAAC,qBAAA;gBACbL,OAAO,CAAC,CAAC;gBACT,MAAM;kBAAE1H;gBAAa,CAAC,GAAG,IAAI,CAAC5C,KAAK;gBACnC,IAAI4K,eAAe,GAAA1K,aAAA,KAAQ0C,YAAY,CAAE;gBACzC,IAAIiI,GAAG,GAAGpB,IAAI,CAACpB,KAAK,IAAIoB,IAAI,CAAC3B,SAAS;gBACtC8C,eAAe,CAACC,GAAG,CAAC,IAAAF,qBAAA,GAClB,IAAI,CAACV,cAAc,CAACxF,OAAO,cAAAkG,qBAAA,uBAA3BA,qBAAA,CAA6BG,QAAQ,CAAC,CAAC;gBACzC,IAAI,CAAC3K,QAAQ,CAAC;kBACZyC,YAAY,EAAA1C,aAAA,KAAO0K,eAAe;gBACpC,CAAC,CAAC;gBACF,MAAMG,SAAS,GAAG,IAAI,CAAC/D,YAAY,CAAC,IAAI,CAAChH,KAAK,CAAC8C,MAAM,CAAC;gBACtD,IAAI,CAAClB,KAAK,CAACpC,IAAI,CAAC;kBACd+B,MAAM,EAAArB,aAAA,CAAAA,aAAA,KAAO0K,eAAe,GAAKG,SAAS;gBAC5C,CAAC,CAAC;cACJ,CAAE;cACFjL,IAAI,EAAC,OAAO;cACZsJ,SAAS,EAAEnL,OAAO,CAACL,MAAM,EAAE,QAAQ;YAAE,GACtC,cAEO,CACH,CACJ,CAAC;UAEV,CAAC;UACDoN,UAAU,EAAEA,CAAA,KAAM;YAChB,oBAAO1N,KAAA,CAAAuB,aAAA,CAAC/B,cAAc,MAAE,CAAC;UAC3B;QAAC,GACE6M,GAAG,CACP;QACD5J,IAAI,CAACJ,KAAK,CAAC,GAAGgK,GAAG;MACnB;IACF,CAAC,CAAC;IACF,OAAO5J,IAAI;EACb;EACAkL,aAAaA,CAAA,EAAG;IACd,IAAI;MAAEtK,SAAS;MAAEyB,OAAO;MAAES;IAAS,CAAC,GAAG,IAAI,CAAC7C,KAAK;IACjD,IAAI;MAAEsH,YAAY;MAAElF,OAAO,EAAE8I,QAAQ;MAAEC;IAAQ,CAAC,GAAG,IAAI,CAAC5M,KAAK;IAC7D,MAAM;MAAE6M,SAAS;MAAEC,kBAAkB,GAAG,CAAC;IAAE,CAAC,GAAGhN,MAAM,CAAC,CAAC;IACvD,IAAIiN,KAAK,GAAG,CAAC,SAAS,EAAE,MAAM,EAAE,MAAM,EAAE,QAAQ,CAAC;IACjD,IAAIC,UAAU,GAAG,CAAC,CAAQ;IAC1B,IAAIJ,OAAO,IAAI,IAAI,EAAE;MACnBG,KAAK,GAAGH,OAAO,CAACK,WAAW,GACvBL,OAAO,CAACK,WAAW,GACnB,CAAC,SAAS,EAAE,MAAM,EAAE,MAAM,EAAE,QAAQ,CAAC;IAC3C,CAAC,MAAM;MACLF,KAAK,GAAGH,OAAO,CAACG,KAAK,GACjBH,OAAO,CAACG,KAAK,GACbF,SAAS,CAACE,KAAK,GACfF,SAAS,CAACE,KAAK,GACfA,KAAK;MACTC,UAAU,GAAGJ,OAAO,CAACK,WAAW,GAAGL,OAAO,CAACK,WAAW,GAAG,CAAC,CAAC;IAC7D;IACA,MAAMC,QAAQ,GAAG,CACf;MAAEtC,KAAK,EAAE,IAAI;MAAE0B,GAAG,EAAE;IAAU,CAAC,EAC/B;MAAE1B,KAAK,EAAE,IAAI;MAAE0B,GAAG,EAAE;IAAS,CAAC,EAC9B;MAAE1B,KAAK,EAAE,IAAI;MAAE0B,GAAG,EAAE;IAAQ,CAAC,CAC9B;IACD,MAAMa,QAAQ,GAAG,CACf;MAAEvC,KAAK,EAAE,OAAO;MAAE0B,GAAG,EAAE;IAAS,CAAC,EACjC;MAAE1B,KAAK,EAAE,OAAO;MAAE0B,GAAG,EAAE;IAAW,CAAC,CACpC;IACD,MAAMc,WAAW,gBACfrO,KAAA,CAAAuB,aAAA,CAAAvB,KAAA,CAAAsO,QAAA,qBACEtO,KAAA,CAAAuB,aAAA;MACEuK,SAAS,EAAEnL,OAAO,CAACL,MAAM,EAAE,cAAc,CAAE;MAC3CyL,KAAK,EAAE;QACLwC,MAAM,EAAE,IAAI,CAAC7L,KAAK,CAACgD,WAAW,GAAG,aAAa,GAAG,SAAS;QAC1D8I,KAAK,EAAE,IAAI,CAAC9L,KAAK,CAACgD,WAAW,IAAI;MACnC,CAAE;MACF0H,OAAO,EAAEA,CAAA,KAAM;QACb,IAAI,IAAI,CAAC1K,KAAK,CAACgD,WAAW,EAAE;UAC1B;QACF;QACA,IAAI,CAAC7C,QAAQ,CAAC;UAAE2C,MAAM,EAAE,EAAE;UAAEC,QAAQ,EAAE,CAAC,CAAC;UAAEC,WAAW,EAAE;QAAK,CAAC,CAAC;QAC9D,MAAMzB,MAAM,GAAArB,aAAA,KAAQ,IAAI,CAACF,KAAK,CAAC4C,YAAY,CAAE;QAC7C,IAAI,CAAChB,KAAK,CAACC,MAAM,CAAC;UAAEN;QAAO,CAAC,CAAC;MAC/B;IAAE,GACH,sCAEI,CAAC,EACLmK,QAAQ,CAAClG,GAAG,CAAC,CAACiE,IAAI,EAAE9J,KAAK,KAAK;MAC7B,oBACErC,KAAA,CAAAuB,aAAA;QACEgM,GAAG,EAAEpB,IAAI,CAACoB,GAAI;QACdH,OAAO,EAAEA,CAAA,KAAM;UACb,IAAI,CAACvK,QAAQ,CAAC;YACZ2C,MAAM,EAAE,EAAE;YACVC,QAAQ,EAAE,CAAC,CAAC;YACZF,QAAQ,EAAE4G,IAAI,CAACoB,GAAG;YAClB7H,WAAW,EAAE;UACf,CAAC,CAAC;UACF,MAAMzB,MAAM,GAAArB,aAAA,KAAQ,IAAI,CAACF,KAAK,CAAC4C,YAAY,CAAE;UAC7C,IAAI,CAAChB,KAAK,CAACC,MAAM,CAAC;YAAEN;UAAO,CAAC,CAAC;QAC/B;MAAE,GAEDsB,QAAQ,IAAI4G,IAAI,CAACoB,GAAG,gBACnBvN,KAAA,CAAAuB,aAAA,yBACEvB,KAAA,CAAAuB,aAAA;QAAKuK,SAAS,EAAEnL,OAAO,CAACL,MAAM,EAAE,cAAc;MAAE,gBAC9CN,KAAA,CAAAuB,aAAA;QAAKwK,KAAK,EAAE;UAAE5K,KAAK,EAAE;QAAG;MAAE,GACvBoE,QAAQ,IAAI4G,IAAI,CAACoB,GAAG,iBAAIvN,KAAA,CAAAuB,aAAA,CAACjC,aAAa,MAAE,CACtC,CAAC,eACNU,KAAA,CAAAuB,aAAA,cAAK,GAAC,EAAC4K,IAAI,CAACN,KAAW,CACpB,CACJ,CAAC,gBAEJ7L,KAAA,CAAAuB,aAAA;QAAKuK,SAAS,EAAEnL,OAAO,CAACL,MAAM,EAAE,cAAc;MAAE,gBAC9CN,KAAA,CAAAuB,aAAA;QAAKwK,KAAK,EAAE;UAAE5K,KAAK,EAAE;QAAG;MAAE,CAAM,CAAC,eACjCnB,KAAA,CAAAuB,aAAA,cAAK,GAAC,EAAC4K,IAAI,CAACN,KAAW,CACpB,CAEJ,CAAC;IAEV,CAAC,CAAC,EACD,IAAI,CAACnJ,KAAK,CAAC8C,MAAM,CAAC0E,MAAM,GAAG,CAAC,iBAC3BlK,KAAA,CAAAuB,aAAA,CAAAvB,KAAA,CAAAsO,QAAA,qBACEtO,KAAA,CAAAuB,aAAA;MACEuK,SAAS,EAAEnL,OAAO,CAACL,MAAM,EAAE,cAAc,CAAE;MAC3CyL,KAAK,EAAE;QAAEyC,KAAK,EAAE;MAAkB;IAAE,GACrC,0BAEI,CAAC,EACL,IAAI,CAAC9L,KAAK,CAAC8C,MAAM,CAAC0C,GAAG,CAAC,CAACiE,IAAI,EAAE9J,KAAK,KAAK;MACtC,oBACErC,KAAA,CAAAuB,aAAA;QAAKuK,SAAS,EAAEnL,OAAO,CAACL,MAAM,EAAE,cAAc,CAAE;QAACiN,GAAG,EAAElL;MAAM,gBAC1DrC,KAAA,CAAAuB,aAAA;QAAKwK,KAAK,EAAE;UAAE5K,KAAK,EAAE;QAAG;MAAE,GACvBgL,IAAI,CAAClB,KAAK,IAAI,QAAQ,gBACrBjL,KAAA,CAAAuB,aAAA,CAAC9B,qBAAqB,MAAE,CAAC,gBAEzBO,KAAA,CAAAuB,aAAA,CAAC7B,sBAAsB,MAAE,CAExB,CAAC,eACNM,KAAA,CAAAuB,aAAA,cAAK,GAAC,EAAC4K,IAAI,CAAC7D,MAAM,CAACuD,KAAW,CAC3B,CAAC;IAEV,CAAC,CACD,CAEJ,CACH;IACD,MAAM4C,WAAW,gBACfzO,KAAA,CAAAuB,aAAA,CAAAvB,KAAA,CAAAsO,QAAA,qBACEtO,KAAA,CAAAuB,aAAA;MAAKuK,SAAS,EAAEnL,OAAO,CAACL,MAAM,EAAE,cAAc;IAAE,GAAC,0BAAS,CAAC,EAC1D6N,QAAQ,CAACjG,GAAG,CAAC,CAACiE,IAAI,EAAE9J,KAAK,KAAK;MAC7B,oBACErC,KAAA,CAAAuB,aAAA;QACEgM,GAAG,EAAEpB,IAAI,CAACoB,GAAI;QACdH,OAAO,EAAEA,CAAA,KAAM;UACb,IAAI,CAACvK,QAAQ,CAAC;YACZQ,SAAS,EAAE8I,IAAI,CAACoB;UAClB,CAAC,CAAC;QACJ;MAAE,GAEDlK,SAAS,IAAI8I,IAAI,CAACoB,GAAG,gBACpBvN,KAAA,CAAAuB,aAAA,yBACEvB,KAAA,CAAAuB,aAAA;QAAKuK,SAAS,EAAEnL,OAAO,CAACL,MAAM,EAAE,cAAc;MAAE,gBAC9CN,KAAA,CAAAuB,aAAA;QAAKwK,KAAK,EAAE;UAAE5K,KAAK,EAAE;QAAG;MAAE,GACvBkC,SAAS,IAAI8I,IAAI,CAACoB,GAAG,iBAAIvN,KAAA,CAAAuB,aAAA,CAACjC,aAAa,MAAE,CACvC,CAAC,eACNU,KAAA,CAAAuB,aAAA,cAAK,GAAC,EAAC4K,IAAI,CAACN,KAAW,CACpB,CACJ,CAAC,gBAEJ7L,KAAA,CAAAuB,aAAA;QAAKuK,SAAS,EAAEnL,OAAO,CAACL,MAAM,EAAE,cAAc;MAAE,gBAC9CN,KAAA,CAAAuB,aAAA;QAAKwK,KAAK,EAAE;UAAE5K,KAAK,EAAE;QAAG;MAAE,CAAM,CAAC,eACjCnB,KAAA,CAAAuB,aAAA,cAAK,GAAC,EAAC4K,IAAI,CAACN,KAAW,CACpB,CAEJ,CAAC;IAEV,CAAC,CACD,CACH;IAED,MAAMN,eAAe,GAAGzG,OAAO,CAAC0G,MAAM,CAAE/I,IAAI,IAAKA,IAAI,CAACgI,QAAQ,KAAK,KAAK,CAAC;IAEzE,MAAM7F,OAAO,gBACX5E,KAAA,CAAAuB,aAAA,CAAAmN,SAAA,CAAUC,KAAK;MACbhG,QAAQ,EAAE,IAAI,CAACqB,YAAY,CAAC4E,IAAI,CAAC,IAAI,CAAE;MACvCrI,OAAO,EAAEqH,QAAQ,CAAC1F,GAAG,CAClBC,GAA+D,IAAK;QACnE,IAAI,CAACA,GAAG,CAACqC,SAAS,EAAE;UAClBrC,GAAG,CAACqC,SAAS,GAAGrC,GAAG,CAAC0D,KAAK;QAC3B;QACA,OAAO;UACLgD,KAAK,EAAE1G,GAAG,CAAC0D,KAAK;UAChBiD,KAAK,EAAE3G,GAAG,CAACqC,SAAS;UACpBuE,QAAQ,EAAE5G,GAAG,CAAC6B,YAAY,KAAK;QACjC,CAAC;MACH,CACF;MACA;MAAA;MACA8E,KAAK,EACH,IAAI,CAACpM,KAAK,CAACkD,YAAY,GACnB2F,eAAe,CAACrD,GAAG,CAAEC,GAAG,IAAKA,GAAG,CAACqC,SAAS,CAAC,GAC3C,IAAI,CAAC9H,KAAK,CAACiD;IAChB,CACc,CAClB;IACD,oBACE3F,KAAA,CAAAuB,aAAA;MAAKuK,SAAS,EAAEnL,OAAO,CAACL,MAAM,EAAE,gBAAgB;IAAE,GAC/C0N,KAAK,CAAChC,OAAO,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,iBAC3BhM,KAAA,CAAAuB,aAAA;MAAKwK,KAAK,EAAE;QAAEiD,QAAQ,EAAE;MAAG;IAAE,gBAC3BhP,KAAA,CAAAuB,aAAA,CAAA0N,QAAA;MACEpD,KAAK,EAAC,sCAAQ;MACdjH,OAAO,EAAEA,OAAQ;MACjBsK,SAAS,EAAC,aAAa;MACvBC,OAAO,EAAC,OAAO;MACfC,YAAY,EAAE;QAAEC,QAAQ,EAAE,GAAG;QAAEC,QAAQ,EAAE;MAAI;MAC7C;IAAA,gBAEAtP,KAAA,CAAAuB,aAAA,CAAClC,gBAAgB;MAACyM,SAAS,EAAEnL,OAAO,CAACL,MAAM,EAAE,gBAAgB;IAAE,CAAE,CAC1D,CACN,CACN,EACA0N,KAAK,CAAChC,OAAO,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,iBACzBhM,KAAA,CAAAuB,aAAA;MAAKwK,KAAK,EAAE;QAAEwD,WAAW,EAAE,CAAC;QAAEP,QAAQ,EAAE;MAAG;IAAE,gBAC3ChP,KAAA,CAAAuB,aAAA,CAAA0N,QAAA;MAASC,SAAS,EAAC,QAAQ;MAACtK,OAAO,EAAEyJ,WAAY;MAACc,OAAO,EAAC;IAAO,gBAC/DnP,KAAA,CAAAuB,aAAA,CAAC9B,qBAAqB,MAAE,CACjB,CACN,CACN,EACAuO,KAAK,CAAChC,OAAO,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,iBACzBhM,KAAA,CAAAuB,aAAA;MAAKwK,KAAK,EAAE;QAAEwD,WAAW,EAAE,CAAC;QAAEP,QAAQ,EAAE;MAAG;IAAE,gBAC3ChP,KAAA,CAAAuB,aAAA,CAAA0N,QAAA;MAASC,SAAS,EAAC,QAAQ;MAACtK,OAAO,EAAE6J,WAAY;MAACU,OAAO,EAAC;IAAO,gBAC/DnP,KAAA,CAAAuB,aAAA,CAAChC,oBAAoB,MAAE,CAChB,CACN,CACN,EACAyO,KAAK,CAAChC,OAAO,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,iBAC5BhM,KAAA,CAAAuB,aAAA;MACEwK,KAAK,EAAE;QAAEwD,WAAW,EAAE,CAAC;QAAEP,QAAQ,EAAE,EAAE;QAAET,MAAM,EAAE;MAAU,CAAE;MAC3DnB,OAAO,EAAEA,CAAA,KAAM;QACb,MAAMnJ,MAAM,GAAArB,aAAA,KAAQ,IAAI,CAACF,KAAK,CAAC4C,YAAY,CAAE;QAC7C,IAAI2I,UAAU,CAACuB,SAAS,EAAE;UACxBvB,UAAU,CAACuB,SAAS,CAAC,CAAC;QACxB,CAAC,MAAM;UACL,IAAI,CAAClL,KAAK,CAACpC,IAAI,CAAC;YAAE+B;UAAO,CAAC,CAAC;QAC7B;MACF;IAAE,gBAEFjE,KAAA,CAAAuB,aAAA,CAAC5B,YAAY,MAAE,CACZ,CAEJ,CAAC;EAEV;EACA8P,kBAAkBA,CAAA,EAAG;IACnB,OAAO,IAAI,CAAC/M,KAAK,CAACmD,eAAe;EACnC;EACA6J,mBAAmBA,CAAA,EAAG;IACpB,OAAO,IAAI,CAAChN,KAAK,CAACoD,gBAAgB;EACpC;EACA6J,oBAAoBA,CAAA,EAAG;IACrB,IAAI,CAAC9M,QAAQ,CAAC;MACZgD,eAAe,EAAE,EAAE;MACnBC,gBAAgB,EAAE;IACpB,CAAC,CAAC;EACJ;EACA8J,kBAAkBA,CAAC7M,IAA4B,EAAE;IAC/C,IAAI,CAACF,QAAQ,CAAC;MACZgD,eAAe,EAAE9C;IACnB,CAAC,CAAC;EACJ;EACA8M,mBAAmBA,CAAC9M,IAAmB,EAAE;IACvC,IAAI,CAACF,QAAQ,CAAC;MACZiD,gBAAgB,EAAE/C;IACpB,CAAC,CAAC;EACJ;EACA+M,oBAAoBA,CAACnM,MAAW,EAAEoM,QAAa,EAAE;IAC/C,MAAM;MAAElK,eAAe;MAAEC;IAAiB,CAAC,GAAG,IAAI,CAACpD,KAAK;IACxD,IAAI;MAAEsN,MAAM,GAAG;IAAK,CAAC,GAAG,IAAI,CAAC/O,KAAK;IAClC,IAAIgP,kBAAkB,GAAG,CAAC,GAAGpK,eAAe,CAAC;IAC7C,IAAIqK,mBAAmB,GAAG,CAAC,GAAGpK,gBAAgB,CAAC;IAC/C,IAAIiK,QAAQ,EAAE;MACZE,kBAAkB,GAAG,CAAC,GAAGA,kBAAkB,EAAEtM,MAAM,CAACqM,MAAM,CAAC,CAAC;MAC5DE,mBAAmB,GAAG,CAAC,GAAGA,mBAAmB,EAAEvM,MAAM,CAAC;IACxD,CAAC,MAAM;MACLkC,eAAe,CAACqC,GAAG,CAAC,CAACiE,IAAS,EAAE9J,KAAU,KAAK;QAC7C,IAAI8J,IAAI,KAAKxI,MAAM,CAACqM,MAAM,CAAC,EAAE;UAC3BC,kBAAkB,CAACE,MAAM,CAAC9N,KAAK,EAAE,CAAC,CAAC;QACrC;MACF,CAAC,CAAC;MACFyD,gBAAgB,CAACoC,GAAG,CAAC,CAACiE,IAAS,EAAE9J,KAAU,KAAK;QAC9C,IAAI8J,IAAI,CAAC6D,MAAM,CAAC,KAAKrM,MAAM,CAACqM,MAAM,CAAC,EAAE;UACnCE,mBAAmB,CAACC,MAAM,CAAC9N,KAAK,EAAE,CAAC,CAAC;QACtC;MACF,CAAC,CAAC;IACJ;IACA,IAAI,CAACQ,QAAQ,CAAC;MACZgD,eAAe,EAAEoK,kBAAkB;MACnCnK,gBAAgB,EAAEoK;IACpB,CAAC,CAAC;EACJ;EACAE,uBAAuBA,CAACL,QAAa,EAAEM,YAAiB,EAAEC,UAAe,EAAE;IACzE,MAAM;MAAEzK,eAAe;MAAEC;IAAiB,CAAC,GAAG,IAAI,CAACpD,KAAK;IACxD,MAAM;MAAEsN,MAAM,GAAG;IAAK,CAAC,GAAG,IAAI,CAAC/O,KAAK;IACpC,IAAIsP,MAAW,GAAG,EAAE;IACpB,IAAIC,QAAa,GAAG,EAAE;IACtB,IAAIF,UAAU,CAACpG,MAAM,GAAG,CAAC,EAAE;MACzB,IAAIuG,SAAS,GAAGH,UAAU,CAACpI,GAAG,CAAEiE,IAAS,IAAKA,IAAI,CAAC6D,MAAM,CAAC,CAAC;MAC3D,IAAID,QAAQ,EAAE;QACZQ,MAAM,GAAG,CAAC,GAAG1K,eAAe,EAAE,GAAG4K,SAAS,CAAC;QAC3CD,QAAQ,GAAG,CAAC,GAAG1K,gBAAgB,EAAE,GAAGwK,UAAU,CAAC;MACjD,CAAC,MAAM;QACLzK,eAAe,CAACqC,GAAG,CAAC,CAACiE,IAAS,EAAE9J,KAAU,KAAK;UAC7C,IAAIoO,SAAS,CAACzE,OAAO,CAACG,IAAI,CAAC,IAAI,CAAC,CAAC,EAAE;YACjCoE,MAAM,CAAC/H,IAAI,CAAC2D,IAAI,CAAC;UACnB;QACF,CAAC,CAAC;QACFrG,gBAAgB,CAACoC,GAAG,CAAC,CAACiE,IAAS,EAAE9J,KAAU,KAAK;UAC9C,IAAIoO,SAAS,CAACzE,OAAO,CAACG,IAAI,CAAC6D,MAAM,CAAC,CAAC,IAAI,CAAC,CAAC,EAAE;YACzCQ,QAAQ,CAAChI,IAAI,CAAC2D,IAAI,CAAC;UACrB;QACF,CAAC,CAAC;MACJ;IACF,CAAC,MAAM;MACLoE,MAAM,GAAG,CAAC,GAAG1K,eAAe,CAAC;MAC7B2K,QAAQ,GAAG,CAAC,GAAG1K,gBAAgB,CAAC;IAClC;IACA,IAAI,CAACjD,QAAQ,CAAC;MACZgD,eAAe,EAAE,CAAC,GAAG0K,MAAM,CAAC;MAC5BzK,gBAAgB,EAAE,CAAC,GAAG0K,QAAQ;IAChC,CAAC,CAAC;EACJ;EACA9E,MAAMA,CAAA,EAAG;IAAA,IAAAgF,mBAAA;IACP,IAAIxN,KAAK,GAAG,IAAI;MACd;QACE6B,OAAO;QACPF,UAAU;QACVG,UAAU,GAAG,CAAC,CAAC;QACfE,UAAU;QACVC,WAAW;QACXC,WAAW;QACX/B;MACF,CAAC,GAAG,IAAI,CAACX,KAAK;MACdzB,KAAK,GAAGlB,KAAK,CAAC4Q,IAAI,CAChB,IAAI,CAAC1P,KAAK,EACV,CACE,OAAO,EACP,UAAU,EACV,SAAS,EACT,aAAa,EACb,SAAS,EACT,YAAY,EACZ,cAAc,EACd,YAAY,EACZ,kBAAkB,CACnB,EACD;QACE+O,MAAM,EAAE,IAAI;QACZY,gBAAgB,EAAE;MACpB,CACF,CAAC;IACH,IAAI3P,KAAK,CAAC+D,UAAU,KAAK,KAAK,EAAE;MAC9B/D,KAAK,CAAC+D,UAAU,GAAApC,aAAA,CAAAA,aAAA;QACdiO,QAAQ,EAAE,CAAC,aAAa,CAAC;QACzBC,eAAe,EAAE,IAAI;QACrBC,eAAe,EAAE;MAAI,GAClB9P,KAAK,CAAC+D,UAAU,GAChBA,UAAU,CACd;MACD,IAAI/D,KAAK,CAAC+P,SAAS,IAAI,IAAI,EAAE;QAC3B/P,KAAK,CAAC+D,UAAU,CAACgM,SAAS,GAAG,UAAUC,KAAK,EAAAC,KAAA,EAAc;UAAA,IAAZ,CAACC,IAAI,EAAEC,EAAE,CAAC,GAAAF,KAAA;UACtD;UACA,OAAO,IAAI,GAAGD,KAAK,GAAG,IAAI;QAC5B,CAAC;MACH;IACF;IACAhQ,KAAK,CAAC0H,QAAQ,GAAG,UAAU3D,UAAU,EAAE4D,OAAO,EAAEpD,MAAM,EAAEqD,KAAK,EAAE;MAC7D3F,KAAK,CAACyF,QAAQ,CAAC3D,UAAU,EAAE4D,OAAO,EAAEpD,MAAM,EAAEqD,KAAK,CAAC;IACpD,CAAC;IACD,IAAI5H,KAAK,CAAC2P,gBAAgB,EAAE;MAC1B,MAAMS,OAAO,GAAGpQ,KAAK,CAACqQ,KAAK;MAC3BrQ,KAAK,CAACqQ,KAAK,GAAG,UAAU3N,MAAM,EAAEtB,KAAK,EAAE;QACrC,IAAIkP,MAAM,GAAGF,OAAO,GAAGA,OAAO,CAAC1N,MAAM,EAAEtB,KAAK,CAAC,GAAG,CAAC,CAAC;QAClD,MAAMmP,SAAS,GAAGD,MAAM,CAACnE,OAAO;QAChCmE,MAAM,CAACnE,OAAO,GAAIqE,KAAK,IAAK;UAC1BvO,KAAK,CAACL,QAAQ,CAAC;YACboC,WAAW,EAAE5C,KAAK,CAAE;UACtB,CAAC,CAAC;UACFtC,KAAK,CAACyG,QAAQ,CAACgL,SAAS,EAAEtO,KAAK,EAAE,CAACuO,KAAK,CAAC,CAAC;QAC3C,CAAC;QACD,OAAOF,MAAM;MACf,CAAC;MACDtQ,KAAK,CAACyQ,YAAY,GAAG,UAAU/N,MAAM,EAAEtB,KAAK,EAAE;QAC5C,OAAOA,KAAK,KAAKa,KAAK,CAACR,KAAK,CAACuC,WAAW,MAAAwH,MAAA,CACjCnM,MAAM,CAACqR,aAAa,IACvB,EAAE;MACR,CAAC;IACH;IACA,IAAIC,aAAa,GAAG,EAAE;IACtB,IAAI1M,UAAU,EAAE;MACd,MAAMnC,IAAI,GAAG1C,SAAS,CAACwR,kBAAkB,CACvC,IAAI,EACJ3M,UAAU,EACVC,WAAW,EACXC,WACF,CAAC;MACDwM,aAAa,GAAG7O,IAAI,CAAC+O,SAAS;MAC9B7Q,KAAK,CAAC8Q,eAAe,GAAGhP,IAAI,CAACiP,QAAQ;IACvC,CAAC,MAAM;MACLJ,aAAa,GAAG/M,UAAU;IAC5B;IACA5D,KAAK,CAACqD,KAAK,GAAGrD,KAAK,CAACqD,KAAK,IAAI,CAAC,CAAC;IAC/BrD,KAAK,CAACqD,KAAK,CAAC0C,QAAQ,GAAG/F,KAAK,CAACqD,KAAK,CAAC0C,QAAQ,KAAK,KAAK,GAAG,KAAK,GAAG,IAAI;IACpE,MAAM;MAAEiL;IAAS,CAAC,GAAG/O,KAAK,CAACjC,KAAK;IAChC,MAAMiR,aAAa,GACjBD,QAAQ,KAAK,IAAI,GACb;MACEE,UAAU,EAAE5R,gBAAgB;MAC5B+Q,KAAK,EAAEA,CAAC3N,MAAM,EAAEtB,KAAK,MAAM;QACzBA,KAAK;QACLsB,MAAM;QACNU,OAAO,EAAE,IAAI,CAACA;MAChB,CAAC;IACH,CAAC,GACD,CAAC,CAAC;IACR,IAAI;MAAEgD;IAAa,CAAC,GAAG,IAAI,CAACpG,KAAK;IAEjC,MAAMmR,WAAW,GACf/K,YAAY,KAAK,IAAI,GAAG;MAAE8K,UAAU,EAAE,IAAI,CAACA;IAAW,CAAC,GAAG,IAAI;IAChE,MAAM;MAAErE;IAAU,CAAC,GAAG/M,MAAM,CAAC,CAAC;IAC9B,IAAIsR,QAAQ,GAAG,IAAI;IACnB,IAAIC,SAAS,GACX,IAAI,CAACrR,KAAK,CAAC4M,OAAO,KAAK,KAAK,IAAI,EAAA6C,mBAAA,OAAI,CAACzP,KAAK,CAAC4M,OAAO,cAAA6C,mBAAA,uBAAlBA,mBAAA,CAAoB6B,IAAI,MAAK,KAAK,GAC9D,KAAK,GACL,IAAI;IACV,IAAI,CAACD,SAAS,EAAE;MACdD,QAAQ,GAAGC,SAAS;IACtB,CAAC,MAAM;MACLD,QAAQ,GAAGvE,SAAS,CAACyE,IAAI,KAAK,KAAK,GAAG,KAAK,GAAG,IAAI;IACpD;IACA,IAAI,IAAI,CAACtR,KAAK,CAACuR,gBAAgB,EAAE;MAC/B,MAAM;QAAEC,YAAY,GAAG,CAAC;MAAE,CAAC,GAAG,IAAI,CAACxR,KAAK;MACxCA,KAAK,GAAA2B,aAAA,CAAAA,aAAA,KACA3B,KAAK;QACRwR,YAAY,EAAA7P,aAAA;UACViD,eAAe,EAAE,IAAI,CAACnD,KAAK,CAACmD,eAAe;UAC3C6M,QAAQ,EAAE,IAAI,CAAC5C,oBAAoB,CAAClB,IAAI,CAAC,IAAI,CAAC;UAC9C+D,WAAW,EAAE,IAAI,CAACvC,uBAAuB,CAACxB,IAAI,CAAC,IAAI,CAAC;UACpDgE,WAAW,EAAE;QAAE,GACZH,YAAY;MAChB,EACF;IACH;IACA,MAAMI,YAAY,gBAChB7S,KAAA,CAAAuB,aAAA,CAAAvB,KAAA,CAAAsO,QAAA,QACG+D,QAAQ,IAAI,IAAI,CAAC1E,aAAa,CAAC,CAAC,eACjC3N,KAAA,CAAAuB,aAAA,CAAAuR,MAAA,EAAAC,QAAA;MACEC,kBAAkB,EAAC,YAAY;MAC/BC,OAAO;MACPpO,UAAU,EAAE+M,aAAc;MAC1B9M,OAAO,EAAE,IAAI,CAACuG,UAAU,CAAC,CAAE;MAC3BtG,OAAO,EAAEA,OAAQ;MACjB+G,SAAS,EAAExL,MAAM,CAAC,WAAW,CAAE;MAC/B4S,MAAM,EAAE;QACNC,SAAS,eAAEnT,KAAA,CAAAuB,aAAA,CAACV,MAAM;UAACiL,SAAS,EAAEnL,OAAO,CAACL,MAAM,EAAE,cAAc;QAAE,CAAE;MAClE,CAAE;MACF8S,MAAM,EAAE;QAAEC,CAAC,EAAE;MAAc;IAAE,GACzBjB,WAAW,EACXnR,KAAK,EACLiR,aAAa;MACjB1P,IAAI,EAAEa;IAAU,EACjB,CACD,CACH;IAED,OAAO4O,QAAQ,KAAK,IAAI,gBACtBjS,KAAA,CAAAuB,aAAA,CAACtB,WAAW;MAACqT,OAAO,EAAE9S;IAAa,GAAEqS,YAA0B,CAAC,GAEhEA,YACD;EACH;AACF;AAAC9Q,eAAA,CAt4BKJ,QAAQ,kBACU;EACpBsQ,QAAQ,EAAE,KAAK;EACfjB,SAAS,EAAE,IAAI;EACfhH,YAAY,EAAE,IAAI;EAClBuJ,OAAO,EAAE,EAAE;EACXvK,cAAc,EAAE,IAAI;EACpBD,QAAQ,EAAE,IAAI;EACdD,YAAY,EAAE,IAAI;EAClBzB,YAAY,EAAE,IAAI;EAClBwG,OAAO,EAAE;IACP0E,IAAI,EAAE,IAAI;IACVrE,WAAW,EAAE,CAAC;EAChB;AACF,CAAC;AA03BH,eAAezN,YAAY,CAACkB,QAAQ,CAAC","ignoreList":[]}
@@ -75,5 +75,5 @@
75
75
  overflow: hidden;
76
76
  text-overflow: ellipsis;
77
77
  white-space: nowrap;
78
- display: inline;
78
+
79
79
  }
@@ -81,19 +81,22 @@ const withCustomUpload = Component => {
81
81
  status: res.code == 200 ? "success" : "error",
82
82
  url: ImgRes ? ImgRes.data : null
83
83
  });
84
- if (this.uploadSize == this.uploadIngSize) {
85
- this.onComplete(this.uploadIngList);
86
- }
84
+ // console.log('customRequest-uploadSize',this.uploadSize)
85
+ // console.log('customRequest-uploadIngSize',this.uploadIngSize)
86
+ // if (this.uploadSize == this.uploadIngSize) {
87
+ this.onComplete(this.uploadIngList);
88
+ // }
87
89
  onComplete && onComplete({
88
90
  file: options.file,
89
91
  fileId: fileId,
90
92
  status: res.code == 200 ? "success" : "error"
91
93
  });
92
94
  } catch (e) {
93
- if (this.uploadSize == this.uploadIngSize) {
94
- this.onComplete(this.uploadIngList);
95
- options.onError();
96
- }
95
+ // if (this.uploadSize == this.uploadIngSize) {
96
+ this.onComplete(this.uploadIngList);
97
+ options.onError();
98
+ // }
99
+
97
100
  onComplete && onComplete({
98
101
  file: options.file,
99
102
  fileId: "",
@@ -358,7 +361,7 @@ const withCustomUpload = Component => {
358
361
  className: getLess(styles, "name")
359
362
  }, file.name || file.fileName), /*#__PURE__*/React.createElement("div", {
360
363
  className: getLess(styles, "icon")
361
- }, showUploadList.showPreviewIcon && file.status == "done" && /*#__PURE__*/React.createElement("div", {
364
+ }, showUploadList.showPreviewIcon && (file.status == "done" || file.fileId) && /*#__PURE__*/React.createElement("div", {
362
365
  onClick: () => {
363
366
  if (this.props.onPreview) {
364
367
  this.props.onPreview(file);
@@ -369,7 +372,7 @@ const withCustomUpload = Component => {
369
372
  style: {
370
373
  cursor: "pointer"
371
374
  }
372
- }, showUploadList.downloadIcon ? showUploadList.downloadIcon : /*#__PURE__*/React.createElement(EyeOutlined, null)), showUploadList.showDownloadIcon && file.status == "done" && /*#__PURE__*/React.createElement("div", {
375
+ }, showUploadList.downloadIcon ? showUploadList.downloadIcon : /*#__PURE__*/React.createElement(EyeOutlined, null)), showUploadList.showDownloadIcon && (file.status == "done" || file.fileId) && /*#__PURE__*/React.createElement("div", {
373
376
  onClick: () => {
374
377
  if (this.props.onDownload) {
375
378
  this.props.onDownload(file);
@@ -441,4 +444,4 @@ const NscUpload = withCustomUpload(_Upload);
441
444
  const NscUploadDragger = withCustomUpload(_Upload.Dragger);
442
445
  NscUpload.Dragger = NscUploadDragger;
443
446
  export default NscUpload;
444
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJSZWFjdCIsImZpbGUiLCJtZXNzYWdlIiwib21pdCIsImdldExlc3MiLCJzdHlsZXMiLCJjbHMiLCJGaWxlSWNvbiIsIkRlbGV0ZU91dGxpbmVkIiwiRG93bmxvYWRPdXRsaW5lZCIsIkV5ZU91dGxpbmVkIiwidXBsb2FkIiwiZG93bmxvYWQiLCJwcmV2aWV3RG9jdW1lbnQiLCJwcmV2aWV3SW1hZ2UiLCJ3aXRoQ3VzdG9tVXBsb2FkIiwiQ29tcG9uZW50IiwiUHVyZUNvbXBvbmVudCIsImNvbnN0cnVjdG9yIiwiYXJndW1lbnRzIiwiX2RlZmluZVByb3BlcnR5IiwiZmlsZUxpc3QiLCJ2aWV3SWQiLCJmaWxlTGlzdFN0b3JlIiwiZmlsZU5hbWVzIiwib3B0aW9ucyIsIm9uQ29tcGxldGUiLCJvblByb2Nlc3MiLCJzbGljZVNpemUiLCJuZXdWZXJzaW9uIiwicHJvcHMiLCJvblByb2dyZXNzIiwidG90YWxQcm9ncmVzcyIsInBlcmNlbnQiLCJyZXMiLCJwYXJ0U2l6ZSIsInJlcXVlc3RDb25maWciLCJ1cGxvYWRJbmdTaXplIiwiZmlsZUlkIiwiSW1nUmVzIiwiY29kZSIsImRhdGEiLCJhdHRhY2hJZCIsIm9uU3VjY2VzcyIsImxpc3RUeXBlIiwib25FcnJvciIsInVwbG9hZEluZ0xpc3QiLCJwdXNoIiwic3RhdHVzIiwidXJsIiwidXBsb2FkU2l6ZSIsImUiLCJjb21wb25lbnREaWRNb3VudCIsImNvbnZlcnRGaWxlTGlzdCIsImxpc3QiLCJuZXdGaWxlTGlzdCIsIm9sZExpc3QiLCJzZXRTdGF0ZSIsImkiLCJsZW5ndGgiLCJpdGVtIiwidGVtcCIsIl9vYmplY3RTcHJlYWQiLCJuYW1lIiwiZmlsZU5hbWUiLCJ0eXBlIiwic2l6ZSIsImNvbXBvbmVudERpZFVwZGF0ZSIsInByZVByb3BzIiwicHJlU3RhdGUiLCJKU09OIiwic3RyaW5naWZ5Iiwic3RhdGUiLCJnZXRGaWxlTGlzdCIsInNldEZpbGVMaXN0IiwiYmVmb3JlVXBsb2FkIiwib2ZpbGVMaXN0IiwibWF4U2l6ZSIsImFsbG93RmlsZVN1ZmZpeCIsImNoZWNrU2FtZUZpbGUiLCJtYXhDb3VudCIsInNob3dVcGxvYWRMaXN0IiwicHJvcHNMaXN0Iiwib25MaXN0Q2hhbmdlIiwiY2hlY2tGaWxlVHlwZSIsImVycm9yIiwiY29uY2F0IiwiY2hlY2tMaXN0IiwibWFwIiwiaW5kZXhPZiIsIm5ld0xpc3QiLCJ1aWQiLCJzcGxpY2UiLCJuYW1lcyIsInNwbGl0Iiwic3VmZml4IiwiX3JlZiIsIm5ld0ZpbGUiLCJmaWxlcyIsImluZGV4Iiwid2luZG93IiwibG9jYWxTdG9yYWdlIiwiZ2V0SXRlbSIsInByZWZpeCIsIm9uRGVsZXRlIiwicmVuZGVyIiwiZmlsZUNhcmQiLCJzaG93RG93bmxvYWRJY29uIiwic2hvd1ByZXZpZXdJY29uIiwic2hvd1JlbW92ZUljb24iLCJkb3dubG9hZEljb24iLCJyZW1vdmVJY29uIiwicHJldmlld0ljb24iLCJuZXdwcm9wcyIsImRlZmF1bHRQcm9wcyIsImN1c3RvbVJlcXVlc3QiLCJiaW5kIiwibXVsdGlwbGUiLCJpdGVtUmVuZGVyIiwib3JpZ2luTm9kZSIsImN1cnJGaWxlTGlzdCIsImNyZWF0ZUVsZW1lbnQiLCJjbGFzc05hbWUiLCJvbkNsaWNrIiwib25QcmV2aWV3Iiwic3R5bGUiLCJjdXJzb3IiLCJvbkRvd25sb2FkIiwib25SZW1vdmUiLCJ3aWR0aCIsIkZyYWdtZW50IiwiX2V4dGVuZHMiLCJOc2NVcGxvYWQiLCJfVXBsb2FkIiwiTnNjVXBsb2FkRHJhZ2dlciIsIkRyYWdnZXIiXSwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvY29tcG9uZW50cy9iYXNlL3VwbG9hZC9pbmRleC50c3giXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0ICogYXMgUmVhY3QgZnJvbSBcInJlYWN0XCI7XHJcbmltcG9ydCB7IFVwbG9hZCwgVXBsb2FkUHJvcHMgfSBmcm9tIFwiYW50ZFwiO1xyXG5pbXBvcnQgZmlsZSBmcm9tIFwibnNjLWZpbGVcIjtcclxuaW1wb3J0IG1lc3NhZ2UgZnJvbSBcIi4uL21lc3NhZ2VcIjtcclxuaW1wb3J0IG9taXQgZnJvbSBcIm9taXQuanNcIjtcclxuaW1wb3J0IHsgZ2V0TGVzcyB9IGZyb20gXCIuLi8uLi91dGlsc1wiO1xyXG5pbXBvcnQgc3R5bGVzIGZyb20gXCIuL2luZGV4Lmxlc3NcIjtcclxuaW1wb3J0IGNscyBmcm9tIFwiY2xhc3NuYW1lc1wiO1xyXG5pbXBvcnQgRmlsZUljb24gZnJvbSBcIi4uL2NvbW1vbi9GaWxlSWNvblwiO1xyXG5pbXBvcnQge1xyXG4gIERlbGV0ZU91dGxpbmVkLFxyXG4gIERvd25sb2FkT3V0bGluZWQsXHJcbiAgRXllT3V0bGluZWQsXHJcbn0gZnJvbSBcIkBhbnQtZGVzaWduL2ljb25zXCI7XHJcbmNvbnN0IHsgdXBsb2FkLCBkb3dubG9hZCwgcHJldmlld0RvY3VtZW50LCBwcmV2aWV3SW1hZ2UgfSA9IGZpbGU7XHJcblxyXG5pbnRlcmZhY2UgSVVwbG9hZFByb3BzIGV4dGVuZHMgVXBsb2FkUHJvcHMge1xyXG4gIHNsaWNlU2l6ZT86IG51bWJlcjtcclxuICBtYXhTaXplPzogbnVtYmVyIHwgYm9vbGVhbjtcclxuICBvblByb2Nlc3M/OiAocHJvY2VzcykgPT4gdm9pZDtcclxuICBvbkNvbXBsZXRlPzogKHsgZmlsZSwgZmlsZUlkLCBzdGF0dXMgfSkgPT4gdm9pZDtcclxuICBhbGxvd0ZpbGVTdWZmaXg/OiBBcnJheTxTdHJpbmc+OyAvL+WFgeiuuOS4iuS8oOaJqeWxleWQjSzkuI3luKYuXHJcbiAgdXNlRGVmYXVsdExpc3Q/OiBib29sZWFuOyAvL+aYr+WQpuS9v+eUqOm7mOiupOeahGZpbGVMaXN0XHJcbiAgZmlsZUNhcmQ/OiBib29sZWFuO1xyXG4gIG9uTGlzdENoYW5nZT86IGFueTtcclxuICBjaGVja1NhbWVGaWxlPzogYm9vbGVhbjtcclxuICByZXF1ZXN0Q29uZmlnPzogYW55O1xyXG4gIG5ld1ZlcnNpb24/OiBib29sZWFuO1xyXG4gIFtwcm9wc05hbWU6IHN0cmluZ106IGFueTtcclxufVxyXG5jb25zdCB3aXRoQ3VzdG9tVXBsb2FkID0gKENvbXBvbmVudCkgPT4ge1xyXG4gIC8vIOi/lOWbnuS4gOS4quexu+e7hOS7tlxyXG4gIHJldHVybiBjbGFzcyBleHRlbmRzIFJlYWN0LlB1cmVDb21wb25lbnQ8SVVwbG9hZFByb3BzLCBhbnk+IHtcclxuICAgIHN0YXRlID0ge1xyXG4gICAgICBmaWxlTGlzdDogW10sXHJcbiAgICAgIHZpZXdJZDogXCJcIixcclxuICAgICAgZmlsZUxpc3RTdG9yZTogW10sXHJcbiAgICAgIGZpbGVOYW1lczogW10sXHJcbiAgICB9O1xyXG4gICAgdXBsb2FkSW5nU2l6ZSA9IDA7XHJcbiAgICB1cGxvYWRTaXplID0gMDtcclxuICAgIHVwbG9hZEluZ0xpc3QgPSBbXTtcclxuICAgIHByZXZpZXdVcmwgPSB7fTtcclxuICAgIGNvbXBvbmVudERpZE1vdW50KCkge1xyXG4gICAgICBpZiAodGhpcy5wcm9wcy5maWxlTGlzdCkge1xyXG4gICAgICAgIHRoaXMuY29udmVydEZpbGVMaXN0KHRoaXMucHJvcHMuZmlsZUxpc3QpO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgICBjb252ZXJ0RmlsZUxpc3QobGlzdD86IEFycmF5PE9iamVjdD4pIHtcclxuICAgICAgY29uc3QgeyBmaWxlTGlzdCwgbGlzdFR5cGUgfSA9IHRoaXMucHJvcHM7XHJcbiAgICAgIGNvbnN0IG5ld0ZpbGVMaXN0ID0gW107XHJcbiAgICAgIGxldCBvbGRMaXN0ID0gbGlzdCA/IGxpc3QgOiBmaWxlTGlzdDtcclxuICAgICAgdGhpcy5zZXRTdGF0ZShcclxuICAgICAgICB7XHJcbiAgICAgICAgICBmaWxlTGlzdFN0b3JlOiBbLi4uZmlsZUxpc3RdLFxyXG4gICAgICAgIH0sXHJcbiAgICAgICAgYXN5bmMgKCkgPT4ge1xyXG4gICAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBvbGRMaXN0Lmxlbmd0aDsgaSsrKSB7XHJcbiAgICAgICAgICAgIGxldCBpdGVtOiBhbnkgPSBvbGRMaXN0W2ldO1xyXG4gICAgICAgICAgICBsZXQgdGVtcCA9IHtcclxuICAgICAgICAgICAgICAuLi5pdGVtLFxyXG4gICAgICAgICAgICAgIHN0YXR1czogaXRlbS5zdGF0dXMsXHJcbiAgICAgICAgICAgICAgbmFtZTogaXRlbS5uYW1lIHx8IGl0ZW0uZmlsZU5hbWUsXHJcbiAgICAgICAgICAgICAgdHlwZTogaXRlbS50eXBlLFxyXG4gICAgICAgICAgICAgIHNpemU6IGl0ZW0uc2l6ZSxcclxuICAgICAgICAgICAgICB1cmw6IGl0ZW0udXJsLFxyXG4gICAgICAgICAgICB9IGFzIGFueTtcclxuICAgICAgICAgICAgaWYgKGxpc3RUeXBlID09IFwicGljdHVyZS1jYXJkXCIgJiYgIWl0ZW0udXJsICYmIGl0ZW0uZmlsZUlkKSB7XHJcbiAgICAgICAgICAgICAgbGV0IHJlczogYW55ID0gYXdhaXQgcHJldmlld0ltYWdlKFxyXG4gICAgICAgICAgICAgICAgaXRlbS5maWxlSWQsXHJcbiAgICAgICAgICAgICAgICB0aGlzLnByb3BzLnJlcXVlc3RDb25maWdcclxuICAgICAgICAgICAgICApO1xyXG4gICAgICAgICAgICAgIGlmIChyZXMuY29kZSA9PSAyMDApIHtcclxuICAgICAgICAgICAgICAgIHRlbXAudXJsID0gcmVzLmRhdGE7XHJcbiAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIG5ld0ZpbGVMaXN0LnB1c2godGVtcCk7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgICB0aGlzLnNldFN0YXRlKHtcclxuICAgICAgICAgICAgZmlsZUxpc3Q6IFsuLi5uZXdGaWxlTGlzdF0sXHJcbiAgICAgICAgICB9KTtcclxuICAgICAgICB9XHJcbiAgICAgICk7XHJcbiAgICB9XHJcbiAgICBjb21wb25lbnREaWRVcGRhdGUocHJlUHJvcHMsIHByZVN0YXRlKSB7XHJcbiAgICAgIGlmICh0aGlzLnByb3BzLmZpbGVMaXN0KSB7XHJcbiAgICAgICAgaWYgKFxyXG4gICAgICAgICAgSlNPTi5zdHJpbmdpZnkodGhpcy5wcm9wcy5maWxlTGlzdCkgIT09XHJcbiAgICAgICAgICBKU09OLnN0cmluZ2lmeSh0aGlzLnN0YXRlLmZpbGVMaXN0U3RvcmUpXHJcbiAgICAgICAgKSB7XHJcbiAgICAgICAgICB0aGlzLmNvbnZlcnRGaWxlTGlzdCh0aGlzLnByb3BzLmZpbGVMaXN0KTtcclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgIH1cclxuICAgIGdldEZpbGVMaXN0KCkge1xyXG4gICAgICByZXR1cm4gdGhpcy5zdGF0ZS5maWxlTGlzdDtcclxuICAgIH1cclxuICAgIHNldEZpbGVMaXN0KGZpbGVMaXN0OiBBcnJheTxPYmplY3Q+KSB7XHJcbiAgICAgIHRoaXMuY29udmVydEZpbGVMaXN0KGZpbGVMaXN0KTtcclxuICAgIH1cclxuICAgIGFzeW5jIGJlZm9yZVVwbG9hZChmaWxlLCBvZmlsZUxpc3QpIHtcclxuICAgICAgbGV0IHtcclxuICAgICAgICBtYXhTaXplID0gMTAwLFxyXG4gICAgICAgIGFsbG93RmlsZVN1ZmZpeCxcclxuICAgICAgICBjaGVja1NhbWVGaWxlID0gdHJ1ZSxcclxuICAgICAgICBtYXhDb3VudCxcclxuICAgICAgICBzaG93VXBsb2FkTGlzdCxcclxuICAgICAgICBmaWxlTGlzdDogcHJvcHNMaXN0LFxyXG4gICAgICAgIG9uTGlzdENoYW5nZSxcclxuICAgICAgfSA9IHRoaXMucHJvcHM7XHJcbiAgICAgIGxldCB7IGZpbGVMaXN0LCBmaWxlTGlzdFN0b3JlIH0gPSB0aGlzLnN0YXRlO1xyXG4gICAgICBsZXQgc2l6ZTogbnVtYmVyO1xyXG4gICAgICBpZiAoYWxsb3dGaWxlU3VmZml4ICYmICF0aGlzLmNoZWNrRmlsZVR5cGUoZmlsZSkpIHtcclxuICAgICAgICBtZXNzYWdlLmVycm9yKFxyXG4gICAgICAgICAgYCR7ZmlsZS5uYW1lfeaWh+S7tuexu+Wei+S4jeWFgeiuuOS4iuS8oO+8jOivt+S4iuS8oOWQjue8gOS4uiR7YWxsb3dGaWxlU3VmZml4feeahOexu+Wei+aWh+S7tu+8gWBcclxuICAgICAgICApO1xyXG4gICAgICAgIHJldHVybiBmYWxzZTtcclxuICAgICAgfVxyXG4gICAgICBpZiAobWF4U2l6ZSAhPT0gZmFsc2UpIHtcclxuICAgICAgICBpZiAobWF4U2l6ZSA9PT0gdHJ1ZSkge1xyXG4gICAgICAgICAgbWF4U2l6ZSA9IDEwMDtcclxuICAgICAgICB9XHJcbiAgICAgICAgc2l6ZSA9IG1heFNpemUgKiAxMDI0ICogMTAyNDtcclxuICAgICAgICBpZiAoc2l6ZSA8IGZpbGUuc2l6ZSkge1xyXG4gICAgICAgICAgbWVzc2FnZS5lcnJvcihgJHtmaWxlLm5hbWV95paH5Lu25aSn5bCP6LaF6L+HJHttYXhTaXplfU3vvIzor7fph43mlrDkuIrkvKDvvIFgKTtcclxuICAgICAgICAgIHJldHVybiBmYWxzZTtcclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgICAgbGV0IGZpbGVOYW1lcyA9IFtdO1xyXG4gICAgICBpZiAoY2hlY2tTYW1lRmlsZSkge1xyXG4gICAgICAgIGNvbnN0IGNoZWNrTGlzdCA9IHRoaXMucHJvcHMuZmlsZUxpc3QgPyBmaWxlTGlzdFN0b3JlIDogZmlsZUxpc3Q7XHJcbiAgICAgICAgY2hlY2tMaXN0Lm1hcCgoaXRlbSkgPT4ge1xyXG4gICAgICAgICAgZmlsZU5hbWVzLnB1c2goaXRlbS5uYW1lIHx8IGl0ZW0uZmlsZU5hbWUpO1xyXG4gICAgICAgIH0pO1xyXG5cclxuICAgICAgICBpZiAoZmlsZU5hbWVzLmluZGV4T2YoZmlsZS5uYW1lKSA+IC0xICYmIHNob3dVcGxvYWRMaXN0ICE9PSBmYWxzZSkge1xyXG4gICAgICAgICAgbWVzc2FnZS5lcnJvcihg5paH5Lu2JHtmaWxlLm5hbWV95bey5Zyo5LiK5Lyg5YiX6KGo5Lit77yM6K+36YeN5paw6YCJ5oup5paH5Lu277yBYCk7XHJcbiAgICAgICAgICByZXR1cm4gZmFsc2U7XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcblxyXG4gICAgICBpZiAodGhpcy5wcm9wcy5iZWZvcmVVcGxvYWQpIHtcclxuICAgICAgICBjb25zdCByZXMgPSBhd2FpdCB0aGlzLnByb3BzLmJlZm9yZVVwbG9hZChmaWxlLCBvZmlsZUxpc3QpO1xyXG4gICAgICAgIGlmIChyZXMgPT09IGZhbHNlKSB7XHJcbiAgICAgICAgICByZXR1cm4gZmFsc2U7XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICAgIGNvbnN0IG5ld0xpc3QgPSBbLi4uZmlsZUxpc3RdO1xyXG4gICAgICBvZmlsZUxpc3QubWFwKGFzeW5jIChpdGVtKSA9PiB7XHJcbiAgICAgICAgaWYgKFxyXG4gICAgICAgICAgIShcclxuICAgICAgICAgICAgKGFsbG93RmlsZVN1ZmZpeCAmJiAhdGhpcy5jaGVja0ZpbGVUeXBlKGl0ZW0pKSB8fFxyXG4gICAgICAgICAgICBzaXplIDwgaXRlbS5zaXplIHx8XHJcbiAgICAgICAgICAgIChjaGVja1NhbWVGaWxlICYmIGZpbGVOYW1lcy5pbmRleE9mKGl0ZW0ubmFtZSkgPiAtMSlcclxuICAgICAgICAgIClcclxuICAgICAgICApIHtcclxuICAgICAgICAgIGNvbnN0IHRlbXAgPSB7XHJcbiAgICAgICAgICAgIGZpbGVOYW1lOiBpdGVtLm5hbWUsXHJcbiAgICAgICAgICAgIHBlcmNlbnQ6IDAsXHJcbiAgICAgICAgICAgIHN0YXR1czogXCJ1cGxvYWRpbmdcIixcclxuICAgICAgICAgICAgdWlkOiBpdGVtLnVpZCxcclxuICAgICAgICAgICAgbmFtZTogaXRlbS5uYW1lLFxyXG4gICAgICAgICAgICB0eXBlOiBpdGVtLnR5cGUsXHJcbiAgICAgICAgICAgIHNpemU6IGl0ZW0uc2l6ZSxcclxuICAgICAgICAgIH07XHJcbiAgICAgICAgICBuZXdMaXN0LnB1c2godGVtcCk7XHJcbiAgICAgICAgfVxyXG4gICAgICB9KTtcclxuXHJcbiAgICAgIGlmIChtYXhDb3VudCAmJiBuZXdMaXN0Lmxlbmd0aCA+IG1heENvdW50KSB7XHJcbiAgICAgICAgbGV0IGxlbmd0aCA9IG5ld0xpc3QubGVuZ3RoIC0gbWF4Q291bnQ7XHJcbiAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBsZW5ndGg7IGkrKykge1xyXG4gICAgICAgICAgbmV3TGlzdC5zcGxpY2UoMCwgMSk7XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICAgIHRoaXMuc2V0U3RhdGUoeyBmaWxlTGlzdDogbmV3TGlzdCB9LCgpPT57XHJcbiAgICAgICAgb25MaXN0Q2hhbmdlICYmIG9uTGlzdENoYW5nZShuZXdMaXN0KTtcclxuICAgICAgfSk7XHJcbiAgICAgIHRoaXMudXBsb2FkU2l6ZSA9IG9maWxlTGlzdC5sZW5ndGg7XHJcbiAgICB9XHJcbiAgICBjaGVja0ZpbGVUeXBlKGZpbGUpIHtcclxuICAgICAgY29uc3QgeyBhbGxvd0ZpbGVTdWZmaXggfSA9IHRoaXMucHJvcHM7XHJcbiAgICAgIGNvbnN0IG5hbWVzID0gZmlsZS5uYW1lLnNwbGl0KFwiLlwiKTtcclxuICAgICAgY29uc3Qgc3VmZml4ID0gbmFtZXNbbmFtZXMubGVuZ3RoIC0gMV07XHJcbiAgICAgIGlmIChhbGxvd0ZpbGVTdWZmaXguaW5kZXhPZihzdWZmaXgpID4gLTEpIHtcclxuICAgICAgICByZXR1cm4gdHJ1ZTtcclxuICAgICAgfVxyXG4gICAgICByZXR1cm4gZmFsc2U7XHJcbiAgICB9XHJcbiAgICBvblByb2Nlc3MoeyBwZXJjZW50LCBmaWxlIH06IGFueSkge1xyXG4gICAgICBjb25zdCB7IGZpbGVMaXN0IH0gPSB0aGlzLnN0YXRlO1xyXG4gICAgICBjb25zdCB7IG9uTGlzdENoYW5nZSB9ID0gdGhpcy5wcm9wcztcclxuICAgICAgY29uc3QgbmV3TGlzdDogYW55ID0gW107XHJcbiAgICAgIGZpbGVMaXN0Lm1hcCgoaXRlbTogYW55KSA9PiB7XHJcbiAgICAgICAgY29uc3QgbmV3RmlsZSA9IHsgLi4uaXRlbSB9O1xyXG4gICAgICAgIGlmIChmaWxlLnVpZCA9PSBpdGVtLnVpZCkge1xyXG4gICAgICAgICAgbmV3RmlsZS5wZXJjZW50ID0gcGVyY2VudDtcclxuICAgICAgICB9XHJcbiAgICAgICAgbmV3TGlzdC5wdXNoKG5ld0ZpbGUpO1xyXG4gICAgICB9KTtcclxuICAgICAgdGhpcy5zZXRTdGF0ZSh7XHJcbiAgICAgICAgZmlsZUxpc3Q6IG5ld0xpc3QsXHJcbiAgICAgIH0sKCk9PntcclxuICAgICAgICBvbkxpc3RDaGFuZ2UgJiYgb25MaXN0Q2hhbmdlKGZpbGVMaXN0KTtcclxuICAgICAgfSk7XHJcbiAgIFxyXG4gICAgfVxyXG4gICAgYXN5bmMgb25Db21wbGV0ZShmaWxlcykge1xyXG4gICAgICB0aGlzLnVwbG9hZEluZ1NpemUgPSAwO1xyXG4gICAgICB0aGlzLnVwbG9hZFNpemUgPSAwO1xyXG4gICAgICB0aGlzLnVwbG9hZEluZ0xpc3QgPSBbXTtcclxuICAgICAgY29uc3QgeyBmaWxlTGlzdCB9ID0gdGhpcy5zdGF0ZTtcclxuICAgICAgY29uc3QgeyBuZXdWZXJzaW9uID0gdHJ1ZSwgcmVxdWVzdENvbmZpZyA9IHt9IH0gPSB0aGlzLnByb3BzO1xyXG4gICAgICBjb25zdCBuZXdMaXN0OiBhbnkgPSBbXTtcclxuICAgICAgZmlsZUxpc3QubWFwKGFzeW5jIChpdGVtOiBhbnksIGluZGV4KSA9PiB7XHJcbiAgICAgICAgY29uc3QgbmV3RmlsZSA9IHsgLi4uaXRlbSB9O1xyXG4gICAgICAgIGZpbGVzLm1hcChhc3luYyAoZmlsZSkgPT4ge1xyXG4gICAgICAgICAgaWYgKGZpbGUuZmlsZS51aWQgPT0gaXRlbS51aWQpIHtcclxuICAgICAgICAgICAgbmV3RmlsZS5zdGF0dXMgPSBmaWxlLnN0YXR1cyA9PSBcInN1Y2Nlc3NcIiA/IFwiZG9uZVwiIDogZmlsZS5zdGF0dXM7XHJcbiAgICAgICAgICAgIG5ld0ZpbGUuZmlsZUlkID0gZmlsZS5maWxlSWQ7XHJcbiAgICAgICAgICAgIG5ld0ZpbGUudXJsID0gZmlsZS51cmw7XHJcbiAgICAgICAgICAgIGlmICghbmV3VmVyc2lvbikge1xyXG4gICAgICAgICAgICAgIGxldCB1cmwgPSBgL2pxdWljay1yZXNvdXJjZS9vc3MvZW5kcG9pbnQvZG93bmxvYWQtZmlsZXM/YXR0YWNoSWQ9JHtcclxuICAgICAgICAgICAgICAgIGZpbGUuZmlsZUlkXHJcbiAgICAgICAgICAgICAgfSZfdHBrPSR7d2luZG93LmxvY2FsU3RvcmFnZS5nZXRJdGVtKFwidG9rZW5cIil9YDtcclxuICAgICAgICAgICAgICBuZXdGaWxlLnVybCA9IHJlcXVlc3RDb25maWcucHJlZml4XHJcbiAgICAgICAgICAgICAgICA/IHJlcXVlc3RDb25maWcucHJlZml4ICsgdXJsXHJcbiAgICAgICAgICAgICAgICA6IFwiL2FwaVwiICsgdXJsO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfSk7XHJcbiAgICAgICAgbmV3TGlzdC5wdXNoKG5ld0ZpbGUpO1xyXG4gICAgICB9KTtcclxuICAgICAgdGhpcy5zZXRTdGF0ZSh7XHJcbiAgICAgICAgZmlsZUxpc3Q6IFsuLi5uZXdMaXN0XSxcclxuICAgICAgfSwoKT0+e1xyXG4gICAgICAgIGNvbnN0IHsgb25MaXN0Q2hhbmdlIH0gPSB0aGlzLnByb3BzO1xyXG4gICAgICAgIG9uTGlzdENoYW5nZSAmJiBvbkxpc3RDaGFuZ2UobmV3TGlzdCk7XHJcbiAgICAgIH0pO1xyXG4gICAgfVxyXG4gICAgY3VzdG9tUmVxdWVzdCA9IGFzeW5jIChvcHRpb25zKSA9PiB7XHJcbiAgICAgIGNvbnN0IGZpbGUgPSBvcHRpb25zLmZpbGU7XHJcbiAgICAgIGNvbnN0IHtcclxuICAgICAgICBvbkNvbXBsZXRlLFxyXG4gICAgICAgIG9uUHJvY2VzcyxcclxuICAgICAgICBzbGljZVNpemUsXHJcbiAgICAgICAgbmV3VmVyc2lvbiA9IHRydWUsXHJcbiAgICAgIH0gPSB0aGlzLnByb3BzO1xyXG4gICAgICBjb25zdCBvblByb2dyZXNzID0gKHRvdGFsUHJvZ3Jlc3M6IGFueSkgPT4ge1xyXG4gICAgICAgIG9wdGlvbnMub25Qcm9ncmVzcyh7IHBlcmNlbnQ6IHRvdGFsUHJvZ3Jlc3MgfSwgZmlsZSk7XHJcbiAgICAgICAgdGhpcy5vblByb2Nlc3MoeyBwZXJjZW50OiB0b3RhbFByb2dyZXNzLCBmaWxlOiBmaWxlIH0pO1xyXG4gICAgICAgIG9uUHJvY2VzcyAmJiBvblByb2Nlc3MoeyBwZXJjZW50OiB0b3RhbFByb2dyZXNzLCBmaWxlOiBmaWxlIH0pO1xyXG4gICAgICB9O1xyXG4gICAgICB0cnkge1xyXG4gICAgICAgIGNvbnN0IHJlczogYW55ID0gYXdhaXQgdXBsb2FkKFxyXG4gICAgICAgICAge1xyXG4gICAgICAgICAgICBmaWxlOiBmaWxlLFxyXG4gICAgICAgICAgICBvblByb2dyZXNzOiBvblByb2dyZXNzLFxyXG4gICAgICAgICAgICBwYXJ0U2l6ZTogc2xpY2VTaXplLFxyXG4gICAgICAgICAgfSxcclxuICAgICAgICAgIHRoaXMucHJvcHMucmVxdWVzdENvbmZpZ1xyXG4gICAgICAgICk7XHJcbiAgICAgICAgdGhpcy51cGxvYWRJbmdTaXplID0gdGhpcy51cGxvYWRJbmdTaXplICsgMTtcclxuICAgICAgICBsZXQgZmlsZUlkID0gbnVsbDtcclxuICAgICAgICBsZXQgSW1nUmVzID0gbnVsbDtcclxuICAgICAgICBpZiAocmVzLmNvZGUgPT0gMjAwKSB7XHJcbiAgICAgICAgICBmaWxlSWQgPSByZXMuZGF0YS5hdHRhY2hJZDtcclxuICAgICAgICAgIG9wdGlvbnMub25TdWNjZXNzKCk7XHJcbiAgICAgICAgICBpZiAodGhpcy5wcm9wcy5saXN0VHlwZSA9PSBcInBpY3R1cmUtY2FyZFwiICYmIG5ld1ZlcnNpb24pIHtcclxuICAgICAgICAgICAgSW1nUmVzID0gYXdhaXQgcHJldmlld0ltYWdlKGZpbGVJZCwgdGhpcy5wcm9wcy5yZXF1ZXN0Q29uZmlnKTtcclxuICAgICAgICAgIH1cclxuICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgb3B0aW9ucy5vbkVycm9yKCk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHRoaXMudXBsb2FkSW5nTGlzdC5wdXNoKHtcclxuICAgICAgICAgIGZpbGU6IG9wdGlvbnMuZmlsZSxcclxuICAgICAgICAgIGZpbGVJZDogZmlsZUlkLFxyXG4gICAgICAgICAgc3RhdHVzOiByZXMuY29kZSA9PSAyMDAgPyBcInN1Y2Nlc3NcIiA6IFwiZXJyb3JcIixcclxuICAgICAgICAgIHVybDogSW1nUmVzID8gSW1nUmVzLmRhdGEgOiBudWxsLFxyXG4gICAgICAgIH0pO1xyXG4gICAgICAgIGlmICh0aGlzLnVwbG9hZFNpemUgPT0gdGhpcy51cGxvYWRJbmdTaXplKSB7XHJcbiAgICAgICAgICB0aGlzLm9uQ29tcGxldGUodGhpcy51cGxvYWRJbmdMaXN0KTtcclxuICAgICAgICB9XHJcbiAgICAgICAgb25Db21wbGV0ZSAmJlxyXG4gICAgICAgICAgb25Db21wbGV0ZSh7XHJcbiAgICAgICAgICAgIGZpbGU6IG9wdGlvbnMuZmlsZSxcclxuICAgICAgICAgICAgZmlsZUlkOiBmaWxlSWQsXHJcbiAgICAgICAgICAgIHN0YXR1czogcmVzLmNvZGUgPT0gMjAwID8gXCJzdWNjZXNzXCIgOiBcImVycm9yXCIsXHJcbiAgICAgICAgICB9KTtcclxuICAgICAgfSBjYXRjaCAoZSkge1xyXG4gICAgICAgIGlmICh0aGlzLnVwbG9hZFNpemUgPT0gdGhpcy51cGxvYWRJbmdTaXplKSB7XHJcbiAgICAgICAgICB0aGlzLm9uQ29tcGxldGUodGhpcy51cGxvYWRJbmdMaXN0KTtcclxuICAgICAgICAgIG9wdGlvbnMub25FcnJvcigpO1xyXG4gICAgICAgIH1cclxuICAgICAgICBvbkNvbXBsZXRlICYmXHJcbiAgICAgICAgICBvbkNvbXBsZXRlKHsgZmlsZTogb3B0aW9ucy5maWxlLCBmaWxlSWQ6IFwiXCIsIHN0YXR1czogXCJlcnJvclwiIH0pO1xyXG4gICAgICB9XHJcbiAgICB9O1xyXG4gICAgb25EZWxldGUoZmlsZSkge1xyXG4gICAgICBjb25zdCB7IGZpbGVMaXN0IH0gPSB0aGlzLnN0YXRlO1xyXG4gICAgICBjb25zdCB7IG9uTGlzdENoYW5nZSB9ID0gdGhpcy5wcm9wcztcclxuICAgICAgY29uc3QgbmV3TGlzdDogYW55ID0gW107XHJcbiAgICAgIGZpbGVMaXN0Lm1hcCgoaXRlbTogYW55KSA9PiB7XHJcbiAgICAgICAgLy/pgJrov4fmlofku7blkI3liKTmlq3vvIzkuIrkvKDmmK/mlofku7blkI3mmK/llK/kuIDnmoRcclxuICAgICAgICBpZiAoXHJcbiAgICAgICAgICBpdGVtLm5hbWUgIT09IGZpbGUubmFtZSB8fFxyXG4gICAgICAgICAgaXRlbS5maWxlSWQgIT09IGZpbGUuZmlsZUlkIHx8XHJcbiAgICAgICAgICBpdGVtLnVpZCAhPT0gZmlsZS51aWRcclxuICAgICAgICApIHtcclxuICAgICAgICAgIG5ld0xpc3QucHVzaChpdGVtKTtcclxuICAgICAgICB9XHJcbiAgICAgIH0pO1xyXG4gICAgICB0aGlzLnNldFN0YXRlKHtcclxuICAgICAgICBmaWxlTGlzdDogbmV3TGlzdCxcclxuICAgICAgfSwoKT0+e1xyXG4gICAgICAgIG9uTGlzdENoYW5nZSAmJiBvbkxpc3RDaGFuZ2UobmV3TGlzdCk7XHJcbiAgICAgIH0pO1xyXG4gICAgIFxyXG4gICAgfVxyXG4gICAgcmVuZGVyKCk6IFJlYWN0LlJlYWN0Tm9kZSB7XHJcbiAgICAgIGxldCB7XHJcbiAgICAgICAgZmlsZUxpc3QsXHJcbiAgICAgICAgZmlsZUNhcmQsXHJcbiAgICAgICAgc2hvd1VwbG9hZExpc3QgPSB7XHJcbiAgICAgICAgICBzaG93RG93bmxvYWRJY29uOiB0cnVlLFxyXG4gICAgICAgICAgc2hvd1ByZXZpZXdJY29uOiBmYWxzZSxcclxuICAgICAgICAgIHNob3dSZW1vdmVJY29uOiB0cnVlLFxyXG4gICAgICAgICAgZG93bmxvYWRJY29uOiBudWxsLFxyXG4gICAgICAgICAgcmVtb3ZlSWNvbjogbnVsbCxcclxuICAgICAgICAgIHByZXZpZXdJY29uOiBudWxsLFxyXG4gICAgICAgIH0gYXMgYW55LFxyXG4gICAgICAgIHJlcXVlc3RDb25maWcgPSB7fSxcclxuICAgICAgfSA9IHRoaXMucHJvcHM7XHJcbiAgICAgIGNvbnN0IG5ld3Byb3BzID0gb21pdCh0aGlzLnByb3BzLCBbXHJcbiAgICAgICAgXCJzbGljZVNpemVcIixcclxuICAgICAgICBcIm1heFNpemVcIixcclxuICAgICAgICBcIm9uQ29tcGxldGVcIixcclxuICAgICAgICBcIm9uUHJvY2Vzc1wiLFxyXG4gICAgICAgIFwiYWxsb3dGaWxlU3VmZml4XCIsXHJcbiAgICAgICAgXCJ1c2VEZWZhdWx0TGlzdFwiLFxyXG4gICAgICAgIFwiZmlsZUNhcmRcIixcclxuICAgICAgICBcIm9uTGlzdENoYW5nZVwiLFxyXG4gICAgICAgIFwibmV3VmVyc2lvblwiLFxyXG4gICAgICAgIFwicmVxdWVzdENvbmZpZ1wiLFxyXG4gICAgICBdKTtcclxuICAgICAgbGV0IGRlZmF1bHRQcm9wcyA9IHtcclxuICAgICAgICBjdXN0b21SZXF1ZXN0OiB0aGlzLmN1c3RvbVJlcXVlc3QuYmluZCh0aGlzKSxcclxuICAgICAgICBtdWx0aXBsZTogdHJ1ZSxcclxuICAgICAgfSBhcyBJVXBsb2FkUHJvcHM7XHJcbiAgICAgIGlmIChmaWxlQ2FyZCkge1xyXG4gICAgICAgIGRlZmF1bHRQcm9wcyA9IHtcclxuICAgICAgICAgIC4uLmRlZmF1bHRQcm9wcyxcclxuICAgICAgICAgIGl0ZW1SZW5kZXI6IChvcmlnaW5Ob2RlLCBmaWxlOiBhbnksIGN1cnJGaWxlTGlzdCkgPT4ge1xyXG4gICAgICAgICAgICBjb25zdCBuYW1lID0gZmlsZS5uYW1lIHx8IGZpbGUuZmlsZU5hbWU7XHJcbiAgICAgICAgICAgIGNvbnN0IG5hbWVzID0gbmFtZT8uc3BsaXQoXCIuXCIpO1xyXG4gICAgICAgICAgICBjb25zdCBzdWZmaXggPSBuYW1lcyA/IG5hbWVzW25hbWVzLmxlbmd0aCAtIDFdIDogXCJcIjtcclxuICAgICAgICAgICAgcmV0dXJuIChcclxuICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT17Z2V0TGVzcyhzdHlsZXMsIFwiZmlsZS1pdGVtXCIpfT5cclxuICAgICAgICAgICAgICAgIDxkaXZcclxuICAgICAgICAgICAgICAgICAgY2xhc3NOYW1lPXtjbHMoZ2V0TGVzcyhzdHlsZXMsIFwiY29udGVudFwiKSwge1xyXG4gICAgICAgICAgICAgICAgICAgIFtnZXRMZXNzKHN0eWxlcywgXCJjb250ZW50X2Vycm9yXCIpXTogZmlsZS5zdGF0dXMgPT0gXCJlcnJvclwiLFxyXG4gICAgICAgICAgICAgICAgICB9KX1cclxuICAgICAgICAgICAgICAgID5cclxuICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9e2dldExlc3Moc3R5bGVzLCBcIm1hcmstcGljdHVyZVwiKX0+XHJcbiAgICAgICAgICAgICAgICAgICAgPEZpbGVJY29uIHN1ZmZpeD17c3VmZml4fSBmaWxlSWQ9e2ZpbGUuZmlsZUlkfSAvPlxyXG4gICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9e2dldExlc3Moc3R5bGVzLCBcIm5hbWVcIil9PlxyXG4gICAgICAgICAgICAgICAgICAgIHtmaWxlLm5hbWUgfHwgZmlsZS5maWxlTmFtZX1cclxuICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPXtnZXRMZXNzKHN0eWxlcywgXCJpY29uXCIpfT5cclxuICAgICAgICAgICAgICAgICAgICB7c2hvd1VwbG9hZExpc3Quc2hvd1ByZXZpZXdJY29uICYmXHJcbiAgICAgICAgICAgICAgICAgICAgICBmaWxlLnN0YXR1cyA9PSBcImRvbmVcIiAmJiAoXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXZcclxuICAgICAgICAgICAgICAgICAgICAgICAgICBvbkNsaWNrPXsoKSA9PiB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAodGhpcy5wcm9wcy5vblByZXZpZXcpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5wcm9wcy5vblByZXZpZXcoZmlsZSk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwcmV2aWV3RG9jdW1lbnQoZmlsZS5maWxlSWQsIHJlcXVlc3RDb25maWcpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIH19XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgc3R5bGU9e3sgY3Vyc29yOiBcInBvaW50ZXJcIiB9fVxyXG4gICAgICAgICAgICAgICAgICAgICAgICA+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAge3Nob3dVcGxvYWRMaXN0LmRvd25sb2FkSWNvbiA/IChcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNob3dVcGxvYWRMaXN0LmRvd25sb2FkSWNvblxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICkgOiAoXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8RXllT3V0bGluZWQgLz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICApfVxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICl9XHJcbiAgICAgICAgICAgICAgICAgICAge3Nob3dVcGxvYWRMaXN0LnNob3dEb3dubG9hZEljb24gJiZcclxuICAgICAgICAgICAgICAgICAgICAgIGZpbGUuc3RhdHVzID09IFwiZG9uZVwiICYmIChcclxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIG9uQ2xpY2s9eygpID0+IHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICh0aGlzLnByb3BzLm9uRG93bmxvYWQpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5wcm9wcy5vbkRvd25sb2FkKGZpbGUpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZG93bmxvYWQoZmlsZS5maWxlSWQsIHRydWUsIHJlcXVlc3RDb25maWcpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIH19XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgc3R5bGU9e3sgY3Vyc29yOiBcInBvaW50ZXJcIiB9fVxyXG4gICAgICAgICAgICAgICAgICAgICAgICA+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAge3Nob3dVcGxvYWRMaXN0LmRvd25sb2FkSWNvbiA/IChcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNob3dVcGxvYWRMaXN0LmRvd25sb2FkSWNvblxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICkgOiAoXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8RG93bmxvYWRPdXRsaW5lZCAvPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICl9XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgKX1cclxuICAgICAgICAgICAgICAgICAgICB7c2hvd1VwbG9hZExpc3Quc2hvd1JlbW92ZUljb24gJiYgKFxyXG4gICAgICAgICAgICAgICAgICAgICAgPGRpdlxyXG4gICAgICAgICAgICAgICAgICAgICAgICBvbkNsaWNrPXsoKSA9PiB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHRoaXMucHJvcHMub25SZW1vdmUpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMucHJvcHMub25SZW1vdmUoZmlsZSk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMub25EZWxldGUoZmlsZSk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgICAgICB9fVxyXG4gICAgICAgICAgICAgICAgICAgICAgICBzdHlsZT17eyBjdXJzb3I6IFwicG9pbnRlclwiIH19XHJcbiAgICAgICAgICAgICAgICAgICAgICA+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHtzaG93VXBsb2FkTGlzdC5kb3dubG9hZEljb24gPyAoXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgc2hvd1VwbG9hZExpc3QuZG93bmxvYWRJY29uXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICkgOiAoXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgPERlbGV0ZU91dGxpbmVkIC8+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICl9XHJcbiAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICApfVxyXG4gICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAge2ZpbGUuc3RhdHVzID09IFwidXBsb2FkaW5nXCIgJiYgKFxyXG4gICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT17Z2V0TGVzcyhzdHlsZXMsIFwicHJvY2Vzc1wiKX0+XHJcbiAgICAgICAgICAgICAgICAgICAgPGRpdlxyXG4gICAgICAgICAgICAgICAgICAgICAgY2xhc3NOYW1lPXtnZXRMZXNzKHN0eWxlcywgXCJwZXJjZW50XCIpfVxyXG4gICAgICAgICAgICAgICAgICAgICAgc3R5bGU9e3sgd2lkdGg6IGZpbGUucGVyY2VudCArIFwiJVwiIH19XHJcbiAgICAgICAgICAgICAgICAgICAgPjwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICl9XHJcbiAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICk7XHJcbiAgICAgICAgICB9LFxyXG4gICAgICAgIH07XHJcbiAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgZGVmYXVsdFByb3BzID0ge1xyXG4gICAgICAgICAgLi4uZGVmYXVsdFByb3BzLFxyXG4gICAgICAgICAgb25Eb3dubG9hZDogKGZpbGU6IGFueSkgPT4ge1xyXG4gICAgICAgICAgICBpZiAodGhpcy5wcm9wcy5vbkRvd25sb2FkKSB7XHJcbiAgICAgICAgICAgICAgdGhpcy5wcm9wcy5vbkRvd25sb2FkKGZpbGUpO1xyXG4gICAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICAgIGRvd25sb2FkKGZpbGUuZmlsZUlkLCB0cnVlLCByZXF1ZXN0Q29uZmlnKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgfSxcclxuICAgICAgICAgIG9uUmVtb3ZlOiAoZmlsZSkgPT4ge1xyXG4gICAgICAgICAgICBpZiAodGhpcy5wcm9wcy5vblJlbW92ZSkge1xyXG4gICAgICAgICAgICAgIHRoaXMucHJvcHMub25SZW1vdmUoZmlsZSk7XHJcbiAgICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgICAgdGhpcy5vbkRlbGV0ZShmaWxlKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgfSxcclxuICAgICAgICAgIG9uUHJldmlldzogKGZpbGU6IGFueSkgPT4ge1xyXG4gICAgICAgICAgICBpZiAodGhpcy5wcm9wcy5vblByZXZpZXcpIHtcclxuICAgICAgICAgICAgICB0aGlzLnByb3BzLm9uUHJldmlldyhmaWxlKTtcclxuICAgICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgICBpZiAoZmlsZT8uZmlsZUlkKSB7XHJcbiAgICAgICAgICAgICAgICBwcmV2aWV3RG9jdW1lbnQoZmlsZS5maWxlSWQsIHJlcXVlc3RDb25maWcpO1xyXG4gICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgfSxcclxuICAgICAgICAgIHNob3dVcGxvYWRMaXN0OiB7IC4uLnNob3dVcGxvYWRMaXN0IH0sXHJcbiAgICAgICAgfTtcclxuICAgICAgfVxyXG4gICAgICByZXR1cm4gKFxyXG4gICAgICAgIDw+XHJcbiAgICAgICAgICA8Q29tcG9uZW50XHJcbiAgICAgICAgICAgIHsuLi5kZWZhdWx0UHJvcHN9XHJcbiAgICAgICAgICAgIHsuLi5uZXdwcm9wc31cclxuICAgICAgICAgICAgYmVmb3JlVXBsb2FkPXt0aGlzLmJlZm9yZVVwbG9hZC5iaW5kKHRoaXMpfVxyXG4gICAgICAgICAgICBmaWxlTGlzdD17dGhpcy5zdGF0ZS5maWxlTGlzdH1cclxuICAgICAgICAgIC8+XHJcbiAgICAgICAgPC8+XHJcbiAgICAgICk7XHJcbiAgICB9XHJcbiAgfTtcclxufTtcclxuXHJcbmNvbnN0IE5zY1VwbG9hZDogYW55ID0gd2l0aEN1c3RvbVVwbG9hZChVcGxvYWQpO1xyXG4vLyAvLyDkvb/nlKggd2l0aEN1c3RvbVVwbG9hZCDlsIHoo4UgVXBsb2FkLkRyYWdnZXIg57uE5Lu2XHJcbmNvbnN0IE5zY1VwbG9hZERyYWdnZXIgPSB3aXRoQ3VzdG9tVXBsb2FkKFVwbG9hZC5EcmFnZ2VyKTtcclxuTnNjVXBsb2FkLkRyYWdnZXIgPSBOc2NVcGxvYWREcmFnZ2VyO1xyXG5leHBvcnQgZGVmYXVsdCBOc2NVcGxvYWQ7XHJcbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7QUFBQSxPQUFPLEtBQUtBLEtBQUssTUFBTSxPQUFPO0FBRTlCLE9BQU9DLElBQUksTUFBTSxVQUFVO0FBQzNCLE9BQU9DLE9BQU8sTUFBTSxZQUFZO0FBQ2hDLE9BQU9DLElBQUksTUFBTSxTQUFTO0FBQzFCLFNBQVNDLE9BQU8sUUFBUSxhQUFhO0FBQ3JDLE9BQU9DLE1BQU0sTUFBTSxjQUFjO0FBQ2pDLE9BQU9DLEdBQUcsTUFBTSxZQUFZO0FBQzVCLE9BQU9DLFFBQVEsTUFBTSxvQkFBb0I7QUFD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
447
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJSZWFjdCIsImZpbGUiLCJtZXNzYWdlIiwib21pdCIsImdldExlc3MiLCJzdHlsZXMiLCJjbHMiLCJGaWxlSWNvbiIsIkRlbGV0ZU91dGxpbmVkIiwiRG93bmxvYWRPdXRsaW5lZCIsIkV5ZU91dGxpbmVkIiwidXBsb2FkIiwiZG93bmxvYWQiLCJwcmV2aWV3RG9jdW1lbnQiLCJwcmV2aWV3SW1hZ2UiLCJ3aXRoQ3VzdG9tVXBsb2FkIiwiQ29tcG9uZW50IiwiUHVyZUNvbXBvbmVudCIsImNvbnN0cnVjdG9yIiwiYXJndW1lbnRzIiwiX2RlZmluZVByb3BlcnR5IiwiZmlsZUxpc3QiLCJ2aWV3SWQiLCJmaWxlTGlzdFN0b3JlIiwiZmlsZU5hbWVzIiwib3B0aW9ucyIsIm9uQ29tcGxldGUiLCJvblByb2Nlc3MiLCJzbGljZVNpemUiLCJuZXdWZXJzaW9uIiwicHJvcHMiLCJvblByb2dyZXNzIiwidG90YWxQcm9ncmVzcyIsInBlcmNlbnQiLCJyZXMiLCJwYXJ0U2l6ZSIsInJlcXVlc3RDb25maWciLCJ1cGxvYWRJbmdTaXplIiwiZmlsZUlkIiwiSW1nUmVzIiwiY29kZSIsImRhdGEiLCJhdHRhY2hJZCIsIm9uU3VjY2VzcyIsImxpc3RUeXBlIiwib25FcnJvciIsInVwbG9hZEluZ0xpc3QiLCJwdXNoIiwic3RhdHVzIiwidXJsIiwiZSIsImNvbXBvbmVudERpZE1vdW50IiwiY29udmVydEZpbGVMaXN0IiwibGlzdCIsIm5ld0ZpbGVMaXN0Iiwib2xkTGlzdCIsInNldFN0YXRlIiwiaSIsImxlbmd0aCIsIml0ZW0iLCJ0ZW1wIiwiX29iamVjdFNwcmVhZCIsIm5hbWUiLCJmaWxlTmFtZSIsInR5cGUiLCJzaXplIiwiY29tcG9uZW50RGlkVXBkYXRlIiwicHJlUHJvcHMiLCJwcmVTdGF0ZSIsIkpTT04iLCJzdHJpbmdpZnkiLCJzdGF0ZSIsImdldEZpbGVMaXN0Iiwic2V0RmlsZUxpc3QiLCJiZWZvcmVVcGxvYWQiLCJvZmlsZUxpc3QiLCJtYXhTaXplIiwiYWxsb3dGaWxlU3VmZml4IiwiY2hlY2tTYW1lRmlsZSIsIm1heENvdW50Iiwic2hvd1VwbG9hZExpc3QiLCJwcm9wc0xpc3QiLCJvbkxpc3RDaGFuZ2UiLCJjaGVja0ZpbGVUeXBlIiwiZXJyb3IiLCJjb25jYXQiLCJjaGVja0xpc3QiLCJtYXAiLCJpbmRleE9mIiwibmV3TGlzdCIsInVpZCIsInNwbGljZSIsInVwbG9hZFNpemUiLCJuYW1lcyIsInNwbGl0Iiwic3VmZml4IiwiX3JlZiIsIm5ld0ZpbGUiLCJmaWxlcyIsImluZGV4Iiwid2luZG93IiwibG9jYWxTdG9yYWdlIiwiZ2V0SXRlbSIsInByZWZpeCIsIm9uRGVsZXRlIiwicmVuZGVyIiwiZmlsZUNhcmQiLCJzaG93RG93bmxvYWRJY29uIiwic2hvd1ByZXZpZXdJY29uIiwic2hvd1JlbW92ZUljb24iLCJkb3dubG9hZEljb24iLCJyZW1vdmVJY29uIiwicHJldmlld0ljb24iLCJuZXdwcm9wcyIsImRlZmF1bHRQcm9wcyIsImN1c3RvbVJlcXVlc3QiLCJiaW5kIiwibXVsdGlwbGUiLCJpdGVtUmVuZGVyIiwib3JpZ2luTm9kZSIsImN1cnJGaWxlTGlzdCIsImNyZWF0ZUVsZW1lbnQiLCJjbGFzc05hbWUiLCJvbkNsaWNrIiwib25QcmV2aWV3Iiwic3R5bGUiLCJjdXJzb3IiLCJvbkRvd25sb2FkIiwib25SZW1vdmUiLCJ3aWR0aCIsIkZyYWdtZW50IiwiX2V4dGVuZHMiLCJOc2NVcGxvYWQiLCJfVXBsb2FkIiwiTnNjVXBsb2FkRHJhZ2dlciIsIkRyYWdnZXIiXSwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvY29tcG9uZW50cy9iYXNlL3VwbG9hZC9pbmRleC50c3giXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0ICogYXMgUmVhY3QgZnJvbSBcInJlYWN0XCI7XHJcbmltcG9ydCB7IFVwbG9hZCwgVXBsb2FkUHJvcHMgfSBmcm9tIFwiYW50ZFwiO1xyXG5pbXBvcnQgZmlsZSBmcm9tIFwibnNjLWZpbGVcIjtcclxuaW1wb3J0IG1lc3NhZ2UgZnJvbSBcIi4uL21lc3NhZ2VcIjtcclxuaW1wb3J0IG9taXQgZnJvbSBcIm9taXQuanNcIjtcclxuaW1wb3J0IHsgZ2V0TGVzcyB9IGZyb20gXCIuLi8uLi91dGlsc1wiO1xyXG5pbXBvcnQgc3R5bGVzIGZyb20gXCIuL2luZGV4Lmxlc3NcIjtcclxuaW1wb3J0IGNscyBmcm9tIFwiY2xhc3NuYW1lc1wiO1xyXG5pbXBvcnQgRmlsZUljb24gZnJvbSBcIi4uL2NvbW1vbi9GaWxlSWNvblwiO1xyXG5pbXBvcnQge1xyXG4gIERlbGV0ZU91dGxpbmVkLFxyXG4gIERvd25sb2FkT3V0bGluZWQsXHJcbiAgRXllT3V0bGluZWQsXHJcbn0gZnJvbSBcIkBhbnQtZGVzaWduL2ljb25zXCI7XHJcbmNvbnN0IHsgdXBsb2FkLCBkb3dubG9hZCwgcHJldmlld0RvY3VtZW50LCBwcmV2aWV3SW1hZ2UgfSA9IGZpbGU7XHJcblxyXG5pbnRlcmZhY2UgSVVwbG9hZFByb3BzIGV4dGVuZHMgVXBsb2FkUHJvcHMge1xyXG4gIHNsaWNlU2l6ZT86IG51bWJlcjtcclxuICBtYXhTaXplPzogbnVtYmVyIHwgYm9vbGVhbjtcclxuICBvblByb2Nlc3M/OiAocHJvY2VzcykgPT4gdm9pZDtcclxuICBvbkNvbXBsZXRlPzogKHsgZmlsZSwgZmlsZUlkLCBzdGF0dXMgfSkgPT4gdm9pZDtcclxuICBhbGxvd0ZpbGVTdWZmaXg/OiBBcnJheTxTdHJpbmc+OyAvL+WFgeiuuOS4iuS8oOaJqeWxleWQjSzkuI3luKYuXHJcbiAgdXNlRGVmYXVsdExpc3Q/OiBib29sZWFuOyAvL+aYr+WQpuS9v+eUqOm7mOiupOeahGZpbGVMaXN0XHJcbiAgZmlsZUNhcmQ/OiBib29sZWFuO1xyXG4gIG9uTGlzdENoYW5nZT86IGFueTtcclxuICBjaGVja1NhbWVGaWxlPzogYm9vbGVhbjtcclxuICByZXF1ZXN0Q29uZmlnPzogYW55O1xyXG4gIG5ld1ZlcnNpb24/OiBib29sZWFuO1xyXG4gIFtwcm9wc05hbWU6IHN0cmluZ106IGFueTtcclxufVxyXG5jb25zdCB3aXRoQ3VzdG9tVXBsb2FkID0gKENvbXBvbmVudCkgPT4ge1xyXG4gIC8vIOi/lOWbnuS4gOS4quexu+e7hOS7tlxyXG4gIHJldHVybiBjbGFzcyBleHRlbmRzIFJlYWN0LlB1cmVDb21wb25lbnQ8SVVwbG9hZFByb3BzLCBhbnk+IHtcclxuICAgIHN0YXRlID0ge1xyXG4gICAgICBmaWxlTGlzdDogW10sXHJcbiAgICAgIHZpZXdJZDogXCJcIixcclxuICAgICAgZmlsZUxpc3RTdG9yZTogW10sXHJcbiAgICAgIGZpbGVOYW1lczogW10sXHJcbiAgICB9O1xyXG4gICAgdXBsb2FkSW5nU2l6ZSA9IDA7XHJcbiAgICB1cGxvYWRTaXplID0gMDtcclxuICAgIHVwbG9hZEluZ0xpc3QgPSBbXTtcclxuICAgIHByZXZpZXdVcmwgPSB7fTtcclxuICAgIGNvbXBvbmVudERpZE1vdW50KCkge1xyXG4gICAgICBpZiAodGhpcy5wcm9wcy5maWxlTGlzdCkge1xyXG4gICAgICAgIHRoaXMuY29udmVydEZpbGVMaXN0KHRoaXMucHJvcHMuZmlsZUxpc3QpO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgICBjb252ZXJ0RmlsZUxpc3QobGlzdD86IEFycmF5PE9iamVjdD4pIHtcclxuICAgICAgY29uc3QgeyBmaWxlTGlzdCwgbGlzdFR5cGUgfSA9IHRoaXMucHJvcHM7XHJcbiAgICAgIGNvbnN0IG5ld0ZpbGVMaXN0ID0gW107XHJcbiAgICAgIGxldCBvbGRMaXN0ID0gbGlzdCA/IGxpc3QgOiBmaWxlTGlzdDtcclxuICAgICAgdGhpcy5zZXRTdGF0ZShcclxuICAgICAgICB7XHJcbiAgICAgICAgICBmaWxlTGlzdFN0b3JlOiBbLi4uZmlsZUxpc3RdLFxyXG4gICAgICAgIH0sXHJcbiAgICAgICAgYXN5bmMgKCkgPT4ge1xyXG4gICAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBvbGRMaXN0Lmxlbmd0aDsgaSsrKSB7XHJcbiAgICAgICAgICAgIGxldCBpdGVtOiBhbnkgPSBvbGRMaXN0W2ldO1xyXG4gICAgICAgICAgICBsZXQgdGVtcCA9IHtcclxuICAgICAgICAgICAgICAuLi5pdGVtLFxyXG4gICAgICAgICAgICAgIHN0YXR1czogaXRlbS5zdGF0dXMsXHJcbiAgICAgICAgICAgICAgbmFtZTogaXRlbS5uYW1lIHx8IGl0ZW0uZmlsZU5hbWUsXHJcbiAgICAgICAgICAgICAgdHlwZTogaXRlbS50eXBlLFxyXG4gICAgICAgICAgICAgIHNpemU6IGl0ZW0uc2l6ZSxcclxuICAgICAgICAgICAgICB1cmw6IGl0ZW0udXJsLFxyXG4gICAgICAgICAgICB9IGFzIGFueTtcclxuICAgICAgICAgICAgaWYgKGxpc3RUeXBlID09IFwicGljdHVyZS1jYXJkXCIgJiYgIWl0ZW0udXJsICYmIGl0ZW0uZmlsZUlkKSB7XHJcbiAgICAgICAgICAgICAgbGV0IHJlczogYW55ID0gYXdhaXQgcHJldmlld0ltYWdlKFxyXG4gICAgICAgICAgICAgICAgaXRlbS5maWxlSWQsXHJcbiAgICAgICAgICAgICAgICB0aGlzLnByb3BzLnJlcXVlc3RDb25maWdcclxuICAgICAgICAgICAgICApO1xyXG4gICAgICAgICAgICAgIGlmIChyZXMuY29kZSA9PSAyMDApIHtcclxuICAgICAgICAgICAgICAgIHRlbXAudXJsID0gcmVzLmRhdGE7XHJcbiAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIG5ld0ZpbGVMaXN0LnB1c2godGVtcCk7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgICB0aGlzLnNldFN0YXRlKHtcclxuICAgICAgICAgICAgZmlsZUxpc3Q6IFsuLi5uZXdGaWxlTGlzdF0sXHJcbiAgICAgICAgICB9KTtcclxuICAgICAgICB9XHJcbiAgICAgICk7XHJcbiAgICB9XHJcbiAgICBjb21wb25lbnREaWRVcGRhdGUocHJlUHJvcHMsIHByZVN0YXRlKSB7XHJcbiAgICAgIGlmICh0aGlzLnByb3BzLmZpbGVMaXN0KSB7XHJcbiAgICAgICAgaWYgKFxyXG4gICAgICAgICAgSlNPTi5zdHJpbmdpZnkodGhpcy5wcm9wcy5maWxlTGlzdCkgIT09XHJcbiAgICAgICAgICBKU09OLnN0cmluZ2lmeSh0aGlzLnN0YXRlLmZpbGVMaXN0U3RvcmUpXHJcbiAgICAgICAgKSB7XHJcbiAgICAgICAgICB0aGlzLmNvbnZlcnRGaWxlTGlzdCh0aGlzLnByb3BzLmZpbGVMaXN0KTtcclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgIH1cclxuICAgIGdldEZpbGVMaXN0KCkge1xyXG4gICAgICByZXR1cm4gdGhpcy5zdGF0ZS5maWxlTGlzdDtcclxuICAgIH1cclxuICAgIHNldEZpbGVMaXN0KGZpbGVMaXN0OiBBcnJheTxPYmplY3Q+KSB7XHJcbiAgICAgIHRoaXMuY29udmVydEZpbGVMaXN0KGZpbGVMaXN0KTtcclxuICAgIH1cclxuICAgIGFzeW5jIGJlZm9yZVVwbG9hZChmaWxlLCBvZmlsZUxpc3QpIHtcclxuICAgICAgbGV0IHtcclxuICAgICAgICBtYXhTaXplID0gMTAwLFxyXG4gICAgICAgIGFsbG93RmlsZVN1ZmZpeCxcclxuICAgICAgICBjaGVja1NhbWVGaWxlID0gdHJ1ZSxcclxuICAgICAgICBtYXhDb3VudCxcclxuICAgICAgICBzaG93VXBsb2FkTGlzdCxcclxuICAgICAgICBmaWxlTGlzdDogcHJvcHNMaXN0LFxyXG4gICAgICAgIG9uTGlzdENoYW5nZSxcclxuICAgICAgfSA9IHRoaXMucHJvcHM7XHJcbiAgICAgIGxldCB7IGZpbGVMaXN0LCBmaWxlTGlzdFN0b3JlIH0gPSB0aGlzLnN0YXRlO1xyXG4gICAgICBsZXQgc2l6ZTogbnVtYmVyO1xyXG4gICAgICBpZiAoYWxsb3dGaWxlU3VmZml4ICYmICF0aGlzLmNoZWNrRmlsZVR5cGUoZmlsZSkpIHtcclxuICAgICAgICBtZXNzYWdlLmVycm9yKFxyXG4gICAgICAgICAgYCR7ZmlsZS5uYW1lfeaWh+S7tuexu+Wei+S4jeWFgeiuuOS4iuS8oO+8jOivt+S4iuS8oOWQjue8gOS4uiR7YWxsb3dGaWxlU3VmZml4feeahOexu+Wei+aWh+S7tu+8gWBcclxuICAgICAgICApO1xyXG4gICAgICAgIHJldHVybiBmYWxzZTtcclxuICAgICAgfVxyXG4gICAgICBpZiAobWF4U2l6ZSAhPT0gZmFsc2UpIHtcclxuICAgICAgICBpZiAobWF4U2l6ZSA9PT0gdHJ1ZSkge1xyXG4gICAgICAgICAgbWF4U2l6ZSA9IDEwMDtcclxuICAgICAgICB9XHJcbiAgICAgICAgc2l6ZSA9IG1heFNpemUgKiAxMDI0ICogMTAyNDtcclxuICAgICAgICBpZiAoc2l6ZSA8IGZpbGUuc2l6ZSkge1xyXG4gICAgICAgICAgbWVzc2FnZS5lcnJvcihgJHtmaWxlLm5hbWV95paH5Lu25aSn5bCP6LaF6L+HJHttYXhTaXplfU3vvIzor7fph43mlrDkuIrkvKDvvIFgKTtcclxuICAgICAgICAgIHJldHVybiBmYWxzZTtcclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgICAgbGV0IGZpbGVOYW1lcyA9IFtdO1xyXG4gICAgICBpZiAoY2hlY2tTYW1lRmlsZSkge1xyXG4gICAgICAgIGNvbnN0IGNoZWNrTGlzdCA9IHRoaXMucHJvcHMuZmlsZUxpc3QgPyBmaWxlTGlzdFN0b3JlIDogZmlsZUxpc3Q7XHJcbiAgICAgICAgY2hlY2tMaXN0Lm1hcCgoaXRlbSkgPT4ge1xyXG4gICAgICAgICAgZmlsZU5hbWVzLnB1c2goaXRlbS5uYW1lIHx8IGl0ZW0uZmlsZU5hbWUpO1xyXG4gICAgICAgIH0pO1xyXG4gICAgICAgIGlmIChmaWxlTmFtZXMuaW5kZXhPZihmaWxlLm5hbWUpID4gLTEgJiYgc2hvd1VwbG9hZExpc3QgIT09IGZhbHNlKSB7XHJcbiAgICAgICAgICBtZXNzYWdlLmVycm9yKGDmlofku7Yke2ZpbGUubmFtZX3lt7LlnKjkuIrkvKDliJfooajkuK3vvIzor7fph43mlrDpgInmi6nmlofku7bvvIFgKTtcclxuICAgICAgICAgIHJldHVybiBmYWxzZTtcclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuXHJcbiAgICAgIGlmICh0aGlzLnByb3BzLmJlZm9yZVVwbG9hZCkge1xyXG4gICAgICAgIGNvbnN0IHJlcyA9IGF3YWl0IHRoaXMucHJvcHMuYmVmb3JlVXBsb2FkKGZpbGUsIG9maWxlTGlzdCk7XHJcbiAgICAgICAgaWYgKHJlcyA9PT0gZmFsc2UpIHtcclxuICAgICAgICAgIHJldHVybiBmYWxzZTtcclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgICAgY29uc3QgbmV3TGlzdCA9IFsuLi5maWxlTGlzdF07XHJcbiAgICAgIG9maWxlTGlzdC5tYXAoYXN5bmMgKGl0ZW0pID0+IHtcclxuICAgICAgICBpZiAoXHJcbiAgICAgICAgICAhKFxyXG4gICAgICAgICAgICAoYWxsb3dGaWxlU3VmZml4ICYmICF0aGlzLmNoZWNrRmlsZVR5cGUoaXRlbSkpIHx8XHJcbiAgICAgICAgICAgIHNpemUgPCBpdGVtLnNpemUgfHxcclxuICAgICAgICAgICAgKGNoZWNrU2FtZUZpbGUgJiYgZmlsZU5hbWVzLmluZGV4T2YoaXRlbS5uYW1lKSA+IC0xKVxyXG4gICAgICAgICAgKVxyXG4gICAgICAgICkge1xyXG4gICAgICAgICAgY29uc3QgdGVtcCA9IHtcclxuICAgICAgICAgICAgZmlsZU5hbWU6IGl0ZW0ubmFtZSxcclxuICAgICAgICAgICAgcGVyY2VudDogMCxcclxuICAgICAgICAgICAgc3RhdHVzOiBcInVwbG9hZGluZ1wiLFxyXG4gICAgICAgICAgICB1aWQ6IGl0ZW0udWlkLFxyXG4gICAgICAgICAgICBuYW1lOiBpdGVtLm5hbWUsXHJcbiAgICAgICAgICAgIHR5cGU6IGl0ZW0udHlwZSxcclxuICAgICAgICAgICAgc2l6ZTogaXRlbS5zaXplLFxyXG4gICAgICAgICAgfTtcclxuICAgICAgICAgIG5ld0xpc3QucHVzaCh0ZW1wKTtcclxuICAgICAgICB9XHJcbiAgICAgIH0pO1xyXG5cclxuICAgICAgaWYgKG1heENvdW50ICYmIG5ld0xpc3QubGVuZ3RoID4gbWF4Q291bnQpIHtcclxuICAgICAgICBsZXQgbGVuZ3RoID0gbmV3TGlzdC5sZW5ndGggLSBtYXhDb3VudDtcclxuICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IGxlbmd0aDsgaSsrKSB7XHJcbiAgICAgICAgICBuZXdMaXN0LnNwbGljZSgwLCAxKTtcclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgICAgdGhpcy5zZXRTdGF0ZSh7IGZpbGVMaXN0OiBuZXdMaXN0IH0sKCk9PntcclxuICAgICAgICBvbkxpc3RDaGFuZ2UgJiYgb25MaXN0Q2hhbmdlKG5ld0xpc3QpO1xyXG4gICAgICB9KTtcclxuICAgICAgdGhpcy51cGxvYWRTaXplID0gb2ZpbGVMaXN0Lmxlbmd0aDtcclxuICAgIH1cclxuICAgIGNoZWNrRmlsZVR5cGUoZmlsZSkge1xyXG4gICAgICBjb25zdCB7IGFsbG93RmlsZVN1ZmZpeCB9ID0gdGhpcy5wcm9wcztcclxuICAgICAgY29uc3QgbmFtZXMgPSBmaWxlLm5hbWUuc3BsaXQoXCIuXCIpO1xyXG4gICAgICBjb25zdCBzdWZmaXggPSBuYW1lc1tuYW1lcy5sZW5ndGggLSAxXTtcclxuICAgICAgaWYgKGFsbG93RmlsZVN1ZmZpeC5pbmRleE9mKHN1ZmZpeCkgPiAtMSkge1xyXG4gICAgICAgIHJldHVybiB0cnVlO1xyXG4gICAgICB9XHJcbiAgICAgIHJldHVybiBmYWxzZTtcclxuICAgIH1cclxuICAgIG9uUHJvY2Vzcyh7IHBlcmNlbnQsIGZpbGUgfTogYW55KSB7XHJcbiAgICAgIGNvbnN0IHsgZmlsZUxpc3QgfSA9IHRoaXMuc3RhdGU7XHJcbiAgICAgIGNvbnN0IHsgb25MaXN0Q2hhbmdlIH0gPSB0aGlzLnByb3BzO1xyXG4gICAgICBjb25zdCBuZXdMaXN0OiBhbnkgPSBbXTtcclxuICAgICAgZmlsZUxpc3QubWFwKChpdGVtOiBhbnkpID0+IHtcclxuICAgICAgICBjb25zdCBuZXdGaWxlID0geyAuLi5pdGVtIH07XHJcbiAgICAgICAgaWYgKGZpbGUudWlkID09IGl0ZW0udWlkKSB7XHJcbiAgICAgICAgICBuZXdGaWxlLnBlcmNlbnQgPSBwZXJjZW50O1xyXG4gICAgICAgIH1cclxuICAgICAgICBuZXdMaXN0LnB1c2gobmV3RmlsZSk7XHJcbiAgICAgIH0pO1xyXG4gICAgICB0aGlzLnNldFN0YXRlKHtcclxuICAgICAgICBmaWxlTGlzdDogbmV3TGlzdCxcclxuICAgICAgfSwoKT0+e1xyXG4gICAgICAgIG9uTGlzdENoYW5nZSAmJiBvbkxpc3RDaGFuZ2UoZmlsZUxpc3QpO1xyXG4gICAgICB9KTtcclxuICAgXHJcbiAgICB9XHJcbiAgICBhc3luYyBvbkNvbXBsZXRlKGZpbGVzKSB7XHJcbiAgICAgIHRoaXMudXBsb2FkSW5nU2l6ZSA9IDA7XHJcbiAgICAgIHRoaXMudXBsb2FkU2l6ZSA9IDA7XHJcbiAgICAgIHRoaXMudXBsb2FkSW5nTGlzdCA9IFtdO1xyXG4gICAgICBjb25zdCB7IGZpbGVMaXN0IH0gPSB0aGlzLnN0YXRlO1xyXG4gICAgICBjb25zdCB7IG5ld1ZlcnNpb24gPSB0cnVlLCByZXF1ZXN0Q29uZmlnID0ge30gfSA9IHRoaXMucHJvcHM7XHJcbiAgICAgIGNvbnN0IG5ld0xpc3Q6IGFueSA9IFtdO1xyXG4gICAgICBmaWxlTGlzdC5tYXAoYXN5bmMgKGl0ZW06IGFueSwgaW5kZXgpID0+IHtcclxuICAgICAgICBjb25zdCBuZXdGaWxlID0geyAuLi5pdGVtIH07XHJcbiAgICAgICAgZmlsZXMubWFwKGFzeW5jIChmaWxlKSA9PiB7XHJcbiAgICAgICAgICBpZiAoZmlsZS5maWxlLnVpZCA9PSBpdGVtLnVpZCkge1xyXG4gICAgICAgICAgICBuZXdGaWxlLnN0YXR1cyA9IGZpbGUuc3RhdHVzID09IFwic3VjY2Vzc1wiID8gXCJkb25lXCIgOiBmaWxlLnN0YXR1cztcclxuICAgICAgICAgICAgbmV3RmlsZS5maWxlSWQgPSBmaWxlLmZpbGVJZDtcclxuICAgICAgICAgICAgbmV3RmlsZS51cmwgPSBmaWxlLnVybDtcclxuICAgICAgICAgICAgaWYgKCFuZXdWZXJzaW9uKSB7XHJcbiAgICAgICAgICAgICAgbGV0IHVybCA9IGAvanF1aWNrLXJlc291cmNlL29zcy9lbmRwb2ludC9kb3dubG9hZC1maWxlcz9hdHRhY2hJZD0ke1xyXG4gICAgICAgICAgICAgICAgZmlsZS5maWxlSWRcclxuICAgICAgICAgICAgICB9Jl90cGs9JHt3aW5kb3cubG9jYWxTdG9yYWdlLmdldEl0ZW0oXCJ0b2tlblwiKX1gO1xyXG4gICAgICAgICAgICAgIG5ld0ZpbGUudXJsID0gcmVxdWVzdENvbmZpZy5wcmVmaXhcclxuICAgICAgICAgICAgICAgID8gcmVxdWVzdENvbmZpZy5wcmVmaXggKyB1cmxcclxuICAgICAgICAgICAgICAgIDogXCIvYXBpXCIgKyB1cmw7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgIH1cclxuICAgICAgICB9KTtcclxuICAgICAgICBuZXdMaXN0LnB1c2gobmV3RmlsZSk7XHJcbiAgICAgIH0pO1xyXG4gICAgICB0aGlzLnNldFN0YXRlKHtcclxuICAgICAgICBmaWxlTGlzdDogWy4uLm5ld0xpc3RdLFxyXG4gICAgICB9LCgpPT57XHJcbiAgICAgICAgY29uc3QgeyBvbkxpc3RDaGFuZ2UgfSA9IHRoaXMucHJvcHM7XHJcbiAgICAgICAgb25MaXN0Q2hhbmdlICYmIG9uTGlzdENoYW5nZShuZXdMaXN0KTtcclxuICAgICAgfSk7XHJcbiAgICB9XHJcbiAgICBjdXN0b21SZXF1ZXN0ID0gYXN5bmMgKG9wdGlvbnMpID0+IHtcclxuICAgICAgY29uc3QgZmlsZSA9IG9wdGlvbnMuZmlsZTtcclxuICAgICAgY29uc3Qge1xyXG4gICAgICAgIG9uQ29tcGxldGUsXHJcbiAgICAgICAgb25Qcm9jZXNzLFxyXG4gICAgICAgIHNsaWNlU2l6ZSxcclxuICAgICAgICBuZXdWZXJzaW9uID0gdHJ1ZSxcclxuICAgICAgfSA9IHRoaXMucHJvcHM7XHJcbiAgICAgIGNvbnN0IG9uUHJvZ3Jlc3MgPSAodG90YWxQcm9ncmVzczogYW55KSA9PiB7XHJcbiAgICAgICAgb3B0aW9ucy5vblByb2dyZXNzKHsgcGVyY2VudDogdG90YWxQcm9ncmVzcyB9LCBmaWxlKTtcclxuICAgICAgICB0aGlzLm9uUHJvY2Vzcyh7IHBlcmNlbnQ6IHRvdGFsUHJvZ3Jlc3MsIGZpbGU6IGZpbGUgfSk7XHJcbiAgICAgICAgb25Qcm9jZXNzICYmIG9uUHJvY2Vzcyh7IHBlcmNlbnQ6IHRvdGFsUHJvZ3Jlc3MsIGZpbGU6IGZpbGUgfSk7XHJcbiAgICAgIH07XHJcbiAgICAgIHRyeSB7XHJcbiAgICAgICAgY29uc3QgcmVzOiBhbnkgPSBhd2FpdCB1cGxvYWQoXHJcbiAgICAgICAgICB7XHJcbiAgICAgICAgICAgIGZpbGU6IGZpbGUsXHJcbiAgICAgICAgICAgIG9uUHJvZ3Jlc3M6IG9uUHJvZ3Jlc3MsXHJcbiAgICAgICAgICAgIHBhcnRTaXplOiBzbGljZVNpemUsXHJcbiAgICAgICAgICB9LFxyXG4gICAgICAgICAgdGhpcy5wcm9wcy5yZXF1ZXN0Q29uZmlnXHJcbiAgICAgICAgKTtcclxuICAgICAgICB0aGlzLnVwbG9hZEluZ1NpemUgPSB0aGlzLnVwbG9hZEluZ1NpemUgKyAxO1xyXG4gICAgICAgIGxldCBmaWxlSWQgPSBudWxsO1xyXG4gICAgICAgIGxldCBJbWdSZXMgPSBudWxsO1xyXG4gICAgICAgIGlmIChyZXMuY29kZSA9PSAyMDApIHtcclxuICAgICAgICAgIGZpbGVJZCA9IHJlcy5kYXRhLmF0dGFjaElkO1xyXG4gICAgICAgICAgb3B0aW9ucy5vblN1Y2Nlc3MoKTtcclxuICAgICAgICAgIGlmICh0aGlzLnByb3BzLmxpc3RUeXBlID09IFwicGljdHVyZS1jYXJkXCIgJiYgbmV3VmVyc2lvbikge1xyXG4gICAgICAgICAgICBJbWdSZXMgPSBhd2FpdCBwcmV2aWV3SW1hZ2UoZmlsZUlkLCB0aGlzLnByb3BzLnJlcXVlc3RDb25maWcpO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICBvcHRpb25zLm9uRXJyb3IoKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgdGhpcy51cGxvYWRJbmdMaXN0LnB1c2goe1xyXG4gICAgICAgICAgZmlsZTogb3B0aW9ucy5maWxlLFxyXG4gICAgICAgICAgZmlsZUlkOiBmaWxlSWQsXHJcbiAgICAgICAgICBzdGF0dXM6IHJlcy5jb2RlID09IDIwMCA/IFwic3VjY2Vzc1wiIDogXCJlcnJvclwiLFxyXG4gICAgICAgICAgdXJsOiBJbWdSZXMgPyBJbWdSZXMuZGF0YSA6IG51bGwsXHJcbiAgICAgICAgfSk7XHJcbiAgICAgICAgLy8gY29uc29sZS5sb2coJ2N1c3RvbVJlcXVlc3QtdXBsb2FkU2l6ZScsdGhpcy51cGxvYWRTaXplKVxyXG4gICAgICAgIC8vIGNvbnNvbGUubG9nKCdjdXN0b21SZXF1ZXN0LXVwbG9hZEluZ1NpemUnLHRoaXMudXBsb2FkSW5nU2l6ZSlcclxuICAgICAgICAvLyBpZiAodGhpcy51cGxvYWRTaXplID09IHRoaXMudXBsb2FkSW5nU2l6ZSkge1xyXG4gICAgICAgICAgdGhpcy5vbkNvbXBsZXRlKHRoaXMudXBsb2FkSW5nTGlzdCk7XHJcbiAgICAgICAgLy8gfVxyXG4gICAgICAgIG9uQ29tcGxldGUgJiZcclxuICAgICAgICAgIG9uQ29tcGxldGUoe1xyXG4gICAgICAgICAgICBmaWxlOiBvcHRpb25zLmZpbGUsXHJcbiAgICAgICAgICAgIGZpbGVJZDogZmlsZUlkLFxyXG4gICAgICAgICAgICBzdGF0dXM6IHJlcy5jb2RlID09IDIwMCA/IFwic3VjY2Vzc1wiIDogXCJlcnJvclwiLFxyXG4gICAgICAgICAgfSk7XHJcbiAgICAgIH0gY2F0Y2ggKGUpIHtcclxuICAgICAgICAvLyBpZiAodGhpcy51cGxvYWRTaXplID09IHRoaXMudXBsb2FkSW5nU2l6ZSkge1xyXG4gICAgICAgICAgdGhpcy5vbkNvbXBsZXRlKHRoaXMudXBsb2FkSW5nTGlzdCk7XHJcbiAgICAgICAgICBvcHRpb25zLm9uRXJyb3IoKTtcclxuICAgICAgICAvLyB9XHJcbiAgICAgICBcclxuICAgICAgICBvbkNvbXBsZXRlICYmXHJcbiAgICAgICAgICBvbkNvbXBsZXRlKHsgZmlsZTogb3B0aW9ucy5maWxlLCBmaWxlSWQ6IFwiXCIsIHN0YXR1czogXCJlcnJvclwiIH0pO1xyXG4gICAgICB9XHJcbiAgICB9O1xyXG4gICAgb25EZWxldGUoZmlsZSkge1xyXG4gICAgICBjb25zdCB7IGZpbGVMaXN0IH0gPSB0aGlzLnN0YXRlO1xyXG4gICAgICBjb25zdCB7IG9uTGlzdENoYW5nZSB9ID0gdGhpcy5wcm9wcztcclxuICAgICAgY29uc3QgbmV3TGlzdDogYW55ID0gW107XHJcbiAgICAgIGZpbGVMaXN0Lm1hcCgoaXRlbTogYW55KSA9PiB7XHJcbiAgICAgICAgLy/pgJrov4fmlofku7blkI3liKTmlq3vvIzkuIrkvKDmmK/mlofku7blkI3mmK/llK/kuIDnmoRcclxuICAgICAgICBpZiAoXHJcbiAgICAgICAgICBpdGVtLm5hbWUgIT09IGZpbGUubmFtZSB8fFxyXG4gICAgICAgICAgaXRlbS5maWxlSWQgIT09IGZpbGUuZmlsZUlkIHx8XHJcbiAgICAgICAgICBpdGVtLnVpZCAhPT0gZmlsZS51aWRcclxuICAgICAgICApIHtcclxuICAgICAgICAgIG5ld0xpc3QucHVzaChpdGVtKTtcclxuICAgICAgICB9XHJcbiAgICAgIH0pO1xyXG4gICAgICB0aGlzLnNldFN0YXRlKHtcclxuICAgICAgICBmaWxlTGlzdDogbmV3TGlzdCxcclxuICAgICAgfSwoKT0+e1xyXG4gICAgICAgIG9uTGlzdENoYW5nZSAmJiBvbkxpc3RDaGFuZ2UobmV3TGlzdCk7XHJcbiAgICAgIH0pO1xyXG4gICAgIFxyXG4gICAgfVxyXG4gICAgcmVuZGVyKCk6IFJlYWN0LlJlYWN0Tm9kZSB7XHJcbiAgICAgIGxldCB7XHJcbiAgICAgICAgZmlsZUxpc3QsXHJcbiAgICAgICAgZmlsZUNhcmQsXHJcbiAgICAgICAgc2hvd1VwbG9hZExpc3QgPSB7XHJcbiAgICAgICAgICBzaG93RG93bmxvYWRJY29uOiB0cnVlLFxyXG4gICAgICAgICAgc2hvd1ByZXZpZXdJY29uOiBmYWxzZSxcclxuICAgICAgICAgIHNob3dSZW1vdmVJY29uOiB0cnVlLFxyXG4gICAgICAgICAgZG93bmxvYWRJY29uOiBudWxsLFxyXG4gICAgICAgICAgcmVtb3ZlSWNvbjogbnVsbCxcclxuICAgICAgICAgIHByZXZpZXdJY29uOiBudWxsLFxyXG4gICAgICAgIH0gYXMgYW55LFxyXG4gICAgICAgIHJlcXVlc3RDb25maWcgPSB7fSxcclxuICAgICAgfSA9IHRoaXMucHJvcHM7XHJcbiAgICAgIGNvbnN0IG5ld3Byb3BzID0gb21pdCh0aGlzLnByb3BzLCBbXHJcbiAgICAgICAgXCJzbGljZVNpemVcIixcclxuICAgICAgICBcIm1heFNpemVcIixcclxuICAgICAgICBcIm9uQ29tcGxldGVcIixcclxuICAgICAgICBcIm9uUHJvY2Vzc1wiLFxyXG4gICAgICAgIFwiYWxsb3dGaWxlU3VmZml4XCIsXHJcbiAgICAgICAgXCJ1c2VEZWZhdWx0TGlzdFwiLFxyXG4gICAgICAgIFwiZmlsZUNhcmRcIixcclxuICAgICAgICBcIm9uTGlzdENoYW5nZVwiLFxyXG4gICAgICAgIFwibmV3VmVyc2lvblwiLFxyXG4gICAgICAgIFwicmVxdWVzdENvbmZpZ1wiLFxyXG4gICAgICBdKTtcclxuICAgICAgbGV0IGRlZmF1bHRQcm9wcyA9IHtcclxuICAgICAgICBjdXN0b21SZXF1ZXN0OiB0aGlzLmN1c3RvbVJlcXVlc3QuYmluZCh0aGlzKSxcclxuICAgICAgICBtdWx0aXBsZTogdHJ1ZSxcclxuICAgICAgfSBhcyBJVXBsb2FkUHJvcHM7XHJcbiAgICAgIGlmIChmaWxlQ2FyZCkge1xyXG4gICAgICAgIGRlZmF1bHRQcm9wcyA9IHtcclxuICAgICAgICAgIC4uLmRlZmF1bHRQcm9wcyxcclxuICAgICAgICAgIGl0ZW1SZW5kZXI6IChvcmlnaW5Ob2RlLCBmaWxlOiBhbnksIGN1cnJGaWxlTGlzdCkgPT4ge1xyXG4gICAgICAgICAgICBjb25zdCBuYW1lID0gZmlsZS5uYW1lIHx8IGZpbGUuZmlsZU5hbWU7XHJcbiAgICAgICAgICAgIGNvbnN0IG5hbWVzID0gbmFtZT8uc3BsaXQoXCIuXCIpO1xyXG4gICAgICAgICAgICBjb25zdCBzdWZmaXggPSBuYW1lcyA/IG5hbWVzW25hbWVzLmxlbmd0aCAtIDFdIDogXCJcIjtcclxuICAgICAgICAgICAgcmV0dXJuIChcclxuICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT17Z2V0TGVzcyhzdHlsZXMsIFwiZmlsZS1pdGVtXCIpfT5cclxuICAgICAgICAgICAgICAgIDxkaXZcclxuICAgICAgICAgICAgICAgICAgY2xhc3NOYW1lPXtjbHMoZ2V0TGVzcyhzdHlsZXMsIFwiY29udGVudFwiKSwge1xyXG4gICAgICAgICAgICAgICAgICAgIFtnZXRMZXNzKHN0eWxlcywgXCJjb250ZW50X2Vycm9yXCIpXTogZmlsZS5zdGF0dXMgPT0gXCJlcnJvclwiLFxyXG4gICAgICAgICAgICAgICAgICB9KX1cclxuICAgICAgICAgICAgICAgID5cclxuICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9e2dldExlc3Moc3R5bGVzLCBcIm1hcmstcGljdHVyZVwiKX0+XHJcbiAgICAgICAgICAgICAgICAgICAgPEZpbGVJY29uIHN1ZmZpeD17c3VmZml4fSBmaWxlSWQ9e2ZpbGUuZmlsZUlkfSAvPlxyXG4gICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9e2dldExlc3Moc3R5bGVzLCBcIm5hbWVcIil9PlxyXG4gICAgICAgICAgICAgICAgICAgIHtmaWxlLm5hbWUgfHwgZmlsZS5maWxlTmFtZX1cclxuICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPXtnZXRMZXNzKHN0eWxlcywgXCJpY29uXCIpfT5cclxuICAgICAgICAgICAgICAgICAgICB7c2hvd1VwbG9hZExpc3Quc2hvd1ByZXZpZXdJY29uICYmXHJcbiAgICAgICAgICAgICAgICAgICAgICAoZmlsZS5zdGF0dXMgPT0gXCJkb25lXCJ8fCBmaWxlLmZpbGVJZCkgJiYgKFxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgb25DbGljaz17KCkgPT4ge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHRoaXMucHJvcHMub25QcmV2aWV3KSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMucHJvcHMub25QcmV2aWV3KGZpbGUpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcHJldmlld0RvY3VtZW50KGZpbGUuZmlsZUlkLCByZXF1ZXN0Q29uZmlnKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICB9fVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIHN0eWxlPXt7IGN1cnNvcjogXCJwb2ludGVyXCIgfX1cclxuICAgICAgICAgICAgICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIHtzaG93VXBsb2FkTGlzdC5kb3dubG9hZEljb24gPyAoXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaG93VXBsb2FkTGlzdC5kb3dubG9hZEljb25cclxuICAgICAgICAgICAgICAgICAgICAgICAgICApIDogKFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPEV5ZU91dGxpbmVkIC8+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgKX1cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICApfVxyXG4gICAgICAgICAgICAgICAgICAgIHtzaG93VXBsb2FkTGlzdC5zaG93RG93bmxvYWRJY29uICYmXHJcbiAgICAgICAgICAgICAgICAgICAgICAoZmlsZS5zdGF0dXMgPT0gXCJkb25lXCJ8fCBmaWxlLmZpbGVJZCkgJiYgKFxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgb25DbGljaz17KCkgPT4ge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHRoaXMucHJvcHMub25Eb3dubG9hZCkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnByb3BzLm9uRG93bmxvYWQoZmlsZSk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkb3dubG9hZChmaWxlLmZpbGVJZCwgdHJ1ZSwgcmVxdWVzdENvbmZpZyk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgfX1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICBzdHlsZT17eyBjdXJzb3I6IFwicG9pbnRlclwiIH19XHJcbiAgICAgICAgICAgICAgICAgICAgICAgID5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICB7c2hvd1VwbG9hZExpc3QuZG93bmxvYWRJY29uID8gKFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgc2hvd1VwbG9hZExpc3QuZG93bmxvYWRJY29uXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgKSA6IChcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxEb3dubG9hZE91dGxpbmVkIC8+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgKX1cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICApfVxyXG4gICAgICAgICAgICAgICAgICAgIHtzaG93VXBsb2FkTGlzdC5zaG93UmVtb3ZlSWNvbiAmJiAoXHJcbiAgICAgICAgICAgICAgICAgICAgICA8ZGl2XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIG9uQ2xpY2s9eygpID0+IHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAodGhpcy5wcm9wcy5vblJlbW92ZSkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5wcm9wcy5vblJlbW92ZShmaWxlKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5vbkRlbGV0ZShmaWxlKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIH19XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHN0eWxlPXt7IGN1cnNvcjogXCJwb2ludGVyXCIgfX1cclxuICAgICAgICAgICAgICAgICAgICAgID5cclxuICAgICAgICAgICAgICAgICAgICAgICAge3Nob3dVcGxvYWRMaXN0LmRvd25sb2FkSWNvbiA/IChcclxuICAgICAgICAgICAgICAgICAgICAgICAgICBzaG93VXBsb2FkTGlzdC5kb3dubG9hZEljb25cclxuICAgICAgICAgICAgICAgICAgICAgICAgKSA6IChcclxuICAgICAgICAgICAgICAgICAgICAgICAgICA8RGVsZXRlT3V0bGluZWQgLz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgKX1cclxuICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICl9XHJcbiAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICB7ZmlsZS5zdGF0dXMgPT0gXCJ1cGxvYWRpbmdcIiAmJiAoXHJcbiAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPXtnZXRMZXNzKHN0eWxlcywgXCJwcm9jZXNzXCIpfT5cclxuICAgICAgICAgICAgICAgICAgICA8ZGl2XHJcbiAgICAgICAgICAgICAgICAgICAgICBjbGFzc05hbWU9e2dldExlc3Moc3R5bGVzLCBcInBlcmNlbnRcIil9XHJcbiAgICAgICAgICAgICAgICAgICAgICBzdHlsZT17eyB3aWR0aDogZmlsZS5wZXJjZW50ICsgXCIlXCIgfX1cclxuICAgICAgICAgICAgICAgICAgICA+PC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgKX1cclxuICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgKTtcclxuICAgICAgICAgIH0sXHJcbiAgICAgICAgfTtcclxuICAgICAgfSBlbHNlIHtcclxuICAgICAgICBkZWZhdWx0UHJvcHMgPSB7XHJcbiAgICAgICAgICAuLi5kZWZhdWx0UHJvcHMsXHJcbiAgICAgICAgICBvbkRvd25sb2FkOiAoZmlsZTogYW55KSA9PiB7XHJcbiAgICAgICAgICAgIGlmICh0aGlzLnByb3BzLm9uRG93bmxvYWQpIHtcclxuICAgICAgICAgICAgICB0aGlzLnByb3BzLm9uRG93bmxvYWQoZmlsZSk7XHJcbiAgICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgICAgZG93bmxvYWQoZmlsZS5maWxlSWQsIHRydWUsIHJlcXVlc3RDb25maWcpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICB9LFxyXG4gICAgICAgICAgb25SZW1vdmU6IChmaWxlKSA9PiB7XHJcbiAgICAgICAgICAgIGlmICh0aGlzLnByb3BzLm9uUmVtb3ZlKSB7XHJcbiAgICAgICAgICAgICAgdGhpcy5wcm9wcy5vblJlbW92ZShmaWxlKTtcclxuICAgICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgICB0aGlzLm9uRGVsZXRlKGZpbGUpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICB9LFxyXG4gICAgICAgICAgb25QcmV2aWV3OiAoZmlsZTogYW55KSA9PiB7XHJcbiAgICAgICAgICAgIGlmICh0aGlzLnByb3BzLm9uUHJldmlldykge1xyXG4gICAgICAgICAgICAgIHRoaXMucHJvcHMub25QcmV2aWV3KGZpbGUpO1xyXG4gICAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICAgIGlmIChmaWxlPy5maWxlSWQpIHtcclxuICAgICAgICAgICAgICAgIHByZXZpZXdEb2N1bWVudChmaWxlLmZpbGVJZCwgcmVxdWVzdENvbmZpZyk7XHJcbiAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICB9LFxyXG4gICAgICAgICAgc2hvd1VwbG9hZExpc3Q6IHsgLi4uc2hvd1VwbG9hZExpc3QgfSxcclxuICAgICAgICB9O1xyXG4gICAgICB9XHJcbiAgICAgIHJldHVybiAoXHJcbiAgICAgICAgPD5cclxuICAgICAgICAgIDxDb21wb25lbnRcclxuICAgICAgICAgICAgey4uLmRlZmF1bHRQcm9wc31cclxuICAgICAgICAgICAgey4uLm5ld3Byb3BzfVxyXG4gICAgICAgICAgICBiZWZvcmVVcGxvYWQ9e3RoaXMuYmVmb3JlVXBsb2FkLmJpbmQodGhpcyl9XHJcbiAgICAgICAgICAgIGZpbGVMaXN0PXt0aGlzLnN0YXRlLmZpbGVMaXN0fVxyXG4gICAgICAgICAgLz5cclxuICAgICAgICA8Lz5cclxuICAgICAgKTtcclxuICAgIH1cclxuICB9O1xyXG59O1xyXG5cclxuY29uc3QgTnNjVXBsb2FkOiBhbnkgPSB3aXRoQ3VzdG9tVXBsb2FkKFVwbG9hZCk7XHJcbi8vIC8vIOS9v+eUqCB3aXRoQ3VzdG9tVXBsb2FkIOWwgeijhSBVcGxvYWQuRHJhZ2dlciDnu4Tku7ZcclxuY29uc3QgTnNjVXBsb2FkRHJhZ2dlciA9IHdpdGhDdXN0b21VcGxvYWQoVXBsb2FkLkRyYWdnZXIpO1xyXG5Oc2NVcGxvYWQuRHJhZ2dlciA9IE5zY1VwbG9hZERyYWdnZXI7XHJcbmV4cG9ydCBkZWZhdWx0IE5zY1VwbG9hZDtcclxuIl0sIm1hcHBpbmdzIjoiOzs7Ozs7OztBQUFBLE9BQU8sS0FBS0EsS0FBSyxNQUFNLE9B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