@gisce/ooui 0.22.6 → 0.22.7

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":"ooui.es.js","sources":["../src/Widget.ts","../src/helpers/attributeParser.ts","../src/Field.ts","../src/Avatar.ts","../src/NewLine.ts","../src/Label.ts","../src/Container.ts","../src/ContainerWidget.ts","../src/Notebook.ts","../src/Page.ts","../src/Group.ts","../src/Button.ts","../src/ButtonGroup.ts","../src/Char.ts","../src/Text.ts","../src/Selection.ts","../src/Many2one.ts","../src/Markdown.ts","../src/Boolean.ts","../src/Integer.ts","../src/Float.ts","../src/FloatTime.ts","../src/ProgressBar.ts","../src/Date.ts","../src/DateTime.ts","../src/Many2many.ts","../src/One2many.ts","../src/Separator.ts","../src/Reference.ts","../src/Binary.ts","../src/Image.ts","../src/FiberGrid.ts","../src/Timeline.ts","../src/Indicator.ts","../src/MultiCheckbox.ts","../src/Tags.ts","../src/Tag.ts","../src/Radio.ts","../src/Switch.ts","../src/Steps.ts","../src/CodeEditor.ts","../src/Time.ts","../src/WidgetFactory.ts","../src/helpers/stateParser.ts","../src/helpers/fieldParser.ts","../src/helpers/contextParser.ts","../src/helpers/onChangeParser.ts","../node_modules/txml/dist/txml.mjs","../node_modules/rollup-plugin-node-polyfills/polyfills/global.js","../node_modules/rollup-plugin-node-polyfills/polyfills/process-es6.js","../__vite-browser-external","../node_modules/readable-stream/lib/internal/streams/stream-browser.js","../node_modules/rollup-plugin-node-polyfills/polyfills/buffer-es6.js","../node_modules/rollup-plugin-node-polyfills/polyfills/inherits.js","../node_modules/rollup-plugin-node-polyfills/polyfills/util.js","../node_modules/readable-stream/lib/internal/streams/buffer_list.js","../node_modules/readable-stream/lib/internal/streams/destroy.js","../node_modules/readable-stream/errors-browser.js","../node_modules/readable-stream/lib/internal/streams/state.js","../node_modules/inherits/inherits_browser.js","../node_modules/util-deprecate/browser.js","../node_modules/readable-stream/lib/_stream_writable.js","../node_modules/readable-stream/lib/_stream_duplex.js","../node_modules/safe-buffer/index.js","../node_modules/string_decoder/lib/string_decoder.js","../node_modules/readable-stream/lib/internal/streams/end-of-stream.js","../node_modules/readable-stream/lib/internal/streams/async_iterator.js","../node_modules/readable-stream/lib/internal/streams/from-browser.js","../node_modules/readable-stream/lib/_stream_readable.js","../node_modules/readable-stream/lib/_stream_transform.js","../node_modules/readable-stream/lib/_stream_passthrough.js","../node_modules/readable-stream/lib/internal/streams/pipeline.js","../node_modules/readable-stream/readable-browser.js","../node_modules/through2/through2.js","../src/Form.ts","../src/Tree.ts","../src/SearchFilter.ts","../src/helpers/domainParser.ts","../src/DashboardItem.ts","../src/Dashboard.ts","../src/Graph/Graph.ts","../src/helpers/nodeParser.ts","../src/Graph/GraphIndicator.ts","../src/Graph/GraphIndicatorField.ts","../src/Graph/graphHelper.ts","../src/Graph/GraphChart.ts","../src/Graph/GraphFactory.ts","../src/Graph/GraphAxis.ts","../src/Graph/GraphYAxis.ts","../src/Graph/GraphXAxis.ts","../src/Graph/processor/fieldUtils.ts","../src/Graph/processor/timerangeHelper.ts","../src/Graph/processor/graphProcessor.ts"],"sourcesContent":["abstract class Widget {\n /**\n * Default colspan\n */\n static _defaultColspan: number = 1;\n static get defaultColspan() {\n return Widget._defaultColspan;\n }\n static set defaultColspan(value) {\n Widget._defaultColspan = value;\n }\n\n /**\n * Determines if widget is read only (default is undefined)\n */\n _readOnly: boolean | undefined;\n get readOnly(): boolean | undefined {\n return this._readOnly;\n }\n set readOnly(value: boolean | undefined) {\n this._readOnly = value;\n }\n\n /**\n * Column span (default is 1)\n */\n _colspan: number;\n get colspan(): number {\n return this._colspan;\n }\n set colspan(value: number) {\n this._colspan = +value;\n }\n\n /**\n * Invisible fields (default is false)\n */\n _invisible: boolean;\n get invisible(): boolean {\n return this._invisible;\n }\n set invisible(value: boolean) {\n this._invisible = value;\n }\n\n /**\n * Widget type\n */\n _type: string = \"\";\n get type(): string {\n return this._type;\n }\n set type(value: string) {\n this._type = value;\n }\n\n /**\n * Context\n */\n _context: any;\n get context(): any {\n return this._context;\n }\n set context(value: any) {\n this._context = value;\n }\n\n /**\n * Domain\n */\n _domain?: string;\n get domain(): string | undefined {\n return this._domain;\n }\n set domain(value: string | undefined) {\n this._domain = value;\n }\n\n /**\n * Unique key for widget\n */\n _key?: string;\n get key(): string | undefined {\n return this._key;\n }\n set key(value: string | undefined) {\n this._key = value;\n }\n\n _parsedWidgetProps: any = {};\n get parsedWidgetProps(): any {\n return this._parsedWidgetProps;\n }\n set parsedWidgetProps(value: any) {\n this._parsedWidgetProps = value;\n }\n\n constructor(props?: any) {\n this._colspan = Widget._defaultColspan;\n this._invisible = false;\n\n if (props) {\n if (props.colspan) {\n this._colspan = +props.colspan;\n }\n if (props.readonly !== undefined) {\n if (\n props.readonly === \"1\" ||\n props.readonly === 1 ||\n props.readonly === true\n ) {\n this._readOnly = true;\n } else if (\n props.readonly === \"0\" ||\n props.readonly === 0 ||\n props.readonly === false\n ) {\n this._readOnly = false;\n }\n }\n if (props.invisible) {\n if (\n props.invisible === 1 ||\n props.invisible === \"1\" ||\n props.invisible === true\n ) {\n this._invisible = true;\n }\n }\n if (props.type) {\n this._type = props.type;\n }\n if (props.context) {\n this._context = props.context;\n }\n if (props.domain) {\n if (typeof props.domain !== \"string\") {\n this._domain = JSON.stringify(props.domain);\n } else {\n this._domain = props.domain;\n }\n }\n if (props.widget_props) {\n try {\n this._parsedWidgetProps = JSON.parse(\n props.widget_props.replace(/'/g, '\"')\n );\n } catch (err) {\n throw new Error(\"Error parsing widget_props\");\n }\n }\n if (props.key) {\n this._key = props.key;\n }\n }\n }\n\n abstract findById(id: string): Widget | null;\n}\n\nexport default Widget;\n","import { decode } from \"html-entities\";\n\nexport const isTrue = (value: string | boolean | number = false) => {\n value = JSON.parse(value.toString().toLowerCase())\n return (+ value > 0)\n}\n\nconst evaluateCondition = ({\n entry,\n values,\n fields,\n}: {\n entry: Array<any>;\n values: any;\n fields: any;\n}) => {\n const [fieldName, operator, expectedValue] = entry;\n\n if (fields[fieldName] === undefined) {\n return false;\n }\n\n if (\n values[fieldName] === undefined &&\n fields[fieldName].type !== \"boolean\" &&\n fields[fieldName].type !== \"many2one\"\n ) {\n return false;\n }\n\n let filteredExpectedValue = expectedValue;\n\n let value =\n fields[fieldName].type === \"boolean\"\n ? !!values[fieldName]\n : values[fieldName];\n\n if (\n fields[fieldName].type === \"many2one\" &&\n expectedValue === false &&\n values[fieldName] === undefined\n ) {\n filteredExpectedValue = undefined;\n } else {\n value = value === undefined ? false : value;\n value = value === null ? false : value;\n }\n\n if (\n fields[fieldName].type === \"many2one\" &&\n Array.isArray(value) &&\n value[0] === undefined\n ) {\n value = false;\n }\n\n if (\n fields[fieldName].type === \"boolean\" &&\n (expectedValue === 0 || expectedValue === 1)\n ) {\n filteredExpectedValue = expectedValue === 0 ? false : true;\n }\n\n switch (operator.toLowerCase()) {\n case \"=\":\n case \"==\":\n return value == filteredExpectedValue;\n case \"<>\":\n case \"!=\":\n return value != filteredExpectedValue;\n case \">\":\n return value > filteredExpectedValue;\n case \">=\":\n return value >= filteredExpectedValue;\n case \"<\":\n return value < filteredExpectedValue;\n case \"<=\":\n return value <= filteredExpectedValue;\n case \"in\":\n return filteredExpectedValue.includes(value);\n case \"not in\":\n return !filteredExpectedValue.includes(value);\n default:\n return false;\n }\n};\n\nconst replaceEntities = (string: string): string => {\n return decode(string, { level: \"xml\" });\n};\n\nconst parseAttributes = ({\n attrs,\n values,\n fields,\n widgetType,\n}: {\n attrs: string;\n values: any;\n fields: any;\n widgetType?: string;\n}) => {\n const leftP = attrs.replace(/\\(/g, \"[\");\n const rightP = leftP.replace(/\\)/g, \"]\");\n const clearQuotes = rightP.replace(/\\'/g, '\"');\n const replaceTrue = clearQuotes.replace(/True/g, \"true\");\n const replaceFalse = replaceTrue.replace(/False/g, \"false\");\n const replaceTags = replaceEntities(replaceFalse);\n const parsedObject = JSON.parse(replaceTags);\n const newAttributes: any = {};\n\n for (const attrField of Object.keys(parsedObject)) {\n const entries = parsedObject[attrField];\n const evaluatedEntries: boolean[] = entries.map((entry: any) => {\n return evaluateCondition({ entry, values, fields });\n });\n const attrIsTrue = evaluatedEntries.every((i: boolean) => i === true);\n\n if (attrIsTrue) {\n newAttributes[attrField] = true;\n } else if (\n attrField === \"readonly\" &&\n !attrIsTrue &&\n widgetType === \"button\"\n ) {\n // Buttons with readonly false will have to override the default readonly\n newAttributes[attrField] = false;\n }\n }\n\n return newAttributes;\n};\n\nconst evaluateAttributes = ({\n tagAttributes,\n values,\n fields,\n widgetType,\n}: {\n tagAttributes: any;\n values: any;\n fields: any;\n widgetType?: string;\n}) => {\n const newTagAttributes = tagAttributes.attrs\n ? parseAttributes({\n attrs: tagAttributes.attrs,\n values,\n fields,\n widgetType,\n })\n : {};\n\n return { ...tagAttributes, ...newTagAttributes, attrs: undefined };\n};\n\nexport { evaluateAttributes, replaceEntities };\n","import Widget from \"./Widget\";\nimport { replaceEntities, isTrue } from \"./helpers/attributeParser\";\n\nclass Field extends Widget {\n /**\n * Field identifier\n *\n * Corresponds to the field's name attribute from xml\n */\n _id: string = \"\";\n get id(): string {\n return this._id;\n }\n set id(value: string) {\n this._id = value;\n }\n\n /**\n * Label\n */\n _label: string = \"\";\n get label(): string {\n return this._label;\n }\n set label(value: string) {\n this._label = value;\n }\n\n /**\n * No label\n *\n * This field hasn't got to show the label\n *\n */\n _nolabel: boolean = false;\n get nolabel(): boolean {\n return this._nolabel;\n }\n set nolabel(value: boolean) {\n this._nolabel = value;\n }\n\n /**\n *\n * Required field\n *\n */\n _required: boolean = false;\n get required(): boolean {\n return this._required;\n }\n set required(value: boolean) {\n this._required = value;\n }\n\n /**\n * Tooltip\n */\n _tooltip?: string;\n get tooltip(): string | undefined {\n return this._tooltip;\n }\n set tooltip(value: string | undefined) {\n this._tooltip = value;\n }\n\n /**\n * Tooltip inline\n */\n _tooltipInline: boolean = false;\n get tooltipInline(): boolean {\n return this._tooltipInline;\n }\n set tooltipInline(value: boolean) {\n this._tooltipInline = value;\n }\n\n\n /**\n * Activated (default is true)\n */\n _activated: boolean = true;\n get activated(): boolean {\n return this._activated;\n }\n set activated(value: boolean) {\n this._activated = value;\n }\n\n /**\n * Sum - sum parameter (label), this will mean that we have to sum this field in the tree\n */\n _sum?: string;\n get sum(): string | undefined {\n return this._sum;\n }\n set sum(value: string | undefined) {\n this._sum = value;\n }\n\n /**\n * Values and keys\n */\n _selectionValues: Map<string, string> = new Map([]);\n get selectionValues(): Map<string, string> {\n return this._selectionValues;\n }\n set selectionValues(value: Map<string, string>) {\n this._selectionValues = value;\n }\n\n constructor(props: any) {\n super(props);\n\n // Activated by default\n this._activated = true;\n\n if (props) {\n if (props.name) {\n this._id = props.name;\n }\n\n if (props.activated) {\n this._activated = props.activated;\n }\n\n if (props.string) {\n this._label = replaceEntities(props.string);\n }\n\n if (props.help) {\n this._tooltip = replaceEntities(props.help);\n }\n\n if (\n props.nolabel &&\n (props.nolabel === \"1\" ||\n (typeof props.nolabel === \"boolean\" && props.nolabel === true))\n ) {\n this._nolabel = true;\n }\n\n if (\n props.required &&\n (props.required === \"1\" ||\n props.required === true ||\n props.required === \"True\")\n ) {\n this._required = true;\n }\n\n if (props.sum) {\n this._sum = props.sum;\n }\n\n if (props.selection) {\n this._selectionValues = new Map(props.selection);\n }\n\n if (props.help_inline) {\n this.tooltipInline = isTrue(props.help_inline);\n }\n }\n }\n\n /**\n * Returns this instance in case this id matches param id.\n * @param {string} id id (name) to find\n */\n findById(id: string): Field | null {\n let r: Field | null = null;\n if (this._id === id) {\n r = this;\n }\n return r;\n }\n}\n\nexport default Field;\n","import Field from \"./Field\";\n\nclass Avatar extends Field {}\n\n\nexport default Avatar;\n","import Widget from \"./Widget\";\n\nclass NewLine extends Widget {\n findById(id: string): null {\n return null;\n }\n}\n\nexport default NewLine;\n","import Field from \"./Field\";\n\n\ntype LabelType = \"secondary\" | \"success\" | \"warning\" | \"danger\" | \"default\";\ntype LabelSize = 1 | 2 | 3 | 4 | 5 | undefined;\n\nclass Label extends Field {\n /**\n * Label text\n */\n _text: string = \"\";\n get text(): string {\n return this._text;\n }\n set text(value: string) {\n this._text = value;\n }\n\n /**\n * Align text\n */\n _align: string = \"left\";\n get align(): string {\n return this._align;\n }\n set align(value: string) {\n this._align = value;\n }\n\n /**\n * Label type\n */\n _labelType: LabelType = \"default\";\n get labelType(): LabelType {\n return this._labelType;\n }\n set labelType(value: LabelType) {\n this._labelType = value;\n }\n\n /**\n * Label size\n */\n _labelSize: LabelSize = undefined;\n get labelSize(): LabelSize {\n return this._labelSize;\n }\n set labelSize(value: LabelSize) {\n this._labelSize = value;\n }\n\n\n /**\n * Id of the field that this label goes with. Null if it's an independent label\n */\n _fieldForLabel: string | null = null;\n get fieldForLabel(): string | null {\n return this._fieldForLabel;\n }\n set fieldForLabel(value: string | null) {\n this._fieldForLabel = value;\n }\n\n constructor(props?: any) {\n super({ ...props, nolabel: true });\n\n if (props?.fieldForLabel) {\n this._fieldForLabel = props.fieldForLabel;\n }\n if (props.widget_props) {\n if (this.parsedWidgetProps.label_type) {\n this.labelType = this.parsedWidgetProps.label_type;\n }\n if (this.parsedWidgetProps.label_size) {\n this.labelSize = this.parsedWidgetProps.label_size;\n }\n }\n }\n}\n\nexport default Label;\n","import Field from \"./Field\";\nimport NewLine from \"./NewLine\";\nimport Widget from \"./Widget\";\nimport Label from \"./Label\";\n\ntype AddWidgetOptions = {\n addLabel: boolean;\n};\n\nclass Container {\n /**\n * Number of columns the container is divided\n */\n _columns: number;\n get columns(): number {\n return this._columns;\n }\n set columns(value: number) {\n this._columns = value;\n }\n\n /**\n * Number of columns to use\n */\n _colspan: number;\n get colspan(): number {\n return this._colspan;\n }\n set colspan(value: number) {\n this._colspan = value;\n }\n\n /**\n * Number of rows\n */\n _rows: Widget[][];\n get rows(): Widget[][] {\n return this._rows;\n }\n set rows(value: Widget[][]) {\n this._rows = value;\n }\n\n _index: number;\n get index(): number {\n return this._index;\n }\n\n /**\n * Determines if widget is read only (default is false)\n */\n _readOnly: boolean;\n get readOnly(): boolean {\n return this._readOnly;\n }\n set readOnly(value: boolean) {\n this._readOnly = value;\n }\n\n /**\n * Unique key for container\n */\n _key?: string;\n get key(): string | undefined {\n return this._key;\n }\n set key(value: string | undefined) {\n this._key = value;\n }\n\n constructor(\n columns: number = 4,\n colspan: number = 6,\n readOnly: boolean = false,\n key: string | undefined = undefined\n ) {\n this._columns = columns;\n this._colspan = colspan;\n this._rows = [[]];\n this._index = 0;\n this._readOnly = readOnly;\n this._key = key;\n }\n\n /**\n * Returns the next free position\n */\n freePosition(): number {\n const span = this._rows[this._index]\n .filter((el) => {\n return !el.invisible;\n })\n .reduce((prev, current) => {\n return prev + current.colspan;\n }, 0);\n return this._columns - span;\n }\n\n addWidget(widget: Widget, options?: AddWidgetOptions) {\n const widgetsToAdd: Widget[] = [];\n const addLabel = options ? options.addLabel : true;\n\n if (widget instanceof NewLine) {\n this._rows.push([]);\n this._index++;\n return;\n }\n\n if (widget.colspan > this._columns) {\n // Widget colspan is greater than container columns, so we change widget\n // colspan to fit container columns.\n widget.colspan = this._columns;\n }\n\n // If the container is set to readonly, reflect it to its children\n widget.readOnly = widget.readOnly || this.readOnly;\n\n // For fields without nolabel we add a preceding label widget\n if (addLabel && widget instanceof Field && !widget.nolabel) {\n if (widget.colspan > 1) {\n widget.colspan -= 1; // We substract one colspan for the corresponding label\n }\n\n const label = new Label({\n name: widget.id + \"_label\",\n string: widget.label,\n invisible: widget.invisible,\n help: widget.tooltip,\n fieldForLabel: widget.id,\n key: widget.key + \"-label\",\n });\n label.type = \"label\";\n\n widgetsToAdd.push(label);\n widgetsToAdd.push(widget);\n } else {\n widgetsToAdd.push(widget);\n }\n\n const widgetsColspan = widgetsToAdd.reduce(\n (accumulator: number, currentWidget: Widget) => {\n return accumulator + currentWidget.colspan;\n },\n 0\n );\n\n if (widgetsColspan > this.freePosition()) {\n this._rows.push([]);\n this._index++;\n }\n\n this._rows[this._index] = this._rows[this._index].concat(widgetsToAdd);\n }\n\n /**\n * Traverses children to find a matching container or widget with the exact same id.\n * @param {string} id id (name) of the field or container to find\n */\n findById(id: string): Widget | null {\n let r: Widget | null = null;\n if (this._rows && this._rows.length) {\n this._rows.forEach((row) => {\n if (r) {\n // Item has been found.\n return;\n }\n\n if (row && row.length) {\n row.forEach((item) => {\n if (r) {\n // Item has been found.\n return;\n }\n if (item) {\n r = item.findById(id);\n }\n });\n }\n });\n }\n return r;\n }\n}\n\nexport default Container;\n","import Widget from \"./Widget\";\nimport Container from \"./Container\";\nimport { replaceEntities } from \"./helpers/attributeParser\";\n\nclass ContainerWidget extends Widget {\n /**\n * Field identifier\n *\n * Corresponds to the field's name attribute from xml\n */\n _id: string = \"\";\n get id(): string {\n return this._id;\n }\n set id(value: string) {\n this._id = value;\n }\n\n static _defaultColspan: number = 6;\n static get defaultColspan(): number {\n return ContainerWidget._defaultColspan;\n }\n static set defaultColspan(value: number) {\n ContainerWidget._defaultColspan = value;\n }\n\n /**\n * Container\n */\n _container: Container;\n get container(): Container {\n return this._container;\n }\n set container(value: Container) {\n this._container = value;\n }\n\n get colspan(): number {\n return this._container.colspan;\n }\n set colspan(value: number) {\n this._container.colspan = +value;\n }\n\n /**\n * Must expand widget\n */\n _mustExpand: boolean = false;\n get mustExpand(): boolean {\n return this._mustExpand;\n }\n set mustExpand(value: boolean) {\n this._mustExpand = value;\n }\n\n /**\n * Container label\n */\n _label: string = \"\";\n get label(): string {\n return this._label;\n }\n set label(value: string) {\n this._label = value;\n }\n\n constructor(props?: any) {\n super(props);\n\n this._container = new Container(\n props && props.col,\n ContainerWidget._defaultColspan,\n this.readOnly,\n props && props.key\n );\n\n if (props) {\n if (props.name) {\n this._id = props.name;\n }\n\n if (props.colspan) {\n this._container.colspan = +props.colspan;\n } else {\n this._mustExpand = true;\n }\n\n if (props.string) {\n this._label = replaceEntities(props.string);\n }\n }\n }\n\n /**\n * Calls container's findById method to find the widgets matching with param id\n * @param {string} id id to find\n */\n findById(id: string): Widget | null {\n if (id === this.id) {\n return this;\n }\n\n return this.container.findById(id);\n }\n}\n\nexport default ContainerWidget;\n","import ContainerWidget from \"./ContainerWidget\";\nimport Page from \"./Page\";\n\nexport type TabPosition = \"top\" | \"bottom\" | \"left\" | \"right\";\n\nclass Notebook extends ContainerWidget {\n static _defaultColspan: number = 3;\n static get defaultColspan(): number {\n return Notebook._defaultColspan;\n }\n static set defaultColspan(value: number) {\n Notebook._defaultColspan = value;\n }\n\n _tabPosition: TabPosition = \"top\";\n get tabPosition(): TabPosition {\n return this._tabPosition;\n }\n set tabPosition(value: TabPosition) {\n this._tabPosition = value;\n }\n\n _pages: Page[] = [];\n get pages(): Page[] {\n // @ts-ignore\n return [].concat.apply([], this._container.rows!) as Page[];\n }\n\n constructor(props: any) {\n super(props);\n this.colspan = Notebook._defaultColspan;\n\n if (props) {\n if (props.colspan) {\n this.colspan = props.colspan;\n }\n if (props.tabpos) {\n this._tabPosition = props.tabpos;\n }\n }\n }\n}\n\nexport default Notebook;\n","import ContainerWidget from \"./ContainerWidget\";\n\nclass Page extends ContainerWidget {\n\n _icon: string | null = null;\n get icon(): string | null {\n return this._icon;\n }\n set icon(value: string | null) {\n this._icon = value;\n }\n\n constructor(props: any) {\n super(props);\n if (props.icon) {\n this._icon = props.icon;\n }\n }\n}\n\nexport default Page;\n","import ContainerWidget from \"./ContainerWidget\";\nimport {replaceEntities} from \"./helpers/attributeParser\";\n\nclass Group extends ContainerWidget {\n\n _icon: string | null = null;\n get icon(): string | null {\n return this._icon;\n }\n set icon(value: string | null) {\n this._icon = value;\n }\n constructor(props: any) {\n super(props);\n if (props) {\n if (props.icon) {\n this._icon = props.icon;\n }\n }\n }\n}\n\nexport default Group;","import Field from \"./Field\";\nimport { replaceEntities } from \"./helpers/attributeParser\";\n\nclass Button extends Field {\n /**\n * Type\n */\n _buttonType: \"workflow\" | \"action\" | \"object\" | \"cancel\" = \"workflow\";\n get buttonType() {\n return this._buttonType;\n }\n set buttonType(value) {\n this._buttonType = value;\n }\n\n /**\n * Button caption\n */\n _caption: string = \"\";\n get caption(): string {\n return this._caption;\n }\n set caption(value: string) {\n this._caption = value;\n }\n\n /**\n * Button icon\n */\n _icon: string | undefined;\n get icon(): string | undefined {\n return this._icon;\n }\n set icon(value: string | undefined) {\n this._icon = value;\n }\n\n /**\n * Confirm string for modal in button types workflow\n */\n _confirmMessage: string = \"\";\n get confirmMessage(): string {\n return this._confirmMessage;\n }\n set confirm(value: string) {\n this._confirmMessage = value;\n }\n\n _primary: boolean = false;\n get primary(): boolean {\n return this._primary;\n }\n set primary(value: boolean) {\n this._primary = value;\n }\n\n _danger: boolean = false;\n get danger(): boolean {\n return this._danger;\n }\n set danger(value: boolean) {\n this._danger = value;\n }\n\n constructor(props: any) {\n super({\n ...props,\n nolabel: props?.nolabel !== undefined ? props.nolabel : true,\n });\n\n if (props) {\n if (props.string) {\n this._caption = replaceEntities(props.string);\n }\n\n if (props.buttonType) {\n this._buttonType = props.buttonType;\n }\n\n if (props.confirm) {\n this._confirmMessage = replaceEntities(props.confirm);\n }\n\n if (props.special && props.special === \"cancel\") {\n this._buttonType = \"cancel\";\n }\n\n if (props.icon) {\n this._icon = props.icon;\n }\n if (props.primary) {\n const primary = props.primary;\n if (primary === \"1\" || primary === 1 || primary === true) {\n this._primary = true\n }\n }\n if (props.danger) {\n const danger = props.danger;\n if (danger === \"1\" || danger === 1 || danger === true) {\n this._danger = true\n }\n }\n }\n }\n}\n\nexport default Button;\n","import Button from \"./Button\";\nimport ContainerWidget from \"./ContainerWidget\";\n\nclass ButtonGroup extends ContainerWidget {\n\n _defaultName: string = \"\";\n get defaultName(): string {\n return this._defaultName;\n }\n\n get defaultButton(): Button | undefined {\n const btn = this.buttons.find(button => button.id === this.defaultName);\n return btn ? btn : this.buttons[0];\n }\n\n get secondaryButtons(): Button[] {\n const btns = this.buttons.filter(button => button.id !== this.defaultButton?.id);\n return btns;\n }\n\n get buttons(): Button[] {\n return this._container.rows[0].filter((b) => !b.invisible) as Button[];\n }\n\n constructor(props: any) {\n super(props);\n if (props.default) {\n this._defaultName = props.default;\n }\n }\n}\n\nexport default ButtonGroup;","import Field from \"./Field\";\n\n/**\n * One-line input with a length limit.\n */\nclass Char extends Field {\n /**\n * Field place holder\n */\n _placeholder: string = \"\";\n get placeholder(): string {\n return this._placeholder;\n }\n set placeholder(value: string) {\n this._placeholder = value;\n }\n\n /**\n * Field size\n */\n _size: number | undefined;\n get size(): number | undefined {\n return this._size;\n }\n set size(value: number | undefined) {\n this._size = value;\n }\n\n _isPassword: boolean = false;\n get isPassword(): boolean {\n return this._isPassword;\n }\n set isPassword(value: boolean) {\n this._isPassword = value;\n }\n\n _translatable: boolean = false;\n get translatable(): boolean {\n return this._translatable;\n }\n set translatable(value: boolean) {\n this._translatable = value;\n }\n\n constructor(props: any) {\n super(props);\n\n if (props) {\n if (props.size) {\n this._size = props.size;\n }\n\n if (props.password) {\n this.isPassword = props.password === \"True\" ? true : false;\n }\n\n if (props.translate) {\n this.translatable =\n props.translate === \"True\" || props.translate === true ? true : false;\n }\n }\n }\n}\n\nexport default Char;\n","import Field from \"./Field\";\nimport { replaceEntities } from \"./helpers/attributeParser\";\n\n/**\n * Multiline input with no length limit.\n */\nclass Text extends Field {\n /**\n * Field place holder\n */\n _placeholder: string = \"\";\n get placeholder(): string {\n return this._placeholder;\n }\n set placeholder(value: string) {\n this._placeholder = value;\n }\n\n /**\n * Must expand widget\n */\n _mustExpand: boolean = false;\n get mustExpand(): boolean {\n return this._mustExpand;\n }\n set mustExpand(value: boolean) {\n this._mustExpand = value;\n }\n\n /**\n * Height\n */\n _height: number | undefined;\n get height(): number | undefined {\n return this._height;\n }\n set height(value: number | undefined) {\n this._height = value;\n }\n\n _translatable: boolean = false;\n get translatable(): boolean {\n return this._translatable;\n }\n set translatable(value: boolean) {\n this._translatable = value;\n }\n\n constructor(props: any) {\n super(props);\n\n if (props) {\n if (props.placeholder) {\n this._placeholder = replaceEntities(props.placeholder);\n }\n\n if (!props.colspan) {\n this._mustExpand = true;\n }\n\n if (props.height) {\n try {\n this._height = parseInt(props.height);\n } catch (e) {\n this._height = undefined;\n }\n }\n\n if (props.translate) {\n this.translatable =\n props.translate === \"True\" || props.translate === true ? true : false;\n }\n }\n }\n}\n\nexport default Text;\n","import Field from \"./Field\";\n\n/**\n * Selection field for key-value lists\n */\nclass Selection extends Field {\n /**\n * Field size\n */\n _size: number = 150;\n get size(): number {\n return this._size;\n }\n set size(value: number) {\n this._size = value;\n }\n\n constructor(props: any) {\n super(props);\n\n if (props) {\n if (props.size) {\n this._size = props.size;\n }\n }\n }\n}\n\nexport default Selection;\n","import Field from \"./Field\";\n\n/**\n * A many2one relationship field\n */\nclass Many2one extends Field {\n /**\n * Field size\n */\n _size: number = 150;\n get size(): number {\n return this._size;\n }\n set size(value: number) {\n this._size = value;\n }\n\n /**\n * Relation\n */\n _relation: string = \"\";\n get relation(): string {\n return this._relation;\n }\n set relation(value: string) {\n this._relation = value;\n }\n\n constructor(props: any) {\n super(props);\n\n if (props) {\n if (props.size) {\n this._size = props.size;\n }\n\n if (props.relation) {\n this._relation = props.relation;\n }\n }\n }\n}\n\nexport default Many2one;\n","import Text from \"./Text\";\n\nclass Markdown extends Text {}\n\n\nexport default Markdown;\n","import Field from \"./Field\";\n\n/**\n * Boolean input\n */\nclass Boolean extends Field {\n constructor(props?: any) {\n super(props);\n }\n}\n\nexport default Boolean;\n","import Field from \"./Field\";\n\n/**\n * Integer input\n */\nclass Integer extends Field {\n\n constructor(props?: any) {\n super(props);\n }\n}\n\nexport default Integer;\n","import Field from \"./Field\";\n\n/**\n * Float input\n */\nclass Float extends Field {\n\n /**\n * Integer digits\n *\n * Number of integer digits that will be part of the float\n */\n _integerDigits: number = 16;\n get integerDigits(): number {\n return this._integerDigits;\n }\n set integerDigits(value: number) {\n this._integerDigits = value;\n }\n\n /**\n * Decimal digits\n *\n * Number of decimal digits that will be part of the float\n */\n _decimalDigits: number = 2;\n get decimalDigits(): number {\n return this._decimalDigits;\n }\n set decimalDigits(value: number) {\n this._decimalDigits = value;\n }\n\n constructor(props?: any) {\n super(props);\n\n if (props?.digits) {\n const [integers, decimals] = props.digits;\n this._integerDigits = integers;\n this._decimalDigits = decimals;\n }\n }\n}\n\nexport default Float;\n","import Float from \"./Float\";\n\n/**\n * FloatTime input\n */\nclass FloatTime extends Float {}\n\nexport default FloatTime;\n","import Float from \"./Float\";\n\n/**\n * ProgressBar input\n */\nclass ProgressBar extends Float {}\n\nexport default ProgressBar;\n","import Field from \"./Field\";\n\n/**\n * Date input\n */\nclass Date extends Field {\n constructor(props?: any) {\n super(props);\n }\n}\n\nexport default Date;\n","import Field from \"./Field\";\n\n/**\n * DateTime input\n */\nclass DateTime extends Field {\n constructor(props?: any) {\n super(props);\n }\n}\n\nexport default DateTime;\n","import Field from \"./Field\";\n\n/**\n * A Many2many relationship field\n */\nclass Many2many extends Field {\n /**\n * Field size\n */\n _size: number = 150;\n get size(): number {\n return this._size;\n }\n set size(value: number) {\n this._size = value;\n }\n\n /**\n * Relation\n */\n _relation: string = \"\";\n get relation(): string {\n return this._relation;\n }\n set relation(value: string) {\n this._relation = value;\n }\n\n /**\n * Must expand widget\n */\n _mustExpand: boolean = false;\n get mustExpand(): boolean {\n return this._mustExpand;\n }\n set mustExpand(value: boolean) {\n this._mustExpand = value;\n }\n\n constructor(props: any) {\n super(props);\n\n if (props) {\n if (props.size) {\n this._size = props.size;\n }\n\n if (props.relation) {\n this._relation = props.relation;\n }\n\n if (!props.colspan) {\n this._mustExpand = true;\n }\n }\n }\n}\n\nexport default Many2many;\n","import Field from \"./Field\";\n\n/**\n * A One2Many relationship field\n */\nclass One2many extends Field {\n /**\n * Field size\n */\n _size: number = 150;\n get size(): number {\n return this._size;\n }\n set size(value: number) {\n this._size = value;\n }\n\n /**\n * Relation\n */\n _relation: string = \"\";\n get relation(): string {\n return this._relation;\n }\n set relation(value: string) {\n this._relation = value;\n }\n\n /**\n * Inv_field\n */\n _inv_field: string | undefined;\n get inv_field(): string | undefined {\n return this._inv_field;\n }\n set inv_field(value: string | undefined) {\n this._inv_field = value;\n }\n\n /**\n * Views\n */\n _views: any = null;\n get views(): any {\n return this._views;\n }\n set views(value: any) {\n this._views = value;\n }\n\n /**\n * Mode\n */\n _mode: Array<string> = [];\n get mode(): Array<string> {\n return this._mode;\n }\n set mode(value: Array<string>) {\n this._mode = value;\n }\n\n /**\n * Must expand widget\n */\n _mustExpand: boolean = false;\n get mustExpand(): boolean {\n return this._mustExpand;\n }\n set mustExpand(value: boolean) {\n this._mustExpand = value;\n }\n\n constructor(props: any) {\n super(props);\n\n if (props) {\n if (props.size) {\n this._size = props.size;\n }\n\n if (props.relation) {\n this._relation = props.relation;\n }\n\n if (props.mode) {\n this._mode = props.mode.split(\",\");\n }\n\n if (props.views) {\n this._views = props.views;\n }\n\n if (props.colspan) {\n this.colspan = props.colspan;\n } else {\n this._mustExpand = true;\n }\n\n if (props.inv_field) {\n this._inv_field = props.inv_field;\n }\n }\n }\n}\n\nexport default One2many;\n","import Widget from \"./Widget\";\nimport { replaceEntities } from \"./helpers/attributeParser\";\n\nclass Separator extends Widget {\n /**\n * Label\n */\n _label: string = \"\";\n get label(): string {\n return this._label;\n }\n set label(value: string) {\n this._label = value;\n }\n\n _icon: string | null = null;\n get icon(): string | null {\n return this._icon;\n }\n set icon(value: string | null) {\n this._icon = value;\n }\n\n constructor(props: any) {\n super(props);\n\n if (props) {\n if (props.string) {\n this._label = replaceEntities(props.string);\n }\n if (props.icon) {\n this._icon = props.icon;\n }\n }\n }\n\n findById(id: string): null {\n return null;\n }\n}\n\nexport default Separator;\n","import Selection from \"./Selection\";\n\n/**\n * Reference field for key-value Many2One behaviour\n */\nclass Reference extends Selection {\n\n}\n\nexport default Reference;\n","import Field from \"./Field\";\n\n/**\n * Binary base64 field\n */\nclass Binary extends Field {\n /**\n * Filename field name\n */\n _filenameField: string = \"\";\n get filenameField(): string {\n return this._filenameField;\n }\n set filenameField(value: string) {\n this._filenameField = value;\n }\n\n constructor(props: any) {\n super(props);\n\n if (props) {\n if (props.filename) {\n this._filenameField = props.filename;\n }\n }\n }\n}\n\nexport default Binary;\n","import Field from \"./Field\";\n\n/**\n * Image base64 field\n */\nclass Image extends Field {}\n\nexport default Image;\n","import Field from \"./Field\";\n\nclass FiberGrid extends Field {\n constructor(props: any) {\n super(props);\n }\n}\n\nexport default FiberGrid;\n","import One2many from \"./One2many\";\n\nclass Timeline extends One2many {\n /**\n * Title field\n */\n _titleField: string;\n get titleField(): string {\n return this._titleField;\n }\n set titleField(value: string) {\n this._titleField = value;\n }\n\n /**\n * Summary field\n */\n _summaryField: string;\n get summaryField(): string {\n return this._summaryField;\n }\n set summaryField(value: string) {\n this._summaryField = value;\n }\n\n get iconField(): string {\n return this.parsedWidgetProps.iconField;\n }\n\n get colorField(): string {\n return this.parsedWidgetProps.colorField;\n }\n\n constructor(props: any) {\n super(props);\n this._titleField = \"\";\n this._summaryField = \"\";\n if (this._parsedWidgetProps) {\n this._titleField = this._parsedWidgetProps.titleField;\n this._summaryField = this.parsedWidgetProps.summaryField;\n }\n }\n}\n\nexport default Timeline;\n","import Selection from \"./Selection\";\n\nclass Indicator extends Selection {\n _nolabel: boolean = true;\n\n _card: boolean;\n get card(): boolean {\n return this._card;\n }\n set card(value: boolean) {\n this._card = value;\n }\n _icon: string;\n get icon(): string {\n return this._icon;\n }\n set icon(value: string) {\n this._icon = value;\n }\n _suffix: string;\n get suffix(): string {\n return this._suffix;\n }\n set suffix(value: string) {\n this._suffix = value;\n }\n\n constructor(props: any) {\n super(props);\n this._card = false;\n this._icon = \"\";\n this._suffix = \"\";\n if (this._parsedWidgetProps) {\n this._card = this._parsedWidgetProps.card || false;\n this._icon = this._parsedWidgetProps.icon || \"\";\n this._suffix = this._parsedWidgetProps.suffix || \"\";\n }\n }\n}\n\n\nexport default Indicator;\n","import Field from \"./Field\";\n\n/**\n * A Tags widget\n */\nclass MultiCheckbox extends Field {\n /**\n * Field size\n */\n _size: number = 150;\n get size(): number {\n return this._size;\n }\n set size(value: number) {\n this._size = value;\n }\n\n /**\n * Relation\n */\n _relation: string = \"\";\n get relation(): string {\n return this._relation;\n }\n set relation(value: string) {\n this._relation = value;\n }\n\n /**\n * Inv_field\n */\n _inv_field: string | undefined;\n get inv_field(): string | undefined {\n return this._inv_field;\n }\n set inv_field(value: string | undefined) {\n this._inv_field = value;\n }\n\n\n /**\n * field to define the value to show\n */\n _field: string = \"name\";\n get field(): string {\n return this._field;\n }\n set field(value: string) {\n this._field = value;\n }\n\n _columns: number = 4;\n get columns(): number {\n return this._columns;\n }\n set columns(value: number) {\n this._columns = value;\n }\n\n constructor(props: any) {\n super(props);\n\n if (props) {\n if (props.size) {\n this._size = props.size;\n }\n\n if (props.relation) {\n this._relation = props.relation;\n }\n\n if (props.inv_field) {\n this._inv_field = props.inv_field;\n }\n if (this.parsedWidgetProps.hasOwnProperty('field')) {\n this._field = this.parsedWidgetProps.field\n }\n if (this.parsedWidgetProps.columns) {\n this._columns = this.parsedWidgetProps.columns;\n }\n }\n }\n}\n\nexport default MultiCheckbox;\n","import MultiCheckbox from \"./MultiCheckbox\";\n\n/**\n * A Tags widget\n */\nclass Tags extends MultiCheckbox {}\n\nexport default Tags;\n","import Selection from \"./Selection\";\n\n/**\n * A Tag widget\n */\nclass Tag extends Selection {\n get colors(): any | \"auto\" {\n return this._parsedWidgetProps.colors || {};\n }\n}\n\nexport default Tag;\n","import Selection from \"./Selection\";\n\ntype directionType = \"horizontal\" | \"vertical\";\n\n/**\n * Selection field for key-value lists\n */\nclass Radio extends Selection {\n\n /**\n * Define the direction\n */\n _direction: directionType = \"horizontal\";\n get direction(): directionType {\n return this._direction;\n }\n set direction(value: directionType) {\n this._direction = value;\n }\n\n constructor(props: any) {\n super(props);\n\n if (props) {\n if (this.parsedWidgetProps.hasOwnProperty('direction')) {\n this._direction = this.parsedWidgetProps.direction\n }\n }\n }\n\n}\n\nexport default Radio;\n","import Boolean from \"./Boolean\";\n\n/**\n * Switch\n */\nclass Switch extends Boolean {}\n\nexport default Switch;\n","import Field from \"./Field\";\n\n/**\n * A many2one relationship field\n */\nclass Steps extends Field {\n\n /**\n * Relation\n */\n _relation: string = \"\";\n get relation(): string {\n return this._relation;\n }\n set relation(value: string) {\n this._relation = value;\n }\n\n _errorField: string | null = null;\n get errorField(): string | null {\n return this._errorField;\n }\n set errorField(value: string | null) {\n this._errorField = value;\n }\n\n constructor(props: any) {\n super(props);\n\n if (props) {\n \n if (props.relation) {\n this._relation = props.relation;\n }\n\n if (this.parsedWidgetProps.hasOwnProperty('error_field')) {\n this._errorField = this.parsedWidgetProps.error_field;\n }\n }\n }\n}\n\nexport default Steps;\n","import Text from \"./Text\";\n\n/**\n * A CodeEditor widget\n */\nclass CodeEditor extends Text {\n\n _lang: string | null = null;\n get lang(): string | null {\n return this._lang;\n }\n set lang(value: string | null) {\n this._lang = value;\n }\n\n constructor(props: any) {\n super(props);\n\n if (props) {\n \n if (this.parsedWidgetProps.lang) {\n this._lang = this.parsedWidgetProps.lang;\n }\n }\n }\n}\n\nexport default CodeEditor;\n","import Field from \"./Field\";\n\n/**\n * Time input\n */\nclass Time extends Field {\n constructor(props?: any) {\n super(props);\n }\n}\n\nexport default Time;\n","import Notebook from \"./Notebook\";\nimport Page from \"./Page\";\nimport Group from \"./Group\";\nimport Button from \"./Button\";\nimport ButtonGroup from \"./ButtonGroup\";\nimport Label from \"./Label\";\nimport Char from \"./Char\";\nimport Text from \"./Text\";\nimport Selection from \"./Selection\";\nimport Many2one from \"./Many2one\";\nimport Markdown from \"./Markdown\";\nimport Boolean from \"./Boolean\";\nimport Integer from \"./Integer\";\nimport Widget from \"./Widget\";\nimport Float from \"./Float\";\nimport FloatTime from \"./FloatTime\";\nimport ProgressBar from \"./ProgressBar\";\nimport Date from \"./Date\";\nimport DateTime from \"./DateTime\";\nimport Many2many from \"./Many2many\";\nimport One2many from \"./One2many\";\nimport NewLine from \"./NewLine\";\nimport Separator from \"./Separator\";\nimport Reference from \"./Reference\";\nimport Binary from \"./Binary\";\nimport Image from \"./Image\";\nimport FiberGrid from \"./FiberGrid\";\nimport Timeline from \"./Timeline\";\nimport Indicator from \"./Indicator\";\nimport Tags from \"./Tags\";\nimport Tag from \"./Tag\";\nimport Radio from \"./Radio\";\nimport MultiCheckbox from \"./MultiCheckbox\";\nimport Switch from \"./Switch\";\nimport Steps from \"./Steps\";\nimport CodeEditor from \"./CodeEditor\";\nimport Avatar from \"./Avatar\";\nimport Time from \"./Time\";\n\nclass WidgetFactory {\n /**\n * Widget class\n */\n _widgetClass: any;\n\n setWidgetClass(type: string): void {\n switch (type) {\n case \"notebook\":\n this._widgetClass = Notebook;\n break;\n case \"page\":\n this._widgetClass = Page;\n break;\n case \"group\":\n this._widgetClass = Group;\n break;\n case \"label\":\n this._widgetClass = Label;\n break;\n case \"char\":\n this._widgetClass = Char;\n break;\n case \"text\":\n this._widgetClass = Text;\n break;\n case \"button\":\n this._widgetClass = Button;\n break;\n case \"buttonGroup\":\n this._widgetClass = ButtonGroup;\n break;\n case \"selection\":\n this._widgetClass = Selection;\n break;\n case \"many2one\":\n this._widgetClass = Many2one;\n break;\n case \"boolean\":\n this._widgetClass = Boolean;\n break;\n case \"integer\":\n this._widgetClass = Integer;\n break;\n case \"float\":\n this._widgetClass = Float;\n break;\n case \"float_time\":\n this._widgetClass = FloatTime;\n break;\n case \"date\":\n this._widgetClass = Date;\n break;\n case \"datetime\":\n this._widgetClass = DateTime;\n break;\n case \"progressbar\":\n this._widgetClass = ProgressBar;\n break;\n case \"many2many\":\n this._widgetClass = Many2many;\n break;\n case \"markdown\":\n this._widgetClass = Markdown;\n break;\n case \"one2many\":\n case \"one2many_list\":\n this._widgetClass = One2many;\n break;\n case \"newline\":\n this._widgetClass = NewLine;\n break;\n case \"separator\":\n this._widgetClass = Separator;\n break;\n case \"url\":\n this._widgetClass = Char;\n break;\n case \"email\":\n this._widgetClass = Char;\n break;\n case \"reference\":\n this._widgetClass = Reference;\n break;\n case \"binary\":\n this._widgetClass = Binary;\n break;\n case \"image\":\n this._widgetClass = Image;\n break;\n case \"fiber_grid\":\n this._widgetClass = FiberGrid;\n break;\n case \"timeline\":\n this._widgetClass = Timeline;\n break;\n case \"indicator\":\n this._widgetClass = Indicator;\n break;\n case \"tags\":\n this._widgetClass = Tags;\n break;\n case \"tag\":\n this._widgetClass = Tag;\n break;\n case \"avatar\":\n this._widgetClass = Avatar;\n break;\n case \"radio\":\n this._widgetClass = Radio;\n break;\n case \"multicheckbox\":\n this._widgetClass = MultiCheckbox;\n break;\n case \"switch\":\n this._widgetClass = Switch;\n break;\n case \"steps\":\n this._widgetClass = Steps;\n break;\n case \"codeeditor\":\n this._widgetClass = CodeEditor;\n break;\n case \"time\":\n this._widgetClass = Time;\n break\n\n default:\n break;\n }\n }\n\n createWidget(type: string, props: any) {\n let finalType = type;\n\n this.setWidgetClass(type);\n\n // Fallback to default widget, we try to use the fields type widget if it exists\n if (this._widgetClass === undefined) {\n finalType = props.fieldsWidgetType;\n this.setWidgetClass(props.fieldsWidgetType);\n }\n\n if (this._widgetClass === undefined) {\n this._widgetClass = Widget;\n }\n\n // TODO: Widget Class constructors should use only the props needed, not all props.\n switch (type) {\n // Specific cases (only selected props should be used)\n case \"notebook\":\n case \"page\":\n case \"group\":\n return new this._widgetClass({ ...props, type: finalType });\n case \"button\":\n return new this._widgetClass({\n ...props,\n type,\n buttonType: props.type,\n });\n // Generic case\n default:\n return new this._widgetClass({ ...props, type: finalType });\n }\n }\n}\n\nexport default WidgetFactory;\n","const evaluateStates = ({\n fieldName,\n values,\n fields,\n}: {\n fieldName: string;\n values: any;\n fields: any;\n}) => {\n if (!fieldName) {\n return {};\n }\n\n const fieldStatesConfig = fields[fieldName]?.states;\n\n if (!fieldStatesConfig) {\n return {};\n }\n\n const newTagStateAttrs: any = {};\n const evaluatedStates: any = {};\n\n for (const stateCondition of Object.keys(fieldStatesConfig)) {\n if (values[\"state\"] === stateCondition) {\n const configAttrValues = fieldStatesConfig[stateCondition];\n\n for (const entryConfig of configAttrValues) {\n const [attribute, value] = entryConfig;\n if (!evaluatedStates[attribute]) {\n evaluatedStates[attribute] = [];\n }\n evaluatedStates[attribute].push(value);\n }\n }\n }\n\n for (const evaluatedState of Object.keys(evaluatedStates)) {\n const values = evaluatedStates[evaluatedState];\n newTagStateAttrs[evaluatedState] = values.some((i: boolean) => i === true);\n }\n\n return newTagStateAttrs;\n};\n\nconst evaluateButtonStates = ({\n states,\n values,\n}: {\n states: string;\n values: any;\n}) => {\n if (!values?.state) {\n return {};\n }\n const splittedStates = states.split(\",\");\n if (splittedStates.length === 0) {\n return {};\n }\n return !splittedStates.includes(values.state) ? { invisible: true } : {};\n};\n\nexport { evaluateStates, evaluateButtonStates };\n","export function getValueForField({\n values = {},\n fieldName,\n fields = {},\n}: {\n values: any;\n fieldName: string;\n fields: any;\n}) {\n const fieldType = fields[fieldName]?.type || \"passthrough\";\n\n if (fieldType === \"many2one\") {\n return values[fieldName] ? values[fieldName][0] || null : false;\n } else if (fieldType === \"one2many\" || fieldType === \"many2many\") {\n return values[fieldName].map((item: any) => item.id);\n } else {\n if (values?.[fieldName]) {\n return values?.[fieldName];\n }\n\n if (fieldName.indexOf(\"'\") !== -1) {\n return fieldName;\n } else {\n return parseInt(fieldName);\n }\n }\n}\n","import { getValueForField } from \"./fieldParser\";\n\nexport const parseContext = ({\n context,\n values,\n fields,\n}: {\n context?: any;\n values?: any;\n fields?: any;\n}) => {\n // TODO: remove try/catch when we know for sure that all the incoming contexts formats are expected\n try {\n if (!context) return undefined;\n\n if (isObject(context)) {\n return context;\n }\n\n if (typeof context !== \"string\") {\n return context;\n }\n\n const parsedContextInJson = tryParseJSON(context);\n if (parsedContextInJson !== null) {\n return parsedContextInJson;\n }\n\n if (context.trim().length === 0) {\n return undefined;\n }\n\n // TODO: maybe this can be accomplished more performant and elegant with regex\n const singleQuotesReplace = context.replace(/\\\"/g, \"'\");\n const strNoWhitespaces = singleQuotesReplace.replace(/\\s/g, \"\");\n var replaceTrue = strNoWhitespaces.replace(/True/g, \"true\");\n var replaceFalse = replaceTrue.replace(/False/g, \"false\");\n const strNoClauLeft = replaceFalse.replace(/\\{/g, \"\");\n const strNoClauRight = strNoClauLeft.replace(/\\}/g, \"\");\n\n const entryValues = strNoClauRight.split(\",\");\n const valuesSplitted = entryValues.map((entry) => {\n return entry.split(\":\");\n });\n\n const parsedContext: any = {};\n\n valuesSplitted.forEach((entry) => {\n const fieldName = entry[1];\n\n if (\n entry[1].indexOf(\"'\") === -1 &&\n entry[1] !== \"true\" &&\n entry[1] !== \"false\"\n ) {\n const valueForField = getValueForField({\n values,\n fields,\n fieldName: fieldName === \"active_id\" ? \"id\" : fieldName,\n });\n parsedContext[entry[0].replace(/'/g, \"\")] = valueForField || undefined;\n } else {\n if (entry[1] === \"true\") {\n parsedContext[entry[0].replace(/'/g, \"\")] = true;\n } else if (entry[1] === \"false\") {\n parsedContext[entry[0].replace(/'/g, \"\")] = false;\n } else {\n parsedContext[entry[0].replace(/'/g, \"\")] = entry[1].replace(\n /'/g,\n \"\"\n );\n }\n }\n });\n\n return parsedContext;\n } catch (e) {\n return undefined;\n }\n};\n\nexport const parseContextFields = (context:string): string[] => {\n const fields: string[] = [];\n try {\n if (!context) return fields;\n\n if (isObject(context)) {\n return fields;\n }\n\n if (typeof context !== \"string\") {\n return fields;\n }\n\n const parsedContextInJson = tryParseJSON(context);\n if (parsedContextInJson !== null) {\n return [];\n }\n\n if (context.trim().length === 0) {\n return fields;\n }\n\n // TODO: maybe this can be accomplished more performant and elegant with regex\n const singleQuotesReplace = context.replace(/\\\"/g, \"'\");\n const strNoWhitespaces = singleQuotesReplace.replace(/\\s/g, \"\");\n var replaceTrue = strNoWhitespaces.replace(/True/g, \"true\");\n var replaceFalse = replaceTrue.replace(/False/g, \"false\");\n const strNoClauLeft = replaceFalse.replace(/\\{/g, \"\");\n const strNoClauRight = strNoClauLeft.replace(/\\}/g, \"\");\n\n const entryValues = strNoClauRight.split(\",\");\n const valuesSplitted = entryValues.map((entry) => {\n return entry.split(\":\");\n });\n\n const parsedContext: any = {};\n\n valuesSplitted.forEach((entry) => {\n const fieldName = entry[1];\n\n if (\n entry[1].indexOf(\"'\") === -1 &&\n entry[1] !== \"true\" &&\n entry[1] !== \"false\"\n ) {\n fields.push(entry[1].replace(/'/g, \"\"))\n }\n });\n\n return fields;\n } catch (e) {\n }\n return fields;\n}\n\nfunction tryParseJSON(str: string): any | null {\n try {\n const parsedJSON = JSON.parse(str.replace(/'/g, '\"'));\n return parsedJSON;\n } catch (error) {\n return null;\n }\n}\n\nfunction isObject(variable: any): boolean {\n return (\n typeof variable === \"object\" &&\n variable !== null &&\n typeof variable !== \"string\"\n );\n}\n","const parseOnChange = (onChangeString: string) => {\n const splitted = onChangeString.trim().replace(\")\", \"\").split(\"(\");\n\n const method = splitted[0];\n const argsGross = splitted[1];\n const argsSplitted = argsGross.split(\",\").map((arg) => arg.trim());\n\n return {\n method,\n args: argsSplitted,\n };\n};\n\nexport { parseOnChange };\n","// ==ClosureCompiler==\n// @output_file_name default.js\n// @compilation_level SIMPLE_OPTIMIZATIONS\n// ==/ClosureCompiler==\n// module.exports = {\n// parse: parse,\n// simplify: simplify,\n// simplifyLostLess: simplifyLostLess,\n// filter: filter,\n// stringify: stringify,\n// toContentString: toContentString,\n// getElementById: getElementById,\n// getElementsByClassName: getElementsByClassName,\n// transformStream: transformStream,\n// };\n\n/**\n * @author: Tobias Nickel\n * @created: 06.04.2015\n * I needed a small xmlparser chat can be used in a worker.\n */\n\n/**\n * @typedef tNode \n * @property {string} tagName \n * @property {object} attributes\n * @property {(tNode|string)[]} children \n **/\n\n/**\n * @typedef TParseOptions\n * @property {number} [pos]\n * @property {string[]} [noChildNodes]\n * @property {boolean} [setPos]\n * @property {boolean} [keepComments] \n * @property {boolean} [keepWhitespace]\n * @property {boolean} [simplify]\n * @property {(a: tNode, b: tNode) => boolean} [filter]\n */\n\n/**\n * parseXML / html into a DOM Object. with no validation and some failur tolerance\n * @param {string} S your XML to parse\n * @param {TParseOptions} [options] all other options:\n * @return {(tNode | string)[]}\n */\nfunction parse(S, options) {\n \"txml\";\n options = options || {};\n\n var pos = options.pos || 0;\n var keepComments = !!options.keepComments;\n var keepWhitespace = !!options.keepWhitespace;\n\n var openBracket = \"<\";\n var openBracketCC = \"<\".charCodeAt(0);\n var closeBracket = \">\";\n var closeBracketCC = \">\".charCodeAt(0);\n var minusCC = \"-\".charCodeAt(0);\n var slashCC = \"/\".charCodeAt(0);\n var exclamationCC = '!'.charCodeAt(0);\n var singleQuoteCC = \"'\".charCodeAt(0);\n var doubleQuoteCC = '\"'.charCodeAt(0);\n var openCornerBracketCC = '['.charCodeAt(0);\n var closeCornerBracketCC = ']'.charCodeAt(0);\n\n\n /**\n * parsing a list of entries\n */\n function parseChildren(tagName) {\n var children = [];\n while (S[pos]) {\n if (S.charCodeAt(pos) == openBracketCC) {\n if (S.charCodeAt(pos + 1) === slashCC) {\n var closeStart = pos + 2;\n pos = S.indexOf(closeBracket, pos);\n\n var closeTag = S.substring(closeStart, pos);\n if (closeTag.indexOf(tagName) == -1) {\n var parsedText = S.substring(0, pos).split('\\n');\n throw new Error(\n 'Unexpected close tag\\nLine: ' + (parsedText.length - 1) +\n '\\nColumn: ' + (parsedText[parsedText.length - 1].length + 1) +\n '\\nChar: ' + S[pos]\n );\n }\n\n if (pos + 1) pos += 1;\n\n return children;\n } else if (S.charCodeAt(pos + 1) === exclamationCC) {\n if (S.charCodeAt(pos + 2) == minusCC) {\n //comment support\n const startCommentPos = pos;\n while (pos !== -1 && !(S.charCodeAt(pos) === closeBracketCC && S.charCodeAt(pos - 1) == minusCC && S.charCodeAt(pos - 2) == minusCC && pos != -1)) {\n pos = S.indexOf(closeBracket, pos + 1);\n }\n if (pos === -1) {\n pos = S.length;\n }\n if (keepComments) {\n children.push(S.substring(startCommentPos, pos + 1));\n }\n } else if (\n S.charCodeAt(pos + 2) === openCornerBracketCC &&\n S.charCodeAt(pos + 8) === openCornerBracketCC &&\n S.substr(pos + 3, 5).toLowerCase() === 'cdata'\n ) {\n // cdata\n var cdataEndIndex = S.indexOf(']]>', pos);\n if (cdataEndIndex == -1) {\n children.push(S.substr(pos + 9));\n pos = S.length;\n } else {\n children.push(S.substring(pos + 9, cdataEndIndex));\n pos = cdataEndIndex + 3;\n }\n continue;\n } else {\n // doctypesupport\n const startDoctype = pos + 1;\n pos += 2;\n var encapsuled = false;\n while ((S.charCodeAt(pos) !== closeBracketCC || encapsuled === true) && S[pos]) {\n if (S.charCodeAt(pos) === openCornerBracketCC) {\n encapsuled = true;\n } else if (encapsuled === true && S.charCodeAt(pos) === closeCornerBracketCC) {\n encapsuled = false;\n }\n pos++;\n }\n children.push(S.substring(startDoctype, pos));\n }\n pos++;\n continue;\n }\n var node = parseNode();\n children.push(node);\n if (node.tagName[0] === '?') {\n children.push(...node.children);\n node.children = [];\n }\n } else {\n var text = parseText();\n if (keepWhitespace) {\n if (text.length > 0) {\n children.push(text);\n }\n } else {\n var trimmed = text.trim();\n if (trimmed.length > 0) {\n children.push(trimmed);\n }\n }\n pos++;\n }\n }\n return children;\n }\n\n /**\n * returns the text outside of texts until the first '<'\n */\n function parseText() {\n var start = pos;\n pos = S.indexOf(openBracket, pos) - 1;\n if (pos === -2)\n pos = S.length;\n return S.slice(start, pos + 1);\n }\n /**\n * returns text until the first nonAlphabetic letter\n */\n var nameSpacer = '\\r\\n\\t>/= ';\n\n function parseName() {\n var start = pos;\n while (nameSpacer.indexOf(S[pos]) === -1 && S[pos]) {\n pos++;\n }\n return S.slice(start, pos);\n }\n /**\n * is parsing a node, including tagName, Attributes and its children,\n * to parse children it uses the parseChildren again, that makes the parsing recursive\n */\n var NoChildNodes = options.noChildNodes || ['img', 'br', 'input', 'meta', 'link', 'hr'];\n\n function parseNode() {\n pos++;\n const tagName = parseName();\n const attributes = {};\n let children = [];\n\n // parsing attributes\n while (S.charCodeAt(pos) !== closeBracketCC && S[pos]) {\n var c = S.charCodeAt(pos);\n if ((c > 64 && c < 91) || (c > 96 && c < 123)) {\n //if('abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ'.indexOf(S[pos])!==-1 ){\n var name = parseName();\n // search beginning of the string\n var code = S.charCodeAt(pos);\n while (code && code !== singleQuoteCC && code !== doubleQuoteCC && !((code > 64 && code < 91) || (code > 96 && code < 123)) && code !== closeBracketCC) {\n pos++;\n code = S.charCodeAt(pos);\n }\n if (code === singleQuoteCC || code === doubleQuoteCC) {\n var value = parseString();\n if (pos === -1) {\n return {\n tagName,\n attributes,\n children,\n };\n }\n } else {\n value = null;\n pos--;\n }\n attributes[name] = value;\n }\n pos++;\n }\n // optional parsing of children\n if (S.charCodeAt(pos - 1) !== slashCC) {\n if (tagName == \"script\") {\n var start = pos + 1;\n pos = S.indexOf('</script>', pos);\n children = [S.slice(start, pos)];\n pos += 9;\n } else if (tagName == \"style\") {\n var start = pos + 1;\n pos = S.indexOf('</style>', pos);\n children = [S.slice(start, pos)];\n pos += 8;\n } else if (NoChildNodes.indexOf(tagName) === -1) {\n pos++;\n children = parseChildren(tagName);\n } else {\n pos++;\n }\n } else {\n pos++;\n }\n return {\n tagName,\n attributes,\n children,\n };\n }\n\n /**\n * is parsing a string, that starts with a char and with the same usually ' or \"\n */\n\n function parseString() {\n var startChar = S[pos];\n var startpos = pos + 1;\n pos = S.indexOf(startChar, startpos);\n return S.slice(startpos, pos);\n }\n\n /**\n *\n */\n function findElements() {\n var r = new RegExp('\\\\s' + options.attrName + '\\\\s*=[\\'\"]' + options.attrValue + '[\\'\"]').exec(S);\n if (r) {\n return r.index;\n } else {\n return -1;\n }\n }\n\n var out = null;\n if (options.attrValue !== undefined) {\n options.attrName = options.attrName || 'id';\n var out = [];\n\n while ((pos = findElements()) !== -1) {\n pos = S.lastIndexOf('<', pos);\n if (pos !== -1) {\n out.push(parseNode());\n }\n S = S.substr(pos);\n pos = 0;\n }\n } else if (options.parseNode) {\n out = parseNode();\n } else {\n out = parseChildren('');\n }\n\n if (options.filter) {\n out = filter(out, options.filter);\n }\n\n if (options.simplify) {\n return simplify(Array.isArray(out) ? out : [out]);\n }\n\n if (options.setPos) {\n out.pos = pos;\n }\n\n return out;\n}\n\n/**\n * transform the DomObject to an object that is like the object of PHP`s simple_xmp_load_*() methods.\n * this format helps you to write that is more likely to keep your program working, even if there a small changes in the XML schema.\n * be aware, that it is not possible to reproduce the original xml from a simplified version, because the order of elements is not saved.\n * therefore your program will be more flexible and easier to read.\n *\n * @param {tNode[]} children the childrenList\n */\nfunction simplify(children) {\n var out = {};\n if (!children.length) {\n return '';\n }\n\n if (children.length === 1 && typeof children[0] == 'string') {\n return children[0];\n }\n // map each object\n children.forEach(function(child) {\n if (typeof child !== 'object') {\n return;\n }\n if (!out[child.tagName])\n out[child.tagName] = [];\n var kids = simplify(child.children);\n out[child.tagName].push(kids);\n if (Object.keys(child.attributes).length && typeof kids !== 'string') {\n kids._attributes = child.attributes;\n }\n });\n\n for (var i in out) {\n if (out[i].length == 1) {\n out[i] = out[i][0];\n }\n }\n\n return out;\n}\n\n/**\n * similar to simplify, but lost less\n *\n * @param {tNode[]} children the childrenList\n */\nfunction simplifyLostLess(children, parentAttributes = {}) {\n var out = {};\n if (!children.length) {\n return out;\n }\n\n if (children.length === 1 && typeof children[0] == 'string') {\n return Object.keys(parentAttributes).length ? {\n _attributes: parentAttributes,\n value: children[0]\n } : children[0];\n }\n // map each object\n children.forEach(function(child) {\n if (typeof child !== 'object') {\n return;\n }\n if (!out[child.tagName])\n out[child.tagName] = [];\n var kids = simplifyLostLess(child.children || [], child.attributes);\n out[child.tagName].push(kids);\n if (Object.keys(child.attributes).length) {\n kids._attributes = child.attributes;\n }\n });\n\n return out;\n}\n/**\n * behaves the same way as Array.filter, if the filter method return true, the element is in the resultList\n * @params children{Array} the children of a node\n * @param f{function} the filter method\n */\nfunction filter(children, f, dept = 0, path = '') {\n var out = [];\n children.forEach(function(child, i) {\n if (typeof(child) === 'object' && f(child, i, dept, path)) out.push(child);\n if (child.children) {\n var kids = filter(child.children, f, dept + 1, (path ? path + '.' : '') + i + '.' + child.tagName);\n out = out.concat(kids);\n }\n });\n return out;\n}\n/**\n * stringify a previously parsed string object.\n * this is useful,\n * 1. to remove whitespace\n * 2. to recreate xml data, with some changed data.\n * @param {tNode} O the object to Stringify\n */\nfunction stringify(O) {\n var out = '';\n\n function writeChildren(O) {\n if (O) {\n for (var i = 0; i < O.length; i++) {\n if (typeof O[i] == 'string') {\n out += O[i].trim();\n } else {\n writeNode(O[i]);\n }\n }\n }\n }\n\n function writeNode(N) {\n out += \"<\" + N.tagName;\n for (var i in N.attributes) {\n if (N.attributes[i] === null) {\n out += ' ' + i;\n } else if (N.attributes[i].indexOf('\"') === -1) {\n out += ' ' + i + '=\"' + N.attributes[i].trim() + '\"';\n } else {\n out += ' ' + i + \"='\" + N.attributes[i].trim() + \"'\";\n }\n }\n if (N.tagName[0] === '?') {\n out += '?>';\n return;\n }\n out += '>';\n writeChildren(N.children);\n out += '</' + N.tagName + '>';\n }\n writeChildren(O);\n\n return out;\n}\n\n/**\n * use this method to read the text content, of some node.\n * It is great if you have mixed content like:\n * this text has some <b>big</b> text and a <a href=''>link</a>\n * @return {string}\n */\nfunction toContentString(tDom) {\n if (Array.isArray(tDom)) {\n var out = '';\n tDom.forEach(function(e) {\n out += ' ' + toContentString(e);\n out = out.trim();\n });\n return out;\n } else if (typeof tDom === 'object') {\n return toContentString(tDom.children)\n } else {\n return ' ' + tDom;\n }\n}\nfunction getElementById(S, id, simplified) {\n var out = parse(S, {\n attrValue: id\n });\n return simplified ? tXml.simplify(out) : out[0];\n}\nfunction getElementsByClassName(S, classname, simplified) {\n const out = parse(S, {\n attrName: 'class',\n attrValue: '[a-zA-Z0-9- ]*' + classname + '[a-zA-Z0-9- ]*'\n });\n return simplified ? tXml.simplify(out) : out;\n}\n\nexport { filter, getElementById, getElementsByClassName, parse, simplify, simplifyLostLess, stringify, toContentString };\n","export default (typeof global !== \"undefined\" ? global :\n typeof self !== \"undefined\" ? self :\n typeof window !== \"undefined\" ? window : {});","// shim for using process in browser\n// based off https://github.com/defunctzombie/node-process/blob/master/browser.js\n\nfunction defaultSetTimout() {\n throw new Error('setTimeout has not been defined');\n}\nfunction defaultClearTimeout () {\n throw new Error('clearTimeout has not been defined');\n}\nvar cachedSetTimeout = defaultSetTimout;\nvar cachedClearTimeout = defaultClearTimeout;\nif (typeof global.setTimeout === 'function') {\n cachedSetTimeout = setTimeout;\n}\nif (typeof global.clearTimeout === 'function') {\n cachedClearTimeout = clearTimeout;\n}\n\nfunction runTimeout(fun) {\n if (cachedSetTimeout === setTimeout) {\n //normal enviroments in sane situations\n return setTimeout(fun, 0);\n }\n // if setTimeout wasn't available but was latter defined\n if ((cachedSetTimeout === defaultSetTimout || !cachedSetTimeout) && setTimeout) {\n cachedSetTimeout = setTimeout;\n return setTimeout(fun, 0);\n }\n try {\n // when when somebody has screwed with setTimeout but no I.E. maddness\n return cachedSetTimeout(fun, 0);\n } catch(e){\n try {\n // When we are in I.E. but the script has been evaled so I.E. doesn't trust the global object when called normally\n return cachedSetTimeout.call(null, fun, 0);\n } catch(e){\n // same as above but when it's a version of I.E. that must have the global object for 'this', hopfully our context correct otherwise it will throw a global error\n return cachedSetTimeout.call(this, fun, 0);\n }\n }\n\n\n}\nfunction runClearTimeout(marker) {\n if (cachedClearTimeout === clearTimeout) {\n //normal enviroments in sane situations\n return clearTimeout(marker);\n }\n // if clearTimeout wasn't available but was latter defined\n if ((cachedClearTimeout === defaultClearTimeout || !cachedClearTimeout) && clearTimeout) {\n cachedClearTimeout = clearTimeout;\n return clearTimeout(marker);\n }\n try {\n // when when somebody has screwed with setTimeout but no I.E. maddness\n return cachedClearTimeout(marker);\n } catch (e){\n try {\n // When we are in I.E. but the script has been evaled so I.E. doesn't trust the global object when called normally\n return cachedClearTimeout.call(null, marker);\n } catch (e){\n // same as above but when it's a version of I.E. that must have the global object for 'this', hopfully our context correct otherwise it will throw a global error.\n // Some versions of I.E. have different rules for clearTimeout vs setTimeout\n return cachedClearTimeout.call(this, marker);\n }\n }\n\n\n\n}\nvar queue = [];\nvar draining = false;\nvar currentQueue;\nvar queueIndex = -1;\n\nfunction cleanUpNextTick() {\n if (!draining || !currentQueue) {\n return;\n }\n draining = false;\n if (currentQueue.length) {\n queue = currentQueue.concat(queue);\n } else {\n queueIndex = -1;\n }\n if (queue.length) {\n drainQueue();\n }\n}\n\nfunction drainQueue() {\n if (draining) {\n return;\n }\n var timeout = runTimeout(cleanUpNextTick);\n draining = true;\n\n var len = queue.length;\n while(len) {\n currentQueue = queue;\n queue = [];\n while (++queueIndex < len) {\n if (currentQueue) {\n currentQueue[queueIndex].run();\n }\n }\n queueIndex = -1;\n len = queue.length;\n }\n currentQueue = null;\n draining = false;\n runClearTimeout(timeout);\n}\nfunction nextTick(fun) {\n var args = new Array(arguments.length - 1);\n if (arguments.length > 1) {\n for (var i = 1; i < arguments.length; i++) {\n args[i - 1] = arguments[i];\n }\n }\n queue.push(new Item(fun, args));\n if (queue.length === 1 && !draining) {\n runTimeout(drainQueue);\n }\n}\n// v8 likes predictible objects\nfunction Item(fun, array) {\n this.fun = fun;\n this.array = array;\n}\nItem.prototype.run = function () {\n this.fun.apply(null, this.array);\n};\nvar title = 'browser';\nvar platform = 'browser';\nvar browser = true;\nvar env = {};\nvar argv = [];\nvar version = ''; // empty string to avoid regexp issues\nvar versions = {};\nvar release = {};\nvar config = {};\n\nfunction noop() {}\n\nvar on = noop;\nvar addListener = noop;\nvar once = noop;\nvar off = noop;\nvar removeListener = noop;\nvar removeAllListeners = noop;\nvar emit = noop;\n\nfunction binding(name) {\n throw new Error('process.binding is not supported');\n}\n\nfunction cwd () { return '/' }\nfunction chdir (dir) {\n throw new Error('process.chdir is not supported');\n}function umask() { return 0; }\n\n// from https://github.com/kumavis/browser-process-hrtime/blob/master/index.js\nvar performance = global.performance || {};\nvar performanceNow =\n performance.now ||\n performance.mozNow ||\n performance.msNow ||\n performance.oNow ||\n performance.webkitNow ||\n function(){ return (new Date()).getTime() };\n\n// generate timestamp or delta\n// see http://nodejs.org/api/process.html#process_process_hrtime\nfunction hrtime(previousTimestamp){\n var clocktime = performanceNow.call(performance)*1e-3;\n var seconds = Math.floor(clocktime);\n var nanoseconds = Math.floor((clocktime%1)*1e9);\n if (previousTimestamp) {\n seconds = seconds - previousTimestamp[0];\n nanoseconds = nanoseconds - previousTimestamp[1];\n if (nanoseconds<0) {\n seconds--;\n nanoseconds += 1e9;\n }\n }\n return [seconds,nanoseconds]\n}\n\nvar startTime = new Date();\nfunction uptime() {\n var currentTime = new Date();\n var dif = currentTime - startTime;\n return dif / 1000;\n}\n\nvar browser$1 = {\n nextTick: nextTick,\n title: title,\n browser: browser,\n env: env,\n argv: argv,\n version: version,\n versions: versions,\n on: on,\n addListener: addListener,\n once: once,\n off: off,\n removeListener: removeListener,\n removeAllListeners: removeAllListeners,\n emit: emit,\n binding: binding,\n cwd: cwd,\n chdir: chdir,\n umask: umask,\n hrtime: hrtime,\n platform: platform,\n release: release,\n config: config,\n uptime: uptime\n};\n\nexport default browser$1;\nexport { addListener, argv, binding, browser, chdir, config, cwd, emit, env, hrtime, nextTick, off, on, once, platform, release, removeAllListeners, removeListener, title, umask, uptime, version, versions };\n","export default {}","module.exports = require('events').EventEmitter;\n","var lookup = [];\nvar revLookup = [];\nvar Arr = typeof Uint8Array !== 'undefined' ? Uint8Array : Array;\nvar inited = false;\nfunction init () {\n inited = true;\n var code = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/';\n for (var i = 0, len = code.length; i < len; ++i) {\n lookup[i] = code[i];\n revLookup[code.charCodeAt(i)] = i;\n }\n\n revLookup['-'.charCodeAt(0)] = 62;\n revLookup['_'.charCodeAt(0)] = 63;\n}\n\nfunction toByteArray (b64) {\n if (!inited) {\n init();\n }\n var i, j, l, tmp, placeHolders, arr;\n var len = b64.length;\n\n if (len % 4 > 0) {\n throw new Error('Invalid string. Length must be a multiple of 4')\n }\n\n // the number of equal signs (place holders)\n // if there are two placeholders, than the two characters before it\n // represent one byte\n // if there is only one, then the three characters before it represent 2 bytes\n // this is just a cheap hack to not do indexOf twice\n placeHolders = b64[len - 2] === '=' ? 2 : b64[len - 1] === '=' ? 1 : 0;\n\n // base64 is 4/3 + up to two characters of the original data\n arr = new Arr(len * 3 / 4 - placeHolders);\n\n // if there are placeholders, only get up to the last complete 4 chars\n l = placeHolders > 0 ? len - 4 : len;\n\n var L = 0;\n\n for (i = 0, j = 0; i < l; i += 4, j += 3) {\n tmp = (revLookup[b64.charCodeAt(i)] << 18) | (revLookup[b64.charCodeAt(i + 1)] << 12) | (revLookup[b64.charCodeAt(i + 2)] << 6) | revLookup[b64.charCodeAt(i + 3)];\n arr[L++] = (tmp >> 16) & 0xFF;\n arr[L++] = (tmp >> 8) & 0xFF;\n arr[L++] = tmp & 0xFF;\n }\n\n if (placeHolders === 2) {\n tmp = (revLookup[b64.charCodeAt(i)] << 2) | (revLookup[b64.charCodeAt(i + 1)] >> 4);\n arr[L++] = tmp & 0xFF;\n } else if (placeHolders === 1) {\n tmp = (revLookup[b64.charCodeAt(i)] << 10) | (revLookup[b64.charCodeAt(i + 1)] << 4) | (revLookup[b64.charCodeAt(i + 2)] >> 2);\n arr[L++] = (tmp >> 8) & 0xFF;\n arr[L++] = tmp & 0xFF;\n }\n\n return arr\n}\n\nfunction tripletToBase64 (num) {\n return lookup[num >> 18 & 0x3F] + lookup[num >> 12 & 0x3F] + lookup[num >> 6 & 0x3F] + lookup[num & 0x3F]\n}\n\nfunction encodeChunk (uint8, start, end) {\n var tmp;\n var output = [];\n for (var i = start; i < end; i += 3) {\n tmp = (uint8[i] << 16) + (uint8[i + 1] << 8) + (uint8[i + 2]);\n output.push(tripletToBase64(tmp));\n }\n return output.join('')\n}\n\nfunction fromByteArray (uint8) {\n if (!inited) {\n init();\n }\n var tmp;\n var len = uint8.length;\n var extraBytes = len % 3; // if we have 1 byte left, pad 2 bytes\n var output = '';\n var parts = [];\n var maxChunkLength = 16383; // must be multiple of 3\n\n // go through the array every three bytes, we'll deal with trailing stuff later\n for (var i = 0, len2 = len - extraBytes; i < len2; i += maxChunkLength) {\n parts.push(encodeChunk(uint8, i, (i + maxChunkLength) > len2 ? len2 : (i + maxChunkLength)));\n }\n\n // pad the end with zeros, but make sure to not forget the extra bytes\n if (extraBytes === 1) {\n tmp = uint8[len - 1];\n output += lookup[tmp >> 2];\n output += lookup[(tmp << 4) & 0x3F];\n output += '==';\n } else if (extraBytes === 2) {\n tmp = (uint8[len - 2] << 8) + (uint8[len - 1]);\n output += lookup[tmp >> 10];\n output += lookup[(tmp >> 4) & 0x3F];\n output += lookup[(tmp << 2) & 0x3F];\n output += '=';\n }\n\n parts.push(output);\n\n return parts.join('')\n}\n\nfunction read (buffer, offset, isLE, mLen, nBytes) {\n var e, m;\n var eLen = nBytes * 8 - mLen - 1;\n var eMax = (1 << eLen) - 1;\n var eBias = eMax >> 1;\n var nBits = -7;\n var i = isLE ? (nBytes - 1) : 0;\n var d = isLE ? -1 : 1;\n var s = buffer[offset + i];\n\n i += d;\n\n e = s & ((1 << (-nBits)) - 1);\n s >>= (-nBits);\n nBits += eLen;\n for (; nBits > 0; e = e * 256 + buffer[offset + i], i += d, nBits -= 8) {}\n\n m = e & ((1 << (-nBits)) - 1);\n e >>= (-nBits);\n nBits += mLen;\n for (; nBits > 0; m = m * 256 + buffer[offset + i], i += d, nBits -= 8) {}\n\n if (e === 0) {\n e = 1 - eBias;\n } else if (e === eMax) {\n return m ? NaN : ((s ? -1 : 1) * Infinity)\n } else {\n m = m + Math.pow(2, mLen);\n e = e - eBias;\n }\n return (s ? -1 : 1) * m * Math.pow(2, e - mLen)\n}\n\nfunction write (buffer, value, offset, isLE, mLen, nBytes) {\n var e, m, c;\n var eLen = nBytes * 8 - mLen - 1;\n var eMax = (1 << eLen) - 1;\n var eBias = eMax >> 1;\n var rt = (mLen === 23 ? Math.pow(2, -24) - Math.pow(2, -77) : 0);\n var i = isLE ? 0 : (nBytes - 1);\n var d = isLE ? 1 : -1;\n var s = value < 0 || (value === 0 && 1 / value < 0) ? 1 : 0;\n\n value = Math.abs(value);\n\n if (isNaN(value) || value === Infinity) {\n m = isNaN(value) ? 1 : 0;\n e = eMax;\n } else {\n e = Math.floor(Math.log(value) / Math.LN2);\n if (value * (c = Math.pow(2, -e)) < 1) {\n e--;\n c *= 2;\n }\n if (e + eBias >= 1) {\n value += rt / c;\n } else {\n value += rt * Math.pow(2, 1 - eBias);\n }\n if (value * c >= 2) {\n e++;\n c /= 2;\n }\n\n if (e + eBias >= eMax) {\n m = 0;\n e = eMax;\n } else if (e + eBias >= 1) {\n m = (value * c - 1) * Math.pow(2, mLen);\n e = e + eBias;\n } else {\n m = value * Math.pow(2, eBias - 1) * Math.pow(2, mLen);\n e = 0;\n }\n }\n\n for (; mLen >= 8; buffer[offset + i] = m & 0xff, i += d, m /= 256, mLen -= 8) {}\n\n e = (e << mLen) | m;\n eLen += mLen;\n for (; eLen > 0; buffer[offset + i] = e & 0xff, i += d, e /= 256, eLen -= 8) {}\n\n buffer[offset + i - d] |= s * 128;\n}\n\nvar toString = {}.toString;\n\nvar isArray = Array.isArray || function (arr) {\n return toString.call(arr) == '[object Array]';\n};\n\n/*!\n * The buffer module from node.js, for the browser.\n *\n * @author Feross Aboukhadijeh <feross@feross.org> <http://feross.org>\n * @license MIT\n */\n\nvar INSPECT_MAX_BYTES = 50;\n\n/**\n * If `Buffer.TYPED_ARRAY_SUPPORT`:\n * === true Use Uint8Array implementation (fastest)\n * === false Use Object implementation (most compatible, even IE6)\n *\n * Browsers that support typed arrays are IE 10+, Firefox 4+, Chrome 7+, Safari 5.1+,\n * Opera 11.6+, iOS 4.2+.\n *\n * Due to various browser bugs, sometimes the Object implementation will be used even\n * when the browser supports typed arrays.\n *\n * Note:\n *\n * - Firefox 4-29 lacks support for adding new properties to `Uint8Array` instances,\n * See: https://bugzilla.mozilla.org/show_bug.cgi?id=695438.\n *\n * - Chrome 9-10 is missing the `TypedArray.prototype.subarray` function.\n *\n * - IE10 has a broken `TypedArray.prototype.subarray` function which returns arrays of\n * incorrect length in some situations.\n\n * We detect these buggy browsers and set `Buffer.TYPED_ARRAY_SUPPORT` to `false` so they\n * get the Object implementation, which is slower but behaves correctly.\n */\nBuffer.TYPED_ARRAY_SUPPORT = global.TYPED_ARRAY_SUPPORT !== undefined\n ? global.TYPED_ARRAY_SUPPORT\n : true;\n\n/*\n * Export kMaxLength after typed array support is determined.\n */\nvar _kMaxLength = kMaxLength();\n\nfunction kMaxLength () {\n return Buffer.TYPED_ARRAY_SUPPORT\n ? 0x7fffffff\n : 0x3fffffff\n}\n\nfunction createBuffer (that, length) {\n if (kMaxLength() < length) {\n throw new RangeError('Invalid typed array length')\n }\n if (Buffer.TYPED_ARRAY_SUPPORT) {\n // Return an augmented `Uint8Array` instance, for best performance\n that = new Uint8Array(length);\n that.__proto__ = Buffer.prototype;\n } else {\n // Fallback: Return an object instance of the Buffer class\n if (that === null) {\n that = new Buffer(length);\n }\n that.length = length;\n }\n\n return that\n}\n\n/**\n * The Buffer constructor returns instances of `Uint8Array` that have their\n * prototype changed to `Buffer.prototype`. Furthermore, `Buffer` is a subclass of\n * `Uint8Array`, so the returned instances will have all the node `Buffer` methods\n * and the `Uint8Array` methods. Square bracket notation works as expected -- it\n * returns a single octet.\n *\n * The `Uint8Array` prototype remains unmodified.\n */\n\nfunction Buffer (arg, encodingOrOffset, length) {\n if (!Buffer.TYPED_ARRAY_SUPPORT && !(this instanceof Buffer)) {\n return new Buffer(arg, encodingOrOffset, length)\n }\n\n // Common case.\n if (typeof arg === 'number') {\n if (typeof encodingOrOffset === 'string') {\n throw new Error(\n 'If encoding is specified then the first argument must be a string'\n )\n }\n return allocUnsafe(this, arg)\n }\n return from(this, arg, encodingOrOffset, length)\n}\n\nBuffer.poolSize = 8192; // not used by this implementation\n\n// TODO: Legacy, not needed anymore. Remove in next major version.\nBuffer._augment = function (arr) {\n arr.__proto__ = Buffer.prototype;\n return arr\n};\n\nfunction from (that, value, encodingOrOffset, length) {\n if (typeof value === 'number') {\n throw new TypeError('\"value\" argument must not be a number')\n }\n\n if (typeof ArrayBuffer !== 'undefined' && value instanceof ArrayBuffer) {\n return fromArrayBuffer(that, value, encodingOrOffset, length)\n }\n\n if (typeof value === 'string') {\n return fromString(that, value, encodingOrOffset)\n }\n\n return fromObject(that, value)\n}\n\n/**\n * Functionally equivalent to Buffer(arg, encoding) but throws a TypeError\n * if value is a number.\n * Buffer.from(str[, encoding])\n * Buffer.from(array)\n * Buffer.from(buffer)\n * Buffer.from(arrayBuffer[, byteOffset[, length]])\n **/\nBuffer.from = function (value, encodingOrOffset, length) {\n return from(null, value, encodingOrOffset, length)\n};\n\nif (Buffer.TYPED_ARRAY_SUPPORT) {\n Buffer.prototype.__proto__ = Uint8Array.prototype;\n Buffer.__proto__ = Uint8Array;\n}\n\nfunction assertSize (size) {\n if (typeof size !== 'number') {\n throw new TypeError('\"size\" argument must be a number')\n } else if (size < 0) {\n throw new RangeError('\"size\" argument must not be negative')\n }\n}\n\nfunction alloc (that, size, fill, encoding) {\n assertSize(size);\n if (size <= 0) {\n return createBuffer(that, size)\n }\n if (fill !== undefined) {\n // Only pay attention to encoding if it's a string. This\n // prevents accidentally sending in a number that would\n // be interpretted as a start offset.\n return typeof encoding === 'string'\n ? createBuffer(that, size).fill(fill, encoding)\n : createBuffer(that, size).fill(fill)\n }\n return createBuffer(that, size)\n}\n\n/**\n * Creates a new filled Buffer instance.\n * alloc(size[, fill[, encoding]])\n **/\nBuffer.alloc = function (size, fill, encoding) {\n return alloc(null, size, fill, encoding)\n};\n\nfunction allocUnsafe (that, size) {\n assertSize(size);\n that = createBuffer(that, size < 0 ? 0 : checked(size) | 0);\n if (!Buffer.TYPED_ARRAY_SUPPORT) {\n for (var i = 0; i < size; ++i) {\n that[i] = 0;\n }\n }\n return that\n}\n\n/**\n * Equivalent to Buffer(num), by default creates a non-zero-filled Buffer instance.\n * */\nBuffer.allocUnsafe = function (size) {\n return allocUnsafe(null, size)\n};\n/**\n * Equivalent to SlowBuffer(num), by default creates a non-zero-filled Buffer instance.\n */\nBuffer.allocUnsafeSlow = function (size) {\n return allocUnsafe(null, size)\n};\n\nfunction fromString (that, string, encoding) {\n if (typeof encoding !== 'string' || encoding === '') {\n encoding = 'utf8';\n }\n\n if (!Buffer.isEncoding(encoding)) {\n throw new TypeError('\"encoding\" must be a valid string encoding')\n }\n\n var length = byteLength(string, encoding) | 0;\n that = createBuffer(that, length);\n\n var actual = that.write(string, encoding);\n\n if (actual !== length) {\n // Writing a hex string, for example, that contains invalid characters will\n // cause everything after the first invalid character to be ignored. (e.g.\n // 'abxxcd' will be treated as 'ab')\n that = that.slice(0, actual);\n }\n\n return that\n}\n\nfunction fromArrayLike (that, array) {\n var length = array.length < 0 ? 0 : checked(array.length) | 0;\n that = createBuffer(that, length);\n for (var i = 0; i < length; i += 1) {\n that[i] = array[i] & 255;\n }\n return that\n}\n\nfunction fromArrayBuffer (that, array, byteOffset, length) {\n array.byteLength; // this throws if `array` is not a valid ArrayBuffer\n\n if (byteOffset < 0 || array.byteLength < byteOffset) {\n throw new RangeError('\\'offset\\' is out of bounds')\n }\n\n if (array.byteLength < byteOffset + (length || 0)) {\n throw new RangeError('\\'length\\' is out of bounds')\n }\n\n if (byteOffset === undefined && length === undefined) {\n array = new Uint8Array(array);\n } else if (length === undefined) {\n array = new Uint8Array(array, byteOffset);\n } else {\n array = new Uint8Array(array, byteOffset, length);\n }\n\n if (Buffer.TYPED_ARRAY_SUPPORT) {\n // Return an augmented `Uint8Array` instance, for best performance\n that = array;\n that.__proto__ = Buffer.prototype;\n } else {\n // Fallback: Return an object instance of the Buffer class\n that = fromArrayLike(that, array);\n }\n return that\n}\n\nfunction fromObject (that, obj) {\n if (internalIsBuffer(obj)) {\n var len = checked(obj.length) | 0;\n that = createBuffer(that, len);\n\n if (that.length === 0) {\n return that\n }\n\n obj.copy(that, 0, 0, len);\n return that\n }\n\n if (obj) {\n if ((typeof ArrayBuffer !== 'undefined' &&\n obj.buffer instanceof ArrayBuffer) || 'length' in obj) {\n if (typeof obj.length !== 'number' || isnan(obj.length)) {\n return createBuffer(that, 0)\n }\n return fromArrayLike(that, obj)\n }\n\n if (obj.type === 'Buffer' && isArray(obj.data)) {\n return fromArrayLike(that, obj.data)\n }\n }\n\n throw new TypeError('First argument must be a string, Buffer, ArrayBuffer, Array, or array-like object.')\n}\n\nfunction checked (length) {\n // Note: cannot use `length < kMaxLength()` here because that fails when\n // length is NaN (which is otherwise coerced to zero.)\n if (length >= kMaxLength()) {\n throw new RangeError('Attempt to allocate Buffer larger than maximum ' +\n 'size: 0x' + kMaxLength().toString(16) + ' bytes')\n }\n return length | 0\n}\n\nfunction SlowBuffer (length) {\n if (+length != length) { // eslint-disable-line eqeqeq\n length = 0;\n }\n return Buffer.alloc(+length)\n}\nBuffer.isBuffer = isBuffer;\nfunction internalIsBuffer (b) {\n return !!(b != null && b._isBuffer)\n}\n\nBuffer.compare = function compare (a, b) {\n if (!internalIsBuffer(a) || !internalIsBuffer(b)) {\n throw new TypeError('Arguments must be Buffers')\n }\n\n if (a === b) return 0\n\n var x = a.length;\n var y = b.length;\n\n for (var i = 0, len = Math.min(x, y); i < len; ++i) {\n if (a[i] !== b[i]) {\n x = a[i];\n y = b[i];\n break\n }\n }\n\n if (x < y) return -1\n if (y < x) return 1\n return 0\n};\n\nBuffer.isEncoding = function isEncoding (encoding) {\n switch (String(encoding).toLowerCase()) {\n case 'hex':\n case 'utf8':\n case 'utf-8':\n case 'ascii':\n case 'latin1':\n case 'binary':\n case 'base64':\n case 'ucs2':\n case 'ucs-2':\n case 'utf16le':\n case 'utf-16le':\n return true\n default:\n return false\n }\n};\n\nBuffer.concat = function concat (list, length) {\n if (!isArray(list)) {\n throw new TypeError('\"list\" argument must be an Array of Buffers')\n }\n\n if (list.length === 0) {\n return Buffer.alloc(0)\n }\n\n var i;\n if (length === undefined) {\n length = 0;\n for (i = 0; i < list.length; ++i) {\n length += list[i].length;\n }\n }\n\n var buffer = Buffer.allocUnsafe(length);\n var pos = 0;\n for (i = 0; i < list.length; ++i) {\n var buf = list[i];\n if (!internalIsBuffer(buf)) {\n throw new TypeError('\"list\" argument must be an Array of Buffers')\n }\n buf.copy(buffer, pos);\n pos += buf.length;\n }\n return buffer\n};\n\nfunction byteLength (string, encoding) {\n if (internalIsBuffer(string)) {\n return string.length\n }\n if (typeof ArrayBuffer !== 'undefined' && typeof ArrayBuffer.isView === 'function' &&\n (ArrayBuffer.isView(string) || string instanceof ArrayBuffer)) {\n return string.byteLength\n }\n if (typeof string !== 'string') {\n string = '' + string;\n }\n\n var len = string.length;\n if (len === 0) return 0\n\n // Use a for loop to avoid recursion\n var loweredCase = false;\n for (;;) {\n switch (encoding) {\n case 'ascii':\n case 'latin1':\n case 'binary':\n return len\n case 'utf8':\n case 'utf-8':\n case undefined:\n return utf8ToBytes(string).length\n case 'ucs2':\n case 'ucs-2':\n case 'utf16le':\n case 'utf-16le':\n return len * 2\n case 'hex':\n return len >>> 1\n case 'base64':\n return base64ToBytes(string).length\n default:\n if (loweredCase) return utf8ToBytes(string).length // assume utf8\n encoding = ('' + encoding).toLowerCase();\n loweredCase = true;\n }\n }\n}\nBuffer.byteLength = byteLength;\n\nfunction slowToString (encoding, start, end) {\n var loweredCase = false;\n\n // No need to verify that \"this.length <= MAX_UINT32\" since it's a read-only\n // property of a typed array.\n\n // This behaves neither like String nor Uint8Array in that we set start/end\n // to their upper/lower bounds if the value passed is out of range.\n // undefined is handled specially as per ECMA-262 6th Edition,\n // Section 13.3.3.7 Runtime Semantics: KeyedBindingInitialization.\n if (start === undefined || start < 0) {\n start = 0;\n }\n // Return early if start > this.length. Done here to prevent potential uint32\n // coercion fail below.\n if (start > this.length) {\n return ''\n }\n\n if (end === undefined || end > this.length) {\n end = this.length;\n }\n\n if (end <= 0) {\n return ''\n }\n\n // Force coersion to uint32. This will also coerce falsey/NaN values to 0.\n end >>>= 0;\n start >>>= 0;\n\n if (end <= start) {\n return ''\n }\n\n if (!encoding) encoding = 'utf8';\n\n while (true) {\n switch (encoding) {\n case 'hex':\n return hexSlice(this, start, end)\n\n case 'utf8':\n case 'utf-8':\n return utf8Slice(this, start, end)\n\n case 'ascii':\n return asciiSlice(this, start, end)\n\n case 'latin1':\n case 'binary':\n return latin1Slice(this, start, end)\n\n case 'base64':\n return base64Slice(this, start, end)\n\n case 'ucs2':\n case 'ucs-2':\n case 'utf16le':\n case 'utf-16le':\n return utf16leSlice(this, start, end)\n\n default:\n if (loweredCase) throw new TypeError('Unknown encoding: ' + encoding)\n encoding = (encoding + '').toLowerCase();\n loweredCase = true;\n }\n }\n}\n\n// The property is used by `Buffer.isBuffer` and `is-buffer` (in Safari 5-7) to detect\n// Buffer instances.\nBuffer.prototype._isBuffer = true;\n\nfunction swap (b, n, m) {\n var i = b[n];\n b[n] = b[m];\n b[m] = i;\n}\n\nBuffer.prototype.swap16 = function swap16 () {\n var len = this.length;\n if (len % 2 !== 0) {\n throw new RangeError('Buffer size must be a multiple of 16-bits')\n }\n for (var i = 0; i < len; i += 2) {\n swap(this, i, i + 1);\n }\n return this\n};\n\nBuffer.prototype.swap32 = function swap32 () {\n var len = this.length;\n if (len % 4 !== 0) {\n throw new RangeError('Buffer size must be a multiple of 32-bits')\n }\n for (var i = 0; i < len; i += 4) {\n swap(this, i, i + 3);\n swap(this, i + 1, i + 2);\n }\n return this\n};\n\nBuffer.prototype.swap64 = function swap64 () {\n var len = this.length;\n if (len % 8 !== 0) {\n throw new RangeError('Buffer size must be a multiple of 64-bits')\n }\n for (var i = 0; i < len; i += 8) {\n swap(this, i, i + 7);\n swap(this, i + 1, i + 6);\n swap(this, i + 2, i + 5);\n swap(this, i + 3, i + 4);\n }\n return this\n};\n\nBuffer.prototype.toString = function toString () {\n var length = this.length | 0;\n if (length === 0) return ''\n if (arguments.length === 0) return utf8Slice(this, 0, length)\n return slowToString.apply(this, arguments)\n};\n\nBuffer.prototype.equals = function equals (b) {\n if (!internalIsBuffer(b)) throw new TypeError('Argument must be a Buffer')\n if (this === b) return true\n return Buffer.compare(this, b) === 0\n};\n\nBuffer.prototype.inspect = function inspect () {\n var str = '';\n var max = INSPECT_MAX_BYTES;\n if (this.length > 0) {\n str = this.toString('hex', 0, max).match(/.{2}/g).join(' ');\n if (this.length > max) str += ' ... ';\n }\n return '<Buffer ' + str + '>'\n};\n\nBuffer.prototype.compare = function compare (target, start, end, thisStart, thisEnd) {\n if (!internalIsBuffer(target)) {\n throw new TypeError('Argument must be a Buffer')\n }\n\n if (start === undefined) {\n start = 0;\n }\n if (end === undefined) {\n end = target ? target.length : 0;\n }\n if (thisStart === undefined) {\n thisStart = 0;\n }\n if (thisEnd === undefined) {\n thisEnd = this.length;\n }\n\n if (start < 0 || end > target.length || thisStart < 0 || thisEnd > this.length) {\n throw new RangeError('out of range index')\n }\n\n if (thisStart >= thisEnd && start >= end) {\n return 0\n }\n if (thisStart >= thisEnd) {\n return -1\n }\n if (start >= end) {\n return 1\n }\n\n start >>>= 0;\n end >>>= 0;\n thisStart >>>= 0;\n thisEnd >>>= 0;\n\n if (this === target) return 0\n\n var x = thisEnd - thisStart;\n var y = end - start;\n var len = Math.min(x, y);\n\n var thisCopy = this.slice(thisStart, thisEnd);\n var targetCopy = target.slice(start, end);\n\n for (var i = 0; i < len; ++i) {\n if (thisCopy[i] !== targetCopy[i]) {\n x = thisCopy[i];\n y = targetCopy[i];\n break\n }\n }\n\n if (x < y) return -1\n if (y < x) return 1\n return 0\n};\n\n// Finds either the first index of `val` in `buffer` at offset >= `byteOffset`,\n// OR the last index of `val` in `buffer` at offset <= `byteOffset`.\n//\n// Arguments:\n// - buffer - a Buffer to search\n// - val - a string, Buffer, or number\n// - byteOffset - an index into `buffer`; will be clamped to an int32\n// - encoding - an optional encoding, relevant is val is a string\n// - dir - true for indexOf, false for lastIndexOf\nfunction bidirectionalIndexOf (buffer, val, byteOffset, encoding, dir) {\n // Empty buffer means no match\n if (buffer.length === 0) return -1\n\n // Normalize byteOffset\n if (typeof byteOffset === 'string') {\n encoding = byteOffset;\n byteOffset = 0;\n } else if (byteOffset > 0x7fffffff) {\n byteOffset = 0x7fffffff;\n } else if (byteOffset < -0x80000000) {\n byteOffset = -0x80000000;\n }\n byteOffset = +byteOffset; // Coerce to Number.\n if (isNaN(byteOffset)) {\n // byteOffset: it it's undefined, null, NaN, \"foo\", etc, search whole buffer\n byteOffset = dir ? 0 : (buffer.length - 1);\n }\n\n // Normalize byteOffset: negative offsets start from the end of the buffer\n if (byteOffset < 0) byteOffset = buffer.length + byteOffset;\n if (byteOffset >= buffer.length) {\n if (dir) return -1\n else byteOffset = buffer.length - 1;\n } else if (byteOffset < 0) {\n if (dir) byteOffset = 0;\n else return -1\n }\n\n // Normalize val\n if (typeof val === 'string') {\n val = Buffer.from(val, encoding);\n }\n\n // Finally, search either indexOf (if dir is true) or lastIndexOf\n if (internalIsBuffer(val)) {\n // Special case: looking for empty string/buffer always fails\n if (val.length === 0) {\n return -1\n }\n return arrayIndexOf(buffer, val, byteOffset, encoding, dir)\n } else if (typeof val === 'number') {\n val = val & 0xFF; // Search for a byte value [0-255]\n if (Buffer.TYPED_ARRAY_SUPPORT &&\n typeof Uint8Array.prototype.indexOf === 'function') {\n if (dir) {\n return Uint8Array.prototype.indexOf.call(buffer, val, byteOffset)\n } else {\n return Uint8Array.prototype.lastIndexOf.call(buffer, val, byteOffset)\n }\n }\n return arrayIndexOf(buffer, [ val ], byteOffset, encoding, dir)\n }\n\n throw new TypeError('val must be string, number or Buffer')\n}\n\nfunction arrayIndexOf (arr, val, byteOffset, encoding, dir) {\n var indexSize = 1;\n var arrLength = arr.length;\n var valLength = val.length;\n\n if (encoding !== undefined) {\n encoding = String(encoding).toLowerCase();\n if (encoding === 'ucs2' || encoding === 'ucs-2' ||\n encoding === 'utf16le' || encoding === 'utf-16le') {\n if (arr.length < 2 || val.length < 2) {\n return -1\n }\n indexSize = 2;\n arrLength /= 2;\n valLength /= 2;\n byteOffset /= 2;\n }\n }\n\n function read (buf, i) {\n if (indexSize === 1) {\n return buf[i]\n } else {\n return buf.readUInt16BE(i * indexSize)\n }\n }\n\n var i;\n if (dir) {\n var foundIndex = -1;\n for (i = byteOffset; i < arrLength; i++) {\n if (read(arr, i) === read(val, foundIndex === -1 ? 0 : i - foundIndex)) {\n if (foundIndex === -1) foundIndex = i;\n if (i - foundIndex + 1 === valLength) return foundIndex * indexSize\n } else {\n if (foundIndex !== -1) i -= i - foundIndex;\n foundIndex = -1;\n }\n }\n } else {\n if (byteOffset + valLength > arrLength) byteOffset = arrLength - valLength;\n for (i = byteOffset; i >= 0; i--) {\n var found = true;\n for (var j = 0; j < valLength; j++) {\n if (read(arr, i + j) !== read(val, j)) {\n found = false;\n break\n }\n }\n if (found) return i\n }\n }\n\n return -1\n}\n\nBuffer.prototype.includes = function includes (val, byteOffset, encoding) {\n return this.indexOf(val, byteOffset, encoding) !== -1\n};\n\nBuffer.prototype.indexOf = function indexOf (val, byteOffset, encoding) {\n return bidirectionalIndexOf(this, val, byteOffset, encoding, true)\n};\n\nBuffer.prototype.lastIndexOf = function lastIndexOf (val, byteOffset, encoding) {\n return bidirectionalIndexOf(this, val, byteOffset, encoding, false)\n};\n\nfunction hexWrite (buf, string, offset, length) {\n offset = Number(offset) || 0;\n var remaining = buf.length - offset;\n if (!length) {\n length = remaining;\n } else {\n length = Number(length);\n if (length > remaining) {\n length = remaining;\n }\n }\n\n // must be an even number of digits\n var strLen = string.length;\n if (strLen % 2 !== 0) throw new TypeError('Invalid hex string')\n\n if (length > strLen / 2) {\n length = strLen / 2;\n }\n for (var i = 0; i < length; ++i) {\n var parsed = parseInt(string.substr(i * 2, 2), 16);\n if (isNaN(parsed)) return i\n buf[offset + i] = parsed;\n }\n return i\n}\n\nfunction utf8Write (buf, string, offset, length) {\n return blitBuffer(utf8ToBytes(string, buf.length - offset), buf, offset, length)\n}\n\nfunction asciiWrite (buf, string, offset, length) {\n return blitBuffer(asciiToBytes(string), buf, offset, length)\n}\n\nfunction latin1Write (buf, string, offset, length) {\n return asciiWrite(buf, string, offset, length)\n}\n\nfunction base64Write (buf, string, offset, length) {\n return blitBuffer(base64ToBytes(string), buf, offset, length)\n}\n\nfunction ucs2Write (buf, string, offset, length) {\n return blitBuffer(utf16leToBytes(string, buf.length - offset), buf, offset, length)\n}\n\nBuffer.prototype.write = function write (string, offset, length, encoding) {\n // Buffer#write(string)\n if (offset === undefined) {\n encoding = 'utf8';\n length = this.length;\n offset = 0;\n // Buffer#write(string, encoding)\n } else if (length === undefined && typeof offset === 'string') {\n encoding = offset;\n length = this.length;\n offset = 0;\n // Buffer#write(string, offset[, length][, encoding])\n } else if (isFinite(offset)) {\n offset = offset | 0;\n if (isFinite(length)) {\n length = length | 0;\n if (encoding === undefined) encoding = 'utf8';\n } else {\n encoding = length;\n length = undefined;\n }\n // legacy write(string, encoding, offset, length) - remove in v0.13\n } else {\n throw new Error(\n 'Buffer.write(string, encoding, offset[, length]) is no longer supported'\n )\n }\n\n var remaining = this.length - offset;\n if (length === undefined || length > remaining) length = remaining;\n\n if ((string.length > 0 && (length < 0 || offset < 0)) || offset > this.length) {\n throw new RangeError('Attempt to write outside buffer bounds')\n }\n\n if (!encoding) encoding = 'utf8';\n\n var loweredCase = false;\n for (;;) {\n switch (encoding) {\n case 'hex':\n return hexWrite(this, string, offset, length)\n\n case 'utf8':\n case 'utf-8':\n return utf8Write(this, string, offset, length)\n\n case 'ascii':\n return asciiWrite(this, string, offset, length)\n\n case 'latin1':\n case 'binary':\n return latin1Write(this, string, offset, length)\n\n case 'base64':\n // Warning: maxLength not taken into account in base64Write\n return base64Write(this, string, offset, length)\n\n case 'ucs2':\n case 'ucs-2':\n case 'utf16le':\n case 'utf-16le':\n return ucs2Write(this, string, offset, length)\n\n default:\n if (loweredCase) throw new TypeError('Unknown encoding: ' + encoding)\n encoding = ('' + encoding).toLowerCase();\n loweredCase = true;\n }\n }\n};\n\nBuffer.prototype.toJSON = function toJSON () {\n return {\n type: 'Buffer',\n data: Array.prototype.slice.call(this._arr || this, 0)\n }\n};\n\nfunction base64Slice (buf, start, end) {\n if (start === 0 && end === buf.length) {\n return fromByteArray(buf)\n } else {\n return fromByteArray(buf.slice(start, end))\n }\n}\n\nfunction utf8Slice (buf, start, end) {\n end = Math.min(buf.length, end);\n var res = [];\n\n var i = start;\n while (i < end) {\n var firstByte = buf[i];\n var codePoint = null;\n var bytesPerSequence = (firstByte > 0xEF) ? 4\n : (firstByte > 0xDF) ? 3\n : (firstByte > 0xBF) ? 2\n : 1;\n\n if (i + bytesPerSequence <= end) {\n var secondByte, thirdByte, fourthByte, tempCodePoint;\n\n switch (bytesPerSequence) {\n case 1:\n if (firstByte < 0x80) {\n codePoint = firstByte;\n }\n break\n case 2:\n secondByte = buf[i + 1];\n if ((secondByte & 0xC0) === 0x80) {\n tempCodePoint = (firstByte & 0x1F) << 0x6 | (secondByte & 0x3F);\n if (tempCodePoint > 0x7F) {\n codePoint = tempCodePoint;\n }\n }\n break\n case 3:\n secondByte = buf[i + 1];\n thirdByte = buf[i + 2];\n if ((secondByte & 0xC0) === 0x80 && (thirdByte & 0xC0) === 0x80) {\n tempCodePoint = (firstByte & 0xF) << 0xC | (secondByte & 0x3F) << 0x6 | (thirdByte & 0x3F);\n if (tempCodePoint > 0x7FF && (tempCodePoint < 0xD800 || tempCodePoint > 0xDFFF)) {\n codePoint = tempCodePoint;\n }\n }\n break\n case 4:\n secondByte = buf[i + 1];\n thirdByte = buf[i + 2];\n fourthByte = buf[i + 3];\n if ((secondByte & 0xC0) === 0x80 && (thirdByte & 0xC0) === 0x80 && (fourthByte & 0xC0) === 0x80) {\n tempCodePoint = (firstByte & 0xF) << 0x12 | (secondByte & 0x3F) << 0xC | (thirdByte & 0x3F) << 0x6 | (fourthByte & 0x3F);\n if (tempCodePoint > 0xFFFF && tempCodePoint < 0x110000) {\n codePoint = tempCodePoint;\n }\n }\n }\n }\n\n if (codePoint === null) {\n // we did not generate a valid codePoint so insert a\n // replacement char (U+FFFD) and advance only 1 byte\n codePoint = 0xFFFD;\n bytesPerSequence = 1;\n } else if (codePoint > 0xFFFF) {\n // encode to utf16 (surrogate pair dance)\n codePoint -= 0x10000;\n res.push(codePoint >>> 10 & 0x3FF | 0xD800);\n codePoint = 0xDC00 | codePoint & 0x3FF;\n }\n\n res.push(codePoint);\n i += bytesPerSequence;\n }\n\n return decodeCodePointsArray(res)\n}\n\n// Based on http://stackoverflow.com/a/22747272/680742, the browser with\n// the lowest limit is Chrome, with 0x10000 args.\n// We go 1 magnitude less, for safety\nvar MAX_ARGUMENTS_LENGTH = 0x1000;\n\nfunction decodeCodePointsArray (codePoints) {\n var len = codePoints.length;\n if (len <= MAX_ARGUMENTS_LENGTH) {\n return String.fromCharCode.apply(String, codePoints) // avoid extra slice()\n }\n\n // Decode in chunks to avoid \"call stack size exceeded\".\n var res = '';\n var i = 0;\n while (i < len) {\n res += String.fromCharCode.apply(\n String,\n codePoints.slice(i, i += MAX_ARGUMENTS_LENGTH)\n );\n }\n return res\n}\n\nfunction asciiSlice (buf, start, end) {\n var ret = '';\n end = Math.min(buf.length, end);\n\n for (var i = start; i < end; ++i) {\n ret += String.fromCharCode(buf[i] & 0x7F);\n }\n return ret\n}\n\nfunction latin1Slice (buf, start, end) {\n var ret = '';\n end = Math.min(buf.length, end);\n\n for (var i = start; i < end; ++i) {\n ret += String.fromCharCode(buf[i]);\n }\n return ret\n}\n\nfunction hexSlice (buf, start, end) {\n var len = buf.length;\n\n if (!start || start < 0) start = 0;\n if (!end || end < 0 || end > len) end = len;\n\n var out = '';\n for (var i = start; i < end; ++i) {\n out += toHex(buf[i]);\n }\n return out\n}\n\nfunction utf16leSlice (buf, start, end) {\n var bytes = buf.slice(start, end);\n var res = '';\n for (var i = 0; i < bytes.length; i += 2) {\n res += String.fromCharCode(bytes[i] + bytes[i + 1] * 256);\n }\n return res\n}\n\nBuffer.prototype.slice = function slice (start, end) {\n var len = this.length;\n start = ~~start;\n end = end === undefined ? len : ~~end;\n\n if (start < 0) {\n start += len;\n if (start < 0) start = 0;\n } else if (start > len) {\n start = len;\n }\n\n if (end < 0) {\n end += len;\n if (end < 0) end = 0;\n } else if (end > len) {\n end = len;\n }\n\n if (end < start) end = start;\n\n var newBuf;\n if (Buffer.TYPED_ARRAY_SUPPORT) {\n newBuf = this.subarray(start, end);\n newBuf.__proto__ = Buffer.prototype;\n } else {\n var sliceLen = end - start;\n newBuf = new Buffer(sliceLen, undefined);\n for (var i = 0; i < sliceLen; ++i) {\n newBuf[i] = this[i + start];\n }\n }\n\n return newBuf\n};\n\n/*\n * Need to make sure that buffer isn't trying to write out of bounds.\n */\nfunction checkOffset (offset, ext, length) {\n if ((offset % 1) !== 0 || offset < 0) throw new RangeError('offset is not uint')\n if (offset + ext > length) throw new RangeError('Trying to access beyond buffer length')\n}\n\nBuffer.prototype.readUIntLE = function readUIntLE (offset, byteLength, noAssert) {\n offset = offset | 0;\n byteLength = byteLength | 0;\n if (!noAssert) checkOffset(offset, byteLength, this.length);\n\n var val = this[offset];\n var mul = 1;\n var i = 0;\n while (++i < byteLength && (mul *= 0x100)) {\n val += this[offset + i] * mul;\n }\n\n return val\n};\n\nBuffer.prototype.readUIntBE = function readUIntBE (offset, byteLength, noAssert) {\n offset = offset | 0;\n byteLength = byteLength | 0;\n if (!noAssert) {\n checkOffset(offset, byteLength, this.length);\n }\n\n var val = this[offset + --byteLength];\n var mul = 1;\n while (byteLength > 0 && (mul *= 0x100)) {\n val += this[offset + --byteLength] * mul;\n }\n\n return val\n};\n\nBuffer.prototype.readUInt8 = function readUInt8 (offset, noAssert) {\n if (!noAssert) checkOffset(offset, 1, this.length);\n return this[offset]\n};\n\nBuffer.prototype.readUInt16LE = function readUInt16LE (offset, noAssert) {\n if (!noAssert) checkOffset(offset, 2, this.length);\n return this[offset] | (this[offset + 1] << 8)\n};\n\nBuffer.prototype.readUInt16BE = function readUInt16BE (offset, noAssert) {\n if (!noAssert) checkOffset(offset, 2, this.length);\n return (this[offset] << 8) | this[offset + 1]\n};\n\nBuffer.prototype.readUInt32LE = function readUInt32LE (offset, noAssert) {\n if (!noAssert) checkOffset(offset, 4, this.length);\n\n return ((this[offset]) |\n (this[offset + 1] << 8) |\n (this[offset + 2] << 16)) +\n (this[offset + 3] * 0x1000000)\n};\n\nBuffer.prototype.readUInt32BE = function readUInt32BE (offset, noAssert) {\n if (!noAssert) checkOffset(offset, 4, this.length);\n\n return (this[offset] * 0x1000000) +\n ((this[offset + 1] << 16) |\n (this[offset + 2] << 8) |\n this[offset + 3])\n};\n\nBuffer.prototype.readIntLE = function readIntLE (offset, byteLength, noAssert) {\n offset = offset | 0;\n byteLength = byteLength | 0;\n if (!noAssert) checkOffset(offset, byteLength, this.length);\n\n var val = this[offset];\n var mul = 1;\n var i = 0;\n while (++i < byteLength && (mul *= 0x100)) {\n val += this[offset + i] * mul;\n }\n mul *= 0x80;\n\n if (val >= mul) val -= Math.pow(2, 8 * byteLength);\n\n return val\n};\n\nBuffer.prototype.readIntBE = function readIntBE (offset, byteLength, noAssert) {\n offset = offset | 0;\n byteLength = byteLength | 0;\n if (!noAssert) checkOffset(offset, byteLength, this.length);\n\n var i = byteLength;\n var mul = 1;\n var val = this[offset + --i];\n while (i > 0 && (mul *= 0x100)) {\n val += this[offset + --i] * mul;\n }\n mul *= 0x80;\n\n if (val >= mul) val -= Math.pow(2, 8 * byteLength);\n\n return val\n};\n\nBuffer.prototype.readInt8 = function readInt8 (offset, noAssert) {\n if (!noAssert) checkOffset(offset, 1, this.length);\n if (!(this[offset] & 0x80)) return (this[offset])\n return ((0xff - this[offset] + 1) * -1)\n};\n\nBuffer.prototype.readInt16LE = function readInt16LE (offset, noAssert) {\n if (!noAssert) checkOffset(offset, 2, this.length);\n var val = this[offset] | (this[offset + 1] << 8);\n return (val & 0x8000) ? val | 0xFFFF0000 : val\n};\n\nBuffer.prototype.readInt16BE = function readInt16BE (offset, noAssert) {\n if (!noAssert) checkOffset(offset, 2, this.length);\n var val = this[offset + 1] | (this[offset] << 8);\n return (val & 0x8000) ? val | 0xFFFF0000 : val\n};\n\nBuffer.prototype.readInt32LE = function readInt32LE (offset, noAssert) {\n if (!noAssert) checkOffset(offset, 4, this.length);\n\n return (this[offset]) |\n (this[offset + 1] << 8) |\n (this[offset + 2] << 16) |\n (this[offset + 3] << 24)\n};\n\nBuffer.prototype.readInt32BE = function readInt32BE (offset, noAssert) {\n if (!noAssert) checkOffset(offset, 4, this.length);\n\n return (this[offset] << 24) |\n (this[offset + 1] << 16) |\n (this[offset + 2] << 8) |\n (this[offset + 3])\n};\n\nBuffer.prototype.readFloatLE = function readFloatLE (offset, noAssert) {\n if (!noAssert) checkOffset(offset, 4, this.length);\n return read(this, offset, true, 23, 4)\n};\n\nBuffer.prototype.readFloatBE = function readFloatBE (offset, noAssert) {\n if (!noAssert) checkOffset(offset, 4, this.length);\n return read(this, offset, false, 23, 4)\n};\n\nBuffer.prototype.readDoubleLE = function readDoubleLE (offset, noAssert) {\n if (!noAssert) checkOffset(offset, 8, this.length);\n return read(this, offset, true, 52, 8)\n};\n\nBuffer.prototype.readDoubleBE = function readDoubleBE (offset, noAssert) {\n if (!noAssert) checkOffset(offset, 8, this.length);\n return read(this, offset, false, 52, 8)\n};\n\nfunction checkInt (buf, value, offset, ext, max, min) {\n if (!internalIsBuffer(buf)) throw new TypeError('\"buffer\" argument must be a Buffer instance')\n if (value > max || value < min) throw new RangeError('\"value\" argument is out of bounds')\n if (offset + ext > buf.length) throw new RangeError('Index out of range')\n}\n\nBuffer.prototype.writeUIntLE = function writeUIntLE (value, offset, byteLength, noAssert) {\n value = +value;\n offset = offset | 0;\n byteLength = byteLength | 0;\n if (!noAssert) {\n var maxBytes = Math.pow(2, 8 * byteLength) - 1;\n checkInt(this, value, offset, byteLength, maxBytes, 0);\n }\n\n var mul = 1;\n var i = 0;\n this[offset] = value & 0xFF;\n while (++i < byteLength && (mul *= 0x100)) {\n this[offset + i] = (value / mul) & 0xFF;\n }\n\n return offset + byteLength\n};\n\nBuffer.prototype.writeUIntBE = function writeUIntBE (value, offset, byteLength, noAssert) {\n value = +value;\n offset = offset | 0;\n byteLength = byteLength | 0;\n if (!noAssert) {\n var maxBytes = Math.pow(2, 8 * byteLength) - 1;\n checkInt(this, value, offset, byteLength, maxBytes, 0);\n }\n\n var i = byteLength - 1;\n var mul = 1;\n this[offset + i] = value & 0xFF;\n while (--i >= 0 && (mul *= 0x100)) {\n this[offset + i] = (value / mul) & 0xFF;\n }\n\n return offset + byteLength\n};\n\nBuffer.prototype.writeUInt8 = function writeUInt8 (value, offset, noAssert) {\n value = +value;\n offset = offset | 0;\n if (!noAssert) checkInt(this, value, offset, 1, 0xff, 0);\n if (!Buffer.TYPED_ARRAY_SUPPORT) value = Math.floor(value);\n this[offset] = (value & 0xff);\n return offset + 1\n};\n\nfunction objectWriteUInt16 (buf, value, offset, littleEndian) {\n if (value < 0) value = 0xffff + value + 1;\n for (var i = 0, j = Math.min(buf.length - offset, 2); i < j; ++i) {\n buf[offset + i] = (value & (0xff << (8 * (littleEndian ? i : 1 - i)))) >>>\n (littleEndian ? i : 1 - i) * 8;\n }\n}\n\nBuffer.prototype.writeUInt16LE = function writeUInt16LE (value, offset, noAssert) {\n value = +value;\n offset = offset | 0;\n if (!noAssert) checkInt(this, value, offset, 2, 0xffff, 0);\n if (Buffer.TYPED_ARRAY_SUPPORT) {\n this[offset] = (value & 0xff);\n this[offset + 1] = (value >>> 8);\n } else {\n objectWriteUInt16(this, value, offset, true);\n }\n return offset + 2\n};\n\nBuffer.prototype.writeUInt16BE = function writeUInt16BE (value, offset, noAssert) {\n value = +value;\n offset = offset | 0;\n if (!noAssert) checkInt(this, value, offset, 2, 0xffff, 0);\n if (Buffer.TYPED_ARRAY_SUPPORT) {\n this[offset] = (value >>> 8);\n this[offset + 1] = (value & 0xff);\n } else {\n objectWriteUInt16(this, value, offset, false);\n }\n return offset + 2\n};\n\nfunction objectWriteUInt32 (buf, value, offset, littleEndian) {\n if (value < 0) value = 0xffffffff + value + 1;\n for (var i = 0, j = Math.min(buf.length - offset, 4); i < j; ++i) {\n buf[offset + i] = (value >>> (littleEndian ? i : 3 - i) * 8) & 0xff;\n }\n}\n\nBuffer.prototype.writeUInt32LE = function writeUInt32LE (value, offset, noAssert) {\n value = +value;\n offset = offset | 0;\n if (!noAssert) checkInt(this, value, offset, 4, 0xffffffff, 0);\n if (Buffer.TYPED_ARRAY_SUPPORT) {\n this[offset + 3] = (value >>> 24);\n this[offset + 2] = (value >>> 16);\n this[offset + 1] = (value >>> 8);\n this[offset] = (value & 0xff);\n } else {\n objectWriteUInt32(this, value, offset, true);\n }\n return offset + 4\n};\n\nBuffer.prototype.writeUInt32BE = function writeUInt32BE (value, offset, noAssert) {\n value = +value;\n offset = offset | 0;\n if (!noAssert) checkInt(this, value, offset, 4, 0xffffffff, 0);\n if (Buffer.TYPED_ARRAY_SUPPORT) {\n this[offset] = (value >>> 24);\n this[offset + 1] = (value >>> 16);\n this[offset + 2] = (value >>> 8);\n this[offset + 3] = (value & 0xff);\n } else {\n objectWriteUInt32(this, value, offset, false);\n }\n return offset + 4\n};\n\nBuffer.prototype.writeIntLE = function writeIntLE (value, offset, byteLength, noAssert) {\n value = +value;\n offset = offset | 0;\n if (!noAssert) {\n var limit = Math.pow(2, 8 * byteLength - 1);\n\n checkInt(this, value, offset, byteLength, limit - 1, -limit);\n }\n\n var i = 0;\n var mul = 1;\n var sub = 0;\n this[offset] = value & 0xFF;\n while (++i < byteLength && (mul *= 0x100)) {\n if (value < 0 && sub === 0 && this[offset + i - 1] !== 0) {\n sub = 1;\n }\n this[offset + i] = ((value / mul) >> 0) - sub & 0xFF;\n }\n\n return offset + byteLength\n};\n\nBuffer.prototype.writeIntBE = function writeIntBE (value, offset, byteLength, noAssert) {\n value = +value;\n offset = offset | 0;\n if (!noAssert) {\n var limit = Math.pow(2, 8 * byteLength - 1);\n\n checkInt(this, value, offset, byteLength, limit - 1, -limit);\n }\n\n var i = byteLength - 1;\n var mul = 1;\n var sub = 0;\n this[offset + i] = value & 0xFF;\n while (--i >= 0 && (mul *= 0x100)) {\n if (value < 0 && sub === 0 && this[offset + i + 1] !== 0) {\n sub = 1;\n }\n this[offset + i] = ((value / mul) >> 0) - sub & 0xFF;\n }\n\n return offset + byteLength\n};\n\nBuffer.prototype.writeInt8 = function writeInt8 (value, offset, noAssert) {\n value = +value;\n offset = offset | 0;\n if (!noAssert) checkInt(this, value, offset, 1, 0x7f, -0x80);\n if (!Buffer.TYPED_ARRAY_SUPPORT) value = Math.floor(value);\n if (value < 0) value = 0xff + value + 1;\n this[offset] = (value & 0xff);\n return offset + 1\n};\n\nBuffer.prototype.writeInt16LE = function writeInt16LE (value, offset, noAssert) {\n value = +value;\n offset = offset | 0;\n if (!noAssert) checkInt(this, value, offset, 2, 0x7fff, -0x8000);\n if (Buffer.TYPED_ARRAY_SUPPORT) {\n this[offset] = (value & 0xff);\n this[offset + 1] = (value >>> 8);\n } else {\n objectWriteUInt16(this, value, offset, true);\n }\n return offset + 2\n};\n\nBuffer.prototype.writeInt16BE = function writeInt16BE (value, offset, noAssert) {\n value = +value;\n offset = offset | 0;\n if (!noAssert) checkInt(this, value, offset, 2, 0x7fff, -0x8000);\n if (Buffer.TYPED_ARRAY_SUPPORT) {\n this[offset] = (value >>> 8);\n this[offset + 1] = (value & 0xff);\n } else {\n objectWriteUInt16(this, value, offset, false);\n }\n return offset + 2\n};\n\nBuffer.prototype.writeInt32LE = function writeInt32LE (value, offset, noAssert) {\n value = +value;\n offset = offset | 0;\n if (!noAssert) checkInt(this, value, offset, 4, 0x7fffffff, -0x80000000);\n if (Buffer.TYPED_ARRAY_SUPPORT) {\n this[offset] = (value & 0xff);\n this[offset + 1] = (value >>> 8);\n this[offset + 2] = (value >>> 16);\n this[offset + 3] = (value >>> 24);\n } else {\n objectWriteUInt32(this, value, offset, true);\n }\n return offset + 4\n};\n\nBuffer.prototype.writeInt32BE = function writeInt32BE (value, offset, noAssert) {\n value = +value;\n offset = offset | 0;\n if (!noAssert) checkInt(this, value, offset, 4, 0x7fffffff, -0x80000000);\n if (value < 0) value = 0xffffffff + value + 1;\n if (Buffer.TYPED_ARRAY_SUPPORT) {\n this[offset] = (value >>> 24);\n this[offset + 1] = (value >>> 16);\n this[offset + 2] = (value >>> 8);\n this[offset + 3] = (value & 0xff);\n } else {\n objectWriteUInt32(this, value, offset, false);\n }\n return offset + 4\n};\n\nfunction checkIEEE754 (buf, value, offset, ext, max, min) {\n if (offset + ext > buf.length) throw new RangeError('Index out of range')\n if (offset < 0) throw new RangeError('Index out of range')\n}\n\nfunction writeFloat (buf, value, offset, littleEndian, noAssert) {\n if (!noAssert) {\n checkIEEE754(buf, value, offset, 4);\n }\n write(buf, value, offset, littleEndian, 23, 4);\n return offset + 4\n}\n\nBuffer.prototype.writeFloatLE = function writeFloatLE (value, offset, noAssert) {\n return writeFloat(this, value, offset, true, noAssert)\n};\n\nBuffer.prototype.writeFloatBE = function writeFloatBE (value, offset, noAssert) {\n return writeFloat(this, value, offset, false, noAssert)\n};\n\nfunction writeDouble (buf, value, offset, littleEndian, noAssert) {\n if (!noAssert) {\n checkIEEE754(buf, value, offset, 8);\n }\n write(buf, value, offset, littleEndian, 52, 8);\n return offset + 8\n}\n\nBuffer.prototype.writeDoubleLE = function writeDoubleLE (value, offset, noAssert) {\n return writeDouble(this, value, offset, true, noAssert)\n};\n\nBuffer.prototype.writeDoubleBE = function writeDoubleBE (value, offset, noAssert) {\n return writeDouble(this, value, offset, false, noAssert)\n};\n\n// copy(targetBuffer, targetStart=0, sourceStart=0, sourceEnd=buffer.length)\nBuffer.prototype.copy = function copy (target, targetStart, start, end) {\n if (!start) start = 0;\n if (!end && end !== 0) end = this.length;\n if (targetStart >= target.length) targetStart = target.length;\n if (!targetStart) targetStart = 0;\n if (end > 0 && end < start) end = start;\n\n // Copy 0 bytes; we're done\n if (end === start) return 0\n if (target.length === 0 || this.length === 0) return 0\n\n // Fatal error conditions\n if (targetStart < 0) {\n throw new RangeError('targetStart out of bounds')\n }\n if (start < 0 || start >= this.length) throw new RangeError('sourceStart out of bounds')\n if (end < 0) throw new RangeError('sourceEnd out of bounds')\n\n // Are we oob?\n if (end > this.length) end = this.length;\n if (target.length - targetStart < end - start) {\n end = target.length - targetStart + start;\n }\n\n var len = end - start;\n var i;\n\n if (this === target && start < targetStart && targetStart < end) {\n // descending copy from end\n for (i = len - 1; i >= 0; --i) {\n target[i + targetStart] = this[i + start];\n }\n } else if (len < 1000 || !Buffer.TYPED_ARRAY_SUPPORT) {\n // ascending copy from start\n for (i = 0; i < len; ++i) {\n target[i + targetStart] = this[i + start];\n }\n } else {\n Uint8Array.prototype.set.call(\n target,\n this.subarray(start, start + len),\n targetStart\n );\n }\n\n return len\n};\n\n// Usage:\n// buffer.fill(number[, offset[, end]])\n// buffer.fill(buffer[, offset[, end]])\n// buffer.fill(string[, offset[, end]][, encoding])\nBuffer.prototype.fill = function fill (val, start, end, encoding) {\n // Handle string cases:\n if (typeof val === 'string') {\n if (typeof start === 'string') {\n encoding = start;\n start = 0;\n end = this.length;\n } else if (typeof end === 'string') {\n encoding = end;\n end = this.length;\n }\n if (val.length === 1) {\n var code = val.charCodeAt(0);\n if (code < 256) {\n val = code;\n }\n }\n if (encoding !== undefined && typeof encoding !== 'string') {\n throw new TypeError('encoding must be a string')\n }\n if (typeof encoding === 'string' && !Buffer.isEncoding(encoding)) {\n throw new TypeError('Unknown encoding: ' + encoding)\n }\n } else if (typeof val === 'number') {\n val = val & 255;\n }\n\n // Invalid ranges are not set to a default, so can range check early.\n if (start < 0 || this.length < start || this.length < end) {\n throw new RangeError('Out of range index')\n }\n\n if (end <= start) {\n return this\n }\n\n start = start >>> 0;\n end = end === undefined ? this.length : end >>> 0;\n\n if (!val) val = 0;\n\n var i;\n if (typeof val === 'number') {\n for (i = start; i < end; ++i) {\n this[i] = val;\n }\n } else {\n var bytes = internalIsBuffer(val)\n ? val\n : utf8ToBytes(new Buffer(val, encoding).toString());\n var len = bytes.length;\n for (i = 0; i < end - start; ++i) {\n this[i + start] = bytes[i % len];\n }\n }\n\n return this\n};\n\n// HELPER FUNCTIONS\n// ================\n\nvar INVALID_BASE64_RE = /[^+\\/0-9A-Za-z-_]/g;\n\nfunction base64clean (str) {\n // Node strips out invalid characters like \\n and \\t from the string, base64-js does not\n str = stringtrim(str).replace(INVALID_BASE64_RE, '');\n // Node converts strings with length < 2 to ''\n if (str.length < 2) return ''\n // Node allows for non-padded base64 strings (missing trailing ===), base64-js does not\n while (str.length % 4 !== 0) {\n str = str + '=';\n }\n return str\n}\n\nfunction stringtrim (str) {\n if (str.trim) return str.trim()\n return str.replace(/^\\s+|\\s+$/g, '')\n}\n\nfunction toHex (n) {\n if (n < 16) return '0' + n.toString(16)\n return n.toString(16)\n}\n\nfunction utf8ToBytes (string, units) {\n units = units || Infinity;\n var codePoint;\n var length = string.length;\n var leadSurrogate = null;\n var bytes = [];\n\n for (var i = 0; i < length; ++i) {\n codePoint = string.charCodeAt(i);\n\n // is surrogate component\n if (codePoint > 0xD7FF && codePoint < 0xE000) {\n // last char was a lead\n if (!leadSurrogate) {\n // no lead yet\n if (codePoint > 0xDBFF) {\n // unexpected trail\n if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD);\n continue\n } else if (i + 1 === length) {\n // unpaired lead\n if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD);\n continue\n }\n\n // valid lead\n leadSurrogate = codePoint;\n\n continue\n }\n\n // 2 leads in a row\n if (codePoint < 0xDC00) {\n if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD);\n leadSurrogate = codePoint;\n continue\n }\n\n // valid surrogate pair\n codePoint = (leadSurrogate - 0xD800 << 10 | codePoint - 0xDC00) + 0x10000;\n } else if (leadSurrogate) {\n // valid bmp char, but last char was a lead\n if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD);\n }\n\n leadSurrogate = null;\n\n // encode utf8\n if (codePoint < 0x80) {\n if ((units -= 1) < 0) break\n bytes.push(codePoint);\n } else if (codePoint < 0x800) {\n if ((units -= 2) < 0) break\n bytes.push(\n codePoint >> 0x6 | 0xC0,\n codePoint & 0x3F | 0x80\n );\n } else if (codePoint < 0x10000) {\n if ((units -= 3) < 0) break\n bytes.push(\n codePoint >> 0xC | 0xE0,\n codePoint >> 0x6 & 0x3F | 0x80,\n codePoint & 0x3F | 0x80\n );\n } else if (codePoint < 0x110000) {\n if ((units -= 4) < 0) break\n bytes.push(\n codePoint >> 0x12 | 0xF0,\n codePoint >> 0xC & 0x3F | 0x80,\n codePoint >> 0x6 & 0x3F | 0x80,\n codePoint & 0x3F | 0x80\n );\n } else {\n throw new Error('Invalid code point')\n }\n }\n\n return bytes\n}\n\nfunction asciiToBytes (str) {\n var byteArray = [];\n for (var i = 0; i < str.length; ++i) {\n // Node's code seems to be doing this and not & 0x7F..\n byteArray.push(str.charCodeAt(i) & 0xFF);\n }\n return byteArray\n}\n\nfunction utf16leToBytes (str, units) {\n var c, hi, lo;\n var byteArray = [];\n for (var i = 0; i < str.length; ++i) {\n if ((units -= 2) < 0) break\n\n c = str.charCodeAt(i);\n hi = c >> 8;\n lo = c % 256;\n byteArray.push(lo);\n byteArray.push(hi);\n }\n\n return byteArray\n}\n\n\nfunction base64ToBytes (str) {\n return toByteArray(base64clean(str))\n}\n\nfunction blitBuffer (src, dst, offset, length) {\n for (var i = 0; i < length; ++i) {\n if ((i + offset >= dst.length) || (i >= src.length)) break\n dst[i + offset] = src[i];\n }\n return i\n}\n\nfunction isnan (val) {\n return val !== val // eslint-disable-line no-self-compare\n}\n\n\n// the following is from is-buffer, also by Feross Aboukhadijeh and with same lisence\n// The _isBuffer check is for Safari 5-7 support, because it's missing\n// Object.prototype.constructor. Remove this eventually\nfunction isBuffer(obj) {\n return obj != null && (!!obj._isBuffer || isFastBuffer(obj) || isSlowBuffer(obj))\n}\n\nfunction isFastBuffer (obj) {\n return !!obj.constructor && typeof obj.constructor.isBuffer === 'function' && obj.constructor.isBuffer(obj)\n}\n\n// For Node v0.10 support. Remove this eventually.\nfunction isSlowBuffer (obj) {\n return typeof obj.readFloatLE === 'function' && typeof obj.slice === 'function' && isFastBuffer(obj.slice(0, 0))\n}\n\nexport { Buffer, INSPECT_MAX_BYTES, SlowBuffer, isBuffer, _kMaxLength as kMaxLength };\n","\nvar inherits;\nif (typeof Object.create === 'function'){\n inherits = function inherits(ctor, superCtor) {\n // implementation from standard node.js 'util' module\n ctor.super_ = superCtor\n ctor.prototype = Object.create(superCtor.prototype, {\n constructor: {\n value: ctor,\n enumerable: false,\n writable: true,\n configurable: true\n }\n });\n };\n} else {\n inherits = function inherits(ctor, superCtor) {\n ctor.super_ = superCtor\n var TempCtor = function () {}\n TempCtor.prototype = superCtor.prototype\n ctor.prototype = new TempCtor()\n ctor.prototype.constructor = ctor\n }\n}\nexport default inherits;\n","// Copyright Joyent, Inc. and other Node contributors.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a\n// copy of this software and associated documentation files (the\n// \"Software\"), to deal in the Software without restriction, including\n// without limitation the rights to use, copy, modify, merge, publish,\n// distribute, sublicense, and/or sell copies of the Software, and to permit\n// persons to whom the Software is furnished to do so, subject to the\n// following conditions:\n//\n// The above copyright notice and this permission notice shall be included\n// in all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN\n// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR\n// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\n// USE OR OTHER DEALINGS IN THE SOFTWARE.\nimport process from 'process';\nvar formatRegExp = /%[sdj%]/g;\nexport function format(f) {\n if (!isString(f)) {\n var objects = [];\n for (var i = 0; i < arguments.length; i++) {\n objects.push(inspect(arguments[i]));\n }\n return objects.join(' ');\n }\n\n var i = 1;\n var args = arguments;\n var len = args.length;\n var str = String(f).replace(formatRegExp, function(x) {\n if (x === '%%') return '%';\n if (i >= len) return x;\n switch (x) {\n case '%s': return String(args[i++]);\n case '%d': return Number(args[i++]);\n case '%j':\n try {\n return JSON.stringify(args[i++]);\n } catch (_) {\n return '[Circular]';\n }\n default:\n return x;\n }\n });\n for (var x = args[i]; i < len; x = args[++i]) {\n if (isNull(x) || !isObject(x)) {\n str += ' ' + x;\n } else {\n str += ' ' + inspect(x);\n }\n }\n return str;\n};\n\n\n// Mark that a method should not be used.\n// Returns a modified function which warns once by default.\n// If --no-deprecation is set, then it is a no-op.\nexport function deprecate(fn, msg) {\n // Allow for deprecating things in the process of starting up.\n if (isUndefined(global.process)) {\n return function() {\n return deprecate(fn, msg).apply(this, arguments);\n };\n }\n\n if (process.noDeprecation === true) {\n return fn;\n }\n\n var warned = false;\n function deprecated() {\n if (!warned) {\n if (process.throwDeprecation) {\n throw new Error(msg);\n } else if (process.traceDeprecation) {\n console.trace(msg);\n } else {\n console.error(msg);\n }\n warned = true;\n }\n return fn.apply(this, arguments);\n }\n\n return deprecated;\n};\n\n\nvar debugs = {};\nvar debugEnviron;\nexport function debuglog(set) {\n if (isUndefined(debugEnviron))\n debugEnviron = process.env.NODE_DEBUG || '';\n set = set.toUpperCase();\n if (!debugs[set]) {\n if (new RegExp('\\\\b' + set + '\\\\b', 'i').test(debugEnviron)) {\n var pid = 0;\n debugs[set] = function() {\n var msg = format.apply(null, arguments);\n console.error('%s %d: %s', set, pid, msg);\n };\n } else {\n debugs[set] = function() {};\n }\n }\n return debugs[set];\n};\n\n\n/**\n * Echos the value of a value. Trys to print the value out\n * in the best way possible given the different types.\n *\n * @param {Object} obj The object to print out.\n * @param {Object} opts Optional options object that alters the output.\n */\n/* legacy: obj, showHidden, depth, colors*/\nexport function inspect(obj, opts) {\n // default options\n var ctx = {\n seen: [],\n stylize: stylizeNoColor\n };\n // legacy...\n if (arguments.length >= 3) ctx.depth = arguments[2];\n if (arguments.length >= 4) ctx.colors = arguments[3];\n if (isBoolean(opts)) {\n // legacy...\n ctx.showHidden = opts;\n } else if (opts) {\n // got an \"options\" object\n _extend(ctx, opts);\n }\n // set default options\n if (isUndefined(ctx.showHidden)) ctx.showHidden = false;\n if (isUndefined(ctx.depth)) ctx.depth = 2;\n if (isUndefined(ctx.colors)) ctx.colors = false;\n if (isUndefined(ctx.customInspect)) ctx.customInspect = true;\n if (ctx.colors) ctx.stylize = stylizeWithColor;\n return formatValue(ctx, obj, ctx.depth);\n}\n\n// http://en.wikipedia.org/wiki/ANSI_escape_code#graphics\ninspect.colors = {\n 'bold' : [1, 22],\n 'italic' : [3, 23],\n 'underline' : [4, 24],\n 'inverse' : [7, 27],\n 'white' : [37, 39],\n 'grey' : [90, 39],\n 'black' : [30, 39],\n 'blue' : [34, 39],\n 'cyan' : [36, 39],\n 'green' : [32, 39],\n 'magenta' : [35, 39],\n 'red' : [31, 39],\n 'yellow' : [33, 39]\n};\n\n// Don't use 'blue' not visible on cmd.exe\ninspect.styles = {\n 'special': 'cyan',\n 'number': 'yellow',\n 'boolean': 'yellow',\n 'undefined': 'grey',\n 'null': 'bold',\n 'string': 'green',\n 'date': 'magenta',\n // \"name\": intentionally not styling\n 'regexp': 'red'\n};\n\n\nfunction stylizeWithColor(str, styleType) {\n var style = inspect.styles[styleType];\n\n if (style) {\n return '\\u001b[' + inspect.colors[style][0] + 'm' + str +\n '\\u001b[' + inspect.colors[style][1] + 'm';\n } else {\n return str;\n }\n}\n\n\nfunction stylizeNoColor(str, styleType) {\n return str;\n}\n\n\nfunction arrayToHash(array) {\n var hash = {};\n\n array.forEach(function(val, idx) {\n hash[val] = true;\n });\n\n return hash;\n}\n\n\nfunction formatValue(ctx, value, recurseTimes) {\n // Provide a hook for user-specified inspect functions.\n // Check that value is an object with an inspect function on it\n if (ctx.customInspect &&\n value &&\n isFunction(value.inspect) &&\n // Filter out the util module, it's inspect function is special\n value.inspect !== inspect &&\n // Also filter out any prototype objects using the circular check.\n !(value.constructor && value.constructor.prototype === value)) {\n var ret = value.inspect(recurseTimes, ctx);\n if (!isString(ret)) {\n ret = formatValue(ctx, ret, recurseTimes);\n }\n return ret;\n }\n\n // Primitive types cannot have properties\n var primitive = formatPrimitive(ctx, value);\n if (primitive) {\n return primitive;\n }\n\n // Look up the keys of the object.\n var keys = Object.keys(value);\n var visibleKeys = arrayToHash(keys);\n\n if (ctx.showHidden) {\n keys = Object.getOwnPropertyNames(value);\n }\n\n // IE doesn't make error fields non-enumerable\n // http://msdn.microsoft.com/en-us/library/ie/dww52sbt(v=vs.94).aspx\n if (isError(value)\n && (keys.indexOf('message') >= 0 || keys.indexOf('description') >= 0)) {\n return formatError(value);\n }\n\n // Some type of object without properties can be shortcutted.\n if (keys.length === 0) {\n if (isFunction(value)) {\n var name = value.name ? ': ' + value.name : '';\n return ctx.stylize('[Function' + name + ']', 'special');\n }\n if (isRegExp(value)) {\n return ctx.stylize(RegExp.prototype.toString.call(value), 'regexp');\n }\n if (isDate(value)) {\n return ctx.stylize(Date.prototype.toString.call(value), 'date');\n }\n if (isError(value)) {\n return formatError(value);\n }\n }\n\n var base = '', array = false, braces = ['{', '}'];\n\n // Make Array say that they are Array\n if (isArray(value)) {\n array = true;\n braces = ['[', ']'];\n }\n\n // Make functions say that they are functions\n if (isFunction(value)) {\n var n = value.name ? ': ' + value.name : '';\n base = ' [Function' + n + ']';\n }\n\n // Make RegExps say that they are RegExps\n if (isRegExp(value)) {\n base = ' ' + RegExp.prototype.toString.call(value);\n }\n\n // Make dates with properties first say the date\n if (isDate(value)) {\n base = ' ' + Date.prototype.toUTCString.call(value);\n }\n\n // Make error with message first say the error\n if (isError(value)) {\n base = ' ' + formatError(value);\n }\n\n if (keys.length === 0 && (!array || value.length == 0)) {\n return braces[0] + base + braces[1];\n }\n\n if (recurseTimes < 0) {\n if (isRegExp(value)) {\n return ctx.stylize(RegExp.prototype.toString.call(value), 'regexp');\n } else {\n return ctx.stylize('[Object]', 'special');\n }\n }\n\n ctx.seen.push(value);\n\n var output;\n if (array) {\n output = formatArray(ctx, value, recurseTimes, visibleKeys, keys);\n } else {\n output = keys.map(function(key) {\n return formatProperty(ctx, value, recurseTimes, visibleKeys, key, array);\n });\n }\n\n ctx.seen.pop();\n\n return reduceToSingleString(output, base, braces);\n}\n\n\nfunction formatPrimitive(ctx, value) {\n if (isUndefined(value))\n return ctx.stylize('undefined', 'undefined');\n if (isString(value)) {\n var simple = '\\'' + JSON.stringify(value).replace(/^\"|\"$/g, '')\n .replace(/'/g, \"\\\\'\")\n .replace(/\\\\\"/g, '\"') + '\\'';\n return ctx.stylize(simple, 'string');\n }\n if (isNumber(value))\n return ctx.stylize('' + value, 'number');\n if (isBoolean(value))\n return ctx.stylize('' + value, 'boolean');\n // For some reason typeof null is \"object\", so special case here.\n if (isNull(value))\n return ctx.stylize('null', 'null');\n}\n\n\nfunction formatError(value) {\n return '[' + Error.prototype.toString.call(value) + ']';\n}\n\n\nfunction formatArray(ctx, value, recurseTimes, visibleKeys, keys) {\n var output = [];\n for (var i = 0, l = value.length; i < l; ++i) {\n if (hasOwnProperty(value, String(i))) {\n output.push(formatProperty(ctx, value, recurseTimes, visibleKeys,\n String(i), true));\n } else {\n output.push('');\n }\n }\n keys.forEach(function(key) {\n if (!key.match(/^\\d+$/)) {\n output.push(formatProperty(ctx, value, recurseTimes, visibleKeys,\n key, true));\n }\n });\n return output;\n}\n\n\nfunction formatProperty(ctx, value, recurseTimes, visibleKeys, key, array) {\n var name, str, desc;\n desc = Object.getOwnPropertyDescriptor(value, key) || { value: value[key] };\n if (desc.get) {\n if (desc.set) {\n str = ctx.stylize('[Getter/Setter]', 'special');\n } else {\n str = ctx.stylize('[Getter]', 'special');\n }\n } else {\n if (desc.set) {\n str = ctx.stylize('[Setter]', 'special');\n }\n }\n if (!hasOwnProperty(visibleKeys, key)) {\n name = '[' + key + ']';\n }\n if (!str) {\n if (ctx.seen.indexOf(desc.value) < 0) {\n if (isNull(recurseTimes)) {\n str = formatValue(ctx, desc.value, null);\n } else {\n str = formatValue(ctx, desc.value, recurseTimes - 1);\n }\n if (str.indexOf('\\n') > -1) {\n if (array) {\n str = str.split('\\n').map(function(line) {\n return ' ' + line;\n }).join('\\n').substr(2);\n } else {\n str = '\\n' + str.split('\\n').map(function(line) {\n return ' ' + line;\n }).join('\\n');\n }\n }\n } else {\n str = ctx.stylize('[Circular]', 'special');\n }\n }\n if (isUndefined(name)) {\n if (array && key.match(/^\\d+$/)) {\n return str;\n }\n name = JSON.stringify('' + key);\n if (name.match(/^\"([a-zA-Z_][a-zA-Z_0-9]*)\"$/)) {\n name = name.substr(1, name.length - 2);\n name = ctx.stylize(name, 'name');\n } else {\n name = name.replace(/'/g, \"\\\\'\")\n .replace(/\\\\\"/g, '\"')\n .replace(/(^\"|\"$)/g, \"'\");\n name = ctx.stylize(name, 'string');\n }\n }\n\n return name + ': ' + str;\n}\n\n\nfunction reduceToSingleString(output, base, braces) {\n var numLinesEst = 0;\n var length = output.reduce(function(prev, cur) {\n numLinesEst++;\n if (cur.indexOf('\\n') >= 0) numLinesEst++;\n return prev + cur.replace(/\\u001b\\[\\d\\d?m/g, '').length + 1;\n }, 0);\n\n if (length > 60) {\n return braces[0] +\n (base === '' ? '' : base + '\\n ') +\n ' ' +\n output.join(',\\n ') +\n ' ' +\n braces[1];\n }\n\n return braces[0] + base + ' ' + output.join(', ') + ' ' + braces[1];\n}\n\n\n// NOTE: These type checking functions intentionally don't use `instanceof`\n// because it is fragile and can be easily faked with `Object.create()`.\nexport function isArray(ar) {\n return Array.isArray(ar);\n}\n\nexport function isBoolean(arg) {\n return typeof arg === 'boolean';\n}\n\nexport function isNull(arg) {\n return arg === null;\n}\n\nexport function isNullOrUndefined(arg) {\n return arg == null;\n}\n\nexport function isNumber(arg) {\n return typeof arg === 'number';\n}\n\nexport function isString(arg) {\n return typeof arg === 'string';\n}\n\nexport function isSymbol(arg) {\n return typeof arg === 'symbol';\n}\n\nexport function isUndefined(arg) {\n return arg === void 0;\n}\n\nexport function isRegExp(re) {\n return isObject(re) && objectToString(re) === '[object RegExp]';\n}\n\nexport function isObject(arg) {\n return typeof arg === 'object' && arg !== null;\n}\n\nexport function isDate(d) {\n return isObject(d) && objectToString(d) === '[object Date]';\n}\n\nexport function isError(e) {\n return isObject(e) &&\n (objectToString(e) === '[object Error]' || e instanceof Error);\n}\n\nexport function isFunction(arg) {\n return typeof arg === 'function';\n}\n\nexport function isPrimitive(arg) {\n return arg === null ||\n typeof arg === 'boolean' ||\n typeof arg === 'number' ||\n typeof arg === 'string' ||\n typeof arg === 'symbol' || // ES6 symbol\n typeof arg === 'undefined';\n}\n\nexport function isBuffer(maybeBuf) {\n return Buffer.isBuffer(maybeBuf);\n}\n\nfunction objectToString(o) {\n return Object.prototype.toString.call(o);\n}\n\n\nfunction pad(n) {\n return n < 10 ? '0' + n.toString(10) : n.toString(10);\n}\n\n\nvar months = ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep',\n 'Oct', 'Nov', 'Dec'];\n\n// 26 Feb 16:19:34\nfunction timestamp() {\n var d = new Date();\n var time = [pad(d.getHours()),\n pad(d.getMinutes()),\n pad(d.getSeconds())].join(':');\n return [d.getDate(), months[d.getMonth()], time].join(' ');\n}\n\n\n// log is just a thin wrapper to console.log that prepends a timestamp\nexport function log() {\n console.log('%s - %s', timestamp(), format.apply(null, arguments));\n}\n\n\n/**\n * Inherit the prototype methods from one constructor into another.\n *\n * The Function.prototype.inherits from lang.js rewritten as a standalone\n * function (not on Function.prototype). NOTE: If this file is to be loaded\n * during bootstrapping this function needs to be rewritten using some native\n * functions as prototype setup using normal JavaScript does not work as\n * expected during bootstrapping (see mirror.js in r114903).\n *\n * @param {function} ctor Constructor function which needs to inherit the\n * prototype.\n * @param {function} superCtor Constructor function to inherit prototype from.\n */\nimport inherits from './inherits';\nexport {inherits}\n\nexport function _extend(origin, add) {\n // Don't do anything if add isn't an object\n if (!add || !isObject(add)) return origin;\n\n var keys = Object.keys(add);\n var i = keys.length;\n while (i--) {\n origin[keys[i]] = add[keys[i]];\n }\n return origin;\n};\n\nfunction hasOwnProperty(obj, prop) {\n return Object.prototype.hasOwnProperty.call(obj, prop);\n}\n\nexport default {\n inherits: inherits,\n _extend: _extend,\n log: log,\n isBuffer: isBuffer,\n isPrimitive: isPrimitive,\n isFunction: isFunction,\n isError: isError,\n isDate: isDate,\n isObject: isObject,\n isRegExp: isRegExp,\n isUndefined: isUndefined,\n isSymbol: isSymbol,\n isString: isString,\n isNumber: isNumber,\n isNullOrUndefined: isNullOrUndefined,\n isNull: isNull,\n isBoolean: isBoolean,\n isArray: isArray,\n inspect: inspect,\n deprecate: deprecate,\n format: format,\n debuglog: debuglog\n}\n","'use strict';\n\nfunction ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); keys.push.apply(keys, symbols); } return keys; }\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }\n\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }\n\nvar _require = require('buffer'),\n Buffer = _require.Buffer;\n\nvar _require2 = require('util'),\n inspect = _require2.inspect;\n\nvar custom = inspect && inspect.custom || 'inspect';\n\nfunction copyBuffer(src, target, offset) {\n Buffer.prototype.copy.call(src, target, offset);\n}\n\nmodule.exports =\n/*#__PURE__*/\nfunction () {\n function BufferList() {\n _classCallCheck(this, BufferList);\n\n this.head = null;\n this.tail = null;\n this.length = 0;\n }\n\n _createClass(BufferList, [{\n key: \"push\",\n value: function push(v) {\n var entry = {\n data: v,\n next: null\n };\n if (this.length > 0) this.tail.next = entry;else this.head = entry;\n this.tail = entry;\n ++this.length;\n }\n }, {\n key: \"unshift\",\n value: function unshift(v) {\n var entry = {\n data: v,\n next: this.head\n };\n if (this.length === 0) this.tail = entry;\n this.head = entry;\n ++this.length;\n }\n }, {\n key: \"shift\",\n value: function shift() {\n if (this.length === 0) return;\n var ret = this.head.data;\n if (this.length === 1) this.head = this.tail = null;else this.head = this.head.next;\n --this.length;\n return ret;\n }\n }, {\n key: \"clear\",\n value: function clear() {\n this.head = this.tail = null;\n this.length = 0;\n }\n }, {\n key: \"join\",\n value: function join(s) {\n if (this.length === 0) return '';\n var p = this.head;\n var ret = '' + p.data;\n\n while (p = p.next) {\n ret += s + p.data;\n }\n\n return ret;\n }\n }, {\n key: \"concat\",\n value: function concat(n) {\n if (this.length === 0) return Buffer.alloc(0);\n var ret = Buffer.allocUnsafe(n >>> 0);\n var p = this.head;\n var i = 0;\n\n while (p) {\n copyBuffer(p.data, ret, i);\n i += p.data.length;\n p = p.next;\n }\n\n return ret;\n } // Consumes a specified amount of bytes or characters from the buffered data.\n\n }, {\n key: \"consume\",\n value: function consume(n, hasStrings) {\n var ret;\n\n if (n < this.head.data.length) {\n // `slice` is the same for buffers and strings.\n ret = this.head.data.slice(0, n);\n this.head.data = this.head.data.slice(n);\n } else if (n === this.head.data.length) {\n // First chunk is a perfect match.\n ret = this.shift();\n } else {\n // Result spans more than one buffer.\n ret = hasStrings ? this._getString(n) : this._getBuffer(n);\n }\n\n return ret;\n }\n }, {\n key: \"first\",\n value: function first() {\n return this.head.data;\n } // Consumes a specified amount of characters from the buffered data.\n\n }, {\n key: \"_getString\",\n value: function _getString(n) {\n var p = this.head;\n var c = 1;\n var ret = p.data;\n n -= ret.length;\n\n while (p = p.next) {\n var str = p.data;\n var nb = n > str.length ? str.length : n;\n if (nb === str.length) ret += str;else ret += str.slice(0, n);\n n -= nb;\n\n if (n === 0) {\n if (nb === str.length) {\n ++c;\n if (p.next) this.head = p.next;else this.head = this.tail = null;\n } else {\n this.head = p;\n p.data = str.slice(nb);\n }\n\n break;\n }\n\n ++c;\n }\n\n this.length -= c;\n return ret;\n } // Consumes a specified amount of bytes from the buffered data.\n\n }, {\n key: \"_getBuffer\",\n value: function _getBuffer(n) {\n var ret = Buffer.allocUnsafe(n);\n var p = this.head;\n var c = 1;\n p.data.copy(ret);\n n -= p.data.length;\n\n while (p = p.next) {\n var buf = p.data;\n var nb = n > buf.length ? buf.length : n;\n buf.copy(ret, ret.length - n, 0, nb);\n n -= nb;\n\n if (n === 0) {\n if (nb === buf.length) {\n ++c;\n if (p.next) this.head = p.next;else this.head = this.tail = null;\n } else {\n this.head = p;\n p.data = buf.slice(nb);\n }\n\n break;\n }\n\n ++c;\n }\n\n this.length -= c;\n return ret;\n } // Make sure the linked list only shows the minimal necessary information.\n\n }, {\n key: custom,\n value: function value(_, options) {\n return inspect(this, _objectSpread({}, options, {\n // Only inspect one level.\n depth: 0,\n // It should not recurse.\n customInspect: false\n }));\n }\n }]);\n\n return BufferList;\n}();","'use strict'; // undocumented cb() API, needed for core, not for public API\n\nfunction destroy(err, cb) {\n var _this = this;\n\n var readableDestroyed = this._readableState && this._readableState.destroyed;\n var writableDestroyed = this._writableState && this._writableState.destroyed;\n\n if (readableDestroyed || writableDestroyed) {\n if (cb) {\n cb(err);\n } else if (err) {\n if (!this._writableState) {\n process.nextTick(emitErrorNT, this, err);\n } else if (!this._writableState.errorEmitted) {\n this._writableState.errorEmitted = true;\n process.nextTick(emitErrorNT, this, err);\n }\n }\n\n return this;\n } // we set destroyed to true before firing error callbacks in order\n // to make it re-entrance safe in case destroy() is called within callbacks\n\n\n if (this._readableState) {\n this._readableState.destroyed = true;\n } // if this is a duplex stream mark the writable part as destroyed as well\n\n\n if (this._writableState) {\n this._writableState.destroyed = true;\n }\n\n this._destroy(err || null, function (err) {\n if (!cb && err) {\n if (!_this._writableState) {\n process.nextTick(emitErrorAndCloseNT, _this, err);\n } else if (!_this._writableState.errorEmitted) {\n _this._writableState.errorEmitted = true;\n process.nextTick(emitErrorAndCloseNT, _this, err);\n } else {\n process.nextTick(emitCloseNT, _this);\n }\n } else if (cb) {\n process.nextTick(emitCloseNT, _this);\n cb(err);\n } else {\n process.nextTick(emitCloseNT, _this);\n }\n });\n\n return this;\n}\n\nfunction emitErrorAndCloseNT(self, err) {\n emitErrorNT(self, err);\n emitCloseNT(self);\n}\n\nfunction emitCloseNT(self) {\n if (self._writableState && !self._writableState.emitClose) return;\n if (self._readableState && !self._readableState.emitClose) return;\n self.emit('close');\n}\n\nfunction undestroy() {\n if (this._readableState) {\n this._readableState.destroyed = false;\n this._readableState.reading = false;\n this._readableState.ended = false;\n this._readableState.endEmitted = false;\n }\n\n if (this._writableState) {\n this._writableState.destroyed = false;\n this._writableState.ended = false;\n this._writableState.ending = false;\n this._writableState.finalCalled = false;\n this._writableState.prefinished = false;\n this._writableState.finished = false;\n this._writableState.errorEmitted = false;\n }\n}\n\nfunction emitErrorNT(self, err) {\n self.emit('error', err);\n}\n\nfunction errorOrDestroy(stream, err) {\n // We have tests that rely on errors being emitted\n // in the same tick, so changing this is semver major.\n // For now when you opt-in to autoDestroy we allow\n // the error to be emitted nextTick. In a future\n // semver major update we should change the default to this.\n var rState = stream._readableState;\n var wState = stream._writableState;\n if (rState && rState.autoDestroy || wState && wState.autoDestroy) stream.destroy(err);else stream.emit('error', err);\n}\n\nmodule.exports = {\n destroy: destroy,\n undestroy: undestroy,\n errorOrDestroy: errorOrDestroy\n};","'use strict';\n\nfunction _inheritsLoose(subClass, superClass) { subClass.prototype = Object.create(superClass.prototype); subClass.prototype.constructor = subClass; subClass.__proto__ = superClass; }\n\nvar codes = {};\n\nfunction createErrorType(code, message, Base) {\n if (!Base) {\n Base = Error;\n }\n\n function getMessage(arg1, arg2, arg3) {\n if (typeof message === 'string') {\n return message;\n } else {\n return message(arg1, arg2, arg3);\n }\n }\n\n var NodeError =\n /*#__PURE__*/\n function (_Base) {\n _inheritsLoose(NodeError, _Base);\n\n function NodeError(arg1, arg2, arg3) {\n return _Base.call(this, getMessage(arg1, arg2, arg3)) || this;\n }\n\n return NodeError;\n }(Base);\n\n NodeError.prototype.name = Base.name;\n NodeError.prototype.code = code;\n codes[code] = NodeError;\n} // https://github.com/nodejs/node/blob/v10.8.0/lib/internal/errors.js\n\n\nfunction oneOf(expected, thing) {\n if (Array.isArray(expected)) {\n var len = expected.length;\n expected = expected.map(function (i) {\n return String(i);\n });\n\n if (len > 2) {\n return \"one of \".concat(thing, \" \").concat(expected.slice(0, len - 1).join(', '), \", or \") + expected[len - 1];\n } else if (len === 2) {\n return \"one of \".concat(thing, \" \").concat(expected[0], \" or \").concat(expected[1]);\n } else {\n return \"of \".concat(thing, \" \").concat(expected[0]);\n }\n } else {\n return \"of \".concat(thing, \" \").concat(String(expected));\n }\n} // https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/startsWith\n\n\nfunction startsWith(str, search, pos) {\n return str.substr(!pos || pos < 0 ? 0 : +pos, search.length) === search;\n} // https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/endsWith\n\n\nfunction endsWith(str, search, this_len) {\n if (this_len === undefined || this_len > str.length) {\n this_len = str.length;\n }\n\n return str.substring(this_len - search.length, this_len) === search;\n} // https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/includes\n\n\nfunction includes(str, search, start) {\n if (typeof start !== 'number') {\n start = 0;\n }\n\n if (start + search.length > str.length) {\n return false;\n } else {\n return str.indexOf(search, start) !== -1;\n }\n}\n\ncreateErrorType('ERR_INVALID_OPT_VALUE', function (name, value) {\n return 'The value \"' + value + '\" is invalid for option \"' + name + '\"';\n}, TypeError);\ncreateErrorType('ERR_INVALID_ARG_TYPE', function (name, expected, actual) {\n // determiner: 'must be' or 'must not be'\n var determiner;\n\n if (typeof expected === 'string' && startsWith(expected, 'not ')) {\n determiner = 'must not be';\n expected = expected.replace(/^not /, '');\n } else {\n determiner = 'must be';\n }\n\n var msg;\n\n if (endsWith(name, ' argument')) {\n // For cases like 'first argument'\n msg = \"The \".concat(name, \" \").concat(determiner, \" \").concat(oneOf(expected, 'type'));\n } else {\n var type = includes(name, '.') ? 'property' : 'argument';\n msg = \"The \\\"\".concat(name, \"\\\" \").concat(type, \" \").concat(determiner, \" \").concat(oneOf(expected, 'type'));\n }\n\n msg += \". Received type \".concat(typeof actual);\n return msg;\n}, TypeError);\ncreateErrorType('ERR_STREAM_PUSH_AFTER_EOF', 'stream.push() after EOF');\ncreateErrorType('ERR_METHOD_NOT_IMPLEMENTED', function (name) {\n return 'The ' + name + ' method is not implemented';\n});\ncreateErrorType('ERR_STREAM_PREMATURE_CLOSE', 'Premature close');\ncreateErrorType('ERR_STREAM_DESTROYED', function (name) {\n return 'Cannot call ' + name + ' after a stream was destroyed';\n});\ncreateErrorType('ERR_MULTIPLE_CALLBACK', 'Callback called multiple times');\ncreateErrorType('ERR_STREAM_CANNOT_PIPE', 'Cannot pipe, not readable');\ncreateErrorType('ERR_STREAM_WRITE_AFTER_END', 'write after end');\ncreateErrorType('ERR_STREAM_NULL_VALUES', 'May not write null values to stream', TypeError);\ncreateErrorType('ERR_UNKNOWN_ENCODING', function (arg) {\n return 'Unknown encoding: ' + arg;\n}, TypeError);\ncreateErrorType('ERR_STREAM_UNSHIFT_AFTER_END_EVENT', 'stream.unshift() after end event');\nmodule.exports.codes = codes;\n","'use strict';\n\nvar ERR_INVALID_OPT_VALUE = require('../../../errors').codes.ERR_INVALID_OPT_VALUE;\n\nfunction highWaterMarkFrom(options, isDuplex, duplexKey) {\n return options.highWaterMark != null ? options.highWaterMark : isDuplex ? options[duplexKey] : null;\n}\n\nfunction getHighWaterMark(state, options, duplexKey, isDuplex) {\n var hwm = highWaterMarkFrom(options, isDuplex, duplexKey);\n\n if (hwm != null) {\n if (!(isFinite(hwm) && Math.floor(hwm) === hwm) || hwm < 0) {\n var name = isDuplex ? duplexKey : 'highWaterMark';\n throw new ERR_INVALID_OPT_VALUE(name, hwm);\n }\n\n return Math.floor(hwm);\n } // Default value\n\n\n return state.objectMode ? 16 : 16 * 1024;\n}\n\nmodule.exports = {\n getHighWaterMark: getHighWaterMark\n};","if (typeof Object.create === 'function') {\n // implementation from standard node.js 'util' module\n module.exports = function inherits(ctor, superCtor) {\n if (superCtor) {\n ctor.super_ = superCtor\n ctor.prototype = Object.create(superCtor.prototype, {\n constructor: {\n value: ctor,\n enumerable: false,\n writable: true,\n configurable: true\n }\n })\n }\n };\n} else {\n // old school shim for old browsers\n module.exports = function inherits(ctor, superCtor) {\n if (superCtor) {\n ctor.super_ = superCtor\n var TempCtor = function () {}\n TempCtor.prototype = superCtor.prototype\n ctor.prototype = new TempCtor()\n ctor.prototype.constructor = ctor\n }\n }\n}\n","\n/**\n * Module exports.\n */\n\nmodule.exports = deprecate;\n\n/**\n * Mark that a method should not be used.\n * Returns a modified function which warns once by default.\n *\n * If `localStorage.noDeprecation = true` is set, then it is a no-op.\n *\n * If `localStorage.throwDeprecation = true` is set, then deprecated functions\n * will throw an Error when invoked.\n *\n * If `localStorage.traceDeprecation = true` is set, then deprecated functions\n * will invoke `console.trace()` instead of `console.error()`.\n *\n * @param {Function} fn - the function to deprecate\n * @param {String} msg - the string to print to the console when `fn` is invoked\n * @returns {Function} a new \"deprecated\" version of `fn`\n * @api public\n */\n\nfunction deprecate (fn, msg) {\n if (config('noDeprecation')) {\n return fn;\n }\n\n var warned = false;\n function deprecated() {\n if (!warned) {\n if (config('throwDeprecation')) {\n throw new Error(msg);\n } else if (config('traceDeprecation')) {\n console.trace(msg);\n } else {\n console.warn(msg);\n }\n warned = true;\n }\n return fn.apply(this, arguments);\n }\n\n return deprecated;\n}\n\n/**\n * Checks `localStorage` for boolean values for the given `name`.\n *\n * @param {String} name\n * @returns {Boolean}\n * @api private\n */\n\nfunction config (name) {\n // accessing global.localStorage can trigger a DOMException in sandboxed iframes\n try {\n if (!global.localStorage) return false;\n } catch (_) {\n return false;\n }\n var val = global.localStorage[name];\n if (null == val) return false;\n return String(val).toLowerCase() === 'true';\n}\n","// Copyright Joyent, Inc. and other Node contributors.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a\n// copy of this software and associated documentation files (the\n// \"Software\"), to deal in the Software without restriction, including\n// without limitation the rights to use, copy, modify, merge, publish,\n// distribute, sublicense, and/or sell copies of the Software, and to permit\n// persons to whom the Software is furnished to do so, subject to the\n// following conditions:\n//\n// The above copyright notice and this permission notice shall be included\n// in all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN\n// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR\n// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\n// USE OR OTHER DEALINGS IN THE SOFTWARE.\n// A bit simpler than readable streams.\n// Implement an async ._write(chunk, encoding, cb), and it'll handle all\n// the drain event emission and buffering.\n'use strict';\n\nmodule.exports = Writable;\n/* <replacement> */\n\nfunction WriteReq(chunk, encoding, cb) {\n this.chunk = chunk;\n this.encoding = encoding;\n this.callback = cb;\n this.next = null;\n} // It seems a linked list but it is not\n// there will be only 2 of these for each stream\n\n\nfunction CorkedRequest(state) {\n var _this = this;\n\n this.next = null;\n this.entry = null;\n\n this.finish = function () {\n onCorkedFinish(_this, state);\n };\n}\n/* </replacement> */\n\n/*<replacement>*/\n\n\nvar Duplex;\n/*</replacement>*/\n\nWritable.WritableState = WritableState;\n/*<replacement>*/\n\nvar internalUtil = {\n deprecate: require('util-deprecate')\n};\n/*</replacement>*/\n\n/*<replacement>*/\n\nvar Stream = require('./internal/streams/stream');\n/*</replacement>*/\n\n\nvar Buffer = require('buffer').Buffer;\n\nvar OurUint8Array = global.Uint8Array || function () {};\n\nfunction _uint8ArrayToBuffer(chunk) {\n return Buffer.from(chunk);\n}\n\nfunction _isUint8Array(obj) {\n return Buffer.isBuffer(obj) || obj instanceof OurUint8Array;\n}\n\nvar destroyImpl = require('./internal/streams/destroy');\n\nvar _require = require('./internal/streams/state'),\n getHighWaterMark = _require.getHighWaterMark;\n\nvar _require$codes = require('../errors').codes,\n ERR_INVALID_ARG_TYPE = _require$codes.ERR_INVALID_ARG_TYPE,\n ERR_METHOD_NOT_IMPLEMENTED = _require$codes.ERR_METHOD_NOT_IMPLEMENTED,\n ERR_MULTIPLE_CALLBACK = _require$codes.ERR_MULTIPLE_CALLBACK,\n ERR_STREAM_CANNOT_PIPE = _require$codes.ERR_STREAM_CANNOT_PIPE,\n ERR_STREAM_DESTROYED = _require$codes.ERR_STREAM_DESTROYED,\n ERR_STREAM_NULL_VALUES = _require$codes.ERR_STREAM_NULL_VALUES,\n ERR_STREAM_WRITE_AFTER_END = _require$codes.ERR_STREAM_WRITE_AFTER_END,\n ERR_UNKNOWN_ENCODING = _require$codes.ERR_UNKNOWN_ENCODING;\n\nvar errorOrDestroy = destroyImpl.errorOrDestroy;\n\nrequire('inherits')(Writable, Stream);\n\nfunction nop() {}\n\nfunction WritableState(options, stream, isDuplex) {\n Duplex = Duplex || require('./_stream_duplex');\n options = options || {}; // Duplex streams are both readable and writable, but share\n // the same options object.\n // However, some cases require setting options to different\n // values for the readable and the writable sides of the duplex stream,\n // e.g. options.readableObjectMode vs. options.writableObjectMode, etc.\n\n if (typeof isDuplex !== 'boolean') isDuplex = stream instanceof Duplex; // object stream flag to indicate whether or not this stream\n // contains buffers or objects.\n\n this.objectMode = !!options.objectMode;\n if (isDuplex) this.objectMode = this.objectMode || !!options.writableObjectMode; // the point at which write() starts returning false\n // Note: 0 is a valid value, means that we always return false if\n // the entire buffer is not flushed immediately on write()\n\n this.highWaterMark = getHighWaterMark(this, options, 'writableHighWaterMark', isDuplex); // if _final has been called\n\n this.finalCalled = false; // drain event flag.\n\n this.needDrain = false; // at the start of calling end()\n\n this.ending = false; // when end() has been called, and returned\n\n this.ended = false; // when 'finish' is emitted\n\n this.finished = false; // has it been destroyed\n\n this.destroyed = false; // should we decode strings into buffers before passing to _write?\n // this is here so that some node-core streams can optimize string\n // handling at a lower level.\n\n var noDecode = options.decodeStrings === false;\n this.decodeStrings = !noDecode; // Crypto is kind of old and crusty. Historically, its default string\n // encoding is 'binary' so we have to make this configurable.\n // Everything else in the universe uses 'utf8', though.\n\n this.defaultEncoding = options.defaultEncoding || 'utf8'; // not an actual buffer we keep track of, but a measurement\n // of how much we're waiting to get pushed to some underlying\n // socket or file.\n\n this.length = 0; // a flag to see when we're in the middle of a write.\n\n this.writing = false; // when true all writes will be buffered until .uncork() call\n\n this.corked = 0; // a flag to be able to tell if the onwrite cb is called immediately,\n // or on a later tick. We set this to true at first, because any\n // actions that shouldn't happen until \"later\" should generally also\n // not happen before the first write call.\n\n this.sync = true; // a flag to know if we're processing previously buffered items, which\n // may call the _write() callback in the same tick, so that we don't\n // end up in an overlapped onwrite situation.\n\n this.bufferProcessing = false; // the callback that's passed to _write(chunk,cb)\n\n this.onwrite = function (er) {\n onwrite(stream, er);\n }; // the callback that the user supplies to write(chunk,encoding,cb)\n\n\n this.writecb = null; // the amount that is being written when _write is called.\n\n this.writelen = 0;\n this.bufferedRequest = null;\n this.lastBufferedRequest = null; // number of pending user-supplied write callbacks\n // this must be 0 before 'finish' can be emitted\n\n this.pendingcb = 0; // emit prefinish if the only thing we're waiting for is _write cbs\n // This is relevant for synchronous Transform streams\n\n this.prefinished = false; // True if the error was already emitted and should not be thrown again\n\n this.errorEmitted = false; // Should close be emitted on destroy. Defaults to true.\n\n this.emitClose = options.emitClose !== false; // Should .destroy() be called after 'finish' (and potentially 'end')\n\n this.autoDestroy = !!options.autoDestroy; // count buffered requests\n\n this.bufferedRequestCount = 0; // allocate the first CorkedRequest, there is always\n // one allocated and free to use, and we maintain at most two\n\n this.corkedRequestsFree = new CorkedRequest(this);\n}\n\nWritableState.prototype.getBuffer = function getBuffer() {\n var current = this.bufferedRequest;\n var out = [];\n\n while (current) {\n out.push(current);\n current = current.next;\n }\n\n return out;\n};\n\n(function () {\n try {\n Object.defineProperty(WritableState.prototype, 'buffer', {\n get: internalUtil.deprecate(function writableStateBufferGetter() {\n return this.getBuffer();\n }, '_writableState.buffer is deprecated. Use _writableState.getBuffer ' + 'instead.', 'DEP0003')\n });\n } catch (_) {}\n})(); // Test _writableState for inheritance to account for Duplex streams,\n// whose prototype chain only points to Readable.\n\n\nvar realHasInstance;\n\nif (typeof Symbol === 'function' && Symbol.hasInstance && typeof Function.prototype[Symbol.hasInstance] === 'function') {\n realHasInstance = Function.prototype[Symbol.hasInstance];\n Object.defineProperty(Writable, Symbol.hasInstance, {\n value: function value(object) {\n if (realHasInstance.call(this, object)) return true;\n if (this !== Writable) return false;\n return object && object._writableState instanceof WritableState;\n }\n });\n} else {\n realHasInstance = function realHasInstance(object) {\n return object instanceof this;\n };\n}\n\nfunction Writable(options) {\n Duplex = Duplex || require('./_stream_duplex'); // Writable ctor is applied to Duplexes, too.\n // `realHasInstance` is necessary because using plain `instanceof`\n // would return false, as no `_writableState` property is attached.\n // Trying to use the custom `instanceof` for Writable here will also break the\n // Node.js LazyTransform implementation, which has a non-trivial getter for\n // `_writableState` that would lead to infinite recursion.\n // Checking for a Stream.Duplex instance is faster here instead of inside\n // the WritableState constructor, at least with V8 6.5\n\n var isDuplex = this instanceof Duplex;\n if (!isDuplex && !realHasInstance.call(Writable, this)) return new Writable(options);\n this._writableState = new WritableState(options, this, isDuplex); // legacy.\n\n this.writable = true;\n\n if (options) {\n if (typeof options.write === 'function') this._write = options.write;\n if (typeof options.writev === 'function') this._writev = options.writev;\n if (typeof options.destroy === 'function') this._destroy = options.destroy;\n if (typeof options.final === 'function') this._final = options.final;\n }\n\n Stream.call(this);\n} // Otherwise people can pipe Writable streams, which is just wrong.\n\n\nWritable.prototype.pipe = function () {\n errorOrDestroy(this, new ERR_STREAM_CANNOT_PIPE());\n};\n\nfunction writeAfterEnd(stream, cb) {\n var er = new ERR_STREAM_WRITE_AFTER_END(); // TODO: defer error events consistently everywhere, not just the cb\n\n errorOrDestroy(stream, er);\n process.nextTick(cb, er);\n} // Checks that a user-supplied chunk is valid, especially for the particular\n// mode the stream is in. Currently this means that `null` is never accepted\n// and undefined/non-string values are only allowed in object mode.\n\n\nfunction validChunk(stream, state, chunk, cb) {\n var er;\n\n if (chunk === null) {\n er = new ERR_STREAM_NULL_VALUES();\n } else if (typeof chunk !== 'string' && !state.objectMode) {\n er = new ERR_INVALID_ARG_TYPE('chunk', ['string', 'Buffer'], chunk);\n }\n\n if (er) {\n errorOrDestroy(stream, er);\n process.nextTick(cb, er);\n return false;\n }\n\n return true;\n}\n\nWritable.prototype.write = function (chunk, encoding, cb) {\n var state = this._writableState;\n var ret = false;\n\n var isBuf = !state.objectMode && _isUint8Array(chunk);\n\n if (isBuf && !Buffer.isBuffer(chunk)) {\n chunk = _uint8ArrayToBuffer(chunk);\n }\n\n if (typeof encoding === 'function') {\n cb = encoding;\n encoding = null;\n }\n\n if (isBuf) encoding = 'buffer';else if (!encoding) encoding = state.defaultEncoding;\n if (typeof cb !== 'function') cb = nop;\n if (state.ending) writeAfterEnd(this, cb);else if (isBuf || validChunk(this, state, chunk, cb)) {\n state.pendingcb++;\n ret = writeOrBuffer(this, state, isBuf, chunk, encoding, cb);\n }\n return ret;\n};\n\nWritable.prototype.cork = function () {\n this._writableState.corked++;\n};\n\nWritable.prototype.uncork = function () {\n var state = this._writableState;\n\n if (state.corked) {\n state.corked--;\n if (!state.writing && !state.corked && !state.bufferProcessing && state.bufferedRequest) clearBuffer(this, state);\n }\n};\n\nWritable.prototype.setDefaultEncoding = function setDefaultEncoding(encoding) {\n // node::ParseEncoding() requires lower case.\n if (typeof encoding === 'string') encoding = encoding.toLowerCase();\n if (!(['hex', 'utf8', 'utf-8', 'ascii', 'binary', 'base64', 'ucs2', 'ucs-2', 'utf16le', 'utf-16le', 'raw'].indexOf((encoding + '').toLowerCase()) > -1)) throw new ERR_UNKNOWN_ENCODING(encoding);\n this._writableState.defaultEncoding = encoding;\n return this;\n};\n\nObject.defineProperty(Writable.prototype, 'writableBuffer', {\n // making it explicit this property is not enumerable\n // because otherwise some prototype manipulation in\n // userland will fail\n enumerable: false,\n get: function get() {\n return this._writableState && this._writableState.getBuffer();\n }\n});\n\nfunction decodeChunk(state, chunk, encoding) {\n if (!state.objectMode && state.decodeStrings !== false && typeof chunk === 'string') {\n chunk = Buffer.from(chunk, encoding);\n }\n\n return chunk;\n}\n\nObject.defineProperty(Writable.prototype, 'writableHighWaterMark', {\n // making it explicit this property is not enumerable\n // because otherwise some prototype manipulation in\n // userland will fail\n enumerable: false,\n get: function get() {\n return this._writableState.highWaterMark;\n }\n}); // if we're already writing something, then just put this\n// in the queue, and wait our turn. Otherwise, call _write\n// If we return false, then we need a drain event, so set that flag.\n\nfunction writeOrBuffer(stream, state, isBuf, chunk, encoding, cb) {\n if (!isBuf) {\n var newChunk = decodeChunk(state, chunk, encoding);\n\n if (chunk !== newChunk) {\n isBuf = true;\n encoding = 'buffer';\n chunk = newChunk;\n }\n }\n\n var len = state.objectMode ? 1 : chunk.length;\n state.length += len;\n var ret = state.length < state.highWaterMark; // we must ensure that previous needDrain will not be reset to false.\n\n if (!ret) state.needDrain = true;\n\n if (state.writing || state.corked) {\n var last = state.lastBufferedRequest;\n state.lastBufferedRequest = {\n chunk: chunk,\n encoding: encoding,\n isBuf: isBuf,\n callback: cb,\n next: null\n };\n\n if (last) {\n last.next = state.lastBufferedRequest;\n } else {\n state.bufferedRequest = state.lastBufferedRequest;\n }\n\n state.bufferedRequestCount += 1;\n } else {\n doWrite(stream, state, false, len, chunk, encoding, cb);\n }\n\n return ret;\n}\n\nfunction doWrite(stream, state, writev, len, chunk, encoding, cb) {\n state.writelen = len;\n state.writecb = cb;\n state.writing = true;\n state.sync = true;\n if (state.destroyed) state.onwrite(new ERR_STREAM_DESTROYED('write'));else if (writev) stream._writev(chunk, state.onwrite);else stream._write(chunk, encoding, state.onwrite);\n state.sync = false;\n}\n\nfunction onwriteError(stream, state, sync, er, cb) {\n --state.pendingcb;\n\n if (sync) {\n // defer the callback if we are being called synchronously\n // to avoid piling up things on the stack\n process.nextTick(cb, er); // this can emit finish, and it will always happen\n // after error\n\n process.nextTick(finishMaybe, stream, state);\n stream._writableState.errorEmitted = true;\n errorOrDestroy(stream, er);\n } else {\n // the caller expect this to happen before if\n // it is async\n cb(er);\n stream._writableState.errorEmitted = true;\n errorOrDestroy(stream, er); // this can emit finish, but finish must\n // always follow error\n\n finishMaybe(stream, state);\n }\n}\n\nfunction onwriteStateUpdate(state) {\n state.writing = false;\n state.writecb = null;\n state.length -= state.writelen;\n state.writelen = 0;\n}\n\nfunction onwrite(stream, er) {\n var state = stream._writableState;\n var sync = state.sync;\n var cb = state.writecb;\n if (typeof cb !== 'function') throw new ERR_MULTIPLE_CALLBACK();\n onwriteStateUpdate(state);\n if (er) onwriteError(stream, state, sync, er, cb);else {\n // Check if we're actually ready to finish, but don't emit yet\n var finished = needFinish(state) || stream.destroyed;\n\n if (!finished && !state.corked && !state.bufferProcessing && state.bufferedRequest) {\n clearBuffer(stream, state);\n }\n\n if (sync) {\n process.nextTick(afterWrite, stream, state, finished, cb);\n } else {\n afterWrite(stream, state, finished, cb);\n }\n }\n}\n\nfunction afterWrite(stream, state, finished, cb) {\n if (!finished) onwriteDrain(stream, state);\n state.pendingcb--;\n cb();\n finishMaybe(stream, state);\n} // Must force callback to be called on nextTick, so that we don't\n// emit 'drain' before the write() consumer gets the 'false' return\n// value, and has a chance to attach a 'drain' listener.\n\n\nfunction onwriteDrain(stream, state) {\n if (state.length === 0 && state.needDrain) {\n state.needDrain = false;\n stream.emit('drain');\n }\n} // if there's something in the buffer waiting, then process it\n\n\nfunction clearBuffer(stream, state) {\n state.bufferProcessing = true;\n var entry = state.bufferedRequest;\n\n if (stream._writev && entry && entry.next) {\n // Fast case, write everything using _writev()\n var l = state.bufferedRequestCount;\n var buffer = new Array(l);\n var holder = state.corkedRequestsFree;\n holder.entry = entry;\n var count = 0;\n var allBuffers = true;\n\n while (entry) {\n buffer[count] = entry;\n if (!entry.isBuf) allBuffers = false;\n entry = entry.next;\n count += 1;\n }\n\n buffer.allBuffers = allBuffers;\n doWrite(stream, state, true, state.length, buffer, '', holder.finish); // doWrite is almost always async, defer these to save a bit of time\n // as the hot path ends with doWrite\n\n state.pendingcb++;\n state.lastBufferedRequest = null;\n\n if (holder.next) {\n state.corkedRequestsFree = holder.next;\n holder.next = null;\n } else {\n state.corkedRequestsFree = new CorkedRequest(state);\n }\n\n state.bufferedRequestCount = 0;\n } else {\n // Slow case, write chunks one-by-one\n while (entry) {\n var chunk = entry.chunk;\n var encoding = entry.encoding;\n var cb = entry.callback;\n var len = state.objectMode ? 1 : chunk.length;\n doWrite(stream, state, false, len, chunk, encoding, cb);\n entry = entry.next;\n state.bufferedRequestCount--; // if we didn't call the onwrite immediately, then\n // it means that we need to wait until it does.\n // also, that means that the chunk and cb are currently\n // being processed, so move the buffer counter past them.\n\n if (state.writing) {\n break;\n }\n }\n\n if (entry === null) state.lastBufferedRequest = null;\n }\n\n state.bufferedRequest = entry;\n state.bufferProcessing = false;\n}\n\nWritable.prototype._write = function (chunk, encoding, cb) {\n cb(new ERR_METHOD_NOT_IMPLEMENTED('_write()'));\n};\n\nWritable.prototype._writev = null;\n\nWritable.prototype.end = function (chunk, encoding, cb) {\n var state = this._writableState;\n\n if (typeof chunk === 'function') {\n cb = chunk;\n chunk = null;\n encoding = null;\n } else if (typeof encoding === 'function') {\n cb = encoding;\n encoding = null;\n }\n\n if (chunk !== null && chunk !== undefined) this.write(chunk, encoding); // .end() fully uncorks\n\n if (state.corked) {\n state.corked = 1;\n this.uncork();\n } // ignore unnecessary end() calls.\n\n\n if (!state.ending) endWritable(this, state, cb);\n return this;\n};\n\nObject.defineProperty(Writable.prototype, 'writableLength', {\n // making it explicit this property is not enumerable\n // because otherwise some prototype manipulation in\n // userland will fail\n enumerable: false,\n get: function get() {\n return this._writableState.length;\n }\n});\n\nfunction needFinish(state) {\n return state.ending && state.length === 0 && state.bufferedRequest === null && !state.finished && !state.writing;\n}\n\nfunction callFinal(stream, state) {\n stream._final(function (err) {\n state.pendingcb--;\n\n if (err) {\n errorOrDestroy(stream, err);\n }\n\n state.prefinished = true;\n stream.emit('prefinish');\n finishMaybe(stream, state);\n });\n}\n\nfunction prefinish(stream, state) {\n if (!state.prefinished && !state.finalCalled) {\n if (typeof stream._final === 'function' && !state.destroyed) {\n state.pendingcb++;\n state.finalCalled = true;\n process.nextTick(callFinal, stream, state);\n } else {\n state.prefinished = true;\n stream.emit('prefinish');\n }\n }\n}\n\nfunction finishMaybe(stream, state) {\n var need = needFinish(state);\n\n if (need) {\n prefinish(stream, state);\n\n if (state.pendingcb === 0) {\n state.finished = true;\n stream.emit('finish');\n\n if (state.autoDestroy) {\n // In case of duplex streams we need a way to detect\n // if the readable side is ready for autoDestroy as well\n var rState = stream._readableState;\n\n if (!rState || rState.autoDestroy && rState.endEmitted) {\n stream.destroy();\n }\n }\n }\n }\n\n return need;\n}\n\nfunction endWritable(stream, state, cb) {\n state.ending = true;\n finishMaybe(stream, state);\n\n if (cb) {\n if (state.finished) process.nextTick(cb);else stream.once('finish', cb);\n }\n\n state.ended = true;\n stream.writable = false;\n}\n\nfunction onCorkedFinish(corkReq, state, err) {\n var entry = corkReq.entry;\n corkReq.entry = null;\n\n while (entry) {\n var cb = entry.callback;\n state.pendingcb--;\n cb(err);\n entry = entry.next;\n } // reuse the free corkReq.\n\n\n state.corkedRequestsFree.next = corkReq;\n}\n\nObject.defineProperty(Writable.prototype, 'destroyed', {\n // making it explicit this property is not enumerable\n // because otherwise some prototype manipulation in\n // userland will fail\n enumerable: false,\n get: function get() {\n if (this._writableState === undefined) {\n return false;\n }\n\n return this._writableState.destroyed;\n },\n set: function set(value) {\n // we ignore the value if the stream\n // has not been initialized yet\n if (!this._writableState) {\n return;\n } // backward compatibility, the user is explicitly\n // managing destroyed\n\n\n this._writableState.destroyed = value;\n }\n});\nWritable.prototype.destroy = destroyImpl.destroy;\nWritable.prototype._undestroy = destroyImpl.undestroy;\n\nWritable.prototype._destroy = function (err, cb) {\n cb(err);\n};","// Copyright Joyent, Inc. and other Node contributors.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a\n// copy of this software and associated documentation files (the\n// \"Software\"), to deal in the Software without restriction, including\n// without limitation the rights to use, copy, modify, merge, publish,\n// distribute, sublicense, and/or sell copies of the Software, and to permit\n// persons to whom the Software is furnished to do so, subject to the\n// following conditions:\n//\n// The above copyright notice and this permission notice shall be included\n// in all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN\n// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR\n// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\n// USE OR OTHER DEALINGS IN THE SOFTWARE.\n// a duplex stream is just a stream that is both readable and writable.\n// Since JS doesn't have multiple prototypal inheritance, this class\n// prototypally inherits from Readable, and then parasitically from\n// Writable.\n'use strict';\n/*<replacement>*/\n\nvar objectKeys = Object.keys || function (obj) {\n var keys = [];\n\n for (var key in obj) {\n keys.push(key);\n }\n\n return keys;\n};\n/*</replacement>*/\n\n\nmodule.exports = Duplex;\n\nvar Readable = require('./_stream_readable');\n\nvar Writable = require('./_stream_writable');\n\nrequire('inherits')(Duplex, Readable);\n\n{\n // Allow the keys array to be GC'ed.\n var keys = objectKeys(Writable.prototype);\n\n for (var v = 0; v < keys.length; v++) {\n var method = keys[v];\n if (!Duplex.prototype[method]) Duplex.prototype[method] = Writable.prototype[method];\n }\n}\n\nfunction Duplex(options) {\n if (!(this instanceof Duplex)) return new Duplex(options);\n Readable.call(this, options);\n Writable.call(this, options);\n this.allowHalfOpen = true;\n\n if (options) {\n if (options.readable === false) this.readable = false;\n if (options.writable === false) this.writable = false;\n\n if (options.allowHalfOpen === false) {\n this.allowHalfOpen = false;\n this.once('end', onend);\n }\n }\n}\n\nObject.defineProperty(Duplex.prototype, 'writableHighWaterMark', {\n // making it explicit this property is not enumerable\n // because otherwise some prototype manipulation in\n // userland will fail\n enumerable: false,\n get: function get() {\n return this._writableState.highWaterMark;\n }\n});\nObject.defineProperty(Duplex.prototype, 'writableBuffer', {\n // making it explicit this property is not enumerable\n // because otherwise some prototype manipulation in\n // userland will fail\n enumerable: false,\n get: function get() {\n return this._writableState && this._writableState.getBuffer();\n }\n});\nObject.defineProperty(Duplex.prototype, 'writableLength', {\n // making it explicit this property is not enumerable\n // because otherwise some prototype manipulation in\n // userland will fail\n enumerable: false,\n get: function get() {\n return this._writableState.length;\n }\n}); // the no-half-open enforcer\n\nfunction onend() {\n // If the writable side ended, then we're ok.\n if (this._writableState.ended) return; // no more data can be written.\n // But allow more writes to happen in this tick.\n\n process.nextTick(onEndNT, this);\n}\n\nfunction onEndNT(self) {\n self.end();\n}\n\nObject.defineProperty(Duplex.prototype, 'destroyed', {\n // making it explicit this property is not enumerable\n // because otherwise some prototype manipulation in\n // userland will fail\n enumerable: false,\n get: function get() {\n if (this._readableState === undefined || this._writableState === undefined) {\n return false;\n }\n\n return this._readableState.destroyed && this._writableState.destroyed;\n },\n set: function set(value) {\n // we ignore the value if the stream\n // has not been initialized yet\n if (this._readableState === undefined || this._writableState === undefined) {\n return;\n } // backward compatibility, the user is explicitly\n // managing destroyed\n\n\n this._readableState.destroyed = value;\n this._writableState.destroyed = value;\n }\n});","/* eslint-disable node/no-deprecated-api */\nvar buffer = require('buffer')\nvar Buffer = buffer.Buffer\n\n// alternative to using Object.keys for old browsers\nfunction copyProps (src, dst) {\n for (var key in src) {\n dst[key] = src[key]\n }\n}\nif (Buffer.from && Buffer.alloc && Buffer.allocUnsafe && Buffer.allocUnsafeSlow) {\n module.exports = buffer\n} else {\n // Copy properties from require('buffer')\n copyProps(buffer, exports)\n exports.Buffer = SafeBuffer\n}\n\nfunction SafeBuffer (arg, encodingOrOffset, length) {\n return Buffer(arg, encodingOrOffset, length)\n}\n\n// Copy static methods from Buffer\ncopyProps(Buffer, SafeBuffer)\n\nSafeBuffer.from = function (arg, encodingOrOffset, length) {\n if (typeof arg === 'number') {\n throw new TypeError('Argument must not be a number')\n }\n return Buffer(arg, encodingOrOffset, length)\n}\n\nSafeBuffer.alloc = function (size, fill, encoding) {\n if (typeof size !== 'number') {\n throw new TypeError('Argument must be a number')\n }\n var buf = Buffer(size)\n if (fill !== undefined) {\n if (typeof encoding === 'string') {\n buf.fill(fill, encoding)\n } else {\n buf.fill(fill)\n }\n } else {\n buf.fill(0)\n }\n return buf\n}\n\nSafeBuffer.allocUnsafe = function (size) {\n if (typeof size !== 'number') {\n throw new TypeError('Argument must be a number')\n }\n return Buffer(size)\n}\n\nSafeBuffer.allocUnsafeSlow = function (size) {\n if (typeof size !== 'number') {\n throw new TypeError('Argument must be a number')\n }\n return buffer.SlowBuffer(size)\n}\n","// Copyright Joyent, Inc. and other Node contributors.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a\n// copy of this software and associated documentation files (the\n// \"Software\"), to deal in the Software without restriction, including\n// without limitation the rights to use, copy, modify, merge, publish,\n// distribute, sublicense, and/or sell copies of the Software, and to permit\n// persons to whom the Software is furnished to do so, subject to the\n// following conditions:\n//\n// The above copyright notice and this permission notice shall be included\n// in all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN\n// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR\n// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\n// USE OR OTHER DEALINGS IN THE SOFTWARE.\n\n'use strict';\n\n/*<replacement>*/\n\nvar Buffer = require('safe-buffer').Buffer;\n/*</replacement>*/\n\nvar isEncoding = Buffer.isEncoding || function (encoding) {\n encoding = '' + encoding;\n switch (encoding && encoding.toLowerCase()) {\n case 'hex':case 'utf8':case 'utf-8':case 'ascii':case 'binary':case 'base64':case 'ucs2':case 'ucs-2':case 'utf16le':case 'utf-16le':case 'raw':\n return true;\n default:\n return false;\n }\n};\n\nfunction _normalizeEncoding(enc) {\n if (!enc) return 'utf8';\n var retried;\n while (true) {\n switch (enc) {\n case 'utf8':\n case 'utf-8':\n return 'utf8';\n case 'ucs2':\n case 'ucs-2':\n case 'utf16le':\n case 'utf-16le':\n return 'utf16le';\n case 'latin1':\n case 'binary':\n return 'latin1';\n case 'base64':\n case 'ascii':\n case 'hex':\n return enc;\n default:\n if (retried) return; // undefined\n enc = ('' + enc).toLowerCase();\n retried = true;\n }\n }\n};\n\n// Do not cache `Buffer.isEncoding` when checking encoding names as some\n// modules monkey-patch it to support additional encodings\nfunction normalizeEncoding(enc) {\n var nenc = _normalizeEncoding(enc);\n if (typeof nenc !== 'string' && (Buffer.isEncoding === isEncoding || !isEncoding(enc))) throw new Error('Unknown encoding: ' + enc);\n return nenc || enc;\n}\n\n// StringDecoder provides an interface for efficiently splitting a series of\n// buffers into a series of JS strings without breaking apart multi-byte\n// characters.\nexports.StringDecoder = StringDecoder;\nfunction StringDecoder(encoding) {\n this.encoding = normalizeEncoding(encoding);\n var nb;\n switch (this.encoding) {\n case 'utf16le':\n this.text = utf16Text;\n this.end = utf16End;\n nb = 4;\n break;\n case 'utf8':\n this.fillLast = utf8FillLast;\n nb = 4;\n break;\n case 'base64':\n this.text = base64Text;\n this.end = base64End;\n nb = 3;\n break;\n default:\n this.write = simpleWrite;\n this.end = simpleEnd;\n return;\n }\n this.lastNeed = 0;\n this.lastTotal = 0;\n this.lastChar = Buffer.allocUnsafe(nb);\n}\n\nStringDecoder.prototype.write = function (buf) {\n if (buf.length === 0) return '';\n var r;\n var i;\n if (this.lastNeed) {\n r = this.fillLast(buf);\n if (r === undefined) return '';\n i = this.lastNeed;\n this.lastNeed = 0;\n } else {\n i = 0;\n }\n if (i < buf.length) return r ? r + this.text(buf, i) : this.text(buf, i);\n return r || '';\n};\n\nStringDecoder.prototype.end = utf8End;\n\n// Returns only complete characters in a Buffer\nStringDecoder.prototype.text = utf8Text;\n\n// Attempts to complete a partial non-UTF-8 character using bytes from a Buffer\nStringDecoder.prototype.fillLast = function (buf) {\n if (this.lastNeed <= buf.length) {\n buf.copy(this.lastChar, this.lastTotal - this.lastNeed, 0, this.lastNeed);\n return this.lastChar.toString(this.encoding, 0, this.lastTotal);\n }\n buf.copy(this.lastChar, this.lastTotal - this.lastNeed, 0, buf.length);\n this.lastNeed -= buf.length;\n};\n\n// Checks the type of a UTF-8 byte, whether it's ASCII, a leading byte, or a\n// continuation byte. If an invalid byte is detected, -2 is returned.\nfunction utf8CheckByte(byte) {\n if (byte <= 0x7F) return 0;else if (byte >> 5 === 0x06) return 2;else if (byte >> 4 === 0x0E) return 3;else if (byte >> 3 === 0x1E) return 4;\n return byte >> 6 === 0x02 ? -1 : -2;\n}\n\n// Checks at most 3 bytes at the end of a Buffer in order to detect an\n// incomplete multi-byte UTF-8 character. The total number of bytes (2, 3, or 4)\n// needed to complete the UTF-8 character (if applicable) are returned.\nfunction utf8CheckIncomplete(self, buf, i) {\n var j = buf.length - 1;\n if (j < i) return 0;\n var nb = utf8CheckByte(buf[j]);\n if (nb >= 0) {\n if (nb > 0) self.lastNeed = nb - 1;\n return nb;\n }\n if (--j < i || nb === -2) return 0;\n nb = utf8CheckByte(buf[j]);\n if (nb >= 0) {\n if (nb > 0) self.lastNeed = nb - 2;\n return nb;\n }\n if (--j < i || nb === -2) return 0;\n nb = utf8CheckByte(buf[j]);\n if (nb >= 0) {\n if (nb > 0) {\n if (nb === 2) nb = 0;else self.lastNeed = nb - 3;\n }\n return nb;\n }\n return 0;\n}\n\n// Validates as many continuation bytes for a multi-byte UTF-8 character as\n// needed or are available. If we see a non-continuation byte where we expect\n// one, we \"replace\" the validated continuation bytes we've seen so far with\n// a single UTF-8 replacement character ('\\ufffd'), to match v8's UTF-8 decoding\n// behavior. The continuation byte check is included three times in the case\n// where all of the continuation bytes for a character exist in the same buffer.\n// It is also done this way as a slight performance increase instead of using a\n// loop.\nfunction utf8CheckExtraBytes(self, buf, p) {\n if ((buf[0] & 0xC0) !== 0x80) {\n self.lastNeed = 0;\n return '\\ufffd';\n }\n if (self.lastNeed > 1 && buf.length > 1) {\n if ((buf[1] & 0xC0) !== 0x80) {\n self.lastNeed = 1;\n return '\\ufffd';\n }\n if (self.lastNeed > 2 && buf.length > 2) {\n if ((buf[2] & 0xC0) !== 0x80) {\n self.lastNeed = 2;\n return '\\ufffd';\n }\n }\n }\n}\n\n// Attempts to complete a multi-byte UTF-8 character using bytes from a Buffer.\nfunction utf8FillLast(buf) {\n var p = this.lastTotal - this.lastNeed;\n var r = utf8CheckExtraBytes(this, buf, p);\n if (r !== undefined) return r;\n if (this.lastNeed <= buf.length) {\n buf.copy(this.lastChar, p, 0, this.lastNeed);\n return this.lastChar.toString(this.encoding, 0, this.lastTotal);\n }\n buf.copy(this.lastChar, p, 0, buf.length);\n this.lastNeed -= buf.length;\n}\n\n// Returns all complete UTF-8 characters in a Buffer. If the Buffer ended on a\n// partial character, the character's bytes are buffered until the required\n// number of bytes are available.\nfunction utf8Text(buf, i) {\n var total = utf8CheckIncomplete(this, buf, i);\n if (!this.lastNeed) return buf.toString('utf8', i);\n this.lastTotal = total;\n var end = buf.length - (total - this.lastNeed);\n buf.copy(this.lastChar, 0, end);\n return buf.toString('utf8', i, end);\n}\n\n// For UTF-8, a replacement character is added when ending on a partial\n// character.\nfunction utf8End(buf) {\n var r = buf && buf.length ? this.write(buf) : '';\n if (this.lastNeed) return r + '\\ufffd';\n return r;\n}\n\n// UTF-16LE typically needs two bytes per character, but even if we have an even\n// number of bytes available, we need to check if we end on a leading/high\n// surrogate. In that case, we need to wait for the next two bytes in order to\n// decode the last character properly.\nfunction utf16Text(buf, i) {\n if ((buf.length - i) % 2 === 0) {\n var r = buf.toString('utf16le', i);\n if (r) {\n var c = r.charCodeAt(r.length - 1);\n if (c >= 0xD800 && c <= 0xDBFF) {\n this.lastNeed = 2;\n this.lastTotal = 4;\n this.lastChar[0] = buf[buf.length - 2];\n this.lastChar[1] = buf[buf.length - 1];\n return r.slice(0, -1);\n }\n }\n return r;\n }\n this.lastNeed = 1;\n this.lastTotal = 2;\n this.lastChar[0] = buf[buf.length - 1];\n return buf.toString('utf16le', i, buf.length - 1);\n}\n\n// For UTF-16LE we do not explicitly append special replacement characters if we\n// end on a partial character, we simply let v8 handle that.\nfunction utf16End(buf) {\n var r = buf && buf.length ? this.write(buf) : '';\n if (this.lastNeed) {\n var end = this.lastTotal - this.lastNeed;\n return r + this.lastChar.toString('utf16le', 0, end);\n }\n return r;\n}\n\nfunction base64Text(buf, i) {\n var n = (buf.length - i) % 3;\n if (n === 0) return buf.toString('base64', i);\n this.lastNeed = 3 - n;\n this.lastTotal = 3;\n if (n === 1) {\n this.lastChar[0] = buf[buf.length - 1];\n } else {\n this.lastChar[0] = buf[buf.length - 2];\n this.lastChar[1] = buf[buf.length - 1];\n }\n return buf.toString('base64', i, buf.length - n);\n}\n\nfunction base64End(buf) {\n var r = buf && buf.length ? this.write(buf) : '';\n if (this.lastNeed) return r + this.lastChar.toString('base64', 0, 3 - this.lastNeed);\n return r;\n}\n\n// Pass bytes on through for single-byte encodings (e.g. ascii, latin1, hex)\nfunction simpleWrite(buf) {\n return buf.toString(this.encoding);\n}\n\nfunction simpleEnd(buf) {\n return buf && buf.length ? this.write(buf) : '';\n}","// Ported from https://github.com/mafintosh/end-of-stream with\n// permission from the author, Mathias Buus (@mafintosh).\n'use strict';\n\nvar ERR_STREAM_PREMATURE_CLOSE = require('../../../errors').codes.ERR_STREAM_PREMATURE_CLOSE;\n\nfunction once(callback) {\n var called = false;\n return function () {\n if (called) return;\n called = true;\n\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n callback.apply(this, args);\n };\n}\n\nfunction noop() {}\n\nfunction isRequest(stream) {\n return stream.setHeader && typeof stream.abort === 'function';\n}\n\nfunction eos(stream, opts, callback) {\n if (typeof opts === 'function') return eos(stream, null, opts);\n if (!opts) opts = {};\n callback = once(callback || noop);\n var readable = opts.readable || opts.readable !== false && stream.readable;\n var writable = opts.writable || opts.writable !== false && stream.writable;\n\n var onlegacyfinish = function onlegacyfinish() {\n if (!stream.writable) onfinish();\n };\n\n var writableEnded = stream._writableState && stream._writableState.finished;\n\n var onfinish = function onfinish() {\n writable = false;\n writableEnded = true;\n if (!readable) callback.call(stream);\n };\n\n var readableEnded = stream._readableState && stream._readableState.endEmitted;\n\n var onend = function onend() {\n readable = false;\n readableEnded = true;\n if (!writable) callback.call(stream);\n };\n\n var onerror = function onerror(err) {\n callback.call(stream, err);\n };\n\n var onclose = function onclose() {\n var err;\n\n if (readable && !readableEnded) {\n if (!stream._readableState || !stream._readableState.ended) err = new ERR_STREAM_PREMATURE_CLOSE();\n return callback.call(stream, err);\n }\n\n if (writable && !writableEnded) {\n if (!stream._writableState || !stream._writableState.ended) err = new ERR_STREAM_PREMATURE_CLOSE();\n return callback.call(stream, err);\n }\n };\n\n var onrequest = function onrequest() {\n stream.req.on('finish', onfinish);\n };\n\n if (isRequest(stream)) {\n stream.on('complete', onfinish);\n stream.on('abort', onclose);\n if (stream.req) onrequest();else stream.on('request', onrequest);\n } else if (writable && !stream._writableState) {\n // legacy streams\n stream.on('end', onlegacyfinish);\n stream.on('close', onlegacyfinish);\n }\n\n stream.on('end', onend);\n stream.on('finish', onfinish);\n if (opts.error !== false) stream.on('error', onerror);\n stream.on('close', onclose);\n return function () {\n stream.removeListener('complete', onfinish);\n stream.removeListener('abort', onclose);\n stream.removeListener('request', onrequest);\n if (stream.req) stream.req.removeListener('finish', onfinish);\n stream.removeListener('end', onlegacyfinish);\n stream.removeListener('close', onlegacyfinish);\n stream.removeListener('finish', onfinish);\n stream.removeListener('end', onend);\n stream.removeListener('error', onerror);\n stream.removeListener('close', onclose);\n };\n}\n\nmodule.exports = eos;","'use strict';\n\nvar _Object$setPrototypeO;\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\nvar finished = require('./end-of-stream');\n\nvar kLastResolve = Symbol('lastResolve');\nvar kLastReject = Symbol('lastReject');\nvar kError = Symbol('error');\nvar kEnded = Symbol('ended');\nvar kLastPromise = Symbol('lastPromise');\nvar kHandlePromise = Symbol('handlePromise');\nvar kStream = Symbol('stream');\n\nfunction createIterResult(value, done) {\n return {\n value: value,\n done: done\n };\n}\n\nfunction readAndResolve(iter) {\n var resolve = iter[kLastResolve];\n\n if (resolve !== null) {\n var data = iter[kStream].read(); // we defer if data is null\n // we can be expecting either 'end' or\n // 'error'\n\n if (data !== null) {\n iter[kLastPromise] = null;\n iter[kLastResolve] = null;\n iter[kLastReject] = null;\n resolve(createIterResult(data, false));\n }\n }\n}\n\nfunction onReadable(iter) {\n // we wait for the next tick, because it might\n // emit an error with process.nextTick\n process.nextTick(readAndResolve, iter);\n}\n\nfunction wrapForNext(lastPromise, iter) {\n return function (resolve, reject) {\n lastPromise.then(function () {\n if (iter[kEnded]) {\n resolve(createIterResult(undefined, true));\n return;\n }\n\n iter[kHandlePromise](resolve, reject);\n }, reject);\n };\n}\n\nvar AsyncIteratorPrototype = Object.getPrototypeOf(function () {});\nvar ReadableStreamAsyncIteratorPrototype = Object.setPrototypeOf((_Object$setPrototypeO = {\n get stream() {\n return this[kStream];\n },\n\n next: function next() {\n var _this = this;\n\n // if we have detected an error in the meanwhile\n // reject straight away\n var error = this[kError];\n\n if (error !== null) {\n return Promise.reject(error);\n }\n\n if (this[kEnded]) {\n return Promise.resolve(createIterResult(undefined, true));\n }\n\n if (this[kStream].destroyed) {\n // We need to defer via nextTick because if .destroy(err) is\n // called, the error will be emitted via nextTick, and\n // we cannot guarantee that there is no error lingering around\n // waiting to be emitted.\n return new Promise(function (resolve, reject) {\n process.nextTick(function () {\n if (_this[kError]) {\n reject(_this[kError]);\n } else {\n resolve(createIterResult(undefined, true));\n }\n });\n });\n } // if we have multiple next() calls\n // we will wait for the previous Promise to finish\n // this logic is optimized to support for await loops,\n // where next() is only called once at a time\n\n\n var lastPromise = this[kLastPromise];\n var promise;\n\n if (lastPromise) {\n promise = new Promise(wrapForNext(lastPromise, this));\n } else {\n // fast path needed to support multiple this.push()\n // without triggering the next() queue\n var data = this[kStream].read();\n\n if (data !== null) {\n return Promise.resolve(createIterResult(data, false));\n }\n\n promise = new Promise(this[kHandlePromise]);\n }\n\n this[kLastPromise] = promise;\n return promise;\n }\n}, _defineProperty(_Object$setPrototypeO, Symbol.asyncIterator, function () {\n return this;\n}), _defineProperty(_Object$setPrototypeO, \"return\", function _return() {\n var _this2 = this;\n\n // destroy(err, cb) is a private API\n // we can guarantee we have that here, because we control the\n // Readable class this is attached to\n return new Promise(function (resolve, reject) {\n _this2[kStream].destroy(null, function (err) {\n if (err) {\n reject(err);\n return;\n }\n\n resolve(createIterResult(undefined, true));\n });\n });\n}), _Object$setPrototypeO), AsyncIteratorPrototype);\n\nvar createReadableStreamAsyncIterator = function createReadableStreamAsyncIterator(stream) {\n var _Object$create;\n\n var iterator = Object.create(ReadableStreamAsyncIteratorPrototype, (_Object$create = {}, _defineProperty(_Object$create, kStream, {\n value: stream,\n writable: true\n }), _defineProperty(_Object$create, kLastResolve, {\n value: null,\n writable: true\n }), _defineProperty(_Object$create, kLastReject, {\n value: null,\n writable: true\n }), _defineProperty(_Object$create, kError, {\n value: null,\n writable: true\n }), _defineProperty(_Object$create, kEnded, {\n value: stream._readableState.endEmitted,\n writable: true\n }), _defineProperty(_Object$create, kHandlePromise, {\n value: function value(resolve, reject) {\n var data = iterator[kStream].read();\n\n if (data) {\n iterator[kLastPromise] = null;\n iterator[kLastResolve] = null;\n iterator[kLastReject] = null;\n resolve(createIterResult(data, false));\n } else {\n iterator[kLastResolve] = resolve;\n iterator[kLastReject] = reject;\n }\n },\n writable: true\n }), _Object$create));\n iterator[kLastPromise] = null;\n finished(stream, function (err) {\n if (err && err.code !== 'ERR_STREAM_PREMATURE_CLOSE') {\n var reject = iterator[kLastReject]; // reject if we are waiting for data in the Promise\n // returned by next() and store the error\n\n if (reject !== null) {\n iterator[kLastPromise] = null;\n iterator[kLastResolve] = null;\n iterator[kLastReject] = null;\n reject(err);\n }\n\n iterator[kError] = err;\n return;\n }\n\n var resolve = iterator[kLastResolve];\n\n if (resolve !== null) {\n iterator[kLastPromise] = null;\n iterator[kLastResolve] = null;\n iterator[kLastReject] = null;\n resolve(createIterResult(undefined, true));\n }\n\n iterator[kEnded] = true;\n });\n stream.on('readable', onReadable.bind(null, iterator));\n return iterator;\n};\n\nmodule.exports = createReadableStreamAsyncIterator;","module.exports = function () {\n throw new Error('Readable.from is not available in the browser')\n};\n","// Copyright Joyent, Inc. and other Node contributors.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a\n// copy of this software and associated documentation files (the\n// \"Software\"), to deal in the Software without restriction, including\n// without limitation the rights to use, copy, modify, merge, publish,\n// distribute, sublicense, and/or sell copies of the Software, and to permit\n// persons to whom the Software is furnished to do so, subject to the\n// following conditions:\n//\n// The above copyright notice and this permission notice shall be included\n// in all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN\n// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR\n// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\n// USE OR OTHER DEALINGS IN THE SOFTWARE.\n'use strict';\n\nmodule.exports = Readable;\n/*<replacement>*/\n\nvar Duplex;\n/*</replacement>*/\n\nReadable.ReadableState = ReadableState;\n/*<replacement>*/\n\nvar EE = require('events').EventEmitter;\n\nvar EElistenerCount = function EElistenerCount(emitter, type) {\n return emitter.listeners(type).length;\n};\n/*</replacement>*/\n\n/*<replacement>*/\n\n\nvar Stream = require('./internal/streams/stream');\n/*</replacement>*/\n\n\nvar Buffer = require('buffer').Buffer;\n\nvar OurUint8Array = global.Uint8Array || function () {};\n\nfunction _uint8ArrayToBuffer(chunk) {\n return Buffer.from(chunk);\n}\n\nfunction _isUint8Array(obj) {\n return Buffer.isBuffer(obj) || obj instanceof OurUint8Array;\n}\n/*<replacement>*/\n\n\nvar debugUtil = require('util');\n\nvar debug;\n\nif (debugUtil && debugUtil.debuglog) {\n debug = debugUtil.debuglog('stream');\n} else {\n debug = function debug() {};\n}\n/*</replacement>*/\n\n\nvar BufferList = require('./internal/streams/buffer_list');\n\nvar destroyImpl = require('./internal/streams/destroy');\n\nvar _require = require('./internal/streams/state'),\n getHighWaterMark = _require.getHighWaterMark;\n\nvar _require$codes = require('../errors').codes,\n ERR_INVALID_ARG_TYPE = _require$codes.ERR_INVALID_ARG_TYPE,\n ERR_STREAM_PUSH_AFTER_EOF = _require$codes.ERR_STREAM_PUSH_AFTER_EOF,\n ERR_METHOD_NOT_IMPLEMENTED = _require$codes.ERR_METHOD_NOT_IMPLEMENTED,\n ERR_STREAM_UNSHIFT_AFTER_END_EVENT = _require$codes.ERR_STREAM_UNSHIFT_AFTER_END_EVENT; // Lazy loaded to improve the startup performance.\n\n\nvar StringDecoder;\nvar createReadableStreamAsyncIterator;\nvar from;\n\nrequire('inherits')(Readable, Stream);\n\nvar errorOrDestroy = destroyImpl.errorOrDestroy;\nvar kProxyEvents = ['error', 'close', 'destroy', 'pause', 'resume'];\n\nfunction prependListener(emitter, event, fn) {\n // Sadly this is not cacheable as some libraries bundle their own\n // event emitter implementation with them.\n if (typeof emitter.prependListener === 'function') return emitter.prependListener(event, fn); // This is a hack to make sure that our error handler is attached before any\n // userland ones. NEVER DO THIS. This is here only because this code needs\n // to continue to work with older versions of Node.js that do not include\n // the prependListener() method. The goal is to eventually remove this hack.\n\n if (!emitter._events || !emitter._events[event]) emitter.on(event, fn);else if (Array.isArray(emitter._events[event])) emitter._events[event].unshift(fn);else emitter._events[event] = [fn, emitter._events[event]];\n}\n\nfunction ReadableState(options, stream, isDuplex) {\n Duplex = Duplex || require('./_stream_duplex');\n options = options || {}; // Duplex streams are both readable and writable, but share\n // the same options object.\n // However, some cases require setting options to different\n // values for the readable and the writable sides of the duplex stream.\n // These options can be provided separately as readableXXX and writableXXX.\n\n if (typeof isDuplex !== 'boolean') isDuplex = stream instanceof Duplex; // object stream flag. Used to make read(n) ignore n and to\n // make all the buffer merging and length checks go away\n\n this.objectMode = !!options.objectMode;\n if (isDuplex) this.objectMode = this.objectMode || !!options.readableObjectMode; // the point at which it stops calling _read() to fill the buffer\n // Note: 0 is a valid value, means \"don't call _read preemptively ever\"\n\n this.highWaterMark = getHighWaterMark(this, options, 'readableHighWaterMark', isDuplex); // A linked list is used to store data chunks instead of an array because the\n // linked list can remove elements from the beginning faster than\n // array.shift()\n\n this.buffer = new BufferList();\n this.length = 0;\n this.pipes = null;\n this.pipesCount = 0;\n this.flowing = null;\n this.ended = false;\n this.endEmitted = false;\n this.reading = false; // a flag to be able to tell if the event 'readable'/'data' is emitted\n // immediately, or on a later tick. We set this to true at first, because\n // any actions that shouldn't happen until \"later\" should generally also\n // not happen before the first read call.\n\n this.sync = true; // whenever we return null, then we set a flag to say\n // that we're awaiting a 'readable' event emission.\n\n this.needReadable = false;\n this.emittedReadable = false;\n this.readableListening = false;\n this.resumeScheduled = false;\n this.paused = true; // Should close be emitted on destroy. Defaults to true.\n\n this.emitClose = options.emitClose !== false; // Should .destroy() be called after 'end' (and potentially 'finish')\n\n this.autoDestroy = !!options.autoDestroy; // has it been destroyed\n\n this.destroyed = false; // Crypto is kind of old and crusty. Historically, its default string\n // encoding is 'binary' so we have to make this configurable.\n // Everything else in the universe uses 'utf8', though.\n\n this.defaultEncoding = options.defaultEncoding || 'utf8'; // the number of writers that are awaiting a drain event in .pipe()s\n\n this.awaitDrain = 0; // if true, a maybeReadMore has been scheduled\n\n this.readingMore = false;\n this.decoder = null;\n this.encoding = null;\n\n if (options.encoding) {\n if (!StringDecoder) StringDecoder = require('string_decoder/').StringDecoder;\n this.decoder = new StringDecoder(options.encoding);\n this.encoding = options.encoding;\n }\n}\n\nfunction Readable(options) {\n Duplex = Duplex || require('./_stream_duplex');\n if (!(this instanceof Readable)) return new Readable(options); // Checking for a Stream.Duplex instance is faster here instead of inside\n // the ReadableState constructor, at least with V8 6.5\n\n var isDuplex = this instanceof Duplex;\n this._readableState = new ReadableState(options, this, isDuplex); // legacy\n\n this.readable = true;\n\n if (options) {\n if (typeof options.read === 'function') this._read = options.read;\n if (typeof options.destroy === 'function') this._destroy = options.destroy;\n }\n\n Stream.call(this);\n}\n\nObject.defineProperty(Readable.prototype, 'destroyed', {\n // making it explicit this property is not enumerable\n // because otherwise some prototype manipulation in\n // userland will fail\n enumerable: false,\n get: function get() {\n if (this._readableState === undefined) {\n return false;\n }\n\n return this._readableState.destroyed;\n },\n set: function set(value) {\n // we ignore the value if the stream\n // has not been initialized yet\n if (!this._readableState) {\n return;\n } // backward compatibility, the user is explicitly\n // managing destroyed\n\n\n this._readableState.destroyed = value;\n }\n});\nReadable.prototype.destroy = destroyImpl.destroy;\nReadable.prototype._undestroy = destroyImpl.undestroy;\n\nReadable.prototype._destroy = function (err, cb) {\n cb(err);\n}; // Manually shove something into the read() buffer.\n// This returns true if the highWaterMark has not been hit yet,\n// similar to how Writable.write() returns true if you should\n// write() some more.\n\n\nReadable.prototype.push = function (chunk, encoding) {\n var state = this._readableState;\n var skipChunkCheck;\n\n if (!state.objectMode) {\n if (typeof chunk === 'string') {\n encoding = encoding || state.defaultEncoding;\n\n if (encoding !== state.encoding) {\n chunk = Buffer.from(chunk, encoding);\n encoding = '';\n }\n\n skipChunkCheck = true;\n }\n } else {\n skipChunkCheck = true;\n }\n\n return readableAddChunk(this, chunk, encoding, false, skipChunkCheck);\n}; // Unshift should *always* be something directly out of read()\n\n\nReadable.prototype.unshift = function (chunk) {\n return readableAddChunk(this, chunk, null, true, false);\n};\n\nfunction readableAddChunk(stream, chunk, encoding, addToFront, skipChunkCheck) {\n debug('readableAddChunk', chunk);\n var state = stream._readableState;\n\n if (chunk === null) {\n state.reading = false;\n onEofChunk(stream, state);\n } else {\n var er;\n if (!skipChunkCheck) er = chunkInvalid(state, chunk);\n\n if (er) {\n errorOrDestroy(stream, er);\n } else if (state.objectMode || chunk && chunk.length > 0) {\n if (typeof chunk !== 'string' && !state.objectMode && Object.getPrototypeOf(chunk) !== Buffer.prototype) {\n chunk = _uint8ArrayToBuffer(chunk);\n }\n\n if (addToFront) {\n if (state.endEmitted) errorOrDestroy(stream, new ERR_STREAM_UNSHIFT_AFTER_END_EVENT());else addChunk(stream, state, chunk, true);\n } else if (state.ended) {\n errorOrDestroy(stream, new ERR_STREAM_PUSH_AFTER_EOF());\n } else if (state.destroyed) {\n return false;\n } else {\n state.reading = false;\n\n if (state.decoder && !encoding) {\n chunk = state.decoder.write(chunk);\n if (state.objectMode || chunk.length !== 0) addChunk(stream, state, chunk, false);else maybeReadMore(stream, state);\n } else {\n addChunk(stream, state, chunk, false);\n }\n }\n } else if (!addToFront) {\n state.reading = false;\n maybeReadMore(stream, state);\n }\n } // We can push more data if we are below the highWaterMark.\n // Also, if we have no data yet, we can stand some more bytes.\n // This is to work around cases where hwm=0, such as the repl.\n\n\n return !state.ended && (state.length < state.highWaterMark || state.length === 0);\n}\n\nfunction addChunk(stream, state, chunk, addToFront) {\n if (state.flowing && state.length === 0 && !state.sync) {\n state.awaitDrain = 0;\n stream.emit('data', chunk);\n } else {\n // update the buffer info.\n state.length += state.objectMode ? 1 : chunk.length;\n if (addToFront) state.buffer.unshift(chunk);else state.buffer.push(chunk);\n if (state.needReadable) emitReadable(stream);\n }\n\n maybeReadMore(stream, state);\n}\n\nfunction chunkInvalid(state, chunk) {\n var er;\n\n if (!_isUint8Array(chunk) && typeof chunk !== 'string' && chunk !== undefined && !state.objectMode) {\n er = new ERR_INVALID_ARG_TYPE('chunk', ['string', 'Buffer', 'Uint8Array'], chunk);\n }\n\n return er;\n}\n\nReadable.prototype.isPaused = function () {\n return this._readableState.flowing === false;\n}; // backwards compatibility.\n\n\nReadable.prototype.setEncoding = function (enc) {\n if (!StringDecoder) StringDecoder = require('string_decoder/').StringDecoder;\n var decoder = new StringDecoder(enc);\n this._readableState.decoder = decoder; // If setEncoding(null), decoder.encoding equals utf8\n\n this._readableState.encoding = this._readableState.decoder.encoding; // Iterate over current buffer to convert already stored Buffers:\n\n var p = this._readableState.buffer.head;\n var content = '';\n\n while (p !== null) {\n content += decoder.write(p.data);\n p = p.next;\n }\n\n this._readableState.buffer.clear();\n\n if (content !== '') this._readableState.buffer.push(content);\n this._readableState.length = content.length;\n return this;\n}; // Don't raise the hwm > 1GB\n\n\nvar MAX_HWM = 0x40000000;\n\nfunction computeNewHighWaterMark(n) {\n if (n >= MAX_HWM) {\n // TODO(ronag): Throw ERR_VALUE_OUT_OF_RANGE.\n n = MAX_HWM;\n } else {\n // Get the next highest power of 2 to prevent increasing hwm excessively in\n // tiny amounts\n n--;\n n |= n >>> 1;\n n |= n >>> 2;\n n |= n >>> 4;\n n |= n >>> 8;\n n |= n >>> 16;\n n++;\n }\n\n return n;\n} // This function is designed to be inlinable, so please take care when making\n// changes to the function body.\n\n\nfunction howMuchToRead(n, state) {\n if (n <= 0 || state.length === 0 && state.ended) return 0;\n if (state.objectMode) return 1;\n\n if (n !== n) {\n // Only flow one buffer at a time\n if (state.flowing && state.length) return state.buffer.head.data.length;else return state.length;\n } // If we're asking for more than the current hwm, then raise the hwm.\n\n\n if (n > state.highWaterMark) state.highWaterMark = computeNewHighWaterMark(n);\n if (n <= state.length) return n; // Don't have enough\n\n if (!state.ended) {\n state.needReadable = true;\n return 0;\n }\n\n return state.length;\n} // you can override either this method, or the async _read(n) below.\n\n\nReadable.prototype.read = function (n) {\n debug('read', n);\n n = parseInt(n, 10);\n var state = this._readableState;\n var nOrig = n;\n if (n !== 0) state.emittedReadable = false; // if we're doing read(0) to trigger a readable event, but we\n // already have a bunch of data in the buffer, then just trigger\n // the 'readable' event and move on.\n\n if (n === 0 && state.needReadable && ((state.highWaterMark !== 0 ? state.length >= state.highWaterMark : state.length > 0) || state.ended)) {\n debug('read: emitReadable', state.length, state.ended);\n if (state.length === 0 && state.ended) endReadable(this);else emitReadable(this);\n return null;\n }\n\n n = howMuchToRead(n, state); // if we've ended, and we're now clear, then finish it up.\n\n if (n === 0 && state.ended) {\n if (state.length === 0) endReadable(this);\n return null;\n } // All the actual chunk generation logic needs to be\n // *below* the call to _read. The reason is that in certain\n // synthetic stream cases, such as passthrough streams, _read\n // may be a completely synchronous operation which may change\n // the state of the read buffer, providing enough data when\n // before there was *not* enough.\n //\n // So, the steps are:\n // 1. Figure out what the state of things will be after we do\n // a read from the buffer.\n //\n // 2. If that resulting state will trigger a _read, then call _read.\n // Note that this may be asynchronous, or synchronous. Yes, it is\n // deeply ugly to write APIs this way, but that still doesn't mean\n // that the Readable class should behave improperly, as streams are\n // designed to be sync/async agnostic.\n // Take note if the _read call is sync or async (ie, if the read call\n // has returned yet), so that we know whether or not it's safe to emit\n // 'readable' etc.\n //\n // 3. Actually pull the requested chunks out of the buffer and return.\n // if we need a readable event, then we need to do some reading.\n\n\n var doRead = state.needReadable;\n debug('need readable', doRead); // if we currently have less than the highWaterMark, then also read some\n\n if (state.length === 0 || state.length - n < state.highWaterMark) {\n doRead = true;\n debug('length less than watermark', doRead);\n } // however, if we've ended, then there's no point, and if we're already\n // reading, then it's unnecessary.\n\n\n if (state.ended || state.reading) {\n doRead = false;\n debug('reading or ended', doRead);\n } else if (doRead) {\n debug('do read');\n state.reading = true;\n state.sync = true; // if the length is currently zero, then we *need* a readable event.\n\n if (state.length === 0) state.needReadable = true; // call internal read method\n\n this._read(state.highWaterMark);\n\n state.sync = false; // If _read pushed data synchronously, then `reading` will be false,\n // and we need to re-evaluate how much data we can return to the user.\n\n if (!state.reading) n = howMuchToRead(nOrig, state);\n }\n\n var ret;\n if (n > 0) ret = fromList(n, state);else ret = null;\n\n if (ret === null) {\n state.needReadable = state.length <= state.highWaterMark;\n n = 0;\n } else {\n state.length -= n;\n state.awaitDrain = 0;\n }\n\n if (state.length === 0) {\n // If we have nothing in the buffer, then we want to know\n // as soon as we *do* get something into the buffer.\n if (!state.ended) state.needReadable = true; // If we tried to read() past the EOF, then emit end on the next tick.\n\n if (nOrig !== n && state.ended) endReadable(this);\n }\n\n if (ret !== null) this.emit('data', ret);\n return ret;\n};\n\nfunction onEofChunk(stream, state) {\n debug('onEofChunk');\n if (state.ended) return;\n\n if (state.decoder) {\n var chunk = state.decoder.end();\n\n if (chunk && chunk.length) {\n state.buffer.push(chunk);\n state.length += state.objectMode ? 1 : chunk.length;\n }\n }\n\n state.ended = true;\n\n if (state.sync) {\n // if we are sync, wait until next tick to emit the data.\n // Otherwise we risk emitting data in the flow()\n // the readable code triggers during a read() call\n emitReadable(stream);\n } else {\n // emit 'readable' now to make sure it gets picked up.\n state.needReadable = false;\n\n if (!state.emittedReadable) {\n state.emittedReadable = true;\n emitReadable_(stream);\n }\n }\n} // Don't emit readable right away in sync mode, because this can trigger\n// another read() call => stack overflow. This way, it might trigger\n// a nextTick recursion warning, but that's not so bad.\n\n\nfunction emitReadable(stream) {\n var state = stream._readableState;\n debug('emitReadable', state.needReadable, state.emittedReadable);\n state.needReadable = false;\n\n if (!state.emittedReadable) {\n debug('emitReadable', state.flowing);\n state.emittedReadable = true;\n process.nextTick(emitReadable_, stream);\n }\n}\n\nfunction emitReadable_(stream) {\n var state = stream._readableState;\n debug('emitReadable_', state.destroyed, state.length, state.ended);\n\n if (!state.destroyed && (state.length || state.ended)) {\n stream.emit('readable');\n state.emittedReadable = false;\n } // The stream needs another readable event if\n // 1. It is not flowing, as the flow mechanism will take\n // care of it.\n // 2. It is not ended.\n // 3. It is below the highWaterMark, so we can schedule\n // another readable later.\n\n\n state.needReadable = !state.flowing && !state.ended && state.length <= state.highWaterMark;\n flow(stream);\n} // at this point, the user has presumably seen the 'readable' event,\n// and called read() to consume some data. that may have triggered\n// in turn another _read(n) call, in which case reading = true if\n// it's in progress.\n// However, if we're not ended, or reading, and the length < hwm,\n// then go ahead and try to read some more preemptively.\n\n\nfunction maybeReadMore(stream, state) {\n if (!state.readingMore) {\n state.readingMore = true;\n process.nextTick(maybeReadMore_, stream, state);\n }\n}\n\nfunction maybeReadMore_(stream, state) {\n // Attempt to read more data if we should.\n //\n // The conditions for reading more data are (one of):\n // - Not enough data buffered (state.length < state.highWaterMark). The loop\n // is responsible for filling the buffer with enough data if such data\n // is available. If highWaterMark is 0 and we are not in the flowing mode\n // we should _not_ attempt to buffer any extra data. We'll get more data\n // when the stream consumer calls read() instead.\n // - No data in the buffer, and the stream is in flowing mode. In this mode\n // the loop below is responsible for ensuring read() is called. Failing to\n // call read here would abort the flow and there's no other mechanism for\n // continuing the flow if the stream consumer has just subscribed to the\n // 'data' event.\n //\n // In addition to the above conditions to keep reading data, the following\n // conditions prevent the data from being read:\n // - The stream has ended (state.ended).\n // - There is already a pending 'read' operation (state.reading). This is a\n // case where the the stream has called the implementation defined _read()\n // method, but they are processing the call asynchronously and have _not_\n // called push() with new data. In this case we skip performing more\n // read()s. The execution ends in this method again after the _read() ends\n // up calling push() with more data.\n while (!state.reading && !state.ended && (state.length < state.highWaterMark || state.flowing && state.length === 0)) {\n var len = state.length;\n debug('maybeReadMore read 0');\n stream.read(0);\n if (len === state.length) // didn't get any data, stop spinning.\n break;\n }\n\n state.readingMore = false;\n} // abstract method. to be overridden in specific implementation classes.\n// call cb(er, data) where data is <= n in length.\n// for virtual (non-string, non-buffer) streams, \"length\" is somewhat\n// arbitrary, and perhaps not very meaningful.\n\n\nReadable.prototype._read = function (n) {\n errorOrDestroy(this, new ERR_METHOD_NOT_IMPLEMENTED('_read()'));\n};\n\nReadable.prototype.pipe = function (dest, pipeOpts) {\n var src = this;\n var state = this._readableState;\n\n switch (state.pipesCount) {\n case 0:\n state.pipes = dest;\n break;\n\n case 1:\n state.pipes = [state.pipes, dest];\n break;\n\n default:\n state.pipes.push(dest);\n break;\n }\n\n state.pipesCount += 1;\n debug('pipe count=%d opts=%j', state.pipesCount, pipeOpts);\n var doEnd = (!pipeOpts || pipeOpts.end !== false) && dest !== process.stdout && dest !== process.stderr;\n var endFn = doEnd ? onend : unpipe;\n if (state.endEmitted) process.nextTick(endFn);else src.once('end', endFn);\n dest.on('unpipe', onunpipe);\n\n function onunpipe(readable, unpipeInfo) {\n debug('onunpipe');\n\n if (readable === src) {\n if (unpipeInfo && unpipeInfo.hasUnpiped === false) {\n unpipeInfo.hasUnpiped = true;\n cleanup();\n }\n }\n }\n\n function onend() {\n debug('onend');\n dest.end();\n } // when the dest drains, it reduces the awaitDrain counter\n // on the source. This would be more elegant with a .once()\n // handler in flow(), but adding and removing repeatedly is\n // too slow.\n\n\n var ondrain = pipeOnDrain(src);\n dest.on('drain', ondrain);\n var cleanedUp = false;\n\n function cleanup() {\n debug('cleanup'); // cleanup event handlers once the pipe is broken\n\n dest.removeListener('close', onclose);\n dest.removeListener('finish', onfinish);\n dest.removeListener('drain', ondrain);\n dest.removeListener('error', onerror);\n dest.removeListener('unpipe', onunpipe);\n src.removeListener('end', onend);\n src.removeListener('end', unpipe);\n src.removeListener('data', ondata);\n cleanedUp = true; // if the reader is waiting for a drain event from this\n // specific writer, then it would cause it to never start\n // flowing again.\n // So, if this is awaiting a drain, then we just call it now.\n // If we don't know, then assume that we are waiting for one.\n\n if (state.awaitDrain && (!dest._writableState || dest._writableState.needDrain)) ondrain();\n }\n\n src.on('data', ondata);\n\n function ondata(chunk) {\n debug('ondata');\n var ret = dest.write(chunk);\n debug('dest.write', ret);\n\n if (ret === false) {\n // If the user unpiped during `dest.write()`, it is possible\n // to get stuck in a permanently paused state if that write\n // also returned false.\n // => Check whether `dest` is still a piping destination.\n if ((state.pipesCount === 1 && state.pipes === dest || state.pipesCount > 1 && indexOf(state.pipes, dest) !== -1) && !cleanedUp) {\n debug('false write response, pause', state.awaitDrain);\n state.awaitDrain++;\n }\n\n src.pause();\n }\n } // if the dest has an error, then stop piping into it.\n // however, don't suppress the throwing behavior for this.\n\n\n function onerror(er) {\n debug('onerror', er);\n unpipe();\n dest.removeListener('error', onerror);\n if (EElistenerCount(dest, 'error') === 0) errorOrDestroy(dest, er);\n } // Make sure our error handler is attached before userland ones.\n\n\n prependListener(dest, 'error', onerror); // Both close and finish should trigger unpipe, but only once.\n\n function onclose() {\n dest.removeListener('finish', onfinish);\n unpipe();\n }\n\n dest.once('close', onclose);\n\n function onfinish() {\n debug('onfinish');\n dest.removeListener('close', onclose);\n unpipe();\n }\n\n dest.once('finish', onfinish);\n\n function unpipe() {\n debug('unpipe');\n src.unpipe(dest);\n } // tell the dest that it's being piped to\n\n\n dest.emit('pipe', src); // start the flow if it hasn't been started already.\n\n if (!state.flowing) {\n debug('pipe resume');\n src.resume();\n }\n\n return dest;\n};\n\nfunction pipeOnDrain(src) {\n return function pipeOnDrainFunctionResult() {\n var state = src._readableState;\n debug('pipeOnDrain', state.awaitDrain);\n if (state.awaitDrain) state.awaitDrain--;\n\n if (state.awaitDrain === 0 && EElistenerCount(src, 'data')) {\n state.flowing = true;\n flow(src);\n }\n };\n}\n\nReadable.prototype.unpipe = function (dest) {\n var state = this._readableState;\n var unpipeInfo = {\n hasUnpiped: false\n }; // if we're not piping anywhere, then do nothing.\n\n if (state.pipesCount === 0) return this; // just one destination. most common case.\n\n if (state.pipesCount === 1) {\n // passed in one, but it's not the right one.\n if (dest && dest !== state.pipes) return this;\n if (!dest) dest = state.pipes; // got a match.\n\n state.pipes = null;\n state.pipesCount = 0;\n state.flowing = false;\n if (dest) dest.emit('unpipe', this, unpipeInfo);\n return this;\n } // slow case. multiple pipe destinations.\n\n\n if (!dest) {\n // remove all.\n var dests = state.pipes;\n var len = state.pipesCount;\n state.pipes = null;\n state.pipesCount = 0;\n state.flowing = false;\n\n for (var i = 0; i < len; i++) {\n dests[i].emit('unpipe', this, {\n hasUnpiped: false\n });\n }\n\n return this;\n } // try to find the right one.\n\n\n var index = indexOf(state.pipes, dest);\n if (index === -1) return this;\n state.pipes.splice(index, 1);\n state.pipesCount -= 1;\n if (state.pipesCount === 1) state.pipes = state.pipes[0];\n dest.emit('unpipe', this, unpipeInfo);\n return this;\n}; // set up data events if they are asked for\n// Ensure readable listeners eventually get something\n\n\nReadable.prototype.on = function (ev, fn) {\n var res = Stream.prototype.on.call(this, ev, fn);\n var state = this._readableState;\n\n if (ev === 'data') {\n // update readableListening so that resume() may be a no-op\n // a few lines down. This is needed to support once('readable').\n state.readableListening = this.listenerCount('readable') > 0; // Try start flowing on next tick if stream isn't explicitly paused\n\n if (state.flowing !== false) this.resume();\n } else if (ev === 'readable') {\n if (!state.endEmitted && !state.readableListening) {\n state.readableListening = state.needReadable = true;\n state.flowing = false;\n state.emittedReadable = false;\n debug('on readable', state.length, state.reading);\n\n if (state.length) {\n emitReadable(this);\n } else if (!state.reading) {\n process.nextTick(nReadingNextTick, this);\n }\n }\n }\n\n return res;\n};\n\nReadable.prototype.addListener = Readable.prototype.on;\n\nReadable.prototype.removeListener = function (ev, fn) {\n var res = Stream.prototype.removeListener.call(this, ev, fn);\n\n if (ev === 'readable') {\n // We need to check if there is someone still listening to\n // readable and reset the state. However this needs to happen\n // after readable has been emitted but before I/O (nextTick) to\n // support once('readable', fn) cycles. This means that calling\n // resume within the same tick will have no\n // effect.\n process.nextTick(updateReadableListening, this);\n }\n\n return res;\n};\n\nReadable.prototype.removeAllListeners = function (ev) {\n var res = Stream.prototype.removeAllListeners.apply(this, arguments);\n\n if (ev === 'readable' || ev === undefined) {\n // We need to check if there is someone still listening to\n // readable and reset the state. However this needs to happen\n // after readable has been emitted but before I/O (nextTick) to\n // support once('readable', fn) cycles. This means that calling\n // resume within the same tick will have no\n // effect.\n process.nextTick(updateReadableListening, this);\n }\n\n return res;\n};\n\nfunction updateReadableListening(self) {\n var state = self._readableState;\n state.readableListening = self.listenerCount('readable') > 0;\n\n if (state.resumeScheduled && !state.paused) {\n // flowing needs to be set to true now, otherwise\n // the upcoming resume will not flow.\n state.flowing = true; // crude way to check if we should resume\n } else if (self.listenerCount('data') > 0) {\n self.resume();\n }\n}\n\nfunction nReadingNextTick(self) {\n debug('readable nexttick read 0');\n self.read(0);\n} // pause() and resume() are remnants of the legacy readable stream API\n// If the user uses them, then switch into old mode.\n\n\nReadable.prototype.resume = function () {\n var state = this._readableState;\n\n if (!state.flowing) {\n debug('resume'); // we flow only if there is no one listening\n // for readable, but we still have to call\n // resume()\n\n state.flowing = !state.readableListening;\n resume(this, state);\n }\n\n state.paused = false;\n return this;\n};\n\nfunction resume(stream, state) {\n if (!state.resumeScheduled) {\n state.resumeScheduled = true;\n process.nextTick(resume_, stream, state);\n }\n}\n\nfunction resume_(stream, state) {\n debug('resume', state.reading);\n\n if (!state.reading) {\n stream.read(0);\n }\n\n state.resumeScheduled = false;\n stream.emit('resume');\n flow(stream);\n if (state.flowing && !state.reading) stream.read(0);\n}\n\nReadable.prototype.pause = function () {\n debug('call pause flowing=%j', this._readableState.flowing);\n\n if (this._readableState.flowing !== false) {\n debug('pause');\n this._readableState.flowing = false;\n this.emit('pause');\n }\n\n this._readableState.paused = true;\n return this;\n};\n\nfunction flow(stream) {\n var state = stream._readableState;\n debug('flow', state.flowing);\n\n while (state.flowing && stream.read() !== null) {\n ;\n }\n} // wrap an old-style stream as the async data source.\n// This is *not* part of the readable stream interface.\n// It is an ugly unfortunate mess of history.\n\n\nReadable.prototype.wrap = function (stream) {\n var _this = this;\n\n var state = this._readableState;\n var paused = false;\n stream.on('end', function () {\n debug('wrapped end');\n\n if (state.decoder && !state.ended) {\n var chunk = state.decoder.end();\n if (chunk && chunk.length) _this.push(chunk);\n }\n\n _this.push(null);\n });\n stream.on('data', function (chunk) {\n debug('wrapped data');\n if (state.decoder) chunk = state.decoder.write(chunk); // don't skip over falsy values in objectMode\n\n if (state.objectMode && (chunk === null || chunk === undefined)) return;else if (!state.objectMode && (!chunk || !chunk.length)) return;\n\n var ret = _this.push(chunk);\n\n if (!ret) {\n paused = true;\n stream.pause();\n }\n }); // proxy all the other methods.\n // important when wrapping filters and duplexes.\n\n for (var i in stream) {\n if (this[i] === undefined && typeof stream[i] === 'function') {\n this[i] = function methodWrap(method) {\n return function methodWrapReturnFunction() {\n return stream[method].apply(stream, arguments);\n };\n }(i);\n }\n } // proxy certain important events.\n\n\n for (var n = 0; n < kProxyEvents.length; n++) {\n stream.on(kProxyEvents[n], this.emit.bind(this, kProxyEvents[n]));\n } // when we try to consume some more bytes, simply unpause the\n // underlying stream.\n\n\n this._read = function (n) {\n debug('wrapped _read', n);\n\n if (paused) {\n paused = false;\n stream.resume();\n }\n };\n\n return this;\n};\n\nif (typeof Symbol === 'function') {\n Readable.prototype[Symbol.asyncIterator] = function () {\n if (createReadableStreamAsyncIterator === undefined) {\n createReadableStreamAsyncIterator = require('./internal/streams/async_iterator');\n }\n\n return createReadableStreamAsyncIterator(this);\n };\n}\n\nObject.defineProperty(Readable.prototype, 'readableHighWaterMark', {\n // making it explicit this property is not enumerable\n // because otherwise some prototype manipulation in\n // userland will fail\n enumerable: false,\n get: function get() {\n return this._readableState.highWaterMark;\n }\n});\nObject.defineProperty(Readable.prototype, 'readableBuffer', {\n // making it explicit this property is not enumerable\n // because otherwise some prototype manipulation in\n // userland will fail\n enumerable: false,\n get: function get() {\n return this._readableState && this._readableState.buffer;\n }\n});\nObject.defineProperty(Readable.prototype, 'readableFlowing', {\n // making it explicit this property is not enumerable\n // because otherwise some prototype manipulation in\n // userland will fail\n enumerable: false,\n get: function get() {\n return this._readableState.flowing;\n },\n set: function set(state) {\n if (this._readableState) {\n this._readableState.flowing = state;\n }\n }\n}); // exposed for testing purposes only.\n\nReadable._fromList = fromList;\nObject.defineProperty(Readable.prototype, 'readableLength', {\n // making it explicit this property is not enumerable\n // because otherwise some prototype manipulation in\n // userland will fail\n enumerable: false,\n get: function get() {\n return this._readableState.length;\n }\n}); // Pluck off n bytes from an array of buffers.\n// Length is the combined lengths of all the buffers in the list.\n// This function is designed to be inlinable, so please take care when making\n// changes to the function body.\n\nfunction fromList(n, state) {\n // nothing buffered\n if (state.length === 0) return null;\n var ret;\n if (state.objectMode) ret = state.buffer.shift();else if (!n || n >= state.length) {\n // read it all, truncate the list\n if (state.decoder) ret = state.buffer.join('');else if (state.buffer.length === 1) ret = state.buffer.first();else ret = state.buffer.concat(state.length);\n state.buffer.clear();\n } else {\n // read part of list\n ret = state.buffer.consume(n, state.decoder);\n }\n return ret;\n}\n\nfunction endReadable(stream) {\n var state = stream._readableState;\n debug('endReadable', state.endEmitted);\n\n if (!state.endEmitted) {\n state.ended = true;\n process.nextTick(endReadableNT, state, stream);\n }\n}\n\nfunction endReadableNT(state, stream) {\n debug('endReadableNT', state.endEmitted, state.length); // Check that we didn't get one last unshift.\n\n if (!state.endEmitted && state.length === 0) {\n state.endEmitted = true;\n stream.readable = false;\n stream.emit('end');\n\n if (state.autoDestroy) {\n // In case of duplex streams we need a way to detect\n // if the writable side is ready for autoDestroy as well\n var wState = stream._writableState;\n\n if (!wState || wState.autoDestroy && wState.finished) {\n stream.destroy();\n }\n }\n }\n}\n\nif (typeof Symbol === 'function') {\n Readable.from = function (iterable, opts) {\n if (from === undefined) {\n from = require('./internal/streams/from');\n }\n\n return from(Readable, iterable, opts);\n };\n}\n\nfunction indexOf(xs, x) {\n for (var i = 0, l = xs.length; i < l; i++) {\n if (xs[i] === x) return i;\n }\n\n return -1;\n}","// Copyright Joyent, Inc. and other Node contributors.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a\n// copy of this software and associated documentation files (the\n// \"Software\"), to deal in the Software without restriction, including\n// without limitation the rights to use, copy, modify, merge, publish,\n// distribute, sublicense, and/or sell copies of the Software, and to permit\n// persons to whom the Software is furnished to do so, subject to the\n// following conditions:\n//\n// The above copyright notice and this permission notice shall be included\n// in all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN\n// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR\n// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\n// USE OR OTHER DEALINGS IN THE SOFTWARE.\n// a transform stream is a readable/writable stream where you do\n// something with the data. Sometimes it's called a \"filter\",\n// but that's not a great name for it, since that implies a thing where\n// some bits pass through, and others are simply ignored. (That would\n// be a valid example of a transform, of course.)\n//\n// While the output is causally related to the input, it's not a\n// necessarily symmetric or synchronous transformation. For example,\n// a zlib stream might take multiple plain-text writes(), and then\n// emit a single compressed chunk some time in the future.\n//\n// Here's how this works:\n//\n// The Transform stream has all the aspects of the readable and writable\n// stream classes. When you write(chunk), that calls _write(chunk,cb)\n// internally, and returns false if there's a lot of pending writes\n// buffered up. When you call read(), that calls _read(n) until\n// there's enough pending readable data buffered up.\n//\n// In a transform stream, the written data is placed in a buffer. When\n// _read(n) is called, it transforms the queued up data, calling the\n// buffered _write cb's as it consumes chunks. If consuming a single\n// written chunk would result in multiple output chunks, then the first\n// outputted bit calls the readcb, and subsequent chunks just go into\n// the read buffer, and will cause it to emit 'readable' if necessary.\n//\n// This way, back-pressure is actually determined by the reading side,\n// since _read has to be called to start processing a new chunk. However,\n// a pathological inflate type of transform can cause excessive buffering\n// here. For example, imagine a stream where every byte of input is\n// interpreted as an integer from 0-255, and then results in that many\n// bytes of output. Writing the 4 bytes {ff,ff,ff,ff} would result in\n// 1kb of data being output. In this case, you could write a very small\n// amount of input, and end up with a very large amount of output. In\n// such a pathological inflating mechanism, there'd be no way to tell\n// the system to stop doing the transform. A single 4MB write could\n// cause the system to run out of memory.\n//\n// However, even in such a pathological case, only a single written chunk\n// would be consumed, and then the rest would wait (un-transformed) until\n// the results of the previous transformed chunk were consumed.\n'use strict';\n\nmodule.exports = Transform;\n\nvar _require$codes = require('../errors').codes,\n ERR_METHOD_NOT_IMPLEMENTED = _require$codes.ERR_METHOD_NOT_IMPLEMENTED,\n ERR_MULTIPLE_CALLBACK = _require$codes.ERR_MULTIPLE_CALLBACK,\n ERR_TRANSFORM_ALREADY_TRANSFORMING = _require$codes.ERR_TRANSFORM_ALREADY_TRANSFORMING,\n ERR_TRANSFORM_WITH_LENGTH_0 = _require$codes.ERR_TRANSFORM_WITH_LENGTH_0;\n\nvar Duplex = require('./_stream_duplex');\n\nrequire('inherits')(Transform, Duplex);\n\nfunction afterTransform(er, data) {\n var ts = this._transformState;\n ts.transforming = false;\n var cb = ts.writecb;\n\n if (cb === null) {\n return this.emit('error', new ERR_MULTIPLE_CALLBACK());\n }\n\n ts.writechunk = null;\n ts.writecb = null;\n if (data != null) // single equals check for both `null` and `undefined`\n this.push(data);\n cb(er);\n var rs = this._readableState;\n rs.reading = false;\n\n if (rs.needReadable || rs.length < rs.highWaterMark) {\n this._read(rs.highWaterMark);\n }\n}\n\nfunction Transform(options) {\n if (!(this instanceof Transform)) return new Transform(options);\n Duplex.call(this, options);\n this._transformState = {\n afterTransform: afterTransform.bind(this),\n needTransform: false,\n transforming: false,\n writecb: null,\n writechunk: null,\n writeencoding: null\n }; // start out asking for a readable event once data is transformed.\n\n this._readableState.needReadable = true; // we have implemented the _read method, and done the other things\n // that Readable wants before the first _read call, so unset the\n // sync guard flag.\n\n this._readableState.sync = false;\n\n if (options) {\n if (typeof options.transform === 'function') this._transform = options.transform;\n if (typeof options.flush === 'function') this._flush = options.flush;\n } // When the writable side finishes, then flush out anything remaining.\n\n\n this.on('prefinish', prefinish);\n}\n\nfunction prefinish() {\n var _this = this;\n\n if (typeof this._flush === 'function' && !this._readableState.destroyed) {\n this._flush(function (er, data) {\n done(_this, er, data);\n });\n } else {\n done(this, null, null);\n }\n}\n\nTransform.prototype.push = function (chunk, encoding) {\n this._transformState.needTransform = false;\n return Duplex.prototype.push.call(this, chunk, encoding);\n}; // This is the part where you do stuff!\n// override this function in implementation classes.\n// 'chunk' is an input chunk.\n//\n// Call `push(newChunk)` to pass along transformed output\n// to the readable side. You may call 'push' zero or more times.\n//\n// Call `cb(err)` when you are done with this chunk. If you pass\n// an error, then that'll put the hurt on the whole operation. If you\n// never call cb(), then you'll never get another chunk.\n\n\nTransform.prototype._transform = function (chunk, encoding, cb) {\n cb(new ERR_METHOD_NOT_IMPLEMENTED('_transform()'));\n};\n\nTransform.prototype._write = function (chunk, encoding, cb) {\n var ts = this._transformState;\n ts.writecb = cb;\n ts.writechunk = chunk;\n ts.writeencoding = encoding;\n\n if (!ts.transforming) {\n var rs = this._readableState;\n if (ts.needTransform || rs.needReadable || rs.length < rs.highWaterMark) this._read(rs.highWaterMark);\n }\n}; // Doesn't matter what the args are here.\n// _transform does all the work.\n// That we got here means that the readable side wants more data.\n\n\nTransform.prototype._read = function (n) {\n var ts = this._transformState;\n\n if (ts.writechunk !== null && !ts.transforming) {\n ts.transforming = true;\n\n this._transform(ts.writechunk, ts.writeencoding, ts.afterTransform);\n } else {\n // mark that we need a transform, so that any data that comes in\n // will get processed, now that we've asked for it.\n ts.needTransform = true;\n }\n};\n\nTransform.prototype._destroy = function (err, cb) {\n Duplex.prototype._destroy.call(this, err, function (err2) {\n cb(err2);\n });\n};\n\nfunction done(stream, er, data) {\n if (er) return stream.emit('error', er);\n if (data != null) // single equals check for both `null` and `undefined`\n stream.push(data); // TODO(BridgeAR): Write a test for these two error cases\n // if there's nothing in the write buffer, then that means\n // that nothing more will ever be provided\n\n if (stream._writableState.length) throw new ERR_TRANSFORM_WITH_LENGTH_0();\n if (stream._transformState.transforming) throw new ERR_TRANSFORM_ALREADY_TRANSFORMING();\n return stream.push(null);\n}","// Copyright Joyent, Inc. and other Node contributors.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a\n// copy of this software and associated documentation files (the\n// \"Software\"), to deal in the Software without restriction, including\n// without limitation the rights to use, copy, modify, merge, publish,\n// distribute, sublicense, and/or sell copies of the Software, and to permit\n// persons to whom the Software is furnished to do so, subject to the\n// following conditions:\n//\n// The above copyright notice and this permission notice shall be included\n// in all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN\n// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR\n// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\n// USE OR OTHER DEALINGS IN THE SOFTWARE.\n// a passthrough stream.\n// basically just the most minimal sort of Transform stream.\n// Every written chunk gets output as-is.\n'use strict';\n\nmodule.exports = PassThrough;\n\nvar Transform = require('./_stream_transform');\n\nrequire('inherits')(PassThrough, Transform);\n\nfunction PassThrough(options) {\n if (!(this instanceof PassThrough)) return new PassThrough(options);\n Transform.call(this, options);\n}\n\nPassThrough.prototype._transform = function (chunk, encoding, cb) {\n cb(null, chunk);\n};","// Ported from https://github.com/mafintosh/pump with\n// permission from the author, Mathias Buus (@mafintosh).\n'use strict';\n\nvar eos;\n\nfunction once(callback) {\n var called = false;\n return function () {\n if (called) return;\n called = true;\n callback.apply(void 0, arguments);\n };\n}\n\nvar _require$codes = require('../../../errors').codes,\n ERR_MISSING_ARGS = _require$codes.ERR_MISSING_ARGS,\n ERR_STREAM_DESTROYED = _require$codes.ERR_STREAM_DESTROYED;\n\nfunction noop(err) {\n // Rethrow the error if it exists to avoid swallowing it\n if (err) throw err;\n}\n\nfunction isRequest(stream) {\n return stream.setHeader && typeof stream.abort === 'function';\n}\n\nfunction destroyer(stream, reading, writing, callback) {\n callback = once(callback);\n var closed = false;\n stream.on('close', function () {\n closed = true;\n });\n if (eos === undefined) eos = require('./end-of-stream');\n eos(stream, {\n readable: reading,\n writable: writing\n }, function (err) {\n if (err) return callback(err);\n closed = true;\n callback();\n });\n var destroyed = false;\n return function (err) {\n if (closed) return;\n if (destroyed) return;\n destroyed = true; // request.destroy just do .end - .abort is what we want\n\n if (isRequest(stream)) return stream.abort();\n if (typeof stream.destroy === 'function') return stream.destroy();\n callback(err || new ERR_STREAM_DESTROYED('pipe'));\n };\n}\n\nfunction call(fn) {\n fn();\n}\n\nfunction pipe(from, to) {\n return from.pipe(to);\n}\n\nfunction popCallback(streams) {\n if (!streams.length) return noop;\n if (typeof streams[streams.length - 1] !== 'function') return noop;\n return streams.pop();\n}\n\nfunction pipeline() {\n for (var _len = arguments.length, streams = new Array(_len), _key = 0; _key < _len; _key++) {\n streams[_key] = arguments[_key];\n }\n\n var callback = popCallback(streams);\n if (Array.isArray(streams[0])) streams = streams[0];\n\n if (streams.length < 2) {\n throw new ERR_MISSING_ARGS('streams');\n }\n\n var error;\n var destroys = streams.map(function (stream, i) {\n var reading = i < streams.length - 1;\n var writing = i > 0;\n return destroyer(stream, reading, writing, function (err) {\n if (!error) error = err;\n if (err) destroys.forEach(call);\n if (reading) return;\n destroys.forEach(call);\n callback(error);\n });\n });\n return streams.reduce(pipe);\n}\n\nmodule.exports = pipeline;","exports = module.exports = require('./lib/_stream_readable.js');\nexports.Stream = exports;\nexports.Readable = exports;\nexports.Writable = require('./lib/_stream_writable.js');\nexports.Duplex = require('./lib/_stream_duplex.js');\nexports.Transform = require('./lib/_stream_transform.js');\nexports.PassThrough = require('./lib/_stream_passthrough.js');\nexports.finished = require('./lib/internal/streams/end-of-stream.js');\nexports.pipeline = require('./lib/internal/streams/pipeline.js');\n","var Transform = require('readable-stream').Transform\n , inherits = require('inherits')\n\nfunction DestroyableTransform(opts) {\n Transform.call(this, opts)\n this._destroyed = false\n}\n\ninherits(DestroyableTransform, Transform)\n\nDestroyableTransform.prototype.destroy = function(err) {\n if (this._destroyed) return\n this._destroyed = true\n \n var self = this\n process.nextTick(function() {\n if (err)\n self.emit('error', err)\n self.emit('close')\n })\n}\n\n// a noop _transform function\nfunction noop (chunk, enc, callback) {\n callback(null, chunk)\n}\n\n\n// create a new export function, used by both the main export and\n// the .ctor export, contains common logic for dealing with arguments\nfunction through2 (construct) {\n return function (options, transform, flush) {\n if (typeof options == 'function') {\n flush = transform\n transform = options\n options = {}\n }\n\n if (typeof transform != 'function')\n transform = noop\n\n if (typeof flush != 'function')\n flush = null\n\n return construct(options, transform, flush)\n }\n}\n\n\n// main export, just make me a transform stream!\nmodule.exports = through2(function (options, transform, flush) {\n var t2 = new DestroyableTransform(options)\n\n t2._transform = transform\n\n if (flush)\n t2._flush = flush\n\n return t2\n})\n\n\n// make me a reusable prototype that I can `new`, or implicitly `new`\n// with a constructor call\nmodule.exports.ctor = through2(function (options, transform, flush) {\n function Through2 (override) {\n if (!(this instanceof Through2))\n return new Through2(override)\n\n this.options = Object.assign({}, options, override)\n\n DestroyableTransform.call(this, this.options)\n }\n\n inherits(Through2, DestroyableTransform)\n\n Through2.prototype._transform = transform\n\n if (flush)\n Through2.prototype._flush = flush\n\n return Through2\n})\n\n\nmodule.exports.obj = through2(function (options, transform, flush) {\n var t2 = new DestroyableTransform(Object.assign({ objectMode: true, highWaterMark: 16 }, options))\n\n t2._transform = transform\n\n if (flush)\n t2._flush = flush\n\n return t2\n})\n","import WidgetFactory from \"./WidgetFactory\";\nimport Container from \"./Container\";\nimport ContainerWidget from \"./ContainerWidget\";\nimport Widget from \"./Widget\";\nimport { ParsedNode } from \"./helpers/nodeParser\";\nimport { evaluateAttributes, replaceEntities } from \"./helpers/attributeParser\";\nimport { evaluateStates, evaluateButtonStates } from \"./helpers/stateParser\";\nimport { parseContext } from \"./helpers/contextParser\";\nimport { parseOnChange } from \"./helpers/onChangeParser\";\nimport * as txml from \"txml\";\nimport Field from \"./Field\";\nimport Button from \"./Button\";\n\nexport type FormParseOptions = {\n readOnly?: boolean;\n values?: any;\n};\n\nclass Form {\n /**\n * Object containing fields specification of the form.\n */\n _fields: any;\n get fields() {\n return this._fields;\n }\n\n _container: Container;\n get container(): Container {\n return this._container;\n }\n\n _string: string | null = null;\n get string(): string | null {\n return this._string;\n }\n\n /**\n * Widget type\n */\n _type: string = \"form\";\n get type(): string {\n return this._type;\n }\n\n /**\n * Determines if form is read only (default is false)\n */\n _readOnly: boolean = false;\n get readOnly(): boolean {\n return this._readOnly;\n }\n set readOnly(value: boolean) {\n this._readOnly = value;\n }\n\n /**\n * Context\n */\n _context: any = {};\n get context(): any {\n return this._context;\n }\n set context(value: any) {\n this._context = value;\n }\n\n /**\n * Collection of onChange actions for fields\n */\n _onChangeFields: any = {};\n get onChangeFields(): any {\n return this._onChangeFields;\n }\n set onChangeFields(value: any) {\n this._onChangeFields = value;\n }\n\n /*\n _widgets = {\n *[Symbol.iterator]() {\n if (this._container && this._container.length) {\n this._container.forEach((item) => {\n\n // yield item\n });\n }\n }\n };\n get widgets() {\n return this._widgets;\n }\n */\n\n /**\n * Unique key for container\n */\n _keyIdx: number = 0;\n get keyIdx(): number {\n return this._keyIdx;\n }\n set keyIdx(value: number) {\n this._keyIdx = value;\n }\n\n /**\n * List of invisible fields\n */\n _invisibleFields: string[] = [];\n get invisibleFields(): string[] {\n return this._invisibleFields;\n }\n set invisibleFields(value: string[]) {\n this._invisibleFields = value;\n }\n\n constructor(fields: Object, columns: number = 4) {\n this._fields = fields;\n this._container = new Container(columns, 6, false, \"root\");\n }\n\n parse(xml: string, options?: FormParseOptions) {\n const { values = {}, readOnly = false } = options || {};\n const view = txml\n .parse(xml)\n .filter((el: ParsedNode) => el.tagName === \"form\")[0];\n this._string = view.attributes?.string || null;\n if (this._string) {\n this._string = replaceEntities(this._string);\n }\n this._readOnly = readOnly;\n this._context = values[\"id\"]\n ? { active_id: values[\"id\"], active_ids: [values[\"id\"]] }\n : {};\n this._invisibleFields = [];\n this.parseNode({\n fields: view.children,\n container: this._container,\n values,\n });\n }\n\n parseNode({\n fields,\n container,\n values,\n }: {\n fields: ParsedNode[];\n container: Container;\n values: any;\n }) {\n const widgetFactory = new WidgetFactory();\n fields\n .filter((f) => typeof f === \"object\")\n .forEach((field) => {\n const { tagName, attributes, children } = field;\n let widgetType = tagName;\n let tagAttributes = attributes;\n if (tagName === \"field\") {\n const { name, widget } = attributes;\n if (widget) {\n widgetType = widget;\n } else if (name) {\n if (!this._fields[name]) {\n throw new Error(\n `Field ${name} doesn't exist in fields defintion`\n );\n }\n widgetType = this._fields[name].type;\n }\n tagAttributes = {\n ...this._fields[name],\n ...attributes,\n fieldsWidgetType: this._fields[name].type,\n };\n }\n const evaluatedTagAttributes = evaluateAttributes({\n tagAttributes,\n values,\n fields: this._fields,\n widgetType: tagName,\n });\n let evaluatedStateAttributes;\n\n if (tagName === \"button\" && tagAttributes.states) {\n evaluatedStateAttributes = evaluateButtonStates({\n states: tagAttributes.states,\n values,\n });\n } else {\n evaluatedStateAttributes = evaluateStates({\n fieldName: tagAttributes.name,\n values,\n fields: this._fields,\n });\n }\n\n const widgetContext = parseContext({\n context:\n tagAttributes[\"context\"] ||\n this._fields[tagAttributes.name]?.[\"context\"],\n values,\n fields: this._fields,\n });\n\n if (tagAttributes[\"on_change\"]) {\n this._onChangeFields[tagAttributes.name] = parseOnChange(\n tagAttributes[\"on_change\"]\n );\n }\n\n let domain: string | undefined = undefined;\n\n if (checkIfDomainHasValue(tagAttributes[\"domain\"])) {\n domain = tagAttributes[\"domain\"];\n }\n\n if (checkIfDomainHasValue(this._fields[tagAttributes.name]?.domain)) {\n domain = this._fields[tagAttributes.name].domain;\n }\n\n this._keyIdx = this._keyIdx + 1;\n\n const widgetProps = {\n ...evaluatedTagAttributes,\n ...evaluatedStateAttributes,\n context: widgetContext,\n domain,\n key: `${this._keyIdx}`,\n };\n\n const widget = widgetFactory.createWidget(widgetType, widgetProps);\n\n if (widget.invisible && widget instanceof Field) {\n this._invisibleFields.push(widgetProps.name);\n }\n\n if (widget instanceof ContainerWidget) {\n this.parseNode({\n fields: children,\n container: widget.container,\n values,\n });\n }\n\n // If the widget is a button and has a readonly attribute specified\n // reflect it to the widget independently of the form readonly attribute\n if (widget instanceof Button && widget.readOnly !== undefined) {\n // widget.readOnly = widget.readOnly;\n } else {\n // If the form is set to readonly, reflect it to its children\n widget.readOnly = widget.readOnly || this.readOnly;\n }\n\n container.addWidget(widget);\n });\n }\n\n /**\n * Calls container's findById method to find the widgets matching with param id\n * @param {string} id id to find\n */\n findById(id: string): Widget | null {\n return this.container.findById(id);\n }\n}\n\nfunction checkIfDomainHasValue(domain: any) {\n if (!domain) {\n return false;\n }\n if (Array.isArray(domain) && domain.length > 0) {\n return true;\n } else if (typeof domain === \"string\" && domain !== \"\" && domain !== \"[]\") {\n return true;\n }\n return false;\n}\nexport default Form;\n","import WidgetFactory from \"./WidgetFactory\";\nimport Widget from \"./Widget\";\nimport { replaceEntities } from \"./helpers/attributeParser\";\nimport { ParsedNode, parseBoolAttribute } from \"./helpers/nodeParser\";\nimport * as txml from 'txml';\n\ntype EditableTreeOptions = \"top\" | \" bottom\" | null;\n\nclass Tree {\n /**\n * Object containing fields specification of the form.\n */\n _fields: any;\n get fields() {\n return this._fields;\n }\n\n _columns: Array<any> = [];\n get columns(): Array<any> {\n return this._columns;\n }\n\n _string: string | null = null;\n get string(): string | null {\n return this._string;\n }\n\n /**\n * Widget type\n */\n _type: string = \"tree\";\n get type(): string {\n return this._type;\n }\n\n /**\n * Color expression value\n */\n _colors: string | null = null;\n get colors(): string | null {\n return this._colors;\n }\n\n _status: string | null = null;\n get status(): string | null {\n return this._status;\n }\n\n /**\n * Editable value\n */\n _editable: EditableTreeOptions = null;\n get editable(): EditableTreeOptions {\n return this._editable;\n }\n\n constructor(fields: Object) {\n this._fields = fields;\n }\n\n parse(xml: string) {\n const view = txml.parse(xml).filter((el: ParsedNode) => el.tagName === \"tree\")[0];\n this._string = view.attributes.string || null;\n if (this._string) {\n this._string = replaceEntities(this._string);\n }\n this._colors = view.attributes.colors || null;\n if (this._colors) {\n this._colors = replaceEntities(this._colors);\n }\n this._status = view.attributes.status || null;\n if (this._status) {\n this._status = replaceEntities(this._status);\n }\n this._editable = view.attributes.editable || null;\n const widgetFactory = new WidgetFactory();\n view.children.forEach((field: ParsedNode) => {\n const { tagName, attributes } = field;\n let widgetType = null;\n if (tagName === \"field\") {\n const { name, widget} = attributes;\n let mergedAttrs = attributes\n if (name) {\n if (!this._fields[name]) {\n throw new Error(`Field ${name} doesn't exist in fields defintion`);\n }\n const fieldDef = this._fields[name];\n widgetType = fieldDef.type;\n if (\n ((Array.isArray(fieldDef?.domain) &&\n fieldDef?.domain.length === 0) ||\n fieldDef?.domain === false) &&\n attributes[\"domain\"] &&\n attributes[\"domain\"].length > 0\n ) {\n delete fieldDef.domain;\n }\n mergedAttrs = {\n ...fieldDef,\n ...attributes,\n fieldsWidgetType: fieldDef?.type,\n };\n }\n if (widget) {\n widgetType = widget;\n }\n if (!mergedAttrs.invisible) {\n const widget = widgetFactory.createWidget(widgetType, mergedAttrs);\n this._columns.push(widget);\n }\n }\n })\n }\n\n /**\n * Find the widgets matching with param id\n * @param {string} id id to find\n */\n findById(id: string): Widget | null {\n return this._columns.find((item) => {\n if (item.findById) {\n return item.findById(id);\n }\n });\n }\n}\n\nexport default Tree;\n","import WidgetFactory from \"./WidgetFactory\";\nimport Container from \"./Container\";\nimport Widget from \"./Widget\";\nimport Form from \"./Form\";\n\nexport const SearchFieldTypes: any = {\n text: \"text\",\n many2one: \"many2one\",\n char: \"char\",\n boolean: \"boolean\",\n selection: \"selection\",\n float: \"float\",\n float_time: \"float_time\",\n progressbar: \"progressbar\",\n integer: \"integer\",\n date: \"date\",\n datetime: \"datetime\",\n};\n\nclass SearchFilter {\n /**\n * Object containing the specific fields for primary and secondary search fields\n */\n _searchFields: any;\n get searchFields() {\n return this._searchFields;\n }\n\n /**\n * Object containing all the fields specification of the whole form\n */\n _fields: any;\n get fields() {\n return this._fields;\n }\n\n _simpleSearchContainer: Container;\n get simpleSearchContainer(): Container {\n return this._simpleSearchContainer;\n }\n\n _advancedSearchContainer: Container;\n get advancedSearchContainer(): Container {\n return this._advancedSearchContainer;\n }\n\n constructor(searchFields: Object, fields: Object, columns: number = 8) {\n this._searchFields = searchFields;\n this._fields = fields;\n this._simpleSearchContainer = new Container(columns);\n this._advancedSearchContainer = new Container(columns);\n }\n\n parse() {\n const widgetFactory = new WidgetFactory();\n\n const simpleSearchWidgets = this.parseFields(\n this.searchFields.primary,\n widgetFactory\n );\n simpleSearchWidgets.forEach((widget) => {\n this.simpleSearchContainer.addWidget(widget, { addLabel: false });\n this.advancedSearchContainer.addWidget(widget, { addLabel: false });\n });\n\n const advancedSearchWidgets = this.parseFields(\n this.searchFields.secondary,\n widgetFactory\n );\n advancedSearchWidgets.forEach((widget) => {\n this.advancedSearchContainer.addWidget(widget, { addLabel: false });\n });\n }\n\n parseFields(searchFields: string[], widgetFactory: WidgetFactory) {\n return searchFields.map((searchField) => {\n const fieldAttributes = {\n ...this.fields[searchField],\n name: searchField,\n colspan: 2,\n };\n const { type, widget } = fieldAttributes;\n let widgetType = widget ?? type;\n if (SearchFieldTypes[widgetType] === undefined) {\n widgetType = type;\n }\n return widgetFactory.createWidget(widgetType!, fieldAttributes);\n });\n }\n\n /**\n * Calls container's findById method to find the widgets matching with param id\n * @param {string} id id to find\n */\n findById(id: string): Widget | null {\n return this.advancedSearchContainer.findById(id);\n }\n}\n\nexport default SearchFilter;\n","const transformDomainForChildWidget = ({\n domain,\n widgetFieldName,\n}: {\n domain: any;\n widgetFieldName: string;\n}) => {\n const transformedDomain: any[] = [];\n\n domain.forEach((domainEntry: any) => {\n if (!Array.isArray(domainEntry)) {\n return;\n }\n \n const [fieldName, operator, value] = domainEntry;\n\n let rootFieldName;\n let targetFieldName;\n\n if (fieldName.indexOf(\".\") !== -1) {\n rootFieldName = fieldName.substr(0, fieldName.indexOf(\".\"));\n targetFieldName = fieldName.substr(\n fieldName.indexOf(\".\") + 1,\n fieldName.length - 1\n );\n } else {\n rootFieldName = fieldName;\n targetFieldName = \"id\";\n }\n\n if (rootFieldName === widgetFieldName) {\n transformedDomain.push([targetFieldName, operator, value]);\n }\n });\n\n return transformedDomain;\n};\n\nexport const parseDomainFields = (domain: string | boolean): string[] => {\n if (typeof domain != 'string') {\n return [];\n }\n return domain.replace(/[()\\[\\]]/g, \"\")\n .split(',')\n .map(i => i.trim())\n .filter(i => i.indexOf(\"'\") === -1)\n}\n\nexport { transformDomainForChildWidget };\n","class DashboardItem {\n _action_id: string | null = null;\n get action_id(): string | null {\n return this._action_id;\n }\n\n _position: string | null = null;\n get position(): string | null {\n return this._position;\n }\n\n constructor(attributes: any) {\n if (attributes.action_id) {\n this._action_id = attributes.action_id;\n }\n\n if (attributes.position) {\n this._position = attributes.position;\n }\n }\n}\n\nexport default DashboardItem;\n","import DashboardItem from \"./DashboardItem\";\nimport * as txml from 'txml';\nimport { ParsedNode } from \"./helpers/nodeParser\";\n\nclass Dashboard {\n _string: string | null = null;\n get string(): string | null {\n return this._string;\n }\n\n _items: DashboardItem[] = [];\n get items(): DashboardItem[] {\n return this._items;\n }\n\n constructor(xml: string) {\n const view = txml.parse(xml).filter((el: ParsedNode) => el.tagName === \"dashboard\")[0];\n this._string = view.attributes.string || null;\n\n const { children } = view;\n\n children.forEach((item: ParsedNode) => {\n if (item.tagName === \"dashboard_item\") {\n this._items.push(new DashboardItem(item.attributes));\n }\n });\n }\n}\n\nexport default Dashboard;\n","import { ParsedNode } from \"../helpers/nodeParser\";\n\nexport type GraphType = \"indicator\" | \"indicatorField\" | \"line\" | \"bar\" | \"pie\";\n\nexport class Graph {\n _string: string | null = null;\n get string(): string | null {\n return this._string;\n }\n\n _type?: GraphType;\n get type(): GraphType | undefined {\n return this._type;\n }\n\n _timerange: string | null = null;\n get timerange(): string | null {\n return this._timerange;\n }\n\n constructor(element: ParsedNode) {\n this._string = element.attributes.string || null;\n this._timerange = element.attributes.timerange || null;\n }\n}\n","type ParsedNode = {\n tagName: string;\n attributes: any;\n children: ParsedNode[];\n};\n\nconst parseBoolAttribute = (attr: any): boolean => {\n if (\n attr === 1 ||\n attr === \"1\" ||\n attr === true ||\n attr === \"True\"\n ) {\n return true\n } else {\n return false\n }\n}\n\n\nexport { ParsedNode, parseBoolAttribute };\n","import { Graph, GraphType } from \"./Graph\";\nimport { parseBoolAttribute, ParsedNode } from \"../helpers/nodeParser\";\nimport { replaceEntities } from \"../helpers/attributeParser\";\n\nexport class GraphIndicator extends Graph {\n _color: string | null = null;\n get color(): string | null {\n return this._color;\n }\n\n _icon: string | null = null;\n get icon(): string | null {\n return this._icon;\n }\n\n _totalDomain: string | null = null;\n get totalDomain(): string | null {\n return this._totalDomain;\n }\n\n _showPercent: boolean = false;\n get showPercent(): boolean {\n return this._showPercent;\n }\n\n _suffix: string | null = null;\n get suffix(): string | null {\n return this._suffix;\n }\n\n constructor(type: GraphType, element: ParsedNode) {\n super(element);\n\n this._type = type;\n this._color = element.attributes.color || null;\n if (this._color) {\n this._color = replaceEntities(this._color);\n }\n this._icon = element.attributes.icon || null;\n if (this._icon) {\n this._icon = replaceEntities(this._icon);\n }\n this._suffix = element.attributes.suffix || null;\n this._totalDomain = replaceEntities(element.attributes.totalDomain) || null;\n this._showPercent = parseBoolAttribute(element.attributes.showPercent);\n }\n}\n","import { Operator } from \".\";\nimport { GraphType } from \"./Graph\";\nimport { GraphIndicator } from \"./GraphIndicator\";\nimport { ParsedNode } from \"../helpers/nodeParser\";\n\nexport class GraphIndicatorField extends GraphIndicator {\n _field: string | undefined;\n get field(): string | undefined {\n return this._field;\n }\n\n _operator: Operator | undefined;\n get operator(): Operator | undefined {\n return this._operator;\n }\n\n constructor(type: GraphType, element: ParsedNode) {\n super(type, element);\n\n const { children } = element;\n children.forEach((item) => {\n if (item.tagName === \"field\") {\n const name = item.attributes.name;\n const operator = item.attributes.operator;\n this._field = name || undefined;\n this._operator = operator as Operator;\n }\n });\n }\n}\n","import { GraphXAxis, GraphYAxis, Operator } from \".\";\nimport { ParsedNode } from \"../helpers/nodeParser\";\n\nexport type XYAxis = {\n x: GraphXAxis;\n y: GraphYAxis[];\n};\n\nexport const parseXYAxis = (nodes: ParsedNode[]): XYAxis => {\n const yAxisElements: GraphYAxis[] = [];\n let xAxis;\n\n nodes.forEach((child) => {\n if (child.tagName === \"field\") {\n const axis = child.attributes.axis;\n const operator = child.attributes.operator;\n const name = child.attributes.name;\n const label = child.attributes.label || undefined;\n const stacked = child.attributes.stacked || undefined;\n\n if (!axis) {\n throw new Error(`Field ${name} doesn't have an axis`);\n }\n\n if (!name) {\n throw new Error(\"Missing name attribute for field\");\n }\n\n if (axis === \"x\") {\n xAxis = new GraphXAxis({\n name,\n });\n } else if (axis === \"y\") {\n yAxisElements.push(\n new GraphYAxis({\n name,\n operator: operator as Operator,\n label,\n stacked,\n })\n );\n }\n }\n });\n\n if (!xAxis) {\n throw new Error(\"No x axis found\");\n }\n\n if (!yAxisElements.length) {\n throw new Error(\"No y axis found. At least we need one y axis\");\n }\n\n return {\n x: xAxis,\n y: yAxisElements,\n };\n};\n","import { GraphXAxis, GraphYAxis } from \".\";\nimport { Graph, GraphType } from \"./Graph\";\nimport { parseXYAxis } from \"./graphHelper\";\nimport { ParsedNode } from \"../helpers/nodeParser\";\n\nexport class GraphChart extends Graph {\n _x: GraphXAxis;\n get x(): GraphXAxis {\n return this._x;\n }\n\n _y: GraphYAxis[];\n get y(): GraphYAxis[] {\n return this._y;\n }\n constructor(type: GraphType, element: ParsedNode) {\n super(element);\n\n this._type = type;\n const xyAxis = parseXYAxis(element.children);\n this._x = xyAxis.x;\n this._y = xyAxis.y;\n }\n}\n","import { GraphIndicator } from \"./GraphIndicator\";\nimport { GraphIndicatorField } from \"./GraphIndicatorField\";\nimport { GraphChart } from \"./GraphChart\";\nimport { ParsedNode } from \"../helpers/nodeParser\";\nimport * as txml from 'txml';\n\nconst GraphTypes: { [key: string]: any } = {\n indicator: GraphIndicator,\n indicatorField: GraphIndicatorField,\n line: GraphChart,\n bar: GraphChart,\n pie: GraphChart,\n};\n\nexport const parseGraph = (xml: string): GraphIndicator | GraphChart => {\n const view = txml.parse(xml).filter((el: ParsedNode) => el.tagName === \"graph\")[0];\n const type = view.attributes.type;\n\n if (!type) {\n throw new Error(`${type} is not a valid graph`);\n }\n\n const graphModel = GraphTypes[type];\n\n if (!graphModel) {\n throw new Error(`${type} not found as a GraphModel`);\n }\n\n return new graphModel(type, view);\n};\n","export type Axis = \"x\" | \"y\";\n\nexport class GraphAxis {\n _name: string;\n get name(): string {\n return this._name;\n }\n\n _axis: Axis;\n get axis(): Axis {\n return this._axis;\n }\n\n constructor({ name, axis }: { name: string; axis: Axis }) {\n this._name = name;\n this._axis = axis;\n }\n}\n","import { GraphAxis } from \".\";\n\nexport type Operator = \"count\" | \"+\" | \"-\" | \"*\" | \"min\" | \"max\" | \"avg\";\n\nexport class GraphYAxis extends GraphAxis {\n _operator: Operator;\n get operator(): Operator {\n return this._operator;\n }\n\n _label: string | undefined;\n get label(): string | undefined {\n return this._label;\n }\n\n _stacked: string | undefined;\n get stacked(): string | undefined {\n return this._stacked;\n }\n\n constructor({\n name,\n operator,\n label,\n stacked,\n }: {\n name: string;\n operator: Operator;\n label?: string;\n stacked?: string;\n }) {\n super({ name, axis: \"y\" });\n this._operator = operator!;\n this._label = label;\n this._stacked = stacked;\n }\n}\n","import { GraphAxis } from \".\";\n\nexport class GraphXAxis extends GraphAxis {\n constructor({ name }: { name: string }) {\n super({ name, axis: \"x\" });\n }\n}\n","import { GraphChart } from \"../GraphChart\";\n\nexport const getFieldsToRetrieve = ({ ooui }: { ooui: GraphChart }) => {\n const xField: string = ooui.x.name;\n const fields = [xField];\n\n if (!ooui.y) {\n return [];\n }\n\n ooui.y.forEach((y) => {\n if (y.operator !== \"count\" && !fields.includes(y.name)) {\n fields.push(y.name);\n }\n\n if (y.label && !fields.includes(y.label)) {\n fields.push(y.label);\n }\n });\n\n return fields;\n};\n\nexport function getValueAndLabelForField({\n fields,\n values,\n fieldName,\n}: {\n fields: { [key: string]: any };\n values: { [key: string]: any };\n fieldName: string;\n}) {\n const xFieldData = fields[fieldName];\n const value = values[fieldName];\n\n if (!xFieldData) {\n throw new Error(`Field ${fieldName} not found`);\n }\n\n if (xFieldData.type === \"many2one\") {\n if (!value) {\n return { value: false, label: undefined };\n }\n return { value: value[0], label: value[1] };\n } else if (xFieldData.type === \"selection\") {\n const selectionValues: [number, string][] = xFieldData.selection;\n\n const valuePair = selectionValues.find((selectionPair) => {\n return selectionPair[0] === value;\n });\n\n if (!valuePair) {\n return { value: false, label: undefined };\n }\n\n return { value, label: valuePair[1] };\n }\n\n return { value, label: value };\n}\n","import moment from \"moment\";\nimport { getValueForOperator } from \"./graphProcessor\";\n\nexport function processTimerangeData({\n values,\n timerange,\n}: {\n values: any[];\n timerange: string;\n}) {\n const combinedValues = combineValuesForTimerange({\n values,\n timerange,\n });\n\n // Fill the gaps\n const filledValues = fillGapsInTimerangeData({\n values: combinedValues,\n timerange,\n });\n\n return filledValues;\n}\n\nexport function fillGapsInTimerangeData({\n values,\n timerange,\n}: {\n values: any[];\n timerange: string;\n}) {\n let finalValues: any[] = [];\n const uniqueValues: { [key: string]: any } = getUniqueValuesGroupedBy({\n values,\n groupBy: \"type-stacked\",\n });\n const units = `${timerange}s` as any;\n\n Object.keys(uniqueValues).forEach((key) => {\n const valuesForKey = uniqueValues[key];\n\n for (let i = 0; i < valuesForKey.length; i++) {\n const value = valuesForKey[i];\n\n finalValues.push(value);\n\n // If it's the last item\n if (i === valuesForKey.length - 1) {\n return;\n }\n\n const date = value.x;\n const nextDate = valuesForKey[i + 1].x;\n\n if (!checkDatesConsecutive([date, nextDate], units)) {\n const missingDates = getMissingConsecutiveDates({\n dates: [date, nextDate],\n timerange,\n });\n finalValues = finalValues.concat(\n missingDates.map((stringDate) => {\n return {\n x: stringDate,\n value: 0,\n type: value.type,\n stacked: value.stacked,\n };\n })\n );\n }\n }\n });\n\n const sortedData = finalValues.sort((a, b) => {\n if (a[\"x\"] < b[\"x\"]) {\n return -1;\n }\n if (a[\"x\"] > b[\"x\"]) {\n return 1;\n }\n return 0;\n });\n return sortedData;\n}\n\nexport function getMissingConsecutiveDates({\n dates,\n timerange,\n}: {\n dates: string[];\n timerange: string;\n}) {\n const missingDates: string[] = [];\n const units = `${timerange}s` as any;\n if (dates.length === 1) {\n return dates;\n }\n\n const sortedDates = dates.sort((a, b) => {\n if (a < b) {\n return -1;\n }\n if (a > b) {\n return 1;\n }\n return 0;\n });\n\n for (let i = 0; i < sortedDates.length - 1; i++) {\n const date1 = sortedDates[i];\n const date2 = sortedDates[i + 1];\n\n if (!checkDatesConsecutive([date1, date2], units)) {\n let iDate = moment(date1, getFormatForUnits(units)).add(1, units);\n let fDate = moment(date2, getFormatForUnits(units));\n\n while (iDate.isBefore(fDate)) {\n missingDates.push(iDate.format(getFormatForUnits(units)));\n iDate.add(1, units);\n }\n }\n }\n\n return missingDates;\n}\n\nexport function combineValuesForTimerange({\n values,\n timerange,\n}: {\n values: any[];\n timerange: string;\n}) {\n const adjustedValues = adjustXValuesForTimeRage({\n values,\n timerange,\n });\n let finalValues: any[] = [];\n // group by x, type and stacked\n const uniqueValues: { [key: string]: any } = getUniqueValuesGroupedBy({\n values: adjustedValues,\n groupBy: \"all\",\n });\n\n Object.keys(uniqueValues).forEach((key) => {\n const valuesForKey = uniqueValues[key];\n const operator =\n valuesForKey[0].operator === \"count\" ? \"+\" : valuesForKey[0].operator;\n\n const finalValue = getValueForOperator({\n values: valuesForKey.map((entry: any) => entry.value),\n operator,\n });\n\n finalValues.push({\n ...valuesForKey[0],\n value: finalValue,\n });\n });\n\n return finalValues;\n}\n\nexport function adjustXValuesForTimeRage({\n values,\n timerange,\n}: {\n values: any[];\n timerange: string;\n}) {\n return values.map((value) => {\n return {\n ...value,\n x: convertDateToTimeRangeAdjusted({\n date: value.x,\n timerange: timerange,\n }),\n };\n });\n}\n\nexport function convertDateToTimeRangeAdjusted({\n date,\n timerange,\n}: {\n date: string;\n timerange: string;\n}) {\n let format = getDateFormat(date);\n const momentDate = moment(date, format);\n switch (timerange) {\n case \"hour\": {\n format = \"YYYY-MM-DD HH:00\";\n break;\n }\n case \"day\": {\n format = \"YYYY-MM-DD\";\n break;\n }\n case \"week\": {\n format = \"YYYY-WW\";\n break;\n }\n case \"month\": {\n format = \"YYYY-MM\";\n break;\n }\n case \"year\": {\n format = \"YYYY\";\n break;\n }\n }\n return momentDate.format(format);\n}\n\nexport function getDateFormat(date: string) {\n return date.indexOf(\":\") ? \"YYYY-MM-DD HH:mm:ss\" : \"YYYY-MM-DD\";\n}\n\nexport function checkDatesConsecutive(\n dates: string[],\n unit: \"hours\" | \"days\" | \"weeks\" | \"months\" | \"years\"\n) {\n let consecutive = false;\n const format = getFormatForUnits(unit);\n\n if (dates.length === 0) {\n return false;\n }\n\n if (dates.length === 1) {\n return true;\n }\n\n for (let i = 0; i < dates.length - 1; i++) {\n const date1 = moment(dates[i], format);\n const date2 = moment(dates[i + 1], format);\n const diff = date2.diff(date1, unit);\n\n if (Math.abs(diff) === 1) {\n consecutive = true;\n } else {\n consecutive = false;\n }\n }\n return consecutive;\n}\n\nexport function getUniqueValuesGroupedBy({\n values,\n groupBy,\n}: {\n values: any[];\n groupBy: \"all\" | \"type-stacked\";\n}) {\n const uniqueValues: { [key: string]: any } = {};\n values.forEach((value) => {\n const x = value.x;\n const type = value.type;\n const stacked = value.stacked;\n const uniqueKey =\n groupBy === \"all\" ? `${x}-${type}-${stacked}` : `${type}-${stacked}`;\n if (!uniqueValues[uniqueKey]) {\n uniqueValues[uniqueKey] = [];\n }\n uniqueValues[uniqueKey].push(value);\n });\n return uniqueValues;\n}\n\nexport function getFormatForUnits(units: string) {\n switch (units) {\n default:\n case \"hours\": {\n return \"YYYY-MM-DD HH:mm\";\n }\n case \"days\": {\n return \"YYYY-MM-DD\";\n }\n case \"weeks\": {\n return \"YYYY-WW\";\n }\n case \"months\": {\n return \"YYYY-MM\";\n }\n case \"years\": {\n return \"YYYY\";\n }\n }\n}\n","import { GraphChart, GraphYAxis, Operator } from \"..\";\nimport { getValueAndLabelForField } from \"./fieldUtils\";\nimport { processTimerangeData } from \"./timerangeHelper\";\n\nexport type GroupedValues = {\n [key: string]: { label: string; entries: { [key: string]: any }[] };\n};\n\nexport const labelsForOperator = {\n count: \"count\",\n \"+\": \"sum\",\n \"-\": \"subtract\",\n \"*\": \"multiply\",\n avg: \"average\",\n min: \"min\",\n max: \"max\",\n};\n\nexport type ProcessGraphDataOpts = {\n uninformedString: string;\n};\n\nexport const processGraphData = ({\n ooui,\n values,\n fields,\n options,\n}: {\n ooui: GraphChart;\n values: { [key: string]: any }[];\n fields: { [key: string]: any };\n options?: ProcessGraphDataOpts;\n}) => {\n // First we group all the results by the x field. This way we will have one or more items in an array for every occurrence of ooui.x.name\n // Result of this will be an object which keys will be unique keys for values of ooui.x.name for each item\n const valuesGroupedByX = getValuesGroupedByField({\n fieldName: ooui.x.name,\n values,\n fields,\n });\n\n const data: { [key: string]: any }[] = [];\n\n // We iterate through the y axis items found in the ooui object\n ooui.y.forEach((yField) => {\n // We iterate now for every single key of the grouped results by x\n Object.keys(valuesGroupedByX).forEach((xValue) => {\n const xLabel = valuesGroupedByX[xValue].label;\n const objectsForXValue = valuesGroupedByX[xValue].entries;\n\n // If the y field hasn't got label defined\n if (!yField.label) {\n // We calculate the final value using the entries of this unique x key\n const valuesForYField = getValuesForYField({\n entries: objectsForXValue,\n fields,\n fieldName: yField.name,\n });\n\n const finalValue = getValueForOperator({\n values: valuesForYField,\n operator: yField.operator,\n });\n\n data.push({\n x: xLabel || false,\n value: finalValue,\n type: getYAxisFieldname({\n yAxis: yField,\n fields,\n }),\n operator: yField.operator,\n stacked: yField.stacked,\n });\n }\n // The field has label\n else {\n // We retrieve an object with unique keys and grouped values for the label\n const valuesGroupedByYLabel = getValuesGroupedByField({\n fieldName: yField.label,\n values: objectsForXValue,\n fields,\n });\n\n // For every key of the grouped results by label\n Object.keys(valuesGroupedByYLabel).forEach((yUniqueValue) => {\n const entries = valuesGroupedByYLabel[yUniqueValue].entries;\n const label = valuesGroupedByYLabel[yUniqueValue].label;\n\n // We calculate the final value using the entries of this unique x key\n const valuesForYField = getValuesForYField({\n entries,\n fields,\n fieldName: yField.name,\n });\n\n const finalValue = getValueForOperator({\n values: valuesForYField,\n operator: yField.operator,\n });\n data.push({\n x: xLabel || false,\n value: finalValue,\n type: label,\n operator: yField.operator,\n stacked: yField.stacked,\n });\n });\n }\n });\n });\n\n // Check if we have to flag isGroup\n const isGroup = ooui.y.some((y) => y.label !== undefined);\n\n // Check if we have to flag isStacked\n const isStack = ooui.y.some((entry) => entry.stacked !== undefined);\n\n // We sort the data by x\n const sortedData = data.sort((a, b) => {\n if (a[\"x\"] < b[\"x\"]) {\n return -1;\n }\n if (a[\"x\"] > b[\"x\"]) {\n return 1;\n }\n return 0;\n });\n\n let adjustedStackedData = [...sortedData];\n // If it's an stacked graph and we have more than one group stacked, we have to change the type description in order to add\n // the stacked group\n if (\n isStack &&\n ooui.y.filter((entry) => entry.stacked !== undefined).length > 1\n ) {\n adjustedStackedData = adjustedStackedData.map((entry) => {\n return { ...entry, type: `${entry.type} - ${entry.stacked}` };\n });\n }\n\n let adjustedUninformedData = [...adjustedStackedData];\n // If the type of the graph is pie, we have to check for \"false\" (uninformed) computes values\n // in order to adjust the description to a localized string for \"Unassigned / not introduced\"\n // Else, we have to ignore those entries\n if (\n ooui.type === \"pie\" &&\n adjustedUninformedData.some((entry) => entry.x === false)\n ) {\n adjustedUninformedData = adjustedUninformedData.map((entry) => {\n if (entry.x === false) {\n return { ...entry, x: options?.uninformedString || \"Not informed\" };\n }\n return entry;\n });\n } else if (adjustedStackedData.some((entry) => entry.x === false)) {\n adjustedUninformedData = adjustedUninformedData.filter(\n (entry) => entry.x !== false\n );\n }\n\n // If we have a timerange parameter defined in ooui, we must fill the gaps with the desired units and group results too\n let finalData = adjustedUninformedData;\n\n if (ooui.timerange) {\n finalData = processTimerangeData({\n values: finalData,\n timerange: ooui.timerange!,\n });\n } else if (ooui.type == \"pie\") {\n finalData = adjustedUninformedData.sort((a, b) => b.value - a.value);\n }\n\n return {\n data: finalData,\n isGroup: isStack || isGroup,\n isStack,\n };\n};\n\nexport function getValuesForYField({\n entries,\n fieldName,\n fields,\n}: {\n entries: { [key: string]: any }[];\n fieldName: string;\n fields: { [key: string]: any };\n}) {\n return entries\n .map((obj) => {\n return getValueAndLabelForField({\n fieldName: fieldName,\n values: obj,\n fields: fields,\n });\n })\n .map(({ value, label }) => {\n return label;\n });\n}\n\nexport function getValueForOperator({\n operator,\n values,\n}: {\n operator: Operator;\n values: any[];\n}) {\n switch (operator) {\n case \"count\": {\n return values.length;\n }\n case \"+\": {\n return roundNumber(\n values.reduce(function (previousValue: any, currentValue: any) {\n return previousValue + currentValue;\n })\n );\n }\n case \"-\": {\n return roundNumber(\n values.reduce(function (previousValue: any, currentValue: any) {\n return previousValue - currentValue;\n })\n );\n }\n case \"*\": {\n return roundNumber(\n values.reduce(function (previousValue: any, currentValue: any) {\n return previousValue * currentValue;\n })\n );\n }\n case \"avg\": {\n const sum = values.reduce((a: any, b: any) => a + b, 0);\n const avg = sum / values.length || 0;\n return roundNumber(avg);\n }\n case \"min\": {\n return Math.min(...values);\n }\n case \"max\": {\n return Math.max(...values);\n }\n }\n}\n\nfunction roundNumber(num: number) {\n return Math.round((num + Number.EPSILON) * 100) / 100;\n}\n\nexport function getValuesGroupedByField({\n fieldName,\n fields,\n values,\n}: {\n fieldName: string;\n values: { [key: string]: any }[];\n fields: { [key: string]: any };\n}) {\n const groupedValues: GroupedValues = {};\n\n values.forEach((entry) => {\n const { value, label } = getValueAndLabelForField({\n fields,\n values: entry,\n fieldName,\n });\n\n if (!groupedValues[value]) {\n groupedValues[value] = { label, entries: [] };\n }\n\n groupedValues[value].entries.push(entry);\n });\n\n return groupedValues;\n}\n\nexport function getAllObjectsInGroupedValues(grouped: GroupedValues) {\n let totalObjects: any[] = [];\n Object.keys(grouped).forEach((key) => {\n const group = grouped[key];\n totalObjects = totalObjects.concat(group.entries);\n });\n return totalObjects;\n}\n\nexport function getYAxisFieldname({\n yAxis,\n fields,\n}: {\n yAxis: GraphYAxis;\n fields: { [key: string]: any };\n}) {\n const fieldProps = fields[yAxis.name];\n\n if (fieldProps && fieldProps.string) {\n // return `${fieldProps.string} (${labelsForOperator[yAxis.operator]})`;\n return fieldProps.string;\n }\n\n // return yAxis.name + \"_\" + labelsForOperator[yAxis.operator];\n return yAxis.name;\n}\n"],"names":["_Widget","props","value","Widget","isTrue","evaluateCondition","entry","values","fields","fieldName","operator","expectedValue","filteredExpectedValue","replaceEntities","string","decode","parseAttributes","attrs","widgetType","replaceFalse","replaceTags","parsedObject","newAttributes","attrField","attrIsTrue","i","evaluateAttributes","tagAttributes","newTagAttributes","Field","id","Avatar","NewLine","Label","Container","columns","colspan","readOnly","key","span","el","prev","current","widget","options","widgetsToAdd","addLabel","label","accumulator","currentWidget","row","item","_ContainerWidget","ContainerWidget","_Notebook","Notebook","Page","Group","Button","primary","danger","ButtonGroup","btn","button","_a","b","Char","Text","Selection","Many2one","Markdown","Boolean","Integer","Float","integers","decimals","FloatTime","ProgressBar","Date","DateTime","Many2many","One2many","Separator","Reference","Binary","Image","FiberGrid","Timeline","Indicator","MultiCheckbox","Tags","Tag","Radio","Switch","Steps","CodeEditor","Time","WidgetFactory","type","finalType","evaluateStates","fieldStatesConfig","newTagStateAttrs","evaluatedStates","stateCondition","configAttrValues","entryConfig","attribute","evaluatedState","evaluateButtonStates","states","splittedStates","getValueForField","fieldType","parseContext","context","isObject","parsedContextInJson","tryParseJSON","replaceTrue","valuesSplitted","parsedContext","valueForField","parseContextFields","str","variable","parseOnChange","onChangeString","splitted","method","argsSplitted","arg","parse","S","pos","keepComments","keepWhitespace","openBracket","openBracketCC","closeBracket","closeBracketCC","minusCC","slashCC","exclamationCC","singleQuoteCC","doubleQuoteCC","openCornerBracketCC","closeCornerBracketCC","parseChildren","tagName","children","closeStart","closeTag","parsedText","startCommentPos","cdataEndIndex","startDoctype","encapsuled","node","parseNode","text","parseText","trimmed","start","nameSpacer","parseName","NoChildNodes","attributes","c","name","code","parseString","startChar","startpos","findElements","r","out","filter","simplify","child","kids","f","dept","path","global$1","defaultSetTimout","defaultClearTimeout","cachedSetTimeout","cachedClearTimeout","global","runTimeout","fun","runClearTimeout","marker","queue","draining","currentQueue","queueIndex","cleanUpNextTick","drainQueue","timeout","len","nextTick","args","Item","array","title","platform","browser","env","argv","version","versions","release","config","noop","on","addListener","once","off","removeListener","removeAllListeners","emit","binding","cwd","chdir","dir","umask","performance","performanceNow","hrtime","previousTimestamp","clocktime","seconds","nanoseconds","startTime","uptime","currentTime","dif","browser$1","__viteBrowserExternal","streamBrowser","require$$0","lookup","revLookup","Arr","inited","init","toByteArray","b64","j","l","tmp","placeHolders","arr","L","tripletToBase64","num","encodeChunk","uint8","end","output","fromByteArray","extraBytes","parts","maxChunkLength","len2","read","buffer","offset","isLE","mLen","nBytes","e","m","eLen","eMax","eBias","nBits","d","s","write","rt","toString","isArray","INSPECT_MAX_BYTES","Buffer","_kMaxLength","kMaxLength","createBuffer","that","length","encodingOrOffset","allocUnsafe","from","fromArrayBuffer","fromString","fromObject","assertSize","size","alloc","fill","encoding","checked","byteLength","actual","fromArrayLike","byteOffset","obj","internalIsBuffer","isnan","SlowBuffer","isBuffer","a","x","y","list","buf","loweredCase","utf8ToBytes","base64ToBytes","slowToString","hexSlice","utf8Slice","asciiSlice","latin1Slice","base64Slice","utf16leSlice","swap","n","max","target","thisStart","thisEnd","thisCopy","targetCopy","bidirectionalIndexOf","val","arrayIndexOf","indexSize","arrLength","valLength","foundIndex","found","hexWrite","remaining","strLen","parsed","utf8Write","blitBuffer","asciiWrite","asciiToBytes","latin1Write","base64Write","ucs2Write","utf16leToBytes","res","firstByte","codePoint","bytesPerSequence","secondByte","thirdByte","fourthByte","tempCodePoint","decodeCodePointsArray","MAX_ARGUMENTS_LENGTH","codePoints","ret","toHex","bytes","newBuf","sliceLen","checkOffset","ext","noAssert","mul","checkInt","min","maxBytes","objectWriteUInt16","littleEndian","objectWriteUInt32","limit","sub","checkIEEE754","writeFloat","writeDouble","targetStart","INVALID_BASE64_RE","base64clean","stringtrim","units","leadSurrogate","byteArray","hi","lo","src","dst","isFastBuffer","isSlowBuffer","inherits","ctor","superCtor","TempCtor","inherits$2","formatRegExp","format","isString","objects","inspect","isNull","deprecate","fn","msg","isUndefined","process","warned","deprecated","debugs","debugEnviron","debuglog","set","pid","opts","ctx","stylizeNoColor","isBoolean","_extend","stylizeWithColor","formatValue","styleType","style","arrayToHash","hash","idx","recurseTimes","isFunction","primitive","formatPrimitive","keys","visibleKeys","isError","formatError","isRegExp","isDate","base","braces","formatArray","formatProperty","reduceToSingleString","simple","isNumber","hasOwnProperty","desc","line","cur","ar","isNullOrUndefined","isSymbol","re","objectToString","isPrimitive","maybeBuf","o","pad","months","timestamp","time","log","origin","add","prop","util","ownKeys","object","enumerableOnly","symbols","sym","_objectSpread","source","_defineProperty","_classCallCheck","instance","Constructor","_defineProperties","descriptor","_createClass","protoProps","staticProps","_require","_require2","require$$1","custom","copyBuffer","buffer_list","BufferList","v","p","hasStrings","nb","_","destroy","err","cb","_this","readableDestroyed","writableDestroyed","emitErrorNT","emitCloseNT","emitErrorAndCloseNT","self","undestroy","errorOrDestroy","stream","rState","wState","destroy_1","_inheritsLoose","subClass","superClass","codes","createErrorType","message","Base","getMessage","arg1","arg2","arg3","NodeError","_Base","oneOf","expected","thing","startsWith","search","endsWith","this_len","includes","determiner","errorsBrowser","ERR_INVALID_OPT_VALUE","highWaterMarkFrom","isDuplex","duplexKey","getHighWaterMark","state","hwm","inherits_browserModule","_stream_writable","Writable","CorkedRequest","onCorkedFinish","Duplex","WritableState","internalUtil","Stream","require$$2","OurUint8Array","_uint8ArrayToBuffer","chunk","_isUint8Array","destroyImpl","require$$3","require$$4","_require$codes","require$$5","ERR_INVALID_ARG_TYPE","ERR_METHOD_NOT_IMPLEMENTED","ERR_MULTIPLE_CALLBACK","ERR_STREAM_CANNOT_PIPE","ERR_STREAM_DESTROYED","ERR_STREAM_NULL_VALUES","ERR_STREAM_WRITE_AFTER_END","ERR_UNKNOWN_ENCODING","require$$6","nop","require$$7","noDecode","er","onwrite","realHasInstance","writeAfterEnd","validChunk","isBuf","writeOrBuffer","clearBuffer","decodeChunk","newChunk","last","doWrite","writev","onwriteError","sync","finishMaybe","onwriteStateUpdate","finished","needFinish","afterWrite","onwriteDrain","holder","count","allBuffers","endWritable","callFinal","prefinish","need","corkReq","objectKeys","_stream_duplex","Readable","onend","onEndNT","copyProps","module","exports","SafeBuffer","isEncoding","_normalizeEncoding","enc","retried","normalizeEncoding","nenc","string_decoder","StringDecoder","utf16Text","utf16End","utf8FillLast","base64Text","base64End","simpleWrite","simpleEnd","utf8End","utf8Text","utf8CheckByte","byte","utf8CheckIncomplete","utf8CheckExtraBytes","total","ERR_STREAM_PREMATURE_CLOSE","callback","called","_len","_key","isRequest","eos","readable","writable","onlegacyfinish","onfinish","writableEnded","readableEnded","onerror","onclose","onrequest","endOfStream","_Object$setPrototypeO","kLastResolve","kLastReject","kError","kEnded","kLastPromise","kHandlePromise","kStream","createIterResult","done","readAndResolve","iter","resolve","data","onReadable","wrapForNext","lastPromise","reject","AsyncIteratorPrototype","ReadableStreamAsyncIteratorPrototype","error","promise","_this2","createReadableStreamAsyncIterator","_Object$create","iterator","async_iterator","fromBrowser","_stream_readable","ReadableState","EElistenerCount","emitter","debugUtil","debug","ERR_STREAM_PUSH_AFTER_EOF","ERR_STREAM_UNSHIFT_AFTER_END_EVENT","require$$8","kProxyEvents","prependListener","event","require$$9","require$$10","skipChunkCheck","readableAddChunk","addToFront","onEofChunk","chunkInvalid","addChunk","maybeReadMore","emitReadable","decoder","content","MAX_HWM","computeNewHighWaterMark","howMuchToRead","nOrig","endReadable","doRead","fromList","emitReadable_","flow","maybeReadMore_","dest","pipeOpts","doEnd","endFn","unpipe","onunpipe","unpipeInfo","cleanup","ondrain","pipeOnDrain","cleanedUp","ondata","indexOf","dests","index","ev","nReadingNextTick","updateReadableListening","resume","resume_","paused","require$$11","endReadableNT","iterable","require$$12","xs","_stream_transform","Transform","ERR_TRANSFORM_ALREADY_TRANSFORMING","ERR_TRANSFORM_WITH_LENGTH_0","afterTransform","ts","rs","err2","_stream_passthrough","PassThrough","ERR_MISSING_ARGS","destroyer","reading","writing","closed","destroyed","call","pipe","to","popCallback","streams","pipeline","destroys","pipeline_1","DestroyableTransform","through2","construct","transform","flush","through2Module","t2","through2_1","Through2","override","Form","xml","view","txml.parse","container","widgetFactory","field","_b","evaluatedTagAttributes","evaluatedStateAttributes","widgetContext","domain","checkIfDomainHasValue","widgetProps","Tree","mergedAttrs","fieldDef","SearchFieldTypes","SearchFilter","searchFields","searchField","fieldAttributes","transformDomainForChildWidget","widgetFieldName","transformedDomain","domainEntry","rootFieldName","targetFieldName","parseDomainFields","DashboardItem","Dashboard","Graph","element","parseBoolAttribute","attr","GraphIndicator","GraphIndicatorField","parseXYAxis","nodes","yAxisElements","xAxis","axis","stacked","GraphXAxis","GraphYAxis","GraphChart","xyAxis","GraphTypes","parseGraph","graphModel","GraphAxis","getFieldsToRetrieve","ooui","getValueAndLabelForField","xFieldData","valuePair","selectionPair","processTimerangeData","timerange","combinedValues","combineValuesForTimerange","fillGapsInTimerangeData","finalValues","uniqueValues","getUniqueValuesGroupedBy","valuesForKey","date","nextDate","checkDatesConsecutive","missingDates","getMissingConsecutiveDates","stringDate","dates","sortedDates","date1","date2","iDate","moment","getFormatForUnits","fDate","adjustedValues","adjustXValuesForTimeRage","finalValue","getValueForOperator","convertDateToTimeRangeAdjusted","getDateFormat","momentDate","unit","consecutive","diff","groupBy","uniqueKey","labelsForOperator","processGraphData","valuesGroupedByX","getValuesGroupedByField","yField","xValue","xLabel","objectsForXValue","valuesGroupedByYLabel","yUniqueValue","entries","valuesForYField","getValuesForYField","getYAxisFieldname","isGroup","isStack","adjustedStackedData","adjustedUninformedData","finalData","roundNumber","previousValue","currentValue","avg","groupedValues","getAllObjectsInGroupedValues","grouped","totalObjects","group","yAxis","fieldProps"],"mappings":"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"}
1
+ {"version":3,"file":"ooui.es.js","sources":["../src/Widget.ts","../src/helpers/attributeParser.ts","../src/Field.ts","../src/Avatar.ts","../src/NewLine.ts","../src/Label.ts","../src/Container.ts","../src/ContainerWidget.ts","../src/Notebook.ts","../src/Page.ts","../src/Group.ts","../src/Button.ts","../src/ButtonGroup.ts","../src/Char.ts","../src/Text.ts","../src/Selection.ts","../src/Many2one.ts","../src/Markdown.ts","../src/Boolean.ts","../src/Integer.ts","../src/Float.ts","../src/FloatTime.ts","../src/ProgressBar.ts","../src/Date.ts","../src/DateTime.ts","../src/Many2many.ts","../src/One2many.ts","../src/Separator.ts","../src/Reference.ts","../src/Binary.ts","../src/Image.ts","../src/FiberGrid.ts","../src/Timeline.ts","../src/Indicator.ts","../src/MultiCheckbox.ts","../src/Tags.ts","../src/Tag.ts","../src/Radio.ts","../src/Switch.ts","../src/Steps.ts","../src/CodeEditor.ts","../src/Time.ts","../src/WidgetFactory.ts","../src/helpers/stateParser.ts","../src/helpers/fieldParser.ts","../src/helpers/contextParser.ts","../src/helpers/onChangeParser.ts","../node_modules/txml/dist/txml.mjs","../node_modules/rollup-plugin-node-polyfills/polyfills/global.js","../node_modules/rollup-plugin-node-polyfills/polyfills/process-es6.js","../__vite-browser-external","../node_modules/readable-stream/lib/internal/streams/stream-browser.js","../node_modules/rollup-plugin-node-polyfills/polyfills/buffer-es6.js","../node_modules/rollup-plugin-node-polyfills/polyfills/inherits.js","../node_modules/rollup-plugin-node-polyfills/polyfills/util.js","../node_modules/readable-stream/lib/internal/streams/buffer_list.js","../node_modules/readable-stream/lib/internal/streams/destroy.js","../node_modules/readable-stream/errors-browser.js","../node_modules/readable-stream/lib/internal/streams/state.js","../node_modules/inherits/inherits_browser.js","../node_modules/util-deprecate/browser.js","../node_modules/readable-stream/lib/_stream_writable.js","../node_modules/readable-stream/lib/_stream_duplex.js","../node_modules/safe-buffer/index.js","../node_modules/string_decoder/lib/string_decoder.js","../node_modules/readable-stream/lib/internal/streams/end-of-stream.js","../node_modules/readable-stream/lib/internal/streams/async_iterator.js","../node_modules/readable-stream/lib/internal/streams/from-browser.js","../node_modules/readable-stream/lib/_stream_readable.js","../node_modules/readable-stream/lib/_stream_transform.js","../node_modules/readable-stream/lib/_stream_passthrough.js","../node_modules/readable-stream/lib/internal/streams/pipeline.js","../node_modules/readable-stream/readable-browser.js","../node_modules/through2/through2.js","../src/Form.ts","../src/Tree.ts","../src/SearchFilter.ts","../src/helpers/domainParser.ts","../src/DashboardItem.ts","../src/Dashboard.ts","../src/Graph/Graph.ts","../src/helpers/nodeParser.ts","../src/Graph/GraphIndicator.ts","../src/Graph/GraphIndicatorField.ts","../src/Graph/graphHelper.ts","../src/Graph/GraphChart.ts","../src/Graph/GraphFactory.ts","../src/Graph/GraphAxis.ts","../src/Graph/GraphYAxis.ts","../src/Graph/GraphXAxis.ts","../src/Graph/processor/fieldUtils.ts","../src/Graph/processor/timerangeHelper.ts","../src/Graph/processor/graphProcessor.ts"],"sourcesContent":["abstract class Widget {\n /**\n * Default colspan\n */\n static _defaultColspan: number = 1;\n static get defaultColspan() {\n return Widget._defaultColspan;\n }\n static set defaultColspan(value) {\n Widget._defaultColspan = value;\n }\n\n /**\n * Determines if widget is read only (default is undefined)\n */\n _readOnly: boolean | undefined;\n get readOnly(): boolean | undefined {\n return this._readOnly;\n }\n set readOnly(value: boolean | undefined) {\n this._readOnly = value;\n }\n\n /**\n * Column span (default is 1)\n */\n _colspan: number;\n get colspan(): number {\n return this._colspan;\n }\n set colspan(value: number) {\n this._colspan = +value;\n }\n\n /**\n * Invisible fields (default is false)\n */\n _invisible: boolean;\n get invisible(): boolean {\n return this._invisible;\n }\n set invisible(value: boolean) {\n this._invisible = value;\n }\n\n /**\n * Widget type\n */\n _type: string = \"\";\n get type(): string {\n return this._type;\n }\n set type(value: string) {\n this._type = value;\n }\n\n /**\n * Context\n */\n _context: any;\n get context(): any {\n return this._context;\n }\n set context(value: any) {\n this._context = value;\n }\n\n /**\n * Domain\n */\n _domain?: string;\n get domain(): string | undefined {\n return this._domain;\n }\n set domain(value: string | undefined) {\n this._domain = value;\n }\n\n /**\n * Unique key for widget\n */\n _key?: string;\n get key(): string | undefined {\n return this._key;\n }\n set key(value: string | undefined) {\n this._key = value;\n }\n\n _parsedWidgetProps: any = {};\n get parsedWidgetProps(): any {\n return this._parsedWidgetProps;\n }\n set parsedWidgetProps(value: any) {\n this._parsedWidgetProps = value;\n }\n\n constructor(props?: any) {\n this._colspan = Widget._defaultColspan;\n this._invisible = false;\n\n if (props) {\n if (props.colspan) {\n this._colspan = +props.colspan;\n }\n if (props.readonly !== undefined) {\n if (\n props.readonly === \"1\" ||\n props.readonly === 1 ||\n props.readonly === true\n ) {\n this._readOnly = true;\n } else if (\n props.readonly === \"0\" ||\n props.readonly === 0 ||\n props.readonly === false\n ) {\n this._readOnly = false;\n }\n }\n if (props.invisible) {\n if (\n props.invisible === 1 ||\n props.invisible === \"1\" ||\n props.invisible === true\n ) {\n this._invisible = true;\n }\n }\n if (props.type) {\n this._type = props.type;\n }\n if (props.context) {\n this._context = props.context;\n }\n if (props.domain) {\n if (typeof props.domain !== \"string\") {\n this._domain = JSON.stringify(props.domain);\n } else {\n this._domain = props.domain;\n }\n }\n if (props.widget_props) {\n try {\n this._parsedWidgetProps = JSON.parse(\n props.widget_props.replace(/'/g, '\"')\n );\n } catch (err) {\n throw new Error(\"Error parsing widget_props\");\n }\n }\n if (props.key) {\n this._key = props.key;\n }\n }\n }\n\n abstract findById(id: string): Widget | null;\n}\n\nexport default Widget;\n","import { decode } from \"html-entities\";\n\nexport const isTrue = (value: string | boolean | number = false) => {\n value = JSON.parse(value.toString().toLowerCase())\n return (+ value > 0)\n}\n\nconst evaluateCondition = ({\n entry,\n values,\n fields,\n}: {\n entry: Array<any>;\n values: any;\n fields: any;\n}) => {\n const [fieldName, operator, expectedValue] = entry;\n\n if (fields[fieldName] === undefined) {\n return false;\n }\n\n if (\n values[fieldName] === undefined &&\n fields[fieldName].type !== \"boolean\" &&\n fields[fieldName].type !== \"many2one\" &&\n fields[fieldName].type !== \"selection\"\n ) {\n return false;\n }\n\n let filteredExpectedValue = expectedValue;\n\n let value =\n fields[fieldName].type === \"boolean\"\n ? !!values[fieldName]\n : values[fieldName];\n\n if (\n fields[fieldName].type === \"many2one\" &&\n expectedValue === false &&\n values[fieldName] === undefined\n ) {\n filteredExpectedValue = undefined;\n } else {\n value = value === undefined ? false : value;\n value = value === null ? false : value;\n }\n\n if (\n fields[fieldName].type === \"many2one\" &&\n Array.isArray(value) &&\n value[0] === undefined\n ) {\n value = false;\n }\n\n if (\n fields[fieldName].type === \"boolean\" &&\n (expectedValue === 0 || expectedValue === 1)\n ) {\n filteredExpectedValue = expectedValue === 0 ? false : true;\n }\n\n switch (operator.toLowerCase()) {\n case \"=\":\n case \"==\":\n return value == filteredExpectedValue;\n case \"<>\":\n case \"!=\":\n return value != filteredExpectedValue;\n case \">\":\n return value > filteredExpectedValue;\n case \">=\":\n return value >= filteredExpectedValue;\n case \"<\":\n return value < filteredExpectedValue;\n case \"<=\":\n return value <= filteredExpectedValue;\n case \"in\":\n return filteredExpectedValue.includes(value);\n case \"not in\":\n return !filteredExpectedValue.includes(value);\n default:\n return false;\n }\n};\n\nconst replaceEntities = (string: string): string => {\n return decode(string, { level: \"xml\" });\n};\n\nconst parseAttributes = ({\n attrs,\n values,\n fields,\n widgetType,\n}: {\n attrs: string;\n values: any;\n fields: any;\n widgetType?: string;\n}) => {\n const leftP = attrs.replace(/\\(/g, \"[\");\n const rightP = leftP.replace(/\\)/g, \"]\");\n const clearQuotes = rightP.replace(/\\'/g, '\"');\n const replaceTrue = clearQuotes.replace(/True/g, \"true\");\n const replaceFalse = replaceTrue.replace(/False/g, \"false\");\n const replaceTags = replaceEntities(replaceFalse);\n const parsedObject = JSON.parse(replaceTags);\n const newAttributes: any = {};\n\n for (const attrField of Object.keys(parsedObject)) {\n const entries = parsedObject[attrField];\n const evaluatedEntries: boolean[] = entries.map((entry: any) => {\n return evaluateCondition({ entry, values, fields });\n });\n const attrIsTrue = evaluatedEntries.every((i: boolean) => i === true);\n\n if (attrIsTrue) {\n newAttributes[attrField] = true;\n } else if (\n attrField === \"readonly\" &&\n !attrIsTrue &&\n widgetType === \"button\"\n ) {\n // Buttons with readonly false will have to override the default readonly\n newAttributes[attrField] = false;\n }\n }\n\n return newAttributes;\n};\n\nconst evaluateAttributes = ({\n tagAttributes,\n values,\n fields,\n widgetType,\n}: {\n tagAttributes: any;\n values: any;\n fields: any;\n widgetType?: string;\n}) => {\n const newTagAttributes = tagAttributes.attrs\n ? parseAttributes({\n attrs: tagAttributes.attrs,\n values,\n fields,\n widgetType,\n })\n : {};\n\n return { ...tagAttributes, ...newTagAttributes, attrs: undefined };\n};\n\nexport { evaluateAttributes, replaceEntities };\n","import Widget from \"./Widget\";\nimport { replaceEntities, isTrue } from \"./helpers/attributeParser\";\n\nclass Field extends Widget {\n /**\n * Field identifier\n *\n * Corresponds to the field's name attribute from xml\n */\n _id: string = \"\";\n get id(): string {\n return this._id;\n }\n set id(value: string) {\n this._id = value;\n }\n\n /**\n * Label\n */\n _label: string = \"\";\n get label(): string {\n return this._label;\n }\n set label(value: string) {\n this._label = value;\n }\n\n /**\n * No label\n *\n * This field hasn't got to show the label\n *\n */\n _nolabel: boolean = false;\n get nolabel(): boolean {\n return this._nolabel;\n }\n set nolabel(value: boolean) {\n this._nolabel = value;\n }\n\n /**\n *\n * Required field\n *\n */\n _required: boolean = false;\n get required(): boolean {\n return this._required;\n }\n set required(value: boolean) {\n this._required = value;\n }\n\n /**\n * Tooltip\n */\n _tooltip?: string;\n get tooltip(): string | undefined {\n return this._tooltip;\n }\n set tooltip(value: string | undefined) {\n this._tooltip = value;\n }\n\n /**\n * Tooltip inline\n */\n _tooltipInline: boolean = false;\n get tooltipInline(): boolean {\n return this._tooltipInline;\n }\n set tooltipInline(value: boolean) {\n this._tooltipInline = value;\n }\n\n\n /**\n * Activated (default is true)\n */\n _activated: boolean = true;\n get activated(): boolean {\n return this._activated;\n }\n set activated(value: boolean) {\n this._activated = value;\n }\n\n /**\n * Sum - sum parameter (label), this will mean that we have to sum this field in the tree\n */\n _sum?: string;\n get sum(): string | undefined {\n return this._sum;\n }\n set sum(value: string | undefined) {\n this._sum = value;\n }\n\n /**\n * Values and keys\n */\n _selectionValues: Map<string, string> = new Map([]);\n get selectionValues(): Map<string, string> {\n return this._selectionValues;\n }\n set selectionValues(value: Map<string, string>) {\n this._selectionValues = value;\n }\n\n constructor(props: any) {\n super(props);\n\n // Activated by default\n this._activated = true;\n\n if (props) {\n if (props.name) {\n this._id = props.name;\n }\n\n if (props.activated) {\n this._activated = props.activated;\n }\n\n if (props.string) {\n this._label = replaceEntities(props.string);\n }\n\n if (props.help) {\n this._tooltip = replaceEntities(props.help);\n }\n\n if (\n props.nolabel &&\n (props.nolabel === \"1\" ||\n (typeof props.nolabel === \"boolean\" && props.nolabel === true))\n ) {\n this._nolabel = true;\n }\n\n if (\n props.required &&\n (props.required === \"1\" ||\n props.required === true ||\n props.required === \"True\")\n ) {\n this._required = true;\n }\n\n if (props.sum) {\n this._sum = props.sum;\n }\n\n if (props.selection) {\n this._selectionValues = new Map(props.selection);\n }\n\n if (props.help_inline) {\n this.tooltipInline = isTrue(props.help_inline);\n }\n }\n }\n\n /**\n * Returns this instance in case this id matches param id.\n * @param {string} id id (name) to find\n */\n findById(id: string): Field | null {\n let r: Field | null = null;\n if (this._id === id) {\n r = this;\n }\n return r;\n }\n}\n\nexport default Field;\n","import Field from \"./Field\";\n\nclass Avatar extends Field {}\n\n\nexport default Avatar;\n","import Widget from \"./Widget\";\n\nclass NewLine extends Widget {\n findById(id: string): null {\n return null;\n }\n}\n\nexport default NewLine;\n","import Field from \"./Field\";\n\n\ntype LabelType = \"secondary\" | \"success\" | \"warning\" | \"danger\" | \"default\";\ntype LabelSize = 1 | 2 | 3 | 4 | 5 | undefined;\n\nclass Label extends Field {\n /**\n * Label text\n */\n _text: string = \"\";\n get text(): string {\n return this._text;\n }\n set text(value: string) {\n this._text = value;\n }\n\n /**\n * Align text\n */\n _align: string = \"left\";\n get align(): string {\n return this._align;\n }\n set align(value: string) {\n this._align = value;\n }\n\n /**\n * Label type\n */\n _labelType: LabelType = \"default\";\n get labelType(): LabelType {\n return this._labelType;\n }\n set labelType(value: LabelType) {\n this._labelType = value;\n }\n\n /**\n * Label size\n */\n _labelSize: LabelSize = undefined;\n get labelSize(): LabelSize {\n return this._labelSize;\n }\n set labelSize(value: LabelSize) {\n this._labelSize = value;\n }\n\n\n /**\n * Id of the field that this label goes with. Null if it's an independent label\n */\n _fieldForLabel: string | null = null;\n get fieldForLabel(): string | null {\n return this._fieldForLabel;\n }\n set fieldForLabel(value: string | null) {\n this._fieldForLabel = value;\n }\n\n constructor(props?: any) {\n super({ ...props, nolabel: true });\n\n if (props?.fieldForLabel) {\n this._fieldForLabel = props.fieldForLabel;\n }\n if (props.widget_props) {\n if (this.parsedWidgetProps.label_type) {\n this.labelType = this.parsedWidgetProps.label_type;\n }\n if (this.parsedWidgetProps.label_size) {\n this.labelSize = this.parsedWidgetProps.label_size;\n }\n }\n }\n}\n\nexport default Label;\n","import Field from \"./Field\";\nimport NewLine from \"./NewLine\";\nimport Widget from \"./Widget\";\nimport Label from \"./Label\";\n\ntype AddWidgetOptions = {\n addLabel: boolean;\n};\n\nclass Container {\n /**\n * Number of columns the container is divided\n */\n _columns: number;\n get columns(): number {\n return this._columns;\n }\n set columns(value: number) {\n this._columns = value;\n }\n\n /**\n * Number of columns to use\n */\n _colspan: number;\n get colspan(): number {\n return this._colspan;\n }\n set colspan(value: number) {\n this._colspan = value;\n }\n\n /**\n * Number of rows\n */\n _rows: Widget[][];\n get rows(): Widget[][] {\n return this._rows;\n }\n set rows(value: Widget[][]) {\n this._rows = value;\n }\n\n _index: number;\n get index(): number {\n return this._index;\n }\n\n /**\n * Determines if widget is read only (default is false)\n */\n _readOnly: boolean;\n get readOnly(): boolean {\n return this._readOnly;\n }\n set readOnly(value: boolean) {\n this._readOnly = value;\n }\n\n /**\n * Unique key for container\n */\n _key?: string;\n get key(): string | undefined {\n return this._key;\n }\n set key(value: string | undefined) {\n this._key = value;\n }\n\n constructor(\n columns: number = 4,\n colspan: number = 6,\n readOnly: boolean = false,\n key: string | undefined = undefined\n ) {\n this._columns = columns;\n this._colspan = colspan;\n this._rows = [[]];\n this._index = 0;\n this._readOnly = readOnly;\n this._key = key;\n }\n\n /**\n * Returns the next free position\n */\n freePosition(): number {\n const span = this._rows[this._index]\n .filter((el) => {\n return !el.invisible;\n })\n .reduce((prev, current) => {\n return prev + current.colspan;\n }, 0);\n return this._columns - span;\n }\n\n addWidget(widget: Widget, options?: AddWidgetOptions) {\n const widgetsToAdd: Widget[] = [];\n const addLabel = options ? options.addLabel : true;\n\n if (widget instanceof NewLine) {\n this._rows.push([]);\n this._index++;\n return;\n }\n\n if (widget.colspan > this._columns) {\n // Widget colspan is greater than container columns, so we change widget\n // colspan to fit container columns.\n widget.colspan = this._columns;\n }\n\n // If the container is set to readonly, reflect it to its children\n widget.readOnly = widget.readOnly || this.readOnly;\n\n // For fields without nolabel we add a preceding label widget\n if (addLabel && widget instanceof Field && !widget.nolabel) {\n if (widget.colspan > 1) {\n widget.colspan -= 1; // We substract one colspan for the corresponding label\n }\n\n const label = new Label({\n name: widget.id + \"_label\",\n string: widget.label,\n invisible: widget.invisible,\n help: widget.tooltip,\n fieldForLabel: widget.id,\n key: widget.key + \"-label\",\n });\n label.type = \"label\";\n\n widgetsToAdd.push(label);\n widgetsToAdd.push(widget);\n } else {\n widgetsToAdd.push(widget);\n }\n\n const widgetsColspan = widgetsToAdd.reduce(\n (accumulator: number, currentWidget: Widget) => {\n return accumulator + currentWidget.colspan;\n },\n 0\n );\n\n if (widgetsColspan > this.freePosition()) {\n this._rows.push([]);\n this._index++;\n }\n\n this._rows[this._index] = this._rows[this._index].concat(widgetsToAdd);\n }\n\n /**\n * Traverses children to find a matching container or widget with the exact same id.\n * @param {string} id id (name) of the field or container to find\n */\n findById(id: string): Widget | null {\n let r: Widget | null = null;\n if (this._rows && this._rows.length) {\n this._rows.forEach((row) => {\n if (r) {\n // Item has been found.\n return;\n }\n\n if (row && row.length) {\n row.forEach((item) => {\n if (r) {\n // Item has been found.\n return;\n }\n if (item) {\n r = item.findById(id);\n }\n });\n }\n });\n }\n return r;\n }\n}\n\nexport default Container;\n","import Widget from \"./Widget\";\nimport Container from \"./Container\";\nimport { replaceEntities } from \"./helpers/attributeParser\";\n\nclass ContainerWidget extends Widget {\n /**\n * Field identifier\n *\n * Corresponds to the field's name attribute from xml\n */\n _id: string = \"\";\n get id(): string {\n return this._id;\n }\n set id(value: string) {\n this._id = value;\n }\n\n static _defaultColspan: number = 6;\n static get defaultColspan(): number {\n return ContainerWidget._defaultColspan;\n }\n static set defaultColspan(value: number) {\n ContainerWidget._defaultColspan = value;\n }\n\n /**\n * Container\n */\n _container: Container;\n get container(): Container {\n return this._container;\n }\n set container(value: Container) {\n this._container = value;\n }\n\n get colspan(): number {\n return this._container.colspan;\n }\n set colspan(value: number) {\n this._container.colspan = +value;\n }\n\n /**\n * Must expand widget\n */\n _mustExpand: boolean = false;\n get mustExpand(): boolean {\n return this._mustExpand;\n }\n set mustExpand(value: boolean) {\n this._mustExpand = value;\n }\n\n /**\n * Container label\n */\n _label: string = \"\";\n get label(): string {\n return this._label;\n }\n set label(value: string) {\n this._label = value;\n }\n\n constructor(props?: any) {\n super(props);\n\n this._container = new Container(\n props && props.col,\n ContainerWidget._defaultColspan,\n this.readOnly,\n props && props.key\n );\n\n if (props) {\n if (props.name) {\n this._id = props.name;\n }\n\n if (props.colspan) {\n this._container.colspan = +props.colspan;\n } else {\n this._mustExpand = true;\n }\n\n if (props.string) {\n this._label = replaceEntities(props.string);\n }\n }\n }\n\n /**\n * Calls container's findById method to find the widgets matching with param id\n * @param {string} id id to find\n */\n findById(id: string): Widget | null {\n if (id === this.id) {\n return this;\n }\n\n return this.container.findById(id);\n }\n}\n\nexport default ContainerWidget;\n","import ContainerWidget from \"./ContainerWidget\";\nimport Page from \"./Page\";\n\nexport type TabPosition = \"top\" | \"bottom\" | \"left\" | \"right\";\n\nclass Notebook extends ContainerWidget {\n static _defaultColspan: number = 3;\n static get defaultColspan(): number {\n return Notebook._defaultColspan;\n }\n static set defaultColspan(value: number) {\n Notebook._defaultColspan = value;\n }\n\n _tabPosition: TabPosition = \"top\";\n get tabPosition(): TabPosition {\n return this._tabPosition;\n }\n set tabPosition(value: TabPosition) {\n this._tabPosition = value;\n }\n\n _pages: Page[] = [];\n get pages(): Page[] {\n // @ts-ignore\n return [].concat.apply([], this._container.rows!) as Page[];\n }\n\n constructor(props: any) {\n super(props);\n this.colspan = Notebook._defaultColspan;\n\n if (props) {\n if (props.colspan) {\n this.colspan = props.colspan;\n }\n if (props.tabpos) {\n this._tabPosition = props.tabpos;\n }\n }\n }\n}\n\nexport default Notebook;\n","import ContainerWidget from \"./ContainerWidget\";\n\nclass Page extends ContainerWidget {\n\n _icon: string | null = null;\n get icon(): string | null {\n return this._icon;\n }\n set icon(value: string | null) {\n this._icon = value;\n }\n\n constructor(props: any) {\n super(props);\n if (props.icon) {\n this._icon = props.icon;\n }\n }\n}\n\nexport default Page;\n","import ContainerWidget from \"./ContainerWidget\";\nimport {replaceEntities} from \"./helpers/attributeParser\";\n\nclass Group extends ContainerWidget {\n\n _icon: string | null = null;\n get icon(): string | null {\n return this._icon;\n }\n set icon(value: string | null) {\n this._icon = value;\n }\n constructor(props: any) {\n super(props);\n if (props) {\n if (props.icon) {\n this._icon = props.icon;\n }\n }\n }\n}\n\nexport default Group;","import Field from \"./Field\";\nimport { replaceEntities } from \"./helpers/attributeParser\";\n\nclass Button extends Field {\n /**\n * Type\n */\n _buttonType: \"workflow\" | \"action\" | \"object\" | \"cancel\" = \"workflow\";\n get buttonType() {\n return this._buttonType;\n }\n set buttonType(value) {\n this._buttonType = value;\n }\n\n /**\n * Button caption\n */\n _caption: string = \"\";\n get caption(): string {\n return this._caption;\n }\n set caption(value: string) {\n this._caption = value;\n }\n\n /**\n * Button icon\n */\n _icon: string | undefined;\n get icon(): string | undefined {\n return this._icon;\n }\n set icon(value: string | undefined) {\n this._icon = value;\n }\n\n /**\n * Confirm string for modal in button types workflow\n */\n _confirmMessage: string = \"\";\n get confirmMessage(): string {\n return this._confirmMessage;\n }\n set confirm(value: string) {\n this._confirmMessage = value;\n }\n\n _primary: boolean = false;\n get primary(): boolean {\n return this._primary;\n }\n set primary(value: boolean) {\n this._primary = value;\n }\n\n _danger: boolean = false;\n get danger(): boolean {\n return this._danger;\n }\n set danger(value: boolean) {\n this._danger = value;\n }\n\n constructor(props: any) {\n super({\n ...props,\n nolabel: props?.nolabel !== undefined ? props.nolabel : true,\n });\n\n if (props) {\n if (props.string) {\n this._caption = replaceEntities(props.string);\n }\n\n if (props.buttonType) {\n this._buttonType = props.buttonType;\n }\n\n if (props.confirm) {\n this._confirmMessage = replaceEntities(props.confirm);\n }\n\n if (props.special && props.special === \"cancel\") {\n this._buttonType = \"cancel\";\n }\n\n if (props.icon) {\n this._icon = props.icon;\n }\n if (props.primary) {\n const primary = props.primary;\n if (primary === \"1\" || primary === 1 || primary === true) {\n this._primary = true\n }\n }\n if (props.danger) {\n const danger = props.danger;\n if (danger === \"1\" || danger === 1 || danger === true) {\n this._danger = true\n }\n }\n }\n }\n}\n\nexport default Button;\n","import Button from \"./Button\";\nimport ContainerWidget from \"./ContainerWidget\";\n\nclass ButtonGroup extends ContainerWidget {\n\n _defaultName: string = \"\";\n get defaultName(): string {\n return this._defaultName;\n }\n\n get defaultButton(): Button | undefined {\n const btn = this.buttons.find(button => button.id === this.defaultName);\n return btn ? btn : this.buttons[0];\n }\n\n get secondaryButtons(): Button[] {\n const btns = this.buttons.filter(button => button.id !== this.defaultButton?.id);\n return btns;\n }\n\n get buttons(): Button[] {\n return this._container.rows[0].filter((b) => !b.invisible) as Button[];\n }\n\n constructor(props: any) {\n super(props);\n if (props.default) {\n this._defaultName = props.default;\n }\n }\n}\n\nexport default ButtonGroup;","import Field from \"./Field\";\n\n/**\n * One-line input with a length limit.\n */\nclass Char extends Field {\n /**\n * Field place holder\n */\n _placeholder: string = \"\";\n get placeholder(): string {\n return this._placeholder;\n }\n set placeholder(value: string) {\n this._placeholder = value;\n }\n\n /**\n * Field size\n */\n _size: number | undefined;\n get size(): number | undefined {\n return this._size;\n }\n set size(value: number | undefined) {\n this._size = value;\n }\n\n _isPassword: boolean = false;\n get isPassword(): boolean {\n return this._isPassword;\n }\n set isPassword(value: boolean) {\n this._isPassword = value;\n }\n\n _translatable: boolean = false;\n get translatable(): boolean {\n return this._translatable;\n }\n set translatable(value: boolean) {\n this._translatable = value;\n }\n\n constructor(props: any) {\n super(props);\n\n if (props) {\n if (props.size) {\n this._size = props.size;\n }\n\n if (props.password) {\n this.isPassword = props.password === \"True\" ? true : false;\n }\n\n if (props.translate) {\n this.translatable =\n props.translate === \"True\" || props.translate === true ? true : false;\n }\n }\n }\n}\n\nexport default Char;\n","import Field from \"./Field\";\nimport { replaceEntities } from \"./helpers/attributeParser\";\n\n/**\n * Multiline input with no length limit.\n */\nclass Text extends Field {\n /**\n * Field place holder\n */\n _placeholder: string = \"\";\n get placeholder(): string {\n return this._placeholder;\n }\n set placeholder(value: string) {\n this._placeholder = value;\n }\n\n /**\n * Must expand widget\n */\n _mustExpand: boolean = false;\n get mustExpand(): boolean {\n return this._mustExpand;\n }\n set mustExpand(value: boolean) {\n this._mustExpand = value;\n }\n\n /**\n * Height\n */\n _height: number | undefined;\n get height(): number | undefined {\n return this._height;\n }\n set height(value: number | undefined) {\n this._height = value;\n }\n\n _translatable: boolean = false;\n get translatable(): boolean {\n return this._translatable;\n }\n set translatable(value: boolean) {\n this._translatable = value;\n }\n\n constructor(props: any) {\n super(props);\n\n if (props) {\n if (props.placeholder) {\n this._placeholder = replaceEntities(props.placeholder);\n }\n\n if (!props.colspan) {\n this._mustExpand = true;\n }\n\n if (props.height) {\n try {\n this._height = parseInt(props.height);\n } catch (e) {\n this._height = undefined;\n }\n }\n\n if (props.translate) {\n this.translatable =\n props.translate === \"True\" || props.translate === true ? true : false;\n }\n }\n }\n}\n\nexport default Text;\n","import Field from \"./Field\";\n\n/**\n * Selection field for key-value lists\n */\nclass Selection extends Field {\n /**\n * Field size\n */\n _size: number = 150;\n get size(): number {\n return this._size;\n }\n set size(value: number) {\n this._size = value;\n }\n\n constructor(props: any) {\n super(props);\n\n if (props) {\n if (props.size) {\n this._size = props.size;\n }\n }\n }\n}\n\nexport default Selection;\n","import Field from \"./Field\";\n\n/**\n * A many2one relationship field\n */\nclass Many2one extends Field {\n /**\n * Field size\n */\n _size: number = 150;\n get size(): number {\n return this._size;\n }\n set size(value: number) {\n this._size = value;\n }\n\n /**\n * Relation\n */\n _relation: string = \"\";\n get relation(): string {\n return this._relation;\n }\n set relation(value: string) {\n this._relation = value;\n }\n\n constructor(props: any) {\n super(props);\n\n if (props) {\n if (props.size) {\n this._size = props.size;\n }\n\n if (props.relation) {\n this._relation = props.relation;\n }\n }\n }\n}\n\nexport default Many2one;\n","import Text from \"./Text\";\n\nclass Markdown extends Text {}\n\n\nexport default Markdown;\n","import Field from \"./Field\";\n\n/**\n * Boolean input\n */\nclass Boolean extends Field {\n constructor(props?: any) {\n super(props);\n }\n}\n\nexport default Boolean;\n","import Field from \"./Field\";\n\n/**\n * Integer input\n */\nclass Integer extends Field {\n\n constructor(props?: any) {\n super(props);\n }\n}\n\nexport default Integer;\n","import Field from \"./Field\";\n\n/**\n * Float input\n */\nclass Float extends Field {\n\n /**\n * Integer digits\n *\n * Number of integer digits that will be part of the float\n */\n _integerDigits: number = 16;\n get integerDigits(): number {\n return this._integerDigits;\n }\n set integerDigits(value: number) {\n this._integerDigits = value;\n }\n\n /**\n * Decimal digits\n *\n * Number of decimal digits that will be part of the float\n */\n _decimalDigits: number = 2;\n get decimalDigits(): number {\n return this._decimalDigits;\n }\n set decimalDigits(value: number) {\n this._decimalDigits = value;\n }\n\n constructor(props?: any) {\n super(props);\n\n if (props?.digits) {\n const [integers, decimals] = props.digits;\n this._integerDigits = integers;\n this._decimalDigits = decimals;\n }\n }\n}\n\nexport default Float;\n","import Float from \"./Float\";\n\n/**\n * FloatTime input\n */\nclass FloatTime extends Float {}\n\nexport default FloatTime;\n","import Float from \"./Float\";\n\n/**\n * ProgressBar input\n */\nclass ProgressBar extends Float {}\n\nexport default ProgressBar;\n","import Field from \"./Field\";\n\n/**\n * Date input\n */\nclass Date extends Field {\n constructor(props?: any) {\n super(props);\n }\n}\n\nexport default Date;\n","import Field from \"./Field\";\n\n/**\n * DateTime input\n */\nclass DateTime extends Field {\n constructor(props?: any) {\n super(props);\n }\n}\n\nexport default DateTime;\n","import Field from \"./Field\";\n\n/**\n * A Many2many relationship field\n */\nclass Many2many extends Field {\n /**\n * Field size\n */\n _size: number = 150;\n get size(): number {\n return this._size;\n }\n set size(value: number) {\n this._size = value;\n }\n\n /**\n * Relation\n */\n _relation: string = \"\";\n get relation(): string {\n return this._relation;\n }\n set relation(value: string) {\n this._relation = value;\n }\n\n /**\n * Must expand widget\n */\n _mustExpand: boolean = false;\n get mustExpand(): boolean {\n return this._mustExpand;\n }\n set mustExpand(value: boolean) {\n this._mustExpand = value;\n }\n\n constructor(props: any) {\n super(props);\n\n if (props) {\n if (props.size) {\n this._size = props.size;\n }\n\n if (props.relation) {\n this._relation = props.relation;\n }\n\n if (!props.colspan) {\n this._mustExpand = true;\n }\n }\n }\n}\n\nexport default Many2many;\n","import Field from \"./Field\";\n\n/**\n * A One2Many relationship field\n */\nclass One2many extends Field {\n /**\n * Field size\n */\n _size: number = 150;\n get size(): number {\n return this._size;\n }\n set size(value: number) {\n this._size = value;\n }\n\n /**\n * Relation\n */\n _relation: string = \"\";\n get relation(): string {\n return this._relation;\n }\n set relation(value: string) {\n this._relation = value;\n }\n\n /**\n * Inv_field\n */\n _inv_field: string | undefined;\n get inv_field(): string | undefined {\n return this._inv_field;\n }\n set inv_field(value: string | undefined) {\n this._inv_field = value;\n }\n\n /**\n * Views\n */\n _views: any = null;\n get views(): any {\n return this._views;\n }\n set views(value: any) {\n this._views = value;\n }\n\n /**\n * Mode\n */\n _mode: Array<string> = [];\n get mode(): Array<string> {\n return this._mode;\n }\n set mode(value: Array<string>) {\n this._mode = value;\n }\n\n /**\n * Must expand widget\n */\n _mustExpand: boolean = false;\n get mustExpand(): boolean {\n return this._mustExpand;\n }\n set mustExpand(value: boolean) {\n this._mustExpand = value;\n }\n\n constructor(props: any) {\n super(props);\n\n if (props) {\n if (props.size) {\n this._size = props.size;\n }\n\n if (props.relation) {\n this._relation = props.relation;\n }\n\n if (props.mode) {\n this._mode = props.mode.split(\",\");\n }\n\n if (props.views) {\n this._views = props.views;\n }\n\n if (props.colspan) {\n this.colspan = props.colspan;\n } else {\n this._mustExpand = true;\n }\n\n if (props.inv_field) {\n this._inv_field = props.inv_field;\n }\n }\n }\n}\n\nexport default One2many;\n","import Widget from \"./Widget\";\nimport { replaceEntities } from \"./helpers/attributeParser\";\n\nclass Separator extends Widget {\n /**\n * Label\n */\n _label: string = \"\";\n get label(): string {\n return this._label;\n }\n set label(value: string) {\n this._label = value;\n }\n\n _icon: string | null = null;\n get icon(): string | null {\n return this._icon;\n }\n set icon(value: string | null) {\n this._icon = value;\n }\n\n constructor(props: any) {\n super(props);\n\n if (props) {\n if (props.string) {\n this._label = replaceEntities(props.string);\n }\n if (props.icon) {\n this._icon = props.icon;\n }\n }\n }\n\n findById(id: string): null {\n return null;\n }\n}\n\nexport default Separator;\n","import Selection from \"./Selection\";\n\n/**\n * Reference field for key-value Many2One behaviour\n */\nclass Reference extends Selection {\n\n}\n\nexport default Reference;\n","import Field from \"./Field\";\n\n/**\n * Binary base64 field\n */\nclass Binary extends Field {\n /**\n * Filename field name\n */\n _filenameField: string = \"\";\n get filenameField(): string {\n return this._filenameField;\n }\n set filenameField(value: string) {\n this._filenameField = value;\n }\n\n constructor(props: any) {\n super(props);\n\n if (props) {\n if (props.filename) {\n this._filenameField = props.filename;\n }\n }\n }\n}\n\nexport default Binary;\n","import Field from \"./Field\";\n\n/**\n * Image base64 field\n */\nclass Image extends Field {}\n\nexport default Image;\n","import Field from \"./Field\";\n\nclass FiberGrid extends Field {\n constructor(props: any) {\n super(props);\n }\n}\n\nexport default FiberGrid;\n","import One2many from \"./One2many\";\n\nclass Timeline extends One2many {\n /**\n * Title field\n */\n _titleField: string;\n get titleField(): string {\n return this._titleField;\n }\n set titleField(value: string) {\n this._titleField = value;\n }\n\n /**\n * Summary field\n */\n _summaryField: string;\n get summaryField(): string {\n return this._summaryField;\n }\n set summaryField(value: string) {\n this._summaryField = value;\n }\n\n get iconField(): string {\n return this.parsedWidgetProps.iconField;\n }\n\n get colorField(): string {\n return this.parsedWidgetProps.colorField;\n }\n\n constructor(props: any) {\n super(props);\n this._titleField = \"\";\n this._summaryField = \"\";\n if (this._parsedWidgetProps) {\n this._titleField = this._parsedWidgetProps.titleField;\n this._summaryField = this.parsedWidgetProps.summaryField;\n }\n }\n}\n\nexport default Timeline;\n","import Selection from \"./Selection\";\n\nclass Indicator extends Selection {\n _nolabel: boolean = true;\n\n _card: boolean;\n get card(): boolean {\n return this._card;\n }\n set card(value: boolean) {\n this._card = value;\n }\n _icon: string;\n get icon(): string {\n return this._icon;\n }\n set icon(value: string) {\n this._icon = value;\n }\n _suffix: string;\n get suffix(): string {\n return this._suffix;\n }\n set suffix(value: string) {\n this._suffix = value;\n }\n\n constructor(props: any) {\n super(props);\n this._card = false;\n this._icon = \"\";\n this._suffix = \"\";\n if (this._parsedWidgetProps) {\n this._card = this._parsedWidgetProps.card || false;\n this._icon = this._parsedWidgetProps.icon || \"\";\n this._suffix = this._parsedWidgetProps.suffix || \"\";\n }\n }\n}\n\n\nexport default Indicator;\n","import Field from \"./Field\";\n\n/**\n * A Tags widget\n */\nclass MultiCheckbox extends Field {\n /**\n * Field size\n */\n _size: number = 150;\n get size(): number {\n return this._size;\n }\n set size(value: number) {\n this._size = value;\n }\n\n /**\n * Relation\n */\n _relation: string = \"\";\n get relation(): string {\n return this._relation;\n }\n set relation(value: string) {\n this._relation = value;\n }\n\n /**\n * Inv_field\n */\n _inv_field: string | undefined;\n get inv_field(): string | undefined {\n return this._inv_field;\n }\n set inv_field(value: string | undefined) {\n this._inv_field = value;\n }\n\n\n /**\n * field to define the value to show\n */\n _field: string = \"name\";\n get field(): string {\n return this._field;\n }\n set field(value: string) {\n this._field = value;\n }\n\n _columns: number = 4;\n get columns(): number {\n return this._columns;\n }\n set columns(value: number) {\n this._columns = value;\n }\n\n constructor(props: any) {\n super(props);\n\n if (props) {\n if (props.size) {\n this._size = props.size;\n }\n\n if (props.relation) {\n this._relation = props.relation;\n }\n\n if (props.inv_field) {\n this._inv_field = props.inv_field;\n }\n if (this.parsedWidgetProps.hasOwnProperty('field')) {\n this._field = this.parsedWidgetProps.field\n }\n if (this.parsedWidgetProps.columns) {\n this._columns = this.parsedWidgetProps.columns;\n }\n }\n }\n}\n\nexport default MultiCheckbox;\n","import MultiCheckbox from \"./MultiCheckbox\";\n\n/**\n * A Tags widget\n */\nclass Tags extends MultiCheckbox {}\n\nexport default Tags;\n","import Selection from \"./Selection\";\n\n/**\n * A Tag widget\n */\nclass Tag extends Selection {\n get colors(): any | \"auto\" {\n return this._parsedWidgetProps.colors || {};\n }\n}\n\nexport default Tag;\n","import Selection from \"./Selection\";\n\ntype directionType = \"horizontal\" | \"vertical\";\n\n/**\n * Selection field for key-value lists\n */\nclass Radio extends Selection {\n\n /**\n * Define the direction\n */\n _direction: directionType = \"horizontal\";\n get direction(): directionType {\n return this._direction;\n }\n set direction(value: directionType) {\n this._direction = value;\n }\n\n constructor(props: any) {\n super(props);\n\n if (props) {\n if (this.parsedWidgetProps.hasOwnProperty('direction')) {\n this._direction = this.parsedWidgetProps.direction\n }\n }\n }\n\n}\n\nexport default Radio;\n","import Boolean from \"./Boolean\";\n\n/**\n * Switch\n */\nclass Switch extends Boolean {}\n\nexport default Switch;\n","import Field from \"./Field\";\n\n/**\n * A many2one relationship field\n */\nclass Steps extends Field {\n\n /**\n * Relation\n */\n _relation: string = \"\";\n get relation(): string {\n return this._relation;\n }\n set relation(value: string) {\n this._relation = value;\n }\n\n _errorField: string | null = null;\n get errorField(): string | null {\n return this._errorField;\n }\n set errorField(value: string | null) {\n this._errorField = value;\n }\n\n constructor(props: any) {\n super(props);\n\n if (props) {\n \n if (props.relation) {\n this._relation = props.relation;\n }\n\n if (this.parsedWidgetProps.hasOwnProperty('error_field')) {\n this._errorField = this.parsedWidgetProps.error_field;\n }\n }\n }\n}\n\nexport default Steps;\n","import Text from \"./Text\";\n\n/**\n * A CodeEditor widget\n */\nclass CodeEditor extends Text {\n\n _lang: string | null = null;\n get lang(): string | null {\n return this._lang;\n }\n set lang(value: string | null) {\n this._lang = value;\n }\n\n constructor(props: any) {\n super(props);\n\n if (props) {\n \n if (this.parsedWidgetProps.lang) {\n this._lang = this.parsedWidgetProps.lang;\n }\n }\n }\n}\n\nexport default CodeEditor;\n","import Field from \"./Field\";\n\n/**\n * Time input\n */\nclass Time extends Field {\n constructor(props?: any) {\n super(props);\n }\n}\n\nexport default Time;\n","import Notebook from \"./Notebook\";\nimport Page from \"./Page\";\nimport Group from \"./Group\";\nimport Button from \"./Button\";\nimport ButtonGroup from \"./ButtonGroup\";\nimport Label from \"./Label\";\nimport Char from \"./Char\";\nimport Text from \"./Text\";\nimport Selection from \"./Selection\";\nimport Many2one from \"./Many2one\";\nimport Markdown from \"./Markdown\";\nimport Boolean from \"./Boolean\";\nimport Integer from \"./Integer\";\nimport Widget from \"./Widget\";\nimport Float from \"./Float\";\nimport FloatTime from \"./FloatTime\";\nimport ProgressBar from \"./ProgressBar\";\nimport Date from \"./Date\";\nimport DateTime from \"./DateTime\";\nimport Many2many from \"./Many2many\";\nimport One2many from \"./One2many\";\nimport NewLine from \"./NewLine\";\nimport Separator from \"./Separator\";\nimport Reference from \"./Reference\";\nimport Binary from \"./Binary\";\nimport Image from \"./Image\";\nimport FiberGrid from \"./FiberGrid\";\nimport Timeline from \"./Timeline\";\nimport Indicator from \"./Indicator\";\nimport Tags from \"./Tags\";\nimport Tag from \"./Tag\";\nimport Radio from \"./Radio\";\nimport MultiCheckbox from \"./MultiCheckbox\";\nimport Switch from \"./Switch\";\nimport Steps from \"./Steps\";\nimport CodeEditor from \"./CodeEditor\";\nimport Avatar from \"./Avatar\";\nimport Time from \"./Time\";\n\nclass WidgetFactory {\n /**\n * Widget class\n */\n _widgetClass: any;\n\n setWidgetClass(type: string): void {\n switch (type) {\n case \"notebook\":\n this._widgetClass = Notebook;\n break;\n case \"page\":\n this._widgetClass = Page;\n break;\n case \"group\":\n this._widgetClass = Group;\n break;\n case \"label\":\n this._widgetClass = Label;\n break;\n case \"char\":\n this._widgetClass = Char;\n break;\n case \"text\":\n this._widgetClass = Text;\n break;\n case \"button\":\n this._widgetClass = Button;\n break;\n case \"buttonGroup\":\n this._widgetClass = ButtonGroup;\n break;\n case \"selection\":\n this._widgetClass = Selection;\n break;\n case \"many2one\":\n this._widgetClass = Many2one;\n break;\n case \"boolean\":\n this._widgetClass = Boolean;\n break;\n case \"integer\":\n this._widgetClass = Integer;\n break;\n case \"float\":\n this._widgetClass = Float;\n break;\n case \"float_time\":\n this._widgetClass = FloatTime;\n break;\n case \"date\":\n this._widgetClass = Date;\n break;\n case \"datetime\":\n this._widgetClass = DateTime;\n break;\n case \"progressbar\":\n this._widgetClass = ProgressBar;\n break;\n case \"many2many\":\n this._widgetClass = Many2many;\n break;\n case \"markdown\":\n this._widgetClass = Markdown;\n break;\n case \"one2many\":\n case \"one2many_list\":\n this._widgetClass = One2many;\n break;\n case \"newline\":\n this._widgetClass = NewLine;\n break;\n case \"separator\":\n this._widgetClass = Separator;\n break;\n case \"url\":\n this._widgetClass = Char;\n break;\n case \"email\":\n this._widgetClass = Char;\n break;\n case \"reference\":\n this._widgetClass = Reference;\n break;\n case \"binary\":\n this._widgetClass = Binary;\n break;\n case \"image\":\n this._widgetClass = Image;\n break;\n case \"fiber_grid\":\n this._widgetClass = FiberGrid;\n break;\n case \"timeline\":\n this._widgetClass = Timeline;\n break;\n case \"indicator\":\n this._widgetClass = Indicator;\n break;\n case \"tags\":\n this._widgetClass = Tags;\n break;\n case \"tag\":\n this._widgetClass = Tag;\n break;\n case \"avatar\":\n this._widgetClass = Avatar;\n break;\n case \"radio\":\n this._widgetClass = Radio;\n break;\n case \"multicheckbox\":\n this._widgetClass = MultiCheckbox;\n break;\n case \"switch\":\n this._widgetClass = Switch;\n break;\n case \"steps\":\n this._widgetClass = Steps;\n break;\n case \"codeeditor\":\n this._widgetClass = CodeEditor;\n break;\n case \"time\":\n this._widgetClass = Time;\n break\n\n default:\n break;\n }\n }\n\n createWidget(type: string, props: any) {\n let finalType = type;\n\n this.setWidgetClass(type);\n\n // Fallback to default widget, we try to use the fields type widget if it exists\n if (this._widgetClass === undefined) {\n finalType = props.fieldsWidgetType;\n this.setWidgetClass(props.fieldsWidgetType);\n }\n\n if (this._widgetClass === undefined) {\n this._widgetClass = Widget;\n }\n\n // TODO: Widget Class constructors should use only the props needed, not all props.\n switch (type) {\n // Specific cases (only selected props should be used)\n case \"notebook\":\n case \"page\":\n case \"group\":\n return new this._widgetClass({ ...props, type: finalType });\n case \"button\":\n return new this._widgetClass({\n ...props,\n type,\n buttonType: props.type,\n });\n // Generic case\n default:\n return new this._widgetClass({ ...props, type: finalType });\n }\n }\n}\n\nexport default WidgetFactory;\n","const evaluateStates = ({\n fieldName,\n values,\n fields,\n}: {\n fieldName: string;\n values: any;\n fields: any;\n}) => {\n if (!fieldName) {\n return {};\n }\n\n const fieldStatesConfig = fields[fieldName]?.states;\n\n if (!fieldStatesConfig) {\n return {};\n }\n\n const newTagStateAttrs: any = {};\n const evaluatedStates: any = {};\n\n for (const stateCondition of Object.keys(fieldStatesConfig)) {\n if (values[\"state\"] === stateCondition) {\n const configAttrValues = fieldStatesConfig[stateCondition];\n\n for (const entryConfig of configAttrValues) {\n const [attribute, value] = entryConfig;\n if (!evaluatedStates[attribute]) {\n evaluatedStates[attribute] = [];\n }\n evaluatedStates[attribute].push(value);\n }\n }\n }\n\n for (const evaluatedState of Object.keys(evaluatedStates)) {\n const values = evaluatedStates[evaluatedState];\n newTagStateAttrs[evaluatedState] = values.some((i: boolean) => i === true);\n }\n\n return newTagStateAttrs;\n};\n\nconst evaluateButtonStates = ({\n states,\n values,\n}: {\n states: string;\n values: any;\n}) => {\n if (!values?.state) {\n return {};\n }\n const splittedStates = states.split(\",\");\n if (splittedStates.length === 0) {\n return {};\n }\n return !splittedStates.includes(values.state) ? { invisible: true } : {};\n};\n\nexport { evaluateStates, evaluateButtonStates };\n","export function getValueForField({\n values = {},\n fieldName,\n fields = {},\n}: {\n values: any;\n fieldName: string;\n fields: any;\n}) {\n const fieldType = fields[fieldName]?.type || \"passthrough\";\n\n if (fieldType === \"many2one\") {\n return values[fieldName] ? values[fieldName][0] || null : false;\n } else if (fieldType === \"one2many\" || fieldType === \"many2many\") {\n return values[fieldName].map((item: any) => item.id);\n } else {\n if (values?.[fieldName]) {\n return values?.[fieldName];\n }\n\n if (fieldName.indexOf(\"'\") !== -1) {\n return fieldName;\n } else {\n return parseInt(fieldName);\n }\n }\n}\n","import { getValueForField } from \"./fieldParser\";\n\nexport const parseContext = ({\n context,\n values,\n fields,\n}: {\n context?: any;\n values?: any;\n fields?: any;\n}) => {\n // TODO: remove try/catch when we know for sure that all the incoming contexts formats are expected\n try {\n if (!context) return undefined;\n\n if (isObject(context)) {\n return context;\n }\n\n if (typeof context !== \"string\") {\n return context;\n }\n\n const parsedContextInJson = tryParseJSON(context);\n if (parsedContextInJson !== null) {\n return parsedContextInJson;\n }\n\n if (context.trim().length === 0) {\n return undefined;\n }\n\n // TODO: maybe this can be accomplished more performant and elegant with regex\n const singleQuotesReplace = context.replace(/\\\"/g, \"'\");\n const strNoWhitespaces = singleQuotesReplace.replace(/\\s/g, \"\");\n var replaceTrue = strNoWhitespaces.replace(/True/g, \"true\");\n var replaceFalse = replaceTrue.replace(/False/g, \"false\");\n const strNoClauLeft = replaceFalse.replace(/\\{/g, \"\");\n const strNoClauRight = strNoClauLeft.replace(/\\}/g, \"\");\n\n const entryValues = strNoClauRight.split(\",\");\n const valuesSplitted = entryValues.map((entry) => {\n return entry.split(\":\");\n });\n\n const parsedContext: any = {};\n\n valuesSplitted.forEach((entry) => {\n const fieldName = entry[1];\n\n if (\n entry[1].indexOf(\"'\") === -1 &&\n entry[1] !== \"true\" &&\n entry[1] !== \"false\"\n ) {\n const valueForField = getValueForField({\n values,\n fields,\n fieldName: fieldName === \"active_id\" ? \"id\" : fieldName,\n });\n parsedContext[entry[0].replace(/'/g, \"\")] = valueForField || undefined;\n } else {\n if (entry[1] === \"true\") {\n parsedContext[entry[0].replace(/'/g, \"\")] = true;\n } else if (entry[1] === \"false\") {\n parsedContext[entry[0].replace(/'/g, \"\")] = false;\n } else {\n parsedContext[entry[0].replace(/'/g, \"\")] = entry[1].replace(\n /'/g,\n \"\"\n );\n }\n }\n });\n\n return parsedContext;\n } catch (e) {\n return undefined;\n }\n};\n\nexport const parseContextFields = (context:string): string[] => {\n const fields: string[] = [];\n try {\n if (!context) return fields;\n\n if (isObject(context)) {\n return fields;\n }\n\n if (typeof context !== \"string\") {\n return fields;\n }\n\n const parsedContextInJson = tryParseJSON(context);\n if (parsedContextInJson !== null) {\n return [];\n }\n\n if (context.trim().length === 0) {\n return fields;\n }\n\n // TODO: maybe this can be accomplished more performant and elegant with regex\n const singleQuotesReplace = context.replace(/\\\"/g, \"'\");\n const strNoWhitespaces = singleQuotesReplace.replace(/\\s/g, \"\");\n var replaceTrue = strNoWhitespaces.replace(/True/g, \"true\");\n var replaceFalse = replaceTrue.replace(/False/g, \"false\");\n const strNoClauLeft = replaceFalse.replace(/\\{/g, \"\");\n const strNoClauRight = strNoClauLeft.replace(/\\}/g, \"\");\n\n const entryValues = strNoClauRight.split(\",\");\n const valuesSplitted = entryValues.map((entry) => {\n return entry.split(\":\");\n });\n\n const parsedContext: any = {};\n\n valuesSplitted.forEach((entry) => {\n const fieldName = entry[1];\n\n if (\n entry[1].indexOf(\"'\") === -1 &&\n entry[1] !== \"true\" &&\n entry[1] !== \"false\"\n ) {\n fields.push(entry[1].replace(/'/g, \"\"))\n }\n });\n\n return fields;\n } catch (e) {\n }\n return fields;\n}\n\nfunction tryParseJSON(str: string): any | null {\n try {\n const parsedJSON = JSON.parse(str.replace(/'/g, '\"'));\n return parsedJSON;\n } catch (error) {\n return null;\n }\n}\n\nfunction isObject(variable: any): boolean {\n return (\n typeof variable === \"object\" &&\n variable !== null &&\n typeof variable !== \"string\"\n );\n}\n","const parseOnChange = (onChangeString: string) => {\n const splitted = onChangeString.trim().replace(\")\", \"\").split(\"(\");\n\n const method = splitted[0];\n const argsGross = splitted[1];\n const argsSplitted = argsGross.split(\",\").map((arg) => arg.trim());\n\n return {\n method,\n args: argsSplitted,\n };\n};\n\nexport { parseOnChange };\n","// ==ClosureCompiler==\n// @output_file_name default.js\n// @compilation_level SIMPLE_OPTIMIZATIONS\n// ==/ClosureCompiler==\n// module.exports = {\n// parse: parse,\n// simplify: simplify,\n// simplifyLostLess: simplifyLostLess,\n// filter: filter,\n// stringify: stringify,\n// toContentString: toContentString,\n// getElementById: getElementById,\n// getElementsByClassName: getElementsByClassName,\n// transformStream: transformStream,\n// };\n\n/**\n * @author: Tobias Nickel\n * @created: 06.04.2015\n * I needed a small xmlparser chat can be used in a worker.\n */\n\n/**\n * @typedef tNode \n * @property {string} tagName \n * @property {object} attributes\n * @property {(tNode|string)[]} children \n **/\n\n/**\n * @typedef TParseOptions\n * @property {number} [pos]\n * @property {string[]} [noChildNodes]\n * @property {boolean} [setPos]\n * @property {boolean} [keepComments] \n * @property {boolean} [keepWhitespace]\n * @property {boolean} [simplify]\n * @property {(a: tNode, b: tNode) => boolean} [filter]\n */\n\n/**\n * parseXML / html into a DOM Object. with no validation and some failur tolerance\n * @param {string} S your XML to parse\n * @param {TParseOptions} [options] all other options:\n * @return {(tNode | string)[]}\n */\nfunction parse(S, options) {\n \"txml\";\n options = options || {};\n\n var pos = options.pos || 0;\n var keepComments = !!options.keepComments;\n var keepWhitespace = !!options.keepWhitespace;\n\n var openBracket = \"<\";\n var openBracketCC = \"<\".charCodeAt(0);\n var closeBracket = \">\";\n var closeBracketCC = \">\".charCodeAt(0);\n var minusCC = \"-\".charCodeAt(0);\n var slashCC = \"/\".charCodeAt(0);\n var exclamationCC = '!'.charCodeAt(0);\n var singleQuoteCC = \"'\".charCodeAt(0);\n var doubleQuoteCC = '\"'.charCodeAt(0);\n var openCornerBracketCC = '['.charCodeAt(0);\n var closeCornerBracketCC = ']'.charCodeAt(0);\n\n\n /**\n * parsing a list of entries\n */\n function parseChildren(tagName) {\n var children = [];\n while (S[pos]) {\n if (S.charCodeAt(pos) == openBracketCC) {\n if (S.charCodeAt(pos + 1) === slashCC) {\n var closeStart = pos + 2;\n pos = S.indexOf(closeBracket, pos);\n\n var closeTag = S.substring(closeStart, pos);\n if (closeTag.indexOf(tagName) == -1) {\n var parsedText = S.substring(0, pos).split('\\n');\n throw new Error(\n 'Unexpected close tag\\nLine: ' + (parsedText.length - 1) +\n '\\nColumn: ' + (parsedText[parsedText.length - 1].length + 1) +\n '\\nChar: ' + S[pos]\n );\n }\n\n if (pos + 1) pos += 1;\n\n return children;\n } else if (S.charCodeAt(pos + 1) === exclamationCC) {\n if (S.charCodeAt(pos + 2) == minusCC) {\n //comment support\n const startCommentPos = pos;\n while (pos !== -1 && !(S.charCodeAt(pos) === closeBracketCC && S.charCodeAt(pos - 1) == minusCC && S.charCodeAt(pos - 2) == minusCC && pos != -1)) {\n pos = S.indexOf(closeBracket, pos + 1);\n }\n if (pos === -1) {\n pos = S.length;\n }\n if (keepComments) {\n children.push(S.substring(startCommentPos, pos + 1));\n }\n } else if (\n S.charCodeAt(pos + 2) === openCornerBracketCC &&\n S.charCodeAt(pos + 8) === openCornerBracketCC &&\n S.substr(pos + 3, 5).toLowerCase() === 'cdata'\n ) {\n // cdata\n var cdataEndIndex = S.indexOf(']]>', pos);\n if (cdataEndIndex == -1) {\n children.push(S.substr(pos + 9));\n pos = S.length;\n } else {\n children.push(S.substring(pos + 9, cdataEndIndex));\n pos = cdataEndIndex + 3;\n }\n continue;\n } else {\n // doctypesupport\n const startDoctype = pos + 1;\n pos += 2;\n var encapsuled = false;\n while ((S.charCodeAt(pos) !== closeBracketCC || encapsuled === true) && S[pos]) {\n if (S.charCodeAt(pos) === openCornerBracketCC) {\n encapsuled = true;\n } else if (encapsuled === true && S.charCodeAt(pos) === closeCornerBracketCC) {\n encapsuled = false;\n }\n pos++;\n }\n children.push(S.substring(startDoctype, pos));\n }\n pos++;\n continue;\n }\n var node = parseNode();\n children.push(node);\n if (node.tagName[0] === '?') {\n children.push(...node.children);\n node.children = [];\n }\n } else {\n var text = parseText();\n if (keepWhitespace) {\n if (text.length > 0) {\n children.push(text);\n }\n } else {\n var trimmed = text.trim();\n if (trimmed.length > 0) {\n children.push(trimmed);\n }\n }\n pos++;\n }\n }\n return children;\n }\n\n /**\n * returns the text outside of texts until the first '<'\n */\n function parseText() {\n var start = pos;\n pos = S.indexOf(openBracket, pos) - 1;\n if (pos === -2)\n pos = S.length;\n return S.slice(start, pos + 1);\n }\n /**\n * returns text until the first nonAlphabetic letter\n */\n var nameSpacer = '\\r\\n\\t>/= ';\n\n function parseName() {\n var start = pos;\n while (nameSpacer.indexOf(S[pos]) === -1 && S[pos]) {\n pos++;\n }\n return S.slice(start, pos);\n }\n /**\n * is parsing a node, including tagName, Attributes and its children,\n * to parse children it uses the parseChildren again, that makes the parsing recursive\n */\n var NoChildNodes = options.noChildNodes || ['img', 'br', 'input', 'meta', 'link', 'hr'];\n\n function parseNode() {\n pos++;\n const tagName = parseName();\n const attributes = {};\n let children = [];\n\n // parsing attributes\n while (S.charCodeAt(pos) !== closeBracketCC && S[pos]) {\n var c = S.charCodeAt(pos);\n if ((c > 64 && c < 91) || (c > 96 && c < 123)) {\n //if('abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ'.indexOf(S[pos])!==-1 ){\n var name = parseName();\n // search beginning of the string\n var code = S.charCodeAt(pos);\n while (code && code !== singleQuoteCC && code !== doubleQuoteCC && !((code > 64 && code < 91) || (code > 96 && code < 123)) && code !== closeBracketCC) {\n pos++;\n code = S.charCodeAt(pos);\n }\n if (code === singleQuoteCC || code === doubleQuoteCC) {\n var value = parseString();\n if (pos === -1) {\n return {\n tagName,\n attributes,\n children,\n };\n }\n } else {\n value = null;\n pos--;\n }\n attributes[name] = value;\n }\n pos++;\n }\n // optional parsing of children\n if (S.charCodeAt(pos - 1) !== slashCC) {\n if (tagName == \"script\") {\n var start = pos + 1;\n pos = S.indexOf('</script>', pos);\n children = [S.slice(start, pos)];\n pos += 9;\n } else if (tagName == \"style\") {\n var start = pos + 1;\n pos = S.indexOf('</style>', pos);\n children = [S.slice(start, pos)];\n pos += 8;\n } else if (NoChildNodes.indexOf(tagName) === -1) {\n pos++;\n children = parseChildren(tagName);\n } else {\n pos++;\n }\n } else {\n pos++;\n }\n return {\n tagName,\n attributes,\n children,\n };\n }\n\n /**\n * is parsing a string, that starts with a char and with the same usually ' or \"\n */\n\n function parseString() {\n var startChar = S[pos];\n var startpos = pos + 1;\n pos = S.indexOf(startChar, startpos);\n return S.slice(startpos, pos);\n }\n\n /**\n *\n */\n function findElements() {\n var r = new RegExp('\\\\s' + options.attrName + '\\\\s*=[\\'\"]' + options.attrValue + '[\\'\"]').exec(S);\n if (r) {\n return r.index;\n } else {\n return -1;\n }\n }\n\n var out = null;\n if (options.attrValue !== undefined) {\n options.attrName = options.attrName || 'id';\n var out = [];\n\n while ((pos = findElements()) !== -1) {\n pos = S.lastIndexOf('<', pos);\n if (pos !== -1) {\n out.push(parseNode());\n }\n S = S.substr(pos);\n pos = 0;\n }\n } else if (options.parseNode) {\n out = parseNode();\n } else {\n out = parseChildren('');\n }\n\n if (options.filter) {\n out = filter(out, options.filter);\n }\n\n if (options.simplify) {\n return simplify(Array.isArray(out) ? out : [out]);\n }\n\n if (options.setPos) {\n out.pos = pos;\n }\n\n return out;\n}\n\n/**\n * transform the DomObject to an object that is like the object of PHP`s simple_xmp_load_*() methods.\n * this format helps you to write that is more likely to keep your program working, even if there a small changes in the XML schema.\n * be aware, that it is not possible to reproduce the original xml from a simplified version, because the order of elements is not saved.\n * therefore your program will be more flexible and easier to read.\n *\n * @param {tNode[]} children the childrenList\n */\nfunction simplify(children) {\n var out = {};\n if (!children.length) {\n return '';\n }\n\n if (children.length === 1 && typeof children[0] == 'string') {\n return children[0];\n }\n // map each object\n children.forEach(function(child) {\n if (typeof child !== 'object') {\n return;\n }\n if (!out[child.tagName])\n out[child.tagName] = [];\n var kids = simplify(child.children);\n out[child.tagName].push(kids);\n if (Object.keys(child.attributes).length && typeof kids !== 'string') {\n kids._attributes = child.attributes;\n }\n });\n\n for (var i in out) {\n if (out[i].length == 1) {\n out[i] = out[i][0];\n }\n }\n\n return out;\n}\n\n/**\n * similar to simplify, but lost less\n *\n * @param {tNode[]} children the childrenList\n */\nfunction simplifyLostLess(children, parentAttributes = {}) {\n var out = {};\n if (!children.length) {\n return out;\n }\n\n if (children.length === 1 && typeof children[0] == 'string') {\n return Object.keys(parentAttributes).length ? {\n _attributes: parentAttributes,\n value: children[0]\n } : children[0];\n }\n // map each object\n children.forEach(function(child) {\n if (typeof child !== 'object') {\n return;\n }\n if (!out[child.tagName])\n out[child.tagName] = [];\n var kids = simplifyLostLess(child.children || [], child.attributes);\n out[child.tagName].push(kids);\n if (Object.keys(child.attributes).length) {\n kids._attributes = child.attributes;\n }\n });\n\n return out;\n}\n/**\n * behaves the same way as Array.filter, if the filter method return true, the element is in the resultList\n * @params children{Array} the children of a node\n * @param f{function} the filter method\n */\nfunction filter(children, f, dept = 0, path = '') {\n var out = [];\n children.forEach(function(child, i) {\n if (typeof(child) === 'object' && f(child, i, dept, path)) out.push(child);\n if (child.children) {\n var kids = filter(child.children, f, dept + 1, (path ? path + '.' : '') + i + '.' + child.tagName);\n out = out.concat(kids);\n }\n });\n return out;\n}\n/**\n * stringify a previously parsed string object.\n * this is useful,\n * 1. to remove whitespace\n * 2. to recreate xml data, with some changed data.\n * @param {tNode} O the object to Stringify\n */\nfunction stringify(O) {\n var out = '';\n\n function writeChildren(O) {\n if (O) {\n for (var i = 0; i < O.length; i++) {\n if (typeof O[i] == 'string') {\n out += O[i].trim();\n } else {\n writeNode(O[i]);\n }\n }\n }\n }\n\n function writeNode(N) {\n out += \"<\" + N.tagName;\n for (var i in N.attributes) {\n if (N.attributes[i] === null) {\n out += ' ' + i;\n } else if (N.attributes[i].indexOf('\"') === -1) {\n out += ' ' + i + '=\"' + N.attributes[i].trim() + '\"';\n } else {\n out += ' ' + i + \"='\" + N.attributes[i].trim() + \"'\";\n }\n }\n if (N.tagName[0] === '?') {\n out += '?>';\n return;\n }\n out += '>';\n writeChildren(N.children);\n out += '</' + N.tagName + '>';\n }\n writeChildren(O);\n\n return out;\n}\n\n/**\n * use this method to read the text content, of some node.\n * It is great if you have mixed content like:\n * this text has some <b>big</b> text and a <a href=''>link</a>\n * @return {string}\n */\nfunction toContentString(tDom) {\n if (Array.isArray(tDom)) {\n var out = '';\n tDom.forEach(function(e) {\n out += ' ' + toContentString(e);\n out = out.trim();\n });\n return out;\n } else if (typeof tDom === 'object') {\n return toContentString(tDom.children)\n } else {\n return ' ' + tDom;\n }\n}\nfunction getElementById(S, id, simplified) {\n var out = parse(S, {\n attrValue: id\n });\n return simplified ? tXml.simplify(out) : out[0];\n}\nfunction getElementsByClassName(S, classname, simplified) {\n const out = parse(S, {\n attrName: 'class',\n attrValue: '[a-zA-Z0-9- ]*' + classname + '[a-zA-Z0-9- ]*'\n });\n return simplified ? tXml.simplify(out) : out;\n}\n\nexport { filter, getElementById, getElementsByClassName, parse, simplify, simplifyLostLess, stringify, toContentString };\n","export default (typeof global !== \"undefined\" ? global :\n typeof self !== \"undefined\" ? self :\n typeof window !== \"undefined\" ? window : {});","// shim for using process in browser\n// based off https://github.com/defunctzombie/node-process/blob/master/browser.js\n\nfunction defaultSetTimout() {\n throw new Error('setTimeout has not been defined');\n}\nfunction defaultClearTimeout () {\n throw new Error('clearTimeout has not been defined');\n}\nvar cachedSetTimeout = defaultSetTimout;\nvar cachedClearTimeout = defaultClearTimeout;\nif (typeof global.setTimeout === 'function') {\n cachedSetTimeout = setTimeout;\n}\nif (typeof global.clearTimeout === 'function') {\n cachedClearTimeout = clearTimeout;\n}\n\nfunction runTimeout(fun) {\n if (cachedSetTimeout === setTimeout) {\n //normal enviroments in sane situations\n return setTimeout(fun, 0);\n }\n // if setTimeout wasn't available but was latter defined\n if ((cachedSetTimeout === defaultSetTimout || !cachedSetTimeout) && setTimeout) {\n cachedSetTimeout = setTimeout;\n return setTimeout(fun, 0);\n }\n try {\n // when when somebody has screwed with setTimeout but no I.E. maddness\n return cachedSetTimeout(fun, 0);\n } catch(e){\n try {\n // When we are in I.E. but the script has been evaled so I.E. doesn't trust the global object when called normally\n return cachedSetTimeout.call(null, fun, 0);\n } catch(e){\n // same as above but when it's a version of I.E. that must have the global object for 'this', hopfully our context correct otherwise it will throw a global error\n return cachedSetTimeout.call(this, fun, 0);\n }\n }\n\n\n}\nfunction runClearTimeout(marker) {\n if (cachedClearTimeout === clearTimeout) {\n //normal enviroments in sane situations\n return clearTimeout(marker);\n }\n // if clearTimeout wasn't available but was latter defined\n if ((cachedClearTimeout === defaultClearTimeout || !cachedClearTimeout) && clearTimeout) {\n cachedClearTimeout = clearTimeout;\n return clearTimeout(marker);\n }\n try {\n // when when somebody has screwed with setTimeout but no I.E. maddness\n return cachedClearTimeout(marker);\n } catch (e){\n try {\n // When we are in I.E. but the script has been evaled so I.E. doesn't trust the global object when called normally\n return cachedClearTimeout.call(null, marker);\n } catch (e){\n // same as above but when it's a version of I.E. that must have the global object for 'this', hopfully our context correct otherwise it will throw a global error.\n // Some versions of I.E. have different rules for clearTimeout vs setTimeout\n return cachedClearTimeout.call(this, marker);\n }\n }\n\n\n\n}\nvar queue = [];\nvar draining = false;\nvar currentQueue;\nvar queueIndex = -1;\n\nfunction cleanUpNextTick() {\n if (!draining || !currentQueue) {\n return;\n }\n draining = false;\n if (currentQueue.length) {\n queue = currentQueue.concat(queue);\n } else {\n queueIndex = -1;\n }\n if (queue.length) {\n drainQueue();\n }\n}\n\nfunction drainQueue() {\n if (draining) {\n return;\n }\n var timeout = runTimeout(cleanUpNextTick);\n draining = true;\n\n var len = queue.length;\n while(len) {\n currentQueue = queue;\n queue = [];\n while (++queueIndex < len) {\n if (currentQueue) {\n currentQueue[queueIndex].run();\n }\n }\n queueIndex = -1;\n len = queue.length;\n }\n currentQueue = null;\n draining = false;\n runClearTimeout(timeout);\n}\nfunction nextTick(fun) {\n var args = new Array(arguments.length - 1);\n if (arguments.length > 1) {\n for (var i = 1; i < arguments.length; i++) {\n args[i - 1] = arguments[i];\n }\n }\n queue.push(new Item(fun, args));\n if (queue.length === 1 && !draining) {\n runTimeout(drainQueue);\n }\n}\n// v8 likes predictible objects\nfunction Item(fun, array) {\n this.fun = fun;\n this.array = array;\n}\nItem.prototype.run = function () {\n this.fun.apply(null, this.array);\n};\nvar title = 'browser';\nvar platform = 'browser';\nvar browser = true;\nvar env = {};\nvar argv = [];\nvar version = ''; // empty string to avoid regexp issues\nvar versions = {};\nvar release = {};\nvar config = {};\n\nfunction noop() {}\n\nvar on = noop;\nvar addListener = noop;\nvar once = noop;\nvar off = noop;\nvar removeListener = noop;\nvar removeAllListeners = noop;\nvar emit = noop;\n\nfunction binding(name) {\n throw new Error('process.binding is not supported');\n}\n\nfunction cwd () { return '/' }\nfunction chdir (dir) {\n throw new Error('process.chdir is not supported');\n}function umask() { return 0; }\n\n// from https://github.com/kumavis/browser-process-hrtime/blob/master/index.js\nvar performance = global.performance || {};\nvar performanceNow =\n performance.now ||\n performance.mozNow ||\n performance.msNow ||\n performance.oNow ||\n performance.webkitNow ||\n function(){ return (new Date()).getTime() };\n\n// generate timestamp or delta\n// see http://nodejs.org/api/process.html#process_process_hrtime\nfunction hrtime(previousTimestamp){\n var clocktime = performanceNow.call(performance)*1e-3;\n var seconds = Math.floor(clocktime);\n var nanoseconds = Math.floor((clocktime%1)*1e9);\n if (previousTimestamp) {\n seconds = seconds - previousTimestamp[0];\n nanoseconds = nanoseconds - previousTimestamp[1];\n if (nanoseconds<0) {\n seconds--;\n nanoseconds += 1e9;\n }\n }\n return [seconds,nanoseconds]\n}\n\nvar startTime = new Date();\nfunction uptime() {\n var currentTime = new Date();\n var dif = currentTime - startTime;\n return dif / 1000;\n}\n\nvar browser$1 = {\n nextTick: nextTick,\n title: title,\n browser: browser,\n env: env,\n argv: argv,\n version: version,\n versions: versions,\n on: on,\n addListener: addListener,\n once: once,\n off: off,\n removeListener: removeListener,\n removeAllListeners: removeAllListeners,\n emit: emit,\n binding: binding,\n cwd: cwd,\n chdir: chdir,\n umask: umask,\n hrtime: hrtime,\n platform: platform,\n release: release,\n config: config,\n uptime: uptime\n};\n\nexport default browser$1;\nexport { addListener, argv, binding, browser, chdir, config, cwd, emit, env, hrtime, nextTick, off, on, once, platform, release, removeAllListeners, removeListener, title, umask, uptime, version, versions };\n","export default {}","module.exports = require('events').EventEmitter;\n","var lookup = [];\nvar revLookup = [];\nvar Arr = typeof Uint8Array !== 'undefined' ? Uint8Array : Array;\nvar inited = false;\nfunction init () {\n inited = true;\n var code = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/';\n for (var i = 0, len = code.length; i < len; ++i) {\n lookup[i] = code[i];\n revLookup[code.charCodeAt(i)] = i;\n }\n\n revLookup['-'.charCodeAt(0)] = 62;\n revLookup['_'.charCodeAt(0)] = 63;\n}\n\nfunction toByteArray (b64) {\n if (!inited) {\n init();\n }\n var i, j, l, tmp, placeHolders, arr;\n var len = b64.length;\n\n if (len % 4 > 0) {\n throw new Error('Invalid string. Length must be a multiple of 4')\n }\n\n // the number of equal signs (place holders)\n // if there are two placeholders, than the two characters before it\n // represent one byte\n // if there is only one, then the three characters before it represent 2 bytes\n // this is just a cheap hack to not do indexOf twice\n placeHolders = b64[len - 2] === '=' ? 2 : b64[len - 1] === '=' ? 1 : 0;\n\n // base64 is 4/3 + up to two characters of the original data\n arr = new Arr(len * 3 / 4 - placeHolders);\n\n // if there are placeholders, only get up to the last complete 4 chars\n l = placeHolders > 0 ? len - 4 : len;\n\n var L = 0;\n\n for (i = 0, j = 0; i < l; i += 4, j += 3) {\n tmp = (revLookup[b64.charCodeAt(i)] << 18) | (revLookup[b64.charCodeAt(i + 1)] << 12) | (revLookup[b64.charCodeAt(i + 2)] << 6) | revLookup[b64.charCodeAt(i + 3)];\n arr[L++] = (tmp >> 16) & 0xFF;\n arr[L++] = (tmp >> 8) & 0xFF;\n arr[L++] = tmp & 0xFF;\n }\n\n if (placeHolders === 2) {\n tmp = (revLookup[b64.charCodeAt(i)] << 2) | (revLookup[b64.charCodeAt(i + 1)] >> 4);\n arr[L++] = tmp & 0xFF;\n } else if (placeHolders === 1) {\n tmp = (revLookup[b64.charCodeAt(i)] << 10) | (revLookup[b64.charCodeAt(i + 1)] << 4) | (revLookup[b64.charCodeAt(i + 2)] >> 2);\n arr[L++] = (tmp >> 8) & 0xFF;\n arr[L++] = tmp & 0xFF;\n }\n\n return arr\n}\n\nfunction tripletToBase64 (num) {\n return lookup[num >> 18 & 0x3F] + lookup[num >> 12 & 0x3F] + lookup[num >> 6 & 0x3F] + lookup[num & 0x3F]\n}\n\nfunction encodeChunk (uint8, start, end) {\n var tmp;\n var output = [];\n for (var i = start; i < end; i += 3) {\n tmp = (uint8[i] << 16) + (uint8[i + 1] << 8) + (uint8[i + 2]);\n output.push(tripletToBase64(tmp));\n }\n return output.join('')\n}\n\nfunction fromByteArray (uint8) {\n if (!inited) {\n init();\n }\n var tmp;\n var len = uint8.length;\n var extraBytes = len % 3; // if we have 1 byte left, pad 2 bytes\n var output = '';\n var parts = [];\n var maxChunkLength = 16383; // must be multiple of 3\n\n // go through the array every three bytes, we'll deal with trailing stuff later\n for (var i = 0, len2 = len - extraBytes; i < len2; i += maxChunkLength) {\n parts.push(encodeChunk(uint8, i, (i + maxChunkLength) > len2 ? len2 : (i + maxChunkLength)));\n }\n\n // pad the end with zeros, but make sure to not forget the extra bytes\n if (extraBytes === 1) {\n tmp = uint8[len - 1];\n output += lookup[tmp >> 2];\n output += lookup[(tmp << 4) & 0x3F];\n output += '==';\n } else if (extraBytes === 2) {\n tmp = (uint8[len - 2] << 8) + (uint8[len - 1]);\n output += lookup[tmp >> 10];\n output += lookup[(tmp >> 4) & 0x3F];\n output += lookup[(tmp << 2) & 0x3F];\n output += '=';\n }\n\n parts.push(output);\n\n return parts.join('')\n}\n\nfunction read (buffer, offset, isLE, mLen, nBytes) {\n var e, m;\n var eLen = nBytes * 8 - mLen - 1;\n var eMax = (1 << eLen) - 1;\n var eBias = eMax >> 1;\n var nBits = -7;\n var i = isLE ? (nBytes - 1) : 0;\n var d = isLE ? -1 : 1;\n var s = buffer[offset + i];\n\n i += d;\n\n e = s & ((1 << (-nBits)) - 1);\n s >>= (-nBits);\n nBits += eLen;\n for (; nBits > 0; e = e * 256 + buffer[offset + i], i += d, nBits -= 8) {}\n\n m = e & ((1 << (-nBits)) - 1);\n e >>= (-nBits);\n nBits += mLen;\n for (; nBits > 0; m = m * 256 + buffer[offset + i], i += d, nBits -= 8) {}\n\n if (e === 0) {\n e = 1 - eBias;\n } else if (e === eMax) {\n return m ? NaN : ((s ? -1 : 1) * Infinity)\n } else {\n m = m + Math.pow(2, mLen);\n e = e - eBias;\n }\n return (s ? -1 : 1) * m * Math.pow(2, e - mLen)\n}\n\nfunction write (buffer, value, offset, isLE, mLen, nBytes) {\n var e, m, c;\n var eLen = nBytes * 8 - mLen - 1;\n var eMax = (1 << eLen) - 1;\n var eBias = eMax >> 1;\n var rt = (mLen === 23 ? Math.pow(2, -24) - Math.pow(2, -77) : 0);\n var i = isLE ? 0 : (nBytes - 1);\n var d = isLE ? 1 : -1;\n var s = value < 0 || (value === 0 && 1 / value < 0) ? 1 : 0;\n\n value = Math.abs(value);\n\n if (isNaN(value) || value === Infinity) {\n m = isNaN(value) ? 1 : 0;\n e = eMax;\n } else {\n e = Math.floor(Math.log(value) / Math.LN2);\n if (value * (c = Math.pow(2, -e)) < 1) {\n e--;\n c *= 2;\n }\n if (e + eBias >= 1) {\n value += rt / c;\n } else {\n value += rt * Math.pow(2, 1 - eBias);\n }\n if (value * c >= 2) {\n e++;\n c /= 2;\n }\n\n if (e + eBias >= eMax) {\n m = 0;\n e = eMax;\n } else if (e + eBias >= 1) {\n m = (value * c - 1) * Math.pow(2, mLen);\n e = e + eBias;\n } else {\n m = value * Math.pow(2, eBias - 1) * Math.pow(2, mLen);\n e = 0;\n }\n }\n\n for (; mLen >= 8; buffer[offset + i] = m & 0xff, i += d, m /= 256, mLen -= 8) {}\n\n e = (e << mLen) | m;\n eLen += mLen;\n for (; eLen > 0; buffer[offset + i] = e & 0xff, i += d, e /= 256, eLen -= 8) {}\n\n buffer[offset + i - d] |= s * 128;\n}\n\nvar toString = {}.toString;\n\nvar isArray = Array.isArray || function (arr) {\n return toString.call(arr) == '[object Array]';\n};\n\n/*!\n * The buffer module from node.js, for the browser.\n *\n * @author Feross Aboukhadijeh <feross@feross.org> <http://feross.org>\n * @license MIT\n */\n\nvar INSPECT_MAX_BYTES = 50;\n\n/**\n * If `Buffer.TYPED_ARRAY_SUPPORT`:\n * === true Use Uint8Array implementation (fastest)\n * === false Use Object implementation (most compatible, even IE6)\n *\n * Browsers that support typed arrays are IE 10+, Firefox 4+, Chrome 7+, Safari 5.1+,\n * Opera 11.6+, iOS 4.2+.\n *\n * Due to various browser bugs, sometimes the Object implementation will be used even\n * when the browser supports typed arrays.\n *\n * Note:\n *\n * - Firefox 4-29 lacks support for adding new properties to `Uint8Array` instances,\n * See: https://bugzilla.mozilla.org/show_bug.cgi?id=695438.\n *\n * - Chrome 9-10 is missing the `TypedArray.prototype.subarray` function.\n *\n * - IE10 has a broken `TypedArray.prototype.subarray` function which returns arrays of\n * incorrect length in some situations.\n\n * We detect these buggy browsers and set `Buffer.TYPED_ARRAY_SUPPORT` to `false` so they\n * get the Object implementation, which is slower but behaves correctly.\n */\nBuffer.TYPED_ARRAY_SUPPORT = global.TYPED_ARRAY_SUPPORT !== undefined\n ? global.TYPED_ARRAY_SUPPORT\n : true;\n\n/*\n * Export kMaxLength after typed array support is determined.\n */\nvar _kMaxLength = kMaxLength();\n\nfunction kMaxLength () {\n return Buffer.TYPED_ARRAY_SUPPORT\n ? 0x7fffffff\n : 0x3fffffff\n}\n\nfunction createBuffer (that, length) {\n if (kMaxLength() < length) {\n throw new RangeError('Invalid typed array length')\n }\n if (Buffer.TYPED_ARRAY_SUPPORT) {\n // Return an augmented `Uint8Array` instance, for best performance\n that = new Uint8Array(length);\n that.__proto__ = Buffer.prototype;\n } else {\n // Fallback: Return an object instance of the Buffer class\n if (that === null) {\n that = new Buffer(length);\n }\n that.length = length;\n }\n\n return that\n}\n\n/**\n * The Buffer constructor returns instances of `Uint8Array` that have their\n * prototype changed to `Buffer.prototype`. Furthermore, `Buffer` is a subclass of\n * `Uint8Array`, so the returned instances will have all the node `Buffer` methods\n * and the `Uint8Array` methods. Square bracket notation works as expected -- it\n * returns a single octet.\n *\n * The `Uint8Array` prototype remains unmodified.\n */\n\nfunction Buffer (arg, encodingOrOffset, length) {\n if (!Buffer.TYPED_ARRAY_SUPPORT && !(this instanceof Buffer)) {\n return new Buffer(arg, encodingOrOffset, length)\n }\n\n // Common case.\n if (typeof arg === 'number') {\n if (typeof encodingOrOffset === 'string') {\n throw new Error(\n 'If encoding is specified then the first argument must be a string'\n )\n }\n return allocUnsafe(this, arg)\n }\n return from(this, arg, encodingOrOffset, length)\n}\n\nBuffer.poolSize = 8192; // not used by this implementation\n\n// TODO: Legacy, not needed anymore. Remove in next major version.\nBuffer._augment = function (arr) {\n arr.__proto__ = Buffer.prototype;\n return arr\n};\n\nfunction from (that, value, encodingOrOffset, length) {\n if (typeof value === 'number') {\n throw new TypeError('\"value\" argument must not be a number')\n }\n\n if (typeof ArrayBuffer !== 'undefined' && value instanceof ArrayBuffer) {\n return fromArrayBuffer(that, value, encodingOrOffset, length)\n }\n\n if (typeof value === 'string') {\n return fromString(that, value, encodingOrOffset)\n }\n\n return fromObject(that, value)\n}\n\n/**\n * Functionally equivalent to Buffer(arg, encoding) but throws a TypeError\n * if value is a number.\n * Buffer.from(str[, encoding])\n * Buffer.from(array)\n * Buffer.from(buffer)\n * Buffer.from(arrayBuffer[, byteOffset[, length]])\n **/\nBuffer.from = function (value, encodingOrOffset, length) {\n return from(null, value, encodingOrOffset, length)\n};\n\nif (Buffer.TYPED_ARRAY_SUPPORT) {\n Buffer.prototype.__proto__ = Uint8Array.prototype;\n Buffer.__proto__ = Uint8Array;\n}\n\nfunction assertSize (size) {\n if (typeof size !== 'number') {\n throw new TypeError('\"size\" argument must be a number')\n } else if (size < 0) {\n throw new RangeError('\"size\" argument must not be negative')\n }\n}\n\nfunction alloc (that, size, fill, encoding) {\n assertSize(size);\n if (size <= 0) {\n return createBuffer(that, size)\n }\n if (fill !== undefined) {\n // Only pay attention to encoding if it's a string. This\n // prevents accidentally sending in a number that would\n // be interpretted as a start offset.\n return typeof encoding === 'string'\n ? createBuffer(that, size).fill(fill, encoding)\n : createBuffer(that, size).fill(fill)\n }\n return createBuffer(that, size)\n}\n\n/**\n * Creates a new filled Buffer instance.\n * alloc(size[, fill[, encoding]])\n **/\nBuffer.alloc = function (size, fill, encoding) {\n return alloc(null, size, fill, encoding)\n};\n\nfunction allocUnsafe (that, size) {\n assertSize(size);\n that = createBuffer(that, size < 0 ? 0 : checked(size) | 0);\n if (!Buffer.TYPED_ARRAY_SUPPORT) {\n for (var i = 0; i < size; ++i) {\n that[i] = 0;\n }\n }\n return that\n}\n\n/**\n * Equivalent to Buffer(num), by default creates a non-zero-filled Buffer instance.\n * */\nBuffer.allocUnsafe = function (size) {\n return allocUnsafe(null, size)\n};\n/**\n * Equivalent to SlowBuffer(num), by default creates a non-zero-filled Buffer instance.\n */\nBuffer.allocUnsafeSlow = function (size) {\n return allocUnsafe(null, size)\n};\n\nfunction fromString (that, string, encoding) {\n if (typeof encoding !== 'string' || encoding === '') {\n encoding = 'utf8';\n }\n\n if (!Buffer.isEncoding(encoding)) {\n throw new TypeError('\"encoding\" must be a valid string encoding')\n }\n\n var length = byteLength(string, encoding) | 0;\n that = createBuffer(that, length);\n\n var actual = that.write(string, encoding);\n\n if (actual !== length) {\n // Writing a hex string, for example, that contains invalid characters will\n // cause everything after the first invalid character to be ignored. (e.g.\n // 'abxxcd' will be treated as 'ab')\n that = that.slice(0, actual);\n }\n\n return that\n}\n\nfunction fromArrayLike (that, array) {\n var length = array.length < 0 ? 0 : checked(array.length) | 0;\n that = createBuffer(that, length);\n for (var i = 0; i < length; i += 1) {\n that[i] = array[i] & 255;\n }\n return that\n}\n\nfunction fromArrayBuffer (that, array, byteOffset, length) {\n array.byteLength; // this throws if `array` is not a valid ArrayBuffer\n\n if (byteOffset < 0 || array.byteLength < byteOffset) {\n throw new RangeError('\\'offset\\' is out of bounds')\n }\n\n if (array.byteLength < byteOffset + (length || 0)) {\n throw new RangeError('\\'length\\' is out of bounds')\n }\n\n if (byteOffset === undefined && length === undefined) {\n array = new Uint8Array(array);\n } else if (length === undefined) {\n array = new Uint8Array(array, byteOffset);\n } else {\n array = new Uint8Array(array, byteOffset, length);\n }\n\n if (Buffer.TYPED_ARRAY_SUPPORT) {\n // Return an augmented `Uint8Array` instance, for best performance\n that = array;\n that.__proto__ = Buffer.prototype;\n } else {\n // Fallback: Return an object instance of the Buffer class\n that = fromArrayLike(that, array);\n }\n return that\n}\n\nfunction fromObject (that, obj) {\n if (internalIsBuffer(obj)) {\n var len = checked(obj.length) | 0;\n that = createBuffer(that, len);\n\n if (that.length === 0) {\n return that\n }\n\n obj.copy(that, 0, 0, len);\n return that\n }\n\n if (obj) {\n if ((typeof ArrayBuffer !== 'undefined' &&\n obj.buffer instanceof ArrayBuffer) || 'length' in obj) {\n if (typeof obj.length !== 'number' || isnan(obj.length)) {\n return createBuffer(that, 0)\n }\n return fromArrayLike(that, obj)\n }\n\n if (obj.type === 'Buffer' && isArray(obj.data)) {\n return fromArrayLike(that, obj.data)\n }\n }\n\n throw new TypeError('First argument must be a string, Buffer, ArrayBuffer, Array, or array-like object.')\n}\n\nfunction checked (length) {\n // Note: cannot use `length < kMaxLength()` here because that fails when\n // length is NaN (which is otherwise coerced to zero.)\n if (length >= kMaxLength()) {\n throw new RangeError('Attempt to allocate Buffer larger than maximum ' +\n 'size: 0x' + kMaxLength().toString(16) + ' bytes')\n }\n return length | 0\n}\n\nfunction SlowBuffer (length) {\n if (+length != length) { // eslint-disable-line eqeqeq\n length = 0;\n }\n return Buffer.alloc(+length)\n}\nBuffer.isBuffer = isBuffer;\nfunction internalIsBuffer (b) {\n return !!(b != null && b._isBuffer)\n}\n\nBuffer.compare = function compare (a, b) {\n if (!internalIsBuffer(a) || !internalIsBuffer(b)) {\n throw new TypeError('Arguments must be Buffers')\n }\n\n if (a === b) return 0\n\n var x = a.length;\n var y = b.length;\n\n for (var i = 0, len = Math.min(x, y); i < len; ++i) {\n if (a[i] !== b[i]) {\n x = a[i];\n y = b[i];\n break\n }\n }\n\n if (x < y) return -1\n if (y < x) return 1\n return 0\n};\n\nBuffer.isEncoding = function isEncoding (encoding) {\n switch (String(encoding).toLowerCase()) {\n case 'hex':\n case 'utf8':\n case 'utf-8':\n case 'ascii':\n case 'latin1':\n case 'binary':\n case 'base64':\n case 'ucs2':\n case 'ucs-2':\n case 'utf16le':\n case 'utf-16le':\n return true\n default:\n return false\n }\n};\n\nBuffer.concat = function concat (list, length) {\n if (!isArray(list)) {\n throw new TypeError('\"list\" argument must be an Array of Buffers')\n }\n\n if (list.length === 0) {\n return Buffer.alloc(0)\n }\n\n var i;\n if (length === undefined) {\n length = 0;\n for (i = 0; i < list.length; ++i) {\n length += list[i].length;\n }\n }\n\n var buffer = Buffer.allocUnsafe(length);\n var pos = 0;\n for (i = 0; i < list.length; ++i) {\n var buf = list[i];\n if (!internalIsBuffer(buf)) {\n throw new TypeError('\"list\" argument must be an Array of Buffers')\n }\n buf.copy(buffer, pos);\n pos += buf.length;\n }\n return buffer\n};\n\nfunction byteLength (string, encoding) {\n if (internalIsBuffer(string)) {\n return string.length\n }\n if (typeof ArrayBuffer !== 'undefined' && typeof ArrayBuffer.isView === 'function' &&\n (ArrayBuffer.isView(string) || string instanceof ArrayBuffer)) {\n return string.byteLength\n }\n if (typeof string !== 'string') {\n string = '' + string;\n }\n\n var len = string.length;\n if (len === 0) return 0\n\n // Use a for loop to avoid recursion\n var loweredCase = false;\n for (;;) {\n switch (encoding) {\n case 'ascii':\n case 'latin1':\n case 'binary':\n return len\n case 'utf8':\n case 'utf-8':\n case undefined:\n return utf8ToBytes(string).length\n case 'ucs2':\n case 'ucs-2':\n case 'utf16le':\n case 'utf-16le':\n return len * 2\n case 'hex':\n return len >>> 1\n case 'base64':\n return base64ToBytes(string).length\n default:\n if (loweredCase) return utf8ToBytes(string).length // assume utf8\n encoding = ('' + encoding).toLowerCase();\n loweredCase = true;\n }\n }\n}\nBuffer.byteLength = byteLength;\n\nfunction slowToString (encoding, start, end) {\n var loweredCase = false;\n\n // No need to verify that \"this.length <= MAX_UINT32\" since it's a read-only\n // property of a typed array.\n\n // This behaves neither like String nor Uint8Array in that we set start/end\n // to their upper/lower bounds if the value passed is out of range.\n // undefined is handled specially as per ECMA-262 6th Edition,\n // Section 13.3.3.7 Runtime Semantics: KeyedBindingInitialization.\n if (start === undefined || start < 0) {\n start = 0;\n }\n // Return early if start > this.length. Done here to prevent potential uint32\n // coercion fail below.\n if (start > this.length) {\n return ''\n }\n\n if (end === undefined || end > this.length) {\n end = this.length;\n }\n\n if (end <= 0) {\n return ''\n }\n\n // Force coersion to uint32. This will also coerce falsey/NaN values to 0.\n end >>>= 0;\n start >>>= 0;\n\n if (end <= start) {\n return ''\n }\n\n if (!encoding) encoding = 'utf8';\n\n while (true) {\n switch (encoding) {\n case 'hex':\n return hexSlice(this, start, end)\n\n case 'utf8':\n case 'utf-8':\n return utf8Slice(this, start, end)\n\n case 'ascii':\n return asciiSlice(this, start, end)\n\n case 'latin1':\n case 'binary':\n return latin1Slice(this, start, end)\n\n case 'base64':\n return base64Slice(this, start, end)\n\n case 'ucs2':\n case 'ucs-2':\n case 'utf16le':\n case 'utf-16le':\n return utf16leSlice(this, start, end)\n\n default:\n if (loweredCase) throw new TypeError('Unknown encoding: ' + encoding)\n encoding = (encoding + '').toLowerCase();\n loweredCase = true;\n }\n }\n}\n\n// The property is used by `Buffer.isBuffer` and `is-buffer` (in Safari 5-7) to detect\n// Buffer instances.\nBuffer.prototype._isBuffer = true;\n\nfunction swap (b, n, m) {\n var i = b[n];\n b[n] = b[m];\n b[m] = i;\n}\n\nBuffer.prototype.swap16 = function swap16 () {\n var len = this.length;\n if (len % 2 !== 0) {\n throw new RangeError('Buffer size must be a multiple of 16-bits')\n }\n for (var i = 0; i < len; i += 2) {\n swap(this, i, i + 1);\n }\n return this\n};\n\nBuffer.prototype.swap32 = function swap32 () {\n var len = this.length;\n if (len % 4 !== 0) {\n throw new RangeError('Buffer size must be a multiple of 32-bits')\n }\n for (var i = 0; i < len; i += 4) {\n swap(this, i, i + 3);\n swap(this, i + 1, i + 2);\n }\n return this\n};\n\nBuffer.prototype.swap64 = function swap64 () {\n var len = this.length;\n if (len % 8 !== 0) {\n throw new RangeError('Buffer size must be a multiple of 64-bits')\n }\n for (var i = 0; i < len; i += 8) {\n swap(this, i, i + 7);\n swap(this, i + 1, i + 6);\n swap(this, i + 2, i + 5);\n swap(this, i + 3, i + 4);\n }\n return this\n};\n\nBuffer.prototype.toString = function toString () {\n var length = this.length | 0;\n if (length === 0) return ''\n if (arguments.length === 0) return utf8Slice(this, 0, length)\n return slowToString.apply(this, arguments)\n};\n\nBuffer.prototype.equals = function equals (b) {\n if (!internalIsBuffer(b)) throw new TypeError('Argument must be a Buffer')\n if (this === b) return true\n return Buffer.compare(this, b) === 0\n};\n\nBuffer.prototype.inspect = function inspect () {\n var str = '';\n var max = INSPECT_MAX_BYTES;\n if (this.length > 0) {\n str = this.toString('hex', 0, max).match(/.{2}/g).join(' ');\n if (this.length > max) str += ' ... ';\n }\n return '<Buffer ' + str + '>'\n};\n\nBuffer.prototype.compare = function compare (target, start, end, thisStart, thisEnd) {\n if (!internalIsBuffer(target)) {\n throw new TypeError('Argument must be a Buffer')\n }\n\n if (start === undefined) {\n start = 0;\n }\n if (end === undefined) {\n end = target ? target.length : 0;\n }\n if (thisStart === undefined) {\n thisStart = 0;\n }\n if (thisEnd === undefined) {\n thisEnd = this.length;\n }\n\n if (start < 0 || end > target.length || thisStart < 0 || thisEnd > this.length) {\n throw new RangeError('out of range index')\n }\n\n if (thisStart >= thisEnd && start >= end) {\n return 0\n }\n if (thisStart >= thisEnd) {\n return -1\n }\n if (start >= end) {\n return 1\n }\n\n start >>>= 0;\n end >>>= 0;\n thisStart >>>= 0;\n thisEnd >>>= 0;\n\n if (this === target) return 0\n\n var x = thisEnd - thisStart;\n var y = end - start;\n var len = Math.min(x, y);\n\n var thisCopy = this.slice(thisStart, thisEnd);\n var targetCopy = target.slice(start, end);\n\n for (var i = 0; i < len; ++i) {\n if (thisCopy[i] !== targetCopy[i]) {\n x = thisCopy[i];\n y = targetCopy[i];\n break\n }\n }\n\n if (x < y) return -1\n if (y < x) return 1\n return 0\n};\n\n// Finds either the first index of `val` in `buffer` at offset >= `byteOffset`,\n// OR the last index of `val` in `buffer` at offset <= `byteOffset`.\n//\n// Arguments:\n// - buffer - a Buffer to search\n// - val - a string, Buffer, or number\n// - byteOffset - an index into `buffer`; will be clamped to an int32\n// - encoding - an optional encoding, relevant is val is a string\n// - dir - true for indexOf, false for lastIndexOf\nfunction bidirectionalIndexOf (buffer, val, byteOffset, encoding, dir) {\n // Empty buffer means no match\n if (buffer.length === 0) return -1\n\n // Normalize byteOffset\n if (typeof byteOffset === 'string') {\n encoding = byteOffset;\n byteOffset = 0;\n } else if (byteOffset > 0x7fffffff) {\n byteOffset = 0x7fffffff;\n } else if (byteOffset < -0x80000000) {\n byteOffset = -0x80000000;\n }\n byteOffset = +byteOffset; // Coerce to Number.\n if (isNaN(byteOffset)) {\n // byteOffset: it it's undefined, null, NaN, \"foo\", etc, search whole buffer\n byteOffset = dir ? 0 : (buffer.length - 1);\n }\n\n // Normalize byteOffset: negative offsets start from the end of the buffer\n if (byteOffset < 0) byteOffset = buffer.length + byteOffset;\n if (byteOffset >= buffer.length) {\n if (dir) return -1\n else byteOffset = buffer.length - 1;\n } else if (byteOffset < 0) {\n if (dir) byteOffset = 0;\n else return -1\n }\n\n // Normalize val\n if (typeof val === 'string') {\n val = Buffer.from(val, encoding);\n }\n\n // Finally, search either indexOf (if dir is true) or lastIndexOf\n if (internalIsBuffer(val)) {\n // Special case: looking for empty string/buffer always fails\n if (val.length === 0) {\n return -1\n }\n return arrayIndexOf(buffer, val, byteOffset, encoding, dir)\n } else if (typeof val === 'number') {\n val = val & 0xFF; // Search for a byte value [0-255]\n if (Buffer.TYPED_ARRAY_SUPPORT &&\n typeof Uint8Array.prototype.indexOf === 'function') {\n if (dir) {\n return Uint8Array.prototype.indexOf.call(buffer, val, byteOffset)\n } else {\n return Uint8Array.prototype.lastIndexOf.call(buffer, val, byteOffset)\n }\n }\n return arrayIndexOf(buffer, [ val ], byteOffset, encoding, dir)\n }\n\n throw new TypeError('val must be string, number or Buffer')\n}\n\nfunction arrayIndexOf (arr, val, byteOffset, encoding, dir) {\n var indexSize = 1;\n var arrLength = arr.length;\n var valLength = val.length;\n\n if (encoding !== undefined) {\n encoding = String(encoding).toLowerCase();\n if (encoding === 'ucs2' || encoding === 'ucs-2' ||\n encoding === 'utf16le' || encoding === 'utf-16le') {\n if (arr.length < 2 || val.length < 2) {\n return -1\n }\n indexSize = 2;\n arrLength /= 2;\n valLength /= 2;\n byteOffset /= 2;\n }\n }\n\n function read (buf, i) {\n if (indexSize === 1) {\n return buf[i]\n } else {\n return buf.readUInt16BE(i * indexSize)\n }\n }\n\n var i;\n if (dir) {\n var foundIndex = -1;\n for (i = byteOffset; i < arrLength; i++) {\n if (read(arr, i) === read(val, foundIndex === -1 ? 0 : i - foundIndex)) {\n if (foundIndex === -1) foundIndex = i;\n if (i - foundIndex + 1 === valLength) return foundIndex * indexSize\n } else {\n if (foundIndex !== -1) i -= i - foundIndex;\n foundIndex = -1;\n }\n }\n } else {\n if (byteOffset + valLength > arrLength) byteOffset = arrLength - valLength;\n for (i = byteOffset; i >= 0; i--) {\n var found = true;\n for (var j = 0; j < valLength; j++) {\n if (read(arr, i + j) !== read(val, j)) {\n found = false;\n break\n }\n }\n if (found) return i\n }\n }\n\n return -1\n}\n\nBuffer.prototype.includes = function includes (val, byteOffset, encoding) {\n return this.indexOf(val, byteOffset, encoding) !== -1\n};\n\nBuffer.prototype.indexOf = function indexOf (val, byteOffset, encoding) {\n return bidirectionalIndexOf(this, val, byteOffset, encoding, true)\n};\n\nBuffer.prototype.lastIndexOf = function lastIndexOf (val, byteOffset, encoding) {\n return bidirectionalIndexOf(this, val, byteOffset, encoding, false)\n};\n\nfunction hexWrite (buf, string, offset, length) {\n offset = Number(offset) || 0;\n var remaining = buf.length - offset;\n if (!length) {\n length = remaining;\n } else {\n length = Number(length);\n if (length > remaining) {\n length = remaining;\n }\n }\n\n // must be an even number of digits\n var strLen = string.length;\n if (strLen % 2 !== 0) throw new TypeError('Invalid hex string')\n\n if (length > strLen / 2) {\n length = strLen / 2;\n }\n for (var i = 0; i < length; ++i) {\n var parsed = parseInt(string.substr(i * 2, 2), 16);\n if (isNaN(parsed)) return i\n buf[offset + i] = parsed;\n }\n return i\n}\n\nfunction utf8Write (buf, string, offset, length) {\n return blitBuffer(utf8ToBytes(string, buf.length - offset), buf, offset, length)\n}\n\nfunction asciiWrite (buf, string, offset, length) {\n return blitBuffer(asciiToBytes(string), buf, offset, length)\n}\n\nfunction latin1Write (buf, string, offset, length) {\n return asciiWrite(buf, string, offset, length)\n}\n\nfunction base64Write (buf, string, offset, length) {\n return blitBuffer(base64ToBytes(string), buf, offset, length)\n}\n\nfunction ucs2Write (buf, string, offset, length) {\n return blitBuffer(utf16leToBytes(string, buf.length - offset), buf, offset, length)\n}\n\nBuffer.prototype.write = function write (string, offset, length, encoding) {\n // Buffer#write(string)\n if (offset === undefined) {\n encoding = 'utf8';\n length = this.length;\n offset = 0;\n // Buffer#write(string, encoding)\n } else if (length === undefined && typeof offset === 'string') {\n encoding = offset;\n length = this.length;\n offset = 0;\n // Buffer#write(string, offset[, length][, encoding])\n } else if (isFinite(offset)) {\n offset = offset | 0;\n if (isFinite(length)) {\n length = length | 0;\n if (encoding === undefined) encoding = 'utf8';\n } else {\n encoding = length;\n length = undefined;\n }\n // legacy write(string, encoding, offset, length) - remove in v0.13\n } else {\n throw new Error(\n 'Buffer.write(string, encoding, offset[, length]) is no longer supported'\n )\n }\n\n var remaining = this.length - offset;\n if (length === undefined || length > remaining) length = remaining;\n\n if ((string.length > 0 && (length < 0 || offset < 0)) || offset > this.length) {\n throw new RangeError('Attempt to write outside buffer bounds')\n }\n\n if (!encoding) encoding = 'utf8';\n\n var loweredCase = false;\n for (;;) {\n switch (encoding) {\n case 'hex':\n return hexWrite(this, string, offset, length)\n\n case 'utf8':\n case 'utf-8':\n return utf8Write(this, string, offset, length)\n\n case 'ascii':\n return asciiWrite(this, string, offset, length)\n\n case 'latin1':\n case 'binary':\n return latin1Write(this, string, offset, length)\n\n case 'base64':\n // Warning: maxLength not taken into account in base64Write\n return base64Write(this, string, offset, length)\n\n case 'ucs2':\n case 'ucs-2':\n case 'utf16le':\n case 'utf-16le':\n return ucs2Write(this, string, offset, length)\n\n default:\n if (loweredCase) throw new TypeError('Unknown encoding: ' + encoding)\n encoding = ('' + encoding).toLowerCase();\n loweredCase = true;\n }\n }\n};\n\nBuffer.prototype.toJSON = function toJSON () {\n return {\n type: 'Buffer',\n data: Array.prototype.slice.call(this._arr || this, 0)\n }\n};\n\nfunction base64Slice (buf, start, end) {\n if (start === 0 && end === buf.length) {\n return fromByteArray(buf)\n } else {\n return fromByteArray(buf.slice(start, end))\n }\n}\n\nfunction utf8Slice (buf, start, end) {\n end = Math.min(buf.length, end);\n var res = [];\n\n var i = start;\n while (i < end) {\n var firstByte = buf[i];\n var codePoint = null;\n var bytesPerSequence = (firstByte > 0xEF) ? 4\n : (firstByte > 0xDF) ? 3\n : (firstByte > 0xBF) ? 2\n : 1;\n\n if (i + bytesPerSequence <= end) {\n var secondByte, thirdByte, fourthByte, tempCodePoint;\n\n switch (bytesPerSequence) {\n case 1:\n if (firstByte < 0x80) {\n codePoint = firstByte;\n }\n break\n case 2:\n secondByte = buf[i + 1];\n if ((secondByte & 0xC0) === 0x80) {\n tempCodePoint = (firstByte & 0x1F) << 0x6 | (secondByte & 0x3F);\n if (tempCodePoint > 0x7F) {\n codePoint = tempCodePoint;\n }\n }\n break\n case 3:\n secondByte = buf[i + 1];\n thirdByte = buf[i + 2];\n if ((secondByte & 0xC0) === 0x80 && (thirdByte & 0xC0) === 0x80) {\n tempCodePoint = (firstByte & 0xF) << 0xC | (secondByte & 0x3F) << 0x6 | (thirdByte & 0x3F);\n if (tempCodePoint > 0x7FF && (tempCodePoint < 0xD800 || tempCodePoint > 0xDFFF)) {\n codePoint = tempCodePoint;\n }\n }\n break\n case 4:\n secondByte = buf[i + 1];\n thirdByte = buf[i + 2];\n fourthByte = buf[i + 3];\n if ((secondByte & 0xC0) === 0x80 && (thirdByte & 0xC0) === 0x80 && (fourthByte & 0xC0) === 0x80) {\n tempCodePoint = (firstByte & 0xF) << 0x12 | (secondByte & 0x3F) << 0xC | (thirdByte & 0x3F) << 0x6 | (fourthByte & 0x3F);\n if (tempCodePoint > 0xFFFF && tempCodePoint < 0x110000) {\n codePoint = tempCodePoint;\n }\n }\n }\n }\n\n if (codePoint === null) {\n // we did not generate a valid codePoint so insert a\n // replacement char (U+FFFD) and advance only 1 byte\n codePoint = 0xFFFD;\n bytesPerSequence = 1;\n } else if (codePoint > 0xFFFF) {\n // encode to utf16 (surrogate pair dance)\n codePoint -= 0x10000;\n res.push(codePoint >>> 10 & 0x3FF | 0xD800);\n codePoint = 0xDC00 | codePoint & 0x3FF;\n }\n\n res.push(codePoint);\n i += bytesPerSequence;\n }\n\n return decodeCodePointsArray(res)\n}\n\n// Based on http://stackoverflow.com/a/22747272/680742, the browser with\n// the lowest limit is Chrome, with 0x10000 args.\n// We go 1 magnitude less, for safety\nvar MAX_ARGUMENTS_LENGTH = 0x1000;\n\nfunction decodeCodePointsArray (codePoints) {\n var len = codePoints.length;\n if (len <= MAX_ARGUMENTS_LENGTH) {\n return String.fromCharCode.apply(String, codePoints) // avoid extra slice()\n }\n\n // Decode in chunks to avoid \"call stack size exceeded\".\n var res = '';\n var i = 0;\n while (i < len) {\n res += String.fromCharCode.apply(\n String,\n codePoints.slice(i, i += MAX_ARGUMENTS_LENGTH)\n );\n }\n return res\n}\n\nfunction asciiSlice (buf, start, end) {\n var ret = '';\n end = Math.min(buf.length, end);\n\n for (var i = start; i < end; ++i) {\n ret += String.fromCharCode(buf[i] & 0x7F);\n }\n return ret\n}\n\nfunction latin1Slice (buf, start, end) {\n var ret = '';\n end = Math.min(buf.length, end);\n\n for (var i = start; i < end; ++i) {\n ret += String.fromCharCode(buf[i]);\n }\n return ret\n}\n\nfunction hexSlice (buf, start, end) {\n var len = buf.length;\n\n if (!start || start < 0) start = 0;\n if (!end || end < 0 || end > len) end = len;\n\n var out = '';\n for (var i = start; i < end; ++i) {\n out += toHex(buf[i]);\n }\n return out\n}\n\nfunction utf16leSlice (buf, start, end) {\n var bytes = buf.slice(start, end);\n var res = '';\n for (var i = 0; i < bytes.length; i += 2) {\n res += String.fromCharCode(bytes[i] + bytes[i + 1] * 256);\n }\n return res\n}\n\nBuffer.prototype.slice = function slice (start, end) {\n var len = this.length;\n start = ~~start;\n end = end === undefined ? len : ~~end;\n\n if (start < 0) {\n start += len;\n if (start < 0) start = 0;\n } else if (start > len) {\n start = len;\n }\n\n if (end < 0) {\n end += len;\n if (end < 0) end = 0;\n } else if (end > len) {\n end = len;\n }\n\n if (end < start) end = start;\n\n var newBuf;\n if (Buffer.TYPED_ARRAY_SUPPORT) {\n newBuf = this.subarray(start, end);\n newBuf.__proto__ = Buffer.prototype;\n } else {\n var sliceLen = end - start;\n newBuf = new Buffer(sliceLen, undefined);\n for (var i = 0; i < sliceLen; ++i) {\n newBuf[i] = this[i + start];\n }\n }\n\n return newBuf\n};\n\n/*\n * Need to make sure that buffer isn't trying to write out of bounds.\n */\nfunction checkOffset (offset, ext, length) {\n if ((offset % 1) !== 0 || offset < 0) throw new RangeError('offset is not uint')\n if (offset + ext > length) throw new RangeError('Trying to access beyond buffer length')\n}\n\nBuffer.prototype.readUIntLE = function readUIntLE (offset, byteLength, noAssert) {\n offset = offset | 0;\n byteLength = byteLength | 0;\n if (!noAssert) checkOffset(offset, byteLength, this.length);\n\n var val = this[offset];\n var mul = 1;\n var i = 0;\n while (++i < byteLength && (mul *= 0x100)) {\n val += this[offset + i] * mul;\n }\n\n return val\n};\n\nBuffer.prototype.readUIntBE = function readUIntBE (offset, byteLength, noAssert) {\n offset = offset | 0;\n byteLength = byteLength | 0;\n if (!noAssert) {\n checkOffset(offset, byteLength, this.length);\n }\n\n var val = this[offset + --byteLength];\n var mul = 1;\n while (byteLength > 0 && (mul *= 0x100)) {\n val += this[offset + --byteLength] * mul;\n }\n\n return val\n};\n\nBuffer.prototype.readUInt8 = function readUInt8 (offset, noAssert) {\n if (!noAssert) checkOffset(offset, 1, this.length);\n return this[offset]\n};\n\nBuffer.prototype.readUInt16LE = function readUInt16LE (offset, noAssert) {\n if (!noAssert) checkOffset(offset, 2, this.length);\n return this[offset] | (this[offset + 1] << 8)\n};\n\nBuffer.prototype.readUInt16BE = function readUInt16BE (offset, noAssert) {\n if (!noAssert) checkOffset(offset, 2, this.length);\n return (this[offset] << 8) | this[offset + 1]\n};\n\nBuffer.prototype.readUInt32LE = function readUInt32LE (offset, noAssert) {\n if (!noAssert) checkOffset(offset, 4, this.length);\n\n return ((this[offset]) |\n (this[offset + 1] << 8) |\n (this[offset + 2] << 16)) +\n (this[offset + 3] * 0x1000000)\n};\n\nBuffer.prototype.readUInt32BE = function readUInt32BE (offset, noAssert) {\n if (!noAssert) checkOffset(offset, 4, this.length);\n\n return (this[offset] * 0x1000000) +\n ((this[offset + 1] << 16) |\n (this[offset + 2] << 8) |\n this[offset + 3])\n};\n\nBuffer.prototype.readIntLE = function readIntLE (offset, byteLength, noAssert) {\n offset = offset | 0;\n byteLength = byteLength | 0;\n if (!noAssert) checkOffset(offset, byteLength, this.length);\n\n var val = this[offset];\n var mul = 1;\n var i = 0;\n while (++i < byteLength && (mul *= 0x100)) {\n val += this[offset + i] * mul;\n }\n mul *= 0x80;\n\n if (val >= mul) val -= Math.pow(2, 8 * byteLength);\n\n return val\n};\n\nBuffer.prototype.readIntBE = function readIntBE (offset, byteLength, noAssert) {\n offset = offset | 0;\n byteLength = byteLength | 0;\n if (!noAssert) checkOffset(offset, byteLength, this.length);\n\n var i = byteLength;\n var mul = 1;\n var val = this[offset + --i];\n while (i > 0 && (mul *= 0x100)) {\n val += this[offset + --i] * mul;\n }\n mul *= 0x80;\n\n if (val >= mul) val -= Math.pow(2, 8 * byteLength);\n\n return val\n};\n\nBuffer.prototype.readInt8 = function readInt8 (offset, noAssert) {\n if (!noAssert) checkOffset(offset, 1, this.length);\n if (!(this[offset] & 0x80)) return (this[offset])\n return ((0xff - this[offset] + 1) * -1)\n};\n\nBuffer.prototype.readInt16LE = function readInt16LE (offset, noAssert) {\n if (!noAssert) checkOffset(offset, 2, this.length);\n var val = this[offset] | (this[offset + 1] << 8);\n return (val & 0x8000) ? val | 0xFFFF0000 : val\n};\n\nBuffer.prototype.readInt16BE = function readInt16BE (offset, noAssert) {\n if (!noAssert) checkOffset(offset, 2, this.length);\n var val = this[offset + 1] | (this[offset] << 8);\n return (val & 0x8000) ? val | 0xFFFF0000 : val\n};\n\nBuffer.prototype.readInt32LE = function readInt32LE (offset, noAssert) {\n if (!noAssert) checkOffset(offset, 4, this.length);\n\n return (this[offset]) |\n (this[offset + 1] << 8) |\n (this[offset + 2] << 16) |\n (this[offset + 3] << 24)\n};\n\nBuffer.prototype.readInt32BE = function readInt32BE (offset, noAssert) {\n if (!noAssert) checkOffset(offset, 4, this.length);\n\n return (this[offset] << 24) |\n (this[offset + 1] << 16) |\n (this[offset + 2] << 8) |\n (this[offset + 3])\n};\n\nBuffer.prototype.readFloatLE = function readFloatLE (offset, noAssert) {\n if (!noAssert) checkOffset(offset, 4, this.length);\n return read(this, offset, true, 23, 4)\n};\n\nBuffer.prototype.readFloatBE = function readFloatBE (offset, noAssert) {\n if (!noAssert) checkOffset(offset, 4, this.length);\n return read(this, offset, false, 23, 4)\n};\n\nBuffer.prototype.readDoubleLE = function readDoubleLE (offset, noAssert) {\n if (!noAssert) checkOffset(offset, 8, this.length);\n return read(this, offset, true, 52, 8)\n};\n\nBuffer.prototype.readDoubleBE = function readDoubleBE (offset, noAssert) {\n if (!noAssert) checkOffset(offset, 8, this.length);\n return read(this, offset, false, 52, 8)\n};\n\nfunction checkInt (buf, value, offset, ext, max, min) {\n if (!internalIsBuffer(buf)) throw new TypeError('\"buffer\" argument must be a Buffer instance')\n if (value > max || value < min) throw new RangeError('\"value\" argument is out of bounds')\n if (offset + ext > buf.length) throw new RangeError('Index out of range')\n}\n\nBuffer.prototype.writeUIntLE = function writeUIntLE (value, offset, byteLength, noAssert) {\n value = +value;\n offset = offset | 0;\n byteLength = byteLength | 0;\n if (!noAssert) {\n var maxBytes = Math.pow(2, 8 * byteLength) - 1;\n checkInt(this, value, offset, byteLength, maxBytes, 0);\n }\n\n var mul = 1;\n var i = 0;\n this[offset] = value & 0xFF;\n while (++i < byteLength && (mul *= 0x100)) {\n this[offset + i] = (value / mul) & 0xFF;\n }\n\n return offset + byteLength\n};\n\nBuffer.prototype.writeUIntBE = function writeUIntBE (value, offset, byteLength, noAssert) {\n value = +value;\n offset = offset | 0;\n byteLength = byteLength | 0;\n if (!noAssert) {\n var maxBytes = Math.pow(2, 8 * byteLength) - 1;\n checkInt(this, value, offset, byteLength, maxBytes, 0);\n }\n\n var i = byteLength - 1;\n var mul = 1;\n this[offset + i] = value & 0xFF;\n while (--i >= 0 && (mul *= 0x100)) {\n this[offset + i] = (value / mul) & 0xFF;\n }\n\n return offset + byteLength\n};\n\nBuffer.prototype.writeUInt8 = function writeUInt8 (value, offset, noAssert) {\n value = +value;\n offset = offset | 0;\n if (!noAssert) checkInt(this, value, offset, 1, 0xff, 0);\n if (!Buffer.TYPED_ARRAY_SUPPORT) value = Math.floor(value);\n this[offset] = (value & 0xff);\n return offset + 1\n};\n\nfunction objectWriteUInt16 (buf, value, offset, littleEndian) {\n if (value < 0) value = 0xffff + value + 1;\n for (var i = 0, j = Math.min(buf.length - offset, 2); i < j; ++i) {\n buf[offset + i] = (value & (0xff << (8 * (littleEndian ? i : 1 - i)))) >>>\n (littleEndian ? i : 1 - i) * 8;\n }\n}\n\nBuffer.prototype.writeUInt16LE = function writeUInt16LE (value, offset, noAssert) {\n value = +value;\n offset = offset | 0;\n if (!noAssert) checkInt(this, value, offset, 2, 0xffff, 0);\n if (Buffer.TYPED_ARRAY_SUPPORT) {\n this[offset] = (value & 0xff);\n this[offset + 1] = (value >>> 8);\n } else {\n objectWriteUInt16(this, value, offset, true);\n }\n return offset + 2\n};\n\nBuffer.prototype.writeUInt16BE = function writeUInt16BE (value, offset, noAssert) {\n value = +value;\n offset = offset | 0;\n if (!noAssert) checkInt(this, value, offset, 2, 0xffff, 0);\n if (Buffer.TYPED_ARRAY_SUPPORT) {\n this[offset] = (value >>> 8);\n this[offset + 1] = (value & 0xff);\n } else {\n objectWriteUInt16(this, value, offset, false);\n }\n return offset + 2\n};\n\nfunction objectWriteUInt32 (buf, value, offset, littleEndian) {\n if (value < 0) value = 0xffffffff + value + 1;\n for (var i = 0, j = Math.min(buf.length - offset, 4); i < j; ++i) {\n buf[offset + i] = (value >>> (littleEndian ? i : 3 - i) * 8) & 0xff;\n }\n}\n\nBuffer.prototype.writeUInt32LE = function writeUInt32LE (value, offset, noAssert) {\n value = +value;\n offset = offset | 0;\n if (!noAssert) checkInt(this, value, offset, 4, 0xffffffff, 0);\n if (Buffer.TYPED_ARRAY_SUPPORT) {\n this[offset + 3] = (value >>> 24);\n this[offset + 2] = (value >>> 16);\n this[offset + 1] = (value >>> 8);\n this[offset] = (value & 0xff);\n } else {\n objectWriteUInt32(this, value, offset, true);\n }\n return offset + 4\n};\n\nBuffer.prototype.writeUInt32BE = function writeUInt32BE (value, offset, noAssert) {\n value = +value;\n offset = offset | 0;\n if (!noAssert) checkInt(this, value, offset, 4, 0xffffffff, 0);\n if (Buffer.TYPED_ARRAY_SUPPORT) {\n this[offset] = (value >>> 24);\n this[offset + 1] = (value >>> 16);\n this[offset + 2] = (value >>> 8);\n this[offset + 3] = (value & 0xff);\n } else {\n objectWriteUInt32(this, value, offset, false);\n }\n return offset + 4\n};\n\nBuffer.prototype.writeIntLE = function writeIntLE (value, offset, byteLength, noAssert) {\n value = +value;\n offset = offset | 0;\n if (!noAssert) {\n var limit = Math.pow(2, 8 * byteLength - 1);\n\n checkInt(this, value, offset, byteLength, limit - 1, -limit);\n }\n\n var i = 0;\n var mul = 1;\n var sub = 0;\n this[offset] = value & 0xFF;\n while (++i < byteLength && (mul *= 0x100)) {\n if (value < 0 && sub === 0 && this[offset + i - 1] !== 0) {\n sub = 1;\n }\n this[offset + i] = ((value / mul) >> 0) - sub & 0xFF;\n }\n\n return offset + byteLength\n};\n\nBuffer.prototype.writeIntBE = function writeIntBE (value, offset, byteLength, noAssert) {\n value = +value;\n offset = offset | 0;\n if (!noAssert) {\n var limit = Math.pow(2, 8 * byteLength - 1);\n\n checkInt(this, value, offset, byteLength, limit - 1, -limit);\n }\n\n var i = byteLength - 1;\n var mul = 1;\n var sub = 0;\n this[offset + i] = value & 0xFF;\n while (--i >= 0 && (mul *= 0x100)) {\n if (value < 0 && sub === 0 && this[offset + i + 1] !== 0) {\n sub = 1;\n }\n this[offset + i] = ((value / mul) >> 0) - sub & 0xFF;\n }\n\n return offset + byteLength\n};\n\nBuffer.prototype.writeInt8 = function writeInt8 (value, offset, noAssert) {\n value = +value;\n offset = offset | 0;\n if (!noAssert) checkInt(this, value, offset, 1, 0x7f, -0x80);\n if (!Buffer.TYPED_ARRAY_SUPPORT) value = Math.floor(value);\n if (value < 0) value = 0xff + value + 1;\n this[offset] = (value & 0xff);\n return offset + 1\n};\n\nBuffer.prototype.writeInt16LE = function writeInt16LE (value, offset, noAssert) {\n value = +value;\n offset = offset | 0;\n if (!noAssert) checkInt(this, value, offset, 2, 0x7fff, -0x8000);\n if (Buffer.TYPED_ARRAY_SUPPORT) {\n this[offset] = (value & 0xff);\n this[offset + 1] = (value >>> 8);\n } else {\n objectWriteUInt16(this, value, offset, true);\n }\n return offset + 2\n};\n\nBuffer.prototype.writeInt16BE = function writeInt16BE (value, offset, noAssert) {\n value = +value;\n offset = offset | 0;\n if (!noAssert) checkInt(this, value, offset, 2, 0x7fff, -0x8000);\n if (Buffer.TYPED_ARRAY_SUPPORT) {\n this[offset] = (value >>> 8);\n this[offset + 1] = (value & 0xff);\n } else {\n objectWriteUInt16(this, value, offset, false);\n }\n return offset + 2\n};\n\nBuffer.prototype.writeInt32LE = function writeInt32LE (value, offset, noAssert) {\n value = +value;\n offset = offset | 0;\n if (!noAssert) checkInt(this, value, offset, 4, 0x7fffffff, -0x80000000);\n if (Buffer.TYPED_ARRAY_SUPPORT) {\n this[offset] = (value & 0xff);\n this[offset + 1] = (value >>> 8);\n this[offset + 2] = (value >>> 16);\n this[offset + 3] = (value >>> 24);\n } else {\n objectWriteUInt32(this, value, offset, true);\n }\n return offset + 4\n};\n\nBuffer.prototype.writeInt32BE = function writeInt32BE (value, offset, noAssert) {\n value = +value;\n offset = offset | 0;\n if (!noAssert) checkInt(this, value, offset, 4, 0x7fffffff, -0x80000000);\n if (value < 0) value = 0xffffffff + value + 1;\n if (Buffer.TYPED_ARRAY_SUPPORT) {\n this[offset] = (value >>> 24);\n this[offset + 1] = (value >>> 16);\n this[offset + 2] = (value >>> 8);\n this[offset + 3] = (value & 0xff);\n } else {\n objectWriteUInt32(this, value, offset, false);\n }\n return offset + 4\n};\n\nfunction checkIEEE754 (buf, value, offset, ext, max, min) {\n if (offset + ext > buf.length) throw new RangeError('Index out of range')\n if (offset < 0) throw new RangeError('Index out of range')\n}\n\nfunction writeFloat (buf, value, offset, littleEndian, noAssert) {\n if (!noAssert) {\n checkIEEE754(buf, value, offset, 4);\n }\n write(buf, value, offset, littleEndian, 23, 4);\n return offset + 4\n}\n\nBuffer.prototype.writeFloatLE = function writeFloatLE (value, offset, noAssert) {\n return writeFloat(this, value, offset, true, noAssert)\n};\n\nBuffer.prototype.writeFloatBE = function writeFloatBE (value, offset, noAssert) {\n return writeFloat(this, value, offset, false, noAssert)\n};\n\nfunction writeDouble (buf, value, offset, littleEndian, noAssert) {\n if (!noAssert) {\n checkIEEE754(buf, value, offset, 8);\n }\n write(buf, value, offset, littleEndian, 52, 8);\n return offset + 8\n}\n\nBuffer.prototype.writeDoubleLE = function writeDoubleLE (value, offset, noAssert) {\n return writeDouble(this, value, offset, true, noAssert)\n};\n\nBuffer.prototype.writeDoubleBE = function writeDoubleBE (value, offset, noAssert) {\n return writeDouble(this, value, offset, false, noAssert)\n};\n\n// copy(targetBuffer, targetStart=0, sourceStart=0, sourceEnd=buffer.length)\nBuffer.prototype.copy = function copy (target, targetStart, start, end) {\n if (!start) start = 0;\n if (!end && end !== 0) end = this.length;\n if (targetStart >= target.length) targetStart = target.length;\n if (!targetStart) targetStart = 0;\n if (end > 0 && end < start) end = start;\n\n // Copy 0 bytes; we're done\n if (end === start) return 0\n if (target.length === 0 || this.length === 0) return 0\n\n // Fatal error conditions\n if (targetStart < 0) {\n throw new RangeError('targetStart out of bounds')\n }\n if (start < 0 || start >= this.length) throw new RangeError('sourceStart out of bounds')\n if (end < 0) throw new RangeError('sourceEnd out of bounds')\n\n // Are we oob?\n if (end > this.length) end = this.length;\n if (target.length - targetStart < end - start) {\n end = target.length - targetStart + start;\n }\n\n var len = end - start;\n var i;\n\n if (this === target && start < targetStart && targetStart < end) {\n // descending copy from end\n for (i = len - 1; i >= 0; --i) {\n target[i + targetStart] = this[i + start];\n }\n } else if (len < 1000 || !Buffer.TYPED_ARRAY_SUPPORT) {\n // ascending copy from start\n for (i = 0; i < len; ++i) {\n target[i + targetStart] = this[i + start];\n }\n } else {\n Uint8Array.prototype.set.call(\n target,\n this.subarray(start, start + len),\n targetStart\n );\n }\n\n return len\n};\n\n// Usage:\n// buffer.fill(number[, offset[, end]])\n// buffer.fill(buffer[, offset[, end]])\n// buffer.fill(string[, offset[, end]][, encoding])\nBuffer.prototype.fill = function fill (val, start, end, encoding) {\n // Handle string cases:\n if (typeof val === 'string') {\n if (typeof start === 'string') {\n encoding = start;\n start = 0;\n end = this.length;\n } else if (typeof end === 'string') {\n encoding = end;\n end = this.length;\n }\n if (val.length === 1) {\n var code = val.charCodeAt(0);\n if (code < 256) {\n val = code;\n }\n }\n if (encoding !== undefined && typeof encoding !== 'string') {\n throw new TypeError('encoding must be a string')\n }\n if (typeof encoding === 'string' && !Buffer.isEncoding(encoding)) {\n throw new TypeError('Unknown encoding: ' + encoding)\n }\n } else if (typeof val === 'number') {\n val = val & 255;\n }\n\n // Invalid ranges are not set to a default, so can range check early.\n if (start < 0 || this.length < start || this.length < end) {\n throw new RangeError('Out of range index')\n }\n\n if (end <= start) {\n return this\n }\n\n start = start >>> 0;\n end = end === undefined ? this.length : end >>> 0;\n\n if (!val) val = 0;\n\n var i;\n if (typeof val === 'number') {\n for (i = start; i < end; ++i) {\n this[i] = val;\n }\n } else {\n var bytes = internalIsBuffer(val)\n ? val\n : utf8ToBytes(new Buffer(val, encoding).toString());\n var len = bytes.length;\n for (i = 0; i < end - start; ++i) {\n this[i + start] = bytes[i % len];\n }\n }\n\n return this\n};\n\n// HELPER FUNCTIONS\n// ================\n\nvar INVALID_BASE64_RE = /[^+\\/0-9A-Za-z-_]/g;\n\nfunction base64clean (str) {\n // Node strips out invalid characters like \\n and \\t from the string, base64-js does not\n str = stringtrim(str).replace(INVALID_BASE64_RE, '');\n // Node converts strings with length < 2 to ''\n if (str.length < 2) return ''\n // Node allows for non-padded base64 strings (missing trailing ===), base64-js does not\n while (str.length % 4 !== 0) {\n str = str + '=';\n }\n return str\n}\n\nfunction stringtrim (str) {\n if (str.trim) return str.trim()\n return str.replace(/^\\s+|\\s+$/g, '')\n}\n\nfunction toHex (n) {\n if (n < 16) return '0' + n.toString(16)\n return n.toString(16)\n}\n\nfunction utf8ToBytes (string, units) {\n units = units || Infinity;\n var codePoint;\n var length = string.length;\n var leadSurrogate = null;\n var bytes = [];\n\n for (var i = 0; i < length; ++i) {\n codePoint = string.charCodeAt(i);\n\n // is surrogate component\n if (codePoint > 0xD7FF && codePoint < 0xE000) {\n // last char was a lead\n if (!leadSurrogate) {\n // no lead yet\n if (codePoint > 0xDBFF) {\n // unexpected trail\n if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD);\n continue\n } else if (i + 1 === length) {\n // unpaired lead\n if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD);\n continue\n }\n\n // valid lead\n leadSurrogate = codePoint;\n\n continue\n }\n\n // 2 leads in a row\n if (codePoint < 0xDC00) {\n if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD);\n leadSurrogate = codePoint;\n continue\n }\n\n // valid surrogate pair\n codePoint = (leadSurrogate - 0xD800 << 10 | codePoint - 0xDC00) + 0x10000;\n } else if (leadSurrogate) {\n // valid bmp char, but last char was a lead\n if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD);\n }\n\n leadSurrogate = null;\n\n // encode utf8\n if (codePoint < 0x80) {\n if ((units -= 1) < 0) break\n bytes.push(codePoint);\n } else if (codePoint < 0x800) {\n if ((units -= 2) < 0) break\n bytes.push(\n codePoint >> 0x6 | 0xC0,\n codePoint & 0x3F | 0x80\n );\n } else if (codePoint < 0x10000) {\n if ((units -= 3) < 0) break\n bytes.push(\n codePoint >> 0xC | 0xE0,\n codePoint >> 0x6 & 0x3F | 0x80,\n codePoint & 0x3F | 0x80\n );\n } else if (codePoint < 0x110000) {\n if ((units -= 4) < 0) break\n bytes.push(\n codePoint >> 0x12 | 0xF0,\n codePoint >> 0xC & 0x3F | 0x80,\n codePoint >> 0x6 & 0x3F | 0x80,\n codePoint & 0x3F | 0x80\n );\n } else {\n throw new Error('Invalid code point')\n }\n }\n\n return bytes\n}\n\nfunction asciiToBytes (str) {\n var byteArray = [];\n for (var i = 0; i < str.length; ++i) {\n // Node's code seems to be doing this and not & 0x7F..\n byteArray.push(str.charCodeAt(i) & 0xFF);\n }\n return byteArray\n}\n\nfunction utf16leToBytes (str, units) {\n var c, hi, lo;\n var byteArray = [];\n for (var i = 0; i < str.length; ++i) {\n if ((units -= 2) < 0) break\n\n c = str.charCodeAt(i);\n hi = c >> 8;\n lo = c % 256;\n byteArray.push(lo);\n byteArray.push(hi);\n }\n\n return byteArray\n}\n\n\nfunction base64ToBytes (str) {\n return toByteArray(base64clean(str))\n}\n\nfunction blitBuffer (src, dst, offset, length) {\n for (var i = 0; i < length; ++i) {\n if ((i + offset >= dst.length) || (i >= src.length)) break\n dst[i + offset] = src[i];\n }\n return i\n}\n\nfunction isnan (val) {\n return val !== val // eslint-disable-line no-self-compare\n}\n\n\n// the following is from is-buffer, also by Feross Aboukhadijeh and with same lisence\n// The _isBuffer check is for Safari 5-7 support, because it's missing\n// Object.prototype.constructor. Remove this eventually\nfunction isBuffer(obj) {\n return obj != null && (!!obj._isBuffer || isFastBuffer(obj) || isSlowBuffer(obj))\n}\n\nfunction isFastBuffer (obj) {\n return !!obj.constructor && typeof obj.constructor.isBuffer === 'function' && obj.constructor.isBuffer(obj)\n}\n\n// For Node v0.10 support. Remove this eventually.\nfunction isSlowBuffer (obj) {\n return typeof obj.readFloatLE === 'function' && typeof obj.slice === 'function' && isFastBuffer(obj.slice(0, 0))\n}\n\nexport { Buffer, INSPECT_MAX_BYTES, SlowBuffer, isBuffer, _kMaxLength as kMaxLength };\n","\nvar inherits;\nif (typeof Object.create === 'function'){\n inherits = function inherits(ctor, superCtor) {\n // implementation from standard node.js 'util' module\n ctor.super_ = superCtor\n ctor.prototype = Object.create(superCtor.prototype, {\n constructor: {\n value: ctor,\n enumerable: false,\n writable: true,\n configurable: true\n }\n });\n };\n} else {\n inherits = function inherits(ctor, superCtor) {\n ctor.super_ = superCtor\n var TempCtor = function () {}\n TempCtor.prototype = superCtor.prototype\n ctor.prototype = new TempCtor()\n ctor.prototype.constructor = ctor\n }\n}\nexport default inherits;\n","// Copyright Joyent, Inc. and other Node contributors.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a\n// copy of this software and associated documentation files (the\n// \"Software\"), to deal in the Software without restriction, including\n// without limitation the rights to use, copy, modify, merge, publish,\n// distribute, sublicense, and/or sell copies of the Software, and to permit\n// persons to whom the Software is furnished to do so, subject to the\n// following conditions:\n//\n// The above copyright notice and this permission notice shall be included\n// in all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN\n// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR\n// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\n// USE OR OTHER DEALINGS IN THE SOFTWARE.\nimport process from 'process';\nvar formatRegExp = /%[sdj%]/g;\nexport function format(f) {\n if (!isString(f)) {\n var objects = [];\n for (var i = 0; i < arguments.length; i++) {\n objects.push(inspect(arguments[i]));\n }\n return objects.join(' ');\n }\n\n var i = 1;\n var args = arguments;\n var len = args.length;\n var str = String(f).replace(formatRegExp, function(x) {\n if (x === '%%') return '%';\n if (i >= len) return x;\n switch (x) {\n case '%s': return String(args[i++]);\n case '%d': return Number(args[i++]);\n case '%j':\n try {\n return JSON.stringify(args[i++]);\n } catch (_) {\n return '[Circular]';\n }\n default:\n return x;\n }\n });\n for (var x = args[i]; i < len; x = args[++i]) {\n if (isNull(x) || !isObject(x)) {\n str += ' ' + x;\n } else {\n str += ' ' + inspect(x);\n }\n }\n return str;\n};\n\n\n// Mark that a method should not be used.\n// Returns a modified function which warns once by default.\n// If --no-deprecation is set, then it is a no-op.\nexport function deprecate(fn, msg) {\n // Allow for deprecating things in the process of starting up.\n if (isUndefined(global.process)) {\n return function() {\n return deprecate(fn, msg).apply(this, arguments);\n };\n }\n\n if (process.noDeprecation === true) {\n return fn;\n }\n\n var warned = false;\n function deprecated() {\n if (!warned) {\n if (process.throwDeprecation) {\n throw new Error(msg);\n } else if (process.traceDeprecation) {\n console.trace(msg);\n } else {\n console.error(msg);\n }\n warned = true;\n }\n return fn.apply(this, arguments);\n }\n\n return deprecated;\n};\n\n\nvar debugs = {};\nvar debugEnviron;\nexport function debuglog(set) {\n if (isUndefined(debugEnviron))\n debugEnviron = process.env.NODE_DEBUG || '';\n set = set.toUpperCase();\n if (!debugs[set]) {\n if (new RegExp('\\\\b' + set + '\\\\b', 'i').test(debugEnviron)) {\n var pid = 0;\n debugs[set] = function() {\n var msg = format.apply(null, arguments);\n console.error('%s %d: %s', set, pid, msg);\n };\n } else {\n debugs[set] = function() {};\n }\n }\n return debugs[set];\n};\n\n\n/**\n * Echos the value of a value. Trys to print the value out\n * in the best way possible given the different types.\n *\n * @param {Object} obj The object to print out.\n * @param {Object} opts Optional options object that alters the output.\n */\n/* legacy: obj, showHidden, depth, colors*/\nexport function inspect(obj, opts) {\n // default options\n var ctx = {\n seen: [],\n stylize: stylizeNoColor\n };\n // legacy...\n if (arguments.length >= 3) ctx.depth = arguments[2];\n if (arguments.length >= 4) ctx.colors = arguments[3];\n if (isBoolean(opts)) {\n // legacy...\n ctx.showHidden = opts;\n } else if (opts) {\n // got an \"options\" object\n _extend(ctx, opts);\n }\n // set default options\n if (isUndefined(ctx.showHidden)) ctx.showHidden = false;\n if (isUndefined(ctx.depth)) ctx.depth = 2;\n if (isUndefined(ctx.colors)) ctx.colors = false;\n if (isUndefined(ctx.customInspect)) ctx.customInspect = true;\n if (ctx.colors) ctx.stylize = stylizeWithColor;\n return formatValue(ctx, obj, ctx.depth);\n}\n\n// http://en.wikipedia.org/wiki/ANSI_escape_code#graphics\ninspect.colors = {\n 'bold' : [1, 22],\n 'italic' : [3, 23],\n 'underline' : [4, 24],\n 'inverse' : [7, 27],\n 'white' : [37, 39],\n 'grey' : [90, 39],\n 'black' : [30, 39],\n 'blue' : [34, 39],\n 'cyan' : [36, 39],\n 'green' : [32, 39],\n 'magenta' : [35, 39],\n 'red' : [31, 39],\n 'yellow' : [33, 39]\n};\n\n// Don't use 'blue' not visible on cmd.exe\ninspect.styles = {\n 'special': 'cyan',\n 'number': 'yellow',\n 'boolean': 'yellow',\n 'undefined': 'grey',\n 'null': 'bold',\n 'string': 'green',\n 'date': 'magenta',\n // \"name\": intentionally not styling\n 'regexp': 'red'\n};\n\n\nfunction stylizeWithColor(str, styleType) {\n var style = inspect.styles[styleType];\n\n if (style) {\n return '\\u001b[' + inspect.colors[style][0] + 'm' + str +\n '\\u001b[' + inspect.colors[style][1] + 'm';\n } else {\n return str;\n }\n}\n\n\nfunction stylizeNoColor(str, styleType) {\n return str;\n}\n\n\nfunction arrayToHash(array) {\n var hash = {};\n\n array.forEach(function(val, idx) {\n hash[val] = true;\n });\n\n return hash;\n}\n\n\nfunction formatValue(ctx, value, recurseTimes) {\n // Provide a hook for user-specified inspect functions.\n // Check that value is an object with an inspect function on it\n if (ctx.customInspect &&\n value &&\n isFunction(value.inspect) &&\n // Filter out the util module, it's inspect function is special\n value.inspect !== inspect &&\n // Also filter out any prototype objects using the circular check.\n !(value.constructor && value.constructor.prototype === value)) {\n var ret = value.inspect(recurseTimes, ctx);\n if (!isString(ret)) {\n ret = formatValue(ctx, ret, recurseTimes);\n }\n return ret;\n }\n\n // Primitive types cannot have properties\n var primitive = formatPrimitive(ctx, value);\n if (primitive) {\n return primitive;\n }\n\n // Look up the keys of the object.\n var keys = Object.keys(value);\n var visibleKeys = arrayToHash(keys);\n\n if (ctx.showHidden) {\n keys = Object.getOwnPropertyNames(value);\n }\n\n // IE doesn't make error fields non-enumerable\n // http://msdn.microsoft.com/en-us/library/ie/dww52sbt(v=vs.94).aspx\n if (isError(value)\n && (keys.indexOf('message') >= 0 || keys.indexOf('description') >= 0)) {\n return formatError(value);\n }\n\n // Some type of object without properties can be shortcutted.\n if (keys.length === 0) {\n if (isFunction(value)) {\n var name = value.name ? ': ' + value.name : '';\n return ctx.stylize('[Function' + name + ']', 'special');\n }\n if (isRegExp(value)) {\n return ctx.stylize(RegExp.prototype.toString.call(value), 'regexp');\n }\n if (isDate(value)) {\n return ctx.stylize(Date.prototype.toString.call(value), 'date');\n }\n if (isError(value)) {\n return formatError(value);\n }\n }\n\n var base = '', array = false, braces = ['{', '}'];\n\n // Make Array say that they are Array\n if (isArray(value)) {\n array = true;\n braces = ['[', ']'];\n }\n\n // Make functions say that they are functions\n if (isFunction(value)) {\n var n = value.name ? ': ' + value.name : '';\n base = ' [Function' + n + ']';\n }\n\n // Make RegExps say that they are RegExps\n if (isRegExp(value)) {\n base = ' ' + RegExp.prototype.toString.call(value);\n }\n\n // Make dates with properties first say the date\n if (isDate(value)) {\n base = ' ' + Date.prototype.toUTCString.call(value);\n }\n\n // Make error with message first say the error\n if (isError(value)) {\n base = ' ' + formatError(value);\n }\n\n if (keys.length === 0 && (!array || value.length == 0)) {\n return braces[0] + base + braces[1];\n }\n\n if (recurseTimes < 0) {\n if (isRegExp(value)) {\n return ctx.stylize(RegExp.prototype.toString.call(value), 'regexp');\n } else {\n return ctx.stylize('[Object]', 'special');\n }\n }\n\n ctx.seen.push(value);\n\n var output;\n if (array) {\n output = formatArray(ctx, value, recurseTimes, visibleKeys, keys);\n } else {\n output = keys.map(function(key) {\n return formatProperty(ctx, value, recurseTimes, visibleKeys, key, array);\n });\n }\n\n ctx.seen.pop();\n\n return reduceToSingleString(output, base, braces);\n}\n\n\nfunction formatPrimitive(ctx, value) {\n if (isUndefined(value))\n return ctx.stylize('undefined', 'undefined');\n if (isString(value)) {\n var simple = '\\'' + JSON.stringify(value).replace(/^\"|\"$/g, '')\n .replace(/'/g, \"\\\\'\")\n .replace(/\\\\\"/g, '\"') + '\\'';\n return ctx.stylize(simple, 'string');\n }\n if (isNumber(value))\n return ctx.stylize('' + value, 'number');\n if (isBoolean(value))\n return ctx.stylize('' + value, 'boolean');\n // For some reason typeof null is \"object\", so special case here.\n if (isNull(value))\n return ctx.stylize('null', 'null');\n}\n\n\nfunction formatError(value) {\n return '[' + Error.prototype.toString.call(value) + ']';\n}\n\n\nfunction formatArray(ctx, value, recurseTimes, visibleKeys, keys) {\n var output = [];\n for (var i = 0, l = value.length; i < l; ++i) {\n if (hasOwnProperty(value, String(i))) {\n output.push(formatProperty(ctx, value, recurseTimes, visibleKeys,\n String(i), true));\n } else {\n output.push('');\n }\n }\n keys.forEach(function(key) {\n if (!key.match(/^\\d+$/)) {\n output.push(formatProperty(ctx, value, recurseTimes, visibleKeys,\n key, true));\n }\n });\n return output;\n}\n\n\nfunction formatProperty(ctx, value, recurseTimes, visibleKeys, key, array) {\n var name, str, desc;\n desc = Object.getOwnPropertyDescriptor(value, key) || { value: value[key] };\n if (desc.get) {\n if (desc.set) {\n str = ctx.stylize('[Getter/Setter]', 'special');\n } else {\n str = ctx.stylize('[Getter]', 'special');\n }\n } else {\n if (desc.set) {\n str = ctx.stylize('[Setter]', 'special');\n }\n }\n if (!hasOwnProperty(visibleKeys, key)) {\n name = '[' + key + ']';\n }\n if (!str) {\n if (ctx.seen.indexOf(desc.value) < 0) {\n if (isNull(recurseTimes)) {\n str = formatValue(ctx, desc.value, null);\n } else {\n str = formatValue(ctx, desc.value, recurseTimes - 1);\n }\n if (str.indexOf('\\n') > -1) {\n if (array) {\n str = str.split('\\n').map(function(line) {\n return ' ' + line;\n }).join('\\n').substr(2);\n } else {\n str = '\\n' + str.split('\\n').map(function(line) {\n return ' ' + line;\n }).join('\\n');\n }\n }\n } else {\n str = ctx.stylize('[Circular]', 'special');\n }\n }\n if (isUndefined(name)) {\n if (array && key.match(/^\\d+$/)) {\n return str;\n }\n name = JSON.stringify('' + key);\n if (name.match(/^\"([a-zA-Z_][a-zA-Z_0-9]*)\"$/)) {\n name = name.substr(1, name.length - 2);\n name = ctx.stylize(name, 'name');\n } else {\n name = name.replace(/'/g, \"\\\\'\")\n .replace(/\\\\\"/g, '\"')\n .replace(/(^\"|\"$)/g, \"'\");\n name = ctx.stylize(name, 'string');\n }\n }\n\n return name + ': ' + str;\n}\n\n\nfunction reduceToSingleString(output, base, braces) {\n var numLinesEst = 0;\n var length = output.reduce(function(prev, cur) {\n numLinesEst++;\n if (cur.indexOf('\\n') >= 0) numLinesEst++;\n return prev + cur.replace(/\\u001b\\[\\d\\d?m/g, '').length + 1;\n }, 0);\n\n if (length > 60) {\n return braces[0] +\n (base === '' ? '' : base + '\\n ') +\n ' ' +\n output.join(',\\n ') +\n ' ' +\n braces[1];\n }\n\n return braces[0] + base + ' ' + output.join(', ') + ' ' + braces[1];\n}\n\n\n// NOTE: These type checking functions intentionally don't use `instanceof`\n// because it is fragile and can be easily faked with `Object.create()`.\nexport function isArray(ar) {\n return Array.isArray(ar);\n}\n\nexport function isBoolean(arg) {\n return typeof arg === 'boolean';\n}\n\nexport function isNull(arg) {\n return arg === null;\n}\n\nexport function isNullOrUndefined(arg) {\n return arg == null;\n}\n\nexport function isNumber(arg) {\n return typeof arg === 'number';\n}\n\nexport function isString(arg) {\n return typeof arg === 'string';\n}\n\nexport function isSymbol(arg) {\n return typeof arg === 'symbol';\n}\n\nexport function isUndefined(arg) {\n return arg === void 0;\n}\n\nexport function isRegExp(re) {\n return isObject(re) && objectToString(re) === '[object RegExp]';\n}\n\nexport function isObject(arg) {\n return typeof arg === 'object' && arg !== null;\n}\n\nexport function isDate(d) {\n return isObject(d) && objectToString(d) === '[object Date]';\n}\n\nexport function isError(e) {\n return isObject(e) &&\n (objectToString(e) === '[object Error]' || e instanceof Error);\n}\n\nexport function isFunction(arg) {\n return typeof arg === 'function';\n}\n\nexport function isPrimitive(arg) {\n return arg === null ||\n typeof arg === 'boolean' ||\n typeof arg === 'number' ||\n typeof arg === 'string' ||\n typeof arg === 'symbol' || // ES6 symbol\n typeof arg === 'undefined';\n}\n\nexport function isBuffer(maybeBuf) {\n return Buffer.isBuffer(maybeBuf);\n}\n\nfunction objectToString(o) {\n return Object.prototype.toString.call(o);\n}\n\n\nfunction pad(n) {\n return n < 10 ? '0' + n.toString(10) : n.toString(10);\n}\n\n\nvar months = ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep',\n 'Oct', 'Nov', 'Dec'];\n\n// 26 Feb 16:19:34\nfunction timestamp() {\n var d = new Date();\n var time = [pad(d.getHours()),\n pad(d.getMinutes()),\n pad(d.getSeconds())].join(':');\n return [d.getDate(), months[d.getMonth()], time].join(' ');\n}\n\n\n// log is just a thin wrapper to console.log that prepends a timestamp\nexport function log() {\n console.log('%s - %s', timestamp(), format.apply(null, arguments));\n}\n\n\n/**\n * Inherit the prototype methods from one constructor into another.\n *\n * The Function.prototype.inherits from lang.js rewritten as a standalone\n * function (not on Function.prototype). NOTE: If this file is to be loaded\n * during bootstrapping this function needs to be rewritten using some native\n * functions as prototype setup using normal JavaScript does not work as\n * expected during bootstrapping (see mirror.js in r114903).\n *\n * @param {function} ctor Constructor function which needs to inherit the\n * prototype.\n * @param {function} superCtor Constructor function to inherit prototype from.\n */\nimport inherits from './inherits';\nexport {inherits}\n\nexport function _extend(origin, add) {\n // Don't do anything if add isn't an object\n if (!add || !isObject(add)) return origin;\n\n var keys = Object.keys(add);\n var i = keys.length;\n while (i--) {\n origin[keys[i]] = add[keys[i]];\n }\n return origin;\n};\n\nfunction hasOwnProperty(obj, prop) {\n return Object.prototype.hasOwnProperty.call(obj, prop);\n}\n\nexport default {\n inherits: inherits,\n _extend: _extend,\n log: log,\n isBuffer: isBuffer,\n isPrimitive: isPrimitive,\n isFunction: isFunction,\n isError: isError,\n isDate: isDate,\n isObject: isObject,\n isRegExp: isRegExp,\n isUndefined: isUndefined,\n isSymbol: isSymbol,\n isString: isString,\n isNumber: isNumber,\n isNullOrUndefined: isNullOrUndefined,\n isNull: isNull,\n isBoolean: isBoolean,\n isArray: isArray,\n inspect: inspect,\n deprecate: deprecate,\n format: format,\n debuglog: debuglog\n}\n","'use strict';\n\nfunction ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); keys.push.apply(keys, symbols); } return keys; }\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }\n\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }\n\nvar _require = require('buffer'),\n Buffer = _require.Buffer;\n\nvar _require2 = require('util'),\n inspect = _require2.inspect;\n\nvar custom = inspect && inspect.custom || 'inspect';\n\nfunction copyBuffer(src, target, offset) {\n Buffer.prototype.copy.call(src, target, offset);\n}\n\nmodule.exports =\n/*#__PURE__*/\nfunction () {\n function BufferList() {\n _classCallCheck(this, BufferList);\n\n this.head = null;\n this.tail = null;\n this.length = 0;\n }\n\n _createClass(BufferList, [{\n key: \"push\",\n value: function push(v) {\n var entry = {\n data: v,\n next: null\n };\n if (this.length > 0) this.tail.next = entry;else this.head = entry;\n this.tail = entry;\n ++this.length;\n }\n }, {\n key: \"unshift\",\n value: function unshift(v) {\n var entry = {\n data: v,\n next: this.head\n };\n if (this.length === 0) this.tail = entry;\n this.head = entry;\n ++this.length;\n }\n }, {\n key: \"shift\",\n value: function shift() {\n if (this.length === 0) return;\n var ret = this.head.data;\n if (this.length === 1) this.head = this.tail = null;else this.head = this.head.next;\n --this.length;\n return ret;\n }\n }, {\n key: \"clear\",\n value: function clear() {\n this.head = this.tail = null;\n this.length = 0;\n }\n }, {\n key: \"join\",\n value: function join(s) {\n if (this.length === 0) return '';\n var p = this.head;\n var ret = '' + p.data;\n\n while (p = p.next) {\n ret += s + p.data;\n }\n\n return ret;\n }\n }, {\n key: \"concat\",\n value: function concat(n) {\n if (this.length === 0) return Buffer.alloc(0);\n var ret = Buffer.allocUnsafe(n >>> 0);\n var p = this.head;\n var i = 0;\n\n while (p) {\n copyBuffer(p.data, ret, i);\n i += p.data.length;\n p = p.next;\n }\n\n return ret;\n } // Consumes a specified amount of bytes or characters from the buffered data.\n\n }, {\n key: \"consume\",\n value: function consume(n, hasStrings) {\n var ret;\n\n if (n < this.head.data.length) {\n // `slice` is the same for buffers and strings.\n ret = this.head.data.slice(0, n);\n this.head.data = this.head.data.slice(n);\n } else if (n === this.head.data.length) {\n // First chunk is a perfect match.\n ret = this.shift();\n } else {\n // Result spans more than one buffer.\n ret = hasStrings ? this._getString(n) : this._getBuffer(n);\n }\n\n return ret;\n }\n }, {\n key: \"first\",\n value: function first() {\n return this.head.data;\n } // Consumes a specified amount of characters from the buffered data.\n\n }, {\n key: \"_getString\",\n value: function _getString(n) {\n var p = this.head;\n var c = 1;\n var ret = p.data;\n n -= ret.length;\n\n while (p = p.next) {\n var str = p.data;\n var nb = n > str.length ? str.length : n;\n if (nb === str.length) ret += str;else ret += str.slice(0, n);\n n -= nb;\n\n if (n === 0) {\n if (nb === str.length) {\n ++c;\n if (p.next) this.head = p.next;else this.head = this.tail = null;\n } else {\n this.head = p;\n p.data = str.slice(nb);\n }\n\n break;\n }\n\n ++c;\n }\n\n this.length -= c;\n return ret;\n } // Consumes a specified amount of bytes from the buffered data.\n\n }, {\n key: \"_getBuffer\",\n value: function _getBuffer(n) {\n var ret = Buffer.allocUnsafe(n);\n var p = this.head;\n var c = 1;\n p.data.copy(ret);\n n -= p.data.length;\n\n while (p = p.next) {\n var buf = p.data;\n var nb = n > buf.length ? buf.length : n;\n buf.copy(ret, ret.length - n, 0, nb);\n n -= nb;\n\n if (n === 0) {\n if (nb === buf.length) {\n ++c;\n if (p.next) this.head = p.next;else this.head = this.tail = null;\n } else {\n this.head = p;\n p.data = buf.slice(nb);\n }\n\n break;\n }\n\n ++c;\n }\n\n this.length -= c;\n return ret;\n } // Make sure the linked list only shows the minimal necessary information.\n\n }, {\n key: custom,\n value: function value(_, options) {\n return inspect(this, _objectSpread({}, options, {\n // Only inspect one level.\n depth: 0,\n // It should not recurse.\n customInspect: false\n }));\n }\n }]);\n\n return BufferList;\n}();","'use strict'; // undocumented cb() API, needed for core, not for public API\n\nfunction destroy(err, cb) {\n var _this = this;\n\n var readableDestroyed = this._readableState && this._readableState.destroyed;\n var writableDestroyed = this._writableState && this._writableState.destroyed;\n\n if (readableDestroyed || writableDestroyed) {\n if (cb) {\n cb(err);\n } else if (err) {\n if (!this._writableState) {\n process.nextTick(emitErrorNT, this, err);\n } else if (!this._writableState.errorEmitted) {\n this._writableState.errorEmitted = true;\n process.nextTick(emitErrorNT, this, err);\n }\n }\n\n return this;\n } // we set destroyed to true before firing error callbacks in order\n // to make it re-entrance safe in case destroy() is called within callbacks\n\n\n if (this._readableState) {\n this._readableState.destroyed = true;\n } // if this is a duplex stream mark the writable part as destroyed as well\n\n\n if (this._writableState) {\n this._writableState.destroyed = true;\n }\n\n this._destroy(err || null, function (err) {\n if (!cb && err) {\n if (!_this._writableState) {\n process.nextTick(emitErrorAndCloseNT, _this, err);\n } else if (!_this._writableState.errorEmitted) {\n _this._writableState.errorEmitted = true;\n process.nextTick(emitErrorAndCloseNT, _this, err);\n } else {\n process.nextTick(emitCloseNT, _this);\n }\n } else if (cb) {\n process.nextTick(emitCloseNT, _this);\n cb(err);\n } else {\n process.nextTick(emitCloseNT, _this);\n }\n });\n\n return this;\n}\n\nfunction emitErrorAndCloseNT(self, err) {\n emitErrorNT(self, err);\n emitCloseNT(self);\n}\n\nfunction emitCloseNT(self) {\n if (self._writableState && !self._writableState.emitClose) return;\n if (self._readableState && !self._readableState.emitClose) return;\n self.emit('close');\n}\n\nfunction undestroy() {\n if (this._readableState) {\n this._readableState.destroyed = false;\n this._readableState.reading = false;\n this._readableState.ended = false;\n this._readableState.endEmitted = false;\n }\n\n if (this._writableState) {\n this._writableState.destroyed = false;\n this._writableState.ended = false;\n this._writableState.ending = false;\n this._writableState.finalCalled = false;\n this._writableState.prefinished = false;\n this._writableState.finished = false;\n this._writableState.errorEmitted = false;\n }\n}\n\nfunction emitErrorNT(self, err) {\n self.emit('error', err);\n}\n\nfunction errorOrDestroy(stream, err) {\n // We have tests that rely on errors being emitted\n // in the same tick, so changing this is semver major.\n // For now when you opt-in to autoDestroy we allow\n // the error to be emitted nextTick. In a future\n // semver major update we should change the default to this.\n var rState = stream._readableState;\n var wState = stream._writableState;\n if (rState && rState.autoDestroy || wState && wState.autoDestroy) stream.destroy(err);else stream.emit('error', err);\n}\n\nmodule.exports = {\n destroy: destroy,\n undestroy: undestroy,\n errorOrDestroy: errorOrDestroy\n};","'use strict';\n\nfunction _inheritsLoose(subClass, superClass) { subClass.prototype = Object.create(superClass.prototype); subClass.prototype.constructor = subClass; subClass.__proto__ = superClass; }\n\nvar codes = {};\n\nfunction createErrorType(code, message, Base) {\n if (!Base) {\n Base = Error;\n }\n\n function getMessage(arg1, arg2, arg3) {\n if (typeof message === 'string') {\n return message;\n } else {\n return message(arg1, arg2, arg3);\n }\n }\n\n var NodeError =\n /*#__PURE__*/\n function (_Base) {\n _inheritsLoose(NodeError, _Base);\n\n function NodeError(arg1, arg2, arg3) {\n return _Base.call(this, getMessage(arg1, arg2, arg3)) || this;\n }\n\n return NodeError;\n }(Base);\n\n NodeError.prototype.name = Base.name;\n NodeError.prototype.code = code;\n codes[code] = NodeError;\n} // https://github.com/nodejs/node/blob/v10.8.0/lib/internal/errors.js\n\n\nfunction oneOf(expected, thing) {\n if (Array.isArray(expected)) {\n var len = expected.length;\n expected = expected.map(function (i) {\n return String(i);\n });\n\n if (len > 2) {\n return \"one of \".concat(thing, \" \").concat(expected.slice(0, len - 1).join(', '), \", or \") + expected[len - 1];\n } else if (len === 2) {\n return \"one of \".concat(thing, \" \").concat(expected[0], \" or \").concat(expected[1]);\n } else {\n return \"of \".concat(thing, \" \").concat(expected[0]);\n }\n } else {\n return \"of \".concat(thing, \" \").concat(String(expected));\n }\n} // https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/startsWith\n\n\nfunction startsWith(str, search, pos) {\n return str.substr(!pos || pos < 0 ? 0 : +pos, search.length) === search;\n} // https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/endsWith\n\n\nfunction endsWith(str, search, this_len) {\n if (this_len === undefined || this_len > str.length) {\n this_len = str.length;\n }\n\n return str.substring(this_len - search.length, this_len) === search;\n} // https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/includes\n\n\nfunction includes(str, search, start) {\n if (typeof start !== 'number') {\n start = 0;\n }\n\n if (start + search.length > str.length) {\n return false;\n } else {\n return str.indexOf(search, start) !== -1;\n }\n}\n\ncreateErrorType('ERR_INVALID_OPT_VALUE', function (name, value) {\n return 'The value \"' + value + '\" is invalid for option \"' + name + '\"';\n}, TypeError);\ncreateErrorType('ERR_INVALID_ARG_TYPE', function (name, expected, actual) {\n // determiner: 'must be' or 'must not be'\n var determiner;\n\n if (typeof expected === 'string' && startsWith(expected, 'not ')) {\n determiner = 'must not be';\n expected = expected.replace(/^not /, '');\n } else {\n determiner = 'must be';\n }\n\n var msg;\n\n if (endsWith(name, ' argument')) {\n // For cases like 'first argument'\n msg = \"The \".concat(name, \" \").concat(determiner, \" \").concat(oneOf(expected, 'type'));\n } else {\n var type = includes(name, '.') ? 'property' : 'argument';\n msg = \"The \\\"\".concat(name, \"\\\" \").concat(type, \" \").concat(determiner, \" \").concat(oneOf(expected, 'type'));\n }\n\n msg += \". Received type \".concat(typeof actual);\n return msg;\n}, TypeError);\ncreateErrorType('ERR_STREAM_PUSH_AFTER_EOF', 'stream.push() after EOF');\ncreateErrorType('ERR_METHOD_NOT_IMPLEMENTED', function (name) {\n return 'The ' + name + ' method is not implemented';\n});\ncreateErrorType('ERR_STREAM_PREMATURE_CLOSE', 'Premature close');\ncreateErrorType('ERR_STREAM_DESTROYED', function (name) {\n return 'Cannot call ' + name + ' after a stream was destroyed';\n});\ncreateErrorType('ERR_MULTIPLE_CALLBACK', 'Callback called multiple times');\ncreateErrorType('ERR_STREAM_CANNOT_PIPE', 'Cannot pipe, not readable');\ncreateErrorType('ERR_STREAM_WRITE_AFTER_END', 'write after end');\ncreateErrorType('ERR_STREAM_NULL_VALUES', 'May not write null values to stream', TypeError);\ncreateErrorType('ERR_UNKNOWN_ENCODING', function (arg) {\n return 'Unknown encoding: ' + arg;\n}, TypeError);\ncreateErrorType('ERR_STREAM_UNSHIFT_AFTER_END_EVENT', 'stream.unshift() after end event');\nmodule.exports.codes = codes;\n","'use strict';\n\nvar ERR_INVALID_OPT_VALUE = require('../../../errors').codes.ERR_INVALID_OPT_VALUE;\n\nfunction highWaterMarkFrom(options, isDuplex, duplexKey) {\n return options.highWaterMark != null ? options.highWaterMark : isDuplex ? options[duplexKey] : null;\n}\n\nfunction getHighWaterMark(state, options, duplexKey, isDuplex) {\n var hwm = highWaterMarkFrom(options, isDuplex, duplexKey);\n\n if (hwm != null) {\n if (!(isFinite(hwm) && Math.floor(hwm) === hwm) || hwm < 0) {\n var name = isDuplex ? duplexKey : 'highWaterMark';\n throw new ERR_INVALID_OPT_VALUE(name, hwm);\n }\n\n return Math.floor(hwm);\n } // Default value\n\n\n return state.objectMode ? 16 : 16 * 1024;\n}\n\nmodule.exports = {\n getHighWaterMark: getHighWaterMark\n};","if (typeof Object.create === 'function') {\n // implementation from standard node.js 'util' module\n module.exports = function inherits(ctor, superCtor) {\n if (superCtor) {\n ctor.super_ = superCtor\n ctor.prototype = Object.create(superCtor.prototype, {\n constructor: {\n value: ctor,\n enumerable: false,\n writable: true,\n configurable: true\n }\n })\n }\n };\n} else {\n // old school shim for old browsers\n module.exports = function inherits(ctor, superCtor) {\n if (superCtor) {\n ctor.super_ = superCtor\n var TempCtor = function () {}\n TempCtor.prototype = superCtor.prototype\n ctor.prototype = new TempCtor()\n ctor.prototype.constructor = ctor\n }\n }\n}\n","\n/**\n * Module exports.\n */\n\nmodule.exports = deprecate;\n\n/**\n * Mark that a method should not be used.\n * Returns a modified function which warns once by default.\n *\n * If `localStorage.noDeprecation = true` is set, then it is a no-op.\n *\n * If `localStorage.throwDeprecation = true` is set, then deprecated functions\n * will throw an Error when invoked.\n *\n * If `localStorage.traceDeprecation = true` is set, then deprecated functions\n * will invoke `console.trace()` instead of `console.error()`.\n *\n * @param {Function} fn - the function to deprecate\n * @param {String} msg - the string to print to the console when `fn` is invoked\n * @returns {Function} a new \"deprecated\" version of `fn`\n * @api public\n */\n\nfunction deprecate (fn, msg) {\n if (config('noDeprecation')) {\n return fn;\n }\n\n var warned = false;\n function deprecated() {\n if (!warned) {\n if (config('throwDeprecation')) {\n throw new Error(msg);\n } else if (config('traceDeprecation')) {\n console.trace(msg);\n } else {\n console.warn(msg);\n }\n warned = true;\n }\n return fn.apply(this, arguments);\n }\n\n return deprecated;\n}\n\n/**\n * Checks `localStorage` for boolean values for the given `name`.\n *\n * @param {String} name\n * @returns {Boolean}\n * @api private\n */\n\nfunction config (name) {\n // accessing global.localStorage can trigger a DOMException in sandboxed iframes\n try {\n if (!global.localStorage) return false;\n } catch (_) {\n return false;\n }\n var val = global.localStorage[name];\n if (null == val) return false;\n return String(val).toLowerCase() === 'true';\n}\n","// Copyright Joyent, Inc. and other Node contributors.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a\n// copy of this software and associated documentation files (the\n// \"Software\"), to deal in the Software without restriction, including\n// without limitation the rights to use, copy, modify, merge, publish,\n// distribute, sublicense, and/or sell copies of the Software, and to permit\n// persons to whom the Software is furnished to do so, subject to the\n// following conditions:\n//\n// The above copyright notice and this permission notice shall be included\n// in all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN\n// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR\n// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\n// USE OR OTHER DEALINGS IN THE SOFTWARE.\n// A bit simpler than readable streams.\n// Implement an async ._write(chunk, encoding, cb), and it'll handle all\n// the drain event emission and buffering.\n'use strict';\n\nmodule.exports = Writable;\n/* <replacement> */\n\nfunction WriteReq(chunk, encoding, cb) {\n this.chunk = chunk;\n this.encoding = encoding;\n this.callback = cb;\n this.next = null;\n} // It seems a linked list but it is not\n// there will be only 2 of these for each stream\n\n\nfunction CorkedRequest(state) {\n var _this = this;\n\n this.next = null;\n this.entry = null;\n\n this.finish = function () {\n onCorkedFinish(_this, state);\n };\n}\n/* </replacement> */\n\n/*<replacement>*/\n\n\nvar Duplex;\n/*</replacement>*/\n\nWritable.WritableState = WritableState;\n/*<replacement>*/\n\nvar internalUtil = {\n deprecate: require('util-deprecate')\n};\n/*</replacement>*/\n\n/*<replacement>*/\n\nvar Stream = require('./internal/streams/stream');\n/*</replacement>*/\n\n\nvar Buffer = require('buffer').Buffer;\n\nvar OurUint8Array = global.Uint8Array || function () {};\n\nfunction _uint8ArrayToBuffer(chunk) {\n return Buffer.from(chunk);\n}\n\nfunction _isUint8Array(obj) {\n return Buffer.isBuffer(obj) || obj instanceof OurUint8Array;\n}\n\nvar destroyImpl = require('./internal/streams/destroy');\n\nvar _require = require('./internal/streams/state'),\n getHighWaterMark = _require.getHighWaterMark;\n\nvar _require$codes = require('../errors').codes,\n ERR_INVALID_ARG_TYPE = _require$codes.ERR_INVALID_ARG_TYPE,\n ERR_METHOD_NOT_IMPLEMENTED = _require$codes.ERR_METHOD_NOT_IMPLEMENTED,\n ERR_MULTIPLE_CALLBACK = _require$codes.ERR_MULTIPLE_CALLBACK,\n ERR_STREAM_CANNOT_PIPE = _require$codes.ERR_STREAM_CANNOT_PIPE,\n ERR_STREAM_DESTROYED = _require$codes.ERR_STREAM_DESTROYED,\n ERR_STREAM_NULL_VALUES = _require$codes.ERR_STREAM_NULL_VALUES,\n ERR_STREAM_WRITE_AFTER_END = _require$codes.ERR_STREAM_WRITE_AFTER_END,\n ERR_UNKNOWN_ENCODING = _require$codes.ERR_UNKNOWN_ENCODING;\n\nvar errorOrDestroy = destroyImpl.errorOrDestroy;\n\nrequire('inherits')(Writable, Stream);\n\nfunction nop() {}\n\nfunction WritableState(options, stream, isDuplex) {\n Duplex = Duplex || require('./_stream_duplex');\n options = options || {}; // Duplex streams are both readable and writable, but share\n // the same options object.\n // However, some cases require setting options to different\n // values for the readable and the writable sides of the duplex stream,\n // e.g. options.readableObjectMode vs. options.writableObjectMode, etc.\n\n if (typeof isDuplex !== 'boolean') isDuplex = stream instanceof Duplex; // object stream flag to indicate whether or not this stream\n // contains buffers or objects.\n\n this.objectMode = !!options.objectMode;\n if (isDuplex) this.objectMode = this.objectMode || !!options.writableObjectMode; // the point at which write() starts returning false\n // Note: 0 is a valid value, means that we always return false if\n // the entire buffer is not flushed immediately on write()\n\n this.highWaterMark = getHighWaterMark(this, options, 'writableHighWaterMark', isDuplex); // if _final has been called\n\n this.finalCalled = false; // drain event flag.\n\n this.needDrain = false; // at the start of calling end()\n\n this.ending = false; // when end() has been called, and returned\n\n this.ended = false; // when 'finish' is emitted\n\n this.finished = false; // has it been destroyed\n\n this.destroyed = false; // should we decode strings into buffers before passing to _write?\n // this is here so that some node-core streams can optimize string\n // handling at a lower level.\n\n var noDecode = options.decodeStrings === false;\n this.decodeStrings = !noDecode; // Crypto is kind of old and crusty. Historically, its default string\n // encoding is 'binary' so we have to make this configurable.\n // Everything else in the universe uses 'utf8', though.\n\n this.defaultEncoding = options.defaultEncoding || 'utf8'; // not an actual buffer we keep track of, but a measurement\n // of how much we're waiting to get pushed to some underlying\n // socket or file.\n\n this.length = 0; // a flag to see when we're in the middle of a write.\n\n this.writing = false; // when true all writes will be buffered until .uncork() call\n\n this.corked = 0; // a flag to be able to tell if the onwrite cb is called immediately,\n // or on a later tick. We set this to true at first, because any\n // actions that shouldn't happen until \"later\" should generally also\n // not happen before the first write call.\n\n this.sync = true; // a flag to know if we're processing previously buffered items, which\n // may call the _write() callback in the same tick, so that we don't\n // end up in an overlapped onwrite situation.\n\n this.bufferProcessing = false; // the callback that's passed to _write(chunk,cb)\n\n this.onwrite = function (er) {\n onwrite(stream, er);\n }; // the callback that the user supplies to write(chunk,encoding,cb)\n\n\n this.writecb = null; // the amount that is being written when _write is called.\n\n this.writelen = 0;\n this.bufferedRequest = null;\n this.lastBufferedRequest = null; // number of pending user-supplied write callbacks\n // this must be 0 before 'finish' can be emitted\n\n this.pendingcb = 0; // emit prefinish if the only thing we're waiting for is _write cbs\n // This is relevant for synchronous Transform streams\n\n this.prefinished = false; // True if the error was already emitted and should not be thrown again\n\n this.errorEmitted = false; // Should close be emitted on destroy. Defaults to true.\n\n this.emitClose = options.emitClose !== false; // Should .destroy() be called after 'finish' (and potentially 'end')\n\n this.autoDestroy = !!options.autoDestroy; // count buffered requests\n\n this.bufferedRequestCount = 0; // allocate the first CorkedRequest, there is always\n // one allocated and free to use, and we maintain at most two\n\n this.corkedRequestsFree = new CorkedRequest(this);\n}\n\nWritableState.prototype.getBuffer = function getBuffer() {\n var current = this.bufferedRequest;\n var out = [];\n\n while (current) {\n out.push(current);\n current = current.next;\n }\n\n return out;\n};\n\n(function () {\n try {\n Object.defineProperty(WritableState.prototype, 'buffer', {\n get: internalUtil.deprecate(function writableStateBufferGetter() {\n return this.getBuffer();\n }, '_writableState.buffer is deprecated. Use _writableState.getBuffer ' + 'instead.', 'DEP0003')\n });\n } catch (_) {}\n})(); // Test _writableState for inheritance to account for Duplex streams,\n// whose prototype chain only points to Readable.\n\n\nvar realHasInstance;\n\nif (typeof Symbol === 'function' && Symbol.hasInstance && typeof Function.prototype[Symbol.hasInstance] === 'function') {\n realHasInstance = Function.prototype[Symbol.hasInstance];\n Object.defineProperty(Writable, Symbol.hasInstance, {\n value: function value(object) {\n if (realHasInstance.call(this, object)) return true;\n if (this !== Writable) return false;\n return object && object._writableState instanceof WritableState;\n }\n });\n} else {\n realHasInstance = function realHasInstance(object) {\n return object instanceof this;\n };\n}\n\nfunction Writable(options) {\n Duplex = Duplex || require('./_stream_duplex'); // Writable ctor is applied to Duplexes, too.\n // `realHasInstance` is necessary because using plain `instanceof`\n // would return false, as no `_writableState` property is attached.\n // Trying to use the custom `instanceof` for Writable here will also break the\n // Node.js LazyTransform implementation, which has a non-trivial getter for\n // `_writableState` that would lead to infinite recursion.\n // Checking for a Stream.Duplex instance is faster here instead of inside\n // the WritableState constructor, at least with V8 6.5\n\n var isDuplex = this instanceof Duplex;\n if (!isDuplex && !realHasInstance.call(Writable, this)) return new Writable(options);\n this._writableState = new WritableState(options, this, isDuplex); // legacy.\n\n this.writable = true;\n\n if (options) {\n if (typeof options.write === 'function') this._write = options.write;\n if (typeof options.writev === 'function') this._writev = options.writev;\n if (typeof options.destroy === 'function') this._destroy = options.destroy;\n if (typeof options.final === 'function') this._final = options.final;\n }\n\n Stream.call(this);\n} // Otherwise people can pipe Writable streams, which is just wrong.\n\n\nWritable.prototype.pipe = function () {\n errorOrDestroy(this, new ERR_STREAM_CANNOT_PIPE());\n};\n\nfunction writeAfterEnd(stream, cb) {\n var er = new ERR_STREAM_WRITE_AFTER_END(); // TODO: defer error events consistently everywhere, not just the cb\n\n errorOrDestroy(stream, er);\n process.nextTick(cb, er);\n} // Checks that a user-supplied chunk is valid, especially for the particular\n// mode the stream is in. Currently this means that `null` is never accepted\n// and undefined/non-string values are only allowed in object mode.\n\n\nfunction validChunk(stream, state, chunk, cb) {\n var er;\n\n if (chunk === null) {\n er = new ERR_STREAM_NULL_VALUES();\n } else if (typeof chunk !== 'string' && !state.objectMode) {\n er = new ERR_INVALID_ARG_TYPE('chunk', ['string', 'Buffer'], chunk);\n }\n\n if (er) {\n errorOrDestroy(stream, er);\n process.nextTick(cb, er);\n return false;\n }\n\n return true;\n}\n\nWritable.prototype.write = function (chunk, encoding, cb) {\n var state = this._writableState;\n var ret = false;\n\n var isBuf = !state.objectMode && _isUint8Array(chunk);\n\n if (isBuf && !Buffer.isBuffer(chunk)) {\n chunk = _uint8ArrayToBuffer(chunk);\n }\n\n if (typeof encoding === 'function') {\n cb = encoding;\n encoding = null;\n }\n\n if (isBuf) encoding = 'buffer';else if (!encoding) encoding = state.defaultEncoding;\n if (typeof cb !== 'function') cb = nop;\n if (state.ending) writeAfterEnd(this, cb);else if (isBuf || validChunk(this, state, chunk, cb)) {\n state.pendingcb++;\n ret = writeOrBuffer(this, state, isBuf, chunk, encoding, cb);\n }\n return ret;\n};\n\nWritable.prototype.cork = function () {\n this._writableState.corked++;\n};\n\nWritable.prototype.uncork = function () {\n var state = this._writableState;\n\n if (state.corked) {\n state.corked--;\n if (!state.writing && !state.corked && !state.bufferProcessing && state.bufferedRequest) clearBuffer(this, state);\n }\n};\n\nWritable.prototype.setDefaultEncoding = function setDefaultEncoding(encoding) {\n // node::ParseEncoding() requires lower case.\n if (typeof encoding === 'string') encoding = encoding.toLowerCase();\n if (!(['hex', 'utf8', 'utf-8', 'ascii', 'binary', 'base64', 'ucs2', 'ucs-2', 'utf16le', 'utf-16le', 'raw'].indexOf((encoding + '').toLowerCase()) > -1)) throw new ERR_UNKNOWN_ENCODING(encoding);\n this._writableState.defaultEncoding = encoding;\n return this;\n};\n\nObject.defineProperty(Writable.prototype, 'writableBuffer', {\n // making it explicit this property is not enumerable\n // because otherwise some prototype manipulation in\n // userland will fail\n enumerable: false,\n get: function get() {\n return this._writableState && this._writableState.getBuffer();\n }\n});\n\nfunction decodeChunk(state, chunk, encoding) {\n if (!state.objectMode && state.decodeStrings !== false && typeof chunk === 'string') {\n chunk = Buffer.from(chunk, encoding);\n }\n\n return chunk;\n}\n\nObject.defineProperty(Writable.prototype, 'writableHighWaterMark', {\n // making it explicit this property is not enumerable\n // because otherwise some prototype manipulation in\n // userland will fail\n enumerable: false,\n get: function get() {\n return this._writableState.highWaterMark;\n }\n}); // if we're already writing something, then just put this\n// in the queue, and wait our turn. Otherwise, call _write\n// If we return false, then we need a drain event, so set that flag.\n\nfunction writeOrBuffer(stream, state, isBuf, chunk, encoding, cb) {\n if (!isBuf) {\n var newChunk = decodeChunk(state, chunk, encoding);\n\n if (chunk !== newChunk) {\n isBuf = true;\n encoding = 'buffer';\n chunk = newChunk;\n }\n }\n\n var len = state.objectMode ? 1 : chunk.length;\n state.length += len;\n var ret = state.length < state.highWaterMark; // we must ensure that previous needDrain will not be reset to false.\n\n if (!ret) state.needDrain = true;\n\n if (state.writing || state.corked) {\n var last = state.lastBufferedRequest;\n state.lastBufferedRequest = {\n chunk: chunk,\n encoding: encoding,\n isBuf: isBuf,\n callback: cb,\n next: null\n };\n\n if (last) {\n last.next = state.lastBufferedRequest;\n } else {\n state.bufferedRequest = state.lastBufferedRequest;\n }\n\n state.bufferedRequestCount += 1;\n } else {\n doWrite(stream, state, false, len, chunk, encoding, cb);\n }\n\n return ret;\n}\n\nfunction doWrite(stream, state, writev, len, chunk, encoding, cb) {\n state.writelen = len;\n state.writecb = cb;\n state.writing = true;\n state.sync = true;\n if (state.destroyed) state.onwrite(new ERR_STREAM_DESTROYED('write'));else if (writev) stream._writev(chunk, state.onwrite);else stream._write(chunk, encoding, state.onwrite);\n state.sync = false;\n}\n\nfunction onwriteError(stream, state, sync, er, cb) {\n --state.pendingcb;\n\n if (sync) {\n // defer the callback if we are being called synchronously\n // to avoid piling up things on the stack\n process.nextTick(cb, er); // this can emit finish, and it will always happen\n // after error\n\n process.nextTick(finishMaybe, stream, state);\n stream._writableState.errorEmitted = true;\n errorOrDestroy(stream, er);\n } else {\n // the caller expect this to happen before if\n // it is async\n cb(er);\n stream._writableState.errorEmitted = true;\n errorOrDestroy(stream, er); // this can emit finish, but finish must\n // always follow error\n\n finishMaybe(stream, state);\n }\n}\n\nfunction onwriteStateUpdate(state) {\n state.writing = false;\n state.writecb = null;\n state.length -= state.writelen;\n state.writelen = 0;\n}\n\nfunction onwrite(stream, er) {\n var state = stream._writableState;\n var sync = state.sync;\n var cb = state.writecb;\n if (typeof cb !== 'function') throw new ERR_MULTIPLE_CALLBACK();\n onwriteStateUpdate(state);\n if (er) onwriteError(stream, state, sync, er, cb);else {\n // Check if we're actually ready to finish, but don't emit yet\n var finished = needFinish(state) || stream.destroyed;\n\n if (!finished && !state.corked && !state.bufferProcessing && state.bufferedRequest) {\n clearBuffer(stream, state);\n }\n\n if (sync) {\n process.nextTick(afterWrite, stream, state, finished, cb);\n } else {\n afterWrite(stream, state, finished, cb);\n }\n }\n}\n\nfunction afterWrite(stream, state, finished, cb) {\n if (!finished) onwriteDrain(stream, state);\n state.pendingcb--;\n cb();\n finishMaybe(stream, state);\n} // Must force callback to be called on nextTick, so that we don't\n// emit 'drain' before the write() consumer gets the 'false' return\n// value, and has a chance to attach a 'drain' listener.\n\n\nfunction onwriteDrain(stream, state) {\n if (state.length === 0 && state.needDrain) {\n state.needDrain = false;\n stream.emit('drain');\n }\n} // if there's something in the buffer waiting, then process it\n\n\nfunction clearBuffer(stream, state) {\n state.bufferProcessing = true;\n var entry = state.bufferedRequest;\n\n if (stream._writev && entry && entry.next) {\n // Fast case, write everything using _writev()\n var l = state.bufferedRequestCount;\n var buffer = new Array(l);\n var holder = state.corkedRequestsFree;\n holder.entry = entry;\n var count = 0;\n var allBuffers = true;\n\n while (entry) {\n buffer[count] = entry;\n if (!entry.isBuf) allBuffers = false;\n entry = entry.next;\n count += 1;\n }\n\n buffer.allBuffers = allBuffers;\n doWrite(stream, state, true, state.length, buffer, '', holder.finish); // doWrite is almost always async, defer these to save a bit of time\n // as the hot path ends with doWrite\n\n state.pendingcb++;\n state.lastBufferedRequest = null;\n\n if (holder.next) {\n state.corkedRequestsFree = holder.next;\n holder.next = null;\n } else {\n state.corkedRequestsFree = new CorkedRequest(state);\n }\n\n state.bufferedRequestCount = 0;\n } else {\n // Slow case, write chunks one-by-one\n while (entry) {\n var chunk = entry.chunk;\n var encoding = entry.encoding;\n var cb = entry.callback;\n var len = state.objectMode ? 1 : chunk.length;\n doWrite(stream, state, false, len, chunk, encoding, cb);\n entry = entry.next;\n state.bufferedRequestCount--; // if we didn't call the onwrite immediately, then\n // it means that we need to wait until it does.\n // also, that means that the chunk and cb are currently\n // being processed, so move the buffer counter past them.\n\n if (state.writing) {\n break;\n }\n }\n\n if (entry === null) state.lastBufferedRequest = null;\n }\n\n state.bufferedRequest = entry;\n state.bufferProcessing = false;\n}\n\nWritable.prototype._write = function (chunk, encoding, cb) {\n cb(new ERR_METHOD_NOT_IMPLEMENTED('_write()'));\n};\n\nWritable.prototype._writev = null;\n\nWritable.prototype.end = function (chunk, encoding, cb) {\n var state = this._writableState;\n\n if (typeof chunk === 'function') {\n cb = chunk;\n chunk = null;\n encoding = null;\n } else if (typeof encoding === 'function') {\n cb = encoding;\n encoding = null;\n }\n\n if (chunk !== null && chunk !== undefined) this.write(chunk, encoding); // .end() fully uncorks\n\n if (state.corked) {\n state.corked = 1;\n this.uncork();\n } // ignore unnecessary end() calls.\n\n\n if (!state.ending) endWritable(this, state, cb);\n return this;\n};\n\nObject.defineProperty(Writable.prototype, 'writableLength', {\n // making it explicit this property is not enumerable\n // because otherwise some prototype manipulation in\n // userland will fail\n enumerable: false,\n get: function get() {\n return this._writableState.length;\n }\n});\n\nfunction needFinish(state) {\n return state.ending && state.length === 0 && state.bufferedRequest === null && !state.finished && !state.writing;\n}\n\nfunction callFinal(stream, state) {\n stream._final(function (err) {\n state.pendingcb--;\n\n if (err) {\n errorOrDestroy(stream, err);\n }\n\n state.prefinished = true;\n stream.emit('prefinish');\n finishMaybe(stream, state);\n });\n}\n\nfunction prefinish(stream, state) {\n if (!state.prefinished && !state.finalCalled) {\n if (typeof stream._final === 'function' && !state.destroyed) {\n state.pendingcb++;\n state.finalCalled = true;\n process.nextTick(callFinal, stream, state);\n } else {\n state.prefinished = true;\n stream.emit('prefinish');\n }\n }\n}\n\nfunction finishMaybe(stream, state) {\n var need = needFinish(state);\n\n if (need) {\n prefinish(stream, state);\n\n if (state.pendingcb === 0) {\n state.finished = true;\n stream.emit('finish');\n\n if (state.autoDestroy) {\n // In case of duplex streams we need a way to detect\n // if the readable side is ready for autoDestroy as well\n var rState = stream._readableState;\n\n if (!rState || rState.autoDestroy && rState.endEmitted) {\n stream.destroy();\n }\n }\n }\n }\n\n return need;\n}\n\nfunction endWritable(stream, state, cb) {\n state.ending = true;\n finishMaybe(stream, state);\n\n if (cb) {\n if (state.finished) process.nextTick(cb);else stream.once('finish', cb);\n }\n\n state.ended = true;\n stream.writable = false;\n}\n\nfunction onCorkedFinish(corkReq, state, err) {\n var entry = corkReq.entry;\n corkReq.entry = null;\n\n while (entry) {\n var cb = entry.callback;\n state.pendingcb--;\n cb(err);\n entry = entry.next;\n } // reuse the free corkReq.\n\n\n state.corkedRequestsFree.next = corkReq;\n}\n\nObject.defineProperty(Writable.prototype, 'destroyed', {\n // making it explicit this property is not enumerable\n // because otherwise some prototype manipulation in\n // userland will fail\n enumerable: false,\n get: function get() {\n if (this._writableState === undefined) {\n return false;\n }\n\n return this._writableState.destroyed;\n },\n set: function set(value) {\n // we ignore the value if the stream\n // has not been initialized yet\n if (!this._writableState) {\n return;\n } // backward compatibility, the user is explicitly\n // managing destroyed\n\n\n this._writableState.destroyed = value;\n }\n});\nWritable.prototype.destroy = destroyImpl.destroy;\nWritable.prototype._undestroy = destroyImpl.undestroy;\n\nWritable.prototype._destroy = function (err, cb) {\n cb(err);\n};","// Copyright Joyent, Inc. and other Node contributors.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a\n// copy of this software and associated documentation files (the\n// \"Software\"), to deal in the Software without restriction, including\n// without limitation the rights to use, copy, modify, merge, publish,\n// distribute, sublicense, and/or sell copies of the Software, and to permit\n// persons to whom the Software is furnished to do so, subject to the\n// following conditions:\n//\n// The above copyright notice and this permission notice shall be included\n// in all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN\n// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR\n// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\n// USE OR OTHER DEALINGS IN THE SOFTWARE.\n// a duplex stream is just a stream that is both readable and writable.\n// Since JS doesn't have multiple prototypal inheritance, this class\n// prototypally inherits from Readable, and then parasitically from\n// Writable.\n'use strict';\n/*<replacement>*/\n\nvar objectKeys = Object.keys || function (obj) {\n var keys = [];\n\n for (var key in obj) {\n keys.push(key);\n }\n\n return keys;\n};\n/*</replacement>*/\n\n\nmodule.exports = Duplex;\n\nvar Readable = require('./_stream_readable');\n\nvar Writable = require('./_stream_writable');\n\nrequire('inherits')(Duplex, Readable);\n\n{\n // Allow the keys array to be GC'ed.\n var keys = objectKeys(Writable.prototype);\n\n for (var v = 0; v < keys.length; v++) {\n var method = keys[v];\n if (!Duplex.prototype[method]) Duplex.prototype[method] = Writable.prototype[method];\n }\n}\n\nfunction Duplex(options) {\n if (!(this instanceof Duplex)) return new Duplex(options);\n Readable.call(this, options);\n Writable.call(this, options);\n this.allowHalfOpen = true;\n\n if (options) {\n if (options.readable === false) this.readable = false;\n if (options.writable === false) this.writable = false;\n\n if (options.allowHalfOpen === false) {\n this.allowHalfOpen = false;\n this.once('end', onend);\n }\n }\n}\n\nObject.defineProperty(Duplex.prototype, 'writableHighWaterMark', {\n // making it explicit this property is not enumerable\n // because otherwise some prototype manipulation in\n // userland will fail\n enumerable: false,\n get: function get() {\n return this._writableState.highWaterMark;\n }\n});\nObject.defineProperty(Duplex.prototype, 'writableBuffer', {\n // making it explicit this property is not enumerable\n // because otherwise some prototype manipulation in\n // userland will fail\n enumerable: false,\n get: function get() {\n return this._writableState && this._writableState.getBuffer();\n }\n});\nObject.defineProperty(Duplex.prototype, 'writableLength', {\n // making it explicit this property is not enumerable\n // because otherwise some prototype manipulation in\n // userland will fail\n enumerable: false,\n get: function get() {\n return this._writableState.length;\n }\n}); // the no-half-open enforcer\n\nfunction onend() {\n // If the writable side ended, then we're ok.\n if (this._writableState.ended) return; // no more data can be written.\n // But allow more writes to happen in this tick.\n\n process.nextTick(onEndNT, this);\n}\n\nfunction onEndNT(self) {\n self.end();\n}\n\nObject.defineProperty(Duplex.prototype, 'destroyed', {\n // making it explicit this property is not enumerable\n // because otherwise some prototype manipulation in\n // userland will fail\n enumerable: false,\n get: function get() {\n if (this._readableState === undefined || this._writableState === undefined) {\n return false;\n }\n\n return this._readableState.destroyed && this._writableState.destroyed;\n },\n set: function set(value) {\n // we ignore the value if the stream\n // has not been initialized yet\n if (this._readableState === undefined || this._writableState === undefined) {\n return;\n } // backward compatibility, the user is explicitly\n // managing destroyed\n\n\n this._readableState.destroyed = value;\n this._writableState.destroyed = value;\n }\n});","/* eslint-disable node/no-deprecated-api */\nvar buffer = require('buffer')\nvar Buffer = buffer.Buffer\n\n// alternative to using Object.keys for old browsers\nfunction copyProps (src, dst) {\n for (var key in src) {\n dst[key] = src[key]\n }\n}\nif (Buffer.from && Buffer.alloc && Buffer.allocUnsafe && Buffer.allocUnsafeSlow) {\n module.exports = buffer\n} else {\n // Copy properties from require('buffer')\n copyProps(buffer, exports)\n exports.Buffer = SafeBuffer\n}\n\nfunction SafeBuffer (arg, encodingOrOffset, length) {\n return Buffer(arg, encodingOrOffset, length)\n}\n\n// Copy static methods from Buffer\ncopyProps(Buffer, SafeBuffer)\n\nSafeBuffer.from = function (arg, encodingOrOffset, length) {\n if (typeof arg === 'number') {\n throw new TypeError('Argument must not be a number')\n }\n return Buffer(arg, encodingOrOffset, length)\n}\n\nSafeBuffer.alloc = function (size, fill, encoding) {\n if (typeof size !== 'number') {\n throw new TypeError('Argument must be a number')\n }\n var buf = Buffer(size)\n if (fill !== undefined) {\n if (typeof encoding === 'string') {\n buf.fill(fill, encoding)\n } else {\n buf.fill(fill)\n }\n } else {\n buf.fill(0)\n }\n return buf\n}\n\nSafeBuffer.allocUnsafe = function (size) {\n if (typeof size !== 'number') {\n throw new TypeError('Argument must be a number')\n }\n return Buffer(size)\n}\n\nSafeBuffer.allocUnsafeSlow = function (size) {\n if (typeof size !== 'number') {\n throw new TypeError('Argument must be a number')\n }\n return buffer.SlowBuffer(size)\n}\n","// Copyright Joyent, Inc. and other Node contributors.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a\n// copy of this software and associated documentation files (the\n// \"Software\"), to deal in the Software without restriction, including\n// without limitation the rights to use, copy, modify, merge, publish,\n// distribute, sublicense, and/or sell copies of the Software, and to permit\n// persons to whom the Software is furnished to do so, subject to the\n// following conditions:\n//\n// The above copyright notice and this permission notice shall be included\n// in all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN\n// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR\n// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\n// USE OR OTHER DEALINGS IN THE SOFTWARE.\n\n'use strict';\n\n/*<replacement>*/\n\nvar Buffer = require('safe-buffer').Buffer;\n/*</replacement>*/\n\nvar isEncoding = Buffer.isEncoding || function (encoding) {\n encoding = '' + encoding;\n switch (encoding && encoding.toLowerCase()) {\n case 'hex':case 'utf8':case 'utf-8':case 'ascii':case 'binary':case 'base64':case 'ucs2':case 'ucs-2':case 'utf16le':case 'utf-16le':case 'raw':\n return true;\n default:\n return false;\n }\n};\n\nfunction _normalizeEncoding(enc) {\n if (!enc) return 'utf8';\n var retried;\n while (true) {\n switch (enc) {\n case 'utf8':\n case 'utf-8':\n return 'utf8';\n case 'ucs2':\n case 'ucs-2':\n case 'utf16le':\n case 'utf-16le':\n return 'utf16le';\n case 'latin1':\n case 'binary':\n return 'latin1';\n case 'base64':\n case 'ascii':\n case 'hex':\n return enc;\n default:\n if (retried) return; // undefined\n enc = ('' + enc).toLowerCase();\n retried = true;\n }\n }\n};\n\n// Do not cache `Buffer.isEncoding` when checking encoding names as some\n// modules monkey-patch it to support additional encodings\nfunction normalizeEncoding(enc) {\n var nenc = _normalizeEncoding(enc);\n if (typeof nenc !== 'string' && (Buffer.isEncoding === isEncoding || !isEncoding(enc))) throw new Error('Unknown encoding: ' + enc);\n return nenc || enc;\n}\n\n// StringDecoder provides an interface for efficiently splitting a series of\n// buffers into a series of JS strings without breaking apart multi-byte\n// characters.\nexports.StringDecoder = StringDecoder;\nfunction StringDecoder(encoding) {\n this.encoding = normalizeEncoding(encoding);\n var nb;\n switch (this.encoding) {\n case 'utf16le':\n this.text = utf16Text;\n this.end = utf16End;\n nb = 4;\n break;\n case 'utf8':\n this.fillLast = utf8FillLast;\n nb = 4;\n break;\n case 'base64':\n this.text = base64Text;\n this.end = base64End;\n nb = 3;\n break;\n default:\n this.write = simpleWrite;\n this.end = simpleEnd;\n return;\n }\n this.lastNeed = 0;\n this.lastTotal = 0;\n this.lastChar = Buffer.allocUnsafe(nb);\n}\n\nStringDecoder.prototype.write = function (buf) {\n if (buf.length === 0) return '';\n var r;\n var i;\n if (this.lastNeed) {\n r = this.fillLast(buf);\n if (r === undefined) return '';\n i = this.lastNeed;\n this.lastNeed = 0;\n } else {\n i = 0;\n }\n if (i < buf.length) return r ? r + this.text(buf, i) : this.text(buf, i);\n return r || '';\n};\n\nStringDecoder.prototype.end = utf8End;\n\n// Returns only complete characters in a Buffer\nStringDecoder.prototype.text = utf8Text;\n\n// Attempts to complete a partial non-UTF-8 character using bytes from a Buffer\nStringDecoder.prototype.fillLast = function (buf) {\n if (this.lastNeed <= buf.length) {\n buf.copy(this.lastChar, this.lastTotal - this.lastNeed, 0, this.lastNeed);\n return this.lastChar.toString(this.encoding, 0, this.lastTotal);\n }\n buf.copy(this.lastChar, this.lastTotal - this.lastNeed, 0, buf.length);\n this.lastNeed -= buf.length;\n};\n\n// Checks the type of a UTF-8 byte, whether it's ASCII, a leading byte, or a\n// continuation byte. If an invalid byte is detected, -2 is returned.\nfunction utf8CheckByte(byte) {\n if (byte <= 0x7F) return 0;else if (byte >> 5 === 0x06) return 2;else if (byte >> 4 === 0x0E) return 3;else if (byte >> 3 === 0x1E) return 4;\n return byte >> 6 === 0x02 ? -1 : -2;\n}\n\n// Checks at most 3 bytes at the end of a Buffer in order to detect an\n// incomplete multi-byte UTF-8 character. The total number of bytes (2, 3, or 4)\n// needed to complete the UTF-8 character (if applicable) are returned.\nfunction utf8CheckIncomplete(self, buf, i) {\n var j = buf.length - 1;\n if (j < i) return 0;\n var nb = utf8CheckByte(buf[j]);\n if (nb >= 0) {\n if (nb > 0) self.lastNeed = nb - 1;\n return nb;\n }\n if (--j < i || nb === -2) return 0;\n nb = utf8CheckByte(buf[j]);\n if (nb >= 0) {\n if (nb > 0) self.lastNeed = nb - 2;\n return nb;\n }\n if (--j < i || nb === -2) return 0;\n nb = utf8CheckByte(buf[j]);\n if (nb >= 0) {\n if (nb > 0) {\n if (nb === 2) nb = 0;else self.lastNeed = nb - 3;\n }\n return nb;\n }\n return 0;\n}\n\n// Validates as many continuation bytes for a multi-byte UTF-8 character as\n// needed or are available. If we see a non-continuation byte where we expect\n// one, we \"replace\" the validated continuation bytes we've seen so far with\n// a single UTF-8 replacement character ('\\ufffd'), to match v8's UTF-8 decoding\n// behavior. The continuation byte check is included three times in the case\n// where all of the continuation bytes for a character exist in the same buffer.\n// It is also done this way as a slight performance increase instead of using a\n// loop.\nfunction utf8CheckExtraBytes(self, buf, p) {\n if ((buf[0] & 0xC0) !== 0x80) {\n self.lastNeed = 0;\n return '\\ufffd';\n }\n if (self.lastNeed > 1 && buf.length > 1) {\n if ((buf[1] & 0xC0) !== 0x80) {\n self.lastNeed = 1;\n return '\\ufffd';\n }\n if (self.lastNeed > 2 && buf.length > 2) {\n if ((buf[2] & 0xC0) !== 0x80) {\n self.lastNeed = 2;\n return '\\ufffd';\n }\n }\n }\n}\n\n// Attempts to complete a multi-byte UTF-8 character using bytes from a Buffer.\nfunction utf8FillLast(buf) {\n var p = this.lastTotal - this.lastNeed;\n var r = utf8CheckExtraBytes(this, buf, p);\n if (r !== undefined) return r;\n if (this.lastNeed <= buf.length) {\n buf.copy(this.lastChar, p, 0, this.lastNeed);\n return this.lastChar.toString(this.encoding, 0, this.lastTotal);\n }\n buf.copy(this.lastChar, p, 0, buf.length);\n this.lastNeed -= buf.length;\n}\n\n// Returns all complete UTF-8 characters in a Buffer. If the Buffer ended on a\n// partial character, the character's bytes are buffered until the required\n// number of bytes are available.\nfunction utf8Text(buf, i) {\n var total = utf8CheckIncomplete(this, buf, i);\n if (!this.lastNeed) return buf.toString('utf8', i);\n this.lastTotal = total;\n var end = buf.length - (total - this.lastNeed);\n buf.copy(this.lastChar, 0, end);\n return buf.toString('utf8', i, end);\n}\n\n// For UTF-8, a replacement character is added when ending on a partial\n// character.\nfunction utf8End(buf) {\n var r = buf && buf.length ? this.write(buf) : '';\n if (this.lastNeed) return r + '\\ufffd';\n return r;\n}\n\n// UTF-16LE typically needs two bytes per character, but even if we have an even\n// number of bytes available, we need to check if we end on a leading/high\n// surrogate. In that case, we need to wait for the next two bytes in order to\n// decode the last character properly.\nfunction utf16Text(buf, i) {\n if ((buf.length - i) % 2 === 0) {\n var r = buf.toString('utf16le', i);\n if (r) {\n var c = r.charCodeAt(r.length - 1);\n if (c >= 0xD800 && c <= 0xDBFF) {\n this.lastNeed = 2;\n this.lastTotal = 4;\n this.lastChar[0] = buf[buf.length - 2];\n this.lastChar[1] = buf[buf.length - 1];\n return r.slice(0, -1);\n }\n }\n return r;\n }\n this.lastNeed = 1;\n this.lastTotal = 2;\n this.lastChar[0] = buf[buf.length - 1];\n return buf.toString('utf16le', i, buf.length - 1);\n}\n\n// For UTF-16LE we do not explicitly append special replacement characters if we\n// end on a partial character, we simply let v8 handle that.\nfunction utf16End(buf) {\n var r = buf && buf.length ? this.write(buf) : '';\n if (this.lastNeed) {\n var end = this.lastTotal - this.lastNeed;\n return r + this.lastChar.toString('utf16le', 0, end);\n }\n return r;\n}\n\nfunction base64Text(buf, i) {\n var n = (buf.length - i) % 3;\n if (n === 0) return buf.toString('base64', i);\n this.lastNeed = 3 - n;\n this.lastTotal = 3;\n if (n === 1) {\n this.lastChar[0] = buf[buf.length - 1];\n } else {\n this.lastChar[0] = buf[buf.length - 2];\n this.lastChar[1] = buf[buf.length - 1];\n }\n return buf.toString('base64', i, buf.length - n);\n}\n\nfunction base64End(buf) {\n var r = buf && buf.length ? this.write(buf) : '';\n if (this.lastNeed) return r + this.lastChar.toString('base64', 0, 3 - this.lastNeed);\n return r;\n}\n\n// Pass bytes on through for single-byte encodings (e.g. ascii, latin1, hex)\nfunction simpleWrite(buf) {\n return buf.toString(this.encoding);\n}\n\nfunction simpleEnd(buf) {\n return buf && buf.length ? this.write(buf) : '';\n}","// Ported from https://github.com/mafintosh/end-of-stream with\n// permission from the author, Mathias Buus (@mafintosh).\n'use strict';\n\nvar ERR_STREAM_PREMATURE_CLOSE = require('../../../errors').codes.ERR_STREAM_PREMATURE_CLOSE;\n\nfunction once(callback) {\n var called = false;\n return function () {\n if (called) return;\n called = true;\n\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n callback.apply(this, args);\n };\n}\n\nfunction noop() {}\n\nfunction isRequest(stream) {\n return stream.setHeader && typeof stream.abort === 'function';\n}\n\nfunction eos(stream, opts, callback) {\n if (typeof opts === 'function') return eos(stream, null, opts);\n if (!opts) opts = {};\n callback = once(callback || noop);\n var readable = opts.readable || opts.readable !== false && stream.readable;\n var writable = opts.writable || opts.writable !== false && stream.writable;\n\n var onlegacyfinish = function onlegacyfinish() {\n if (!stream.writable) onfinish();\n };\n\n var writableEnded = stream._writableState && stream._writableState.finished;\n\n var onfinish = function onfinish() {\n writable = false;\n writableEnded = true;\n if (!readable) callback.call(stream);\n };\n\n var readableEnded = stream._readableState && stream._readableState.endEmitted;\n\n var onend = function onend() {\n readable = false;\n readableEnded = true;\n if (!writable) callback.call(stream);\n };\n\n var onerror = function onerror(err) {\n callback.call(stream, err);\n };\n\n var onclose = function onclose() {\n var err;\n\n if (readable && !readableEnded) {\n if (!stream._readableState || !stream._readableState.ended) err = new ERR_STREAM_PREMATURE_CLOSE();\n return callback.call(stream, err);\n }\n\n if (writable && !writableEnded) {\n if (!stream._writableState || !stream._writableState.ended) err = new ERR_STREAM_PREMATURE_CLOSE();\n return callback.call(stream, err);\n }\n };\n\n var onrequest = function onrequest() {\n stream.req.on('finish', onfinish);\n };\n\n if (isRequest(stream)) {\n stream.on('complete', onfinish);\n stream.on('abort', onclose);\n if (stream.req) onrequest();else stream.on('request', onrequest);\n } else if (writable && !stream._writableState) {\n // legacy streams\n stream.on('end', onlegacyfinish);\n stream.on('close', onlegacyfinish);\n }\n\n stream.on('end', onend);\n stream.on('finish', onfinish);\n if (opts.error !== false) stream.on('error', onerror);\n stream.on('close', onclose);\n return function () {\n stream.removeListener('complete', onfinish);\n stream.removeListener('abort', onclose);\n stream.removeListener('request', onrequest);\n if (stream.req) stream.req.removeListener('finish', onfinish);\n stream.removeListener('end', onlegacyfinish);\n stream.removeListener('close', onlegacyfinish);\n stream.removeListener('finish', onfinish);\n stream.removeListener('end', onend);\n stream.removeListener('error', onerror);\n stream.removeListener('close', onclose);\n };\n}\n\nmodule.exports = eos;","'use strict';\n\nvar _Object$setPrototypeO;\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\nvar finished = require('./end-of-stream');\n\nvar kLastResolve = Symbol('lastResolve');\nvar kLastReject = Symbol('lastReject');\nvar kError = Symbol('error');\nvar kEnded = Symbol('ended');\nvar kLastPromise = Symbol('lastPromise');\nvar kHandlePromise = Symbol('handlePromise');\nvar kStream = Symbol('stream');\n\nfunction createIterResult(value, done) {\n return {\n value: value,\n done: done\n };\n}\n\nfunction readAndResolve(iter) {\n var resolve = iter[kLastResolve];\n\n if (resolve !== null) {\n var data = iter[kStream].read(); // we defer if data is null\n // we can be expecting either 'end' or\n // 'error'\n\n if (data !== null) {\n iter[kLastPromise] = null;\n iter[kLastResolve] = null;\n iter[kLastReject] = null;\n resolve(createIterResult(data, false));\n }\n }\n}\n\nfunction onReadable(iter) {\n // we wait for the next tick, because it might\n // emit an error with process.nextTick\n process.nextTick(readAndResolve, iter);\n}\n\nfunction wrapForNext(lastPromise, iter) {\n return function (resolve, reject) {\n lastPromise.then(function () {\n if (iter[kEnded]) {\n resolve(createIterResult(undefined, true));\n return;\n }\n\n iter[kHandlePromise](resolve, reject);\n }, reject);\n };\n}\n\nvar AsyncIteratorPrototype = Object.getPrototypeOf(function () {});\nvar ReadableStreamAsyncIteratorPrototype = Object.setPrototypeOf((_Object$setPrototypeO = {\n get stream() {\n return this[kStream];\n },\n\n next: function next() {\n var _this = this;\n\n // if we have detected an error in the meanwhile\n // reject straight away\n var error = this[kError];\n\n if (error !== null) {\n return Promise.reject(error);\n }\n\n if (this[kEnded]) {\n return Promise.resolve(createIterResult(undefined, true));\n }\n\n if (this[kStream].destroyed) {\n // We need to defer via nextTick because if .destroy(err) is\n // called, the error will be emitted via nextTick, and\n // we cannot guarantee that there is no error lingering around\n // waiting to be emitted.\n return new Promise(function (resolve, reject) {\n process.nextTick(function () {\n if (_this[kError]) {\n reject(_this[kError]);\n } else {\n resolve(createIterResult(undefined, true));\n }\n });\n });\n } // if we have multiple next() calls\n // we will wait for the previous Promise to finish\n // this logic is optimized to support for await loops,\n // where next() is only called once at a time\n\n\n var lastPromise = this[kLastPromise];\n var promise;\n\n if (lastPromise) {\n promise = new Promise(wrapForNext(lastPromise, this));\n } else {\n // fast path needed to support multiple this.push()\n // without triggering the next() queue\n var data = this[kStream].read();\n\n if (data !== null) {\n return Promise.resolve(createIterResult(data, false));\n }\n\n promise = new Promise(this[kHandlePromise]);\n }\n\n this[kLastPromise] = promise;\n return promise;\n }\n}, _defineProperty(_Object$setPrototypeO, Symbol.asyncIterator, function () {\n return this;\n}), _defineProperty(_Object$setPrototypeO, \"return\", function _return() {\n var _this2 = this;\n\n // destroy(err, cb) is a private API\n // we can guarantee we have that here, because we control the\n // Readable class this is attached to\n return new Promise(function (resolve, reject) {\n _this2[kStream].destroy(null, function (err) {\n if (err) {\n reject(err);\n return;\n }\n\n resolve(createIterResult(undefined, true));\n });\n });\n}), _Object$setPrototypeO), AsyncIteratorPrototype);\n\nvar createReadableStreamAsyncIterator = function createReadableStreamAsyncIterator(stream) {\n var _Object$create;\n\n var iterator = Object.create(ReadableStreamAsyncIteratorPrototype, (_Object$create = {}, _defineProperty(_Object$create, kStream, {\n value: stream,\n writable: true\n }), _defineProperty(_Object$create, kLastResolve, {\n value: null,\n writable: true\n }), _defineProperty(_Object$create, kLastReject, {\n value: null,\n writable: true\n }), _defineProperty(_Object$create, kError, {\n value: null,\n writable: true\n }), _defineProperty(_Object$create, kEnded, {\n value: stream._readableState.endEmitted,\n writable: true\n }), _defineProperty(_Object$create, kHandlePromise, {\n value: function value(resolve, reject) {\n var data = iterator[kStream].read();\n\n if (data) {\n iterator[kLastPromise] = null;\n iterator[kLastResolve] = null;\n iterator[kLastReject] = null;\n resolve(createIterResult(data, false));\n } else {\n iterator[kLastResolve] = resolve;\n iterator[kLastReject] = reject;\n }\n },\n writable: true\n }), _Object$create));\n iterator[kLastPromise] = null;\n finished(stream, function (err) {\n if (err && err.code !== 'ERR_STREAM_PREMATURE_CLOSE') {\n var reject = iterator[kLastReject]; // reject if we are waiting for data in the Promise\n // returned by next() and store the error\n\n if (reject !== null) {\n iterator[kLastPromise] = null;\n iterator[kLastResolve] = null;\n iterator[kLastReject] = null;\n reject(err);\n }\n\n iterator[kError] = err;\n return;\n }\n\n var resolve = iterator[kLastResolve];\n\n if (resolve !== null) {\n iterator[kLastPromise] = null;\n iterator[kLastResolve] = null;\n iterator[kLastReject] = null;\n resolve(createIterResult(undefined, true));\n }\n\n iterator[kEnded] = true;\n });\n stream.on('readable', onReadable.bind(null, iterator));\n return iterator;\n};\n\nmodule.exports = createReadableStreamAsyncIterator;","module.exports = function () {\n throw new Error('Readable.from is not available in the browser')\n};\n","// Copyright Joyent, Inc. and other Node contributors.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a\n// copy of this software and associated documentation files (the\n// \"Software\"), to deal in the Software without restriction, including\n// without limitation the rights to use, copy, modify, merge, publish,\n// distribute, sublicense, and/or sell copies of the Software, and to permit\n// persons to whom the Software is furnished to do so, subject to the\n// following conditions:\n//\n// The above copyright notice and this permission notice shall be included\n// in all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN\n// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR\n// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\n// USE OR OTHER DEALINGS IN THE SOFTWARE.\n'use strict';\n\nmodule.exports = Readable;\n/*<replacement>*/\n\nvar Duplex;\n/*</replacement>*/\n\nReadable.ReadableState = ReadableState;\n/*<replacement>*/\n\nvar EE = require('events').EventEmitter;\n\nvar EElistenerCount = function EElistenerCount(emitter, type) {\n return emitter.listeners(type).length;\n};\n/*</replacement>*/\n\n/*<replacement>*/\n\n\nvar Stream = require('./internal/streams/stream');\n/*</replacement>*/\n\n\nvar Buffer = require('buffer').Buffer;\n\nvar OurUint8Array = global.Uint8Array || function () {};\n\nfunction _uint8ArrayToBuffer(chunk) {\n return Buffer.from(chunk);\n}\n\nfunction _isUint8Array(obj) {\n return Buffer.isBuffer(obj) || obj instanceof OurUint8Array;\n}\n/*<replacement>*/\n\n\nvar debugUtil = require('util');\n\nvar debug;\n\nif (debugUtil && debugUtil.debuglog) {\n debug = debugUtil.debuglog('stream');\n} else {\n debug = function debug() {};\n}\n/*</replacement>*/\n\n\nvar BufferList = require('./internal/streams/buffer_list');\n\nvar destroyImpl = require('./internal/streams/destroy');\n\nvar _require = require('./internal/streams/state'),\n getHighWaterMark = _require.getHighWaterMark;\n\nvar _require$codes = require('../errors').codes,\n ERR_INVALID_ARG_TYPE = _require$codes.ERR_INVALID_ARG_TYPE,\n ERR_STREAM_PUSH_AFTER_EOF = _require$codes.ERR_STREAM_PUSH_AFTER_EOF,\n ERR_METHOD_NOT_IMPLEMENTED = _require$codes.ERR_METHOD_NOT_IMPLEMENTED,\n ERR_STREAM_UNSHIFT_AFTER_END_EVENT = _require$codes.ERR_STREAM_UNSHIFT_AFTER_END_EVENT; // Lazy loaded to improve the startup performance.\n\n\nvar StringDecoder;\nvar createReadableStreamAsyncIterator;\nvar from;\n\nrequire('inherits')(Readable, Stream);\n\nvar errorOrDestroy = destroyImpl.errorOrDestroy;\nvar kProxyEvents = ['error', 'close', 'destroy', 'pause', 'resume'];\n\nfunction prependListener(emitter, event, fn) {\n // Sadly this is not cacheable as some libraries bundle their own\n // event emitter implementation with them.\n if (typeof emitter.prependListener === 'function') return emitter.prependListener(event, fn); // This is a hack to make sure that our error handler is attached before any\n // userland ones. NEVER DO THIS. This is here only because this code needs\n // to continue to work with older versions of Node.js that do not include\n // the prependListener() method. The goal is to eventually remove this hack.\n\n if (!emitter._events || !emitter._events[event]) emitter.on(event, fn);else if (Array.isArray(emitter._events[event])) emitter._events[event].unshift(fn);else emitter._events[event] = [fn, emitter._events[event]];\n}\n\nfunction ReadableState(options, stream, isDuplex) {\n Duplex = Duplex || require('./_stream_duplex');\n options = options || {}; // Duplex streams are both readable and writable, but share\n // the same options object.\n // However, some cases require setting options to different\n // values for the readable and the writable sides of the duplex stream.\n // These options can be provided separately as readableXXX and writableXXX.\n\n if (typeof isDuplex !== 'boolean') isDuplex = stream instanceof Duplex; // object stream flag. Used to make read(n) ignore n and to\n // make all the buffer merging and length checks go away\n\n this.objectMode = !!options.objectMode;\n if (isDuplex) this.objectMode = this.objectMode || !!options.readableObjectMode; // the point at which it stops calling _read() to fill the buffer\n // Note: 0 is a valid value, means \"don't call _read preemptively ever\"\n\n this.highWaterMark = getHighWaterMark(this, options, 'readableHighWaterMark', isDuplex); // A linked list is used to store data chunks instead of an array because the\n // linked list can remove elements from the beginning faster than\n // array.shift()\n\n this.buffer = new BufferList();\n this.length = 0;\n this.pipes = null;\n this.pipesCount = 0;\n this.flowing = null;\n this.ended = false;\n this.endEmitted = false;\n this.reading = false; // a flag to be able to tell if the event 'readable'/'data' is emitted\n // immediately, or on a later tick. We set this to true at first, because\n // any actions that shouldn't happen until \"later\" should generally also\n // not happen before the first read call.\n\n this.sync = true; // whenever we return null, then we set a flag to say\n // that we're awaiting a 'readable' event emission.\n\n this.needReadable = false;\n this.emittedReadable = false;\n this.readableListening = false;\n this.resumeScheduled = false;\n this.paused = true; // Should close be emitted on destroy. Defaults to true.\n\n this.emitClose = options.emitClose !== false; // Should .destroy() be called after 'end' (and potentially 'finish')\n\n this.autoDestroy = !!options.autoDestroy; // has it been destroyed\n\n this.destroyed = false; // Crypto is kind of old and crusty. Historically, its default string\n // encoding is 'binary' so we have to make this configurable.\n // Everything else in the universe uses 'utf8', though.\n\n this.defaultEncoding = options.defaultEncoding || 'utf8'; // the number of writers that are awaiting a drain event in .pipe()s\n\n this.awaitDrain = 0; // if true, a maybeReadMore has been scheduled\n\n this.readingMore = false;\n this.decoder = null;\n this.encoding = null;\n\n if (options.encoding) {\n if (!StringDecoder) StringDecoder = require('string_decoder/').StringDecoder;\n this.decoder = new StringDecoder(options.encoding);\n this.encoding = options.encoding;\n }\n}\n\nfunction Readable(options) {\n Duplex = Duplex || require('./_stream_duplex');\n if (!(this instanceof Readable)) return new Readable(options); // Checking for a Stream.Duplex instance is faster here instead of inside\n // the ReadableState constructor, at least with V8 6.5\n\n var isDuplex = this instanceof Duplex;\n this._readableState = new ReadableState(options, this, isDuplex); // legacy\n\n this.readable = true;\n\n if (options) {\n if (typeof options.read === 'function') this._read = options.read;\n if (typeof options.destroy === 'function') this._destroy = options.destroy;\n }\n\n Stream.call(this);\n}\n\nObject.defineProperty(Readable.prototype, 'destroyed', {\n // making it explicit this property is not enumerable\n // because otherwise some prototype manipulation in\n // userland will fail\n enumerable: false,\n get: function get() {\n if (this._readableState === undefined) {\n return false;\n }\n\n return this._readableState.destroyed;\n },\n set: function set(value) {\n // we ignore the value if the stream\n // has not been initialized yet\n if (!this._readableState) {\n return;\n } // backward compatibility, the user is explicitly\n // managing destroyed\n\n\n this._readableState.destroyed = value;\n }\n});\nReadable.prototype.destroy = destroyImpl.destroy;\nReadable.prototype._undestroy = destroyImpl.undestroy;\n\nReadable.prototype._destroy = function (err, cb) {\n cb(err);\n}; // Manually shove something into the read() buffer.\n// This returns true if the highWaterMark has not been hit yet,\n// similar to how Writable.write() returns true if you should\n// write() some more.\n\n\nReadable.prototype.push = function (chunk, encoding) {\n var state = this._readableState;\n var skipChunkCheck;\n\n if (!state.objectMode) {\n if (typeof chunk === 'string') {\n encoding = encoding || state.defaultEncoding;\n\n if (encoding !== state.encoding) {\n chunk = Buffer.from(chunk, encoding);\n encoding = '';\n }\n\n skipChunkCheck = true;\n }\n } else {\n skipChunkCheck = true;\n }\n\n return readableAddChunk(this, chunk, encoding, false, skipChunkCheck);\n}; // Unshift should *always* be something directly out of read()\n\n\nReadable.prototype.unshift = function (chunk) {\n return readableAddChunk(this, chunk, null, true, false);\n};\n\nfunction readableAddChunk(stream, chunk, encoding, addToFront, skipChunkCheck) {\n debug('readableAddChunk', chunk);\n var state = stream._readableState;\n\n if (chunk === null) {\n state.reading = false;\n onEofChunk(stream, state);\n } else {\n var er;\n if (!skipChunkCheck) er = chunkInvalid(state, chunk);\n\n if (er) {\n errorOrDestroy(stream, er);\n } else if (state.objectMode || chunk && chunk.length > 0) {\n if (typeof chunk !== 'string' && !state.objectMode && Object.getPrototypeOf(chunk) !== Buffer.prototype) {\n chunk = _uint8ArrayToBuffer(chunk);\n }\n\n if (addToFront) {\n if (state.endEmitted) errorOrDestroy(stream, new ERR_STREAM_UNSHIFT_AFTER_END_EVENT());else addChunk(stream, state, chunk, true);\n } else if (state.ended) {\n errorOrDestroy(stream, new ERR_STREAM_PUSH_AFTER_EOF());\n } else if (state.destroyed) {\n return false;\n } else {\n state.reading = false;\n\n if (state.decoder && !encoding) {\n chunk = state.decoder.write(chunk);\n if (state.objectMode || chunk.length !== 0) addChunk(stream, state, chunk, false);else maybeReadMore(stream, state);\n } else {\n addChunk(stream, state, chunk, false);\n }\n }\n } else if (!addToFront) {\n state.reading = false;\n maybeReadMore(stream, state);\n }\n } // We can push more data if we are below the highWaterMark.\n // Also, if we have no data yet, we can stand some more bytes.\n // This is to work around cases where hwm=0, such as the repl.\n\n\n return !state.ended && (state.length < state.highWaterMark || state.length === 0);\n}\n\nfunction addChunk(stream, state, chunk, addToFront) {\n if (state.flowing && state.length === 0 && !state.sync) {\n state.awaitDrain = 0;\n stream.emit('data', chunk);\n } else {\n // update the buffer info.\n state.length += state.objectMode ? 1 : chunk.length;\n if (addToFront) state.buffer.unshift(chunk);else state.buffer.push(chunk);\n if (state.needReadable) emitReadable(stream);\n }\n\n maybeReadMore(stream, state);\n}\n\nfunction chunkInvalid(state, chunk) {\n var er;\n\n if (!_isUint8Array(chunk) && typeof chunk !== 'string' && chunk !== undefined && !state.objectMode) {\n er = new ERR_INVALID_ARG_TYPE('chunk', ['string', 'Buffer', 'Uint8Array'], chunk);\n }\n\n return er;\n}\n\nReadable.prototype.isPaused = function () {\n return this._readableState.flowing === false;\n}; // backwards compatibility.\n\n\nReadable.prototype.setEncoding = function (enc) {\n if (!StringDecoder) StringDecoder = require('string_decoder/').StringDecoder;\n var decoder = new StringDecoder(enc);\n this._readableState.decoder = decoder; // If setEncoding(null), decoder.encoding equals utf8\n\n this._readableState.encoding = this._readableState.decoder.encoding; // Iterate over current buffer to convert already stored Buffers:\n\n var p = this._readableState.buffer.head;\n var content = '';\n\n while (p !== null) {\n content += decoder.write(p.data);\n p = p.next;\n }\n\n this._readableState.buffer.clear();\n\n if (content !== '') this._readableState.buffer.push(content);\n this._readableState.length = content.length;\n return this;\n}; // Don't raise the hwm > 1GB\n\n\nvar MAX_HWM = 0x40000000;\n\nfunction computeNewHighWaterMark(n) {\n if (n >= MAX_HWM) {\n // TODO(ronag): Throw ERR_VALUE_OUT_OF_RANGE.\n n = MAX_HWM;\n } else {\n // Get the next highest power of 2 to prevent increasing hwm excessively in\n // tiny amounts\n n--;\n n |= n >>> 1;\n n |= n >>> 2;\n n |= n >>> 4;\n n |= n >>> 8;\n n |= n >>> 16;\n n++;\n }\n\n return n;\n} // This function is designed to be inlinable, so please take care when making\n// changes to the function body.\n\n\nfunction howMuchToRead(n, state) {\n if (n <= 0 || state.length === 0 && state.ended) return 0;\n if (state.objectMode) return 1;\n\n if (n !== n) {\n // Only flow one buffer at a time\n if (state.flowing && state.length) return state.buffer.head.data.length;else return state.length;\n } // If we're asking for more than the current hwm, then raise the hwm.\n\n\n if (n > state.highWaterMark) state.highWaterMark = computeNewHighWaterMark(n);\n if (n <= state.length) return n; // Don't have enough\n\n if (!state.ended) {\n state.needReadable = true;\n return 0;\n }\n\n return state.length;\n} // you can override either this method, or the async _read(n) below.\n\n\nReadable.prototype.read = function (n) {\n debug('read', n);\n n = parseInt(n, 10);\n var state = this._readableState;\n var nOrig = n;\n if (n !== 0) state.emittedReadable = false; // if we're doing read(0) to trigger a readable event, but we\n // already have a bunch of data in the buffer, then just trigger\n // the 'readable' event and move on.\n\n if (n === 0 && state.needReadable && ((state.highWaterMark !== 0 ? state.length >= state.highWaterMark : state.length > 0) || state.ended)) {\n debug('read: emitReadable', state.length, state.ended);\n if (state.length === 0 && state.ended) endReadable(this);else emitReadable(this);\n return null;\n }\n\n n = howMuchToRead(n, state); // if we've ended, and we're now clear, then finish it up.\n\n if (n === 0 && state.ended) {\n if (state.length === 0) endReadable(this);\n return null;\n } // All the actual chunk generation logic needs to be\n // *below* the call to _read. The reason is that in certain\n // synthetic stream cases, such as passthrough streams, _read\n // may be a completely synchronous operation which may change\n // the state of the read buffer, providing enough data when\n // before there was *not* enough.\n //\n // So, the steps are:\n // 1. Figure out what the state of things will be after we do\n // a read from the buffer.\n //\n // 2. If that resulting state will trigger a _read, then call _read.\n // Note that this may be asynchronous, or synchronous. Yes, it is\n // deeply ugly to write APIs this way, but that still doesn't mean\n // that the Readable class should behave improperly, as streams are\n // designed to be sync/async agnostic.\n // Take note if the _read call is sync or async (ie, if the read call\n // has returned yet), so that we know whether or not it's safe to emit\n // 'readable' etc.\n //\n // 3. Actually pull the requested chunks out of the buffer and return.\n // if we need a readable event, then we need to do some reading.\n\n\n var doRead = state.needReadable;\n debug('need readable', doRead); // if we currently have less than the highWaterMark, then also read some\n\n if (state.length === 0 || state.length - n < state.highWaterMark) {\n doRead = true;\n debug('length less than watermark', doRead);\n } // however, if we've ended, then there's no point, and if we're already\n // reading, then it's unnecessary.\n\n\n if (state.ended || state.reading) {\n doRead = false;\n debug('reading or ended', doRead);\n } else if (doRead) {\n debug('do read');\n state.reading = true;\n state.sync = true; // if the length is currently zero, then we *need* a readable event.\n\n if (state.length === 0) state.needReadable = true; // call internal read method\n\n this._read(state.highWaterMark);\n\n state.sync = false; // If _read pushed data synchronously, then `reading` will be false,\n // and we need to re-evaluate how much data we can return to the user.\n\n if (!state.reading) n = howMuchToRead(nOrig, state);\n }\n\n var ret;\n if (n > 0) ret = fromList(n, state);else ret = null;\n\n if (ret === null) {\n state.needReadable = state.length <= state.highWaterMark;\n n = 0;\n } else {\n state.length -= n;\n state.awaitDrain = 0;\n }\n\n if (state.length === 0) {\n // If we have nothing in the buffer, then we want to know\n // as soon as we *do* get something into the buffer.\n if (!state.ended) state.needReadable = true; // If we tried to read() past the EOF, then emit end on the next tick.\n\n if (nOrig !== n && state.ended) endReadable(this);\n }\n\n if (ret !== null) this.emit('data', ret);\n return ret;\n};\n\nfunction onEofChunk(stream, state) {\n debug('onEofChunk');\n if (state.ended) return;\n\n if (state.decoder) {\n var chunk = state.decoder.end();\n\n if (chunk && chunk.length) {\n state.buffer.push(chunk);\n state.length += state.objectMode ? 1 : chunk.length;\n }\n }\n\n state.ended = true;\n\n if (state.sync) {\n // if we are sync, wait until next tick to emit the data.\n // Otherwise we risk emitting data in the flow()\n // the readable code triggers during a read() call\n emitReadable(stream);\n } else {\n // emit 'readable' now to make sure it gets picked up.\n state.needReadable = false;\n\n if (!state.emittedReadable) {\n state.emittedReadable = true;\n emitReadable_(stream);\n }\n }\n} // Don't emit readable right away in sync mode, because this can trigger\n// another read() call => stack overflow. This way, it might trigger\n// a nextTick recursion warning, but that's not so bad.\n\n\nfunction emitReadable(stream) {\n var state = stream._readableState;\n debug('emitReadable', state.needReadable, state.emittedReadable);\n state.needReadable = false;\n\n if (!state.emittedReadable) {\n debug('emitReadable', state.flowing);\n state.emittedReadable = true;\n process.nextTick(emitReadable_, stream);\n }\n}\n\nfunction emitReadable_(stream) {\n var state = stream._readableState;\n debug('emitReadable_', state.destroyed, state.length, state.ended);\n\n if (!state.destroyed && (state.length || state.ended)) {\n stream.emit('readable');\n state.emittedReadable = false;\n } // The stream needs another readable event if\n // 1. It is not flowing, as the flow mechanism will take\n // care of it.\n // 2. It is not ended.\n // 3. It is below the highWaterMark, so we can schedule\n // another readable later.\n\n\n state.needReadable = !state.flowing && !state.ended && state.length <= state.highWaterMark;\n flow(stream);\n} // at this point, the user has presumably seen the 'readable' event,\n// and called read() to consume some data. that may have triggered\n// in turn another _read(n) call, in which case reading = true if\n// it's in progress.\n// However, if we're not ended, or reading, and the length < hwm,\n// then go ahead and try to read some more preemptively.\n\n\nfunction maybeReadMore(stream, state) {\n if (!state.readingMore) {\n state.readingMore = true;\n process.nextTick(maybeReadMore_, stream, state);\n }\n}\n\nfunction maybeReadMore_(stream, state) {\n // Attempt to read more data if we should.\n //\n // The conditions for reading more data are (one of):\n // - Not enough data buffered (state.length < state.highWaterMark). The loop\n // is responsible for filling the buffer with enough data if such data\n // is available. If highWaterMark is 0 and we are not in the flowing mode\n // we should _not_ attempt to buffer any extra data. We'll get more data\n // when the stream consumer calls read() instead.\n // - No data in the buffer, and the stream is in flowing mode. In this mode\n // the loop below is responsible for ensuring read() is called. Failing to\n // call read here would abort the flow and there's no other mechanism for\n // continuing the flow if the stream consumer has just subscribed to the\n // 'data' event.\n //\n // In addition to the above conditions to keep reading data, the following\n // conditions prevent the data from being read:\n // - The stream has ended (state.ended).\n // - There is already a pending 'read' operation (state.reading). This is a\n // case where the the stream has called the implementation defined _read()\n // method, but they are processing the call asynchronously and have _not_\n // called push() with new data. In this case we skip performing more\n // read()s. The execution ends in this method again after the _read() ends\n // up calling push() with more data.\n while (!state.reading && !state.ended && (state.length < state.highWaterMark || state.flowing && state.length === 0)) {\n var len = state.length;\n debug('maybeReadMore read 0');\n stream.read(0);\n if (len === state.length) // didn't get any data, stop spinning.\n break;\n }\n\n state.readingMore = false;\n} // abstract method. to be overridden in specific implementation classes.\n// call cb(er, data) where data is <= n in length.\n// for virtual (non-string, non-buffer) streams, \"length\" is somewhat\n// arbitrary, and perhaps not very meaningful.\n\n\nReadable.prototype._read = function (n) {\n errorOrDestroy(this, new ERR_METHOD_NOT_IMPLEMENTED('_read()'));\n};\n\nReadable.prototype.pipe = function (dest, pipeOpts) {\n var src = this;\n var state = this._readableState;\n\n switch (state.pipesCount) {\n case 0:\n state.pipes = dest;\n break;\n\n case 1:\n state.pipes = [state.pipes, dest];\n break;\n\n default:\n state.pipes.push(dest);\n break;\n }\n\n state.pipesCount += 1;\n debug('pipe count=%d opts=%j', state.pipesCount, pipeOpts);\n var doEnd = (!pipeOpts || pipeOpts.end !== false) && dest !== process.stdout && dest !== process.stderr;\n var endFn = doEnd ? onend : unpipe;\n if (state.endEmitted) process.nextTick(endFn);else src.once('end', endFn);\n dest.on('unpipe', onunpipe);\n\n function onunpipe(readable, unpipeInfo) {\n debug('onunpipe');\n\n if (readable === src) {\n if (unpipeInfo && unpipeInfo.hasUnpiped === false) {\n unpipeInfo.hasUnpiped = true;\n cleanup();\n }\n }\n }\n\n function onend() {\n debug('onend');\n dest.end();\n } // when the dest drains, it reduces the awaitDrain counter\n // on the source. This would be more elegant with a .once()\n // handler in flow(), but adding and removing repeatedly is\n // too slow.\n\n\n var ondrain = pipeOnDrain(src);\n dest.on('drain', ondrain);\n var cleanedUp = false;\n\n function cleanup() {\n debug('cleanup'); // cleanup event handlers once the pipe is broken\n\n dest.removeListener('close', onclose);\n dest.removeListener('finish', onfinish);\n dest.removeListener('drain', ondrain);\n dest.removeListener('error', onerror);\n dest.removeListener('unpipe', onunpipe);\n src.removeListener('end', onend);\n src.removeListener('end', unpipe);\n src.removeListener('data', ondata);\n cleanedUp = true; // if the reader is waiting for a drain event from this\n // specific writer, then it would cause it to never start\n // flowing again.\n // So, if this is awaiting a drain, then we just call it now.\n // If we don't know, then assume that we are waiting for one.\n\n if (state.awaitDrain && (!dest._writableState || dest._writableState.needDrain)) ondrain();\n }\n\n src.on('data', ondata);\n\n function ondata(chunk) {\n debug('ondata');\n var ret = dest.write(chunk);\n debug('dest.write', ret);\n\n if (ret === false) {\n // If the user unpiped during `dest.write()`, it is possible\n // to get stuck in a permanently paused state if that write\n // also returned false.\n // => Check whether `dest` is still a piping destination.\n if ((state.pipesCount === 1 && state.pipes === dest || state.pipesCount > 1 && indexOf(state.pipes, dest) !== -1) && !cleanedUp) {\n debug('false write response, pause', state.awaitDrain);\n state.awaitDrain++;\n }\n\n src.pause();\n }\n } // if the dest has an error, then stop piping into it.\n // however, don't suppress the throwing behavior for this.\n\n\n function onerror(er) {\n debug('onerror', er);\n unpipe();\n dest.removeListener('error', onerror);\n if (EElistenerCount(dest, 'error') === 0) errorOrDestroy(dest, er);\n } // Make sure our error handler is attached before userland ones.\n\n\n prependListener(dest, 'error', onerror); // Both close and finish should trigger unpipe, but only once.\n\n function onclose() {\n dest.removeListener('finish', onfinish);\n unpipe();\n }\n\n dest.once('close', onclose);\n\n function onfinish() {\n debug('onfinish');\n dest.removeListener('close', onclose);\n unpipe();\n }\n\n dest.once('finish', onfinish);\n\n function unpipe() {\n debug('unpipe');\n src.unpipe(dest);\n } // tell the dest that it's being piped to\n\n\n dest.emit('pipe', src); // start the flow if it hasn't been started already.\n\n if (!state.flowing) {\n debug('pipe resume');\n src.resume();\n }\n\n return dest;\n};\n\nfunction pipeOnDrain(src) {\n return function pipeOnDrainFunctionResult() {\n var state = src._readableState;\n debug('pipeOnDrain', state.awaitDrain);\n if (state.awaitDrain) state.awaitDrain--;\n\n if (state.awaitDrain === 0 && EElistenerCount(src, 'data')) {\n state.flowing = true;\n flow(src);\n }\n };\n}\n\nReadable.prototype.unpipe = function (dest) {\n var state = this._readableState;\n var unpipeInfo = {\n hasUnpiped: false\n }; // if we're not piping anywhere, then do nothing.\n\n if (state.pipesCount === 0) return this; // just one destination. most common case.\n\n if (state.pipesCount === 1) {\n // passed in one, but it's not the right one.\n if (dest && dest !== state.pipes) return this;\n if (!dest) dest = state.pipes; // got a match.\n\n state.pipes = null;\n state.pipesCount = 0;\n state.flowing = false;\n if (dest) dest.emit('unpipe', this, unpipeInfo);\n return this;\n } // slow case. multiple pipe destinations.\n\n\n if (!dest) {\n // remove all.\n var dests = state.pipes;\n var len = state.pipesCount;\n state.pipes = null;\n state.pipesCount = 0;\n state.flowing = false;\n\n for (var i = 0; i < len; i++) {\n dests[i].emit('unpipe', this, {\n hasUnpiped: false\n });\n }\n\n return this;\n } // try to find the right one.\n\n\n var index = indexOf(state.pipes, dest);\n if (index === -1) return this;\n state.pipes.splice(index, 1);\n state.pipesCount -= 1;\n if (state.pipesCount === 1) state.pipes = state.pipes[0];\n dest.emit('unpipe', this, unpipeInfo);\n return this;\n}; // set up data events if they are asked for\n// Ensure readable listeners eventually get something\n\n\nReadable.prototype.on = function (ev, fn) {\n var res = Stream.prototype.on.call(this, ev, fn);\n var state = this._readableState;\n\n if (ev === 'data') {\n // update readableListening so that resume() may be a no-op\n // a few lines down. This is needed to support once('readable').\n state.readableListening = this.listenerCount('readable') > 0; // Try start flowing on next tick if stream isn't explicitly paused\n\n if (state.flowing !== false) this.resume();\n } else if (ev === 'readable') {\n if (!state.endEmitted && !state.readableListening) {\n state.readableListening = state.needReadable = true;\n state.flowing = false;\n state.emittedReadable = false;\n debug('on readable', state.length, state.reading);\n\n if (state.length) {\n emitReadable(this);\n } else if (!state.reading) {\n process.nextTick(nReadingNextTick, this);\n }\n }\n }\n\n return res;\n};\n\nReadable.prototype.addListener = Readable.prototype.on;\n\nReadable.prototype.removeListener = function (ev, fn) {\n var res = Stream.prototype.removeListener.call(this, ev, fn);\n\n if (ev === 'readable') {\n // We need to check if there is someone still listening to\n // readable and reset the state. However this needs to happen\n // after readable has been emitted but before I/O (nextTick) to\n // support once('readable', fn) cycles. This means that calling\n // resume within the same tick will have no\n // effect.\n process.nextTick(updateReadableListening, this);\n }\n\n return res;\n};\n\nReadable.prototype.removeAllListeners = function (ev) {\n var res = Stream.prototype.removeAllListeners.apply(this, arguments);\n\n if (ev === 'readable' || ev === undefined) {\n // We need to check if there is someone still listening to\n // readable and reset the state. However this needs to happen\n // after readable has been emitted but before I/O (nextTick) to\n // support once('readable', fn) cycles. This means that calling\n // resume within the same tick will have no\n // effect.\n process.nextTick(updateReadableListening, this);\n }\n\n return res;\n};\n\nfunction updateReadableListening(self) {\n var state = self._readableState;\n state.readableListening = self.listenerCount('readable') > 0;\n\n if (state.resumeScheduled && !state.paused) {\n // flowing needs to be set to true now, otherwise\n // the upcoming resume will not flow.\n state.flowing = true; // crude way to check if we should resume\n } else if (self.listenerCount('data') > 0) {\n self.resume();\n }\n}\n\nfunction nReadingNextTick(self) {\n debug('readable nexttick read 0');\n self.read(0);\n} // pause() and resume() are remnants of the legacy readable stream API\n// If the user uses them, then switch into old mode.\n\n\nReadable.prototype.resume = function () {\n var state = this._readableState;\n\n if (!state.flowing) {\n debug('resume'); // we flow only if there is no one listening\n // for readable, but we still have to call\n // resume()\n\n state.flowing = !state.readableListening;\n resume(this, state);\n }\n\n state.paused = false;\n return this;\n};\n\nfunction resume(stream, state) {\n if (!state.resumeScheduled) {\n state.resumeScheduled = true;\n process.nextTick(resume_, stream, state);\n }\n}\n\nfunction resume_(stream, state) {\n debug('resume', state.reading);\n\n if (!state.reading) {\n stream.read(0);\n }\n\n state.resumeScheduled = false;\n stream.emit('resume');\n flow(stream);\n if (state.flowing && !state.reading) stream.read(0);\n}\n\nReadable.prototype.pause = function () {\n debug('call pause flowing=%j', this._readableState.flowing);\n\n if (this._readableState.flowing !== false) {\n debug('pause');\n this._readableState.flowing = false;\n this.emit('pause');\n }\n\n this._readableState.paused = true;\n return this;\n};\n\nfunction flow(stream) {\n var state = stream._readableState;\n debug('flow', state.flowing);\n\n while (state.flowing && stream.read() !== null) {\n ;\n }\n} // wrap an old-style stream as the async data source.\n// This is *not* part of the readable stream interface.\n// It is an ugly unfortunate mess of history.\n\n\nReadable.prototype.wrap = function (stream) {\n var _this = this;\n\n var state = this._readableState;\n var paused = false;\n stream.on('end', function () {\n debug('wrapped end');\n\n if (state.decoder && !state.ended) {\n var chunk = state.decoder.end();\n if (chunk && chunk.length) _this.push(chunk);\n }\n\n _this.push(null);\n });\n stream.on('data', function (chunk) {\n debug('wrapped data');\n if (state.decoder) chunk = state.decoder.write(chunk); // don't skip over falsy values in objectMode\n\n if (state.objectMode && (chunk === null || chunk === undefined)) return;else if (!state.objectMode && (!chunk || !chunk.length)) return;\n\n var ret = _this.push(chunk);\n\n if (!ret) {\n paused = true;\n stream.pause();\n }\n }); // proxy all the other methods.\n // important when wrapping filters and duplexes.\n\n for (var i in stream) {\n if (this[i] === undefined && typeof stream[i] === 'function') {\n this[i] = function methodWrap(method) {\n return function methodWrapReturnFunction() {\n return stream[method].apply(stream, arguments);\n };\n }(i);\n }\n } // proxy certain important events.\n\n\n for (var n = 0; n < kProxyEvents.length; n++) {\n stream.on(kProxyEvents[n], this.emit.bind(this, kProxyEvents[n]));\n } // when we try to consume some more bytes, simply unpause the\n // underlying stream.\n\n\n this._read = function (n) {\n debug('wrapped _read', n);\n\n if (paused) {\n paused = false;\n stream.resume();\n }\n };\n\n return this;\n};\n\nif (typeof Symbol === 'function') {\n Readable.prototype[Symbol.asyncIterator] = function () {\n if (createReadableStreamAsyncIterator === undefined) {\n createReadableStreamAsyncIterator = require('./internal/streams/async_iterator');\n }\n\n return createReadableStreamAsyncIterator(this);\n };\n}\n\nObject.defineProperty(Readable.prototype, 'readableHighWaterMark', {\n // making it explicit this property is not enumerable\n // because otherwise some prototype manipulation in\n // userland will fail\n enumerable: false,\n get: function get() {\n return this._readableState.highWaterMark;\n }\n});\nObject.defineProperty(Readable.prototype, 'readableBuffer', {\n // making it explicit this property is not enumerable\n // because otherwise some prototype manipulation in\n // userland will fail\n enumerable: false,\n get: function get() {\n return this._readableState && this._readableState.buffer;\n }\n});\nObject.defineProperty(Readable.prototype, 'readableFlowing', {\n // making it explicit this property is not enumerable\n // because otherwise some prototype manipulation in\n // userland will fail\n enumerable: false,\n get: function get() {\n return this._readableState.flowing;\n },\n set: function set(state) {\n if (this._readableState) {\n this._readableState.flowing = state;\n }\n }\n}); // exposed for testing purposes only.\n\nReadable._fromList = fromList;\nObject.defineProperty(Readable.prototype, 'readableLength', {\n // making it explicit this property is not enumerable\n // because otherwise some prototype manipulation in\n // userland will fail\n enumerable: false,\n get: function get() {\n return this._readableState.length;\n }\n}); // Pluck off n bytes from an array of buffers.\n// Length is the combined lengths of all the buffers in the list.\n// This function is designed to be inlinable, so please take care when making\n// changes to the function body.\n\nfunction fromList(n, state) {\n // nothing buffered\n if (state.length === 0) return null;\n var ret;\n if (state.objectMode) ret = state.buffer.shift();else if (!n || n >= state.length) {\n // read it all, truncate the list\n if (state.decoder) ret = state.buffer.join('');else if (state.buffer.length === 1) ret = state.buffer.first();else ret = state.buffer.concat(state.length);\n state.buffer.clear();\n } else {\n // read part of list\n ret = state.buffer.consume(n, state.decoder);\n }\n return ret;\n}\n\nfunction endReadable(stream) {\n var state = stream._readableState;\n debug('endReadable', state.endEmitted);\n\n if (!state.endEmitted) {\n state.ended = true;\n process.nextTick(endReadableNT, state, stream);\n }\n}\n\nfunction endReadableNT(state, stream) {\n debug('endReadableNT', state.endEmitted, state.length); // Check that we didn't get one last unshift.\n\n if (!state.endEmitted && state.length === 0) {\n state.endEmitted = true;\n stream.readable = false;\n stream.emit('end');\n\n if (state.autoDestroy) {\n // In case of duplex streams we need a way to detect\n // if the writable side is ready for autoDestroy as well\n var wState = stream._writableState;\n\n if (!wState || wState.autoDestroy && wState.finished) {\n stream.destroy();\n }\n }\n }\n}\n\nif (typeof Symbol === 'function') {\n Readable.from = function (iterable, opts) {\n if (from === undefined) {\n from = require('./internal/streams/from');\n }\n\n return from(Readable, iterable, opts);\n };\n}\n\nfunction indexOf(xs, x) {\n for (var i = 0, l = xs.length; i < l; i++) {\n if (xs[i] === x) return i;\n }\n\n return -1;\n}","// Copyright Joyent, Inc. and other Node contributors.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a\n// copy of this software and associated documentation files (the\n// \"Software\"), to deal in the Software without restriction, including\n// without limitation the rights to use, copy, modify, merge, publish,\n// distribute, sublicense, and/or sell copies of the Software, and to permit\n// persons to whom the Software is furnished to do so, subject to the\n// following conditions:\n//\n// The above copyright notice and this permission notice shall be included\n// in all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN\n// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR\n// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\n// USE OR OTHER DEALINGS IN THE SOFTWARE.\n// a transform stream is a readable/writable stream where you do\n// something with the data. Sometimes it's called a \"filter\",\n// but that's not a great name for it, since that implies a thing where\n// some bits pass through, and others are simply ignored. (That would\n// be a valid example of a transform, of course.)\n//\n// While the output is causally related to the input, it's not a\n// necessarily symmetric or synchronous transformation. For example,\n// a zlib stream might take multiple plain-text writes(), and then\n// emit a single compressed chunk some time in the future.\n//\n// Here's how this works:\n//\n// The Transform stream has all the aspects of the readable and writable\n// stream classes. When you write(chunk), that calls _write(chunk,cb)\n// internally, and returns false if there's a lot of pending writes\n// buffered up. When you call read(), that calls _read(n) until\n// there's enough pending readable data buffered up.\n//\n// In a transform stream, the written data is placed in a buffer. When\n// _read(n) is called, it transforms the queued up data, calling the\n// buffered _write cb's as it consumes chunks. If consuming a single\n// written chunk would result in multiple output chunks, then the first\n// outputted bit calls the readcb, and subsequent chunks just go into\n// the read buffer, and will cause it to emit 'readable' if necessary.\n//\n// This way, back-pressure is actually determined by the reading side,\n// since _read has to be called to start processing a new chunk. However,\n// a pathological inflate type of transform can cause excessive buffering\n// here. For example, imagine a stream where every byte of input is\n// interpreted as an integer from 0-255, and then results in that many\n// bytes of output. Writing the 4 bytes {ff,ff,ff,ff} would result in\n// 1kb of data being output. In this case, you could write a very small\n// amount of input, and end up with a very large amount of output. In\n// such a pathological inflating mechanism, there'd be no way to tell\n// the system to stop doing the transform. A single 4MB write could\n// cause the system to run out of memory.\n//\n// However, even in such a pathological case, only a single written chunk\n// would be consumed, and then the rest would wait (un-transformed) until\n// the results of the previous transformed chunk were consumed.\n'use strict';\n\nmodule.exports = Transform;\n\nvar _require$codes = require('../errors').codes,\n ERR_METHOD_NOT_IMPLEMENTED = _require$codes.ERR_METHOD_NOT_IMPLEMENTED,\n ERR_MULTIPLE_CALLBACK = _require$codes.ERR_MULTIPLE_CALLBACK,\n ERR_TRANSFORM_ALREADY_TRANSFORMING = _require$codes.ERR_TRANSFORM_ALREADY_TRANSFORMING,\n ERR_TRANSFORM_WITH_LENGTH_0 = _require$codes.ERR_TRANSFORM_WITH_LENGTH_0;\n\nvar Duplex = require('./_stream_duplex');\n\nrequire('inherits')(Transform, Duplex);\n\nfunction afterTransform(er, data) {\n var ts = this._transformState;\n ts.transforming = false;\n var cb = ts.writecb;\n\n if (cb === null) {\n return this.emit('error', new ERR_MULTIPLE_CALLBACK());\n }\n\n ts.writechunk = null;\n ts.writecb = null;\n if (data != null) // single equals check for both `null` and `undefined`\n this.push(data);\n cb(er);\n var rs = this._readableState;\n rs.reading = false;\n\n if (rs.needReadable || rs.length < rs.highWaterMark) {\n this._read(rs.highWaterMark);\n }\n}\n\nfunction Transform(options) {\n if (!(this instanceof Transform)) return new Transform(options);\n Duplex.call(this, options);\n this._transformState = {\n afterTransform: afterTransform.bind(this),\n needTransform: false,\n transforming: false,\n writecb: null,\n writechunk: null,\n writeencoding: null\n }; // start out asking for a readable event once data is transformed.\n\n this._readableState.needReadable = true; // we have implemented the _read method, and done the other things\n // that Readable wants before the first _read call, so unset the\n // sync guard flag.\n\n this._readableState.sync = false;\n\n if (options) {\n if (typeof options.transform === 'function') this._transform = options.transform;\n if (typeof options.flush === 'function') this._flush = options.flush;\n } // When the writable side finishes, then flush out anything remaining.\n\n\n this.on('prefinish', prefinish);\n}\n\nfunction prefinish() {\n var _this = this;\n\n if (typeof this._flush === 'function' && !this._readableState.destroyed) {\n this._flush(function (er, data) {\n done(_this, er, data);\n });\n } else {\n done(this, null, null);\n }\n}\n\nTransform.prototype.push = function (chunk, encoding) {\n this._transformState.needTransform = false;\n return Duplex.prototype.push.call(this, chunk, encoding);\n}; // This is the part where you do stuff!\n// override this function in implementation classes.\n// 'chunk' is an input chunk.\n//\n// Call `push(newChunk)` to pass along transformed output\n// to the readable side. You may call 'push' zero or more times.\n//\n// Call `cb(err)` when you are done with this chunk. If you pass\n// an error, then that'll put the hurt on the whole operation. If you\n// never call cb(), then you'll never get another chunk.\n\n\nTransform.prototype._transform = function (chunk, encoding, cb) {\n cb(new ERR_METHOD_NOT_IMPLEMENTED('_transform()'));\n};\n\nTransform.prototype._write = function (chunk, encoding, cb) {\n var ts = this._transformState;\n ts.writecb = cb;\n ts.writechunk = chunk;\n ts.writeencoding = encoding;\n\n if (!ts.transforming) {\n var rs = this._readableState;\n if (ts.needTransform || rs.needReadable || rs.length < rs.highWaterMark) this._read(rs.highWaterMark);\n }\n}; // Doesn't matter what the args are here.\n// _transform does all the work.\n// That we got here means that the readable side wants more data.\n\n\nTransform.prototype._read = function (n) {\n var ts = this._transformState;\n\n if (ts.writechunk !== null && !ts.transforming) {\n ts.transforming = true;\n\n this._transform(ts.writechunk, ts.writeencoding, ts.afterTransform);\n } else {\n // mark that we need a transform, so that any data that comes in\n // will get processed, now that we've asked for it.\n ts.needTransform = true;\n }\n};\n\nTransform.prototype._destroy = function (err, cb) {\n Duplex.prototype._destroy.call(this, err, function (err2) {\n cb(err2);\n });\n};\n\nfunction done(stream, er, data) {\n if (er) return stream.emit('error', er);\n if (data != null) // single equals check for both `null` and `undefined`\n stream.push(data); // TODO(BridgeAR): Write a test for these two error cases\n // if there's nothing in the write buffer, then that means\n // that nothing more will ever be provided\n\n if (stream._writableState.length) throw new ERR_TRANSFORM_WITH_LENGTH_0();\n if (stream._transformState.transforming) throw new ERR_TRANSFORM_ALREADY_TRANSFORMING();\n return stream.push(null);\n}","// Copyright Joyent, Inc. and other Node contributors.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a\n// copy of this software and associated documentation files (the\n// \"Software\"), to deal in the Software without restriction, including\n// without limitation the rights to use, copy, modify, merge, publish,\n// distribute, sublicense, and/or sell copies of the Software, and to permit\n// persons to whom the Software is furnished to do so, subject to the\n// following conditions:\n//\n// The above copyright notice and this permission notice shall be included\n// in all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN\n// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR\n// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\n// USE OR OTHER DEALINGS IN THE SOFTWARE.\n// a passthrough stream.\n// basically just the most minimal sort of Transform stream.\n// Every written chunk gets output as-is.\n'use strict';\n\nmodule.exports = PassThrough;\n\nvar Transform = require('./_stream_transform');\n\nrequire('inherits')(PassThrough, Transform);\n\nfunction PassThrough(options) {\n if (!(this instanceof PassThrough)) return new PassThrough(options);\n Transform.call(this, options);\n}\n\nPassThrough.prototype._transform = function (chunk, encoding, cb) {\n cb(null, chunk);\n};","// Ported from https://github.com/mafintosh/pump with\n// permission from the author, Mathias Buus (@mafintosh).\n'use strict';\n\nvar eos;\n\nfunction once(callback) {\n var called = false;\n return function () {\n if (called) return;\n called = true;\n callback.apply(void 0, arguments);\n };\n}\n\nvar _require$codes = require('../../../errors').codes,\n ERR_MISSING_ARGS = _require$codes.ERR_MISSING_ARGS,\n ERR_STREAM_DESTROYED = _require$codes.ERR_STREAM_DESTROYED;\n\nfunction noop(err) {\n // Rethrow the error if it exists to avoid swallowing it\n if (err) throw err;\n}\n\nfunction isRequest(stream) {\n return stream.setHeader && typeof stream.abort === 'function';\n}\n\nfunction destroyer(stream, reading, writing, callback) {\n callback = once(callback);\n var closed = false;\n stream.on('close', function () {\n closed = true;\n });\n if (eos === undefined) eos = require('./end-of-stream');\n eos(stream, {\n readable: reading,\n writable: writing\n }, function (err) {\n if (err) return callback(err);\n closed = true;\n callback();\n });\n var destroyed = false;\n return function (err) {\n if (closed) return;\n if (destroyed) return;\n destroyed = true; // request.destroy just do .end - .abort is what we want\n\n if (isRequest(stream)) return stream.abort();\n if (typeof stream.destroy === 'function') return stream.destroy();\n callback(err || new ERR_STREAM_DESTROYED('pipe'));\n };\n}\n\nfunction call(fn) {\n fn();\n}\n\nfunction pipe(from, to) {\n return from.pipe(to);\n}\n\nfunction popCallback(streams) {\n if (!streams.length) return noop;\n if (typeof streams[streams.length - 1] !== 'function') return noop;\n return streams.pop();\n}\n\nfunction pipeline() {\n for (var _len = arguments.length, streams = new Array(_len), _key = 0; _key < _len; _key++) {\n streams[_key] = arguments[_key];\n }\n\n var callback = popCallback(streams);\n if (Array.isArray(streams[0])) streams = streams[0];\n\n if (streams.length < 2) {\n throw new ERR_MISSING_ARGS('streams');\n }\n\n var error;\n var destroys = streams.map(function (stream, i) {\n var reading = i < streams.length - 1;\n var writing = i > 0;\n return destroyer(stream, reading, writing, function (err) {\n if (!error) error = err;\n if (err) destroys.forEach(call);\n if (reading) return;\n destroys.forEach(call);\n callback(error);\n });\n });\n return streams.reduce(pipe);\n}\n\nmodule.exports = pipeline;","exports = module.exports = require('./lib/_stream_readable.js');\nexports.Stream = exports;\nexports.Readable = exports;\nexports.Writable = require('./lib/_stream_writable.js');\nexports.Duplex = require('./lib/_stream_duplex.js');\nexports.Transform = require('./lib/_stream_transform.js');\nexports.PassThrough = require('./lib/_stream_passthrough.js');\nexports.finished = require('./lib/internal/streams/end-of-stream.js');\nexports.pipeline = require('./lib/internal/streams/pipeline.js');\n","var Transform = require('readable-stream').Transform\n , inherits = require('inherits')\n\nfunction DestroyableTransform(opts) {\n Transform.call(this, opts)\n this._destroyed = false\n}\n\ninherits(DestroyableTransform, Transform)\n\nDestroyableTransform.prototype.destroy = function(err) {\n if (this._destroyed) return\n this._destroyed = true\n \n var self = this\n process.nextTick(function() {\n if (err)\n self.emit('error', err)\n self.emit('close')\n })\n}\n\n// a noop _transform function\nfunction noop (chunk, enc, callback) {\n callback(null, chunk)\n}\n\n\n// create a new export function, used by both the main export and\n// the .ctor export, contains common logic for dealing with arguments\nfunction through2 (construct) {\n return function (options, transform, flush) {\n if (typeof options == 'function') {\n flush = transform\n transform = options\n options = {}\n }\n\n if (typeof transform != 'function')\n transform = noop\n\n if (typeof flush != 'function')\n flush = null\n\n return construct(options, transform, flush)\n }\n}\n\n\n// main export, just make me a transform stream!\nmodule.exports = through2(function (options, transform, flush) {\n var t2 = new DestroyableTransform(options)\n\n t2._transform = transform\n\n if (flush)\n t2._flush = flush\n\n return t2\n})\n\n\n// make me a reusable prototype that I can `new`, or implicitly `new`\n// with a constructor call\nmodule.exports.ctor = through2(function (options, transform, flush) {\n function Through2 (override) {\n if (!(this instanceof Through2))\n return new Through2(override)\n\n this.options = Object.assign({}, options, override)\n\n DestroyableTransform.call(this, this.options)\n }\n\n inherits(Through2, DestroyableTransform)\n\n Through2.prototype._transform = transform\n\n if (flush)\n Through2.prototype._flush = flush\n\n return Through2\n})\n\n\nmodule.exports.obj = through2(function (options, transform, flush) {\n var t2 = new DestroyableTransform(Object.assign({ objectMode: true, highWaterMark: 16 }, options))\n\n t2._transform = transform\n\n if (flush)\n t2._flush = flush\n\n return t2\n})\n","import WidgetFactory from \"./WidgetFactory\";\nimport Container from \"./Container\";\nimport ContainerWidget from \"./ContainerWidget\";\nimport Widget from \"./Widget\";\nimport { ParsedNode } from \"./helpers/nodeParser\";\nimport { evaluateAttributes, replaceEntities } from \"./helpers/attributeParser\";\nimport { evaluateStates, evaluateButtonStates } from \"./helpers/stateParser\";\nimport { parseContext } from \"./helpers/contextParser\";\nimport { parseOnChange } from \"./helpers/onChangeParser\";\nimport * as txml from \"txml\";\nimport Field from \"./Field\";\nimport Button from \"./Button\";\n\nexport type FormParseOptions = {\n readOnly?: boolean;\n values?: any;\n};\n\nclass Form {\n /**\n * Object containing fields specification of the form.\n */\n _fields: any;\n get fields() {\n return this._fields;\n }\n\n _container: Container;\n get container(): Container {\n return this._container;\n }\n\n _string: string | null = null;\n get string(): string | null {\n return this._string;\n }\n\n /**\n * Widget type\n */\n _type: string = \"form\";\n get type(): string {\n return this._type;\n }\n\n /**\n * Determines if form is read only (default is false)\n */\n _readOnly: boolean = false;\n get readOnly(): boolean {\n return this._readOnly;\n }\n set readOnly(value: boolean) {\n this._readOnly = value;\n }\n\n /**\n * Context\n */\n _context: any = {};\n get context(): any {\n return this._context;\n }\n set context(value: any) {\n this._context = value;\n }\n\n /**\n * Collection of onChange actions for fields\n */\n _onChangeFields: any = {};\n get onChangeFields(): any {\n return this._onChangeFields;\n }\n set onChangeFields(value: any) {\n this._onChangeFields = value;\n }\n\n /*\n _widgets = {\n *[Symbol.iterator]() {\n if (this._container && this._container.length) {\n this._container.forEach((item) => {\n\n // yield item\n });\n }\n }\n };\n get widgets() {\n return this._widgets;\n }\n */\n\n /**\n * Unique key for container\n */\n _keyIdx: number = 0;\n get keyIdx(): number {\n return this._keyIdx;\n }\n set keyIdx(value: number) {\n this._keyIdx = value;\n }\n\n /**\n * List of invisible fields\n */\n _invisibleFields: string[] = [];\n get invisibleFields(): string[] {\n return this._invisibleFields;\n }\n set invisibleFields(value: string[]) {\n this._invisibleFields = value;\n }\n\n constructor(fields: Object, columns: number = 4) {\n this._fields = fields;\n this._container = new Container(columns, 6, false, \"root\");\n }\n\n parse(xml: string, options?: FormParseOptions) {\n const { values = {}, readOnly = false } = options || {};\n const view = txml\n .parse(xml)\n .filter((el: ParsedNode) => el.tagName === \"form\")[0];\n this._string = view.attributes?.string || null;\n if (this._string) {\n this._string = replaceEntities(this._string);\n }\n this._readOnly = readOnly;\n this._context = values[\"id\"]\n ? { active_id: values[\"id\"], active_ids: [values[\"id\"]] }\n : {};\n this._invisibleFields = [];\n this.parseNode({\n fields: view.children,\n container: this._container,\n values,\n });\n }\n\n parseNode({\n fields,\n container,\n values,\n }: {\n fields: ParsedNode[];\n container: Container;\n values: any;\n }) {\n const widgetFactory = new WidgetFactory();\n fields\n .filter((f) => typeof f === \"object\")\n .forEach((field) => {\n const { tagName, attributes, children } = field;\n let widgetType = tagName;\n let tagAttributes = attributes;\n if (tagName === \"field\") {\n const { name, widget } = attributes;\n if (widget) {\n widgetType = widget;\n } else if (name) {\n if (!this._fields[name]) {\n throw new Error(\n `Field ${name} doesn't exist in fields defintion`\n );\n }\n widgetType = this._fields[name].type;\n }\n tagAttributes = {\n ...this._fields[name],\n ...attributes,\n fieldsWidgetType: this._fields[name].type,\n };\n }\n const evaluatedTagAttributes = evaluateAttributes({\n tagAttributes,\n values,\n fields: this._fields,\n widgetType: tagName,\n });\n let evaluatedStateAttributes;\n\n if (tagName === \"button\" && tagAttributes.states) {\n evaluatedStateAttributes = evaluateButtonStates({\n states: tagAttributes.states,\n values,\n });\n } else {\n evaluatedStateAttributes = evaluateStates({\n fieldName: tagAttributes.name,\n values,\n fields: this._fields,\n });\n }\n\n const widgetContext = parseContext({\n context:\n tagAttributes[\"context\"] ||\n this._fields[tagAttributes.name]?.[\"context\"],\n values,\n fields: this._fields,\n });\n\n if (tagAttributes[\"on_change\"]) {\n this._onChangeFields[tagAttributes.name] = parseOnChange(\n tagAttributes[\"on_change\"]\n );\n }\n\n let domain: string | undefined = undefined;\n\n if (checkIfDomainHasValue(tagAttributes[\"domain\"])) {\n domain = tagAttributes[\"domain\"];\n }\n\n if (checkIfDomainHasValue(this._fields[tagAttributes.name]?.domain)) {\n domain = this._fields[tagAttributes.name].domain;\n }\n\n this._keyIdx = this._keyIdx + 1;\n\n const widgetProps = {\n ...evaluatedTagAttributes,\n ...evaluatedStateAttributes,\n context: widgetContext,\n domain,\n key: `${this._keyIdx}`,\n };\n\n const widget = widgetFactory.createWidget(widgetType, widgetProps);\n\n if (widget.invisible && widget instanceof Field) {\n this._invisibleFields.push(widgetProps.name);\n }\n\n if (widget instanceof ContainerWidget) {\n this.parseNode({\n fields: children,\n container: widget.container,\n values,\n });\n }\n\n // If the widget is a button and has a readonly attribute specified\n // reflect it to the widget independently of the form readonly attribute\n if (widget instanceof Button && widget.readOnly !== undefined) {\n // widget.readOnly = widget.readOnly;\n } else {\n // If the form is set to readonly, reflect it to its children\n widget.readOnly = widget.readOnly || this.readOnly;\n }\n\n container.addWidget(widget);\n });\n }\n\n /**\n * Calls container's findById method to find the widgets matching with param id\n * @param {string} id id to find\n */\n findById(id: string): Widget | null {\n return this.container.findById(id);\n }\n}\n\nfunction checkIfDomainHasValue(domain: any) {\n if (!domain) {\n return false;\n }\n if (Array.isArray(domain) && domain.length > 0) {\n return true;\n } else if (typeof domain === \"string\" && domain !== \"\" && domain !== \"[]\") {\n return true;\n }\n return false;\n}\nexport default Form;\n","import WidgetFactory from \"./WidgetFactory\";\nimport Widget from \"./Widget\";\nimport { replaceEntities } from \"./helpers/attributeParser\";\nimport { ParsedNode, parseBoolAttribute } from \"./helpers/nodeParser\";\nimport * as txml from 'txml';\n\ntype EditableTreeOptions = \"top\" | \" bottom\" | null;\n\nclass Tree {\n /**\n * Object containing fields specification of the form.\n */\n _fields: any;\n get fields() {\n return this._fields;\n }\n\n _columns: Array<any> = [];\n get columns(): Array<any> {\n return this._columns;\n }\n\n _string: string | null = null;\n get string(): string | null {\n return this._string;\n }\n\n /**\n * Widget type\n */\n _type: string = \"tree\";\n get type(): string {\n return this._type;\n }\n\n /**\n * Color expression value\n */\n _colors: string | null = null;\n get colors(): string | null {\n return this._colors;\n }\n\n _status: string | null = null;\n get status(): string | null {\n return this._status;\n }\n\n /**\n * Editable value\n */\n _editable: EditableTreeOptions = null;\n get editable(): EditableTreeOptions {\n return this._editable;\n }\n\n constructor(fields: Object) {\n this._fields = fields;\n }\n\n parse(xml: string) {\n const view = txml.parse(xml).filter((el: ParsedNode) => el.tagName === \"tree\")[0];\n this._string = view.attributes.string || null;\n if (this._string) {\n this._string = replaceEntities(this._string);\n }\n this._colors = view.attributes.colors || null;\n if (this._colors) {\n this._colors = replaceEntities(this._colors);\n }\n this._status = view.attributes.status || null;\n if (this._status) {\n this._status = replaceEntities(this._status);\n }\n this._editable = view.attributes.editable || null;\n const widgetFactory = new WidgetFactory();\n view.children.forEach((field: ParsedNode) => {\n const { tagName, attributes } = field;\n let widgetType = null;\n if (tagName === \"field\") {\n const { name, widget} = attributes;\n let mergedAttrs = attributes\n if (name) {\n if (!this._fields[name]) {\n throw new Error(`Field ${name} doesn't exist in fields defintion`);\n }\n const fieldDef = this._fields[name];\n widgetType = fieldDef.type;\n if (\n ((Array.isArray(fieldDef?.domain) &&\n fieldDef?.domain.length === 0) ||\n fieldDef?.domain === false) &&\n attributes[\"domain\"] &&\n attributes[\"domain\"].length > 0\n ) {\n delete fieldDef.domain;\n }\n mergedAttrs = {\n ...fieldDef,\n ...attributes,\n fieldsWidgetType: fieldDef?.type,\n };\n }\n if (widget) {\n widgetType = widget;\n }\n if (!mergedAttrs.invisible) {\n const widget = widgetFactory.createWidget(widgetType, mergedAttrs);\n this._columns.push(widget);\n }\n }\n })\n }\n\n /**\n * Find the widgets matching with param id\n * @param {string} id id to find\n */\n findById(id: string): Widget | null {\n return this._columns.find((item) => {\n if (item.findById) {\n return item.findById(id);\n }\n });\n }\n}\n\nexport default Tree;\n","import WidgetFactory from \"./WidgetFactory\";\nimport Container from \"./Container\";\nimport Widget from \"./Widget\";\nimport Form from \"./Form\";\n\nexport const SearchFieldTypes: any = {\n text: \"text\",\n many2one: \"many2one\",\n char: \"char\",\n boolean: \"boolean\",\n selection: \"selection\",\n float: \"float\",\n float_time: \"float_time\",\n progressbar: \"progressbar\",\n integer: \"integer\",\n date: \"date\",\n datetime: \"datetime\",\n};\n\nclass SearchFilter {\n /**\n * Object containing the specific fields for primary and secondary search fields\n */\n _searchFields: any;\n get searchFields() {\n return this._searchFields;\n }\n\n /**\n * Object containing all the fields specification of the whole form\n */\n _fields: any;\n get fields() {\n return this._fields;\n }\n\n _simpleSearchContainer: Container;\n get simpleSearchContainer(): Container {\n return this._simpleSearchContainer;\n }\n\n _advancedSearchContainer: Container;\n get advancedSearchContainer(): Container {\n return this._advancedSearchContainer;\n }\n\n constructor(searchFields: Object, fields: Object, columns: number = 8) {\n this._searchFields = searchFields;\n this._fields = fields;\n this._simpleSearchContainer = new Container(columns);\n this._advancedSearchContainer = new Container(columns);\n }\n\n parse() {\n const widgetFactory = new WidgetFactory();\n\n const simpleSearchWidgets = this.parseFields(\n this.searchFields.primary,\n widgetFactory\n );\n simpleSearchWidgets.forEach((widget) => {\n this.simpleSearchContainer.addWidget(widget, { addLabel: false });\n this.advancedSearchContainer.addWidget(widget, { addLabel: false });\n });\n\n const advancedSearchWidgets = this.parseFields(\n this.searchFields.secondary,\n widgetFactory\n );\n advancedSearchWidgets.forEach((widget) => {\n this.advancedSearchContainer.addWidget(widget, { addLabel: false });\n });\n }\n\n parseFields(searchFields: string[], widgetFactory: WidgetFactory) {\n return searchFields.map((searchField) => {\n const fieldAttributes = {\n ...this.fields[searchField],\n name: searchField,\n colspan: 2,\n };\n const { type, widget } = fieldAttributes;\n let widgetType = widget ?? type;\n if (SearchFieldTypes[widgetType] === undefined) {\n widgetType = type;\n }\n return widgetFactory.createWidget(widgetType!, fieldAttributes);\n });\n }\n\n /**\n * Calls container's findById method to find the widgets matching with param id\n * @param {string} id id to find\n */\n findById(id: string): Widget | null {\n return this.advancedSearchContainer.findById(id);\n }\n}\n\nexport default SearchFilter;\n","const transformDomainForChildWidget = ({\n domain,\n widgetFieldName,\n}: {\n domain: any;\n widgetFieldName: string;\n}) => {\n const transformedDomain: any[] = [];\n\n domain.forEach((domainEntry: any) => {\n if (!Array.isArray(domainEntry)) {\n return;\n }\n \n const [fieldName, operator, value] = domainEntry;\n\n let rootFieldName;\n let targetFieldName;\n\n if (fieldName.indexOf(\".\") !== -1) {\n rootFieldName = fieldName.substr(0, fieldName.indexOf(\".\"));\n targetFieldName = fieldName.substr(\n fieldName.indexOf(\".\") + 1,\n fieldName.length - 1\n );\n } else {\n rootFieldName = fieldName;\n targetFieldName = \"id\";\n }\n\n if (rootFieldName === widgetFieldName) {\n transformedDomain.push([targetFieldName, operator, value]);\n }\n });\n\n return transformedDomain;\n};\n\nexport const parseDomainFields = (domain: string | boolean): string[] => {\n if (typeof domain != 'string') {\n return [];\n }\n return domain.replace(/[()\\[\\]]/g, \"\")\n .split(',')\n .map(i => i.trim())\n .filter(i => i.indexOf(\"'\") === -1)\n}\n\nexport { transformDomainForChildWidget };\n","class DashboardItem {\n _action_id: string | null = null;\n get action_id(): string | null {\n return this._action_id;\n }\n\n _position: string | null = null;\n get position(): string | null {\n return this._position;\n }\n\n constructor(attributes: any) {\n if (attributes.action_id) {\n this._action_id = attributes.action_id;\n }\n\n if (attributes.position) {\n this._position = attributes.position;\n }\n }\n}\n\nexport default DashboardItem;\n","import DashboardItem from \"./DashboardItem\";\nimport * as txml from 'txml';\nimport { ParsedNode } from \"./helpers/nodeParser\";\n\nclass Dashboard {\n _string: string | null = null;\n get string(): string | null {\n return this._string;\n }\n\n _items: DashboardItem[] = [];\n get items(): DashboardItem[] {\n return this._items;\n }\n\n constructor(xml: string) {\n const view = txml.parse(xml).filter((el: ParsedNode) => el.tagName === \"dashboard\")[0];\n this._string = view.attributes.string || null;\n\n const { children } = view;\n\n children.forEach((item: ParsedNode) => {\n if (item.tagName === \"dashboard_item\") {\n this._items.push(new DashboardItem(item.attributes));\n }\n });\n }\n}\n\nexport default Dashboard;\n","import { ParsedNode } from \"../helpers/nodeParser\";\n\nexport type GraphType = \"indicator\" | \"indicatorField\" | \"line\" | \"bar\" | \"pie\";\n\nexport class Graph {\n _string: string | null = null;\n get string(): string | null {\n return this._string;\n }\n\n _type?: GraphType;\n get type(): GraphType | undefined {\n return this._type;\n }\n\n _timerange: string | null = null;\n get timerange(): string | null {\n return this._timerange;\n }\n\n constructor(element: ParsedNode) {\n this._string = element.attributes.string || null;\n this._timerange = element.attributes.timerange || null;\n }\n}\n","type ParsedNode = {\n tagName: string;\n attributes: any;\n children: ParsedNode[];\n};\n\nconst parseBoolAttribute = (attr: any): boolean => {\n if (\n attr === 1 ||\n attr === \"1\" ||\n attr === true ||\n attr === \"True\"\n ) {\n return true\n } else {\n return false\n }\n}\n\n\nexport { ParsedNode, parseBoolAttribute };\n","import { Graph, GraphType } from \"./Graph\";\nimport { parseBoolAttribute, ParsedNode } from \"../helpers/nodeParser\";\nimport { replaceEntities } from \"../helpers/attributeParser\";\n\nexport class GraphIndicator extends Graph {\n _color: string | null = null;\n get color(): string | null {\n return this._color;\n }\n\n _icon: string | null = null;\n get icon(): string | null {\n return this._icon;\n }\n\n _totalDomain: string | null = null;\n get totalDomain(): string | null {\n return this._totalDomain;\n }\n\n _showPercent: boolean = false;\n get showPercent(): boolean {\n return this._showPercent;\n }\n\n _suffix: string | null = null;\n get suffix(): string | null {\n return this._suffix;\n }\n\n constructor(type: GraphType, element: ParsedNode) {\n super(element);\n\n this._type = type;\n this._color = element.attributes.color || null;\n if (this._color) {\n this._color = replaceEntities(this._color);\n }\n this._icon = element.attributes.icon || null;\n if (this._icon) {\n this._icon = replaceEntities(this._icon);\n }\n this._suffix = element.attributes.suffix || null;\n this._totalDomain = replaceEntities(element.attributes.totalDomain) || null;\n this._showPercent = parseBoolAttribute(element.attributes.showPercent);\n }\n}\n","import { Operator } from \".\";\nimport { GraphType } from \"./Graph\";\nimport { GraphIndicator } from \"./GraphIndicator\";\nimport { ParsedNode } from \"../helpers/nodeParser\";\n\nexport class GraphIndicatorField extends GraphIndicator {\n _field: string | undefined;\n get field(): string | undefined {\n return this._field;\n }\n\n _operator: Operator | undefined;\n get operator(): Operator | undefined {\n return this._operator;\n }\n\n constructor(type: GraphType, element: ParsedNode) {\n super(type, element);\n\n const { children } = element;\n children.forEach((item) => {\n if (item.tagName === \"field\") {\n const name = item.attributes.name;\n const operator = item.attributes.operator;\n this._field = name || undefined;\n this._operator = operator as Operator;\n }\n });\n }\n}\n","import { GraphXAxis, GraphYAxis, Operator } from \".\";\nimport { ParsedNode } from \"../helpers/nodeParser\";\n\nexport type XYAxis = {\n x: GraphXAxis;\n y: GraphYAxis[];\n};\n\nexport const parseXYAxis = (nodes: ParsedNode[]): XYAxis => {\n const yAxisElements: GraphYAxis[] = [];\n let xAxis;\n\n nodes.forEach((child) => {\n if (child.tagName === \"field\") {\n const axis = child.attributes.axis;\n const operator = child.attributes.operator;\n const name = child.attributes.name;\n const label = child.attributes.label || undefined;\n const stacked = child.attributes.stacked || undefined;\n\n if (!axis) {\n throw new Error(`Field ${name} doesn't have an axis`);\n }\n\n if (!name) {\n throw new Error(\"Missing name attribute for field\");\n }\n\n if (axis === \"x\") {\n xAxis = new GraphXAxis({\n name,\n });\n } else if (axis === \"y\") {\n yAxisElements.push(\n new GraphYAxis({\n name,\n operator: operator as Operator,\n label,\n stacked,\n })\n );\n }\n }\n });\n\n if (!xAxis) {\n throw new Error(\"No x axis found\");\n }\n\n if (!yAxisElements.length) {\n throw new Error(\"No y axis found. At least we need one y axis\");\n }\n\n return {\n x: xAxis,\n y: yAxisElements,\n };\n};\n","import { GraphXAxis, GraphYAxis } from \".\";\nimport { Graph, GraphType } from \"./Graph\";\nimport { parseXYAxis } from \"./graphHelper\";\nimport { ParsedNode } from \"../helpers/nodeParser\";\n\nexport class GraphChart extends Graph {\n _x: GraphXAxis;\n get x(): GraphXAxis {\n return this._x;\n }\n\n _y: GraphYAxis[];\n get y(): GraphYAxis[] {\n return this._y;\n }\n constructor(type: GraphType, element: ParsedNode) {\n super(element);\n\n this._type = type;\n const xyAxis = parseXYAxis(element.children);\n this._x = xyAxis.x;\n this._y = xyAxis.y;\n }\n}\n","import { GraphIndicator } from \"./GraphIndicator\";\nimport { GraphIndicatorField } from \"./GraphIndicatorField\";\nimport { GraphChart } from \"./GraphChart\";\nimport { ParsedNode } from \"../helpers/nodeParser\";\nimport * as txml from 'txml';\n\nconst GraphTypes: { [key: string]: any } = {\n indicator: GraphIndicator,\n indicatorField: GraphIndicatorField,\n line: GraphChart,\n bar: GraphChart,\n pie: GraphChart,\n};\n\nexport const parseGraph = (xml: string): GraphIndicator | GraphChart => {\n const view = txml.parse(xml).filter((el: ParsedNode) => el.tagName === \"graph\")[0];\n const type = view.attributes.type;\n\n if (!type) {\n throw new Error(`${type} is not a valid graph`);\n }\n\n const graphModel = GraphTypes[type];\n\n if (!graphModel) {\n throw new Error(`${type} not found as a GraphModel`);\n }\n\n return new graphModel(type, view);\n};\n","export type Axis = \"x\" | \"y\";\n\nexport class GraphAxis {\n _name: string;\n get name(): string {\n return this._name;\n }\n\n _axis: Axis;\n get axis(): Axis {\n return this._axis;\n }\n\n constructor({ name, axis }: { name: string; axis: Axis }) {\n this._name = name;\n this._axis = axis;\n }\n}\n","import { GraphAxis } from \".\";\n\nexport type Operator = \"count\" | \"+\" | \"-\" | \"*\" | \"min\" | \"max\" | \"avg\";\n\nexport class GraphYAxis extends GraphAxis {\n _operator: Operator;\n get operator(): Operator {\n return this._operator;\n }\n\n _label: string | undefined;\n get label(): string | undefined {\n return this._label;\n }\n\n _stacked: string | undefined;\n get stacked(): string | undefined {\n return this._stacked;\n }\n\n constructor({\n name,\n operator,\n label,\n stacked,\n }: {\n name: string;\n operator: Operator;\n label?: string;\n stacked?: string;\n }) {\n super({ name, axis: \"y\" });\n this._operator = operator!;\n this._label = label;\n this._stacked = stacked;\n }\n}\n","import { GraphAxis } from \".\";\n\nexport class GraphXAxis extends GraphAxis {\n constructor({ name }: { name: string }) {\n super({ name, axis: \"x\" });\n }\n}\n","import { GraphChart } from \"../GraphChart\";\n\nexport const getFieldsToRetrieve = ({ ooui }: { ooui: GraphChart }) => {\n const xField: string = ooui.x.name;\n const fields = [xField];\n\n if (!ooui.y) {\n return [];\n }\n\n ooui.y.forEach((y) => {\n if (y.operator !== \"count\" && !fields.includes(y.name)) {\n fields.push(y.name);\n }\n\n if (y.label && !fields.includes(y.label)) {\n fields.push(y.label);\n }\n });\n\n return fields;\n};\n\nexport function getValueAndLabelForField({\n fields,\n values,\n fieldName,\n}: {\n fields: { [key: string]: any };\n values: { [key: string]: any };\n fieldName: string;\n}) {\n const xFieldData = fields[fieldName];\n const value = values[fieldName];\n\n if (!xFieldData) {\n throw new Error(`Field ${fieldName} not found`);\n }\n\n if (xFieldData.type === \"many2one\") {\n if (!value) {\n return { value: false, label: undefined };\n }\n return { value: value[0], label: value[1] };\n } else if (xFieldData.type === \"selection\") {\n const selectionValues: [number, string][] = xFieldData.selection;\n\n const valuePair = selectionValues.find((selectionPair) => {\n return selectionPair[0] === value;\n });\n\n if (!valuePair) {\n return { value: false, label: undefined };\n }\n\n return { value, label: valuePair[1] };\n }\n\n return { value, label: value };\n}\n","import moment from \"moment\";\nimport { getValueForOperator } from \"./graphProcessor\";\n\nexport function processTimerangeData({\n values,\n timerange,\n}: {\n values: any[];\n timerange: string;\n}) {\n const combinedValues = combineValuesForTimerange({\n values,\n timerange,\n });\n\n // Fill the gaps\n const filledValues = fillGapsInTimerangeData({\n values: combinedValues,\n timerange,\n });\n\n return filledValues;\n}\n\nexport function fillGapsInTimerangeData({\n values,\n timerange,\n}: {\n values: any[];\n timerange: string;\n}) {\n let finalValues: any[] = [];\n const uniqueValues: { [key: string]: any } = getUniqueValuesGroupedBy({\n values,\n groupBy: \"type-stacked\",\n });\n const units = `${timerange}s` as any;\n\n Object.keys(uniqueValues).forEach((key) => {\n const valuesForKey = uniqueValues[key];\n\n for (let i = 0; i < valuesForKey.length; i++) {\n const value = valuesForKey[i];\n\n finalValues.push(value);\n\n // If it's the last item\n if (i === valuesForKey.length - 1) {\n return;\n }\n\n const date = value.x;\n const nextDate = valuesForKey[i + 1].x;\n\n if (!checkDatesConsecutive([date, nextDate], units)) {\n const missingDates = getMissingConsecutiveDates({\n dates: [date, nextDate],\n timerange,\n });\n finalValues = finalValues.concat(\n missingDates.map((stringDate) => {\n return {\n x: stringDate,\n value: 0,\n type: value.type,\n stacked: value.stacked,\n };\n })\n );\n }\n }\n });\n\n const sortedData = finalValues.sort((a, b) => {\n if (a[\"x\"] < b[\"x\"]) {\n return -1;\n }\n if (a[\"x\"] > b[\"x\"]) {\n return 1;\n }\n return 0;\n });\n return sortedData;\n}\n\nexport function getMissingConsecutiveDates({\n dates,\n timerange,\n}: {\n dates: string[];\n timerange: string;\n}) {\n const missingDates: string[] = [];\n const units = `${timerange}s` as any;\n if (dates.length === 1) {\n return dates;\n }\n\n const sortedDates = dates.sort((a, b) => {\n if (a < b) {\n return -1;\n }\n if (a > b) {\n return 1;\n }\n return 0;\n });\n\n for (let i = 0; i < sortedDates.length - 1; i++) {\n const date1 = sortedDates[i];\n const date2 = sortedDates[i + 1];\n\n if (!checkDatesConsecutive([date1, date2], units)) {\n let iDate = moment(date1, getFormatForUnits(units)).add(1, units);\n let fDate = moment(date2, getFormatForUnits(units));\n\n while (iDate.isBefore(fDate)) {\n missingDates.push(iDate.format(getFormatForUnits(units)));\n iDate.add(1, units);\n }\n }\n }\n\n return missingDates;\n}\n\nexport function combineValuesForTimerange({\n values,\n timerange,\n}: {\n values: any[];\n timerange: string;\n}) {\n const adjustedValues = adjustXValuesForTimeRage({\n values,\n timerange,\n });\n let finalValues: any[] = [];\n // group by x, type and stacked\n const uniqueValues: { [key: string]: any } = getUniqueValuesGroupedBy({\n values: adjustedValues,\n groupBy: \"all\",\n });\n\n Object.keys(uniqueValues).forEach((key) => {\n const valuesForKey = uniqueValues[key];\n const operator =\n valuesForKey[0].operator === \"count\" ? \"+\" : valuesForKey[0].operator;\n\n const finalValue = getValueForOperator({\n values: valuesForKey.map((entry: any) => entry.value),\n operator,\n });\n\n finalValues.push({\n ...valuesForKey[0],\n value: finalValue,\n });\n });\n\n return finalValues;\n}\n\nexport function adjustXValuesForTimeRage({\n values,\n timerange,\n}: {\n values: any[];\n timerange: string;\n}) {\n return values.map((value) => {\n return {\n ...value,\n x: convertDateToTimeRangeAdjusted({\n date: value.x,\n timerange: timerange,\n }),\n };\n });\n}\n\nexport function convertDateToTimeRangeAdjusted({\n date,\n timerange,\n}: {\n date: string;\n timerange: string;\n}) {\n let format = getDateFormat(date);\n const momentDate = moment(date, format);\n switch (timerange) {\n case \"hour\": {\n format = \"YYYY-MM-DD HH:00\";\n break;\n }\n case \"day\": {\n format = \"YYYY-MM-DD\";\n break;\n }\n case \"week\": {\n format = \"YYYY-WW\";\n break;\n }\n case \"month\": {\n format = \"YYYY-MM\";\n break;\n }\n case \"year\": {\n format = \"YYYY\";\n break;\n }\n }\n return momentDate.format(format);\n}\n\nexport function getDateFormat(date: string) {\n return date.indexOf(\":\") ? \"YYYY-MM-DD HH:mm:ss\" : \"YYYY-MM-DD\";\n}\n\nexport function checkDatesConsecutive(\n dates: string[],\n unit: \"hours\" | \"days\" | \"weeks\" | \"months\" | \"years\"\n) {\n let consecutive = false;\n const format = getFormatForUnits(unit);\n\n if (dates.length === 0) {\n return false;\n }\n\n if (dates.length === 1) {\n return true;\n }\n\n for (let i = 0; i < dates.length - 1; i++) {\n const date1 = moment(dates[i], format);\n const date2 = moment(dates[i + 1], format);\n const diff = date2.diff(date1, unit);\n\n if (Math.abs(diff) === 1) {\n consecutive = true;\n } else {\n consecutive = false;\n }\n }\n return consecutive;\n}\n\nexport function getUniqueValuesGroupedBy({\n values,\n groupBy,\n}: {\n values: any[];\n groupBy: \"all\" | \"type-stacked\";\n}) {\n const uniqueValues: { [key: string]: any } = {};\n values.forEach((value) => {\n const x = value.x;\n const type = value.type;\n const stacked = value.stacked;\n const uniqueKey =\n groupBy === \"all\" ? `${x}-${type}-${stacked}` : `${type}-${stacked}`;\n if (!uniqueValues[uniqueKey]) {\n uniqueValues[uniqueKey] = [];\n }\n uniqueValues[uniqueKey].push(value);\n });\n return uniqueValues;\n}\n\nexport function getFormatForUnits(units: string) {\n switch (units) {\n default:\n case \"hours\": {\n return \"YYYY-MM-DD HH:mm\";\n }\n case \"days\": {\n return \"YYYY-MM-DD\";\n }\n case \"weeks\": {\n return \"YYYY-WW\";\n }\n case \"months\": {\n return \"YYYY-MM\";\n }\n case \"years\": {\n return \"YYYY\";\n }\n }\n}\n","import { GraphChart, GraphYAxis, Operator } from \"..\";\nimport { getValueAndLabelForField } from \"./fieldUtils\";\nimport { processTimerangeData } from \"./timerangeHelper\";\n\nexport type GroupedValues = {\n [key: string]: { label: string; entries: { [key: string]: any }[] };\n};\n\nexport const labelsForOperator = {\n count: \"count\",\n \"+\": \"sum\",\n \"-\": \"subtract\",\n \"*\": \"multiply\",\n avg: \"average\",\n min: \"min\",\n max: \"max\",\n};\n\nexport type ProcessGraphDataOpts = {\n uninformedString: string;\n};\n\nexport const processGraphData = ({\n ooui,\n values,\n fields,\n options,\n}: {\n ooui: GraphChart;\n values: { [key: string]: any }[];\n fields: { [key: string]: any };\n options?: ProcessGraphDataOpts;\n}) => {\n // First we group all the results by the x field. This way we will have one or more items in an array for every occurrence of ooui.x.name\n // Result of this will be an object which keys will be unique keys for values of ooui.x.name for each item\n const valuesGroupedByX = getValuesGroupedByField({\n fieldName: ooui.x.name,\n values,\n fields,\n });\n\n const data: { [key: string]: any }[] = [];\n\n // We iterate through the y axis items found in the ooui object\n ooui.y.forEach((yField) => {\n // We iterate now for every single key of the grouped results by x\n Object.keys(valuesGroupedByX).forEach((xValue) => {\n const xLabel = valuesGroupedByX[xValue].label;\n const objectsForXValue = valuesGroupedByX[xValue].entries;\n\n // If the y field hasn't got label defined\n if (!yField.label) {\n // We calculate the final value using the entries of this unique x key\n const valuesForYField = getValuesForYField({\n entries: objectsForXValue,\n fields,\n fieldName: yField.name,\n });\n\n const finalValue = getValueForOperator({\n values: valuesForYField,\n operator: yField.operator,\n });\n\n data.push({\n x: xLabel || false,\n value: finalValue,\n type: getYAxisFieldname({\n yAxis: yField,\n fields,\n }),\n operator: yField.operator,\n stacked: yField.stacked,\n });\n }\n // The field has label\n else {\n // We retrieve an object with unique keys and grouped values for the label\n const valuesGroupedByYLabel = getValuesGroupedByField({\n fieldName: yField.label,\n values: objectsForXValue,\n fields,\n });\n\n // For every key of the grouped results by label\n Object.keys(valuesGroupedByYLabel).forEach((yUniqueValue) => {\n const entries = valuesGroupedByYLabel[yUniqueValue].entries;\n const label = valuesGroupedByYLabel[yUniqueValue].label;\n\n // We calculate the final value using the entries of this unique x key\n const valuesForYField = getValuesForYField({\n entries,\n fields,\n fieldName: yField.name,\n });\n\n const finalValue = getValueForOperator({\n values: valuesForYField,\n operator: yField.operator,\n });\n data.push({\n x: xLabel || false,\n value: finalValue,\n type: label,\n operator: yField.operator,\n stacked: yField.stacked,\n });\n });\n }\n });\n });\n\n // Check if we have to flag isGroup\n const isGroup = ooui.y.some((y) => y.label !== undefined);\n\n // Check if we have to flag isStacked\n const isStack = ooui.y.some((entry) => entry.stacked !== undefined);\n\n // We sort the data by x\n const sortedData = data.sort((a, b) => {\n if (a[\"x\"] < b[\"x\"]) {\n return -1;\n }\n if (a[\"x\"] > b[\"x\"]) {\n return 1;\n }\n return 0;\n });\n\n let adjustedStackedData = [...sortedData];\n // If it's an stacked graph and we have more than one group stacked, we have to change the type description in order to add\n // the stacked group\n if (\n isStack &&\n ooui.y.filter((entry) => entry.stacked !== undefined).length > 1\n ) {\n adjustedStackedData = adjustedStackedData.map((entry) => {\n return { ...entry, type: `${entry.type} - ${entry.stacked}` };\n });\n }\n\n let adjustedUninformedData = [...adjustedStackedData];\n // If the type of the graph is pie, we have to check for \"false\" (uninformed) computes values\n // in order to adjust the description to a localized string for \"Unassigned / not introduced\"\n // Else, we have to ignore those entries\n if (\n ooui.type === \"pie\" &&\n adjustedUninformedData.some((entry) => entry.x === false)\n ) {\n adjustedUninformedData = adjustedUninformedData.map((entry) => {\n if (entry.x === false) {\n return { ...entry, x: options?.uninformedString || \"Not informed\" };\n }\n return entry;\n });\n } else if (adjustedStackedData.some((entry) => entry.x === false)) {\n adjustedUninformedData = adjustedUninformedData.filter(\n (entry) => entry.x !== false\n );\n }\n\n // If we have a timerange parameter defined in ooui, we must fill the gaps with the desired units and group results too\n let finalData = adjustedUninformedData;\n\n if (ooui.timerange) {\n finalData = processTimerangeData({\n values: finalData,\n timerange: ooui.timerange!,\n });\n } else if (ooui.type == \"pie\") {\n finalData = adjustedUninformedData.sort((a, b) => b.value - a.value);\n }\n\n return {\n data: finalData,\n isGroup: isStack || isGroup,\n isStack,\n };\n};\n\nexport function getValuesForYField({\n entries,\n fieldName,\n fields,\n}: {\n entries: { [key: string]: any }[];\n fieldName: string;\n fields: { [key: string]: any };\n}) {\n return entries\n .map((obj) => {\n return getValueAndLabelForField({\n fieldName: fieldName,\n values: obj,\n fields: fields,\n });\n })\n .map(({ value, label }) => {\n return label;\n });\n}\n\nexport function getValueForOperator({\n operator,\n values,\n}: {\n operator: Operator;\n values: any[];\n}) {\n switch (operator) {\n case \"count\": {\n return values.length;\n }\n case \"+\": {\n return roundNumber(\n values.reduce(function (previousValue: any, currentValue: any) {\n return previousValue + currentValue;\n })\n );\n }\n case \"-\": {\n return roundNumber(\n values.reduce(function (previousValue: any, currentValue: any) {\n return previousValue - currentValue;\n })\n );\n }\n case \"*\": {\n return roundNumber(\n values.reduce(function (previousValue: any, currentValue: any) {\n return previousValue * currentValue;\n })\n );\n }\n case \"avg\": {\n const sum = values.reduce((a: any, b: any) => a + b, 0);\n const avg = sum / values.length || 0;\n return roundNumber(avg);\n }\n case \"min\": {\n return Math.min(...values);\n }\n case \"max\": {\n return Math.max(...values);\n }\n }\n}\n\nfunction roundNumber(num: number) {\n return Math.round((num + Number.EPSILON) * 100) / 100;\n}\n\nexport function getValuesGroupedByField({\n fieldName,\n fields,\n values,\n}: {\n fieldName: string;\n values: { [key: string]: any }[];\n fields: { [key: string]: any };\n}) {\n const groupedValues: GroupedValues = {};\n\n values.forEach((entry) => {\n const { value, label } = getValueAndLabelForField({\n fields,\n values: entry,\n fieldName,\n });\n\n if (!groupedValues[value]) {\n groupedValues[value] = { label, entries: [] };\n }\n\n groupedValues[value].entries.push(entry);\n });\n\n return groupedValues;\n}\n\nexport function getAllObjectsInGroupedValues(grouped: GroupedValues) {\n let totalObjects: any[] = [];\n Object.keys(grouped).forEach((key) => {\n const group = grouped[key];\n totalObjects = totalObjects.concat(group.entries);\n });\n return totalObjects;\n}\n\nexport function getYAxisFieldname({\n yAxis,\n fields,\n}: {\n yAxis: GraphYAxis;\n fields: { [key: string]: any };\n}) {\n const fieldProps = fields[yAxis.name];\n\n if (fieldProps && fieldProps.string) {\n // return `${fieldProps.string} (${labelsForOperator[yAxis.operator]})`;\n return fieldProps.string;\n }\n\n // return yAxis.name + \"_\" + labelsForOperator[yAxis.operator];\n return yAxis.name;\n}\n"],"names":["_Widget","props","value","Widget","isTrue","evaluateCondition","entry","values","fields","fieldName","operator","expectedValue","filteredExpectedValue","replaceEntities","string","decode","parseAttributes","attrs","widgetType","replaceFalse","replaceTags","parsedObject","newAttributes","attrField","attrIsTrue","i","evaluateAttributes","tagAttributes","newTagAttributes","Field","id","Avatar","NewLine","Label","Container","columns","colspan","readOnly","key","span","el","prev","current","widget","options","widgetsToAdd","addLabel","label","accumulator","currentWidget","row","item","_ContainerWidget","ContainerWidget","_Notebook","Notebook","Page","Group","Button","primary","danger","ButtonGroup","btn","button","_a","b","Char","Text","Selection","Many2one","Markdown","Boolean","Integer","Float","integers","decimals","FloatTime","ProgressBar","Date","DateTime","Many2many","One2many","Separator","Reference","Binary","Image","FiberGrid","Timeline","Indicator","MultiCheckbox","Tags","Tag","Radio","Switch","Steps","CodeEditor","Time","WidgetFactory","type","finalType","evaluateStates","fieldStatesConfig","newTagStateAttrs","evaluatedStates","stateCondition","configAttrValues","entryConfig","attribute","evaluatedState","evaluateButtonStates","states","splittedStates","getValueForField","fieldType","parseContext","context","isObject","parsedContextInJson","tryParseJSON","replaceTrue","valuesSplitted","parsedContext","valueForField","parseContextFields","str","variable","parseOnChange","onChangeString","splitted","method","argsSplitted","arg","parse","S","pos","keepComments","keepWhitespace","openBracket","openBracketCC","closeBracket","closeBracketCC","minusCC","slashCC","exclamationCC","singleQuoteCC","doubleQuoteCC","openCornerBracketCC","closeCornerBracketCC","parseChildren","tagName","children","closeStart","closeTag","parsedText","startCommentPos","cdataEndIndex","startDoctype","encapsuled","node","parseNode","text","parseText","trimmed","start","nameSpacer","parseName","NoChildNodes","attributes","c","name","code","parseString","startChar","startpos","findElements","r","out","filter","simplify","child","kids","f","dept","path","global$1","defaultSetTimout","defaultClearTimeout","cachedSetTimeout","cachedClearTimeout","global","runTimeout","fun","runClearTimeout","marker","queue","draining","currentQueue","queueIndex","cleanUpNextTick","drainQueue","timeout","len","nextTick","args","Item","array","title","platform","browser","env","argv","version","versions","release","config","noop","on","addListener","once","off","removeListener","removeAllListeners","emit","binding","cwd","chdir","dir","umask","performance","performanceNow","hrtime","previousTimestamp","clocktime","seconds","nanoseconds","startTime","uptime","currentTime","dif","browser$1","__viteBrowserExternal","streamBrowser","require$$0","lookup","revLookup","Arr","inited","init","toByteArray","b64","j","l","tmp","placeHolders","arr","L","tripletToBase64","num","encodeChunk","uint8","end","output","fromByteArray","extraBytes","parts","maxChunkLength","len2","read","buffer","offset","isLE","mLen","nBytes","e","m","eLen","eMax","eBias","nBits","d","s","write","rt","toString","isArray","INSPECT_MAX_BYTES","Buffer","_kMaxLength","kMaxLength","createBuffer","that","length","encodingOrOffset","allocUnsafe","from","fromArrayBuffer","fromString","fromObject","assertSize","size","alloc","fill","encoding","checked","byteLength","actual","fromArrayLike","byteOffset","obj","internalIsBuffer","isnan","SlowBuffer","isBuffer","a","x","y","list","buf","loweredCase","utf8ToBytes","base64ToBytes","slowToString","hexSlice","utf8Slice","asciiSlice","latin1Slice","base64Slice","utf16leSlice","swap","n","max","target","thisStart","thisEnd","thisCopy","targetCopy","bidirectionalIndexOf","val","arrayIndexOf","indexSize","arrLength","valLength","foundIndex","found","hexWrite","remaining","strLen","parsed","utf8Write","blitBuffer","asciiWrite","asciiToBytes","latin1Write","base64Write","ucs2Write","utf16leToBytes","res","firstByte","codePoint","bytesPerSequence","secondByte","thirdByte","fourthByte","tempCodePoint","decodeCodePointsArray","MAX_ARGUMENTS_LENGTH","codePoints","ret","toHex","bytes","newBuf","sliceLen","checkOffset","ext","noAssert","mul","checkInt","min","maxBytes","objectWriteUInt16","littleEndian","objectWriteUInt32","limit","sub","checkIEEE754","writeFloat","writeDouble","targetStart","INVALID_BASE64_RE","base64clean","stringtrim","units","leadSurrogate","byteArray","hi","lo","src","dst","isFastBuffer","isSlowBuffer","inherits","ctor","superCtor","TempCtor","inherits$2","formatRegExp","format","isString","objects","inspect","isNull","deprecate","fn","msg","isUndefined","process","warned","deprecated","debugs","debugEnviron","debuglog","set","pid","opts","ctx","stylizeNoColor","isBoolean","_extend","stylizeWithColor","formatValue","styleType","style","arrayToHash","hash","idx","recurseTimes","isFunction","primitive","formatPrimitive","keys","visibleKeys","isError","formatError","isRegExp","isDate","base","braces","formatArray","formatProperty","reduceToSingleString","simple","isNumber","hasOwnProperty","desc","line","cur","ar","isNullOrUndefined","isSymbol","re","objectToString","isPrimitive","maybeBuf","o","pad","months","timestamp","time","log","origin","add","prop","util","ownKeys","object","enumerableOnly","symbols","sym","_objectSpread","source","_defineProperty","_classCallCheck","instance","Constructor","_defineProperties","descriptor","_createClass","protoProps","staticProps","_require","_require2","require$$1","custom","copyBuffer","buffer_list","BufferList","v","p","hasStrings","nb","_","destroy","err","cb","_this","readableDestroyed","writableDestroyed","emitErrorNT","emitCloseNT","emitErrorAndCloseNT","self","undestroy","errorOrDestroy","stream","rState","wState","destroy_1","_inheritsLoose","subClass","superClass","codes","createErrorType","message","Base","getMessage","arg1","arg2","arg3","NodeError","_Base","oneOf","expected","thing","startsWith","search","endsWith","this_len","includes","determiner","errorsBrowser","ERR_INVALID_OPT_VALUE","highWaterMarkFrom","isDuplex","duplexKey","getHighWaterMark","state","hwm","inherits_browserModule","_stream_writable","Writable","CorkedRequest","onCorkedFinish","Duplex","WritableState","internalUtil","Stream","require$$2","OurUint8Array","_uint8ArrayToBuffer","chunk","_isUint8Array","destroyImpl","require$$3","require$$4","_require$codes","require$$5","ERR_INVALID_ARG_TYPE","ERR_METHOD_NOT_IMPLEMENTED","ERR_MULTIPLE_CALLBACK","ERR_STREAM_CANNOT_PIPE","ERR_STREAM_DESTROYED","ERR_STREAM_NULL_VALUES","ERR_STREAM_WRITE_AFTER_END","ERR_UNKNOWN_ENCODING","require$$6","nop","require$$7","noDecode","er","onwrite","realHasInstance","writeAfterEnd","validChunk","isBuf","writeOrBuffer","clearBuffer","decodeChunk","newChunk","last","doWrite","writev","onwriteError","sync","finishMaybe","onwriteStateUpdate","finished","needFinish","afterWrite","onwriteDrain","holder","count","allBuffers","endWritable","callFinal","prefinish","need","corkReq","objectKeys","_stream_duplex","Readable","onend","onEndNT","copyProps","module","exports","SafeBuffer","isEncoding","_normalizeEncoding","enc","retried","normalizeEncoding","nenc","string_decoder","StringDecoder","utf16Text","utf16End","utf8FillLast","base64Text","base64End","simpleWrite","simpleEnd","utf8End","utf8Text","utf8CheckByte","byte","utf8CheckIncomplete","utf8CheckExtraBytes","total","ERR_STREAM_PREMATURE_CLOSE","callback","called","_len","_key","isRequest","eos","readable","writable","onlegacyfinish","onfinish","writableEnded","readableEnded","onerror","onclose","onrequest","endOfStream","_Object$setPrototypeO","kLastResolve","kLastReject","kError","kEnded","kLastPromise","kHandlePromise","kStream","createIterResult","done","readAndResolve","iter","resolve","data","onReadable","wrapForNext","lastPromise","reject","AsyncIteratorPrototype","ReadableStreamAsyncIteratorPrototype","error","promise","_this2","createReadableStreamAsyncIterator","_Object$create","iterator","async_iterator","fromBrowser","_stream_readable","ReadableState","EElistenerCount","emitter","debugUtil","debug","ERR_STREAM_PUSH_AFTER_EOF","ERR_STREAM_UNSHIFT_AFTER_END_EVENT","require$$8","kProxyEvents","prependListener","event","require$$9","require$$10","skipChunkCheck","readableAddChunk","addToFront","onEofChunk","chunkInvalid","addChunk","maybeReadMore","emitReadable","decoder","content","MAX_HWM","computeNewHighWaterMark","howMuchToRead","nOrig","endReadable","doRead","fromList","emitReadable_","flow","maybeReadMore_","dest","pipeOpts","doEnd","endFn","unpipe","onunpipe","unpipeInfo","cleanup","ondrain","pipeOnDrain","cleanedUp","ondata","indexOf","dests","index","ev","nReadingNextTick","updateReadableListening","resume","resume_","paused","require$$11","endReadableNT","iterable","require$$12","xs","_stream_transform","Transform","ERR_TRANSFORM_ALREADY_TRANSFORMING","ERR_TRANSFORM_WITH_LENGTH_0","afterTransform","ts","rs","err2","_stream_passthrough","PassThrough","ERR_MISSING_ARGS","destroyer","reading","writing","closed","destroyed","call","pipe","to","popCallback","streams","pipeline","destroys","pipeline_1","DestroyableTransform","through2","construct","transform","flush","through2Module","t2","through2_1","Through2","override","Form","xml","view","txml.parse","container","widgetFactory","field","_b","evaluatedTagAttributes","evaluatedStateAttributes","widgetContext","domain","checkIfDomainHasValue","widgetProps","Tree","mergedAttrs","fieldDef","SearchFieldTypes","SearchFilter","searchFields","searchField","fieldAttributes","transformDomainForChildWidget","widgetFieldName","transformedDomain","domainEntry","rootFieldName","targetFieldName","parseDomainFields","DashboardItem","Dashboard","Graph","element","parseBoolAttribute","attr","GraphIndicator","GraphIndicatorField","parseXYAxis","nodes","yAxisElements","xAxis","axis","stacked","GraphXAxis","GraphYAxis","GraphChart","xyAxis","GraphTypes","parseGraph","graphModel","GraphAxis","getFieldsToRetrieve","ooui","getValueAndLabelForField","xFieldData","valuePair","selectionPair","processTimerangeData","timerange","combinedValues","combineValuesForTimerange","fillGapsInTimerangeData","finalValues","uniqueValues","getUniqueValuesGroupedBy","valuesForKey","date","nextDate","checkDatesConsecutive","missingDates","getMissingConsecutiveDates","stringDate","dates","sortedDates","date1","date2","iDate","moment","getFormatForUnits","fDate","adjustedValues","adjustXValuesForTimeRage","finalValue","getValueForOperator","convertDateToTimeRangeAdjusted","getDateFormat","momentDate","unit","consecutive","diff","groupBy","uniqueKey","labelsForOperator","processGraphData","valuesGroupedByX","getValuesGroupedByField","yField","xValue","xLabel","objectsForXValue","valuesGroupedByYLabel","yUniqueValue","entries","valuesForYField","getValuesForYField","getYAxisFieldname","isGroup","isStack","adjustedStackedData","adjustedUninformedData","finalData","roundNumber","previousValue","currentValue","avg","groupedValues","getAllObjectsInGroupedValues","grouped","totalObjects","group","yAxis","fieldProps"],"mappings":"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"}