codeant-ai-for-open-source[bot] commented on code in PR #37141:
URL: https://github.com/apache/superset/pull/37141#discussion_r2824293696


##########
superset-frontend/src/components/ListView/ListView.tsx:
##########
@@ -373,24 +423,40 @@ export function ListView<T extends object = any>({
       )}
       <div data-test={className} className={`superset-list-view ${className} 
`}>
         <div className="header">
-          {cardViewEnabled && (
+          {cardViewEnabled && !forceViewMode && (
             <ViewModeToggle mode={viewMode} setMode={setViewMode} />
           )}
           <div className="controls" data-test="filters-select">
-            {filterable && (
+            {/* On mobile, filters are shown in drawer; on desktop, show 
inline */}
+            {filterable && !setMobileFiltersOpen && (
               <FilterControls
                 ref={filterControlsRef}
                 filters={filters}
                 internalFilters={internalFilters}
                 updateFilterValue={applyFilterValue}
               />
             )}
+            {filterable && setMobileFiltersOpen && (
+              <>
+                {/* Desktop: show inline filters */}
+                <div className="desktop-filters">
+                  <FilterControls
+                    ref={filterControlsRef}
+                    filters={filters}
+                    internalFilters={internalFilters}
+                    updateFilterValue={applyFilterValue}
+                  />
+                </div>
+              </>
+            )}
             {viewMode === 'card' && cardSortSelectOptions && (
-              <CardSortSelect
-                initialSort={sortBy}
-                onChange={(value: SortColumn[]) => setSortBy(value)}
-                options={cardSortSelectOptions}
-              />
+              <div className="desktop-sort">

Review Comment:
   **Suggestion:** The card-view sort dropdown is now always wrapped in a 
`.desktop-sort` container, and the CSS hides `.desktop-sort` on mobile 
viewports for all ListView instances; this unintentionally removes card sorting 
on mobile even for ListViews that do not use the mobile filter drawer, 
regressing existing mobile behavior and contradicting the comment that this 
should only apply when the mobile drawer is used. [logic error]
   
   <details>
   <summary><b>Severity Level:</b> Major ⚠️</summary>
   
   ```mdx
   - ⚠️ ListView-based card lists can lose mobile sort controls.
   - ⚠️ Affects any future ListView usage without mobile drawer.
   - ⚠️ CSS comment contradicts behavior, increasing maintenance risk.
   ```
   </details>
   
   ```suggestion
                 <div className={setMobileFiltersOpen ? 'desktop-sort' : 
undefined}>
   ```
   <details>
   <summary><b>Steps of Reproduction ✅ </b></summary>
   
   ```mdx
   1. Open the generic ListView component defined in
   `superset-frontend/src/components/ListView/ListView.tsx:313-372` and note 
the card sort
   markup at lines 452-459: `{viewMode === 'card' && cardSortSelectOptions && 
(<div
   className="desktop-sort">...<CardSortSelect />...</div>)}`.
   
   2. Note the ListView layout styles at
   `superset-frontend/src/components/ListView/ListView.tsx:48-76`, where the 
`@media
   (max-width: 767px)` rule unconditionally sets `.desktop-filters` and 
`.desktop-sort` to
   `display: none` for all ListView instances on small viewports.
   
   3. Configure any ListView usage (e.g., a new list page using the exported 
`ListView` from
   `src/components`) with `renderCard` and `cardSortSelectOptions` props, but 
without passing
   `mobileFiltersOpen`/`setMobileFiltersOpen` (so the mobile filter drawer is 
not used and
   only the inline header controls are expected).
   
   4. View that page on a mobile-width viewport (< 768px): the 
`<CardSortSelect>` is still
   rendered but wrapped in `div.desktop-sort` which is hidden by the media 
query, and because
   the mobile drawer is not wired in this configuration, there is no 
alternative sort UI, so
   users cannot change card sort order on mobile.
   ```
   </details>
   <details>
   <summary><b>Prompt for AI Agent 🤖 </b></summary>
   
   ```mdx
   This is a comment left during a code review.
   
   **Path:** superset-frontend/src/components/ListView/ListView.tsx
   **Line:** 453:453
   **Comment:**
        *Logic Error: The card-view sort dropdown is now always wrapped in a 
`.desktop-sort` container, and the CSS hides `.desktop-sort` on mobile 
viewports for all ListView instances; this unintentionally removes card sorting 
on mobile even for ListViews that do not use the mobile filter drawer, 
regressing existing mobile behavior and contradicting the comment that this 
should only apply when the mobile drawer is used.
   
   Validate the correctness of the flagged issue. If correct, How can I resolve 
this? If you propose a fix, implement it and please make it concise.
   ```
   </details>
   <a 
href='https://app.codeant.ai/feedback?pr_url=https%3A%2F%2Fgithub.com%2Fapache%2Fsuperset%2Fpull%2F37141&comment_hash=539aaefd5c4855b7ac817527b57741cea967a9da8840775e977eea38ea69dffc&reaction=like'>👍</a>
 | <a 
href='https://app.codeant.ai/feedback?pr_url=https%3A%2F%2Fgithub.com%2Fapache%2Fsuperset%2Fpull%2F37141&comment_hash=539aaefd5c4855b7ac817527b57741cea967a9da8840775e977eea38ea69dffc&reaction=dislike'>👎</a>



##########
superset-frontend/src/features/home/SubMenu.test.tsx:
##########
@@ -127,3 +127,35 @@ test('should render the buttons', async () => {
   userEvent.click(testButton);
   expect(mockFunc).toHaveBeenCalled();
 });
+
+// Mobile support tests
+test('should render leftIcon when provided', async () => {
+  setup({
+    leftIcon: (
+      <button type="button" data-test="left-icon-button">
+        Search
+      </button>
+    ),
+  });
+  expect(await screen.findByTestId('left-icon-button')).toBeInTheDocument();
+});
+
+test('should render rightIcon when provided', async () => {
+  setup({
+    rightIcon: (
+      <button type="button" data-test="right-icon-button">
+        Menu
+      </button>
+    ),
+  });
+  expect(await screen.findByTestId('right-icon-button')).toBeInTheDocument();
+});
+
+test('should render both leftIcon and rightIcon together', async () => {
+  setup({
+    leftIcon: <span data-test="mobile-left">Left</span>,
+    rightIcon: <span data-test="mobile-right">Right</span>,

Review Comment:
   **Suggestion:** The new mobile support tests use the `data-test` attribute 
but query elements with `findByTestId`, which looks for `data-testid`, so the 
tests will always fail to find the elements and should use `data-testid` 
instead. [logic error]
   
   <details>
   <summary><b>Severity Level:</b> Major ⚠️</summary>
   
   ```mdx
   - ❌ SubMenu mobile icon tests always fail in test runs.
   - ⚠️ CI for frontend changes may be blocked by failing tests.
   - ⚠️ Reduces confidence in new mobile SubMenu behavior.
   ```
   </details>
   
   ```suggestion
         <button type="button" data-testid="left-icon-button">
           Search
         </button>
       ),
     });
     expect(await screen.findByTestId('left-icon-button')).toBeInTheDocument();
   });
   
   test('should render rightIcon when provided', async () => {
     setup({
       rightIcon: (
         <button type="button" data-testid="right-icon-button">
           Menu
         </button>
       ),
     });
     expect(await screen.findByTestId('right-icon-button')).toBeInTheDocument();
   });
   
   test('should render both leftIcon and rightIcon together', async () => {
     setup({
       leftIcon: <span data-testid="mobile-left">Left</span>,
       rightIcon: <span data-testid="mobile-right">Right</span>,
   ```
   <details>
   <summary><b>Steps of Reproduction ✅ </b></summary>
   
   ```mdx
   1. Open `superset-frontend/src/features/home/SubMenu.test.tsx` and observe 
that the newly
   added mobile tests (lines 131-161) render elements using `data-test="..."` 
attributes but
   query them using `screen.findByTestId(...)`, which looks for `data-testid` 
attributes.
   
   2. From the `superset-frontend` project, run the Jest test suite including
   `SubMenu.test.tsx` (e.g., via the frontend test runner that executes this 
file).
   
   3. When the test `should render leftIcon when provided` runs, React Testing 
Library
   searches for an element with `data-testid="left-icon-button"` but the 
rendered button only
   has `data-test="left-icon-button"`, so `findByTestId` rejects and the test 
fails with an
   element not found error.
   
   4. The same mismatch occurs for `should render rightIcon when provided` and 
`should render
   both leftIcon and rightIcon together`, causing all three mobile support 
tests in
   `SubMenu.test.tsx` to fail consistently until the attributes are corrected to
   `data-testid`.
   ```
   </details>
   <details>
   <summary><b>Prompt for AI Agent 🤖 </b></summary>
   
   ```mdx
   This is a comment left during a code review.
   
   **Path:** superset-frontend/src/features/home/SubMenu.test.tsx
   **Line:** 135:157
   **Comment:**
        *Logic Error: The new mobile support tests use the `data-test` 
attribute but query elements with `findByTestId`, which looks for 
`data-testid`, so the tests will always fail to find the elements and should 
use `data-testid` instead.
   
   Validate the correctness of the flagged issue. If correct, How can I resolve 
this? If you propose a fix, implement it and please make it concise.
   ```
   </details>
   <a 
href='https://app.codeant.ai/feedback?pr_url=https%3A%2F%2Fgithub.com%2Fapache%2Fsuperset%2Fpull%2F37141&comment_hash=d658062c82dea5a0a27b94293a2e0f0fc0e467edd23cc15964bb00a9a4cd148a&reaction=like'>👍</a>
 | <a 
href='https://app.codeant.ai/feedback?pr_url=https%3A%2F%2Fgithub.com%2Fapache%2Fsuperset%2Fpull%2F37141&comment_hash=d658062c82dea5a0a27b94293a2e0f0fc0e467edd23cc15964bb00a9a4cd148a&reaction=dislike'>👎</a>



##########
superset-frontend/src/dashboard/components/DashboardBuilder/DashboardBuilder.tsx:
##########
@@ -506,7 +516,15 @@ const DashboardBuilder = () => {
   const renderDraggableContent = useCallback(
     ({ dropIndicatorProps }: { dropIndicatorProps: JsonObject }) => (
       <div>
-        {!hideDashboardHeader && <DashboardHeader />}
+        {!hideDashboardHeader && (
+          <DashboardHeader
+            onOpenMobileFilters={
+              !isNotMobile && nativeFiltersEnabled && hasFilters

Review Comment:
   **Suggestion:** The mobile filters drawer is only made accessible from the 
header when there are native filters (`hasFilters`), but `nativeFiltersEnabled` 
can also be true when there are only chart customizations and no native 
filters; in that case the drawer is rendered but cannot be opened, making those 
customizations unreachable on mobile. Remove the `hasFilters` guard so the 
mobile filter trigger appears whenever filters/customizations are enabled. 
[logic error]
   
   <details>
   <summary><b>Severity Level:</b> Major ⚠️</summary>
   
   ```mdx
   - ⚠️ Mobile dashboards with only customizations lack filter drawer trigger.
   - ⚠️ Chart customization controls inaccessible on mobile without native 
filters.
   ```
   </details>
   
   ```suggestion
                 !isNotMobile && nativeFiltersEnabled
   ```
   <details>
   <summary><b>Steps of Reproduction ✅ </b></summary>
   
   ```mdx
   1. Open any dashboard in the Superset UI so that `DashboardPage.tsx` 
(referenced by Grep
   at `superset-frontend/src/dashboard/containers/DashboardPage.tsx`) renders
   `DashboardBuilder`
   
(`superset-frontend/src/dashboard/components/DashboardBuilder/DashboardBuilder.tsx:363`).
   
   2. Configure the dashboard so it has no native filters but does have chart 
customizations
   stored in Redux, causing `filterValues.length === 0` and 
`chartCustomizations.length > 0`
   in `useNativeFilters`
   
(`superset-frontend/src/dashboard/components/DashboardBuilder/state.ts:47-56`), 
which sets
   `nativeFiltersEnabled` to true and `hasFilters` to false while returning both
   (`state.ts:118-125`).
   
   3. View this dashboard on a mobile-sized viewport (width < the `md` 
breakpoint) so that
   `Grid.useBreakpoint()` in `DashboardBuilder` (`DashboardBuilder.tsx:367`) 
yields
   `isNotMobile === false`. In this state, the mobile filters `Drawer` is still 
rendered
   because the condition `!isNotMobile && nativeFiltersEnabled` is true
   (`DashboardBuilder.tsx:736-738`), but its `open` prop is controlled by
   `mobileFiltersOpen`, initially false (`DashboardBuilder.tsx:368, 742`).
   
   4. Observe the header rendering in `renderDraggableContent`
   (`DashboardBuilder.tsx:516-527`): because `hasFilters` is false, the ternary 
`!isNotMobile
   && nativeFiltersEnabled && hasFilters ? () => setMobileFiltersOpen(true) : 
undefined`
   passes `undefined` to `DashboardHeader.onOpenMobileFilters`, so 
`DashboardHeader`
   (imported from `src/dashboard/components/Header`) has no mobile filter 
trigger wired. As a
   result, on mobile there is no way to call `setMobileFiltersOpen(true)`, the 
Drawer never
   opens, and the `FilterBar` rendered inside the Drawer
   (`DashboardBuilder.tsx:806-816`)—including chart customizations exposed 
through that
   UI—remains unreachable for dashboards that only have chart customizations.
   ```
   </details>
   <details>
   <summary><b>Prompt for AI Agent 🤖 </b></summary>
   
   ```mdx
   This is a comment left during a code review.
   
   **Path:** 
superset-frontend/src/dashboard/components/DashboardBuilder/DashboardBuilder.tsx
   **Line:** 522:522
   **Comment:**
        *Logic Error: The mobile filters drawer is only made accessible from 
the header when there are native filters (`hasFilters`), but 
`nativeFiltersEnabled` can also be true when there are only chart 
customizations and no native filters; in that case the drawer is rendered but 
cannot be opened, making those customizations unreachable on mobile. Remove the 
`hasFilters` guard so the mobile filter trigger appears whenever 
filters/customizations are enabled.
   
   Validate the correctness of the flagged issue. If correct, How can I resolve 
this? If you propose a fix, implement it and please make it concise.
   ```
   </details>
   <a 
href='https://app.codeant.ai/feedback?pr_url=https%3A%2F%2Fgithub.com%2Fapache%2Fsuperset%2Fpull%2F37141&comment_hash=712d4771f924e5471321197982f1465bf2c70583d49b9ef3510271f88871ca24&reaction=like'>👍</a>
 | <a 
href='https://app.codeant.ai/feedback?pr_url=https%3A%2F%2Fgithub.com%2Fapache%2Fsuperset%2Fpull%2F37141&comment_hash=712d4771f924e5471321197982f1465bf2c70583d49b9ef3510271f88871ca24&reaction=dislike'>👎</a>



##########
superset/static/service-worker.js:
##########
@@ -1,27 +1,1471 @@
-/**
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements.  See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership.  The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License.  You may obtain a copy of the License at
- *
- *   http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied.  See the License for the
- * specific language governing permissions and limitations
- * under the License.
+/*
+ * ATTENTION: An "eval-source-map" devtool has been used.
+ * This devtool is neither made for production nor for readable output files.
+ * It uses "eval()" calls to create a separate source file with attached 
SourceMaps in the browser devtools.
+ * If you are trying to read the output file, select a different devtool 
(https://webpack.js.org/configuration/devtool/)
+ * or disable the default devtool with "devtool: false".
+ * If you are looking for production-ready output files, see mode: 
"production" (https://webpack.js.org/configuration/mode/).
  */
+/******/ (() => { // webpackBootstrap
+/******/       "use strict";
+/******/       var __webpack_modules__ = ({
 
-// Minimal service worker for PWA file handling support
-self.addEventListener('install', event => {
-  event.waitUntil(self.skipWaiting());
-});
+/***/ "./src/service-worker.ts"
+/*!*******************************!*\
+  !*** ./src/service-worker.ts ***!
+  \*******************************/
+() {
 
-self.addEventListener('activate', event => {
-  event.waitUntil(self.clients.claim());
-});
+eval("{/**\n * Licensed to the Apache Software Foundation (ASF) under one\n * 
or more contributor license agreements.  See the NOTICE file\n * distributed 
with this work for additional information\n * regarding copyright ownership.  
The ASF licenses this file\n * to you under the Apache License, Version 2.0 
(the\n * \"License\"); you may not use this file except in compliance\n * with 
the License.  You may obtain a copy of the License at\n *\n *   
http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by 
applicable law or agreed to in writing,\n * software distributed under the 
License is distributed on an\n * \"AS IS\" BASIS, WITHOUT WARRANTIES OR 
CONDITIONS OF ANY\n * KIND, either express or implied.  See the License for 
the\n * specific language governing permissions and limitations\n * under the 
License.\n */ // Service Worker types (declared locally to avoid polluting 
global scope)\nself.addEventListener('install', (event)=>{\n    
event.waitUntil(self.skipWaiting())
 ;\n});\nself.addEventListener('activate', (event)=>{\n    
event.waitUntil(self.clients.claim());\n});\n\n//# sourceURL=[module]\n//# 
sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9zcmMvc2VydmljZS13b3JrZXIudHMiLCJtYXBwaW5ncyI6IkFBQUE7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBaUJBO0FBWUE7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBRUEiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9zdXBlcnNldC8uL3NyYy9zZXJ2aWNlLXdvcmtlci50cz83ZjU4Il0sInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogTGljZW5zZWQgdG8gdGhlIEFwYWNoZSBTb2Z0d2FyZSBGb3VuZGF0aW9uIChBU0YpIHVuZGVyIG9uZVxuICogb3IgbW9yZSBjb250cmlidXRvciBsaWNlbnNlIGFncmVlbWVudHMuICBTZWUgdGhlIE5PVElDRSBmaWxlXG4gKiBkaXN0cmlidXRlZCB3aXRoIHRoaXMgd29yayBmb3IgYWRkaXRpb25hbCBpbmZvcm1hdGlvblxuICogcmVnYXJkaW5nIGNvcHlyaWdodCBvd25lcnNoaXAuICBUaGUgQVNGIGxpY2Vuc2VzIHRoaXMgZmlsZVxuICogdG8geW91IHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZVxuICogXCJMaWNlbnNlXCIpOyB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlXG4gKiB3aXRoIHRoZSBMaWNlbnNlLiAgWW91IG1h
 
eSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0XG4gKlxuICogICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjBcbiAqXG4gKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsXG4gKiBzb2Z0d2FyZSBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhblxuICogXCJBUyBJU1wiIEJBU0lTLCBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTllcbiAqIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuICBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZVxuICogc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZCBsaW1pdGF0aW9uc1xuICogdW5kZXIgdGhlIExpY2Vuc2UuXG4gKi9cblxuLy8gU2VydmljZSBXb3JrZXIgdHlwZXMgKGRlY2xhcmVkIGxvY2FsbHkgdG8gYXZvaWQgcG9sbHV0aW5nIGdsb2JhbCBzY29wZSlcbmRlY2xhcmUgY29uc3Qgc2VsZjoge1xuICBza2lwV2FpdGluZygpOiBQcm9taXNlPHZvaWQ+O1xuICBjbGllbnRzOiB7IGNsYWltKCk6IFByb21pc2U8dm9pZD4gfTtcbiAgYWRkRXZlbnRMaXN0ZW5lcihcbiAgICB0eXBlOiAnaW5zdGFsbCcgfCAnYWN0aXZhdGUnLFxuICAgIGxpc3RlbmVyOiAoZXZlbnQ6IHsgd2FpdFVudGlsKHByb21pc2U6IFByb21pc2U8dW5rbm93bj4pOiB2b2lkIH0pID0+IHZvaWQsXG4gICk6IHZva
 
WQ7XG59O1xuXG5zZWxmLmFkZEV2ZW50TGlzdGVuZXIoJ2luc3RhbGwnLCBldmVudCA9PiB7XG4gIGV2ZW50LndhaXRVbnRpbChzZWxmLnNraXBXYWl0aW5nKCkpO1xufSk7XG5cbnNlbGYuYWRkRXZlbnRMaXN0ZW5lcignYWN0aXZhdGUnLCBldmVudCA9PiB7XG4gIGV2ZW50LndhaXRVbnRpbChzZWxmLmNsaWVudHMuY2xhaW0oKSk7XG59KTtcblxuZXhwb3J0IHt9O1xuIl0sIm5hbWVzIjpbXSwic291cmNlUm9vdCI6IiJ9\n//#
 sourceURL=webpack-internal:///./src/service-worker.ts\n\n}");
+
+/***/ }
+
+/******/       });
+/************************************************************************/
+/******/       // The module cache
+/******/       var __webpack_module_cache__ = {};
+/******/
+/******/       // The require function
+/******/       function __webpack_require__(moduleId) {
+/******/               // Check if module is in cache
+/******/               var cachedModule = __webpack_module_cache__[moduleId];
+/******/               if (cachedModule !== undefined) {
+/******/                       return cachedModule.exports;
+/******/               }
+/******/               // Check if module exists (development only)
+/******/               if (__webpack_modules__[moduleId] === undefined) {
+/******/                       var e = new Error("Cannot find module '" + 
moduleId + "'");
+/******/                       e.code = 'MODULE_NOT_FOUND';
+/******/                       throw e;
+/******/               }
+/******/               // Create a new module (and put it into the cache)
+/******/               var module = __webpack_module_cache__[moduleId] = {
+/******/                       id: moduleId,
+/******/                       loaded: false,
+/******/                       exports: {}
+/******/               };
+/******/
+/******/               // Execute the module function
+/******/               var execOptions = { id: moduleId, module: module, 
factory: __webpack_modules__[moduleId], require: __webpack_require__ };
+/******/               __webpack_require__.i.forEach(function(handler) { 
handler(execOptions); });
+/******/               module = execOptions.module;
+/******/               execOptions.factory.call(module.exports, module, 
module.exports, execOptions.require);
+/******/
+/******/               // Flag the module as loaded
+/******/               module.loaded = true;
+/******/
+/******/               // Return the exports of the module
+/******/               return module.exports;
+/******/       }
+/******/
+/******/       // expose the modules object (__webpack_modules__)
+/******/       __webpack_require__.m = __webpack_modules__;
+/******/
+/******/       // expose the module cache
+/******/       __webpack_require__.c = __webpack_module_cache__;
+/******/
+/******/       // expose the module execution interceptor
+/******/       __webpack_require__.i = [];
+/******/
+/************************************************************************/
+/******/       /* webpack/runtime/chunk loaded */
+/******/       (() => {
+/******/               var deferred = [];
+/******/               __webpack_require__.O = (result, chunkIds, fn, 
priority) => {
+/******/                       if(chunkIds) {
+/******/                               priority = priority || 0;
+/******/                               for(var i = deferred.length; i > 0 && 
deferred[i - 1][2] > priority; i--) deferred[i] = deferred[i - 1];
+/******/                               deferred[i] = [chunkIds, fn, priority];
+/******/                               return;
+/******/                       }
+/******/                       var notFulfilled = Infinity;
+/******/                       for (var i = 0; i < deferred.length; i++) {
+/******/                               var [chunkIds, fn, priority] = 
deferred[i];
+/******/                               var fulfilled = true;
+/******/                               for (var j = 0; j < chunkIds.length; 
j++) {
+/******/                                       if ((priority & 1 === 0 || 
notFulfilled >= priority) && Object.keys(__webpack_require__.O).every((key) => 
(__webpack_require__.O[key](chunkIds[j])))) {
+/******/                                               chunkIds.splice(j--, 1);
+/******/                                       } else {
+/******/                                               fulfilled = false;
+/******/                                               if(priority < 
notFulfilled) notFulfilled = priority;
+/******/                                       }
+/******/                               }
+/******/                               if(fulfilled) {
+/******/                                       deferred.splice(i--, 1)
+/******/                                       var r = fn();
+/******/                                       if (r !== undefined) result = r;
+/******/                               }
+/******/                       }
+/******/                       return result;
+/******/               };
+/******/       })();
+/******/
+/******/       /* webpack/runtime/compat get default export */
+/******/       (() => {
+/******/               // getDefaultExport function for compatibility with 
non-harmony modules
+/******/               __webpack_require__.n = (module) => {
+/******/                       var getter = module && module.__esModule ?
+/******/                               () => (module['default']) :
+/******/                               () => (module);
+/******/                       __webpack_require__.d(getter, { a: getter });
+/******/                       return getter;
+/******/               };
+/******/       })();
+/******/
+/******/       /* webpack/runtime/create fake namespace object */
+/******/       (() => {
+/******/               var getProto = Object.getPrototypeOf ? (obj) => 
(Object.getPrototypeOf(obj)) : (obj) => (obj.__proto__);
+/******/               var leafPrototypes;
+/******/               // create a fake namespace object
+/******/               // mode & 1: value is a module id, require it
+/******/               // mode & 2: merge all properties of value into the ns
+/******/               // mode & 4: return value when already ns object
+/******/               // mode & 16: return value when it's Promise-like
+/******/               // mode & 8|1: behave like require
+/******/               __webpack_require__.t = function(value, mode) {
+/******/                       if(mode & 1) value = this(value);
+/******/                       if(mode & 8) return value;
+/******/                       if(typeof value === 'object' && value) {
+/******/                               if((mode & 4) && value.__esModule) 
return value;
+/******/                               if((mode & 16) && typeof value.then === 
'function') return value;
+/******/                       }
+/******/                       var ns = Object.create(null);
+/******/                       __webpack_require__.r(ns);
+/******/                       var def = {};
+/******/                       leafPrototypes = leafPrototypes || [null, 
getProto({}), getProto([]), getProto(getProto)];
+/******/                       for(var current = mode & 2 && value; (typeof 
current == 'object' || typeof current == 'function') && 
!~leafPrototypes.indexOf(current); current = getProto(current)) {
+/******/                               
Object.getOwnPropertyNames(current).forEach((key) => (def[key] = () => 
(value[key])));
+/******/                       }
+/******/                       def['default'] = () => (value);
+/******/                       __webpack_require__.d(ns, def);
+/******/                       return ns;
+/******/               };
+/******/       })();
+/******/
+/******/       /* webpack/runtime/define property getters */
+/******/       (() => {
+/******/               // define getter functions for harmony exports
+/******/               __webpack_require__.d = (exports, definition) => {
+/******/                       for(var key in definition) {
+/******/                               if(__webpack_require__.o(definition, 
key) && !__webpack_require__.o(exports, key)) {
+/******/                                       Object.defineProperty(exports, 
key, { enumerable: true, get: definition[key] });
+/******/                               }
+/******/                       }
+/******/               };
+/******/       })();
+/******/
+/******/       /* webpack/runtime/get javascript update chunk filename */
+/******/       (() => {
+/******/               // This function allow to reference all chunks
+/******/               __webpack_require__.hu = (chunkId) => {
+/******/                       // return url for filenames based on template
+/******/                       return "" + chunkId + "." + 
__webpack_require__.h() + ".hot-update.js";
+/******/               };
+/******/       })();
+/******/
+/******/       /* webpack/runtime/get update manifest filename */
+/******/       (() => {
+/******/               __webpack_require__.hmrF = () => ("service-worker." + 
__webpack_require__.h() + ".hot-update.json");
+/******/       })();
+/******/
+/******/       /* webpack/runtime/getFullHash */
+/******/       (() => {
+/******/               __webpack_require__.h = () => ("54c74debd7f6b0da3543")
+/******/       })();
+/******/
+/******/       /* webpack/runtime/harmony module decorator */
+/******/       (() => {
+/******/               __webpack_require__.hmd = (module) => {
+/******/                       module = Object.create(module);
+/******/                       if (!module.children) module.children = [];
+/******/                       Object.defineProperty(module, 'exports', {
+/******/                               enumerable: true,
+/******/                               set: () => {
+/******/                                       throw new Error('ES Modules may 
not assign module.exports or exports.*, Use ESM export syntax, instead: ' + 
module.id);
+/******/                               }
+/******/                       });
+/******/                       return module;
+/******/               };
+/******/       })();
+/******/
+/******/       /* webpack/runtime/hasOwnProperty shorthand */
+/******/       (() => {
+/******/               __webpack_require__.o = (obj, prop) => 
(Object.prototype.hasOwnProperty.call(obj, prop))
+/******/       })();
+/******/
+/******/       /* webpack/runtime/load script */
+/******/       (() => {
+/******/               var inProgress = {};
+/******/               var dataWebpackPrefix = "superset:";
+/******/               // loadScript function to load a script via script tag
+/******/               __webpack_require__.l = (url, done, key, chunkId) => {
+/******/                       if(inProgress[url]) { 
inProgress[url].push(done); return; }
+/******/                       var script, needAttach;
+/******/                       if(key !== undefined) {
+/******/                               var scripts = 
document.getElementsByTagName("script");
+/******/                               for(var i = 0; i < scripts.length; i++) 
{
+/******/                                       var s = scripts[i];
+/******/                                       if(s.getAttribute("src") == url 
|| s.getAttribute("data-webpack") == dataWebpackPrefix + key) { script = s; 
break; }
+/******/                               }
+/******/                       }
+/******/                       if(!script) {
+/******/                               needAttach = true;
+/******/                               script = 
document.createElement('script');
+/******/
+/******/                               script.charset = 'utf-8';
+/******/                               if (__webpack_require__.nc) {
+/******/                                       script.setAttribute("nonce", 
__webpack_require__.nc);
+/******/                               }
+/******/                               script.setAttribute("data-webpack", 
dataWebpackPrefix + key);
+/******/
+/******/                               script.src = url;
+/******/                       }
+/******/                       inProgress[url] = [done];
+/******/                       var onScriptComplete = (prev, event) => {
+/******/                               // avoid mem leaks in IE.
+/******/                               script.onerror = script.onload = null;
+/******/                               clearTimeout(timeout);
+/******/                               var doneFns = inProgress[url];
+/******/                               delete inProgress[url];
+/******/                               script.parentNode && 
script.parentNode.removeChild(script);
+/******/                               doneFns && doneFns.forEach((fn) => 
(fn(event)));
+/******/                               if(prev) return prev(event);
+/******/                       }
+/******/                       var timeout = 
setTimeout(onScriptComplete.bind(null, undefined, { type: 'timeout', target: 
script }), 120000);
+/******/                       script.onerror = onScriptComplete.bind(null, 
script.onerror);
+/******/                       script.onload = onScriptComplete.bind(null, 
script.onload);
+/******/                       needAttach && document.head.appendChild(script);
+/******/               };
+/******/       })();
+/******/
+/******/       /* webpack/runtime/make namespace object */
+/******/       (() => {
+/******/               // define __esModule on exports
+/******/               __webpack_require__.r = (exports) => {
+/******/                       if(typeof Symbol !== 'undefined' && 
Symbol.toStringTag) {
+/******/                               Object.defineProperty(exports, 
Symbol.toStringTag, { value: 'Module' });
+/******/                       }
+/******/                       Object.defineProperty(exports, '__esModule', { 
value: true });
+/******/               };
+/******/       })();
+/******/
+/******/       /* webpack/runtime/node module decorator */
+/******/       (() => {
+/******/               __webpack_require__.nmd = (module) => {
+/******/                       module.paths = [];
+/******/                       if (!module.children) module.children = [];
+/******/                       return module;
+/******/               };
+/******/       })();
+/******/
+/******/       /* webpack/runtime/sharing */
+/******/       (() => {
+/******/               __webpack_require__.S = {};
+/******/               var initPromises = {};
+/******/               var initTokens = {};
+/******/               __webpack_require__.I = (name, initScope) => {
+/******/                       if(!initScope) initScope = [];
+/******/                       // handling circular init calls
+/******/                       var initToken = initTokens[name];
+/******/                       if(!initToken) initToken = initTokens[name] = 
{};
+/******/                       if(initScope.indexOf(initToken) >= 0) return;
+/******/                       initScope.push(initToken);
+/******/                       // only runs once
+/******/                       if(initPromises[name]) return 
initPromises[name];
+/******/                       // creates a new share scope if needed
+/******/                       
if(!__webpack_require__.o(__webpack_require__.S, name)) 
__webpack_require__.S[name] = {};
+/******/                       // runs all init snippets from all modules 
reachable
+/******/                       var scope = __webpack_require__.S[name];
+/******/                       var warn = (msg) => {
+/******/                               if (typeof console !== "undefined" && 
console.warn) console.warn(msg);
+/******/                       };
+/******/                       var uniqueName = "superset";
+/******/                       var register = (name, version, factory, eager) 
=> {
+/******/                               var versions = scope[name] = 
scope[name] || {};
+/******/                               var activeVersion = versions[version];
+/******/                               if(!activeVersion || 
(!activeVersion.loaded && (!eager != !activeVersion.eager ? eager : uniqueName 
> activeVersion.from))) versions[version] = { get: factory, from: uniqueName, 
eager: !!eager };
+/******/                       };
+/******/                       var initExternal = (id) => {
+/******/                               var handleError = (err) => 
(warn("Initialization of sharing external failed: " + err));
+/******/                               try {
+/******/                                       var module = 
__webpack_require__(id);
+/******/                                       if(!module) return;
+/******/                                       var initFn = (module) => 
(module && module.init && module.init(__webpack_require__.S[name], initScope))
+/******/                                       if(module.then) return 
promises.push(module.then(initFn, handleError));
+/******/                                       var initResult = initFn(module);
+/******/                                       if(initResult && 
initResult.then) return promises.push(initResult['catch'](handleError));
+/******/                               } catch(err) { handleError(err); }
+/******/                       }
+/******/                       var promises = [];
+/******/                       switch(name) {
+/******/                               case "default": {
+/******/                                       register("antd", "5.27.6", () 
=> (() => (__webpack_require__(/*! ./node_modules/antd/es/index.js */ 
"./node_modules/antd/es/index.js"))), 1);
+/******/                                       register("react-dom", "17.0.2", 
() => (() => (__webpack_require__(/*! ./node_modules/react-dom/index.js */ 
"./node_modules/react-dom/index.js"))), 1);
+/******/                                       register("react", "17.0.2", () 
=> (() => (__webpack_require__(/*! ./node_modules/react/index.js */ 
"./node_modules/react/index.js"))), 1);
+/******/                               }
+/******/                               break;
+/******/                       }
+/******/                       if(!promises.length) return initPromises[name] 
= 1;
+/******/                       return initPromises[name] = 
Promise.all(promises).then(() => (initPromises[name] = 1));
+/******/               };
+/******/       })();
+/******/
+/******/       /* webpack/runtime/hot module replacement */
+/******/       (() => {
+/******/               var currentModuleData = {};
+/******/               var installedModules = __webpack_require__.c;
+/******/
+/******/               // module and require creation
+/******/               var currentChildModule;
+/******/               var currentParents = [];
+/******/
+/******/               // status
+/******/               var registeredStatusHandlers = [];
+/******/               var currentStatus = "idle";
+/******/
+/******/               // while downloading
+/******/               var blockingPromises = 0;
+/******/               var blockingPromisesWaiting = [];
+/******/
+/******/               // The update info
+/******/               var currentUpdateApplyHandlers;
+/******/               var queuedInvalidatedModules;
+/******/
+/******/               __webpack_require__.hmrD = currentModuleData;
+/******/
+/******/               __webpack_require__.i.push(function (options) {
+/******/                       var module = options.module;
+/******/                       var require = createRequire(options.require, 
options.id);
+/******/                       module.hot = createModuleHotObject(options.id, 
module);
+/******/                       module.parents = currentParents;
+/******/                       module.children = [];
+/******/                       currentParents = [];
+/******/                       options.require = require;
+/******/               });
+/******/
+/******/               __webpack_require__.hmrC = {};
+/******/               __webpack_require__.hmrI = {};
+/******/
+/******/               function createRequire(require, moduleId) {
+/******/                       var me = installedModules[moduleId];
+/******/                       if (!me) return require;
+/******/                       var fn = function (request) {
+/******/                               if (me.hot.active) {
+/******/                                       if (installedModules[request]) {
+/******/                                               var parents = 
installedModules[request].parents;
+/******/                                               if 
(parents.indexOf(moduleId) === -1) {
+/******/                                                       
parents.push(moduleId);
+/******/                                               }
+/******/                                       } else {
+/******/                                               currentParents = 
[moduleId];
+/******/                                               currentChildModule = 
request;
+/******/                                       }
+/******/                                       if 
(me.children.indexOf(request) === -1) {
+/******/                                               
me.children.push(request);
+/******/                                       }
+/******/                               } else {
+/******/                                       console.warn(
+/******/                                               "[HMR] unexpected 
require(" +
+/******/                                                       request +
+/******/                                                       ") from 
disposed module " +
+/******/                                                       moduleId
+/******/                                       );
+/******/                                       currentParents = [];
+/******/                               }
+/******/                               return require(request);
+/******/                       };
+/******/                       var createPropertyDescriptor = function (name) {
+/******/                               return {
+/******/                                       configurable: true,
+/******/                                       enumerable: true,
+/******/                                       get: function () {
+/******/                                               return require[name];
+/******/                                       },
+/******/                                       set: function (value) {
+/******/                                               require[name] = value;
+/******/                                       }
+/******/                               };
+/******/                       };
+/******/                       for (var name in require) {
+/******/                               if 
(Object.prototype.hasOwnProperty.call(require, name) && name !== "e") {
+/******/                                       Object.defineProperty(fn, name, 
createPropertyDescriptor(name));
+/******/                               }
+/******/                       }
+/******/                       fn.e = function (chunkId, fetchPriority) {
+/******/                               return 
trackBlockingPromise(require.e(chunkId, fetchPriority));
+/******/                       };
+/******/                       return fn;
+/******/               }
+/******/
+/******/               function createModuleHotObject(moduleId, me) {
+/******/                       var _main = currentChildModule !== moduleId;
+/******/                       var hot = {
+/******/                               // private stuff
+/******/                               _acceptedDependencies: {},
+/******/                               _acceptedErrorHandlers: {},
+/******/                               _declinedDependencies: {},
+/******/                               _selfAccepted: false,
+/******/                               _selfDeclined: false,
+/******/                               _selfInvalidated: false,
+/******/                               _disposeHandlers: [],
+/******/                               _main: _main,
+/******/                               _requireSelf: function () {
+/******/                                       currentParents = 
me.parents.slice();
+/******/                                       currentChildModule = _main ? 
undefined : moduleId;
+/******/                                       __webpack_require__(moduleId);
+/******/                               },
+/******/
+/******/                               // Module API
+/******/                               active: true,
+/******/                               accept: function (dep, callback, 
errorHandler) {
+/******/                                       if (dep === undefined) 
hot._selfAccepted = true;
+/******/                                       else if (typeof dep === 
"function") hot._selfAccepted = dep;
+/******/                                       else if (typeof dep === 
"object" && dep !== null) {
+/******/                                               for (var i = 0; i < 
dep.length; i++) {
+/******/                                                       
hot._acceptedDependencies[dep[i]] = callback || function () {};
+/******/                                                       
hot._acceptedErrorHandlers[dep[i]] = errorHandler;
+/******/                                               }
+/******/                                       } else {
+/******/                                               
hot._acceptedDependencies[dep] = callback || function () {};
+/******/                                               
hot._acceptedErrorHandlers[dep] = errorHandler;
+/******/                                       }
+/******/                               },
+/******/                               decline: function (dep) {
+/******/                                       if (dep === undefined) 
hot._selfDeclined = true;
+/******/                                       else if (typeof dep === 
"object" && dep !== null)
+/******/                                               for (var i = 0; i < 
dep.length; i++)
+/******/                                                       
hot._declinedDependencies[dep[i]] = true;
+/******/                                       else 
hot._declinedDependencies[dep] = true;
+/******/                               },
+/******/                               dispose: function (callback) {
+/******/                                       
hot._disposeHandlers.push(callback);
+/******/                               },
+/******/                               addDisposeHandler: function (callback) {
+/******/                                       
hot._disposeHandlers.push(callback);
+/******/                               },
+/******/                               removeDisposeHandler: function 
(callback) {
+/******/                                       var idx = 
hot._disposeHandlers.indexOf(callback);
+/******/                                       if (idx >= 0) 
hot._disposeHandlers.splice(idx, 1);
+/******/                               },
+/******/                               invalidate: function () {
+/******/                                       this._selfInvalidated = true;
+/******/                                       switch (currentStatus) {
+/******/                                               case "idle":
+/******/                                                       
currentUpdateApplyHandlers = [];
+/******/                                                       
Object.keys(__webpack_require__.hmrI).forEach(function (key) {
+/******/                                                               
__webpack_require__.hmrI[key](
+/******/                                                                       
moduleId,
+/******/                                                                       
currentUpdateApplyHandlers
+/******/                                                               );
+/******/                                                       });
+/******/                                                       
setStatus("ready");
+/******/                                                       break;
+/******/                                               case "ready":
+/******/                                                       
Object.keys(__webpack_require__.hmrI).forEach(function (key) {
+/******/                                                               
__webpack_require__.hmrI[key](
+/******/                                                                       
moduleId,
+/******/                                                                       
currentUpdateApplyHandlers
+/******/                                                               );
+/******/                                                       });
+/******/                                                       break;
+/******/                                               case "prepare":
+/******/                                               case "check":
+/******/                                               case "dispose":
+/******/                                               case "apply":
+/******/                                                       
(queuedInvalidatedModules = queuedInvalidatedModules || []).push(
+/******/                                                               moduleId
+/******/                                                       );
+/******/                                                       break;
+/******/                                               default:
+/******/                                                       // ignore 
requests in error states
+/******/                                                       break;
+/******/                                       }
+/******/                               },
+/******/
+/******/                               // Management API
+/******/                               check: hotCheck,
+/******/                               apply: hotApply,
+/******/                               status: function (l) {
+/******/                                       if (!l) return currentStatus;
+/******/                                       
registeredStatusHandlers.push(l);
+/******/                               },
+/******/                               addStatusHandler: function (l) {
+/******/                                       
registeredStatusHandlers.push(l);
+/******/                               },
+/******/                               removeStatusHandler: function (l) {
+/******/                                       var idx = 
registeredStatusHandlers.indexOf(l);
+/******/                                       if (idx >= 0) 
registeredStatusHandlers.splice(idx, 1);
+/******/                               },
+/******/
+/******/                               // inherit from previous dispose call
+/******/                               data: currentModuleData[moduleId]
+/******/                       };
+/******/                       currentChildModule = undefined;
+/******/                       return hot;
+/******/               }
+/******/
+/******/               function setStatus(newStatus) {
+/******/                       currentStatus = newStatus;
+/******/                       var results = [];
+/******/
+/******/                       for (var i = 0; i < 
registeredStatusHandlers.length; i++)
+/******/                               results[i] = 
registeredStatusHandlers[i].call(null, newStatus);
+/******/
+/******/                       return Promise.all(results).then(function () 
{});
+/******/               }
+/******/
+/******/               function unblock() {
+/******/                       if (--blockingPromises === 0) {
+/******/                               setStatus("ready").then(function () {
+/******/                                       if (blockingPromises === 0) {
+/******/                                               var list = 
blockingPromisesWaiting;
+/******/                                               blockingPromisesWaiting 
= [];
+/******/                                               for (var i = 0; i < 
list.length; i++) {
+/******/                                                       list[i]();
+/******/                                               }
+/******/                                       }
+/******/                               });
+/******/                       }
+/******/               }
+/******/
+/******/               function trackBlockingPromise(promise) {
+/******/                       switch (currentStatus) {
+/******/                               case "ready":
+/******/                                       setStatus("prepare");
+/******/                               /* fallthrough */
+/******/                               case "prepare":
+/******/                                       blockingPromises++;
+/******/                                       promise.then(unblock, unblock);
+/******/                                       return promise;
+/******/                               default:
+/******/                                       return promise;
+/******/                       }
+/******/               }
+/******/
+/******/               function waitForBlockingPromises(fn) {
+/******/                       if (blockingPromises === 0) return fn();
+/******/                       return new Promise(function (resolve) {
+/******/                               blockingPromisesWaiting.push(function 
() {
+/******/                                       resolve(fn());
+/******/                               });
+/******/                       });
+/******/               }
+/******/
+/******/               function hotCheck(applyOnUpdate) {
+/******/                       if (currentStatus !== "idle") {
+/******/                               throw new Error("check() is only 
allowed in idle status");
+/******/                       }
+/******/                       return setStatus("check")
+/******/                               .then(__webpack_require__.hmrM)
+/******/                               .then(function (update) {
+/******/                                       if (!update) {
+/******/                                               return 
setStatus(applyInvalidatedModules() ? "ready" : "idle").then(
+/******/                                                       function () {
+/******/                                                               return 
null;
+/******/                                                       }
+/******/                                               );
+/******/                                       }
+/******/
+/******/                                       return 
setStatus("prepare").then(function () {
+/******/                                               var updatedModules = [];
+/******/                                               
currentUpdateApplyHandlers = [];
+/******/
+/******/                                               return Promise.all(
+/******/                                                       
Object.keys(__webpack_require__.hmrC).reduce(function (
+/******/                                                               
promises,
+/******/                                                               key
+/******/                                                       ) {
+/******/                                                               
__webpack_require__.hmrC[key](
+/******/                                                                       
update.c,
+/******/                                                                       
update.r,
+/******/                                                                       
update.m,
+/******/                                                                       
promises,
+/******/                                                                       
currentUpdateApplyHandlers,
+/******/                                                                       
updatedModules,
+/******/                                                                       
update.css
+/******/                                                               );
+/******/                                                               return 
promises;
+/******/                                                       }, [])
+/******/                                               ).then(function () {
+/******/                                                       return 
waitForBlockingPromises(function () {
+/******/                                                               if 
(applyOnUpdate) {
+/******/                                                                       
return internalApply(applyOnUpdate);
+/******/                                                               }
+/******/                                                               return 
setStatus("ready").then(function () {
+/******/                                                                       
return updatedModules;
+/******/                                                               });
+/******/                                                       });
+/******/                                               });
+/******/                                       });
+/******/                               });
+/******/               }
+/******/
+/******/               function hotApply(options) {
+/******/                       if (currentStatus !== "ready") {
+/******/                               return Promise.resolve().then(function 
() {
+/******/                                       throw new Error(
+/******/                                               "apply() is only 
allowed in ready status (state: " +
+/******/                                                       currentStatus +
+/******/                                                       ")"
+/******/                                       );
+/******/                               });
+/******/                       }
+/******/                       return internalApply(options);
+/******/               }
+/******/
+/******/               function internalApply(options) {
+/******/                       options = options || {};
+/******/
+/******/                       applyInvalidatedModules();
+/******/
+/******/                       var results = 
currentUpdateApplyHandlers.map(function (handler) {
+/******/                               return handler(options);
+/******/                       });
+/******/                       currentUpdateApplyHandlers = undefined;
+/******/
+/******/                       var errors = results
+/******/                               .map(function (r) {
+/******/                                       return r.error;
+/******/                               })
+/******/                               .filter(Boolean);
+/******/
+/******/                       if (errors.length > 0) {
+/******/                               return setStatus("abort").then(function 
() {
+/******/                                       throw errors[0];
+/******/                               });
+/******/                       }
+/******/
+/******/                       // Now in "dispose" phase
+/******/                       var disposePromise = setStatus("dispose");
+/******/
+/******/                       results.forEach(function (result) {
+/******/                               if (result.dispose) result.dispose();
+/******/                       });
+/******/
+/******/                       // Now in "apply" phase
+/******/                       var applyPromise = setStatus("apply");
+/******/
+/******/                       var error;
+/******/                       var reportError = function (err) {
+/******/                               if (!error) error = err;
+/******/                       };
+/******/
+/******/                       var outdatedModules = [];
+/******/
+/******/                       var onAccepted = function () {
+/******/                               return Promise.all([disposePromise, 
applyPromise]).then(function () {
+/******/                                       // handle errors in accept 
handlers and self accepted module load
+/******/                                       if (error) {
+/******/                                               return 
setStatus("fail").then(function () {
+/******/                                                       throw error;
+/******/                                               });
+/******/                                       }
+/******/
+/******/                                       if (queuedInvalidatedModules) {
+/******/                                               return 
internalApply(options).then(function (list) {
+/******/                                                       
outdatedModules.forEach(function (moduleId) {
+/******/                                                               if 
(list.indexOf(moduleId) < 0) list.push(moduleId);
+/******/                                                       });
+/******/                                                       return list;
+/******/                                               });
+/******/                                       }
+/******/
+/******/                                       return 
setStatus("idle").then(function () {
+/******/                                               return outdatedModules;
+/******/                                       });
+/******/                               });
+/******/                       };
+/******/
+/******/                       return Promise.all(
+/******/                               results
+/******/                                       .filter(function (result) {
+/******/                                               return result.apply;
+/******/                                       })
+/******/                                       .map(function (result) {
+/******/                                               return 
result.apply(reportError);
+/******/                                       })
+/******/                       )
+/******/                               .then(function (applyResults) {
+/******/                                       applyResults.forEach(function 
(modules) {
+/******/                                               if (modules) {
+/******/                                                       for (var i = 0; 
i < modules.length; i++) {
+/******/                                                               
outdatedModules.push(modules[i]);
+/******/                                                       }
+/******/                                               }
+/******/                                       });
+/******/                               })
+/******/                               .then(onAccepted);
+/******/               }
+/******/
+/******/               function applyInvalidatedModules() {
+/******/                       if (queuedInvalidatedModules) {
+/******/                               if (!currentUpdateApplyHandlers) 
currentUpdateApplyHandlers = [];
+/******/                               
Object.keys(__webpack_require__.hmrI).forEach(function (key) {
+/******/                                       
queuedInvalidatedModules.forEach(function (moduleId) {
+/******/                                               
__webpack_require__.hmrI[key](
+/******/                                                       moduleId,
+/******/                                                       
currentUpdateApplyHandlers
+/******/                                               );
+/******/                                       });
+/******/                               });
+/******/                               queuedInvalidatedModules = undefined;
+/******/                               return true;
+/******/                       }
+/******/               }
+/******/       })();
+/******/
+/******/       /* webpack/runtime/publicPath */
+/******/       (() => {
+/******/               __webpack_require__.p = "/static/assets/";
+/******/       })();
+/******/
+/******/       /* webpack/runtime/react refresh */
+/******/       (() => {
+/******/               const setup = (moduleId) => {
+/******/                       const refresh = {
+/******/                               moduleId: moduleId,
+/******/                               register: (type, id) => {
+/******/                                       const typeId = moduleId + ' ' + 
id;
+/******/                                       refresh.runtime.register(type, 
typeId);
+/******/                               },
+/******/                               signature: () => 
(refresh.runtime.createSignatureFunctionForTransform()),
+/******/                               runtime: {
+/******/                                       
createSignatureFunctionForTransform: () => ((type) => (type)),
+/******/                                       register: x => {}
+/******/                               },
+/******/                       };
+/******/                       return refresh;
+/******/               };
+/******/
+/******/               __webpack_require__.i.push((options) => {
+/******/                       const originalFactory = options.factory;
+/******/                       options.factory = function(moduleObject, 
moduleExports, webpackRequire) {
+/******/                               const hotRequire = (request) => 
(webpackRequire(request));
+/******/                               const createPropertyDescriptor = (name) 
=> {
+/******/                                       return {
+/******/                                               configurable: true,
+/******/                                               enumerable: true,
+/******/                                               get: () => 
(webpackRequire[name]),
+/******/                                               set: (value) => {
+/******/                                                       
webpackRequire[name] = value;
+/******/                                               },
+/******/                                       };
+/******/                               };
+/******/                               for (const name in webpackRequire) {
+/******/                                       if (name === "$Refresh$") 
continue;
+/******/                                       if 
(Object.prototype.hasOwnProperty.call(webpackRequire, name)) {
+/******/                                               
Object.defineProperty(hotRequire, name, createPropertyDescriptor(name));
+/******/                                       }
+/******/                               }
+/******/                               hotRequire.$Refresh$ = 
setup(options.id);
+/******/                               originalFactory.call(this, 
moduleObject, moduleExports, hotRequire);
+/******/                       };
+/******/               });
+/******/       })();
+/******/
+/******/       /* webpack/runtime/consumes */
+/******/       (() => {
+/******/               var parseVersion = (str) => {
+/******/                       // see webpack/lib/util/semver.js for original 
code
+/******/                       var p=p=>{return 
p.split(".").map(p=>{return+p==p?+p:p})},n=/^([^-+]+)?(?:-([^+]+))?(?:\+(.+))?$/.exec(str),r=n[1]?p(n[1]):[];return
 
n[2]&&(r.length++,r.push.apply(r,p(n[2]))),n[3]&&(r.push([]),r.push.apply(r,p(n[3]))),r;
+/******/               }
+/******/               var versionLt = (a, b) => {
+/******/                       // see webpack/lib/util/semver.js for original 
code
+/******/                       a=parseVersion(a),b=parseVersion(b);for(var 
r=0;;){if(r>=a.length)return r<b.length&&"u"!=(typeof b[r])[0];var 
e=a[r],n=(typeof e)[0];if(r>=b.length)return"u"==n;var t=b[r],f=(typeof 
t)[0];if(n!=f)return"o"==n&&"n"==f||("s"==f||"u"==n);if("o"!=n&&"u"!=n&&e!=t)return
 e<t;r++}
+/******/               }
+/******/               var rangeToString = (range) => {
+/******/                       // see webpack/lib/util/semver.js for original 
code
+/******/                       var 
r=range[0],n="";if(1===range.length)return"*";if(r+.5){n+=0==r?">=":-1==r?"<":1==r?"^":2==r?"~":r>0?"=":"!=";for(var
 
e=1,a=1;a<range.length;a++){e--,n+="u"==(typeof(t=range[a]))[0]?"-":(e>0?".":"")+(e=2,t)}return
 n}var g=[];for(a=1;a<range.length;a++){var 
t=range[a];g.push(0===t?"not("+o()+")":1===t?"("+o()+" || 
"+o()+")":2===t?g.pop()+" "+g.pop():rangeToString(t))}return o();function 
o(){return g.pop().replace(/^\((.+)\)$/,"$1")}
+/******/               }
+/******/               var satisfy = (range, version) => {
+/******/                       // see webpack/lib/util/semver.js for original 
code
+/******/                       if(0 in 
range){version=parseVersion(version);var e=range[0],r=e<0;r&&(e=-e-1);for(var 
n=0,i=1,a=!0;;i++,n++){var f,s,g=i<range.length?(typeof 
range[i])[0]:"";if(n>=version.length||"o"==(s=(typeof(f=version[n]))[0]))return!a||("u"==g?i>e&&!r:""==g!=r);if("u"==s){if(!a||"u"!=g)return!1}else
 
if(a)if(g==s)if(i<=e){if(f!=range[i])return!1}else{if(r?f>range[i]:f<range[i])return!1;f!=range[i]&&(a=!1)}else
 
if("s"!=g&&"n"!=g){if(r||i<=e)return!1;a=!1,i--}else{if(i<=e||s<g!=r)return!1;a=!1}else"s"!=g&&"n"!=g&&(a=!1,i--)}}var
 t=[],o=t.pop.bind(t);for(n=1;n<range.length;n++){var 
u=range[n];t.push(1==u?o()|o():2==u?o()&o():u?satisfy(u,version):!o())}return!!o();
+/******/               }
+/******/               var exists = (scope, key) => {
+/******/                       return scope && __webpack_require__.o(scope, 
key);
+/******/               }
+/******/               var get = (entry) => {
+/******/                       entry.loaded = 1;
+/******/                       return entry.get()
+/******/               };
+/******/               var eagerOnly = (versions) => {
+/******/                       return Object.keys(versions).reduce((filtered, 
version) => {
+/******/                                       if (versions[version].eager) {
+/******/                                               filtered[version] = 
versions[version];
+/******/                                       }
+/******/                                       return filtered;
+/******/                       }, {});
+/******/               };
+/******/               var findLatestVersion = (scope, key, eager) => {
+/******/                       var versions = eager ? eagerOnly(scope[key]) : 
scope[key];
+/******/                       var key = Object.keys(versions).reduce((a, b) 
=> {
+/******/                               return !a || versionLt(a, b) ? b : a;
+/******/                       }, 0);
+/******/                       return key && versions[key];
+/******/               };
+/******/               var findSatisfyingVersion = (scope, key, 
requiredVersion, eager) => {
+/******/                       var versions = eager ? eagerOnly(scope[key]) : 
scope[key];
+/******/                       var key = Object.keys(versions).reduce((a, b) 
=> {
+/******/                               if (!satisfy(requiredVersion, b)) 
return a;
+/******/                               return !a || versionLt(a, b) ? b : a;
+/******/                       }, 0);
+/******/                       return key && versions[key]
+/******/               };
+/******/               var findSingletonVersionKey = (scope, key, eager) => {
+/******/                       var versions = eager ? eagerOnly(scope[key]) : 
scope[key];
+/******/                       return Object.keys(versions).reduce((a, b) => {
+/******/                               return !a || (!versions[a].loaded && 
versionLt(a, b)) ? b : a;
+/******/                       }, 0);
+/******/               };
+/******/               var getInvalidSingletonVersionMessage = (scope, key, 
version, requiredVersion) => {
+/******/                       return "Unsatisfied version " + version + " 
from " + (version && scope[key][version].from) + " of shared singleton module " 
+ key + " (required " + rangeToString(requiredVersion) + ")"
+/******/               };
+/******/               var getInvalidVersionMessage = (scope, scopeName, key, 
requiredVersion, eager) => {
+/******/                       var versions = scope[key];
+/******/                       return "No satisfying version (" + 
rangeToString(requiredVersion) + ")" + (eager ? " for eager consumption" : "") 
+ " of shared module " + key + " found in shared scope " + scopeName + ".\n" +
+/******/                               "Available versions: " + 
Object.keys(versions).map((key) => {
+/******/                               return key + " from " + 
versions[key].from;
+/******/                       }).join(", ");
+/******/               };
+/******/               var fail = (msg) => {
+/******/                       throw new Error(msg);
+/******/               }
+/******/               var failAsNotExist = (scopeName, key) => {
+/******/                       return fail("Shared module " + key + " doesn't 
exist in shared scope " + scopeName);
+/******/               }
+/******/               var warn = /*#__PURE__*/ (msg) => {
+/******/                       if (typeof console !== "undefined" && 
console.warn) console.warn(msg);
+/******/               };
+/******/               var init = (fn) => (function(scopeName, key, eager, c, 
d) {
+/******/                       var promise = __webpack_require__.I(scopeName);
+/******/                       if (promise && promise.then && !eager) {
+/******/                               return promise.then(fn.bind(fn, 
scopeName, __webpack_require__.S[scopeName], key, false, c, d));
+/******/                       }
+/******/                       return fn(scopeName, 
__webpack_require__.S[scopeName], key, eager, c, d);
+/******/               });
+/******/
+/******/               var useFallback = (scopeName, key, fallback) => {
+/******/                       return fallback ? fallback() : 
failAsNotExist(scopeName, key);
+/******/               }
+/******/               var load = /*#__PURE__*/ init((scopeName, scope, key, 
eager, fallback) => {
+/******/                       if (!exists(scope, key)) return 
useFallback(scopeName, key, fallback);
+/******/                       return get(findLatestVersion(scope, key, 
eager));
+/******/               });
+/******/               var loadVersion = /*#__PURE__*/ init((scopeName, scope, 
key, eager, requiredVersion, fallback) => {
+/******/                       if (!exists(scope, key)) return 
useFallback(scopeName, key, fallback);
+/******/                       var satisfyingVersion = 
findSatisfyingVersion(scope, key, requiredVersion, eager);
+/******/                       if (satisfyingVersion) return 
get(satisfyingVersion);
+/******/                       warn(getInvalidVersionMessage(scope, scopeName, 
key, requiredVersion, eager))
+/******/                       return get(findLatestVersion(scope, key, 
eager));
+/******/               });
+/******/               var loadStrictVersion = /*#__PURE__*/ init((scopeName, 
scope, key, eager, requiredVersion, fallback) => {
+/******/                       if (!exists(scope, key)) return 
useFallback(scopeName, key, fallback);
+/******/                       var satisfyingVersion = 
findSatisfyingVersion(scope, key, requiredVersion, eager);
+/******/                       if (satisfyingVersion) return 
get(satisfyingVersion);
+/******/                       if (fallback) return fallback();
+/******/                       fail(getInvalidVersionMessage(scope, scopeName, 
key, requiredVersion, eager));
+/******/               });
+/******/               var loadSingleton = /*#__PURE__*/ init((scopeName, 
scope, key, eager, fallback) => {
+/******/                       if (!exists(scope, key)) return 
useFallback(scopeName, key, fallback);
+/******/                       var version = findSingletonVersionKey(scope, 
key, eager);
+/******/                       return get(scope[key][version]);
+/******/               });
+/******/               var loadSingletonVersion = /*#__PURE__*/ 
init((scopeName, scope, key, eager, requiredVersion, fallback) => {
+/******/                       if (!exists(scope, key)) return 
useFallback(scopeName, key, fallback);
+/******/                       var version = findSingletonVersionKey(scope, 
key, eager);
+/******/                       if (!satisfy(requiredVersion, version)) {
+/******/                               
warn(getInvalidSingletonVersionMessage(scope, key, version, requiredVersion));
+/******/                       }
+/******/                       return get(scope[key][version]);
+/******/               });
+/******/               var loadStrictSingletonVersion = /*#__PURE__*/ 
init((scopeName, scope, key, eager, requiredVersion, fallback) => {
+/******/                       if (!exists(scope, key)) return 
useFallback(scopeName, key, fallback);
+/******/                       var version = findSingletonVersionKey(scope, 
key, eager);
+/******/                       if (!satisfy(requiredVersion, version)) {
+/******/                               
fail(getInvalidSingletonVersionMessage(scope, key, version, requiredVersion));
+/******/                       }
+/******/                       return get(scope[key][version]);
+/******/               });
+/******/               var installedModules = {};
+/******/               var moduleToHandlerMapping = {
+/******/                       
"webpack/sharing/consume/default/react-dom/react-dom": () => 
(loadSingletonVersion("default", "react-dom", true, [1,17,0,2], () => (() => 
(__webpack_require__(/*! react-dom */ "./node_modules/react-dom/index.js"))))),
+/******/                       "webpack/sharing/consume/default/react/react": 
() => (loadSingletonVersion("default", "react", true, [1,17,0,2], () => (() => 
(__webpack_require__(/*! react */ "./node_modules/react/index.js")))))
+/******/               };
+/******/               var initialConsumes = 
["webpack/sharing/consume/default/react-dom/react-dom","webpack/sharing/consume/default/react/react"];
+/******/               initialConsumes.forEach((id) => {
+/******/                       __webpack_require__.m[id] = (module) => {
+/******/                               // Handle case when module is used sync
+/******/                               installedModules[id] = 0;
+/******/                               delete __webpack_require__.c[id];
+/******/                               var factory = 
moduleToHandlerMapping[id]();
+/******/                               if(typeof factory !== "function") throw 
new Error("Shared module is not available for eager consumption: " + id);
+/******/                               module.exports = factory();
+/******/                       }
+/******/               });
+/******/               // no chunk loading of consumes
+/******/       })();
+/******/
+/******/       /* webpack/runtime/jsonp chunk loading */
+/******/       (() => {
+/******/               // no baseURI
+/******/
+/******/               // object to store loaded and loading chunks
+/******/               // undefined = chunk not loaded, null = chunk 
preloaded/prefetched
+/******/               // [resolve, reject, Promise] = chunk loading, 0 = 
chunk loaded
+/******/               var installedChunks = __webpack_require__.hmrS_jsonp = 
__webpack_require__.hmrS_jsonp || {
+/******/                       "service-worker": 0,
+/******/                       
"webpack_sharing_consume_default_react-dom_react-dom-webpack_sharing_consume_default_react_rea-153fef":
 0
+/******/               };
+/******/
+/******/               // no chunk on demand loading
+/******/
+/******/               // no prefetching
+/******/
+/******/               // no preloaded
+/******/
+/******/               var currentUpdatedModulesList;
+/******/               var waitingUpdateResolves = {};
+/******/               function loadUpdateChunk(chunkId, updatedModulesList) {
+/******/                       currentUpdatedModulesList = updatedModulesList;
+/******/                       return new Promise((resolve, reject) => {
+/******/                               waitingUpdateResolves[chunkId] = 
resolve;
+/******/                               // start update chunk loading
+/******/                               var url = __webpack_require__.p + 
__webpack_require__.hu(chunkId);
+/******/                               // create error before stack unwound to 
get useful stacktrace later
+/******/                               var error = new Error();
+/******/                               var loadingEnded = (event) => {
+/******/                                       
if(waitingUpdateResolves[chunkId]) {
+/******/                                               
waitingUpdateResolves[chunkId] = undefined
+/******/                                               var errorType = event 
&& (event.type === 'load' ? 'missing' : event.type);
+/******/                                               var realSrc = event && 
event.target && event.target.src;
+/******/                                               error.message = 
'Loading hot update chunk ' + chunkId + ' failed.\n(' + errorType + ': ' + 
realSrc + ')';
+/******/                                               error.name = 
'ChunkLoadError';
+/******/                                               error.type = errorType;
+/******/                                               error.request = realSrc;
+/******/                                               reject(error);
+/******/                                       }
+/******/                               };
+/******/                               __webpack_require__.l(url, 
loadingEnded);
+/******/                       });
+/******/               }
+/******/
+/******/               globalThis["webpackHotUpdatesuperset"] = (chunkId, 
moreModules, runtime) => {
+/******/                       for(var moduleId in moreModules) {
+/******/                               if(__webpack_require__.o(moreModules, 
moduleId)) {
+/******/                                       currentUpdate[moduleId] = 
moreModules[moduleId];
+/******/                                       if(currentUpdatedModulesList) 
currentUpdatedModulesList.push(moduleId);
+/******/                               }
+/******/                       }
+/******/                       if(runtime) currentUpdateRuntime.push(runtime);
+/******/                       if(waitingUpdateResolves[chunkId]) {
+/******/                               waitingUpdateResolves[chunkId]();
+/******/                               waitingUpdateResolves[chunkId] = 
undefined;
+/******/                       }
+/******/               };
+/******/
+/******/               var currentUpdateChunks;
+/******/               var currentUpdate;
+/******/               var currentUpdateRemovedChunks;
+/******/               var currentUpdateRuntime;
+/******/               function applyHandler(options) {
+/******/                       if (__webpack_require__.f) delete 
__webpack_require__.f.jsonpHmr;
+/******/                       currentUpdateChunks = undefined;
+/******/                       function 
getAffectedModuleEffects(updateModuleId) {
+/******/                               var outdatedModules = [updateModuleId];
+/******/                               var outdatedDependencies = {};
+/******/
+/******/                               var queue = 
outdatedModules.map(function (id) {
+/******/                                       return {
+/******/                                               chain: [id],
+/******/                                               id: id
+/******/                                       };
+/******/                               });
+/******/                               while (queue.length > 0) {
+/******/                                       var queueItem = queue.pop();
+/******/                                       var moduleId = queueItem.id;
+/******/                                       var chain = queueItem.chain;
+/******/                                       var module = 
__webpack_require__.c[moduleId];
+/******/                                       if (
+/******/                                               !module ||
+/******/                                               
(module.hot._selfAccepted && !module.hot._selfInvalidated)
+/******/                                       )
+/******/                                               continue;
+/******/                                       if (module.hot._selfDeclined) {
+/******/                                               return {
+/******/                                                       type: 
"self-declined",
+/******/                                                       chain: chain,
+/******/                                                       moduleId: 
moduleId
+/******/                                               };
+/******/                                       }
+/******/                                       if (module.hot._main) {
+/******/                                               return {
+/******/                                                       type: 
"unaccepted",
+/******/                                                       chain: chain,
+/******/                                                       moduleId: 
moduleId
+/******/                                               };
+/******/                                       }
+/******/                                       for (var i = 0; i < 
module.parents.length; i++) {
+/******/                                               var parentId = 
module.parents[i];
+/******/                                               var parent = 
__webpack_require__.c[parentId];
+/******/                                               if (!parent) continue;
+/******/                                               if 
(parent.hot._declinedDependencies[moduleId]) {
+/******/                                                       return {
+/******/                                                               type: 
"declined",
+/******/                                                               chain: 
chain.concat([parentId]),
+/******/                                                               
moduleId: moduleId,
+/******/                                                               
parentId: parentId
+/******/                                                       };
+/******/                                               }
+/******/                                               if 
(outdatedModules.indexOf(parentId) !== -1) continue;
+/******/                                               if 
(parent.hot._acceptedDependencies[moduleId]) {
+/******/                                                       if 
(!outdatedDependencies[parentId])
+/******/                                                               
outdatedDependencies[parentId] = [];
+/******/                                                       
addAllToSet(outdatedDependencies[parentId], [moduleId]);
+/******/                                                       continue;
+/******/                                               }
+/******/                                               delete 
outdatedDependencies[parentId];
+/******/                                               
outdatedModules.push(parentId);
+/******/                                               queue.push({
+/******/                                                       chain: 
chain.concat([parentId]),
+/******/                                                       id: parentId
+/******/                                               });
+/******/                                       }
+/******/                               }
+/******/
+/******/                               return {
+/******/                                       type: "accepted",
+/******/                                       moduleId: updateModuleId,
+/******/                                       outdatedModules: 
outdatedModules,
+/******/                                       outdatedDependencies: 
outdatedDependencies
+/******/                               };
+/******/                       }
+/******/
+/******/                       function addAllToSet(a, b) {
+/******/                               for (var i = 0; i < b.length; i++) {
+/******/                                       var item = b[i];
+/******/                                       if (a.indexOf(item) === -1) 
a.push(item);
+/******/                               }
+/******/                       }
+/******/
+/******/                       // at begin all updates modules are outdated
+/******/                       // the "outdated" status can propagate to 
parents if they don't accept the children
+/******/                       var outdatedDependencies = {};
+/******/                       var outdatedModules = [];
+/******/                       var appliedUpdate = {};
+/******/
+/******/                       var warnUnexpectedRequire = function 
warnUnexpectedRequire(module) {
+/******/                               console.warn(
+/******/                                       "[HMR] unexpected require(" + 
module.id + ") to disposed module"
+/******/                               );
+/******/                       };
+/******/
+/******/                       for (var moduleId in currentUpdate) {
+/******/                               if 
(__webpack_require__.o(currentUpdate, moduleId)) {
+/******/                                       var newModuleFactory = 
currentUpdate[moduleId];
+/******/                                       var result = newModuleFactory
+/******/                                               ? 
getAffectedModuleEffects(moduleId)
+/******/                                               : {
+/******/                                                               type: 
"disposed",
+/******/                                                               
moduleId: moduleId
+/******/                                                       };
+/******/                                       /** @type {Error|false} */
+/******/                                       var abortError = false;
+/******/                                       var doApply = false;
+/******/                                       var doDispose = false;
+/******/                                       var chainInfo = "";
+/******/                                       if (result.chain) {
+/******/                                               chainInfo = "\nUpdate 
propagation: " + result.chain.join(" -> ");
+/******/                                       }
+/******/                                       switch (result.type) {
+/******/                                               case "self-declined":
+/******/                                                       if 
(options.onDeclined) options.onDeclined(result);
+/******/                                                       if 
(!options.ignoreDeclined)
+/******/                                                               
abortError = new Error(
+/******/                                                                       
"Aborted because of self decline: " +
+/******/                                                                       
        result.moduleId +
+/******/                                                                       
        chainInfo
+/******/                                                               );
+/******/                                                       break;
+/******/                                               case "declined":
+/******/                                                       if 
(options.onDeclined) options.onDeclined(result);
+/******/                                                       if 
(!options.ignoreDeclined)
+/******/                                                               
abortError = new Error(
+/******/                                                                       
"Aborted because of declined dependency: " +
+/******/                                                                       
        result.moduleId +
+/******/                                                                       
        " in " +
+/******/                                                                       
        result.parentId +
+/******/                                                                       
        chainInfo
+/******/                                                               );
+/******/                                                       break;
+/******/                                               case "unaccepted":
+/******/                                                       if 
(options.onUnaccepted) options.onUnaccepted(result);
+/******/                                                       if 
(!options.ignoreUnaccepted)
+/******/                                                               
abortError = new Error(
+/******/                                                                       
"Aborted because " + moduleId + " is not accepted" + chainInfo
+/******/                                                               );
+/******/                                                       break;
+/******/                                               case "accepted":
+/******/                                                       if 
(options.onAccepted) options.onAccepted(result);
+/******/                                                       doApply = true;
+/******/                                                       break;
+/******/                                               case "disposed":
+/******/                                                       if 
(options.onDisposed) options.onDisposed(result);
+/******/                                                       doDispose = 
true;
+/******/                                                       break;
+/******/                                               default:
+/******/                                                       throw new 
Error("Unexception type " + result.type);
+/******/                                       }
+/******/                                       if (abortError) {
+/******/                                               return {
+/******/                                                       error: 
abortError
+/******/                                               };
+/******/                                       }
+/******/                                       if (doApply) {
+/******/                                               appliedUpdate[moduleId] 
= newModuleFactory;
+/******/                                               
addAllToSet(outdatedModules, result.outdatedModules);
+/******/                                               for (moduleId in 
result.outdatedDependencies) {
+/******/                                                       if 
(__webpack_require__.o(result.outdatedDependencies, moduleId)) {
+/******/                                                               if 
(!outdatedDependencies[moduleId])
+/******/                                                                       
outdatedDependencies[moduleId] = [];
+/******/                                                               
addAllToSet(
+/******/                                                                       
outdatedDependencies[moduleId],
+/******/                                                                       
result.outdatedDependencies[moduleId]
+/******/                                                               );
+/******/                                                       }
+/******/                                               }
+/******/                                       }
+/******/                                       if (doDispose) {
+/******/                                               
addAllToSet(outdatedModules, [result.moduleId]);
+/******/                                               appliedUpdate[moduleId] 
= warnUnexpectedRequire;
+/******/                                       }
+/******/                               }
+/******/                       }
+/******/                       currentUpdate = undefined;
+/******/
+/******/                       // Store self accepted outdated modules to 
require them later by the module system
+/******/                       var outdatedSelfAcceptedModules = [];
+/******/                       for (var j = 0; j < outdatedModules.length; 
j++) {
+/******/                               var outdatedModuleId = 
outdatedModules[j];
+/******/                               var module = 
__webpack_require__.c[outdatedModuleId];
+/******/                               if (
+/******/                                       module &&
+/******/                                       (module.hot._selfAccepted || 
module.hot._main) &&
+/******/                                       // removed self-accepted 
modules should not be required
+/******/                                       appliedUpdate[outdatedModuleId] 
!== warnUnexpectedRequire &&
+/******/                                       // when called invalidate 
self-accepting is not possible
+/******/                                       !module.hot._selfInvalidated
+/******/                               ) {
+/******/                                       
outdatedSelfAcceptedModules.push({
+/******/                                               module: 
outdatedModuleId,
+/******/                                               require: 
module.hot._requireSelf,
+/******/                                               errorHandler: 
module.hot._selfAccepted
+/******/                                       });
+/******/                               }
+/******/                       }
+/******/
+/******/                       var moduleOutdatedDependencies;
+/******/
+/******/                       return {
+/******/                               dispose: function () {
+/******/                                       
currentUpdateRemovedChunks.forEach(function (chunkId) {
+/******/                                               delete 
installedChunks[chunkId];
+/******/                                       });
+/******/                                       currentUpdateRemovedChunks = 
undefined;
+/******/
+/******/                                       var idx;
+/******/                                       var queue = 
outdatedModules.slice();
+/******/                                       while (queue.length > 0) {
+/******/                                               var moduleId = 
queue.pop();
+/******/                                               var module = 
__webpack_require__.c[moduleId];
+/******/                                               if (!module) continue;
+/******/
+/******/                                               var data = {};
+/******/
+/******/                                               // Call dispose handlers
+/******/                                               var disposeHandlers = 
module.hot._disposeHandlers;
+/******/                                               for (j = 0; j < 
disposeHandlers.length; j++) {
+/******/                                                       
disposeHandlers[j].call(null, data);
+/******/                                               }
+/******/                                               
__webpack_require__.hmrD[moduleId] = data;
+/******/
+/******/                                               // disable module (this 
disables requires from this module)
+/******/                                               module.hot.active = 
false;
+/******/
+/******/                                               // remove module from 
cache
+/******/                                               delete 
__webpack_require__.c[moduleId];
+/******/
+/******/                                               // when disposing there 
is no need to call dispose handler
+/******/                                               delete 
outdatedDependencies[moduleId];
+/******/
+/******/                                               // remove "parents" 
references from all children
+/******/                                               for (j = 0; j < 
module.children.length; j++) {
+/******/                                                       var child = 
__webpack_require__.c[module.children[j]];
+/******/                                                       if (!child) 
continue;
+/******/                                                       idx = 
child.parents.indexOf(moduleId);
+/******/                                                       if (idx >= 0) {
+/******/                                                               
child.parents.splice(idx, 1);
+/******/                                                       }
+/******/                                               }
+/******/                                       }
+/******/
+/******/                                       // remove outdated dependency 
from module children
+/******/                                       var dependency;
+/******/                                       for (var outdatedModuleId in 
outdatedDependencies) {
+/******/                                               if 
(__webpack_require__.o(outdatedDependencies, outdatedModuleId)) {
+/******/                                                       module = 
__webpack_require__.c[outdatedModuleId];
+/******/                                                       if (module) {
+/******/                                                               
moduleOutdatedDependencies =
+/******/                                                                       
outdatedDependencies[outdatedModuleId];
+/******/                                                               for (j 
= 0; j < moduleOutdatedDependencies.length; j++) {
+/******/                                                                       
dependency = moduleOutdatedDependencies[j];
+/******/                                                                       
idx = module.children.indexOf(dependency);
+/******/                                                                       
if (idx >= 0) module.children.splice(idx, 1);
+/******/                                                               }
+/******/                                                       }
+/******/                                               }
+/******/                                       }
+/******/                               },
+/******/                               apply: function (reportError) {
+/******/                                       var acceptPromises = [];
+/******/                                       // insert new code
+/******/                                       for (var updateModuleId in 
appliedUpdate) {
+/******/                                               if 
(__webpack_require__.o(appliedUpdate, updateModuleId)) {
+/******/                                                       
__webpack_require__.m[updateModuleId] = appliedUpdate[updateModuleId];
+/******/                                               }
+/******/                                       }
+/******/
+/******/                                       // run new runtime modules
+/******/                                       for (var i = 0; i < 
currentUpdateRuntime.length; i++) {
+/******/                                               
currentUpdateRuntime[i](__webpack_require__);
+/******/                                       }
+/******/
+/******/                                       // call accept handlers
+/******/                                       for (var outdatedModuleId in 
outdatedDependencies) {
+/******/                                               if 
(__webpack_require__.o(outdatedDependencies, outdatedModuleId)) {
+/******/                                                       var module = 
__webpack_require__.c[outdatedModuleId];
+/******/                                                       if (module) {
+/******/                                                               
moduleOutdatedDependencies =
+/******/                                                                       
outdatedDependencies[outdatedModuleId];
+/******/                                                               var 
callbacks = [];
+/******/                                                               var 
errorHandlers = [];
+/******/                                                               var 
dependenciesForCallbacks = [];
+/******/                                                               for 
(var j = 0; j < moduleOutdatedDependencies.length; j++) {
+/******/                                                                       
var dependency = moduleOutdatedDependencies[j];
+/******/                                                                       
var acceptCallback =
+/******/                                                                       
        module.hot._acceptedDependencies[dependency];
+/******/                                                                       
var errorHandler =
+/******/                                                                       
        module.hot._acceptedErrorHandlers[dependency];
+/******/                                                                       
if (acceptCallback) {
+/******/                                                                       
        if (callbacks.indexOf(acceptCallback) !== -1) continue;
+/******/                                                                       
        callbacks.push(acceptCallback);
+/******/                                                                       
        errorHandlers.push(errorHandler);
+/******/                                                                       
        dependenciesForCallbacks.push(dependency);
+/******/                                                                       
}
+/******/                                                               }
+/******/                                                               for 
(var k = 0; k < callbacks.length; k++) {
+/******/                                                                       
var result;
+/******/                                                                       
try {
+/******/                                                                       
        result = callbacks[k].call(null, moduleOutdatedDependencies);
+/******/                                                                       
} catch (err) {
+/******/                                                                       
        if (typeof errorHandlers[k] === "function") {
+/******/                                                                       
                try {
+/******/                                                                       
                        errorHandlers[k](err, {
+/******/                                                                       
                                moduleId: outdatedModuleId,
+/******/                                                                       
                                dependencyId: dependenciesForCallbacks[k]
+/******/                                                                       
                        });
+/******/                                                                       
                } catch (err2) {
+/******/                                                                       
                        if (options.onErrored) {
+/******/                                                                       
                                options.onErrored({
+/******/                                                                       
                                        type: "accept-error-handler-errored",
+/******/                                                                       
                                        moduleId: outdatedModuleId,
+/******/                                                                       
                                        dependencyId: 
dependenciesForCallbacks[k],
+/******/                                                                       
                                        error: err2,
+/******/                                                                       
                                        originalError: err
+/******/                                                                       
                                });
+/******/                                                                       
                        }
+/******/                                                                       
                        if (!options.ignoreErrored) {
+/******/                                                                       
                                reportError(err2);
+/******/                                                                       
                                reportError(err);
+/******/                                                                       
                        }
+/******/                                                                       
                }
+/******/                                                                       
        } else {
+/******/                                                                       
                if (options.onErrored) {
+/******/                                                                       
                        options.onErrored({
+/******/                                                                       
                                type: "accept-errored",
+/******/                                                                       
                                moduleId: outdatedModuleId,
+/******/                                                                       
                                dependencyId: dependenciesForCallbacks[k],
+/******/                                                                       
                                error: err
+/******/                                                                       
                        });
+/******/                                                                       
                }
+/******/                                                                       
                if (!options.ignoreErrored) {
+/******/                                                                       
                        reportError(err);
+/******/                                                                       
                }
+/******/                                                                       
        }
+/******/                                                                       
}
+/******/                                                                       
if (result && typeof result.then === "function") {
+/******/                                                                       
        acceptPromises.push(result);
+/******/                                                                       
}
+/******/                                                               }
+/******/                                                       }
+/******/                                               }
+/******/                                       }
+/******/
+/******/                                       var onAccepted = function () {
+/******/                                               // Load self accepted 
modules
+/******/                                               for (var o = 0; o < 
outdatedSelfAcceptedModules.length; o++) {
+/******/                                                       var item = 
outdatedSelfAcceptedModules[o];
+/******/                                                       var moduleId = 
item.module;
+/******/                                                       try {
+/******/                                                               
item.require(moduleId);
+/******/                                                       } catch (err) {
+/******/                                                               if 
(typeof item.errorHandler === "function") {
+/******/                                                                       
try {
+/******/                                                                       
        item.errorHandler(err, {
+/******/                                                                       
                moduleId: moduleId,
+/******/                                                                       
                module: __webpack_require__.c[moduleId]
+/******/                                                                       
        });
+/******/                                                                       
} catch (err1) {
+/******/                                                                       
        if (options.onErrored) {
+/******/                                                                       
                options.onErrored({
+/******/                                                                       
                        type: "self-accept-error-handler-errored",
+/******/                                                                       
                        moduleId: moduleId,
+/******/                                                                       
                        error: err1,
+/******/                                                                       
                        originalError: err
+/******/                                                                       
                });
+/******/                                                                       
        }
+/******/                                                                       
        if (!options.ignoreErrored) {
+/******/                                                                       
                reportError(err1);
+/******/                                                                       
                reportError(err);
+/******/                                                                       
        }
+/******/                                                                       
}
+/******/                                                               } else {
+/******/                                                                       
if (options.onErrored) {
+/******/                                                                       
        options.onErrored({
+/******/                                                                       
                type: "self-accept-errored",
+/******/                                                                       
                moduleId: moduleId,
+/******/                                                                       
                error: err
+/******/                                                                       
        });
+/******/                                                                       
}
+/******/                                                                       
if (!options.ignoreErrored) {
+/******/                                                                       
        reportError(err);
+/******/                                                                       
}
+/******/                                                               }
+/******/                                                       }
+/******/                                               }
+/******/                                       };
+/******/
+/******/                                       return 
Promise.all(acceptPromises)
+/******/                                               .then(onAccepted)
+/******/                                               .then(function () {
+/******/                                                       return 
outdatedModules;
+/******/                                               });
+/******/                               }
+/******/                       };
+/******/               }
+/******/               __webpack_require__.hmrI.jsonp = function (moduleId, 
applyHandlers) {
+/******/                       if (!currentUpdate) {
+/******/                               currentUpdate = {};
+/******/                               currentUpdateRuntime = [];
+/******/                               currentUpdateRemovedChunks = [];
+/******/                               applyHandlers.push(applyHandler);
+/******/                       }
+/******/                       if (!__webpack_require__.o(currentUpdate, 
moduleId)) {
+/******/                               currentUpdate[moduleId] = 
__webpack_require__.m[moduleId];
+/******/                       }
+/******/               };
+/******/               __webpack_require__.hmrC.jsonp = function (
+/******/                       chunkIds,
+/******/                       removedChunks,
+/******/                       removedModules,
+/******/                       promises,
+/******/                       applyHandlers,
+/******/                       updatedModulesList
+/******/               ) {
+/******/                       applyHandlers.push(applyHandler);
+/******/                       currentUpdateChunks = {};
+/******/                       currentUpdateRemovedChunks = removedChunks;
+/******/                       currentUpdate = removedModules.reduce(function 
(obj, key) {
+/******/                               obj[key] = false;
+/******/                               return obj;
+/******/                       }, {});
+/******/                       currentUpdateRuntime = [];
+/******/                       chunkIds.forEach(function (chunkId) {
+/******/                               if (
+/******/                                       
__webpack_require__.o(installedChunks, chunkId) &&
+/******/                                       installedChunks[chunkId] !== 
undefined
+/******/                               ) {
+/******/                                       
promises.push(loadUpdateChunk(chunkId, updatedModulesList));
+/******/                                       currentUpdateChunks[chunkId] = 
true;
+/******/                               } else {
+/******/                                       currentUpdateChunks[chunkId] = 
false;
+/******/                               }
+/******/                       });
+/******/                       if (__webpack_require__.f) {
+/******/                               __webpack_require__.f.jsonpHmr = 
function (chunkId, promises) {
+/******/                                       if (
+/******/                                               currentUpdateChunks &&
+/******/                                               
__webpack_require__.o(currentUpdateChunks, chunkId) &&
+/******/                                               
!currentUpdateChunks[chunkId]
+/******/                                       ) {
+/******/                                               
promises.push(loadUpdateChunk(chunkId));
+/******/                                               
currentUpdateChunks[chunkId] = true;
+/******/                                       }
+/******/                               };
+/******/                       }
+/******/               };
+/******/
+/******/               __webpack_require__.hmrM = () => {
+/******/                       if (typeof fetch === "undefined") throw new 
Error("No browser support: need fetch API");
+/******/                       return fetch(__webpack_require__.p + 
__webpack_require__.hmrF()).then((response) => {
+/******/                               if(response.status === 404) return; // 
no update available
+/******/                               if(!response.ok) throw new 
Error("Failed to fetch update manifest " + response.statusText);
+/******/                               return response.json();
+/******/                       });
+/******/               };
+/******/
+/******/               __webpack_require__.O.j = (chunkId) => 
(installedChunks[chunkId] === 0);
+/******/
+/******/               // install a JSONP callback for chunk loading
+/******/               var webpackJsonpCallback = (parentChunkLoadingFunction, 
data) => {
+/******/                       var [chunkIds, moreModules, runtime] = data;
+/******/                       // add "moreModules" to the modules object,
+/******/                       // then flag all "chunkIds" as loaded and fire 
callback
+/******/                       var moduleId, chunkId, i = 0;
+/******/                       if(chunkIds.some((id) => (installedChunks[id] 
!== 0))) {
+/******/                               for(moduleId in moreModules) {
+/******/                                       
if(__webpack_require__.o(moreModules, moduleId)) {
+/******/                                               
__webpack_require__.m[moduleId] = moreModules[moduleId];
+/******/                                       }
+/******/                               }
+/******/                               if(runtime) var result = 
runtime(__webpack_require__);
+/******/                       }
+/******/                       if(parentChunkLoadingFunction) 
parentChunkLoadingFunction(data);
+/******/                       for(;i < chunkIds.length; i++) {
+/******/                               chunkId = chunkIds[i];
+/******/                               
if(__webpack_require__.o(installedChunks, chunkId) && installedChunks[chunkId]) 
{
+/******/                                       installedChunks[chunkId][0]();
+/******/                               }
+/******/                               installedChunks[chunkId] = 0;
+/******/                       }
+/******/                       return __webpack_require__.O(result);
+/******/               }
+/******/
+/******/               var chunkLoadingGlobal = 
globalThis["webpackChunksuperset"] = globalThis["webpackChunksuperset"] || [];
+/******/               
chunkLoadingGlobal.forEach(webpackJsonpCallback.bind(null, 0));
+/******/               chunkLoadingGlobal.push = 
webpackJsonpCallback.bind(null, 
chunkLoadingGlobal.push.bind(chunkLoadingGlobal));
+/******/       })();
+/******/
+/************************************************************************/
+/******/
+/******/       // module cache are used so entry inlining is disabled
+/******/       // startup
+/******/       // Load entry module and return exports
+/******/       __webpack_require__.O(undefined, 
["vendors","vendors-node_modules_rc-component_color-picker_es_index_js-node_modules_rc-component_mutate-o-484854","webpack_sharing_consume_default_react-dom_react-dom-webpack_sharing_consume_default_react_rea-153fef"],
 () => 
(__webpack_require__("./node_modules/@pmmmwh/react-refresh-webpack-plugin/client/ReactRefreshEntry.js")))
+/******/       __webpack_require__.O(undefined, 
["vendors","vendors-node_modules_rc-component_color-picker_es_index_js-node_modules_rc-component_mutate-o-484854","webpack_sharing_consume_default_react-dom_react-dom-webpack_sharing_consume_default_react_rea-153fef"],
 () => 
(__webpack_require__("./node_modules/webpack-dev-server/client/index.js?protocol=ws%3A&hostname=0.0.0.0&port=0&pathname=%2Fws&logging=info&overlay=%7B%22errors%22%3Atrue%2C%22warnings%22%3Afalse%2C%22runtimeErrors%22%3A%22error%2520%253D%253E%2520%21%252FResizeObserver%252F.test%28error.message%29%22%7D&reconnect=10&hot=only&live-reload=false")))
+/******/       __webpack_require__.O(undefined, 
["vendors","vendors-node_modules_rc-component_color-picker_es_index_js-node_modules_rc-component_mutate-o-484854","webpack_sharing_consume_default_react-dom_react-dom-webpack_sharing_consume_default_react_rea-153fef"],
 () => (__webpack_require__("./node_modules/webpack/hot/only-dev-server.js")))
+/******/       __webpack_require__.O(undefined, 
["vendors","vendors-node_modules_rc-component_color-picker_es_index_js-node_modules_rc-component_mutate-o-484854","webpack_sharing_consume_default_react-dom_react-dom-webpack_sharing_consume_default_react_rea-153fef"],
 () => 
(__webpack_require__("./node_modules/@pmmmwh/react-refresh-webpack-plugin/client/ErrorOverlayEntry.js")))
+/******/       var __webpack_exports__ = __webpack_require__.O(undefined, 
["vendors","vendors-node_modules_rc-component_color-picker_es_index_js-node_modules_rc-component_mutate-o-484854","webpack_sharing_consume_default_react-dom_react-dom-webpack_sharing_consume_default_react_rea-153fef"],
 () => (__webpack_require__("./src/service-worker.ts")))
+/******/       __webpack_exports__ = 
__webpack_require__.O(__webpack_exports__);

Review Comment:
   **Suggestion:** The service worker bundle is currently executing webpack 
dev-server and React Refresh client entries inside the worker context, which 
depend on browser globals like `window`/`document` and will throw at runtime, 
preventing the service worker from installing; instead, this file should only 
execute the actual service worker module and avoid loading dev-only clients. 
[logic error]
   
   <details>
   <summary><b>Severity Level:</b> Critical 🚨</summary>
   
   ```mdx
   - ❌ PWA service worker fails to install for SPA shell.
   - ❌ File-handling scope control header unused by any worker.
   - ⚠️ Console logs repeated "Service Worker registration failed" errors.
   - ⚠️ Dev-only HMR clients executed in unsupported worker context.
   ```
   </details>
   
   ```suggestion
   /******/     __webpack_require__("./src/service-worker.ts");
   ```
   <details>
   <summary><b>Steps of Reproduction ✅ </b></summary>
   
   ```mdx
   1. Start the Superset web app normally so that the SPA shell template
   `superset/templates/superset/spa.html` is rendered for a page like the main 
UI (see lines
   70–85 where the service worker registration script is included).
   
   2. Open the app in a modern browser that supports service workers (e.g., 
Chrome) over a
   context where service workers are allowed, then load any route that uses 
`spa.html`; on
   load, the inline script at `spa.html:75–82` executes 
`navigator.serviceWorker.register('{{
   assets_prefix }}/static/service-worker.js')`.
   
   3. The browser requests `/static/service-worker.js`, which is served from
   `superset/static/service-worker.js`; this file's tail (lines 1463–1468) uses
   `__webpack_require__.O(...)` to execute four dev/HMR entries: React Refresh 
client,
   webpack-dev-server client, webpack `hot/only-dev-server.js`, and the 
ErrorOverlay client,
   before loading `./src/service-worker.ts`.
   
   4. Those dev-server/HMR clients are written for a window/document-based 
browser context
   and assume DOM globals; when executed inside the service worker global scope 
(a dedicated
   worker without `window`/`document`), they throw at evaluation time, causing 
the
   `navigator.serviceWorker.register()` promise in `spa.html` to reject and 
logging "Service
   Worker registration failed:" in the console, leaving the service worker 
uninstalled and
   preventing the PWA service worker (`src/service-worker.ts`) from ever 
running.
   ```
   </details>
   <details>
   <summary><b>Prompt for AI Agent 🤖 </b></summary>
   
   ```mdx
   This is a comment left during a code review.
   
   **Path:** superset/static/service-worker.js
   **Line:** 1463:1468
   **Comment:**
        *Logic Error: The service worker bundle is currently executing webpack 
dev-server and React Refresh client entries inside the worker context, which 
depend on browser globals like `window`/`document` and will throw at runtime, 
preventing the service worker from installing; instead, this file should only 
execute the actual service worker module and avoid loading dev-only clients.
   
   Validate the correctness of the flagged issue. If correct, How can I resolve 
this? If you propose a fix, implement it and please make it concise.
   ```
   </details>
   <a 
href='https://app.codeant.ai/feedback?pr_url=https%3A%2F%2Fgithub.com%2Fapache%2Fsuperset%2Fpull%2F37141&comment_hash=be291eb815fe6942aba4738711395512a13ce1111c0404c7d3099e3a7fc05288&reaction=like'>👍</a>
 | <a 
href='https://app.codeant.ai/feedback?pr_url=https%3A%2F%2Fgithub.com%2Fapache%2Fsuperset%2Fpull%2F37141&comment_hash=be291eb815fe6942aba4738711395512a13ce1111c0404c7d3099e3a7fc05288&reaction=dislike'>👎</a>



-- 
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

To unsubscribe, e-mail: [email protected]

For queries about this service, please contact Infrastructure at:
[email protected]


---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]


Reply via email to