diff --git a/.gitignore b/.gitignore index c549dc5..b9f5b76 100644 --- a/.gitignore +++ b/.gitignore @@ -9,4 +9,5 @@ pico-examples robot_output.xml report.html mono_crash* -.DS_Store \ No newline at end of file +.DS_Store +venv diff --git a/README.md b/README.md index 48644fb..081a6f8 100644 --- a/README.md +++ b/README.md @@ -117,8 +117,19 @@ inside renode console: ``` and open localhost:8080 in your web browser. -Current visualization is ugly, but it works! +Layouts are defined by user and can be saved in JSON file with `save` button inside `layout` section. +Loading is supported from website or with `visualizationLoadLayout @path_to_file` command. + +Elements on PCB can be marked as board elements with `visualizationSetBoardElement ` command. +But they are not rendered yet. This is planned feature. + +Example GUI may look like shown below: +![gui](./images/gui_example.png) + +## Known bugs +There is a bug that sometimes 7-segment display is not rendered correctly. +Zooming or refreshing browser seems to fix the problem as a workaround. # Multi Node simulation. Many RP2040 simulators may interwork together. I am using that possibility in full MSPC simulation. To interwork between them GPIOConnector may be used, please check existing usage (`simulation` directory): diff --git a/cores/initialize_peripherals.resc b/cores/initialize_peripherals.resc index a68338c..9b98bb5 100644 --- a/cores/initialize_peripherals.resc +++ b/cores/initialize_peripherals.resc @@ -48,5 +48,8 @@ include $ORIGIN/../emulation/peripherals/watchdog/rp2040_watchdog.cs include $ORIGIN/../emulation/peripherals/i2c/rp2040_i2c.cs include $ORIGIN/../emulation/externals/pcf8523.cs +include $ORIGIN/../emulation/externals/segment_display.cs +EnsureTypeIsLoaded "Antmicro.Renode.Peripherals.Miscellaneous.SegmentDisplay" -include $ORIGIN/../emulation/peripherals/psm/rp2040_psm.cs \ No newline at end of file + +include $ORIGIN/../emulation/peripherals/psm/rp2040_psm.cs diff --git a/emulation/externals/segment_display.cs b/emulation/externals/segment_display.cs new file mode 100644 index 0000000..b0911b8 --- /dev/null +++ b/emulation/externals/segment_display.cs @@ -0,0 +1,98 @@ +using System; +using Antmicro.Renode.Core; +using Antmicro.Renode.Logging; + +namespace Antmicro.Renode.Peripherals.Miscellaneous +{ + public class SegmentDisplay : IPeripheral, IGPIOReceiver + { + public SegmentDisplay(int segments = 7, int cells = 1, int colon = 0) + { + sync = new object(); + NumberOfSegments = segments; + NumberOfCells = cells; + Colon = colon; + this.segments = new bool[NumberOfSegments]; + this.cells = new bool[NumberOfCells]; + Reset(); + } + + public void Reset() + { + for (int c = 0; c < NumberOfCells; ++c) + { + this.cells[c] = false; + } + + for (int s = 0; s < NumberOfSegments; ++s) + { + this.segments[s] = false; + } + } + + public void OnGPIO(int number, bool value) + { + if (number >= NumberOfSegments + NumberOfCells) + { + return; + } + + // if cells change + if (number < NumberOfCells) + { + SetCell(number, value); + } + else + { + SetSegment(number - NumberOfCells, value); + } + } + + public event Action StateChanged; + + public void SetSegment(int number, bool state) + { + lock (sync) + { + if (segments[number] != state) + { + segments[number] = state; + StateChanged?.Invoke(this, cells, segments); + this.Log(LogLevel.Noisy, "Segment[{0}] state changed to: {1}", number, state); + } + } + } + + public void SetCell(int number, bool state) + { + lock (sync) + { + if (cells[number] != state) + { + cells[number] = state; + StateChanged?.Invoke(this, cells, segments); + this.Log(LogLevel.Noisy, "Cell[{0}] state changed to: {1}", number, state); + } + } + } + + public bool[] Segments + { + get => segments; + } + + public bool[] Cells + { + get => cells; + } + + + public readonly int NumberOfSegments; + public readonly int NumberOfCells; + public readonly int Colon; + + private readonly object sync; + private bool[] segments; + private bool[] cells; + } +} diff --git a/emulation/externals/segment_display.py b/emulation/externals/segment_display.py deleted file mode 100644 index e69de29..0000000 diff --git a/images/gui_example.png b/images/gui_example.png new file mode 100644 index 0000000..bfdd969 Binary files /dev/null and b/images/gui_example.png differ diff --git a/visualization/assets/7segment.afdesign b/visualization/assets/7segment.afdesign new file mode 100644 index 0000000..3d616b6 Binary files /dev/null and b/visualization/assets/7segment.afdesign differ diff --git a/visualization/assets/7segment.svg b/visualization/assets/7segment.svg new file mode 100644 index 0000000..fe29be5 --- /dev/null +++ b/visualization/assets/7segment.svg @@ -0,0 +1,29 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/visualization/assets/7segment_separator.afdesign b/visualization/assets/7segment_separator.afdesign new file mode 100644 index 0000000..a6e59e1 Binary files /dev/null and b/visualization/assets/7segment_separator.afdesign differ diff --git a/visualization/assets/7segment_separator.svg b/visualization/assets/7segment_separator.svg new file mode 100644 index 0000000..f27a760 --- /dev/null +++ b/visualization/assets/7segment_separator.svg @@ -0,0 +1,13 @@ + + + + + + + + + + + + + diff --git a/visualization/visualization.py b/visualization/visualization.py index 7cc74f1..a70049b 100644 --- a/visualization/visualization.py +++ b/visualization/visualization.py @@ -21,11 +21,13 @@ import sys sys.path.append(script_dir) -visualizationPath = None os.chdir(script_dir) from Antmicro.Renode.Peripherals.Miscellaneous import LED from Antmicro.Renode.Peripherals.Miscellaneous import Button + +import Antmicro.Renode.Peripherals.Miscellaneous + from Antmicro.Renode.Core import MachineStateChangedEventArgs from threading import Thread @@ -42,6 +44,13 @@ layout = None +def convert_to_array(o): + arr = [] + for e in o: + arr.append(e) + return arr + + def led_state_change(led, state): sendMessage({ "msg": "state_change", @@ -51,6 +60,16 @@ def led_state_change(led, state): }) +def segment_display_state_changed(display, cells, segments): + sendMessage({ + "msg": "state_change", + "peripheral_type": "segment_display", + "name": machine.GetLocalName(display), + "cells": convert_to_array(cells), + "segments": convert_to_array(segments), + }) + + def process_message(msg): if msg["type"] == "action": if msg["target"] == "button": @@ -62,7 +81,6 @@ def process_message(msg): def mc_setVisualizationPath(path): print("Visualization will be served from: " + path) - visualizationPath = path os.chdir(path) @@ -86,12 +104,18 @@ def mc_stopVisualization(): def machine_state_changed(machine, state): - print("state: ", state) if state.CurrentState == MachineStateChangedEventArgs.State.Disposed: print("Dispose visualization") mc_stopVisualization() +def machine_find_peripheral_type(machine, name): + for peri in machine.GetRegisteredPeripherals(): + if name in str(peri.Type): + return peri.Type + return None + + def mc_startVisualization(port): global process global machine @@ -129,10 +153,24 @@ def mc_startVisualization(port): "msg": "register", "peripheral_type": "button", "name": machine.GetLocalName(button), - "state": led.State, }) buttons[machine.GetLocalName(button)] = button + SegmentDisplay = machine_find_peripheral_type( + machine, "Miscellaneous.SegmentDisplay" + ) + segmentDisplays = machine.GetPeripheralsOfType[SegmentDisplay]() + for display in segmentDisplays: + sendMessage({ + "msg": "register", + "peripheral_type": "segment_display", + "name": machine.GetLocalName(display), + "segments": convert_to_array(display.Segments), + "cells": convert_to_array(display.Cells), + "colon": display.Colon, + }) + display.StateChanged += segment_display_state_changed + if layout is not None: sendMessage({"msg": "load_layout", "file": layout}) @@ -153,10 +191,12 @@ def mc_visualizationLoadLayout(file): sendMessage({"msg": "load_layout", "file": layout}) + def mc_visualizationSetBoardElement(name): print("Setting board element: " + name) sendMessage({"msg": "set_board_element", "name": name}) + def sendMessage(message): global process if process.poll() is None: diff --git a/visualization/visualization/build/asset-manifest.json b/visualization/visualization/build/asset-manifest.json index 5499000..2dac5aa 100644 --- a/visualization/visualization/build/asset-manifest.json +++ b/visualization/visualization/build/asset-manifest.json @@ -1,17 +1,19 @@ { "files": { - "main.css": "/static/css/main.7bab5a1f.css", - "main.js": "/static/js/main.75be53a9.js", + "main.css": "/static/css/main.25333aef.css", + "main.js": "/static/js/main.233f68a9.js", "static/media/Raspberry_Pi_Pico_top.png": "/static/media/Raspberry_Pi_Pico_top.e33f028f5df6fa7a8812.png", "static/media/breadboard.svg": "/static/media/breadboard.0b169a51ffbe1f7f8bd530e8f6cb7ed8.svg", + "static/media/7segment.svg": "/static/media/7segment.4e0006b1fe808cef9373e141218a4d64.svg", "static/media/button.svg": "/static/media/button.477b4b211bc442f2c7af47352b66f76c.svg", "static/media/led.svg": "/static/media/led.4768c0df04932f68cd84bba91e9f7349.svg", + "static/media/7segment_separator.svg": "/static/media/7segment_separator.4e74319228a46dc74746ad8d50353228.svg", "index.html": "/index.html", - "main.7bab5a1f.css.map": "/static/css/main.7bab5a1f.css.map", - "main.75be53a9.js.map": "/static/js/main.75be53a9.js.map" + "main.25333aef.css.map": "/static/css/main.25333aef.css.map", + "main.233f68a9.js.map": "/static/js/main.233f68a9.js.map" }, "entrypoints": [ - "static/css/main.7bab5a1f.css", - "static/js/main.75be53a9.js" + "static/css/main.25333aef.css", + "static/js/main.233f68a9.js" ] } \ No newline at end of file diff --git a/visualization/visualization/build/index.html b/visualization/visualization/build/index.html index 6feadcf..ce2daab 100644 --- a/visualization/visualization/build/index.html +++ b/visualization/visualization/build/index.html @@ -1 +1 @@ -React App
\ No newline at end of file +React App
\ No newline at end of file diff --git a/visualization/visualization/build/static/css/main.25333aef.css b/visualization/visualization/build/static/css/main.25333aef.css new file mode 100644 index 0000000..22e7860 --- /dev/null +++ b/visualization/visualization/build/static/css/main.25333aef.css @@ -0,0 +1,2 @@ +.breadboard{background-color:#f0f0f0;position:relative}.breadboard-image{height:100%;left:0;object-fit:cover;right:0;width:100%}.grid{bottom:24%;display:grid;grid-template-columns:repeat(62,1fr);grid-template-rows:2fr 2fr 2fr 2fr 2fr 2fr 2fr 2fr 2fr 2fr 2fr 2fr;left:1.65%;position:absolute;right:3.2%;top:20.5%}.grid-item{grid-column:1;grid-row:1}.widget{align-items:center;border:1px solid red;cursor:pointer;display:flex;justify-items:center;position:relative}.widget,.widget-image{height:100%;width:100%}.widget-image{object-fit:fill}.colorPicker{justify-content:center} +/*# sourceMappingURL=main.25333aef.css.map*/ \ No newline at end of file diff --git a/visualization/visualization/build/static/css/main.25333aef.css.map b/visualization/visualization/build/static/css/main.25333aef.css.map new file mode 100644 index 0000000..458371a --- /dev/null +++ b/visualization/visualization/build/static/css/main.25333aef.css.map @@ -0,0 +1 @@ +{"version":3,"file":"static/css/main.25333aef.css","mappings":"AAAA,YAEI,wBAAyB,CADzB,iBAEJ,CAEA,kBAEI,WAAY,CACZ,MAAO,CAEP,gBAAiB,CADjB,OAAQ,CAHR,UAKJ,CAEA,MAQI,UAAW,CANX,YAAa,CAEb,oCAAsC,CADtC,kEAAmE,CAGnE,UAAW,CALX,iBAAkB,CAMlB,UAAW,CAFX,SAIJ,CAEA,WAEI,aAAc,CADd,UAEJ,CC3BA,QAGI,kBAAmB,CAKnB,oBAAsB,CADtB,cAAe,CALf,YAAa,CAEb,oBAAqB,CAHrB,iBAQJ,CAEA,sBANI,WAAY,CACZ,UASJ,CAJA,cAGI,eACJ,CCfA,aACE,sBACF","sources":["components/Breadboard.css","components/Widget.css","App.css"],"sourcesContent":[".breadboard {\n position: relative;\n background-color: #f0f0f0;\n}\n\n.breadboard-image {\n width: 100%;\n height: 100%;\n left: 0;\n right: 0;\n object-fit: cover;\n}\n\n.grid {\n position: absolute;\n display: grid;\n grid-template-rows: 2fr 2fr 2fr 2fr 2fr 2fr 2fr 2fr 2fr 2fr 2fr 2fr;\n grid-template-columns: repeat(62, 1fr);\n top: 20.5%;\n left: 1.65%;\n right: 3.2%;\n bottom: 24%;\n}\n\n.grid-item {\n grid-row: 1;\n grid-column: 1;\n}\n",".widget {\n position: relative;\n display: flex;\n align-items: center;\n justify-items: center;\n height: 100%;\n width: 100%;\n cursor: pointer;\n border: 1px solid #f00;\n}\n\n.widget-image {\n width: 100%;\n height: 100%;\n object-fit: fill;\n}\n",".colorPicker {\n justify-content: center\n}\n"],"names":[],"sourceRoot":""} \ No newline at end of file diff --git a/visualization/visualization/build/static/css/main.7bab5a1f.css b/visualization/visualization/build/static/css/main.7bab5a1f.css deleted file mode 100644 index a777432..0000000 --- a/visualization/visualization/build/static/css/main.7bab5a1f.css +++ /dev/null @@ -1,2 +0,0 @@ -.breadboard{background-color:#f0f0f0;position:relative}.breadboard-image{height:100%;left:0;object-fit:cover;right:0;width:100%}.grid{bottom:22%;display:grid;grid-template-columns:repeat(31,1fr);grid-template-rows:2fr 2fr 4fr 2fr 2fr;left:1.65%;position:absolute;right:3.2%;top:20.5%}.grid-item{grid-column:1;grid-row:1}.widget{align-items:center;border:1px solid red;cursor:pointer;display:flex;justify-items:center;position:relative}.widget,.widget-image{height:100%;width:100%}.widget-image{object-fit:contain}.colorPicker{justify-content:center} -/*# sourceMappingURL=main.7bab5a1f.css.map*/ \ No newline at end of file diff --git a/visualization/visualization/build/static/css/main.7bab5a1f.css.map b/visualization/visualization/build/static/css/main.7bab5a1f.css.map deleted file mode 100644 index 2981e49..0000000 --- a/visualization/visualization/build/static/css/main.7bab5a1f.css.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"static/css/main.7bab5a1f.css","mappings":"AAAA,YAEI,wBAAyB,CADzB,iBAEJ,CAEA,kBAEI,WAAY,CACZ,MAAO,CAEP,gBAAiB,CADjB,OAAQ,CAHR,UAKJ,CAEA,MAQI,UAAW,CANX,YAAa,CAEb,oCAAsC,CADtC,sCAAuC,CAGvC,UAAW,CALX,iBAAkB,CAMlB,UAAW,CAFX,SAIJ,CAEA,WAEI,aAAc,CADd,UAEJ,CC3BA,QAGI,kBAAmB,CAKnB,oBAAsB,CADtB,cAAe,CALf,YAAa,CAEb,oBAAqB,CAHrB,iBAQJ,CAEA,sBANI,WAAY,CACZ,UASJ,CAJA,cAGI,kBACJ,CCfA,aACE,sBACF","sources":["components/Breadboard.css","components/Widget.css","App.css"],"sourcesContent":[".breadboard {\n position: relative;\n background-color: #f0f0f0;\n}\n\n.breadboard-image {\n width: 100%;\n height: 100%;\n left: 0;\n right: 0;\n object-fit: cover;\n}\n\n.grid {\n position: absolute;\n display: grid;\n grid-template-rows: 2fr 2fr 4fr 2fr 2fr;\n grid-template-columns: repeat(31, 1fr);\n top: 20.5%;\n left: 1.65%;\n right: 3.2%;\n bottom: 22%;\n}\n\n.grid-item {\n grid-row: 1;\n grid-column: 1;\n}\n",".widget {\n position: relative;\n display: flex;\n align-items: center;\n justify-items: center;\n height: 100%;\n width: 100%;\n cursor: pointer;\n border: 1px solid #f00;\n}\n\n.widget-image {\n width: 100%;\n height: 100%;\n object-fit: contain;\n}\n",".colorPicker {\n justify-content: center\n}\n"],"names":[],"sourceRoot":""} \ No newline at end of file diff --git a/visualization/visualization/build/static/js/main.75be53a9.js b/visualization/visualization/build/static/js/main.233f68a9.js similarity index 70% rename from visualization/visualization/build/static/js/main.75be53a9.js rename to visualization/visualization/build/static/js/main.233f68a9.js index 6cd0f7e..2316c2f 100644 --- a/visualization/visualization/build/static/js/main.75be53a9.js +++ b/visualization/visualization/build/static/js/main.233f68a9.js @@ -1,5 +1,5 @@ -/*! For license information please see main.75be53a9.js.LICENSE.txt */ -(()=>{var e={4371:(e,t,n)=>{"use strict";var r,o=Object.assign||function(e){for(var t=1;t=0||Object.prototype.hasOwnProperty.call(e,r)&&(n[r]=e[r]);return n}(e,["fill","width","height","style"]);return i.default.createElement("svg",o({viewBox:"0 0 24 24",style:o({fill:n,width:a,height:s},c)},f),i.default.createElement("path",{d:"M21,7L9,19L3.5,13.5L4.91,12.09L9,16.17L19.59,5.59L21,7Z"}))}},9128:(e,t,n)=>{"use strict";var r,o=Object.assign||function(e){for(var t=1;t=0||Object.prototype.hasOwnProperty.call(e,r)&&(n[r]=e[r]);return n}(e,["fill","width","height","style"]);return i.default.createElement("svg",o({viewBox:"0 0 24 24",style:o({fill:n,width:a,height:s},c)},f),i.default.createElement("path",{d:"M12,18.17L8.83,15L7.42,16.41L12,21L16.59,16.41L15.17,15M12,5.83L15.17,9L16.58,7.59L12,3L7.41,7.59L8.83,9L12,5.83Z"}))}},3024:(e,t,n)=>{"use strict";function r(e){var t,n,o="";if("string"==typeof e||"number"==typeof e)o+=e;else if("object"==typeof e)if(Array.isArray(e))for(t=0;to,default:()=>a});const a=o},219:(e,t,n)=>{"use strict";var r=n(3763),o={childContextTypes:!0,contextType:!0,contextTypes:!0,defaultProps:!0,displayName:!0,getDefaultProps:!0,getDerivedStateFromError:!0,getDerivedStateFromProps:!0,mixins:!0,propTypes:!0,type:!0},a={name:!0,length:!0,prototype:!0,caller:!0,callee:!0,arguments:!0,arity:!0},i={$$typeof:!0,compare:!0,defaultProps:!0,displayName:!0,propTypes:!0,type:!0},l={};function s(e){return r.isMemo(e)?i:l[e.$$typeof]||o}l[r.ForwardRef]={$$typeof:!0,render:!0,defaultProps:!0,displayName:!0,propTypes:!0},l[r.Memo]=i;var u=Object.defineProperty,c=Object.getOwnPropertyNames,f=Object.getOwnPropertySymbols,d=Object.getOwnPropertyDescriptor,p=Object.getPrototypeOf,h=Object.prototype;e.exports=function e(t,n,r){if("string"!==typeof n){if(h){var o=p(n);o&&o!==h&&e(t,o,r)}var i=c(n);f&&(i=i.concat(f(n)));for(var l=s(t),g=s(n),m=0;m{"use strict";var n="function"===typeof Symbol&&Symbol.for,r=n?Symbol.for("react.element"):60103,o=n?Symbol.for("react.portal"):60106,a=n?Symbol.for("react.fragment"):60107,i=n?Symbol.for("react.strict_mode"):60108,l=n?Symbol.for("react.profiler"):60114,s=n?Symbol.for("react.provider"):60109,u=n?Symbol.for("react.context"):60110,c=n?Symbol.for("react.async_mode"):60111,f=n?Symbol.for("react.concurrent_mode"):60111,d=n?Symbol.for("react.forward_ref"):60112,p=n?Symbol.for("react.suspense"):60113,h=n?Symbol.for("react.suspense_list"):60120,g=n?Symbol.for("react.memo"):60115,m=n?Symbol.for("react.lazy"):60116,b=n?Symbol.for("react.block"):60121,v=n?Symbol.for("react.fundamental"):60117,y=n?Symbol.for("react.responder"):60118,x=n?Symbol.for("react.scope"):60119;function w(e){if("object"===typeof e&&null!==e){var t=e.$$typeof;switch(t){case r:switch(e=e.type){case c:case f:case a:case l:case i:case p:return e;default:switch(e=e&&e.$$typeof){case u:case d:case m:case g:case s:return e;default:return t}}case o:return t}}}function S(e){return w(e)===f}t.AsyncMode=c,t.ConcurrentMode=f,t.ContextConsumer=u,t.ContextProvider=s,t.Element=r,t.ForwardRef=d,t.Fragment=a,t.Lazy=m,t.Memo=g,t.Portal=o,t.Profiler=l,t.StrictMode=i,t.Suspense=p,t.isAsyncMode=function(e){return S(e)||w(e)===c},t.isConcurrentMode=S,t.isContextConsumer=function(e){return w(e)===u},t.isContextProvider=function(e){return w(e)===s},t.isElement=function(e){return"object"===typeof e&&null!==e&&e.$$typeof===r},t.isForwardRef=function(e){return w(e)===d},t.isFragment=function(e){return w(e)===a},t.isLazy=function(e){return w(e)===m},t.isMemo=function(e){return w(e)===g},t.isPortal=function(e){return w(e)===o},t.isProfiler=function(e){return w(e)===l},t.isStrictMode=function(e){return w(e)===i},t.isSuspense=function(e){return w(e)===p},t.isValidElementType=function(e){return"string"===typeof e||"function"===typeof e||e===a||e===f||e===l||e===i||e===p||e===h||"object"===typeof e&&null!==e&&(e.$$typeof===m||e.$$typeof===g||e.$$typeof===s||e.$$typeof===u||e.$$typeof===d||e.$$typeof===v||e.$$typeof===y||e.$$typeof===x||e.$$typeof===b)},t.typeOf=w},3763:(e,t,n)=>{"use strict";e.exports=n(4983)},7685:(e,t,n)=>{var r=n(7937)(n(6552),"DataView");e.exports=r},8724:(e,t,n)=>{var r=n(7615),o=n(5051),a=n(2154),i=n(8734),l=n(2662);function s(e){var t=-1,n=null==e?0:e.length;for(this.clear();++t{var r=n(7563),o=n(9935),a=n(4190),i=n(1946),l=n(1714);function s(e){var t=-1,n=null==e?0:e.length;for(this.clear();++t{var r=n(7937)(n(6552),"Map");e.exports=r},4816:(e,t,n)=>{var r=n(7251),o=n(7159),a=n(438),i=n(9394),l=n(6874);function s(e){var t=-1,n=null==e?0:e.length;for(this.clear();++t{var r=n(7937)(n(6552),"Promise");e.exports=r},2070:(e,t,n)=>{var r=n(7937)(n(6552),"Set");e.exports=r},8902:(e,t,n)=>{var r=n(4816),o=n(6179),a=n(6704);function i(e){var t=-1,n=null==e?0:e.length;for(this.__data__=new r;++t{var r=n(7160),o=n(4545),a=n(793),i=n(7760),l=n(3892),s=n(6788);function u(e){var t=this.__data__=new r(e);this.size=t.size}u.prototype.clear=o,u.prototype.delete=a,u.prototype.get=i,u.prototype.has=l,u.prototype.set=s,e.exports=u},9812:(e,t,n)=>{var r=n(6552).Symbol;e.exports=r},2929:(e,t,n)=>{var r=n(6552).Uint8Array;e.exports=r},6600:(e,t,n)=>{var r=n(7937)(n(6552),"WeakMap");e.exports=r},726:e=>{e.exports=function(e,t){for(var n=-1,r=null==e?0:e.length;++n{e.exports=function(e,t){for(var n=-1,r=null==e?0:e.length,o=0,a=[];++n{var r=n(3343),o=n(2777),a=n(4052),i=n(4543),l=n(9194),s=n(1268),u=Object.prototype.hasOwnProperty;e.exports=function(e,t){var n=a(e),c=!n&&o(e),f=!n&&!c&&i(e),d=!n&&!c&&!f&&s(e),p=n||c||f||d,h=p?r(e.length,String):[],g=h.length;for(var m in e)!t&&!u.call(e,m)||p&&("length"==m||f&&("offset"==m||"parent"==m)||d&&("buffer"==m||"byteLength"==m||"byteOffset"==m)||l(m,g))||h.push(m);return h}},149:e=>{e.exports=function(e,t){for(var n=-1,r=null==e?0:e.length,o=Array(r);++n{e.exports=function(e,t){for(var n=-1,r=t.length,o=e.length;++n{e.exports=function(e,t){for(var n=-1,r=null==e?0:e.length;++n{var r=n(1775),o=n(3211),a=Object.prototype.hasOwnProperty;e.exports=function(e,t,n){var i=e[t];a.call(e,t)&&o(i,n)&&(void 0!==n||t in e)||r(e,t,n)}},1340:(e,t,n)=>{var r=n(3211);e.exports=function(e,t){for(var n=e.length;n--;)if(r(e[n][0],t))return n;return-1}},1104:(e,t,n)=>{var r=n(6614),o=n(8673);e.exports=function(e,t){return e&&r(t,o(t),e)}},5119:(e,t,n)=>{var r=n(6614),o=n(474);e.exports=function(e,t){return e&&r(t,o(t),e)}},1775:(e,t,n)=>{var r=n(5654);e.exports=function(e,t,n){"__proto__"==t&&r?r(e,t,{configurable:!0,enumerable:!0,value:n,writable:!0}):e[t]=n}},7132:(e,t,n)=>{var r=n(5538),o=n(726),a=n(8420),i=n(1104),l=n(5119),s=n(4353),u=n(1980),c=n(8124),f=n(9075),d=n(9395),p=n(8592),h=n(6924),g=n(8268),m=n(8630),b=n(310),v=n(4052),y=n(4543),x=n(7887),w=n(6686),S=n(5921),k=n(8673),C=n(474),E="[object Arguments]",_="[object Function]",O="[object Object]",j={};j[E]=j["[object Array]"]=j["[object ArrayBuffer]"]=j["[object DataView]"]=j["[object Boolean]"]=j["[object Date]"]=j["[object Float32Array]"]=j["[object Float64Array]"]=j["[object Int8Array]"]=j["[object Int16Array]"]=j["[object Int32Array]"]=j["[object Map]"]=j["[object Number]"]=j[O]=j["[object RegExp]"]=j["[object Set]"]=j["[object String]"]=j["[object Symbol]"]=j["[object Uint8Array]"]=j["[object Uint8ClampedArray]"]=j["[object Uint16Array]"]=j["[object Uint32Array]"]=!0,j["[object Error]"]=j[_]=j["[object WeakMap]"]=!1,e.exports=function e(t,n,P,A,M,T){var R,z=1&n,N=2&n,D=4&n;if(P&&(R=M?P(t,A,M,T):P(t)),void 0!==R)return R;if(!w(t))return t;var L=v(t);if(L){if(R=g(t),!z)return u(t,R)}else{var $=h(t),F=$==_||"[object GeneratorFunction]"==$;if(y(t))return s(t,z);if($==O||$==E||F&&!M){if(R=N||F?{}:b(t),!z)return N?f(t,l(R,t)):c(t,i(R,t))}else{if(!j[$])return M?t:{};R=m(t,$,z)}}T||(T=new r);var B=T.get(t);if(B)return B;T.set(t,R),S(t)?t.forEach((function(r){R.add(e(r,n,P,r,t,T))})):x(t)&&t.forEach((function(r,o){R.set(o,e(r,n,P,o,t,T))}));var I=L?void 0:(D?N?p:d:N?C:k)(t);return o(I||t,(function(r,o){I&&(r=t[o=r]),a(R,o,e(r,n,P,o,t,T))})),R}},1817:(e,t,n)=>{var r=n(6686),o=Object.create,a=function(){function e(){}return function(t){if(!r(t))return{};if(o)return o(t);e.prototype=t;var n=new e;return e.prototype=void 0,n}}();e.exports=a},5652:(e,t,n)=>{var r=n(4664),o=n(6516)(r);e.exports=o},4258:(e,t,n)=>{var r=n(5906)();e.exports=r},4664:(e,t,n)=>{var r=n(4258),o=n(8673);e.exports=function(e,t){return e&&r(e,t,o)}},2969:(e,t,n)=>{var r=n(5324),o=n(914);e.exports=function(e,t){for(var n=0,a=(t=r(t,e)).length;null!=e&&n{var r=n(8895),o=n(4052);e.exports=function(e,t,n){var a=t(e);return o(e)?a:r(a,n(e))}},6913:(e,t,n)=>{var r=n(9812),o=n(4552),a=n(6095),i=r?r.toStringTag:void 0;e.exports=function(e){return null==e?void 0===e?"[object Undefined]":"[object Null]":i&&i in Object(e)?o(e):a(e)}},7894:e=>{e.exports=function(e,t){return null!=e&&t in Object(e)}},5193:(e,t,n)=>{var r=n(6913),o=n(2761);e.exports=function(e){return o(e)&&"[object Arguments]"==r(e)}},6989:(e,t,n)=>{var r=n(6399),o=n(2761);e.exports=function e(t,n,a,i,l){return t===n||(null==t||null==n||!o(t)&&!o(n)?t!==t&&n!==n:r(t,n,a,i,e,l))}},6399:(e,t,n)=>{var r=n(5538),o=n(3668),a=n(9987),i=n(5752),l=n(6924),s=n(4052),u=n(4543),c=n(1268),f="[object Arguments]",d="[object Array]",p="[object Object]",h=Object.prototype.hasOwnProperty;e.exports=function(e,t,n,g,m,b){var v=s(e),y=s(t),x=v?d:l(e),w=y?d:l(t),S=(x=x==f?p:x)==p,k=(w=w==f?p:w)==p,C=x==w;if(C&&u(e)){if(!u(t))return!1;v=!0,S=!1}if(C&&!S)return b||(b=new r),v||c(e)?o(e,t,n,g,m,b):a(e,t,x,n,g,m,b);if(!(1&n)){var E=S&&h.call(e,"__wrapped__"),_=k&&h.call(t,"__wrapped__");if(E||_){var O=E?e.value():e,j=_?t.value():t;return b||(b=new r),m(O,j,n,g,b)}}return!!C&&(b||(b=new r),i(e,t,n,g,m,b))}},5791:(e,t,n)=>{var r=n(6924),o=n(2761);e.exports=function(e){return o(e)&&"[object Map]"==r(e)}},6532:(e,t,n)=>{var r=n(5538),o=n(6989);e.exports=function(e,t,n,a){var i=n.length,l=i,s=!a;if(null==e)return!l;for(e=Object(e);i--;){var u=n[i];if(s&&u[2]?u[1]!==e[u[0]]:!(u[0]in e))return!1}for(;++i{var r=n(1629),o=n(7857),a=n(6686),i=n(6996),l=/^\[object .+?Constructor\]$/,s=Function.prototype,u=Object.prototype,c=s.toString,f=u.hasOwnProperty,d=RegExp("^"+c.call(f).replace(/[\\^$.*+?()[\]{}|]/g,"\\$&").replace(/hasOwnProperty|(function).*?(?=\\\()| for .+?(?=\\\])/g,"$1.*?")+"$");e.exports=function(e){return!(!a(e)||o(e))&&(r(e)?d:l).test(i(e))}},449:(e,t,n)=>{var r=n(6924),o=n(2761);e.exports=function(e){return o(e)&&"[object Set]"==r(e)}},5428:(e,t,n)=>{var r=n(6913),o=n(6173),a=n(2761),i={};i["[object Float32Array]"]=i["[object Float64Array]"]=i["[object Int8Array]"]=i["[object Int16Array]"]=i["[object Int32Array]"]=i["[object Uint8Array]"]=i["[object Uint8ClampedArray]"]=i["[object Uint16Array]"]=i["[object Uint32Array]"]=!0,i["[object Arguments]"]=i["[object Array]"]=i["[object ArrayBuffer]"]=i["[object Boolean]"]=i["[object DataView]"]=i["[object Date]"]=i["[object Error]"]=i["[object Function]"]=i["[object Map]"]=i["[object Number]"]=i["[object Object]"]=i["[object RegExp]"]=i["[object Set]"]=i["[object String]"]=i["[object WeakMap]"]=!1,e.exports=function(e){return a(e)&&o(e.length)&&!!i[r(e)]}},9096:(e,t,n)=>{var r=n(9256),o=n(5029),a=n(3279),i=n(4052),l=n(3932);e.exports=function(e){return"function"==typeof e?e:null==e?a:"object"==typeof e?i(e)?o(e[0],e[1]):r(e):l(e)}},3713:(e,t,n)=>{var r=n(6140),o=n(1143),a=Object.prototype.hasOwnProperty;e.exports=function(e){if(!r(e))return o(e);var t=[];for(var n in Object(e))a.call(e,n)&&"constructor"!=n&&t.push(n);return t}},8122:(e,t,n)=>{var r=n(6686),o=n(6140),a=n(3516),i=Object.prototype.hasOwnProperty;e.exports=function(e){if(!r(e))return a(e);var t=o(e),n=[];for(var l in e)("constructor"!=l||!t&&i.call(e,l))&&n.push(l);return n}},8883:(e,t,n)=>{var r=n(5652),o=n(6571);e.exports=function(e,t){var n=-1,a=o(e)?Array(e.length):[];return r(e,(function(e,r,o){a[++n]=t(e,r,o)})),a}},9256:(e,t,n)=>{var r=n(6532),o=n(3781),a=n(1310);e.exports=function(e){var t=o(e);return 1==t.length&&t[0][2]?a(t[0][0],t[0][1]):function(n){return n===e||r(n,e,t)}}},5029:(e,t,n)=>{var r=n(6989),o=n(3097),a=n(3366),i=n(2597),l=n(9417),s=n(1310),u=n(914);e.exports=function(e,t){return i(e)&&l(t)?s(u(e),t):function(n){var i=o(n,e);return void 0===i&&i===t?a(n,e):r(t,i,3)}}},396:e=>{e.exports=function(e){return function(t){return null==t?void 0:t[e]}}},2866:(e,t,n)=>{var r=n(2969);e.exports=function(e){return function(t){return r(t,e)}}},3343:e=>{e.exports=function(e,t){for(var n=-1,r=Array(e);++n{var r=n(9812),o=n(149),a=n(4052),i=n(9841),l=r?r.prototype:void 0,s=l?l.toString:void 0;e.exports=function e(t){if("string"==typeof t)return t;if(a(t))return o(t,e)+"";if(i(t))return s?s.call(t):"";var n=t+"";return"0"==n&&1/t==-1/0?"-0":n}},7574:e=>{e.exports=function(e){return function(t){return e(t)}}},8114:e=>{e.exports=function(e,t){return e.has(t)}},5111:(e,t,n)=>{var r=n(3279);e.exports=function(e){return"function"==typeof e?e:r}},5324:(e,t,n)=>{var r=n(4052),o=n(2597),a=n(4079),i=n(1069);e.exports=function(e,t){return r(e)?e:o(e,t)?[e]:a(i(e))}},1516:(e,t,n)=>{var r=n(2929);e.exports=function(e){var t=new e.constructor(e.byteLength);return new r(t).set(new r(e)),t}},4353:(e,t,n)=>{e=n.nmd(e);var r=n(6552),o=t&&!t.nodeType&&t,a=o&&e&&!e.nodeType&&e,i=a&&a.exports===o?r.Buffer:void 0,l=i?i.allocUnsafe:void 0;e.exports=function(e,t){if(t)return e.slice();var n=e.length,r=l?l(n):new e.constructor(n);return e.copy(r),r}},6806:(e,t,n)=>{var r=n(1516);e.exports=function(e,t){var n=t?r(e.buffer):e.buffer;return new e.constructor(n,e.byteOffset,e.byteLength)}},8962:e=>{var t=/\w*$/;e.exports=function(e){var n=new e.constructor(e.source,t.exec(e));return n.lastIndex=e.lastIndex,n}},1295:(e,t,n)=>{var r=n(9812),o=r?r.prototype:void 0,a=o?o.valueOf:void 0;e.exports=function(e){return a?Object(a.call(e)):{}}},8710:(e,t,n)=>{var r=n(1516);e.exports=function(e,t){var n=t?r(e.buffer):e.buffer;return new e.constructor(n,e.byteOffset,e.length)}},1980:e=>{e.exports=function(e,t){var n=-1,r=e.length;for(t||(t=Array(r));++n{var r=n(8420),o=n(1775);e.exports=function(e,t,n,a){var i=!n;n||(n={});for(var l=-1,s=t.length;++l{var r=n(6614),o=n(9621);e.exports=function(e,t){return r(e,o(e),t)}},9075:(e,t,n)=>{var r=n(6614),o=n(6326);e.exports=function(e,t){return r(e,o(e),t)}},3440:(e,t,n)=>{var r=n(6552)["__core-js_shared__"];e.exports=r},6516:(e,t,n)=>{var r=n(6571);e.exports=function(e,t){return function(n,o){if(null==n)return n;if(!r(n))return e(n,o);for(var a=n.length,i=t?a:-1,l=Object(n);(t?i--:++i{e.exports=function(e){return function(t,n,r){for(var o=-1,a=Object(t),i=r(t),l=i.length;l--;){var s=i[e?l:++o];if(!1===n(a[s],s,a))break}return t}}},5654:(e,t,n)=>{var r=n(7937),o=function(){try{var e=r(Object,"defineProperty");return e({},"",{}),e}catch(t){}}();e.exports=o},3668:(e,t,n)=>{var r=n(8902),o=n(2587),a=n(8114);e.exports=function(e,t,n,i,l,s){var u=1&n,c=e.length,f=t.length;if(c!=f&&!(u&&f>c))return!1;var d=s.get(e),p=s.get(t);if(d&&p)return d==t&&p==e;var h=-1,g=!0,m=2&n?new r:void 0;for(s.set(e,t),s.set(t,e);++h{var r=n(9812),o=n(2929),a=n(3211),i=n(3668),l=n(4160),s=n(2074),u=r?r.prototype:void 0,c=u?u.valueOf:void 0;e.exports=function(e,t,n,r,u,f,d){switch(n){case"[object DataView]":if(e.byteLength!=t.byteLength||e.byteOffset!=t.byteOffset)return!1;e=e.buffer,t=t.buffer;case"[object ArrayBuffer]":return!(e.byteLength!=t.byteLength||!f(new o(e),new o(t)));case"[object Boolean]":case"[object Date]":case"[object Number]":return a(+e,+t);case"[object Error]":return e.name==t.name&&e.message==t.message;case"[object RegExp]":case"[object String]":return e==t+"";case"[object Map]":var p=l;case"[object Set]":var h=1&r;if(p||(p=s),e.size!=t.size&&!h)return!1;var g=d.get(e);if(g)return g==t;r|=2,d.set(e,t);var m=i(p(e),p(t),r,u,f,d);return d.delete(e),m;case"[object Symbol]":if(c)return c.call(e)==c.call(t)}return!1}},5752:(e,t,n)=>{var r=n(9395),o=Object.prototype.hasOwnProperty;e.exports=function(e,t,n,a,i,l){var s=1&n,u=r(e),c=u.length;if(c!=r(t).length&&!s)return!1;for(var f=c;f--;){var d=u[f];if(!(s?d in t:o.call(t,d)))return!1}var p=l.get(e),h=l.get(t);if(p&&h)return p==t&&h==e;var g=!0;l.set(e,t),l.set(t,e);for(var m=s;++f{var r="object"==typeof n.g&&n.g&&n.g.Object===Object&&n.g;e.exports=r},9395:(e,t,n)=>{var r=n(4262),o=n(9621),a=n(8673);e.exports=function(e){return r(e,a,o)}},8592:(e,t,n)=>{var r=n(4262),o=n(6326),a=n(474);e.exports=function(e){return r(e,a,o)}},2622:(e,t,n)=>{var r=n(705);e.exports=function(e,t){var n=e.__data__;return r(t)?n["string"==typeof t?"string":"hash"]:n.map}},3781:(e,t,n)=>{var r=n(9417),o=n(8673);e.exports=function(e){for(var t=o(e),n=t.length;n--;){var a=t[n],i=e[a];t[n]=[a,i,r(i)]}return t}},7937:(e,t,n)=>{var r=n(6954),o=n(4657);e.exports=function(e,t){var n=o(e,t);return r(n)?n:void 0}},5990:(e,t,n)=>{var r=n(3028)(Object.getPrototypeOf,Object);e.exports=r},4552:(e,t,n)=>{var r=n(9812),o=Object.prototype,a=o.hasOwnProperty,i=o.toString,l=r?r.toStringTag:void 0;e.exports=function(e){var t=a.call(e,l),n=e[l];try{e[l]=void 0;var r=!0}catch(s){}var o=i.call(e);return r&&(t?e[l]=n:delete e[l]),o}},9621:(e,t,n)=>{var r=n(7529),o=n(7828),a=Object.prototype.propertyIsEnumerable,i=Object.getOwnPropertySymbols,l=i?function(e){return null==e?[]:(e=Object(e),r(i(e),(function(t){return a.call(e,t)})))}:o;e.exports=l},6326:(e,t,n)=>{var r=n(8895),o=n(5990),a=n(9621),i=n(7828),l=Object.getOwnPropertySymbols?function(e){for(var t=[];e;)r(t,a(e)),e=o(e);return t}:i;e.exports=l},6924:(e,t,n)=>{var r=n(7685),o=n(5204),a=n(7768),i=n(2070),l=n(6600),s=n(6913),u=n(6996),c="[object Map]",f="[object Promise]",d="[object Set]",p="[object WeakMap]",h="[object DataView]",g=u(r),m=u(o),b=u(a),v=u(i),y=u(l),x=s;(r&&x(new r(new ArrayBuffer(1)))!=h||o&&x(new o)!=c||a&&x(a.resolve())!=f||i&&x(new i)!=d||l&&x(new l)!=p)&&(x=function(e){var t=s(e),n="[object Object]"==t?e.constructor:void 0,r=n?u(n):"";if(r)switch(r){case g:return h;case m:return c;case b:return f;case v:return d;case y:return p}return t}),e.exports=x},4657:e=>{e.exports=function(e,t){return null==e?void 0:e[t]}},9057:(e,t,n)=>{var r=n(5324),o=n(2777),a=n(4052),i=n(9194),l=n(6173),s=n(914);e.exports=function(e,t,n){for(var u=-1,c=(t=r(t,e)).length,f=!1;++u{var r=n(5575);e.exports=function(){this.__data__=r?r(null):{},this.size=0}},5051:e=>{e.exports=function(e){var t=this.has(e)&&delete this.__data__[e];return this.size-=t?1:0,t}},2154:(e,t,n)=>{var r=n(5575),o=Object.prototype.hasOwnProperty;e.exports=function(e){var t=this.__data__;if(r){var n=t[e];return"__lodash_hash_undefined__"===n?void 0:n}return o.call(t,e)?t[e]:void 0}},8734:(e,t,n)=>{var r=n(5575),o=Object.prototype.hasOwnProperty;e.exports=function(e){var t=this.__data__;return r?void 0!==t[e]:o.call(t,e)}},2662:(e,t,n)=>{var r=n(5575);e.exports=function(e,t){var n=this.__data__;return this.size+=this.has(e)?0:1,n[e]=r&&void 0===t?"__lodash_hash_undefined__":t,this}},8268:e=>{var t=Object.prototype.hasOwnProperty;e.exports=function(e){var n=e.length,r=new e.constructor(n);return n&&"string"==typeof e[0]&&t.call(e,"index")&&(r.index=e.index,r.input=e.input),r}},8630:(e,t,n)=>{var r=n(1516),o=n(6806),a=n(8962),i=n(1295),l=n(8710);e.exports=function(e,t,n){var s=e.constructor;switch(t){case"[object ArrayBuffer]":return r(e);case"[object Boolean]":case"[object Date]":return new s(+e);case"[object DataView]":return o(e,n);case"[object Float32Array]":case"[object Float64Array]":case"[object Int8Array]":case"[object Int16Array]":case"[object Int32Array]":case"[object Uint8Array]":case"[object Uint8ClampedArray]":case"[object Uint16Array]":case"[object Uint32Array]":return l(e,n);case"[object Map]":case"[object Set]":return new s;case"[object Number]":case"[object String]":return new s(e);case"[object RegExp]":return a(e);case"[object Symbol]":return i(e)}}},310:(e,t,n)=>{var r=n(1817),o=n(5990),a=n(6140);e.exports=function(e){return"function"!=typeof e.constructor||a(e)?{}:r(o(e))}},9194:e=>{var t=/^(?:0|[1-9]\d*)$/;e.exports=function(e,n){var r=typeof e;return!!(n=null==n?9007199254740991:n)&&("number"==r||"symbol"!=r&&t.test(e))&&e>-1&&e%1==0&&e{var r=n(4052),o=n(9841),a=/\.|\[(?:[^[\]]*|(["'])(?:(?!\1)[^\\]|\\.)*?\1)\]/,i=/^\w*$/;e.exports=function(e,t){if(r(e))return!1;var n=typeof e;return!("number"!=n&&"symbol"!=n&&"boolean"!=n&&null!=e&&!o(e))||(i.test(e)||!a.test(e)||null!=t&&e in Object(t))}},705:e=>{e.exports=function(e){var t=typeof e;return"string"==t||"number"==t||"symbol"==t||"boolean"==t?"__proto__"!==e:null===e}},7857:(e,t,n)=>{var r=n(3440),o=function(){var e=/[^.]+$/.exec(r&&r.keys&&r.keys.IE_PROTO||"");return e?"Symbol(src)_1."+e:""}();e.exports=function(e){return!!o&&o in e}},6140:e=>{var t=Object.prototype;e.exports=function(e){var n=e&&e.constructor;return e===("function"==typeof n&&n.prototype||t)}},9417:(e,t,n)=>{var r=n(6686);e.exports=function(e){return e===e&&!r(e)}},7563:e=>{e.exports=function(){this.__data__=[],this.size=0}},9935:(e,t,n)=>{var r=n(1340),o=Array.prototype.splice;e.exports=function(e){var t=this.__data__,n=r(t,e);return!(n<0)&&(n==t.length-1?t.pop():o.call(t,n,1),--this.size,!0)}},4190:(e,t,n)=>{var r=n(1340);e.exports=function(e){var t=this.__data__,n=r(t,e);return n<0?void 0:t[n][1]}},1946:(e,t,n)=>{var r=n(1340);e.exports=function(e){return r(this.__data__,e)>-1}},1714:(e,t,n)=>{var r=n(1340);e.exports=function(e,t){var n=this.__data__,o=r(n,e);return o<0?(++this.size,n.push([e,t])):n[o][1]=t,this}},7251:(e,t,n)=>{var r=n(8724),o=n(7160),a=n(5204);e.exports=function(){this.size=0,this.__data__={hash:new r,map:new(a||o),string:new r}}},7159:(e,t,n)=>{var r=n(2622);e.exports=function(e){var t=r(this,e).delete(e);return this.size-=t?1:0,t}},438:(e,t,n)=>{var r=n(2622);e.exports=function(e){return r(this,e).get(e)}},9394:(e,t,n)=>{var r=n(2622);e.exports=function(e){return r(this,e).has(e)}},6874:(e,t,n)=>{var r=n(2622);e.exports=function(e,t){var n=r(this,e),o=n.size;return n.set(e,t),this.size+=n.size==o?0:1,this}},4160:e=>{e.exports=function(e){var t=-1,n=Array(e.size);return e.forEach((function(e,r){n[++t]=[r,e]})),n}},1310:e=>{e.exports=function(e,t){return function(n){return null!=n&&(n[e]===t&&(void 0!==t||e in Object(n)))}}},8259:(e,t,n)=>{var r=n(5797);e.exports=function(e){var t=r(e,(function(e){return 500===n.size&&n.clear(),e})),n=t.cache;return t}},5575:(e,t,n)=>{var r=n(7937)(Object,"create");e.exports=r},1143:(e,t,n)=>{var r=n(3028)(Object.keys,Object);e.exports=r},3516:e=>{e.exports=function(e){var t=[];if(null!=e)for(var n in Object(e))t.push(n);return t}},6832:(e,t,n)=>{e=n.nmd(e);var r=n(7105),o=t&&!t.nodeType&&t,a=o&&e&&!e.nodeType&&e,i=a&&a.exports===o&&r.process,l=function(){try{var e=a&&a.require&&a.require("util").types;return e||i&&i.binding&&i.binding("util")}catch(t){}}();e.exports=l},6095:e=>{var t=Object.prototype.toString;e.exports=function(e){return t.call(e)}},3028:e=>{e.exports=function(e,t){return function(n){return e(t(n))}}},6552:(e,t,n)=>{var r=n(7105),o="object"==typeof self&&self&&self.Object===Object&&self,a=r||o||Function("return this")();e.exports=a},6179:e=>{e.exports=function(e){return this.__data__.set(e,"__lodash_hash_undefined__"),this}},6704:e=>{e.exports=function(e){return this.__data__.has(e)}},2074:e=>{e.exports=function(e){var t=-1,n=Array(e.size);return e.forEach((function(e){n[++t]=e})),n}},4545:(e,t,n)=>{var r=n(7160);e.exports=function(){this.__data__=new r,this.size=0}},793:e=>{e.exports=function(e){var t=this.__data__,n=t.delete(e);return this.size=t.size,n}},7760:e=>{e.exports=function(e){return this.__data__.get(e)}},3892:e=>{e.exports=function(e){return this.__data__.has(e)}},6788:(e,t,n)=>{var r=n(7160),o=n(5204),a=n(4816);e.exports=function(e,t){var n=this.__data__;if(n instanceof r){var i=n.__data__;if(!o||i.length<199)return i.push([e,t]),this.size=++n.size,this;n=this.__data__=new a(i)}return n.set(e,t),this.size=n.size,this}},4079:(e,t,n)=>{var r=n(8259),o=/[^.[\]]+|\[(?:(-?\d+(?:\.\d+)?)|(["'])((?:(?!\2)[^\\]|\\.)*?)\2)\]|(?=(?:\.|\[\])(?:\.|\[\]|$))/g,a=/\\(\\)?/g,i=r((function(e){var t=[];return 46===e.charCodeAt(0)&&t.push(""),e.replace(o,(function(e,n,r,o){t.push(r?o.replace(a,"$1"):n||e)})),t}));e.exports=i},914:(e,t,n)=>{var r=n(9841);e.exports=function(e){if("string"==typeof e||r(e))return e;var t=e+"";return"0"==t&&1/e==-1/0?"-0":t}},6996:e=>{var t=Function.prototype.toString;e.exports=function(e){if(null!=e){try{return t.call(e)}catch(n){}try{return e+""}catch(n){}}return""}},6434:(e,t,n)=>{var r=n(7132);e.exports=function(e){return r(e,5)}},3211:e=>{e.exports=function(e,t){return e===t||e!==e&&t!==t}},840:(e,t,n)=>{var r=n(4664),o=n(5111);e.exports=function(e,t){return e&&r(e,o(t))}},3097:(e,t,n)=>{var r=n(2969);e.exports=function(e,t,n){var o=null==e?void 0:r(e,t);return void 0===o?n:o}},3366:(e,t,n)=>{var r=n(7894),o=n(9057);e.exports=function(e,t){return null!=e&&o(e,t,r)}},3279:e=>{e.exports=function(e){return e}},2777:(e,t,n)=>{var r=n(5193),o=n(2761),a=Object.prototype,i=a.hasOwnProperty,l=a.propertyIsEnumerable,s=r(function(){return arguments}())?r:function(e){return o(e)&&i.call(e,"callee")&&!l.call(e,"callee")};e.exports=s},4052:e=>{var t=Array.isArray;e.exports=t},6571:(e,t,n)=>{var r=n(1629),o=n(6173);e.exports=function(e){return null!=e&&o(e.length)&&!r(e)}},4543:(e,t,n)=>{e=n.nmd(e);var r=n(6552),o=n(14),a=t&&!t.nodeType&&t,i=a&&e&&!e.nodeType&&e,l=i&&i.exports===a?r.Buffer:void 0,s=(l?l.isBuffer:void 0)||o;e.exports=s},1629:(e,t,n)=>{var r=n(6913),o=n(6686);e.exports=function(e){if(!o(e))return!1;var t=r(e);return"[object Function]"==t||"[object GeneratorFunction]"==t||"[object AsyncFunction]"==t||"[object Proxy]"==t}},6173:e=>{e.exports=function(e){return"number"==typeof e&&e>-1&&e%1==0&&e<=9007199254740991}},7887:(e,t,n)=>{var r=n(5791),o=n(7574),a=n(6832),i=a&&a.isMap,l=i?o(i):r;e.exports=l},6686:e=>{e.exports=function(e){var t=typeof e;return null!=e&&("object"==t||"function"==t)}},2761:e=>{e.exports=function(e){return null!=e&&"object"==typeof e}},2322:(e,t,n)=>{var r=n(6913),o=n(5990),a=n(2761),i=Function.prototype,l=Object.prototype,s=i.toString,u=l.hasOwnProperty,c=s.call(Object);e.exports=function(e){if(!a(e)||"[object Object]"!=r(e))return!1;var t=o(e);if(null===t)return!0;var n=u.call(t,"constructor")&&t.constructor;return"function"==typeof n&&n instanceof n&&s.call(n)==c}},5921:(e,t,n)=>{var r=n(449),o=n(7574),a=n(6832),i=a&&a.isSet,l=i?o(i):r;e.exports=l},620:(e,t,n)=>{var r=n(6913),o=n(4052),a=n(2761);e.exports=function(e){return"string"==typeof e||!o(e)&&a(e)&&"[object String]"==r(e)}},9841:(e,t,n)=>{var r=n(6913),o=n(2761);e.exports=function(e){return"symbol"==typeof e||o(e)&&"[object Symbol]"==r(e)}},1268:(e,t,n)=>{var r=n(5428),o=n(7574),a=n(6832),i=a&&a.isTypedArray,l=i?o(i):r;e.exports=l},8673:(e,t,n)=>{var r=n(3204),o=n(3713),a=n(6571);e.exports=function(e){return a(e)?r(e):o(e)}},474:(e,t,n)=>{var r=n(3204),o=n(8122),a=n(6571);e.exports=function(e){return a(e)?r(e,!0):o(e)}},3411:(e,t,n)=>{var r=n(149),o=n(9096),a=n(8883),i=n(4052);e.exports=function(e,t){return(i(e)?r:a)(e,o(t,3))}},5797:(e,t,n)=>{var r=n(4816);function o(e,t){if("function"!=typeof e||null!=t&&"function"!=typeof t)throw new TypeError("Expected a function");var n=function(){var r=arguments,o=t?t.apply(this,r):r[0],a=n.cache;if(a.has(o))return a.get(o);var i=e.apply(this,r);return n.cache=a.set(o,i)||a,i};return n.cache=new(o.Cache||r),n}o.Cache=r,e.exports=o},3932:(e,t,n)=>{var r=n(396),o=n(2866),a=n(2597),i=n(914);e.exports=function(e){return a(e)?r(i(e)):o(e)}},7828:e=>{e.exports=function(){return[]}},14:e=>{e.exports=function(){return!1}},1069:(e,t,n)=>{var r=n(8541);e.exports=function(e){return null==e?"":r(e)}},1497:(e,t,n)=>{"use strict";var r=n(3218);function o(){}function a(){}a.resetWarningCache=o,e.exports=function(){function e(e,t,n,o,a,i){if(i!==r){var l=new Error("Calling PropTypes validators directly is not supported by the `prop-types` package. Use PropTypes.checkPropTypes() to call them. Read more at http://fb.me/use-check-prop-types");throw l.name="Invariant Violation",l}}function t(){return e}e.isRequired=e;var n={array:e,bigint:e,bool:e,func:e,number:e,object:e,string:e,symbol:e,any:e,arrayOf:t,element:e,elementType:e,instanceOf:t,node:e,objectOf:t,oneOf:t,oneOfType:t,shape:t,exact:t,checkPropTypes:a,resetWarningCache:o};return n.PropTypes=n,n}},5173:(e,t,n)=>{e.exports=n(1497)()},3218:e=>{"use strict";e.exports="SECRET_DO_NOT_PASS_THIS_OR_YOU_WILL_BE_FIRED"},2730:(e,t,n)=>{"use strict";var r=n(5043),o=n(8853);function a(e){for(var t="https://reactjs.org/docs/error-decoder.html?invariant="+e,n=1;n