nsc-react-component 4.0.20 → 4.1.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/lib/page/BasePage/index.d.ts +1 -1
- package/lib/page/BasePage/index.js +9 -19
- package/lib/page/BasePage/index.js.map +1 -1
- package/lib/page/FormPage/index.js +5 -5
- package/lib/page/FormPage/index.js.map +1 -1
- package/lib/page/HeaderSearch/index.js +1 -3
- package/lib/page/HeaderSearch/index.js.map +1 -1
- package/lib/page/SettingTable/index.d.ts +11 -0
- package/lib/page/SettingTable/index.js +76 -15
- package/lib/page/SettingTable/index.js.map +1 -1
- package/package.json +1 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","names":["React","PureComponent","Form","Button","cls","Col","Row","isEmptyObj","DownOutlined","UpOutlined","ReloadOutlined","SearchOutlined","getLess","getNode","dayjs","styles","HeaderSearch","constructor","arguments","_defineProperty","createRef","expand","setSearchParams","params","callBack","_this$searchRef$curre","newParams","_objectSpread","console","log","dateFormat","key","value","Array","isArray","searchRef","current","setFieldsValue","getSearchValues","fromValue","formatValue","_this$searchRef$curre2","getFieldsValue","olddata","length","format","onSearch","props","resetFields","_this$searchRef$curre3","resetSearch","_this$searchRef$curre4","onReset","render","searchForms","toolButtonPosition","searchFormProps","colSpan","headerCount","headerRout","createElement","gutter","wrap","className","_extends","ref","labelCol","wrapperCol","style","width","display","flexWrap","onFinish","bind","map","item","index","_item$props","itemProps","valueFormat","name","state","allowChars","searchDisabled","type","defaultItem","label","rules","componentName","placeholder","concat","md","span","sm","lg","paddingRight","Item","disabled","offset","marginTop","buttonRevers","icon","marginLeft","htmlType","onClick","setState"],"sources":["../../../src/components/page/HeaderSearch/index.tsx"],"sourcesContent":["import React, { PureComponent, ReactNode } from \"react\";\r\nimport Form from \"../../base/form\";\r\nimport Button from \"../../base/button\";\r\nimport cls from \"classnames\";\r\nimport \"./index.less\";\r\nimport Col from \"../../base/grid/Col\";\r\nimport Row from \"../../base/grid/Row\";\r\nimport { isEmptyObj } from \"@bj-nsc/functions\";\r\nimport {\r\n DownOutlined,\r\n UpOutlined,\r\n ReloadOutlined,\r\n SearchOutlined,\r\n} from \"@ant-design/icons\";\r\nimport { getLess, getNode } from \"../../utils\";\r\nimport dayjs from \"dayjs\";\r\nconst styles = null;\r\ninterface SearchItemProps {\r\n label: string;\r\n name: string;\r\n labelCol?: any;\r\n type?: string;\r\n wrapperCol?: any;\r\n props?: any;\r\n}\r\ninterface SearchProps {\r\n searchForms: Array<SearchItemProps>; //是否显示操作列\r\n toolButtonPosition?: string;\r\n onSearch?: any;\r\n onReset?: any;\r\n searchFormProps?: object;\r\n buttonRevers?: boolean;\r\n className?: any;\r\n}\r\n\r\nclass HeaderSearch extends PureComponent<SearchProps, any> {\r\n searchRef = React.createRef<any>();\r\n dateFormat = {} as any;\r\n state = { expand: false };\r\n setSearchParams(params, callBack) {\r\n let newParams = { ...params };\r\n console.log('this.dateFormatthis.dateFormat',this.dateFormat)\r\n if (!isEmptyObj(this.dateFormat)) {\r\n for (let key in this.dateFormat) {\r\n let value = newParams[key];\r\n if (typeof value === 'string') {\r\n newParams[key] = dayjs(value, this.dateFormat[key]);\r\n } else if (Array.isArray(value)) {\r\n if (typeof value[0] === 'string') {\r\n newParams[key] = [\r\n dayjs(value[0], this.dateFormat[key]),\r\n dayjs(value[1], this.dateFormat[key]),\r\n ];\r\n }\r\n }\r\n }\r\n }\r\n this.searchRef.current?.setFieldsValue(newParams);\r\n }\r\n getSearchValues() {\r\n const fromValue = this.formatValue();\r\n return fromValue;\r\n }\r\n formatValue() {\r\n const fromValue = this.searchRef.current?.getFieldsValue();\r\n if (!isEmptyObj(this.dateFormat)) {\r\n for (let key in this.dateFormat) {\r\n let olddata = fromValue[key];\r\n if (Array.isArray(olddata)) {\r\n if (olddata.length > 0 && olddata[0] && olddata[1]) {\r\n fromValue[key] = [\r\n dayjs(olddata[0]).format(this.dateFormat[key]),\r\n dayjs(olddata[1]).format(this.dateFormat[key]),\r\n ];\r\n }\r\n } else if (olddata) {\r\n fromValue[key] = dayjs(olddata).format(this.dateFormat[key]);\r\n }\r\n }\r\n }\r\n return fromValue;\r\n }\r\n onSearch() {\r\n const { onSearch } = this.props;\r\n const fromValue = this.formatValue();\r\n if (onSearch) {\r\n onSearch(fromValue);\r\n return;\r\n }\r\n }\r\n resetFields() {\r\n this.searchRef.current?.resetFields();\r\n }\r\n resetSearch() {\r\n if (this.props.onReset) {\r\n this.props.onReset();\r\n return;\r\n }\r\n this.searchRef.current?.resetFields();\r\n }\r\n render() {\r\n const {\r\n searchForms = [],\r\n toolButtonPosition,\r\n onSearch,\r\n onReset,\r\n searchFormProps = {},\r\n } = this.props;\r\n let colSpan = 0;\r\n const headerCount = toolButtonPosition == \"right\" ? 1 : 2;\r\n const headerRout = searchForms.length % 4;\r\n if (headerRout == 0) {\r\n colSpan = 18;\r\n } else if (headerRout == 1) {\r\n colSpan = 12;\r\n } else if (headerRout == 2) {\r\n colSpan = 6;\r\n }\r\n console.log('searchForms',searchForms)\r\n return (\r\n <Row gutter={24} wrap>\r\n <div\r\n className={cls(\r\n getLess(styles, \"nsc-headersearch-header\"),\r\n {\r\n [getLess(styles, \"nsc-headersearch-header-padding\")]:\r\n searchForms.length > 3,\r\n },\r\n this.props.className\r\n )}\r\n >\r\n <div className={cls(getLess(styles, \"nsc-headersearch-form\"))}>\r\n <Form\r\n ref={this.searchRef}\r\n labelCol={{}}\r\n wrapperCol={{}}\r\n style={{ width: \"100%\", display: \"flex\", flexWrap: \"wrap\" }}\r\n onFinish={this.onSearch.bind(this)}\r\n // labelAlign={'left'}\r\n {...searchFormProps}\r\n >\r\n {searchForms.map((item: any, index: any) => {\r\n const itemProps = item.props || {};\r\n let display = \"block\";\r\n if (itemProps.format || itemProps.valueFormat) {\r\n this.dateFormat[item.name] = itemProps.format || itemProps.valueFormat;\r\n }\r\n if (index > headerCount && !this.state.expand) {\r\n display = \"none\";\r\n //return\r\n }\r\n let allowChars = item?.props?.allowChars || false;\r\n let props = { ...itemProps };\r\n let searchDisabled =\r\n props.searchDisabled === true ? true : false;\r\n delete props.searchDisabled;\r\n if (!item.type || item.type == \"Input\") {\r\n props.allowChars = true;\r\n } else {\r\n delete props.allowChars;\r\n }\r\n let defaultItem = {\r\n label: item.label,\r\n name: item.name,\r\n allowChars: allowChars,\r\n rules: item.rules,\r\n componentName: item.type ? item.type : \"Input\",\r\n } as any;\r\n if (item.labelCol) {\r\n defaultItem = { ...defaultItem, labelCol: item.labelCol };\r\n delete item.labelCol;\r\n }\r\n if (item.wrapperCol) {\r\n defaultItem = { ...defaultItem, wrapperCol: item.wrapperCol };\r\n delete item.wrapperCol;\r\n }\r\n let placeholder: any =\r\n item.type == \"Select\"\r\n ? `请选择${item.label}`\r\n : `请输入${item.label}`;\r\n if (item.type == \"RangePicker\") {\r\n placeholder = [\"开始时间\", \"结束时间\"];\r\n }\r\n return (\r\n <Col\r\n md={{ span: 12 }}\r\n sm={{ span: 24 }}\r\n lg={{ span: 6 }}\r\n key={index}\r\n style={{ paddingRight: 0, display: display }}\r\n >\r\n <Form.Item {...defaultItem}>\r\n {getNode(item.type, {\r\n placeholder: placeholder,\r\n style: { width: \"100%\" },\r\n ...props,\r\n disabled: searchDisabled,\r\n })}\r\n </Form.Item>\r\n </Col>\r\n );\r\n })}\r\n <Col\r\n md={{ span: 12 }}\r\n sm={{ span: 24 }}\r\n lg={{ span: toolButtonPosition == \"right\" ? 12 : 6 }}\r\n style={{ paddingRight: 0 }}\r\n offset={\r\n (this.state.expand || searchForms.length < 4) &&\r\n searchForms.length > 1\r\n ? colSpan\r\n : 0\r\n }\r\n >\r\n <div\r\n className={cls(\r\n getLess(styles, \"nsc-headersearch-search-buttons\"),\r\n {\r\n [getLess(styles, \"nsc-headersearch-search-buttons-flex\")]:\r\n searchForms.length > 1,\r\n }\r\n )}\r\n style={{ marginTop: 0 }}\r\n >\r\n <div\r\n className={cls({\r\n [getLess(styles, \"nsc-headersearch-button-reverse\")]:\r\n this.props.buttonRevers == true,\r\n })}\r\n >\r\n <Button\r\n type={\"primary\"}\r\n // onClick={this.onSearch.bind(this)}\r\n icon={<SearchOutlined />}\r\n style={{ marginLeft: 0 }}\r\n htmlType=\"submit\"\r\n >\r\n 查询\r\n </Button>\r\n {searchForms.length > 1 && (\r\n <Button\r\n // type={\"primary\"}\r\n onClick={this.resetSearch.bind(this)}\r\n icon={<ReloadOutlined />}\r\n >\r\n 重置\r\n </Button>\r\n )}\r\n </div>\r\n {searchForms.length > 3 && (\r\n <a\r\n className={getLess(\r\n styles,\r\n \"nsc-headersearch-expand-style\"\r\n )}\r\n onClick={() => {\r\n const { expand } = this.state;\r\n this.setState({\r\n expand: !expand,\r\n });\r\n }}\r\n >\r\n {this.state.expand ? \"收起\" : \"展开\"}\r\n {this.state.expand ? <UpOutlined /> : <DownOutlined />}\r\n </a>\r\n )}\r\n </div>\r\n </Col>\r\n </Form>\r\n </div>\r\n </div>\r\n </Row>\r\n );\r\n }\r\n}\r\nexport default HeaderSearch;\r\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"index.js","names":["React","PureComponent","Form","Button","cls","Col","Row","isEmptyObj","DownOutlined","UpOutlined","ReloadOutlined","SearchOutlined","getLess","getNode","dayjs","styles","HeaderSearch","constructor","arguments","_defineProperty","createRef","expand","setSearchParams","params","callBack","_this$searchRef$curre","newParams","_objectSpread","dateFormat","key","value","Array","isArray","searchRef","current","setFieldsValue","getSearchValues","fromValue","formatValue","_this$searchRef$curre2","getFieldsValue","olddata","length","format","onSearch","props","resetFields","_this$searchRef$curre3","resetSearch","_this$searchRef$curre4","onReset","render","searchForms","toolButtonPosition","searchFormProps","colSpan","headerCount","headerRout","createElement","gutter","wrap","className","_extends","ref","labelCol","wrapperCol","style","width","display","flexWrap","onFinish","bind","map","item","index","_item$props","itemProps","valueFormat","name","state","allowChars","searchDisabled","type","defaultItem","label","rules","componentName","placeholder","concat","md","span","sm","lg","paddingRight","Item","disabled","offset","marginTop","buttonRevers","icon","marginLeft","htmlType","onClick","setState"],"sources":["../../../src/components/page/HeaderSearch/index.tsx"],"sourcesContent":["import React, { PureComponent, ReactNode } from \"react\";\r\nimport Form from \"../../base/form\";\r\nimport Button from \"../../base/button\";\r\nimport cls from \"classnames\";\r\nimport \"./index.less\";\r\nimport Col from \"../../base/grid/Col\";\r\nimport Row from \"../../base/grid/Row\";\r\nimport { isEmptyObj } from \"@bj-nsc/functions\";\r\nimport {\r\n DownOutlined,\r\n UpOutlined,\r\n ReloadOutlined,\r\n SearchOutlined,\r\n} from \"@ant-design/icons\";\r\nimport { getLess, getNode } from \"../../utils\";\r\nimport dayjs from \"dayjs\";\r\nconst styles = null;\r\ninterface SearchItemProps {\r\n label: string;\r\n name: string;\r\n labelCol?: any;\r\n type?: string;\r\n wrapperCol?: any;\r\n props?: any;\r\n}\r\ninterface SearchProps {\r\n searchForms: Array<SearchItemProps>; //是否显示操作列\r\n toolButtonPosition?: string;\r\n onSearch?: any;\r\n onReset?: any;\r\n searchFormProps?: object;\r\n buttonRevers?: boolean;\r\n className?: any;\r\n}\r\n\r\nclass HeaderSearch extends PureComponent<SearchProps, any> {\r\n searchRef = React.createRef<any>();\r\n dateFormat = {} as any;\r\n state = { expand: false };\r\n setSearchParams(params, callBack) {\r\n let newParams = { ...params };\r\n if (!isEmptyObj(this.dateFormat)) {\r\n for (let key in this.dateFormat) {\r\n let value = newParams[key];\r\n if (typeof value === 'string') {\r\n newParams[key] = dayjs(value, this.dateFormat[key]);\r\n } else if (Array.isArray(value)) {\r\n if (typeof value[0] === 'string') {\r\n newParams[key] = [\r\n dayjs(value[0], this.dateFormat[key]),\r\n dayjs(value[1], this.dateFormat[key]),\r\n ];\r\n }\r\n }\r\n }\r\n }\r\n this.searchRef.current?.setFieldsValue(newParams);\r\n }\r\n getSearchValues() {\r\n const fromValue = this.formatValue();\r\n return fromValue;\r\n }\r\n formatValue() {\r\n const fromValue = this.searchRef.current?.getFieldsValue();\r\n if (!isEmptyObj(this.dateFormat)) {\r\n for (let key in this.dateFormat) {\r\n let olddata = fromValue[key];\r\n if (Array.isArray(olddata)) {\r\n if (olddata.length > 0 && olddata[0] && olddata[1]) {\r\n fromValue[key] = [\r\n dayjs(olddata[0]).format(this.dateFormat[key]),\r\n dayjs(olddata[1]).format(this.dateFormat[key]),\r\n ];\r\n }\r\n } else if (olddata) {\r\n fromValue[key] = dayjs(olddata).format(this.dateFormat[key]);\r\n }\r\n }\r\n }\r\n return fromValue;\r\n }\r\n onSearch() {\r\n const { onSearch } = this.props;\r\n const fromValue = this.formatValue();\r\n if (onSearch) {\r\n onSearch(fromValue);\r\n return;\r\n }\r\n }\r\n resetFields() {\r\n this.searchRef.current?.resetFields();\r\n }\r\n resetSearch() {\r\n if (this.props.onReset) {\r\n this.props.onReset();\r\n return;\r\n }\r\n this.searchRef.current?.resetFields();\r\n }\r\n render() {\r\n const {\r\n searchForms = [],\r\n toolButtonPosition,\r\n onSearch,\r\n onReset,\r\n searchFormProps = {},\r\n } = this.props;\r\n let colSpan = 0;\r\n const headerCount = toolButtonPosition == \"right\" ? 1 : 2;\r\n const headerRout = searchForms.length % 4;\r\n if (headerRout == 0) {\r\n colSpan = 18;\r\n } else if (headerRout == 1) {\r\n colSpan = 12;\r\n } else if (headerRout == 2) {\r\n colSpan = 6;\r\n }\r\n return (\r\n <Row gutter={24} wrap>\r\n <div\r\n className={cls(\r\n getLess(styles, \"nsc-headersearch-header\"),\r\n {\r\n [getLess(styles, \"nsc-headersearch-header-padding\")]:\r\n searchForms.length > 3,\r\n },\r\n this.props.className\r\n )}\r\n >\r\n <div className={cls(getLess(styles, \"nsc-headersearch-form\"))}>\r\n <Form\r\n ref={this.searchRef}\r\n labelCol={{}}\r\n wrapperCol={{}}\r\n style={{ width: \"100%\", display: \"flex\", flexWrap: \"wrap\" }}\r\n onFinish={this.onSearch.bind(this)}\r\n // labelAlign={'left'}\r\n {...searchFormProps}\r\n >\r\n {searchForms.map((item: any, index: any) => {\r\n const itemProps = item.props || {};\r\n let display = \"block\";\r\n if (itemProps.format || itemProps.valueFormat) {\r\n this.dateFormat[item.name] = itemProps.format || itemProps.valueFormat;\r\n }\r\n if (index > headerCount && !this.state.expand) {\r\n display = \"none\";\r\n //return\r\n }\r\n let allowChars = item?.props?.allowChars || false;\r\n let props = { ...itemProps };\r\n let searchDisabled =\r\n props.searchDisabled === true ? true : false;\r\n delete props.searchDisabled;\r\n if (!item.type || item.type == \"Input\") {\r\n props.allowChars = true;\r\n } else {\r\n delete props.allowChars;\r\n }\r\n let defaultItem = {\r\n label: item.label,\r\n name: item.name,\r\n allowChars: allowChars,\r\n rules: item.rules,\r\n componentName: item.type ? item.type : \"Input\",\r\n } as any;\r\n if (item.labelCol) {\r\n defaultItem = { ...defaultItem, labelCol: item.labelCol };\r\n delete item.labelCol;\r\n }\r\n if (item.wrapperCol) {\r\n defaultItem = { ...defaultItem, wrapperCol: item.wrapperCol };\r\n delete item.wrapperCol;\r\n }\r\n let placeholder: any =\r\n item.type == \"Select\"\r\n ? `请选择${item.label}`\r\n : `请输入${item.label}`;\r\n if (item.type == \"RangePicker\") {\r\n placeholder = [\"开始时间\", \"结束时间\"];\r\n }\r\n return (\r\n <Col\r\n md={{ span: 12 }}\r\n sm={{ span: 24 }}\r\n lg={{ span: 6 }}\r\n key={index}\r\n style={{ paddingRight: 0, display: display }}\r\n >\r\n <Form.Item {...defaultItem}>\r\n {getNode(item.type, {\r\n placeholder: placeholder,\r\n style: { width: \"100%\" },\r\n ...props,\r\n disabled: searchDisabled,\r\n })}\r\n </Form.Item>\r\n </Col>\r\n );\r\n })}\r\n <Col\r\n md={{ span: 12 }}\r\n sm={{ span: 24 }}\r\n lg={{ span: toolButtonPosition == \"right\" ? 12 : 6 }}\r\n style={{ paddingRight: 0 }}\r\n offset={\r\n (this.state.expand || searchForms.length < 4) &&\r\n searchForms.length > 1\r\n ? colSpan\r\n : 0\r\n }\r\n >\r\n <div\r\n className={cls(\r\n getLess(styles, \"nsc-headersearch-search-buttons\"),\r\n {\r\n [getLess(styles, \"nsc-headersearch-search-buttons-flex\")]:\r\n searchForms.length > 1,\r\n }\r\n )}\r\n style={{ marginTop: 0 }}\r\n >\r\n <div\r\n className={cls({\r\n [getLess(styles, \"nsc-headersearch-button-reverse\")]:\r\n this.props.buttonRevers == true,\r\n })}\r\n >\r\n <Button\r\n type={\"primary\"}\r\n // onClick={this.onSearch.bind(this)}\r\n icon={<SearchOutlined />}\r\n style={{ marginLeft: 0 }}\r\n htmlType=\"submit\"\r\n >\r\n 查询\r\n </Button>\r\n {searchForms.length > 1 && (\r\n <Button\r\n // type={\"primary\"}\r\n onClick={this.resetSearch.bind(this)}\r\n icon={<ReloadOutlined />}\r\n >\r\n 重置\r\n </Button>\r\n )}\r\n </div>\r\n {searchForms.length > 3 && (\r\n <a\r\n className={getLess(\r\n styles,\r\n \"nsc-headersearch-expand-style\"\r\n )}\r\n onClick={() => {\r\n const { expand } = this.state;\r\n this.setState({\r\n expand: !expand,\r\n });\r\n }}\r\n >\r\n {this.state.expand ? \"收起\" : \"展开\"}\r\n {this.state.expand ? <UpOutlined /> : <DownOutlined />}\r\n </a>\r\n )}\r\n </div>\r\n </Col>\r\n </Form>\r\n </div>\r\n </div>\r\n </Row>\r\n );\r\n }\r\n}\r\nexport default HeaderSearch;\r\n"],"mappings":";;;;;;AAAA,OAAOA,KAAK,IAAIC,aAAa,QAAmB,OAAO;AACvD,OAAOC,IAAI,MAAM,iBAAiB;AAClC,OAAOC,MAAM,MAAM,mBAAmB;AACtC,OAAOC,GAAG,MAAM,YAAY;AAC5B,OAAO,cAAc;AACrB,OAAOC,GAAG,MAAM,qBAAqB;AACrC,OAAOC,GAAG,MAAM,qBAAqB;AACrC,SAASC,UAAU,QAAQ,mBAAmB;AAC9C,SACEC,YAAY,EACZC,UAAU,EACVC,cAAc,EACdC,cAAc,QACT,mBAAmB;AAC1B,SAASC,OAAO,EAAEC,OAAO,QAAQ,aAAa;AAC9C,OAAOC,KAAK,MAAM,OAAO;AACzB,MAAMC,MAAM,GAAG,IAAI;AAmBnB,MAAMC,YAAY,SAASf,aAAa,CAAmB;EAAAgB,YAAA;IAAA,SAAAC,SAAA;IAAAC,eAAA,iCAC7CnB,KAAK,CAACoB,SAAS,CAAM,CAAC;IAAAD,eAAA,qBACrB,CAAC,CAAC;IAAAA,eAAA,gBACP;MAAEE,MAAM,EAAE;IAAM,CAAC;EAAA;EACzBC,eAAeA,CAACC,MAAM,EAAEC,QAAQ,EAAE;IAAA,IAAAC,qBAAA;IAChC,IAAIC,SAAS,GAAAC,aAAA,KAAQJ,MAAM,CAAE;IAC7B,IAAI,CAAChB,UAAU,CAAC,IAAI,CAACqB,UAAU,CAAC,EAAE;MAChC,KAAK,IAAIC,GAAG,IAAI,IAAI,CAACD,UAAU,EAAE;QAC/B,IAAIE,KAAK,GAAGJ,SAAS,CAACG,GAAG,CAAC;QAC1B,IAAI,OAAOC,KAAK,KAAK,QAAQ,EAAE;UAC7BJ,SAAS,CAACG,GAAG,CAAC,GAAGf,KAAK,CAACgB,KAAK,EAAE,IAAI,CAACF,UAAU,CAACC,GAAG,CAAC,CAAC;QACrD,CAAC,MAAM,IAAIE,KAAK,CAACC,OAAO,CAACF,KAAK,CAAC,EAAE;UAC/B,IAAI,OAAOA,KAAK,CAAC,CAAC,CAAC,KAAK,QAAQ,EAAE;YAChCJ,SAAS,CAACG,GAAG,CAAC,GAAG,CACff,KAAK,CAACgB,KAAK,CAAC,CAAC,CAAC,EAAE,IAAI,CAACF,UAAU,CAACC,GAAG,CAAC,CAAC,EACrCf,KAAK,CAACgB,KAAK,CAAC,CAAC,CAAC,EAAE,IAAI,CAACF,UAAU,CAACC,GAAG,CAAC,CAAC,CACtC;UACH;QACF;MACF;IACF;IACA,CAAAJ,qBAAA,OAAI,CAACQ,SAAS,CAACC,OAAO,cAAAT,qBAAA,eAAtBA,qBAAA,CAAwBU,cAAc,CAACT,SAAS,CAAC;EACnD;EACAU,eAAeA,CAAA,EAAG;IAChB,MAAMC,SAAS,GAAG,IAAI,CAACC,WAAW,CAAC,CAAC;IACpC,OAAOD,SAAS;EAClB;EACAC,WAAWA,CAAA,EAAG;IAAA,IAAAC,sBAAA;IACZ,MAAMF,SAAS,IAAAE,sBAAA,GAAG,IAAI,CAACN,SAAS,CAACC,OAAO,cAAAK,sBAAA,uBAAtBA,sBAAA,CAAwBC,cAAc,CAAC,CAAC;IAC1D,IAAI,CAACjC,UAAU,CAAC,IAAI,CAACqB,UAAU,CAAC,EAAE;MAChC,KAAK,IAAIC,GAAG,IAAI,IAAI,CAACD,UAAU,EAAE;QAC/B,IAAIa,OAAO,GAAGJ,SAAS,CAACR,GAAG,CAAC;QAC5B,IAAIE,KAAK,CAACC,OAAO,CAACS,OAAO,CAAC,EAAE;UAC1B,IAAIA,OAAO,CAACC,MAAM,GAAG,CAAC,IAAID,OAAO,CAAC,CAAC,CAAC,IAAIA,OAAO,CAAC,CAAC,CAAC,EAAE;YAClDJ,SAAS,CAACR,GAAG,CAAC,GAAG,CACff,KAAK,CAAC2B,OAAO,CAAC,CAAC,CAAC,CAAC,CAACE,MAAM,CAAC,IAAI,CAACf,UAAU,CAACC,GAAG,CAAC,CAAC,EAC9Cf,KAAK,CAAC2B,OAAO,CAAC,CAAC,CAAC,CAAC,CAACE,MAAM,CAAC,IAAI,CAACf,UAAU,CAACC,GAAG,CAAC,CAAC,CAC/C;UACH;QACF,CAAC,MAAM,IAAIY,OAAO,EAAE;UAClBJ,SAAS,CAACR,GAAG,CAAC,GAAGf,KAAK,CAAC2B,OAAO,CAAC,CAACE,MAAM,CAAC,IAAI,CAACf,UAAU,CAACC,GAAG,CAAC,CAAC;QAC9D;MACF;IACF;IACA,OAAOQ,SAAS;EAClB;EACAO,QAAQA,CAAA,EAAG;IACT,MAAM;MAAEA;IAAS,CAAC,GAAG,IAAI,CAACC,KAAK;IAC/B,MAAMR,SAAS,GAAG,IAAI,CAACC,WAAW,CAAC,CAAC;IACpC,IAAIM,QAAQ,EAAE;MACZA,QAAQ,CAACP,SAAS,CAAC;MACnB;IACF;EACF;EACAS,WAAWA,CAAA,EAAG;IAAA,IAAAC,sBAAA;IACZ,CAAAA,sBAAA,OAAI,CAACd,SAAS,CAACC,OAAO,cAAAa,sBAAA,eAAtBA,sBAAA,CAAwBD,WAAW,CAAC,CAAC;EACvC;EACAE,WAAWA,CAAA,EAAG;IAAA,IAAAC,sBAAA;IACZ,IAAI,IAAI,CAACJ,KAAK,CAACK,OAAO,EAAE;MACtB,IAAI,CAACL,KAAK,CAACK,OAAO,CAAC,CAAC;MACpB;IACF;IACA,CAAAD,sBAAA,OAAI,CAAChB,SAAS,CAACC,OAAO,cAAAe,sBAAA,eAAtBA,sBAAA,CAAwBH,WAAW,CAAC,CAAC;EACvC;EACAK,MAAMA,CAAA,EAAG;IACP,MAAM;MACJC,WAAW,GAAG,EAAE;MAChBC,kBAAkB;MAClBT,QAAQ;MACRM,OAAO;MACPI,eAAe,GAAG,CAAC;IACrB,CAAC,GAAG,IAAI,CAACT,KAAK;IACd,IAAIU,OAAO,GAAG,CAAC;IACf,MAAMC,WAAW,GAAGH,kBAAkB,IAAI,OAAO,GAAG,CAAC,GAAG,CAAC;IACzD,MAAMI,UAAU,GAAGL,WAAW,CAACV,MAAM,GAAG,CAAC;IACzC,IAAIe,UAAU,IAAI,CAAC,EAAE;MACnBF,OAAO,GAAG,EAAE;IACd,CAAC,MAAM,IAAIE,UAAU,IAAI,CAAC,EAAE;MAC1BF,OAAO,GAAG,EAAE;IACd,CAAC,MAAM,IAAIE,UAAU,IAAI,CAAC,EAAE;MAC1BF,OAAO,GAAG,CAAC;IACb;IACA,oBACEvD,KAAA,CAAA0D,aAAA,CAACpD,GAAG;MAACqD,MAAM,EAAE,EAAG;MAACC,IAAI;IAAA,gBACnB5D,KAAA,CAAA0D,aAAA;MACEG,SAAS,EAAEzD,GAAG,CACZQ,OAAO,CAACG,MAAM,EAAE,yBAAyB,CAAC,EAC1C;QACE,CAACH,OAAO,CAACG,MAAM,EAAE,iCAAiC,CAAC,GACjDqC,WAAW,CAACV,MAAM,GAAG;MACzB,CAAC,EACD,IAAI,CAACG,KAAK,CAACgB,SACb;IAAE,gBAEF7D,KAAA,CAAA0D,aAAA;MAAKG,SAAS,EAAEzD,GAAG,CAACQ,OAAO,CAACG,MAAM,EAAE,uBAAuB,CAAC;IAAE,gBAC5Df,KAAA,CAAA0D,aAAA,CAACxD,IAAI,EAAA4D,QAAA;MACHC,GAAG,EAAE,IAAI,CAAC9B,SAAU;MACpB+B,QAAQ,EAAE,CAAC,CAAE;MACbC,UAAU,EAAE,CAAC,CAAE;MACfC,KAAK,EAAE;QAAEC,KAAK,EAAE,MAAM;QAAEC,OAAO,EAAE,MAAM;QAAEC,QAAQ,EAAE;MAAO,CAAE;MAC5DC,QAAQ,EAAE,IAAI,CAAC1B,QAAQ,CAAC2B,IAAI,CAAC,IAAI;MACjC;IAAA,GACIjB,eAAe,GAElBF,WAAW,CAACoB,GAAG,CAAC,CAACC,IAAS,EAAEC,KAAU,KAAK;MAAA,IAAAC,WAAA;MAC1C,MAAMC,SAAS,GAAGH,IAAI,CAAC5B,KAAK,IAAI,CAAC,CAAC;MAClC,IAAIuB,OAAO,GAAG,OAAO;MACrB,IAAIQ,SAAS,CAACjC,MAAM,IAAIiC,SAAS,CAACC,WAAW,EAAE;QAC7C,IAAI,CAACjD,UAAU,CAAC6C,IAAI,CAACK,IAAI,CAAC,GAAGF,SAAS,CAACjC,MAAM,IAAIiC,SAAS,CAACC,WAAW;MACxE;MACA,IAAIH,KAAK,GAAGlB,WAAW,IAAI,CAAC,IAAI,CAACuB,KAAK,CAAC1D,MAAM,EAAE;QAC7C+C,OAAO,GAAG,MAAM;QAChB;MACF;MACA,IAAIY,UAAU,GAAG,CAAAP,IAAI,aAAJA,IAAI,gBAAAE,WAAA,GAAJF,IAAI,CAAE5B,KAAK,cAAA8B,WAAA,uBAAXA,WAAA,CAAaK,UAAU,KAAI,KAAK;MACjD,IAAInC,KAAK,GAAAlB,aAAA,KAAQiD,SAAS,CAAE;MAC5B,IAAIK,cAAc,GAChBpC,KAAK,CAACoC,cAAc,KAAK,IAAI,GAAG,IAAI,GAAG,KAAK;MAC9C,OAAOpC,KAAK,CAACoC,cAAc;MAC3B,IAAI,CAACR,IAAI,CAACS,IAAI,IAAIT,IAAI,CAACS,IAAI,IAAI,OAAO,EAAE;QACtCrC,KAAK,CAACmC,UAAU,GAAG,IAAI;MACzB,CAAC,MAAM;QACL,OAAOnC,KAAK,CAACmC,UAAU;MACzB;MACA,IAAIG,WAAW,GAAG;QAChBC,KAAK,EAAEX,IAAI,CAACW,KAAK;QACjBN,IAAI,EAAEL,IAAI,CAACK,IAAI;QACfE,UAAU,EAAEA,UAAU;QACtBK,KAAK,EAAEZ,IAAI,CAACY,KAAK;QACjBC,aAAa,EAAEb,IAAI,CAACS,IAAI,GAAGT,IAAI,CAACS,IAAI,GAAG;MACzC,CAAQ;MACR,IAAIT,IAAI,CAACT,QAAQ,EAAE;QACjBmB,WAAW,GAAAxD,aAAA,CAAAA,aAAA,KAAQwD,WAAW;UAAEnB,QAAQ,EAAES,IAAI,CAACT;QAAQ,EAAE;QACzD,OAAOS,IAAI,CAACT,QAAQ;MACtB;MACA,IAAIS,IAAI,CAACR,UAAU,EAAE;QACnBkB,WAAW,GAAAxD,aAAA,CAAAA,aAAA,KAAQwD,WAAW;UAAElB,UAAU,EAAEQ,IAAI,CAACR;QAAU,EAAE;QAC7D,OAAOQ,IAAI,CAACR,UAAU;MACxB;MACA,IAAIsB,WAAgB,GAClBd,IAAI,CAACS,IAAI,IAAI,QAAQ,wBAAAM,MAAA,CACXf,IAAI,CAACW,KAAK,yBAAAI,MAAA,CACVf,IAAI,CAACW,KAAK,CAAE;MACxB,IAAIX,IAAI,CAACS,IAAI,IAAI,aAAa,EAAE;QAC9BK,WAAW,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC;MAChC;MACA,oBACEvF,KAAA,CAAA0D,aAAA,CAACrD,GAAG;QACFoF,EAAE,EAAE;UAAEC,IAAI,EAAE;QAAG,CAAE;QACjBC,EAAE,EAAE;UAAED,IAAI,EAAE;QAAG,CAAE;QACjBE,EAAE,EAAE;UAAEF,IAAI,EAAE;QAAE,CAAE;QAChB7D,GAAG,EAAE6C,KAAM;QACXR,KAAK,EAAE;UAAE2B,YAAY,EAAE,CAAC;UAAEzB,OAAO,EAAEA;QAAQ;MAAE,gBAE7CpE,KAAA,CAAA0D,aAAA,CAACxD,IAAI,CAAC4F,IAAI,EAAKX,WAAW,EACvBtE,OAAO,CAAC4D,IAAI,CAACS,IAAI,EAAAvD,aAAA,CAAAA,aAAA;QAChB4D,WAAW,EAAEA,WAAW;QACxBrB,KAAK,EAAE;UAAEC,KAAK,EAAE;QAAO;MAAC,GACrBtB,KAAK;QACRkD,QAAQ,EAAEd;MAAc,EACzB,CACQ,CACR,CAAC;IAEV,CAAC,CAAC,eACFjF,KAAA,CAAA0D,aAAA,CAACrD,GAAG;MACFoF,EAAE,EAAE;QAAEC,IAAI,EAAE;MAAG,CAAE;MACjBC,EAAE,EAAE;QAAED,IAAI,EAAE;MAAG,CAAE;MACjBE,EAAE,EAAE;QAAEF,IAAI,EAAErC,kBAAkB,IAAI,OAAO,GAAG,EAAE,GAAG;MAAE,CAAE;MACrDa,KAAK,EAAE;QAAE2B,YAAY,EAAE;MAAE,CAAE;MAC3BG,MAAM,EACJ,CAAC,IAAI,CAACjB,KAAK,CAAC1D,MAAM,IAAI+B,WAAW,CAACV,MAAM,GAAG,CAAC,KAC1CU,WAAW,CAACV,MAAM,GAAG,CAAC,GACpBa,OAAO,GACP;IACL,gBAEDvD,KAAA,CAAA0D,aAAA;MACEG,SAAS,EAAEzD,GAAG,CACZQ,OAAO,CAACG,MAAM,EAAE,iCAAiC,CAAC,EAClD;QACE,CAACH,OAAO,CAACG,MAAM,EAAE,sCAAsC,CAAC,GACtDqC,WAAW,CAACV,MAAM,GAAG;MACzB,CACF,CAAE;MACFwB,KAAK,EAAE;QAAE+B,SAAS,EAAE;MAAE;IAAE,gBAExBjG,KAAA,CAAA0D,aAAA;MACEG,SAAS,EAAEzD,GAAG,CAAC;QACb,CAACQ,OAAO,CAACG,MAAM,EAAE,iCAAiC,CAAC,GACjD,IAAI,CAAC8B,KAAK,CAACqD,YAAY,IAAI;MAC/B,CAAC;IAAE,gBAEHlG,KAAA,CAAA0D,aAAA,CAACvD,MAAM;MACL+E,IAAI,EAAE;MACN;MAAA;MACAiB,IAAI,eAAEnG,KAAA,CAAA0D,aAAA,CAAC/C,cAAc,MAAE,CAAE;MACzBuD,KAAK,EAAE;QAAEkC,UAAU,EAAE;MAAE,CAAE;MACzBC,QAAQ,EAAC;IAAQ,GAClB,cAEO,CAAC,EACRjD,WAAW,CAACV,MAAM,GAAG,CAAC,iBACrB1C,KAAA,CAAA0D,aAAA,CAACvD;IACC;IAAA;MACAmG,OAAO,EAAE,IAAI,CAACtD,WAAW,CAACuB,IAAI,CAAC,IAAI,CAAE;MACrC4B,IAAI,eAAEnG,KAAA,CAAA0D,aAAA,CAAChD,cAAc,MAAE;IAAE,GAC1B,cAEO,CAEP,CAAC,EACL0C,WAAW,CAACV,MAAM,GAAG,CAAC,iBACrB1C,KAAA,CAAA0D,aAAA;MACEG,SAAS,EAAEjD,OAAO,CAChBG,MAAM,EACN,+BACF,CAAE;MACFuF,OAAO,EAAEA,CAAA,KAAM;QACb,MAAM;UAAEjF;QAAO,CAAC,GAAG,IAAI,CAAC0D,KAAK;QAC7B,IAAI,CAACwB,QAAQ,CAAC;UACZlF,MAAM,EAAE,CAACA;QACX,CAAC,CAAC;MACJ;IAAE,GAED,IAAI,CAAC0D,KAAK,CAAC1D,MAAM,GAAG,IAAI,GAAG,IAAI,EAC/B,IAAI,CAAC0D,KAAK,CAAC1D,MAAM,gBAAGrB,KAAA,CAAA0D,aAAA,CAACjD,UAAU,MAAE,CAAC,gBAAGT,KAAA,CAAA0D,aAAA,CAAClD,YAAY,MAAE,CACpD,CAEF,CACF,CACD,CACH,CACF,CACF,CAAC;EAEV;AACF;AACA,eAAeQ,YAAY"}
|
|
@@ -8,6 +8,15 @@ interface IProps {
|
|
|
8
8
|
published?: boolean;
|
|
9
9
|
instanceRef?: any;
|
|
10
10
|
tabParams?: any;
|
|
11
|
+
onCallBacks?: {
|
|
12
|
+
treeSelectCallBack?: any;
|
|
13
|
+
onQueryCallBack?: any;
|
|
14
|
+
onSumbitCallBack?: any;
|
|
15
|
+
onDeleteCallBack?: any;
|
|
16
|
+
onEditorCallBack?: any;
|
|
17
|
+
onAddCallBack?: any;
|
|
18
|
+
onSearchCallBack?: any;
|
|
19
|
+
};
|
|
11
20
|
}
|
|
12
21
|
export default class SettingTable extends React.Component<IProps, any> {
|
|
13
22
|
state: {
|
|
@@ -25,6 +34,8 @@ export default class SettingTable extends React.Component<IProps, any> {
|
|
|
25
34
|
componentDidUpdate(prevProps: Readonly<IProps>, prevState: Readonly<any>, snapshot?: any): void;
|
|
26
35
|
initData: (res: any) => void;
|
|
27
36
|
getData(): void;
|
|
37
|
+
getSearchValues(): any;
|
|
38
|
+
tableLoad(params: any, requestConfig?: {}): void;
|
|
28
39
|
render(): React.JSX.Element;
|
|
29
40
|
}
|
|
30
41
|
export {};
|
|
@@ -18,9 +18,9 @@ import NscFile from "nsc-file";
|
|
|
18
18
|
import NscRequest from "nsc-request";
|
|
19
19
|
import * as NscUtils from "@bj-nsc/functions";
|
|
20
20
|
import cls from "classnames";
|
|
21
|
-
import queryString from
|
|
22
|
-
import { getLocalStore } from
|
|
23
|
-
import dayjs from
|
|
21
|
+
import queryString from "query-string";
|
|
22
|
+
import { getLocalStore } from "@bj-nsc/functions";
|
|
23
|
+
import dayjs from "dayjs";
|
|
24
24
|
// import { history } from 'umi'
|
|
25
25
|
// import { getConfigData } from '../services';
|
|
26
26
|
|
|
@@ -154,7 +154,7 @@ const jumpPage = (params, type) => {
|
|
|
154
154
|
//@ts-ignore
|
|
155
155
|
if (window.__POWERED_BY_QIANKUN__) {
|
|
156
156
|
const data = {
|
|
157
|
-
title: title ||
|
|
157
|
+
title: title || "新标签",
|
|
158
158
|
serviceName: serviceName,
|
|
159
159
|
//配置的微应用名称
|
|
160
160
|
servicePath: servicePath,
|
|
@@ -166,18 +166,18 @@ const jumpPage = (params, type) => {
|
|
|
166
166
|
openType: openType ? openType : 4 //打开方式 4位微前端, 3为iframe ,默认 3
|
|
167
167
|
};
|
|
168
168
|
window.parent.postMessage({
|
|
169
|
-
eventType: type ? type :
|
|
170
|
-
serviceName: serviceName ? serviceName :
|
|
169
|
+
eventType: type ? type : "addTab",
|
|
170
|
+
serviceName: serviceName ? serviceName : "setting-web",
|
|
171
171
|
payload: type ? params : data
|
|
172
172
|
}, window.location.origin);
|
|
173
173
|
} else {
|
|
174
|
-
window.history.pushState({},
|
|
174
|
+
window.history.pushState({}, "", path);
|
|
175
175
|
window.history.go();
|
|
176
176
|
}
|
|
177
177
|
};
|
|
178
178
|
const getProject = () => {
|
|
179
179
|
const project = getLocalStore({
|
|
180
|
-
name:
|
|
180
|
+
name: "nsc-home-project"
|
|
181
181
|
}) || {};
|
|
182
182
|
return project;
|
|
183
183
|
};
|
|
@@ -205,8 +205,8 @@ export default class SettingTable extends React.Component {
|
|
|
205
205
|
otherProps,
|
|
206
206
|
pageProps
|
|
207
207
|
} = this.state;
|
|
208
|
-
if (pageProps.showSearch !== false && otherProps.defaultSearch && otherProps.tableDataResource ==
|
|
209
|
-
let func = new Function(
|
|
208
|
+
if (pageProps.showSearch !== false && otherProps.defaultSearch && otherProps.tableDataResource == "url") {
|
|
209
|
+
let func = new Function("Utils,eventOption", otherProps.defaultSearch);
|
|
210
210
|
const params = func(defaulUtil, {
|
|
211
211
|
pageRef: this.pageRef
|
|
212
212
|
});
|
|
@@ -260,7 +260,7 @@ export default class SettingTable extends React.Component {
|
|
|
260
260
|
if (published == false) {
|
|
261
261
|
page_props.permission = false;
|
|
262
262
|
}
|
|
263
|
-
if (page_props.showSearch !== false && other_props !== null && other_props !== void 0 && other_props.defaultSearch && (other_props === null || other_props === void 0 ? void 0 : other_props.tableDataResource) ==
|
|
263
|
+
if (page_props.showSearch !== false && other_props !== null && other_props !== void 0 && other_props.defaultSearch && (other_props === null || other_props === void 0 ? void 0 : other_props.tableDataResource) == "url") {
|
|
264
264
|
table_props.store.autoLoad = false;
|
|
265
265
|
}
|
|
266
266
|
if (tabParams) {
|
|
@@ -339,6 +339,17 @@ export default class SettingTable extends React.Component {
|
|
|
339
339
|
});
|
|
340
340
|
}
|
|
341
341
|
}
|
|
342
|
+
// onSearch() {}
|
|
343
|
+
getSearchValues() {
|
|
344
|
+
var _this$pageRef$current3;
|
|
345
|
+
const value = (_this$pageRef$current3 = this.pageRef.current) === null || _this$pageRef$current3 === void 0 ? void 0 : _this$pageRef$current3.getSearchValues();
|
|
346
|
+
return value;
|
|
347
|
+
}
|
|
348
|
+
tableLoad(params) {
|
|
349
|
+
var _this$pageRef$current4;
|
|
350
|
+
let requestConfig = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};
|
|
351
|
+
(_this$pageRef$current4 = this.pageRef.current) === null || _this$pageRef$current4 === void 0 || _this$pageRef$current4.tableLoad(params, requestConfig);
|
|
352
|
+
}
|
|
342
353
|
render() {
|
|
343
354
|
const {
|
|
344
355
|
className,
|
|
@@ -385,6 +396,41 @@ export default class SettingTable extends React.Component {
|
|
|
385
396
|
return getProject();
|
|
386
397
|
}
|
|
387
398
|
};
|
|
399
|
+
const {
|
|
400
|
+
children
|
|
401
|
+
} = this.props;
|
|
402
|
+
let codeSelfButtons = [];
|
|
403
|
+
let codecolumnButtons = [];
|
|
404
|
+
if (Array.isArray(children)) {
|
|
405
|
+
children.map(item => {
|
|
406
|
+
if (Array.isArray(item)) {
|
|
407
|
+
item.map(child => {
|
|
408
|
+
var _child$props, _child$props2;
|
|
409
|
+
if ((child === null || child === void 0 || (_child$props = child.props) === null || _child$props === void 0 ? void 0 : _child$props.pageType) == "toolButton") {
|
|
410
|
+
codeSelfButtons.push(child);
|
|
411
|
+
} else if ((child === null || child === void 0 || (_child$props2 = child.props) === null || _child$props2 === void 0 ? void 0 : _child$props2.pageType) == "columnButton") {
|
|
412
|
+
codecolumnButtons.push(child);
|
|
413
|
+
}
|
|
414
|
+
});
|
|
415
|
+
} else {
|
|
416
|
+
var _item$props, _item$props2;
|
|
417
|
+
if ((item === null || item === void 0 || (_item$props = item.props) === null || _item$props === void 0 ? void 0 : _item$props.pageType) == "toolButton") {
|
|
418
|
+
codeSelfButtons.push(item);
|
|
419
|
+
} else if ((item === null || item === void 0 || (_item$props2 = item.props) === null || _item$props2 === void 0 ? void 0 : _item$props2.pageType) == "columnButton") {
|
|
420
|
+
codecolumnButtons.push(item);
|
|
421
|
+
}
|
|
422
|
+
}
|
|
423
|
+
});
|
|
424
|
+
} else if (children) {
|
|
425
|
+
const {
|
|
426
|
+
props
|
|
427
|
+
} = children;
|
|
428
|
+
if ((props === null || props === void 0 ? void 0 : props.pageType) == "toolButton") {
|
|
429
|
+
codeSelfButtons.push(children);
|
|
430
|
+
} else if ((props === null || props === void 0 ? void 0 : props.pageType) == "columnButton") {
|
|
431
|
+
codecolumnButtons.push(children);
|
|
432
|
+
}
|
|
433
|
+
}
|
|
388
434
|
return /*#__PURE__*/React.createElement("div", {
|
|
389
435
|
className: cls("nsc-framework-tablepage", className)
|
|
390
436
|
}, pageLoading ? /*#__PURE__*/React.createElement("div", {
|
|
@@ -402,25 +448,40 @@ export default class SettingTable extends React.Component {
|
|
|
402
448
|
ref: this.pageRef,
|
|
403
449
|
pageRef: this.pageRef,
|
|
404
450
|
onHideForm: () => {
|
|
405
|
-
var _this$pageRef$
|
|
451
|
+
var _this$pageRef$current5;
|
|
406
452
|
this.setState({
|
|
407
453
|
pageProps: _objectSpread(_objectSpread({}, pageProps), {}, {
|
|
408
454
|
columns: defaultColumns
|
|
409
455
|
})
|
|
410
456
|
});
|
|
411
|
-
(_this$pageRef$
|
|
457
|
+
(_this$pageRef$current5 = this.pageRef.current) === null || _this$pageRef$current5 === void 0 || _this$pageRef$current5.hideForm();
|
|
412
458
|
},
|
|
413
459
|
funcs: _objectSpread(_objectSpread({}, deaultFuncs), funcs),
|
|
414
|
-
initData: this.initData
|
|
460
|
+
initData: this.initData,
|
|
461
|
+
onCallBacks: {
|
|
462
|
+
onQueryCallBack: _ref3 => {
|
|
463
|
+
var _this$props$onCallBac;
|
|
464
|
+
let {
|
|
465
|
+
params
|
|
466
|
+
} = _ref3;
|
|
467
|
+
(_this$props$onCallBac = this.props.onCallBacks) === null || _this$props$onCallBac === void 0 || _this$props$onCallBac.onQueryCallBack({
|
|
468
|
+
params
|
|
469
|
+
});
|
|
470
|
+
}
|
|
471
|
+
}
|
|
415
472
|
}), renderSelfToolButton({
|
|
416
473
|
selfToolButton,
|
|
417
474
|
pageRef: this.pageRef,
|
|
418
475
|
funcs: _objectSpread(_objectSpread({}, deaultFuncs), funcs)
|
|
476
|
+
}), codeSelfButtons.map(item => {
|
|
477
|
+
return item;
|
|
419
478
|
}), renderSelfColumnButton({
|
|
420
479
|
selfColumnButton,
|
|
421
480
|
pageRef: this.pageRef,
|
|
422
481
|
funcs: _objectSpread(_objectSpread({}, deaultFuncs), funcs)
|
|
482
|
+
}), codecolumnButtons.map(item => {
|
|
483
|
+
return item;
|
|
423
484
|
})));
|
|
424
485
|
}
|
|
425
486
|
}
|
|
426
|
-
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJCYXNlUGFnZSIsIlNwaW4iLCJCdXR0b24iLCJSZWFjdCIsIk5zY0NvbSIsIk5zY0ZpbGUiLCJOc2NSZXF1ZXN0IiwiTnNjVXRpbHMiLCJjbHMiLCJxdWVyeVN0cmluZyIsImdldExvY2FsU3RvcmUiLCJkYXlqcyIsImRlZmF1bFV0aWwiLCJjcmVhdGVFbGVtZW50IiwicmVuZGVyU2VsZlRvb2xCdXR0b24iLCJfcmVmIiwic2VsZlRvb2xCdXR0b24iLCJwYWdlUmVmIiwiZnVuY3MiLCJsZW5ndGgiLCJtYXAiLCJpdGVtIiwiaW5kZXgiLCJwYWdlVHlwZSIsImtleSIsInR5cGUiLCJvbkNsaWNrIiwiZXZlbnRPcHRpb24iLCJmdW5jIiwiRnVuY3Rpb24iLCJjb2RlIiwibmFtZSIsInJlbmRlclNlbGZDb2x1bW5CdXR0b24iLCJfcmVmMiIsInNlbGZDb2x1bW5CdXR0b24iLCJyZWNvcmQiLCJyZWNvcmRTaG93IiwiZ2V0UGFnZURhdGEiLCJwYXJhbXMiLCJnZXQiLCJ4c3NGaWx0ZXIiLCJhdXRvUHJlZml4Iiwic2V0RmllbGREaXNhYmxlZCIsImRhdGEiLCJkaXNhYmxlZCIsImNvbHVtbnMiLCJuZXdDb2x1bW5zIiwib2JqIiwiX29iamVjdFNwcmVhZCIsImRhdGFJbmRleCIsImluZGV4T2YiLCJwcm9wcyIsInB1c2giLCJzZXRGaWVsZFZpc2libGUiLCJ2aXNpYmxlIiwiZWRpdG9yIiwic2V0RmllbGRQcm9wc0RhdGEiLCJwcm9wc0RhdGEiLCJqdW1wUGFnZSIsInBhdGhuYW1lIiwicXVlcnkiLCJpZCIsInRpdGxlIiwic2VydmljZU5hbWUiLCJzZXJ2aWNlUGF0aCIsIm9wZW5UeXBlIiwibmV3UXVlcnkiLCJ1cmxQYXJhbXMiLCJzdHJpbmdpZnkiLCJwYXRoIiwiY29uY2F0Iiwid2luZG93IiwiX19QT1dFUkVEX0JZX1FJQU5LVU5fXyIsInBhcmVudCIsInBvc3RNZXNzYWdlIiwiZXZlbnRUeXBlIiwicGF5bG9hZCIsImxvY2F0aW9uIiwib3JpZ2luIiwiaGlzdG9yeSIsInB1c2hTdGF0ZSIsImdvIiwiZ2V0UHJvamVjdCIsInByb2plY3QiLCJTZXR0aW5nVGFibGUiLCJDb21wb25lbnQiLCJjb25zdHJ1Y3RvciIsImFyZ3VtZW50cyIsIl9kZWZpbmVQcm9wZXJ0eSIsInBhZ2VQcm9wcyIsInRyZWVQcm9wcyIsInN0b3JlIiwidXJsIiwiYXV0b0xvYWQiLCJ0YWJsZVByb3BzIiwicGFnZUxvYWRpbmciLCJkZWZhdWx0Q29sdW1ucyIsIm90aGVyUHJvcHMiLCJjcmVhdGVSZWYiLCJyZXMiLCJzdGF0ZSIsInNob3dTZWFyY2giLCJkZWZhdWx0U2VhcmNoIiwidGFibGVEYXRhUmVzb3VyY2UiLCJzZXRUaW1lb3V0IiwiX3RoaXMkcGFnZVJlZiRjdXJyZW50IiwiX3RoaXMkcGFnZVJlZiRjdXJyZW50MiIsImN1cnJlbnQiLCJ0YWJsZUxvYWQiLCJzZXRTZWFyY2hQYXJhbXMiLCJjb21wb25lbnREaWRNb3VudCIsImdldERhdGEiLCJjb21wb25lbnREaWRVcGRhdGUiLCJwcmV2UHJvcHMiLCJwcmV2U3RhdGUiLCJzbmFwc2hvdCIsInRhYmxlQ29kZSIsInB1Ymxpc2hlZCIsIm1lbnVDb2RlIiwidGFiUGFyYW1zIiwiaXNQdWJsaXNoZWQiLCJ0aGVuIiwiX3BhZ2VfcHJvcHMkcGVybWlzc2lvIiwidGFibGVfcHJvcHMiLCJKU09OIiwicGFyc2UiLCJ0cmVlX3Byb3BzIiwicGFnZV9wcm9wcyIsIm90aGVyX3Byb3BzIiwib3RoZXJQYXJhbXMiLCJwZXJtaXNzaW9uIiwiaGFzIiwiVXRpbHMiLCJwYXJhbUZ1bmMiLCJjb252ZXJUYWJQYXJhbXMiLCJyZXF1ZXN0UGFyYW1zIiwibmV3UmVxdWVzdFBhcmFtcyIsInF1ZXJ5UGFyYW1zIiwiYWRkUGFyYW1zIiwiZWRpdG9yUGFyYW1zIiwiY29udmVyUGFyYW1zIiwib3RoZXIiLCJfb2JqZWN0V2l0aG91dFByb3BlcnRpZXMiLCJfZXhjbHVkZWQiLCJuZXdQYXJhbXMiLCJzZXRTdGF0ZSIsImNvbHVtbkJ1dHRvbnMiLCJ0b29sQnV0dG9ucyIsIl9tZXNzYWdlIiwiZXJyb3IiLCJyZW5kZXIiLCJjbGFzc05hbWUiLCJkZWF1bHRGdW5jcyIsIm5ld0RhdGEiLCJnZXRDdXJyZW50UHJvamVjdCIsInN0eWxlIiwid2lkdGgiLCJoZWlnaHQiLCJzcGlubmluZyIsIl9leHRlbmRzIiwiZm9ybVByb3BzIiwicmVmIiwib25IaWRlRm9ybSIsIl90aGlzJHBhZ2VSZWYkY3VycmVudDMiLCJoaWRlRm9ybSIsImluaXREYXRhIl0sInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL2NvbXBvbmVudHMvcGFnZS9TZXR0aW5nVGFibGUvaW5kZXgudHN4Il0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IGZvcndhcmRSZWYsIHVzZUVmZmVjdCwgdXNlSW1wZXJhdGl2ZUhhbmRsZSwgdXNlU3RhdGUgfSBmcm9tIFwicmVhY3RcIjtcclxuaW1wb3J0IEJhc2VQYWdlIGZyb20gXCIuLi9CYXNlUGFnZVwiO1xyXG5pbXBvcnQgU3BpbiBmcm9tIFwiLi4vLi4vYmFzZS9zcGluXCI7XHJcbmltcG9ydCBCdXR0b24gZnJvbSBcIi4uLy4uL2Jhc2UvYnV0dG9uXCI7XHJcbmltcG9ydCBcIi4vaW5kZXgubGVzc1wiO1xyXG5pbXBvcnQgUmVhY3QgZnJvbSBcInJlYWN0XCI7XHJcbmltcG9ydCAqIGFzIE5zY0NvbSBmcm9tIFwiLi9jb21cIjtcclxuaW1wb3J0IE5zY0ZpbGUgZnJvbSBcIm5zYy1maWxlXCI7XHJcbmltcG9ydCBOc2NSZXF1ZXN0IGZyb20gXCJuc2MtcmVxdWVzdFwiO1xyXG5pbXBvcnQgKiBhcyBOc2NVdGlscyBmcm9tIFwiQGJqLW5zYy9mdW5jdGlvbnNcIjtcclxuaW1wb3J0IGNscyBmcm9tIFwiY2xhc3NuYW1lc1wiO1xyXG5pbXBvcnQgeyBtZXNzYWdlIH0gZnJvbSBcImFudGRcIjtcclxuaW1wb3J0IHF1ZXJ5U3RyaW5nIGZyb20gJ3F1ZXJ5LXN0cmluZydcclxuaW1wb3J0IHsgZ2V0TG9jYWxTdG9yZSB9IGZyb20gJ0Biai1uc2MvZnVuY3Rpb25zJ1xyXG5pbXBvcnQgZGF5anMgZnJvbSAnZGF5anMnXHJcbmltcG9ydCB7IGNvbnZlckZ1bmN0aW9uIH0gZnJvbSBcIi4uLy4uL3V0aWxzXCI7XHJcbi8vIGltcG9ydCB7IGhpc3RvcnkgfSBmcm9tICd1bWknXHJcbi8vIGltcG9ydCB7IGdldENvbmZpZ0RhdGEgfSBmcm9tICcuLi9zZXJ2aWNlcyc7XHJcblxyXG5jb25zdCBkZWZhdWxVdGlsID1cclxuICB7IE5zY0NvbSwgTnNjRmlsZSwgTnNjUmVxdWVzdCwgTnNjVXRpbHMsIGRheWpzLCBjcmVhdGVFbGVtZW50OiBSZWFjdC5jcmVhdGVFbGVtZW50IH0gYXMgYW55XHJcbmNvbnN0IHJlbmRlclNlbGZUb29sQnV0dG9uID0gKHsgc2VsZlRvb2xCdXR0b24sIHBhZ2VSZWYsIGZ1bmNzIH0pID0+IHtcclxuICBpZiAoc2VsZlRvb2xCdXR0b24ubGVuZ3RoID09IDApIHtcclxuICAgIHJldHVybiBudWxsO1xyXG4gIH0gZWxzZSB7XHJcbiAgICByZXR1cm4gc2VsZlRvb2xCdXR0b24ubWFwKChpdGVtOiBhbnksIGluZGV4OiBudW1iZXIpID0+IHtcclxuICAgICAgcmV0dXJuIChcclxuICAgICAgICA8QnV0dG9uXHJcbiAgICAgICAgICBwYWdlVHlwZT1cInRvb2xCdXR0b25cIlxyXG4gICAgICAgICAga2V5PXtpbmRleH1cclxuICAgICAgICAgIHR5cGU9e2l0ZW0udHlwZX1cclxuICAgICAgICAgIG9uQ2xpY2s9eygpID0+IHtcclxuICAgICAgICAgICAgbGV0IGV2ZW50T3B0aW9uID0geyBwYWdlUmVmOiBwYWdlUmVmLCBmdW5jczogZnVuY3MgfTtcclxuICAgICAgICAgICAgY29uc3QgZnVuYyA9IG5ldyBGdW5jdGlvbihcIlV0aWxzLGV2ZW50T3B0aW9uXCIsIGl0ZW0ub25DbGljayk7XHJcbiAgICAgICAgICAgIGZ1bmMoZGVmYXVsVXRpbCwgZXZlbnRPcHRpb24pO1xyXG4gICAgICAgICAgfX1cclxuICAgICAgICAgIGNvZGU9e2l0ZW0uY29kZX1cclxuICAgICAgICA+XHJcbiAgICAgICAgICB7aXRlbS5uYW1lfVxyXG4gICAgICAgIDwvQnV0dG9uPlxyXG4gICAgICApO1xyXG4gICAgfSk7XHJcbiAgfVxyXG59O1xyXG5cclxuY29uc3QgcmVuZGVyU2VsZkNvbHVtbkJ1dHRvbiA9ICh7IHNlbGZDb2x1bW5CdXR0b24sIHBhZ2VSZWYsIGZ1bmNzIH0pID0+IHtcclxuICBpZiAoc2VsZkNvbHVtbkJ1dHRvbi5sZW5ndGggPT0gMCkge1xyXG4gICAgcmV0dXJuIG51bGw7XHJcbiAgfSBlbHNlIHtcclxuICAgIHJldHVybiBzZWxmQ29sdW1uQnV0dG9uLm1hcCgoaXRlbTogYW55LCBpbmRleDogbnVtYmVyKSA9PiB7XHJcbiAgICAgIHJldHVybiAoXHJcbiAgICAgICAgPEJ1dHRvblxyXG4gICAgICAgICAgcGFnZVR5cGU9XCJjb2x1bW5CdXR0b25cIlxyXG4gICAgICAgICAga2V5PXtpbmRleH1cclxuICAgICAgICAgIHR5cGU9e2l0ZW0udHlwZX1cclxuICAgICAgICAgIG9uQ2xpY2s9eyhyZWNvcmQpID0+IHtcclxuICAgICAgICAgICAgbGV0IGV2ZW50T3B0aW9uID0geyBwYWdlUmVmOiBwYWdlUmVmLCByZWNvcmQ6IHJlY29yZCwgZnVuY3M6IGZ1bmNzIH07XHJcbiAgICAgICAgICAgIGNvbnN0IGZ1bmMgPSBuZXcgRnVuY3Rpb24oXCJVdGlscyxldmVudE9wdGlvblwiLCBpdGVtLm9uQ2xpY2spO1xyXG4gICAgICAgICAgICBmdW5jKGRlZmF1bFV0aWwsIGV2ZW50T3B0aW9uKTtcclxuICAgICAgICAgIH19XHJcbiAgICAgICAgICBjb2RlPXtpdGVtLmNvZGV9XHJcbiAgICAgICAgICByZWNvcmRTaG93PXtpdGVtLnJlY29yZFNob3d9XHJcbiAgICAgICAgPlxyXG4gICAgICAgICAge2l0ZW0ubmFtZX1cclxuICAgICAgICA8L0J1dHRvbj5cclxuICAgICAgKTtcclxuICAgIH0pO1xyXG4gIH1cclxufTtcclxuXHJcbmNvbnN0IGdldFBhZ2VEYXRhID0gKHBhcmFtczogYW55KSA9PiB7XHJcbiAgcmV0dXJuIE5zY1JlcXVlc3QuZ2V0KGAvanF1aWNrLXNldHRpbmcvc2V0dGluZy90YWJsZS9pbmZvL2AsIHtcclxuICAgIHBhcmFtcyxcclxuICAgIHhzc0ZpbHRlcjogZmFsc2UsXHJcbiAgICBhdXRvUHJlZml4OiB0cnVlLFxyXG4gIH0pO1xyXG59O1xyXG5cclxuLy/orr7nva7ooajljZXlrZfmrrXlj6ror7tcclxuY29uc3Qgc2V0RmllbGREaXNhYmxlZCA9IChkYXRhOiBBcnJheTxhbnk+LCBrZXksIGRpc2FibGVkKSA9PiB7XHJcbiAgY29uc3QgY29sdW1ucyA9IFsuLi5kYXRhXTtcclxuICBsZXQgbmV3Q29sdW1ucyA9IFtdIGFzIGFueTtcclxuICBjb2x1bW5zLm1hcCgoaXRlbSkgPT4ge1xyXG4gICAgbGV0IG9iaiA9IHsgLi4uaXRlbSB9O1xyXG4gICAgaWYgKGl0ZW0uZGF0YUluZGV4ID09IGtleSB8fCBrZXkuaW5kZXhPZihpdGVtLmRhdGFJbmRleCkgPiAtMSkge1xyXG4gICAgICBsZXQgcHJvcHMgPSBvYmoucHJvcHMgPyB7IC4uLm9iai5wcm9wcyB9IDoge307XHJcbiAgICAgIHByb3BzLmRpc2FibGVkID0gZGlzYWJsZWQ7XHJcbiAgICAgIG9iai5wcm9wcyA9IHByb3BzO1xyXG4gICAgfVxyXG4gICAgbmV3Q29sdW1ucy5wdXNoKG9iaik7XHJcbiAgfSk7XHJcbiAgcmV0dXJuIG5ld0NvbHVtbnM7XHJcbn07XHJcbi8v6K6+572u6KGo5Y2V5a2X5q616ZqQ6JePXHJcbmNvbnN0IHNldEZpZWxkVmlzaWJsZSA9IChkYXRhOiBBcnJheTxhbnk+LCBrZXksIHZpc2libGUpID0+IHtcclxuICBjb25zdCBjb2x1bW5zID0gWy4uLmRhdGFdO1xyXG4gIGxldCBuZXdDb2x1bW5zID0gW10gYXMgYW55O1xyXG4gIGNvbHVtbnMubWFwKChpdGVtKSA9PiB7XHJcbiAgICBsZXQgb2JqID0geyAuLi5pdGVtIH07XHJcbiAgICBpZiAoaXRlbS5kYXRhSW5kZXggPT0ga2V5IHx8IGtleS5pbmRleE9mKGl0ZW0uZGF0YUluZGV4KSA+IC0xKSB7XHJcbiAgICAgIG9iai5lZGl0b3IgPSB2aXNpYmxlO1xyXG4gICAgfVxyXG4gICAgbmV3Q29sdW1ucy5wdXNoKG9iaik7XHJcbiAgfSk7XHJcbiAgcmV0dXJuIG5ld0NvbHVtbnM7XHJcbn07XHJcblxyXG5jb25zdCBzZXRGaWVsZFByb3BzRGF0YSA9IChkYXRhOiBBcnJheTxhbnk+LCBrZXksIHByb3BzRGF0YSkgPT4ge1xyXG4gIGNvbnN0IGNvbHVtbnMgPSBbLi4uZGF0YV07XHJcbiAgbGV0IG5ld0NvbHVtbnMgPSBbXSBhcyBhbnk7XHJcbiAgY29sdW1ucy5tYXAoKGl0ZW0pID0+IHtcclxuICAgIGxldCBvYmogPSB7IC4uLml0ZW0gfTtcclxuICAgIGlmIChpdGVtLmRhdGFJbmRleCA9PSBrZXkpIHtcclxuICAgICAgbGV0IHByb3BzID0gb2JqLnByb3BzID8geyAuLi5vYmoucHJvcHMgfSA6IHt9O1xyXG4gICAgICBwcm9wcy5kYXRhID0gcHJvcHNEYXRhO1xyXG4gICAgICBvYmoucHJvcHMgPSBwcm9wcztcclxuICAgIH1cclxuICAgIG5ld0NvbHVtbnMucHVzaChvYmopO1xyXG4gIH0pO1xyXG4gIHJldHVybiBuZXdDb2x1bW5zO1xyXG59O1xyXG5pbnRlcmZhY2UgSVBhcmFtcyB7XHJcbiAgcGF0aG5hbWU/OiBzdHJpbmc7XHJcbiAgcXVlcnk/OiBhbnk7XHJcbiAgaWQ/OiBzdHJpbmc7XHJcbiAgc2VydmljZU5hbWU/OiBzdHJpbmc7XHJcbiAgdGl0bGU/OiBzdHJpbmc7XHJcbiAgc2VydmljZVBhdGg/OiBzdHJpbmc7XHJcbiAgbWVudUNvZGU/OiBzdHJpbmc7XHJcbiAgb3BlblR5cGU/OiBudW1iZXI7XHJcbn1cclxuY29uc3QganVtcFBhZ2UgPSAocGFyYW1zOiBJUGFyYW1zLCB0eXBlPzogJ2FkZFRhYicgfCAnanVtcE1lbnUnKSA9PiB7XHJcbiAgY29uc3Qge1xyXG4gICAgcGF0aG5hbWUsXHJcbiAgICBxdWVyeSA9IHt9LFxyXG4gICAgaWQsXHJcbiAgICB0aXRsZSxcclxuICAgIHNlcnZpY2VOYW1lLFxyXG4gICAgc2VydmljZVBhdGgsXHJcbiAgICBvcGVuVHlwZSxcclxuICB9ID0gcGFyYW1zO1xyXG4gIGNvbnN0IG5ld1F1ZXJ5ID0geyAuLi5xdWVyeSB9IGFzIGFueTtcclxuICBjb25zdCB1cmxQYXJhbXMgPSBxdWVyeVN0cmluZy5zdHJpbmdpZnkobmV3UXVlcnkpO1xyXG4gIGNvbnN0IHBhdGggPSB1cmxQYXJhbXMgPyBgJHtwYXRobmFtZX0/JHt1cmxQYXJhbXN9YCA6IHBhdGhuYW1lO1xyXG4gIC8vQHRzLWlnbm9yZVxyXG4gIGlmICh3aW5kb3cuX19QT1dFUkVEX0JZX1FJQU5LVU5fXykge1xyXG4gICAgY29uc3QgZGF0YSA9IHtcclxuICAgICAgdGl0bGU6IHRpdGxlIHx8ICfmlrDmoIfnrb4nLFxyXG4gICAgICBzZXJ2aWNlTmFtZTogc2VydmljZU5hbWUsIC8v6YWN572u55qE5b6u5bqU55So5ZCN56ewXHJcbiAgICAgIHNlcnZpY2VQYXRoOiBzZXJ2aWNlUGF0aCwgLy/phY3nva7nmoTlvq7lupTnlKjlhaXlj6PlnLDlnYBcclxuICAgICAgcGF0aDogcGF0aCwgLy/mlrDmoIfnrb7nmoR1cmws5rKh6YWN572uc2VydmljZU5hbWUgcGF0aOS4uuWujOaVtOi3r+W+hFxyXG4gICAgICBpZDogaWQsIC8v6Ieq5a6a5LmJ5ZSv5LiA5YC8XHJcbiAgICAgIG9wZW5UeXBlOiBvcGVuVHlwZSA/IG9wZW5UeXBlIDogNCwgLy/miZPlvIDmlrnlvI8gNOS9jeW+ruWJjeerrywgM+S4umlmcmFtZSAs6buY6K6kIDNcclxuICAgIH07XHJcbiAgICB3aW5kb3cucGFyZW50LnBvc3RNZXNzYWdlKFxyXG4gICAgICB7XHJcbiAgICAgICAgZXZlbnRUeXBlOiB0eXBlID8gdHlwZSA6ICdhZGRUYWInLFxyXG4gICAgICAgIHNlcnZpY2VOYW1lOiBzZXJ2aWNlTmFtZSA/IHNlcnZpY2VOYW1lIDogJ3NldHRpbmctd2ViJyxcclxuICAgICAgICBwYXlsb2FkOiB0eXBlID8gcGFyYW1zIDogZGF0YSxcclxuICAgICAgfSxcclxuICAgICAgd2luZG93LmxvY2F0aW9uLm9yaWdpbixcclxuICAgICk7XHJcbiAgfSBlbHNlIHtcclxuICAgIHdpbmRvdy5oaXN0b3J5LnB1c2hTdGF0ZSh7fSwgJycsIHBhdGgpO1xyXG4gICAgd2luZG93Lmhpc3RvcnkuZ28oKVxyXG4gIH1cclxufTtcclxuY29uc3QgZ2V0UHJvamVjdCA9ICgpID0+IHtcclxuICBjb25zdCBwcm9qZWN0ID0gZ2V0TG9jYWxTdG9yZSh7IG5hbWU6ICduc2MtaG9tZS1wcm9qZWN0JyB9KSB8fCB7fVxyXG4gIHJldHVybiBwcm9qZWN0XHJcbn1cclxuaW50ZXJmYWNlIElQcm9wcyB7XHJcbiAgdGFibGVDb2RlOiBzdHJpbmc7XHJcbiAgY2xhc3NOYW1lPzogYW55O1xyXG4gIG1lbnVDb2RlPzogc3RyaW5nO1xyXG4gIGZ1bmNzPzogYW55XHJcbiAgcHVibGlzaGVkPzogYm9vbGVhblxyXG4gIGluc3RhbmNlUmVmPzogYW55XHJcbiAgdGFiUGFyYW1zPzogYW55XHJcbn1cclxuZXhwb3J0IGRlZmF1bHQgY2xhc3MgU2V0dGluZ1RhYmxlIGV4dGVuZHMgUmVhY3QuQ29tcG9uZW50PElQcm9wcywgYW55PiB7XHJcbiAgc3RhdGUgPSB7XHJcbiAgICBwYWdlUHJvcHM6IHt9IGFzIGFueSxcclxuICAgIHRyZWVQcm9wczogeyBzdG9yZTogeyB1cmw6IFwiXCIsIGF1dG9Mb2FkOiBmYWxzZSB9LCB9IGFzIGFueSxcclxuICAgIHRhYmxlUHJvcHM6IHt9IGFzIGFueSxcclxuICAgIHNlbGZUb29sQnV0dG9uOiBbXSBhcyBhbnksXHJcbiAgICBzZWxmQ29sdW1uQnV0dG9uOiBbXSBhcyBhbnksXHJcbiAgICBwYWdlTG9hZGluZzogdHJ1ZSxcclxuICAgIGRlZmF1bHRDb2x1bW5zOiBbXSBhcyBhbnksXHJcbiAgICBvdGhlclByb3BzOiB7fSBhcyBhbnlcclxuICB9XHJcbiAgcGFnZVJlZiA9IFJlYWN0LmNyZWF0ZVJlZjxhbnk+KCk7XHJcblxyXG5cclxuXHJcbiAgY29tcG9uZW50RGlkTW91bnQoKTogdm9pZCB7XHJcbiAgICB0aGlzLmdldERhdGEoKVxyXG4gIH1cclxuXHJcbiAgY29tcG9uZW50RGlkVXBkYXRlKHByZXZQcm9wczogUmVhZG9ubHk8SVByb3BzPiwgcHJldlN0YXRlOiBSZWFkb25seTxhbnk+LCBzbmFwc2hvdD86IGFueSk6IHZvaWQge1xyXG4gICAgaWYgKHByZXZQcm9wcy50YWJsZUNvZGUgIT0gdGhpcy5wcm9wcy50YWJsZUNvZGUpIHtcclxuICAgICAgdGhpcy5nZXREYXRhKClcclxuICAgIH1cclxuICB9XHJcblxyXG4gIGluaXREYXRhID0gKHJlczogYW55KSA9PiB7XHJcbiAgICBjb25zdCB7IG90aGVyUHJvcHMsIHBhZ2VQcm9wcyB9ID0gdGhpcy5zdGF0ZVxyXG4gICAgaWYgKHBhZ2VQcm9wcy5zaG93U2VhcmNoICE9PSBmYWxzZSAmJiBvdGhlclByb3BzLmRlZmF1bHRTZWFyY2ggJiYgb3RoZXJQcm9wcy50YWJsZURhdGFSZXNvdXJjZSA9PSAndXJsJykge1xyXG4gICAgICBsZXQgZnVuYyA9IG5ldyBGdW5jdGlvbignVXRpbHMsZXZlbnRPcHRpb24nLCBvdGhlclByb3BzLmRlZmF1bHRTZWFyY2gpXHJcbiAgICAgIGNvbnN0IHBhcmFtcyA9IGZ1bmMoZGVmYXVsVXRpbCwgeyBwYWdlUmVmOiB0aGlzLnBhZ2VSZWYgfSlcclxuICAgICAgc2V0VGltZW91dCgoKSA9PiB7XHJcbiAgICAgICAgdGhpcy5wYWdlUmVmLmN1cnJlbnQ/LnRhYmxlTG9hZCh7IC4uLnBhcmFtcyB9KVxyXG4gICAgICAgIHRoaXMucGFnZVJlZi5jdXJyZW50Py5zZXRTZWFyY2hQYXJhbXMoeyAuLi5wYXJhbXMgfSlcclxuICAgICAgfSwgMzAwKS8v55u05o6l6K6+572u77yMcGFnZVJlZuayoee7keWumu+8jOaaguaXtumAmui/h+W7tui/n+WHveaVsOi/m+ihjOino+WGs1xyXG4gICAgfVxyXG4gIH1cclxuICAvLyDojrflj5bmlbDmja5cclxuICBnZXREYXRhKCkge1xyXG4gICAgLy8g5LuOcHJvcHPkuK3ojrflj5Z0YWJsZUNvZGXjgIFwdWJsaXNoZWTjgIFtZW51Q29kZVxyXG4gICAgY29uc3QgeyB0YWJsZUNvZGUsIHB1Ymxpc2hlZCA9IHRydWUsIG1lbnVDb2RlLCB0YWJQYXJhbXMgfSA9IHRoaXMucHJvcHNcclxuICAgIC8vIOWmguaenHRhYmxlQ29kZeWtmOWcqFxyXG4gICAgaWYgKHRhYmxlQ29kZSkge1xyXG4gICAgICAvLyDlrprkuYnlj4LmlbBcclxuICAgICAgbGV0IHBhcmFtcyA9IHsgY29kZTogdGFibGVDb2RlIH0gYXMgYW55XHJcbiAgICAgIC8vIOWmguaenHB1Ymxpc2hlZOS4unRydWVcclxuICAgICAgaWYgKHB1Ymxpc2hlZCkge1xyXG4gICAgICAgIC8vIOiuvue9ruWPguaVsGlzUHVibGlzaGVk5Li6MVxyXG4gICAgICAgIHBhcmFtcy5pc1B1Ymxpc2hlZCA9IDFcclxuICAgICAgfVxyXG4gICAgICAvLyDosIPnlKhnZXRQYWdlRGF0YeaWueazleiOt+WPluaVsOaNrlxyXG4gICAgICBnZXRQYWdlRGF0YSh7IC4uLnBhcmFtcyB9KS50aGVuKChyZXM6IGFueSkgPT4ge1xyXG4gICAgICAgIGlmIChyZXMuY29kZSA9PSAyMDAgJiYgcmVzLmRhdGEpIHtcclxuICAgICAgICAgIGxldCB0YWJsZV9wcm9wcyA9IEpTT04ucGFyc2UocmVzLmRhdGEudGFibGVQcm9wcyB8fCBcInt9XCIpIHx8IHt9O1xyXG4gICAgICAgICAgbGV0IHRyZWVfcHJvcHMgPSBKU09OLnBhcnNlKHJlcy5kYXRhLnRyZWVQcm9wcyB8fCBcInt9XCIpIHx8IHt9O1xyXG4gICAgICAgICAgbGV0IHBhZ2VfcHJvcHMgPSBKU09OLnBhcnNlKHJlcy5kYXRhLnBhZ2VQcm9wcyB8fCBcInt9XCIpIHx8IHt9O1xyXG4gICAgICAgICAgbGV0IG90aGVyX3Byb3BzID0gSlNPTi5wYXJzZShyZXMuZGF0YS5vdGhlclBhcmFtcyB8fCBcInt9XCIpIHx8IHt9O1xyXG4gICAgICAgICAgaWYgKHBhZ2VfcHJvcHMucGVybWlzc2lvbj8uaGFzID09IHRydWUpIHtcclxuICAgICAgICAgICAgcGFnZV9wcm9wcy5wZXJtaXNzaW9uLm1lbnVDb2RlID0gbWVudUNvZGU7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgICBpZiAocHVibGlzaGVkID09IGZhbHNlKSB7XHJcbiAgICAgICAgICAgIHBhZ2VfcHJvcHMucGVybWlzc2lvbiA9IGZhbHNlXHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgICBpZiAocGFnZV9wcm9wcy5zaG93U2VhcmNoICE9PSBmYWxzZSAmJiBvdGhlcl9wcm9wcz8uZGVmYXVsdFNlYXJjaCAmJiBvdGhlcl9wcm9wcz8udGFibGVEYXRhUmVzb3VyY2UgPT0gJ3VybCcpIHtcclxuICAgICAgICAgICAgdGFibGVfcHJvcHMuc3RvcmUuYXV0b0xvYWQgPSBmYWxzZVxyXG4gICAgICAgICAgfVxyXG4gICAgICAgICAgaWYgKHRhYlBhcmFtcykge1xyXG4gICAgICAgICAgICBjb25zdCBVdGlscyA9IGRlZmF1bFV0aWwgfHwge307XHJcbiAgICAgICAgICAgIGxldCBwYXJhbUZ1bmMgPSBuZXcgRnVuY3Rpb24oXCJVdGlsc1wiLCB0YWJQYXJhbXMpO1xyXG4gICAgICAgICAgICBsZXQgY29udmVyVGFiUGFyYW1zID0gcGFyYW1GdW5jKFV0aWxzKTtcclxuICAgICAgICAgICAgaWYgKHBhZ2VfcHJvcHMucmVxdWVzdFBhcmFtcykge1xyXG4gICAgICAgICAgICAgIGxldCB7IHJlcXVlc3RQYXJhbXMgPSB7fSB9ID0gcGFnZV9wcm9wc1xyXG4gICAgICAgICAgICAgIGxldCBuZXdSZXF1ZXN0UGFyYW1zID0geyBxdWVyeVBhcmFtczogbnVsbCwgYWRkUGFyYW1zOiBudWxsLCBlZGl0b3JQYXJhbXM6IG51bGwgfVxyXG4gICAgICAgICAgICAgIGZvciAobGV0IGtleSBpbiBuZXdSZXF1ZXN0UGFyYW1zKSB7XHJcbiAgICAgICAgICAgICAgICBpZiAocmVxdWVzdFBhcmFtc1trZXldKSB7XHJcbiAgICAgICAgICAgICAgICAgIGxldCBmdW5jID0gbmV3IEZ1bmN0aW9uKFwiVXRpbHNcIiwgcmVxdWVzdFBhcmFtc1trZXldKTtcclxuICAgICAgICAgICAgICAgICAgbGV0IGNvbnZlclBhcmFtcyA9IGZ1bmMoVXRpbHMpO1xyXG4gICAgICAgICAgICAgICAgICBjb25zdCB7IGRhdGEsIC4uLm90aGVyIH0gPSBjb252ZXJQYXJhbXNcclxuICAgICAgICAgICAgICAgICAgbGV0IG5ld1BhcmFtcyA9IHsgZGF0YTogeyAuLi5jb252ZXJUYWJQYXJhbXMsIC4uLmRhdGEgfSwgLi4ub3RoZXIsIH1cclxuICAgICAgICAgICAgICAgICAgbmV3UmVxdWVzdFBhcmFtc1trZXldID0gbmV3UGFyYW1zXHJcbiAgICAgICAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgICBuZXdSZXF1ZXN0UGFyYW1zW2tleV0gPSB7IGRhdGE6IHsgLi4uY29udmVyVGFiUGFyYW1zIH0gfVxyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICBwYWdlX3Byb3BzLnJlcXVlc3RQYXJhbXMgPSB7IC4uLm5ld1JlcXVlc3RQYXJhbXMgfVxyXG4gICAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICAgIHBhZ2VfcHJvcHMucmVxdWVzdFBhcmFtcyA9IHtcclxuICAgICAgICAgICAgICAgIHF1ZXJ5UGFyYW1zOiB7IGRhdGE6IHsgLi4uY29udmVyVGFiUGFyYW1zIH0gfSxcclxuICAgICAgICAgICAgICAgIGFkZFBhcmFtczogeyBkYXRhOiB7IC4uLmNvbnZlclRhYlBhcmFtcyB9IH0sXHJcbiAgICAgICAgICAgICAgICBlZGl0b3JQYXJhbXM6IHsgZGF0YTogeyAuLi5jb252ZXJUYWJQYXJhbXMgfSB9XHJcbiAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgICB0aGlzLnNldFN0YXRlKHtcclxuICAgICAgICAgICAgcGFnZVByb3BzOiB7XHJcbiAgICAgICAgICAgICAgLi4ucGFnZV9wcm9wcyxcclxuICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAgdHJlZVByb3BzOiB7XHJcbiAgICAgICAgICAgICAgLi4udHJlZV9wcm9wcyxcclxuICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAgdGFibGVQcm9wczoge1xyXG4gICAgICAgICAgICAgIC4uLnRhYmxlX3Byb3BzLFxyXG4gICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICBvdGhlclByb3BzOiB7IC4uLm90aGVyX3Byb3BzIH0sXHJcbiAgICAgICAgICAgIHNlbGZDb2x1bW5CdXR0b246IEpTT04ucGFyc2UocmVzLmRhdGEuY29sdW1uQnV0dG9ucykgfHwgW10sXHJcbiAgICAgICAgICAgIHNlbGZUb29sQnV0dG9uOiBKU09OLnBhcnNlKHJlcy5kYXRhLnRvb2xCdXR0b25zKSB8fCBbXSxcclxuICAgICAgICAgICAgZGVmYXVsdENvbHVtbnM6IHBhZ2VfcHJvcHMuY29sdW1ucyxcclxuICAgICAgICAgIH0sICgpID0+IHtcclxuICAgICAgICAgICAgdGhpcy5zZXRTdGF0ZSh7XHJcbiAgICAgICAgICAgICAgcGFnZUxvYWRpbmc6IGZhbHNlXHJcbiAgICAgICAgICAgIH0pXHJcbiAgICAgICAgICB9KVxyXG5cclxuICAgICAgICB9IGVsc2UgaWYgKHJlcy5jb2RlID09IDIwMCAmJiByZXMuZGF0YSA9PSBudWxsKSB7XHJcbiAgICAgICAgICBtZXNzYWdlLmVycm9yKFwi5pyq5om+5Yiw6YWN572u5L+h5oGv77yBXCIpO1xyXG4gICAgICAgICAgdGhpcy5zZXRTdGF0ZSh7XHJcbiAgICAgICAgICAgIHBhZ2VMb2FkaW5nOiBmYWxzZVxyXG4gICAgICAgICAgfSlcclxuICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgdGhpcy5zZXRTdGF0ZSh7XHJcbiAgICAgICAgICAgIHBhZ2VMb2FkaW5nOiBmYWxzZVxyXG4gICAgICAgICAgfSlcclxuICAgICAgICB9XHJcbiAgICAgIH0pO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgdGhpcy5zZXRTdGF0ZSh7XHJcbiAgICAgICAgcGFnZUxvYWRpbmc6IGZhbHNlXHJcbiAgICAgIH0pXHJcbiAgICB9XHJcbiAgfVxyXG4gIHJlbmRlcigpIHtcclxuICAgIGNvbnN0IHsgY2xhc3NOYW1lLCBmdW5jcyA9IHt9IH0gPSB0aGlzLnByb3BzO1xyXG4gICAgY29uc3QgeyBwYWdlUHJvcHMsIHRyZWVQcm9wcywgdGFibGVQcm9wcywgc2VsZlRvb2xCdXR0b24sIHNlbGZDb2x1bW5CdXR0b24sIHBhZ2VMb2FkaW5nLCBkZWZhdWx0Q29sdW1ucyB9ID0gdGhpcy5zdGF0ZTtcclxuICAgIGNvbnN0IGRlYXVsdEZ1bmNzID0ge1xyXG4gICAgICBzZXRGaWVsZERpc2FibGVkOiAoa2V5LCBkaXNhYmxlZCkgPT4ge1xyXG4gICAgICAgIGNvbnN0IG5ld0RhdGEgPSBzZXRGaWVsZERpc2FibGVkKFxyXG4gICAgICAgICAgcGFnZVByb3BzLmNvbHVtbnMsXHJcbiAgICAgICAgICBrZXksXHJcbiAgICAgICAgICBkaXNhYmxlZFxyXG4gICAgICAgICk7XHJcbiAgICAgICAgdGhpcy5zZXRTdGF0ZSh7XHJcbiAgICAgICAgICBwYWdlUHJvcHM6IHsgLi4ucGFnZVByb3BzLCBjb2x1bW5zOiBuZXdEYXRhIH0sXHJcbiAgICAgICAgfSlcclxuXHJcbiAgICAgIH0sXHJcbiAgICAgIHNldEZpZWxkVmlzaWJsZTogKGtleSwgZGlzYWJsZWQpID0+IHtcclxuICAgICAgICBjb25zdCBuZXdEYXRhID0gc2V0RmllbGRWaXNpYmxlKHBhZ2VQcm9wcy5jb2x1bW5zLCBrZXksIGRpc2FibGVkKTtcclxuICAgICAgICB0aGlzLnNldFN0YXRlKHtcclxuICAgICAgICAgIHBhZ2VQcm9wczogeyAuLi5wYWdlUHJvcHMsIGNvbHVtbnM6IG5ld0RhdGEgfSxcclxuICAgICAgICB9KVxyXG5cclxuICAgICAgfSxcclxuICAgICAgc2V0RmllbGRQcm9wc0RhdGE6IChrZXksIGRhdGEpID0+IHtcclxuICAgICAgICBjb25zdCBuZXdEYXRhID0gc2V0RmllbGRQcm9wc0RhdGEocGFnZVByb3BzLmNvbHVtbnMsIGtleSwgZGF0YSk7XHJcbiAgICAgICAgdGhpcy5zZXRTdGF0ZSh7XHJcbiAgICAgICAgICBwYWdlUHJvcHM6IHsgLi4ucGFnZVByb3BzLCBjb2x1bW5zOiBuZXdEYXRhIH0sXHJcbiAgICAgICAgfSlcclxuICAgICAgfSxcclxuICAgICAgaGlzdG9yeTogKHBhcmFtcywgdHlwZSkgPT4ge1xyXG4gICAgICAgIGp1bXBQYWdlKHBhcmFtcywgdHlwZSlcclxuICAgICAgfSxcclxuICAgICAgZ2V0Q3VycmVudFByb2plY3Q6ICgpID0+IHtcclxuICAgICAgICByZXR1cm4gZ2V0UHJvamVjdCgpXHJcbiAgICAgIH0sXHJcblxyXG4gICAgfVxyXG4gICAgcmV0dXJuIChcclxuICAgICAgPGRpdiBjbGFzc05hbWU9e2NscyhcIm5zYy1mcmFtZXdvcmstdGFibGVwYWdlXCIsIGNsYXNzTmFtZSl9PlxyXG4gICAgICAgIHtwYWdlTG9hZGluZyA/IChcclxuICAgICAgICAgIDxkaXYgc3R5bGU9e3sgd2lkdGg6IFwiMTAwJVwiLCBoZWlnaHQ6IFwiMTAwJVwiIH19PlxyXG4gICAgICAgICAgICA8U3BpbiBzcGlubmluZz17cGFnZUxvYWRpbmd9PjwvU3Bpbj5cclxuICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICkgOiAoXHJcbiAgICAgICAgICA8QmFzZVBhZ2VcclxuICAgICAgICAgICAgey4uLnBhZ2VQcm9wc31cclxuICAgICAgICAgICAgdHJlZVByb3BzPXt7IC4uLnRyZWVQcm9wcyB9fVxyXG4gICAgICAgICAgICB0YWJsZVByb3BzPXt7IC4uLnRhYmxlUHJvcHMgfX1cclxuICAgICAgICAgICAgZm9ybVByb3BzPXt7fX1cclxuICAgICAgICAgICAgVXRpbHM9e3sgLi4uZGVmYXVsVXRpbCB9fVxyXG4gICAgICAgICAgICByZWY9e3RoaXMucGFnZVJlZn1cclxuICAgICAgICAgICAgcGFnZVJlZj17dGhpcy5wYWdlUmVmfVxyXG4gICAgICAgICAgICBvbkhpZGVGb3JtPXsoKSA9PiB7XHJcbiAgICAgICAgICAgICAgdGhpcy5zZXRTdGF0ZSh7XHJcbiAgICAgICAgICAgICAgICBwYWdlUHJvcHM6IHsgLi4ucGFnZVByb3BzLCBjb2x1bW5zOiBkZWZhdWx0Q29sdW1ucyB9LFxyXG4gICAgICAgICAgICAgIH0pXHJcbiAgICAgICAgICAgICAgdGhpcy5wYWdlUmVmLmN1cnJlbnQ/LmhpZGVGb3JtKCk7XHJcbiAgICAgICAgICAgIH19XHJcbiAgICAgICAgICAgIGZ1bmNzPXt7IC4uLmRlYXVsdEZ1bmNzLCAuLi5mdW5jcyB9fVxyXG4gICAgICAgICAgICBpbml0RGF0YT17dGhpcy5pbml0RGF0YX1cclxuICAgICAgICAgID5cclxuICAgICAgICAgICAge3JlbmRlclNlbGZUb29sQnV0dG9uKHsgc2VsZlRvb2xCdXR0b24sIHBhZ2VSZWY6IHRoaXMucGFnZVJlZiwgZnVuY3M6IHsgLi4uZGVhdWx0RnVuY3MsIC4uLmZ1bmNzIH0gfSl9XHJcbiAgICAgICAgICAgIHtyZW5kZXJTZWxmQ29sdW1uQnV0dG9uKHsgc2VsZkNvbHVtbkJ1dHRvbiwgcGFnZVJlZjogdGhpcy5wYWdlUmVmLCBmdW5jczogeyAuLi5kZWF1bHRGdW5jcywgLi4uZnVuY3MgfSB9KX1cclxuICAgICAgICAgIDwvQmFzZVBhZ2U+XHJcbiAgICAgICAgKVxyXG4gICAgICAgIH1cclxuICAgICAgPC9kaXY+XHJcbiAgICApO1xyXG4gIH1cclxufVxyXG4iXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7QUFDQSxPQUFPQSxRQUFRLE1BQU0sYUFBYTtBQUNsQyxPQUFPQyxJQUFJLE1BQU0saUJBQWlCO0FBQ2xDLE9B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
|
|
487
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJCYXNlUGFnZSIsIlNwaW4iLCJCdXR0b24iLCJSZWFjdCIsIk5zY0NvbSIsIk5zY0ZpbGUiLCJOc2NSZXF1ZXN0IiwiTnNjVXRpbHMiLCJjbHMiLCJxdWVyeVN0cmluZyIsImdldExvY2FsU3RvcmUiLCJkYXlqcyIsImRlZmF1bFV0aWwiLCJjcmVhdGVFbGVtZW50IiwicmVuZGVyU2VsZlRvb2xCdXR0b24iLCJfcmVmIiwic2VsZlRvb2xCdXR0b24iLCJwYWdlUmVmIiwiZnVuY3MiLCJsZW5ndGgiLCJtYXAiLCJpdGVtIiwiaW5kZXgiLCJwYWdlVHlwZSIsImtleSIsInR5cGUiLCJvbkNsaWNrIiwiZXZlbnRPcHRpb24iLCJmdW5jIiwiRnVuY3Rpb24iLCJjb2RlIiwibmFtZSIsInJlbmRlclNlbGZDb2x1bW5CdXR0b24iLCJfcmVmMiIsInNlbGZDb2x1bW5CdXR0b24iLCJyZWNvcmQiLCJyZWNvcmRTaG93IiwiZ2V0UGFnZURhdGEiLCJwYXJhbXMiLCJnZXQiLCJ4c3NGaWx0ZXIiLCJhdXRvUHJlZml4Iiwic2V0RmllbGREaXNhYmxlZCIsImRhdGEiLCJkaXNhYmxlZCIsImNvbHVtbnMiLCJuZXdDb2x1bW5zIiwib2JqIiwiX29iamVjdFNwcmVhZCIsImRhdGFJbmRleCIsImluZGV4T2YiLCJwcm9wcyIsInB1c2giLCJzZXRGaWVsZFZpc2libGUiLCJ2aXNpYmxlIiwiZWRpdG9yIiwic2V0RmllbGRQcm9wc0RhdGEiLCJwcm9wc0RhdGEiLCJqdW1wUGFnZSIsInBhdGhuYW1lIiwicXVlcnkiLCJpZCIsInRpdGxlIiwic2VydmljZU5hbWUiLCJzZXJ2aWNlUGF0aCIsIm9wZW5UeXBlIiwibmV3UXVlcnkiLCJ1cmxQYXJhbXMiLCJzdHJpbmdpZnkiLCJwYXRoIiwiY29uY2F0Iiwid2luZG93IiwiX19QT1dFUkVEX0JZX1FJQU5LVU5fXyIsInBhcmVudCIsInBvc3RNZXNzYWdlIiwiZXZlbnRUeXBlIiwicGF5bG9hZCIsImxvY2F0aW9uIiwib3JpZ2luIiwiaGlzdG9yeSIsInB1c2hTdGF0ZSIsImdvIiwiZ2V0UHJvamVjdCIsInByb2plY3QiLCJTZXR0aW5nVGFibGUiLCJDb21wb25lbnQiLCJjb25zdHJ1Y3RvciIsImFyZ3VtZW50cyIsIl9kZWZpbmVQcm9wZXJ0eSIsInBhZ2VQcm9wcyIsInRyZWVQcm9wcyIsInN0b3JlIiwidXJsIiwiYXV0b0xvYWQiLCJ0YWJsZVByb3BzIiwicGFnZUxvYWRpbmciLCJkZWZhdWx0Q29sdW1ucyIsIm90aGVyUHJvcHMiLCJjcmVhdGVSZWYiLCJyZXMiLCJzdGF0ZSIsInNob3dTZWFyY2giLCJkZWZhdWx0U2VhcmNoIiwidGFibGVEYXRhUmVzb3VyY2UiLCJzZXRUaW1lb3V0IiwiX3RoaXMkcGFnZVJlZiRjdXJyZW50IiwiX3RoaXMkcGFnZVJlZiRjdXJyZW50MiIsImN1cnJlbnQiLCJ0YWJsZUxvYWQiLCJzZXRTZWFyY2hQYXJhbXMiLCJjb21wb25lbnREaWRNb3VudCIsImdldERhdGEiLCJjb21wb25lbnREaWRVcGRhdGUiLCJwcmV2UHJvcHMiLCJwcmV2U3RhdGUiLCJzbmFwc2hvdCIsInRhYmxlQ29kZSIsInB1Ymxpc2hlZCIsIm1lbnVDb2RlIiwidGFiUGFyYW1zIiwiaXNQdWJsaXNoZWQiLCJ0aGVuIiwiX3BhZ2VfcHJvcHMkcGVybWlzc2lvIiwidGFibGVfcHJvcHMiLCJKU09OIiwicGFyc2UiLCJ0cmVlX3Byb3BzIiwicGFnZV9wcm9wcyIsIm90aGVyX3Byb3BzIiwib3RoZXJQYXJhbXMiLCJwZXJtaXNzaW9uIiwiaGFzIiwiVXRpbHMiLCJwYXJhbUZ1bmMiLCJjb252ZXJUYWJQYXJhbXMiLCJyZXF1ZXN0UGFyYW1zIiwibmV3UmVxdWVzdFBhcmFtcyIsInF1ZXJ5UGFyYW1zIiwiYWRkUGFyYW1zIiwiZWRpdG9yUGFyYW1zIiwiY29udmVyUGFyYW1zIiwib3RoZXIiLCJfb2JqZWN0V2l0aG91dFByb3BlcnRpZXMiLCJfZXhjbHVkZWQiLCJuZXdQYXJhbXMiLCJzZXRTdGF0ZSIsImNvbHVtbkJ1dHRvbnMiLCJ0b29sQnV0dG9ucyIsIl9tZXNzYWdlIiwiZXJyb3IiLCJnZXRTZWFyY2hWYWx1ZXMiLCJfdGhpcyRwYWdlUmVmJGN1cnJlbnQzIiwidmFsdWUiLCJfdGhpcyRwYWdlUmVmJGN1cnJlbnQ0IiwicmVxdWVzdENvbmZpZyIsInVuZGVmaW5lZCIsInJlbmRlciIsImNsYXNzTmFtZSIsImRlYXVsdEZ1bmNzIiwibmV3RGF0YSIsImdldEN1cnJlbnRQcm9qZWN0IiwiY2hpbGRyZW4iLCJjb2RlU2VsZkJ1dHRvbnMiLCJjb2RlY29sdW1uQnV0dG9ucyIsIkFycmF5IiwiaXNBcnJheSIsImNoaWxkIiwiX2NoaWxkJHByb3BzIiwiX2NoaWxkJHByb3BzMiIsIl9pdGVtJHByb3BzIiwiX2l0ZW0kcHJvcHMyIiwic3R5bGUiLCJ3aWR0aCIsImhlaWdodCIsInNwaW5uaW5nIiwiX2V4dGVuZHMiLCJmb3JtUHJvcHMiLCJyZWYiLCJvbkhpZGVGb3JtIiwiX3RoaXMkcGFnZVJlZiRjdXJyZW50NSIsImhpZGVGb3JtIiwiaW5pdERhdGEiLCJvbkNhbGxCYWNrcyIsIm9uUXVlcnlDYWxsQmFjayIsIl9yZWYzIiwiX3RoaXMkcHJvcHMkb25DYWxsQmFjIl0sInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL2NvbXBvbmVudHMvcGFnZS9TZXR0aW5nVGFibGUvaW5kZXgudHN4Il0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IGZvcndhcmRSZWYsIHVzZUVmZmVjdCwgdXNlSW1wZXJhdGl2ZUhhbmRsZSwgdXNlU3RhdGUgfSBmcm9tIFwicmVhY3RcIjtcclxuaW1wb3J0IEJhc2VQYWdlIGZyb20gXCIuLi9CYXNlUGFnZVwiO1xyXG5pbXBvcnQgU3BpbiBmcm9tIFwiLi4vLi4vYmFzZS9zcGluXCI7XHJcbmltcG9ydCBCdXR0b24gZnJvbSBcIi4uLy4uL2Jhc2UvYnV0dG9uXCI7XHJcbmltcG9ydCBcIi4vaW5kZXgubGVzc1wiO1xyXG5pbXBvcnQgUmVhY3QgZnJvbSBcInJlYWN0XCI7XHJcbmltcG9ydCAqIGFzIE5zY0NvbSBmcm9tIFwiLi9jb21cIjtcclxuaW1wb3J0IE5zY0ZpbGUgZnJvbSBcIm5zYy1maWxlXCI7XHJcbmltcG9ydCBOc2NSZXF1ZXN0IGZyb20gXCJuc2MtcmVxdWVzdFwiO1xyXG5pbXBvcnQgKiBhcyBOc2NVdGlscyBmcm9tIFwiQGJqLW5zYy9mdW5jdGlvbnNcIjtcclxuaW1wb3J0IGNscyBmcm9tIFwiY2xhc3NuYW1lc1wiO1xyXG5pbXBvcnQgeyBtZXNzYWdlIH0gZnJvbSBcImFudGRcIjtcclxuaW1wb3J0IHF1ZXJ5U3RyaW5nIGZyb20gXCJxdWVyeS1zdHJpbmdcIjtcclxuaW1wb3J0IHsgZ2V0TG9jYWxTdG9yZSB9IGZyb20gXCJAYmotbnNjL2Z1bmN0aW9uc1wiO1xyXG5pbXBvcnQgZGF5anMgZnJvbSBcImRheWpzXCI7XHJcbmltcG9ydCB7IGNvbnZlckZ1bmN0aW9uIH0gZnJvbSBcIi4uLy4uL3V0aWxzXCI7XHJcbi8vIGltcG9ydCB7IGhpc3RvcnkgfSBmcm9tICd1bWknXHJcbi8vIGltcG9ydCB7IGdldENvbmZpZ0RhdGEgfSBmcm9tICcuLi9zZXJ2aWNlcyc7XHJcblxyXG5jb25zdCBkZWZhdWxVdGlsID0ge1xyXG4gIE5zY0NvbSxcclxuICBOc2NGaWxlLFxyXG4gIE5zY1JlcXVlc3QsXHJcbiAgTnNjVXRpbHMsXHJcbiAgZGF5anMsXHJcbiAgY3JlYXRlRWxlbWVudDogUmVhY3QuY3JlYXRlRWxlbWVudCxcclxufSBhcyBhbnk7XHJcbmNvbnN0IHJlbmRlclNlbGZUb29sQnV0dG9uID0gKHsgc2VsZlRvb2xCdXR0b24sIHBhZ2VSZWYsIGZ1bmNzIH0pID0+IHtcclxuICBpZiAoc2VsZlRvb2xCdXR0b24ubGVuZ3RoID09IDApIHtcclxuICAgIHJldHVybiBudWxsO1xyXG4gIH0gZWxzZSB7XHJcbiAgICByZXR1cm4gc2VsZlRvb2xCdXR0b24ubWFwKChpdGVtOiBhbnksIGluZGV4OiBudW1iZXIpID0+IHtcclxuICAgICAgcmV0dXJuIChcclxuICAgICAgICA8QnV0dG9uXHJcbiAgICAgICAgICBwYWdlVHlwZT1cInRvb2xCdXR0b25cIlxyXG4gICAgICAgICAga2V5PXtpbmRleH1cclxuICAgICAgICAgIHR5cGU9e2l0ZW0udHlwZX1cclxuICAgICAgICAgIG9uQ2xpY2s9eygpID0+IHtcclxuICAgICAgICAgICAgbGV0IGV2ZW50T3B0aW9uID0geyBwYWdlUmVmOiBwYWdlUmVmLCBmdW5jczogZnVuY3MgfTtcclxuICAgICAgICAgICAgY29uc3QgZnVuYyA9IG5ldyBGdW5jdGlvbihcIlV0aWxzLGV2ZW50T3B0aW9uXCIsIGl0ZW0ub25DbGljayk7XHJcbiAgICAgICAgICAgIGZ1bmMoZGVmYXVsVXRpbCwgZXZlbnRPcHRpb24pO1xyXG4gICAgICAgICAgfX1cclxuICAgICAgICAgIGNvZGU9e2l0ZW0uY29kZX1cclxuICAgICAgICA+XHJcbiAgICAgICAgICB7aXRlbS5uYW1lfVxyXG4gICAgICAgIDwvQnV0dG9uPlxyXG4gICAgICApO1xyXG4gICAgfSk7XHJcbiAgfVxyXG59O1xyXG5cclxuY29uc3QgcmVuZGVyU2VsZkNvbHVtbkJ1dHRvbiA9ICh7IHNlbGZDb2x1bW5CdXR0b24sIHBhZ2VSZWYsIGZ1bmNzIH0pID0+IHtcclxuICBpZiAoc2VsZkNvbHVtbkJ1dHRvbi5sZW5ndGggPT0gMCkge1xyXG4gICAgcmV0dXJuIG51bGw7XHJcbiAgfSBlbHNlIHtcclxuICAgIHJldHVybiBzZWxmQ29sdW1uQnV0dG9uLm1hcCgoaXRlbTogYW55LCBpbmRleDogbnVtYmVyKSA9PiB7XHJcbiAgICAgIHJldHVybiAoXHJcbiAgICAgICAgPEJ1dHRvblxyXG4gICAgICAgICAgcGFnZVR5cGU9XCJjb2x1bW5CdXR0b25cIlxyXG4gICAgICAgICAga2V5PXtpbmRleH1cclxuICAgICAgICAgIHR5cGU9e2l0ZW0udHlwZX1cclxuICAgICAgICAgIG9uQ2xpY2s9eyhyZWNvcmQpID0+IHtcclxuICAgICAgICAgICAgbGV0IGV2ZW50T3B0aW9uID0ge1xyXG4gICAgICAgICAgICAgIHBhZ2VSZWY6IHBhZ2VSZWYsXHJcbiAgICAgICAgICAgICAgcmVjb3JkOiByZWNvcmQsXHJcbiAgICAgICAgICAgICAgZnVuY3M6IGZ1bmNzLFxyXG4gICAgICAgICAgICB9O1xyXG4gICAgICAgICAgICBjb25zdCBmdW5jID0gbmV3IEZ1bmN0aW9uKFwiVXRpbHMsZXZlbnRPcHRpb25cIiwgaXRlbS5vbkNsaWNrKTtcclxuICAgICAgICAgICAgZnVuYyhkZWZhdWxVdGlsLCBldmVudE9wdGlvbik7XHJcbiAgICAgICAgICB9fVxyXG4gICAgICAgICAgY29kZT17aXRlbS5jb2RlfVxyXG4gICAgICAgICAgcmVjb3JkU2hvdz17aXRlbS5yZWNvcmRTaG93fVxyXG4gICAgICAgID5cclxuICAgICAgICAgIHtpdGVtLm5hbWV9XHJcbiAgICAgICAgPC9CdXR0b24+XHJcbiAgICAgICk7XHJcbiAgICB9KTtcclxuICB9XHJcbn07XHJcblxyXG5jb25zdCBnZXRQYWdlRGF0YSA9IChwYXJhbXM6IGFueSkgPT4ge1xyXG4gIHJldHVybiBOc2NSZXF1ZXN0LmdldChgL2pxdWljay1zZXR0aW5nL3NldHRpbmcvdGFibGUvaW5mby9gLCB7XHJcbiAgICBwYXJhbXMsXHJcbiAgICB4c3NGaWx0ZXI6IGZhbHNlLFxyXG4gICAgYXV0b1ByZWZpeDogdHJ1ZSxcclxuICB9KTtcclxufTtcclxuXHJcbi8v6K6+572u6KGo5Y2V5a2X5q615Y+q6K+7XHJcbmNvbnN0IHNldEZpZWxkRGlzYWJsZWQgPSAoZGF0YTogQXJyYXk8YW55Piwga2V5LCBkaXNhYmxlZCkgPT4ge1xyXG4gIGNvbnN0IGNvbHVtbnMgPSBbLi4uZGF0YV07XHJcbiAgbGV0IG5ld0NvbHVtbnMgPSBbXSBhcyBhbnk7XHJcbiAgY29sdW1ucy5tYXAoKGl0ZW0pID0+IHtcclxuICAgIGxldCBvYmogPSB7IC4uLml0ZW0gfTtcclxuICAgIGlmIChpdGVtLmRhdGFJbmRleCA9PSBrZXkgfHwga2V5LmluZGV4T2YoaXRlbS5kYXRhSW5kZXgpID4gLTEpIHtcclxuICAgICAgbGV0IHByb3BzID0gb2JqLnByb3BzID8geyAuLi5vYmoucHJvcHMgfSA6IHt9O1xyXG4gICAgICBwcm9wcy5kaXNhYmxlZCA9IGRpc2FibGVkO1xyXG4gICAgICBvYmoucHJvcHMgPSBwcm9wcztcclxuICAgIH1cclxuICAgIG5ld0NvbHVtbnMucHVzaChvYmopO1xyXG4gIH0pO1xyXG4gIHJldHVybiBuZXdDb2x1bW5zO1xyXG59O1xyXG4vL+iuvue9ruihqOWNleWtl+autemakOiXj1xyXG5jb25zdCBzZXRGaWVsZFZpc2libGUgPSAoZGF0YTogQXJyYXk8YW55Piwga2V5LCB2aXNpYmxlKSA9PiB7XHJcbiAgY29uc3QgY29sdW1ucyA9IFsuLi5kYXRhXTtcclxuICBsZXQgbmV3Q29sdW1ucyA9IFtdIGFzIGFueTtcclxuICBjb2x1bW5zLm1hcCgoaXRlbSkgPT4ge1xyXG4gICAgbGV0IG9iaiA9IHsgLi4uaXRlbSB9O1xyXG4gICAgaWYgKGl0ZW0uZGF0YUluZGV4ID09IGtleSB8fCBrZXkuaW5kZXhPZihpdGVtLmRhdGFJbmRleCkgPiAtMSkge1xyXG4gICAgICBvYmouZWRpdG9yID0gdmlzaWJsZTtcclxuICAgIH1cclxuICAgIG5ld0NvbHVtbnMucHVzaChvYmopO1xyXG4gIH0pO1xyXG4gIHJldHVybiBuZXdDb2x1bW5zO1xyXG59O1xyXG5cclxuY29uc3Qgc2V0RmllbGRQcm9wc0RhdGEgPSAoZGF0YTogQXJyYXk8YW55Piwga2V5LCBwcm9wc0RhdGEpID0+IHtcclxuICBjb25zdCBjb2x1bW5zID0gWy4uLmRhdGFdO1xyXG4gIGxldCBuZXdDb2x1bW5zID0gW10gYXMgYW55O1xyXG4gIGNvbHVtbnMubWFwKChpdGVtKSA9PiB7XHJcbiAgICBsZXQgb2JqID0geyAuLi5pdGVtIH07XHJcbiAgICBpZiAoaXRlbS5kYXRhSW5kZXggPT0ga2V5KSB7XHJcbiAgICAgIGxldCBwcm9wcyA9IG9iai5wcm9wcyA/IHsgLi4ub2JqLnByb3BzIH0gOiB7fTtcclxuICAgICAgcHJvcHMuZGF0YSA9IHByb3BzRGF0YTtcclxuICAgICAgb2JqLnByb3BzID0gcHJvcHM7XHJcbiAgICB9XHJcbiAgICBuZXdDb2x1bW5zLnB1c2gob2JqKTtcclxuICB9KTtcclxuICByZXR1cm4gbmV3Q29sdW1ucztcclxufTtcclxuaW50ZXJmYWNlIElQYXJhbXMge1xyXG4gIHBhdGhuYW1lPzogc3RyaW5nO1xyXG4gIHF1ZXJ5PzogYW55O1xyXG4gIGlkPzogc3RyaW5nO1xyXG4gIHNlcnZpY2VOYW1lPzogc3RyaW5nO1xyXG4gIHRpdGxlPzogc3RyaW5nO1xyXG4gIHNlcnZpY2VQYXRoPzogc3RyaW5nO1xyXG4gIG1lbnVDb2RlPzogc3RyaW5nO1xyXG4gIG9wZW5UeXBlPzogbnVtYmVyO1xyXG59XHJcbmNvbnN0IGp1bXBQYWdlID0gKHBhcmFtczogSVBhcmFtcywgdHlwZT86IFwiYWRkVGFiXCIgfCBcImp1bXBNZW51XCIpID0+IHtcclxuICBjb25zdCB7XHJcbiAgICBwYXRobmFtZSxcclxuICAgIHF1ZXJ5ID0ge30sXHJcbiAgICBpZCxcclxuICAgIHRpdGxlLFxyXG4gICAgc2VydmljZU5hbWUsXHJcbiAgICBzZXJ2aWNlUGF0aCxcclxuICAgIG9wZW5UeXBlLFxyXG4gIH0gPSBwYXJhbXM7XHJcbiAgY29uc3QgbmV3UXVlcnkgPSB7IC4uLnF1ZXJ5IH0gYXMgYW55O1xyXG4gIGNvbnN0IHVybFBhcmFtcyA9IHF1ZXJ5U3RyaW5nLnN0cmluZ2lmeShuZXdRdWVyeSk7XHJcbiAgY29uc3QgcGF0aCA9IHVybFBhcmFtcyA/IGAke3BhdGhuYW1lfT8ke3VybFBhcmFtc31gIDogcGF0aG5hbWU7XHJcbiAgLy9AdHMtaWdub3JlXHJcbiAgaWYgKHdpbmRvdy5fX1BPV0VSRURfQllfUUlBTktVTl9fKSB7XHJcbiAgICBjb25zdCBkYXRhID0ge1xyXG4gICAgICB0aXRsZTogdGl0bGUgfHwgXCLmlrDmoIfnrb5cIixcclxuICAgICAgc2VydmljZU5hbWU6IHNlcnZpY2VOYW1lLCAvL+mFjee9rueahOW+ruW6lOeUqOWQjeensFxyXG4gICAgICBzZXJ2aWNlUGF0aDogc2VydmljZVBhdGgsIC8v6YWN572u55qE5b6u5bqU55So5YWl5Y+j5Zyw5Z2AXHJcbiAgICAgIHBhdGg6IHBhdGgsIC8v5paw5qCH562+55qEdXJsLOayoemFjee9rnNlcnZpY2VOYW1lIHBhdGjkuLrlrozmlbTot6/lvoRcclxuICAgICAgaWQ6IGlkLCAvL+iHquWumuS5ieWUr+S4gOWAvFxyXG4gICAgICBvcGVuVHlwZTogb3BlblR5cGUgPyBvcGVuVHlwZSA6IDQsIC8v5omT5byA5pa55byPIDTkvY3lvq7liY3nq68sIDPkuLppZnJhbWUgLOm7mOiupCAzXHJcbiAgICB9O1xyXG4gICAgd2luZG93LnBhcmVudC5wb3N0TWVzc2FnZShcclxuICAgICAge1xyXG4gICAgICAgIGV2ZW50VHlwZTogdHlwZSA/IHR5cGUgOiBcImFkZFRhYlwiLFxyXG4gICAgICAgIHNlcnZpY2VOYW1lOiBzZXJ2aWNlTmFtZSA/IHNlcnZpY2VOYW1lIDogXCJzZXR0aW5nLXdlYlwiLFxyXG4gICAgICAgIHBheWxvYWQ6IHR5cGUgPyBwYXJhbXMgOiBkYXRhLFxyXG4gICAgICB9LFxyXG4gICAgICB3aW5kb3cubG9jYXRpb24ub3JpZ2luXHJcbiAgICApO1xyXG4gIH0gZWxzZSB7XHJcbiAgICB3aW5kb3cuaGlzdG9yeS5wdXNoU3RhdGUoe30sIFwiXCIsIHBhdGgpO1xyXG4gICAgd2luZG93Lmhpc3RvcnkuZ28oKTtcclxuICB9XHJcbn07XHJcbmNvbnN0IGdldFByb2plY3QgPSAoKSA9PiB7XHJcbiAgY29uc3QgcHJvamVjdCA9IGdldExvY2FsU3RvcmUoeyBuYW1lOiBcIm5zYy1ob21lLXByb2plY3RcIiB9KSB8fCB7fTtcclxuICByZXR1cm4gcHJvamVjdDtcclxufTtcclxuaW50ZXJmYWNlIElQcm9wcyB7XHJcbiAgdGFibGVDb2RlOiBzdHJpbmc7XHJcbiAgY2xhc3NOYW1lPzogYW55O1xyXG4gIG1lbnVDb2RlPzogc3RyaW5nO1xyXG4gIGZ1bmNzPzogYW55O1xyXG4gIHB1Ymxpc2hlZD86IGJvb2xlYW47XHJcbiAgaW5zdGFuY2VSZWY/OiBhbnk7XHJcbiAgdGFiUGFyYW1zPzogYW55O1xyXG4gIG9uQ2FsbEJhY2tzPzoge1xyXG4gICAgdHJlZVNlbGVjdENhbGxCYWNrPzogYW55OyAvL+agkeeCueWHu+afpeivouWQjuWbnuiwg1xyXG4gICAgb25RdWVyeUNhbGxCYWNrPzogYW55OyAvL+afpeivouWbnuiwg++8jOafpeivouaVsOaNruWQjuWbnuiwg1xyXG4gICAgb25TdW1iaXRDYWxsQmFjaz86IGFueTsgLy/kv53lrZjlm57osIPvvIzkv53lrZjmlbDmja7miJDlip/lkI7lm57osINcclxuICAgIG9uRGVsZXRlQ2FsbEJhY2s/OiBhbnk7IC8v5Yig6Zmk5oyJ6ZKu5Zue6LCD77yM5Yig6Zmk5pWw5o2u5ZCO5omn6KGMXHJcbiAgICBvbkVkaXRvckNhbGxCYWNrPzogYW55OyAvL+e8lui+keaMiemSruWbnuiwg++8jOaJk+W8gOW8ueahhuWQjuaJp+ihjFxyXG4gICAgb25BZGRDYWxsQmFjaz86IGFueTsgLy/mt7vliqDmjInpkq7lm57osIPvvIzmiZPlvIDlvLnmoYblkI7miafooYxcclxuICAgIG9uU2VhcmNoQ2FsbEJhY2s/OiBhbnk7IC8v5YiX6KGo5p+l6K+i5oyJ6ZKu5Zue6LCD77yM5omT5byA5by55qGG5ZCO5omn6KGMXHJcbiAgfTtcclxufVxyXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBTZXR0aW5nVGFibGUgZXh0ZW5kcyBSZWFjdC5Db21wb25lbnQ8SVByb3BzLCBhbnk+IHtcclxuICBzdGF0ZSA9IHtcclxuICAgIHBhZ2VQcm9wczoge30gYXMgYW55LFxyXG4gICAgdHJlZVByb3BzOiB7IHN0b3JlOiB7IHVybDogXCJcIiwgYXV0b0xvYWQ6IGZhbHNlIH0gfSBhcyBhbnksXHJcbiAgICB0YWJsZVByb3BzOiB7fSBhcyBhbnksXHJcbiAgICBzZWxmVG9vbEJ1dHRvbjogW10gYXMgYW55LFxyXG4gICAgc2VsZkNvbHVtbkJ1dHRvbjogW10gYXMgYW55LFxyXG4gICAgcGFnZUxvYWRpbmc6IHRydWUsXHJcbiAgICBkZWZhdWx0Q29sdW1uczogW10gYXMgYW55LFxyXG4gICAgb3RoZXJQcm9wczoge30gYXMgYW55LFxyXG4gIH07XHJcbiAgcGFnZVJlZiA9IFJlYWN0LmNyZWF0ZVJlZjxhbnk+KCk7XHJcblxyXG4gIGNvbXBvbmVudERpZE1vdW50KCk6IHZvaWQge1xyXG4gICAgdGhpcy5nZXREYXRhKCk7XHJcbiAgfVxyXG5cclxuICBjb21wb25lbnREaWRVcGRhdGUoXHJcbiAgICBwcmV2UHJvcHM6IFJlYWRvbmx5PElQcm9wcz4sXHJcbiAgICBwcmV2U3RhdGU6IFJlYWRvbmx5PGFueT4sXHJcbiAgICBzbmFwc2hvdD86IGFueVxyXG4gICk6IHZvaWQge1xyXG4gICAgaWYgKHByZXZQcm9wcy50YWJsZUNvZGUgIT0gdGhpcy5wcm9wcy50YWJsZUNvZGUpIHtcclxuICAgICAgdGhpcy5nZXREYXRhKCk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBpbml0RGF0YSA9IChyZXM6IGFueSkgPT4ge1xyXG4gICAgY29uc3QgeyBvdGhlclByb3BzLCBwYWdlUHJvcHMgfSA9IHRoaXMuc3RhdGU7XHJcbiAgICBpZiAoXHJcbiAgICAgIHBhZ2VQcm9wcy5zaG93U2VhcmNoICE9PSBmYWxzZSAmJlxyXG4gICAgICBvdGhlclByb3BzLmRlZmF1bHRTZWFyY2ggJiZcclxuICAgICAgb3RoZXJQcm9wcy50YWJsZURhdGFSZXNvdXJjZSA9PSBcInVybFwiXHJcbiAgICApIHtcclxuICAgICAgbGV0IGZ1bmMgPSBuZXcgRnVuY3Rpb24oXCJVdGlscyxldmVudE9wdGlvblwiLCBvdGhlclByb3BzLmRlZmF1bHRTZWFyY2gpO1xyXG4gICAgICBjb25zdCBwYXJhbXMgPSBmdW5jKGRlZmF1bFV0aWwsIHsgcGFnZVJlZjogdGhpcy5wYWdlUmVmIH0pO1xyXG4gICAgICBzZXRUaW1lb3V0KCgpID0+IHtcclxuICAgICAgICB0aGlzLnBhZ2VSZWYuY3VycmVudD8udGFibGVMb2FkKHsgLi4ucGFyYW1zIH0pO1xyXG4gICAgICAgIHRoaXMucGFnZVJlZi5jdXJyZW50Py5zZXRTZWFyY2hQYXJhbXMoeyAuLi5wYXJhbXMgfSk7XHJcbiAgICAgIH0sIDMwMCk7IC8v55u05o6l6K6+572u77yMcGFnZVJlZuayoee7keWumu+8jOaaguaXtumAmui/h+W7tui/n+WHveaVsOi/m+ihjOino+WGs1xyXG4gICAgfVxyXG4gIH07XHJcbiAgLy8g6I635Y+W5pWw5o2uXHJcbiAgZ2V0RGF0YSgpIHtcclxuICAgIC8vIOS7jnByb3Bz5Lit6I635Y+WdGFibGVDb2Rl44CBcHVibGlzaGVk44CBbWVudUNvZGVcclxuICAgIGNvbnN0IHsgdGFibGVDb2RlLCBwdWJsaXNoZWQgPSB0cnVlLCBtZW51Q29kZSwgdGFiUGFyYW1zIH0gPSB0aGlzLnByb3BzO1xyXG4gICAgLy8g5aaC5p6cdGFibGVDb2Rl5a2Y5ZyoXHJcbiAgICBpZiAodGFibGVDb2RlKSB7XHJcbiAgICAgIC8vIOWumuS5ieWPguaVsFxyXG4gICAgICBsZXQgcGFyYW1zID0geyBjb2RlOiB0YWJsZUNvZGUgfSBhcyBhbnk7XHJcbiAgICAgIC8vIOWmguaenHB1Ymxpc2hlZOS4unRydWVcclxuICAgICAgaWYgKHB1Ymxpc2hlZCkge1xyXG4gICAgICAgIC8vIOiuvue9ruWPguaVsGlzUHVibGlzaGVk5Li6MVxyXG4gICAgICAgIHBhcmFtcy5pc1B1Ymxpc2hlZCA9IDE7XHJcbiAgICAgIH1cclxuICAgICAgLy8g6LCD55SoZ2V0UGFnZURhdGHmlrnms5Xojrflj5bmlbDmja5cclxuICAgICAgZ2V0UGFnZURhdGEoeyAuLi5wYXJhbXMgfSkudGhlbigocmVzOiBhbnkpID0+IHtcclxuICAgICAgICBpZiAocmVzLmNvZGUgPT0gMjAwICYmIHJlcy5kYXRhKSB7XHJcbiAgICAgICAgICBsZXQgdGFibGVfcHJvcHMgPSBKU09OLnBhcnNlKHJlcy5kYXRhLnRhYmxlUHJvcHMgfHwgXCJ7fVwiKSB8fCB7fTtcclxuICAgICAgICAgIGxldCB0cmVlX3Byb3BzID0gSlNPTi5wYXJzZShyZXMuZGF0YS50cmVlUHJvcHMgfHwgXCJ7fVwiKSB8fCB7fTtcclxuICAgICAgICAgIGxldCBwYWdlX3Byb3BzID0gSlNPTi5wYXJzZShyZXMuZGF0YS5wYWdlUHJvcHMgfHwgXCJ7fVwiKSB8fCB7fTtcclxuICAgICAgICAgIGxldCBvdGhlcl9wcm9wcyA9IEpTT04ucGFyc2UocmVzLmRhdGEub3RoZXJQYXJhbXMgfHwgXCJ7fVwiKSB8fCB7fTtcclxuICAgICAgICAgIGlmIChwYWdlX3Byb3BzLnBlcm1pc3Npb24/LmhhcyA9PSB0cnVlKSB7XHJcbiAgICAgICAgICAgIHBhZ2VfcHJvcHMucGVybWlzc2lvbi5tZW51Q29kZSA9IG1lbnVDb2RlO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgICAgaWYgKHB1Ymxpc2hlZCA9PSBmYWxzZSkge1xyXG4gICAgICAgICAgICBwYWdlX3Byb3BzLnBlcm1pc3Npb24gPSBmYWxzZTtcclxuICAgICAgICAgIH1cclxuICAgICAgICAgIGlmIChcclxuICAgICAgICAgICAgcGFnZV9wcm9wcy5zaG93U2VhcmNoICE9PSBmYWxzZSAmJlxyXG4gICAgICAgICAgICBvdGhlcl9wcm9wcz8uZGVmYXVsdFNlYXJjaCAmJlxyXG4gICAgICAgICAgICBvdGhlcl9wcm9wcz8udGFibGVEYXRhUmVzb3VyY2UgPT0gXCJ1cmxcIlxyXG4gICAgICAgICAgKSB7XHJcbiAgICAgICAgICAgIHRhYmxlX3Byb3BzLnN0b3JlLmF1dG9Mb2FkID0gZmFsc2U7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgICBpZiAodGFiUGFyYW1zKSB7XHJcbiAgICAgICAgICAgIGNvbnN0IFV0aWxzID0gZGVmYXVsVXRpbCB8fCB7fTtcclxuICAgICAgICAgICAgbGV0IHBhcmFtRnVuYyA9IG5ldyBGdW5jdGlvbihcIlV0aWxzXCIsIHRhYlBhcmFtcyk7XHJcbiAgICAgICAgICAgIGxldCBjb252ZXJUYWJQYXJhbXMgPSBwYXJhbUZ1bmMoVXRpbHMpO1xyXG4gICAgICAgICAgICBpZiAocGFnZV9wcm9wcy5yZXF1ZXN0UGFyYW1zKSB7XHJcbiAgICAgICAgICAgICAgbGV0IHsgcmVxdWVzdFBhcmFtcyA9IHt9IH0gPSBwYWdlX3Byb3BzO1xyXG4gICAgICAgICAgICAgIGxldCBuZXdSZXF1ZXN0UGFyYW1zID0ge1xyXG4gICAgICAgICAgICAgICAgcXVlcnlQYXJhbXM6IG51bGwsXHJcbiAgICAgICAgICAgICAgICBhZGRQYXJhbXM6IG51bGwsXHJcbiAgICAgICAgICAgICAgICBlZGl0b3JQYXJhbXM6IG51bGwsXHJcbiAgICAgICAgICAgICAgfTtcclxuICAgICAgICAgICAgICBmb3IgKGxldCBrZXkgaW4gbmV3UmVxdWVzdFBhcmFtcykge1xyXG4gICAgICAgICAgICAgICAgaWYgKHJlcXVlc3RQYXJhbXNba2V5XSkge1xyXG4gICAgICAgICAgICAgICAgICBsZXQgZnVuYyA9IG5ldyBGdW5jdGlvbihcIlV0aWxzXCIsIHJlcXVlc3RQYXJhbXNba2V5XSk7XHJcbiAgICAgICAgICAgICAgICAgIGxldCBjb252ZXJQYXJhbXMgPSBmdW5jKFV0aWxzKTtcclxuICAgICAgICAgICAgICAgICAgY29uc3QgeyBkYXRhLCAuLi5vdGhlciB9ID0gY29udmVyUGFyYW1zO1xyXG4gICAgICAgICAgICAgICAgICBsZXQgbmV3UGFyYW1zID0ge1xyXG4gICAgICAgICAgICAgICAgICAgIGRhdGE6IHsgLi4uY29udmVyVGFiUGFyYW1zLCAuLi5kYXRhIH0sXHJcbiAgICAgICAgICAgICAgICAgICAgLi4ub3RoZXIsXHJcbiAgICAgICAgICAgICAgICAgIH07XHJcbiAgICAgICAgICAgICAgICAgIG5ld1JlcXVlc3RQYXJhbXNba2V5XSA9IG5ld1BhcmFtcztcclxuICAgICAgICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgICAgICAgIG5ld1JlcXVlc3RQYXJhbXNba2V5XSA9IHsgZGF0YTogeyAuLi5jb252ZXJUYWJQYXJhbXMgfSB9O1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICBwYWdlX3Byb3BzLnJlcXVlc3RQYXJhbXMgPSB7IC4uLm5ld1JlcXVlc3RQYXJhbXMgfTtcclxuICAgICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgICBwYWdlX3Byb3BzLnJlcXVlc3RQYXJhbXMgPSB7XHJcbiAgICAgICAgICAgICAgICBxdWVyeVBhcmFtczogeyBkYXRhOiB7IC4uLmNvbnZlclRhYlBhcmFtcyB9IH0sXHJcbiAgICAgICAgICAgICAgICBhZGRQYXJhbXM6IHsgZGF0YTogeyAuLi5jb252ZXJUYWJQYXJhbXMgfSB9LFxyXG4gICAgICAgICAgICAgICAgZWRpdG9yUGFyYW1zOiB7IGRhdGE6IHsgLi4uY29udmVyVGFiUGFyYW1zIH0gfSxcclxuICAgICAgICAgICAgICB9O1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgICB0aGlzLnNldFN0YXRlKFxyXG4gICAgICAgICAgICB7XHJcbiAgICAgICAgICAgICAgcGFnZVByb3BzOiB7XHJcbiAgICAgICAgICAgICAgICAuLi5wYWdlX3Byb3BzLFxyXG4gICAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgICAgdHJlZVByb3BzOiB7XHJcbiAgICAgICAgICAgICAgICAuLi50cmVlX3Byb3BzLFxyXG4gICAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgICAgdGFibGVQcm9wczoge1xyXG4gICAgICAgICAgICAgICAgLi4udGFibGVfcHJvcHMsXHJcbiAgICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAgICBvdGhlclByb3BzOiB7IC4uLm90aGVyX3Byb3BzIH0sXHJcbiAgICAgICAgICAgICAgc2VsZkNvbHVtbkJ1dHRvbjogSlNPTi5wYXJzZShyZXMuZGF0YS5jb2x1bW5CdXR0b25zKSB8fCBbXSxcclxuICAgICAgICAgICAgICBzZWxmVG9vbEJ1dHRvbjogSlNPTi5wYXJzZShyZXMuZGF0YS50b29sQnV0dG9ucykgfHwgW10sXHJcbiAgICAgICAgICAgICAgZGVmYXVsdENvbHVtbnM6IHBhZ2VfcHJvcHMuY29sdW1ucyxcclxuICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAgKCkgPT4ge1xyXG4gICAgICAgICAgICAgIHRoaXMuc2V0U3RhdGUoe1xyXG4gICAgICAgICAgICAgICAgcGFnZUxvYWRpbmc6IGZhbHNlLFxyXG4gICAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICApO1xyXG4gICAgICAgIH0gZWxzZSBpZiAocmVzLmNvZGUgPT0gMjAwICYmIHJlcy5kYXRhID09IG51bGwpIHtcclxuICAgICAgICAgIG1lc3NhZ2UuZXJyb3IoXCLmnKrmib7liLDphY3nva7kv6Hmga/vvIFcIik7XHJcbiAgICAgICAgICB0aGlzLnNldFN0YXRlKHtcclxuICAgICAgICAgICAgcGFnZUxvYWRpbmc6IGZhbHNlLFxyXG4gICAgICAgICAgfSk7XHJcbiAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgIHRoaXMuc2V0U3RhdGUoe1xyXG4gICAgICAgICAgICBwYWdlTG9hZGluZzogZmFsc2UsXHJcbiAgICAgICAgICB9KTtcclxuICAgICAgICB9XHJcbiAgICAgIH0pO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgdGhpcy5zZXRTdGF0ZSh7XHJcbiAgICAgICAgcGFnZUxvYWRpbmc6IGZhbHNlLFxyXG4gICAgICB9KTtcclxuICAgIH1cclxuICB9XHJcbiAgLy8gb25TZWFyY2goKSB7fVxyXG4gIGdldFNlYXJjaFZhbHVlcygpIHtcclxuICAgIGNvbnN0IHZhbHVlID0gdGhpcy5wYWdlUmVmLmN1cnJlbnQ/LmdldFNlYXJjaFZhbHVlcygpO1xyXG4gICAgcmV0dXJuIHZhbHVlO1xyXG4gIH1cclxuICB0YWJsZUxvYWQocGFyYW1zOiBhbnksIHJlcXVlc3RDb25maWcgPSB7fSkge1xyXG4gICAgdGhpcy5wYWdlUmVmLmN1cnJlbnQ/LnRhYmxlTG9hZChwYXJhbXMsIHJlcXVlc3RDb25maWcpO1xyXG4gIH1cclxuICByZW5kZXIoKSB7XHJcbiAgICBjb25zdCB7IGNsYXNzTmFtZSwgZnVuY3MgPSB7fSB9ID0gdGhpcy5wcm9wcztcclxuICAgIGNvbnN0IHtcclxuICAgICAgcGFnZVByb3BzLFxyXG4gICAgICB0cmVlUHJvcHMsXHJcbiAgICAgIHRhYmxlUHJvcHMsXHJcbiAgICAgIHNlbGZUb29sQnV0dG9uLFxyXG4gICAgICBzZWxmQ29sdW1uQnV0dG9uLFxyXG4gICAgICBwYWdlTG9hZGluZyxcclxuICAgICAgZGVmYXVsdENvbHVtbnMsXHJcbiAgICB9ID0gdGhpcy5zdGF0ZTtcclxuICAgIGNvbnN0IGRlYXVsdEZ1bmNzID0ge1xyXG4gICAgICBzZXRGaWVsZERpc2FibGVkOiAoa2V5LCBkaXNhYmxlZCkgPT4ge1xyXG4gICAgICAgIGNvbnN0IG5ld0RhdGEgPSBzZXRGaWVsZERpc2FibGVkKHBhZ2VQcm9wcy5jb2x1bW5zLCBrZXksIGRpc2FibGVkKTtcclxuICAgICAgICB0aGlzLnNldFN0YXRlKHtcclxuICAgICAgICAgIHBhZ2VQcm9wczogeyAuLi5wYWdlUHJvcHMsIGNvbHVtbnM6IG5ld0RhdGEgfSxcclxuICAgICAgICB9KTtcclxuICAgICAgfSxcclxuICAgICAgc2V0RmllbGRWaXNpYmxlOiAoa2V5LCBkaXNhYmxlZCkgPT4ge1xyXG4gICAgICAgIGNvbnN0IG5ld0RhdGEgPSBzZXRGaWVsZFZpc2libGUocGFnZVByb3BzLmNvbHVtbnMsIGtleSwgZGlzYWJsZWQpO1xyXG4gICAgICAgIHRoaXMuc2V0U3RhdGUoe1xyXG4gICAgICAgICAgcGFnZVByb3BzOiB7IC4uLnBhZ2VQcm9wcywgY29sdW1uczogbmV3RGF0YSB9LFxyXG4gICAgICAgIH0pO1xyXG4gICAgICB9LFxyXG4gICAgICBzZXRGaWVsZFByb3BzRGF0YTogKGtleSwgZGF0YSkgPT4ge1xyXG4gICAgICAgIGNvbnN0IG5ld0RhdGEgPSBzZXRGaWVsZFByb3BzRGF0YShwYWdlUHJvcHMuY29sdW1ucywga2V5LCBkYXRhKTtcclxuICAgICAgICB0aGlzLnNldFN0YXRlKHtcclxuICAgICAgICAgIHBhZ2VQcm9wczogeyAuLi5wYWdlUHJvcHMsIGNvbHVtbnM6IG5ld0RhdGEgfSxcclxuICAgICAgICB9KTtcclxuICAgICAgfSxcclxuICAgICAgaGlzdG9yeTogKHBhcmFtcywgdHlwZSkgPT4ge1xyXG4gICAgICAgIGp1bXBQYWdlKHBhcmFtcywgdHlwZSk7XHJcbiAgICAgIH0sXHJcbiAgICAgIGdldEN1cnJlbnRQcm9qZWN0OiAoKSA9PiB7XHJcbiAgICAgICAgcmV0dXJuIGdldFByb2plY3QoKTtcclxuICAgICAgfSxcclxuICAgIH07XHJcbiAgICBjb25zdCB7IGNoaWxkcmVuIH0gPSB0aGlzLnByb3BzO1xyXG4gICAgbGV0IGNvZGVTZWxmQnV0dG9ucyA9IFtdO1xyXG4gICAgbGV0IGNvZGVjb2x1bW5CdXR0b25zID0gW107XHJcbiAgICBpZiAoQXJyYXkuaXNBcnJheShjaGlsZHJlbikpIHtcclxuICAgICAgY2hpbGRyZW4ubWFwKChpdGVtOiBhbnkpID0+IHtcclxuICAgICAgICBpZiAoQXJyYXkuaXNBcnJheShpdGVtKSkge1xyXG4gICAgICAgICAgaXRlbS5tYXAoKGNoaWxkKSA9PiB7XHJcbiAgICAgICAgICAgIGlmIChjaGlsZD8ucHJvcHM/LnBhZ2VUeXBlID09IFwidG9vbEJ1dHRvblwiKSB7XHJcbiAgICAgICAgICAgICAgY29kZVNlbGZCdXR0b25zLnB1c2goY2hpbGQpO1xyXG4gICAgICAgICAgICB9IGVsc2UgaWYgKGNoaWxkPy5wcm9wcz8ucGFnZVR5cGUgPT0gXCJjb2x1bW5CdXR0b25cIikge1xyXG4gICAgICAgICAgICAgIGNvZGVjb2x1bW5CdXR0b25zLnB1c2goY2hpbGQpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICB9KTtcclxuICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgaWYgKGl0ZW0/LnByb3BzPy5wYWdlVHlwZSA9PSBcInRvb2xCdXR0b25cIikge1xyXG4gICAgICAgICAgICBjb2RlU2VsZkJ1dHRvbnMucHVzaChpdGVtKTtcclxuICAgICAgICAgIH0gZWxzZSBpZiAoaXRlbT8ucHJvcHM/LnBhZ2VUeXBlID09IFwiY29sdW1uQnV0dG9uXCIpIHtcclxuICAgICAgICAgICAgY29kZWNvbHVtbkJ1dHRvbnMucHVzaChpdGVtKTtcclxuICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgIH0pO1xyXG4gICAgfSBlbHNlIGlmIChjaGlsZHJlbikge1xyXG4gICAgICBjb25zdCB7IHByb3BzIH06IGFueSA9IGNoaWxkcmVuO1xyXG4gICAgICBpZiAocHJvcHM/LnBhZ2VUeXBlID09IFwidG9vbEJ1dHRvblwiKSB7XHJcbiAgICAgICAgY29kZVNlbGZCdXR0b25zLnB1c2goY2hpbGRyZW4pO1xyXG4gICAgICB9IGVsc2UgaWYgKHByb3BzPy5wYWdlVHlwZSA9PSBcImNvbHVtbkJ1dHRvblwiKSB7XHJcbiAgICAgICAgY29kZWNvbHVtbkJ1dHRvbnMucHVzaChjaGlsZHJlbik7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICAgIHJldHVybiAoXHJcbiAgICAgIDxkaXYgY2xhc3NOYW1lPXtjbHMoXCJuc2MtZnJhbWV3b3JrLXRhYmxlcGFnZVwiLCBjbGFzc05hbWUpfT5cclxuICAgICAgICB7cGFnZUxvYWRpbmcgPyAoXHJcbiAgICAgICAgICA8ZGl2IHN0eWxlPXt7IHdpZHRoOiBcIjEwMCVcIiwgaGVpZ2h0OiBcIjEwMCVcIiB9fT5cclxuICAgICAgICAgICAgPFNwaW4gc3Bpbm5pbmc9e3BhZ2VMb2FkaW5nfT48L1NwaW4+XHJcbiAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICApIDogKFxyXG4gICAgICAgICAgPEJhc2VQYWdlXHJcbiAgICAgICAgICAgIHsuLi5wYWdlUHJvcHN9XHJcbiAgICAgICAgICAgIHRyZWVQcm9wcz17eyAuLi50cmVlUHJvcHMgfX1cclxuICAgICAgICAgICAgdGFibGVQcm9wcz17eyAuLi50YWJsZVByb3BzIH19XHJcbiAgICAgICAgICAgIGZvcm1Qcm9wcz17e319XHJcbiAgICAgICAgICAgIFV0aWxzPXt7IC4uLmRlZmF1bFV0aWwgfX1cclxuICAgICAgICAgICAgcmVmPXt0aGlzLnBhZ2VSZWZ9XHJcbiAgICAgICAgICAgIHBhZ2VSZWY9e3RoaXMucGFnZVJlZn1cclxuICAgICAgICAgICAgb25IaWRlRm9ybT17KCkgPT4ge1xyXG4gICAgICAgICAgICAgIHRoaXMuc2V0U3RhdGUoe1xyXG4gICAgICAgICAgICAgICAgcGFnZVByb3BzOiB7IC4uLnBhZ2VQcm9wcywgY29sdW1uczogZGVmYXVsdENvbHVtbnMgfSxcclxuICAgICAgICAgICAgICB9KTtcclxuICAgICAgICAgICAgICB0aGlzLnBhZ2VSZWYuY3VycmVudD8uaGlkZUZvcm0oKTtcclxuICAgICAgICAgICAgfX1cclxuICAgICAgICAgICAgZnVuY3M9e3sgLi4uZGVhdWx0RnVuY3MsIC4uLmZ1bmNzIH19XHJcbiAgICAgICAgICAgIGluaXREYXRhPXt0aGlzLmluaXREYXRhfVxyXG4gICAgICAgICAgICBvbkNhbGxCYWNrcz17e1xyXG4gICAgICAgICAgICAgIG9uUXVlcnlDYWxsQmFjazogKHsgcGFyYW1zIH0pID0+IHtcclxuICAgICAgICAgICAgICAgIHRoaXMucHJvcHMub25DYWxsQmFja3M/Lm9uUXVlcnlDYWxsQmFjayh7IHBhcmFtcyB9KTtcclxuICAgICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICB9fVxyXG4gICAgICAgICAgPlxyXG4gICAgICAgICAgICB7cmVuZGVyU2VsZlRvb2xCdXR0b24oe1xyXG4gICAgICAgICAgICAgIHNlbGZUb29sQnV0dG9uLFxyXG4gICAgICAgICAgICAgIHBhZ2VSZWY6IHRoaXMucGFnZVJlZixcclxuICAgICAgICAgICAgICBmdW5jczogeyAuLi5kZWF1bHRGdW5jcywgLi4uZnVuY3MgfSxcclxuICAgICAgICAgICAgfSl9XHJcbiAgICAgICAgICAgIHtjb2RlU2VsZkJ1dHRvbnMubWFwKChpdGVtKSA9PiB7XHJcbiAgICAgICAgICAgICAgcmV0dXJuIGl0ZW07XHJcbiAgICAgICAgICAgIH0pfVxyXG4gICAgICAgICAgICB7cmVuZGVyU2VsZkNvbHVtbkJ1dHRvbih7XHJcbiAgICAgICAgICAgICAgc2VsZkNvbHVtbkJ1dHRvbixcclxuICAgICAgICAgICAgICBwYWdlUmVmOiB0aGlzLnBhZ2VSZWYsXHJcbiAgICAgICAgICAgICAgZnVuY3M6IHsgLi4uZGVhdWx0RnVuY3MsIC4uLmZ1bmNzIH0sXHJcbiAgICAgICAgICAgIH0pfVxyXG4gICAgICAgICAgICB7Y29kZWNvbHVtbkJ1dHRvbnMubWFwKChpdGVtKSA9PiB7XHJcbiAgICAgICAgICAgICAgcmV0dXJuIGl0ZW07XHJcbiAgICAgICAgICAgIH0pfVxyXG4gICAgICAgICAgPC9CYXNlUGFnZT5cclxuICAgICAgICApfVxyXG4gICAgICA8L2Rpdj5cclxuICAgICk7XHJcbiAgfVxyXG59XHJcbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7OztBQUNBLE9BQU9BLFFBQVEsTUFBTSxhQUFhO0FBQ2xDLE9BQU9DLElBQUksTUFBTSxpQkFBaUI7QUFDbEMsT0FBT0MsTUFBTSxNQUFNLG1CQUFtQjtBQUN0QyxPQUFPLGNBQWM7QUFDckIsT0FBT0MsS0FBSyxNQUFNLE9BQU87QUFDekIsT0FBTyxLQUFLQyxNQUFNLE1BQU0sT0FBTztBQUMvQixPQUFPQyxPQUFPLE1BQU0sVUFBVTtBQUM5QixPQUFPQyxVQUFVLE1BQU0sYUFBYTtBQUNwQyxPQUFPLEtBQUtDLFFBQVEsTUFBTSxtQkFBbUI7QUFDN0MsT0FBT0MsR0FBRyxNQUFNLFlBQVk7QUFFNUIsT0FBT0MsV0FBVyxNQUFNLGNBQWM7QUFDdEMsU0FBU0MsYUFBYSxRQUFRLG1CQUFtQjtBQUNqRCxPQUFPQyxLQUFLLE1BQU0sT0FBTztBQUV6QjtBQUNBOztBQUVBLE1BQU1DLFVBQVUsR0FBRztFQUNqQlIsTUFBTTtFQUNOQyxPQUFPO0VBQ1BDLFVBQVU7RUFDVkMsUUFBUTtFQUNSSSxLQUFLO0VB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
|